@mapsight/ui 7.1.0 → 7.2.1

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 (497) hide show
  1. package/README.md +95 -2
  2. package/dist/components/app.d.ts +1 -1
  3. package/dist/components/app.d.ts.map +1 -1
  4. package/dist/components/feature-details-content/feature-details-content.d.ts +1 -1
  5. package/dist/components/feature-details-content/feature-details-content.d.ts.map +1 -1
  6. package/dist/components/feature-details-content/index.d.ts +1 -1
  7. package/dist/components/feature-details-content/share-feature-link-modal.d.ts +1 -1
  8. package/dist/components/feature-details-content/share-feature-link-modal.d.ts.map +1 -1
  9. package/dist/components/feature-list/context.d.ts +12 -4
  10. package/dist/components/feature-list/context.d.ts.map +1 -1
  11. package/dist/components/feature-list/context.js.map +1 -1
  12. package/dist/components/feature-list/empty-message.d.ts +1 -1
  13. package/dist/components/feature-list/empty-message.d.ts.map +1 -1
  14. package/dist/components/feature-list/filter.d.ts +1 -1
  15. package/dist/components/feature-list/filter.d.ts.map +1 -1
  16. package/dist/components/feature-list/footer.d.ts +1 -1
  17. package/dist/components/feature-list/footer.d.ts.map +1 -1
  18. package/dist/components/feature-list/hooks/useAutoloadFeatureSource.d.ts.map +1 -1
  19. package/dist/components/feature-list/hooks/useAutoloadFeatureSource.js +12 -3
  20. package/dist/components/feature-list/hooks/useAutoloadFeatureSource.js.map +1 -1
  21. package/dist/components/feature-list/hooks/useFeatureListItemGroups.js +1 -1
  22. package/dist/components/feature-list/hooks/useFeatureListItemGroups.js.map +1 -1
  23. package/dist/components/feature-list/index.d.ts +3 -2
  24. package/dist/components/feature-list/index.d.ts.map +1 -1
  25. package/dist/components/feature-list/index.js +33 -42
  26. package/dist/components/feature-list/index.js.map +1 -1
  27. package/dist/components/feature-list/layer-switcher-control.d.ts +4 -0
  28. package/dist/components/feature-list/layer-switcher-control.d.ts.map +1 -0
  29. package/dist/components/feature-list/layer-switcher-control.js +11 -0
  30. package/dist/components/feature-list/layer-switcher-control.js.map +1 -0
  31. package/dist/components/feature-list/pagination.d.ts +1 -1
  32. package/dist/components/feature-list/pagination.d.ts.map +1 -1
  33. package/dist/components/feature-list/query-input.d.ts +1 -1
  34. package/dist/components/feature-list/query-input.d.ts.map +1 -1
  35. package/dist/components/feature-list/tag-switcher-control.d.ts +4 -0
  36. package/dist/components/feature-list/tag-switcher-control.d.ts.map +1 -0
  37. package/dist/components/feature-list/tag-switcher-control.js +10 -0
  38. package/dist/components/feature-list/tag-switcher-control.js.map +1 -0
  39. package/dist/components/feature-list-cycling/button.d.ts +1 -1
  40. package/dist/components/feature-list-cycling/button.d.ts.map +1 -1
  41. package/dist/components/feature-list-cycling/dot.d.ts +1 -1
  42. package/dist/components/feature-list-cycling/dot.d.ts.map +1 -1
  43. package/dist/components/feature-list-cycling/feature-list-cycling.d.ts +1 -1
  44. package/dist/components/feature-list-cycling/feature-list-cycling.d.ts.map +1 -1
  45. package/dist/components/feature-list-cycling/index.d.ts +1 -1
  46. package/dist/components/feature-list-item/icon.d.ts +8 -6
  47. package/dist/components/feature-list-item/icon.d.ts.map +1 -1
  48. package/dist/components/feature-list-item/icon.js +5 -13
  49. package/dist/components/feature-list-item/icon.js.map +1 -1
  50. package/dist/components/feature-list-item/index.d.ts +1 -1
  51. package/dist/components/feature-list-item/index.d.ts.map +1 -1
  52. package/dist/components/feature-list-sorting/feature-list-sorting.d.ts +1 -1
  53. package/dist/components/feature-list-sorting/feature-list-sorting.d.ts.map +1 -1
  54. package/dist/components/feature-list-sorting/feature-list-sorting.js +3 -12
  55. package/dist/components/feature-list-sorting/feature-list-sorting.js.map +1 -1
  56. package/dist/components/feature-list-sorting/index.d.ts +1 -1
  57. package/dist/components/feature-list-sorting/status-indicator.d.ts +1 -1
  58. package/dist/components/feature-list-sorting/status-indicator.d.ts.map +1 -1
  59. package/dist/components/feature-select-button.d.ts +1 -1
  60. package/dist/components/feature-select-button.d.ts.map +1 -1
  61. package/dist/components/feature-selection-info/close-button.d.ts +1 -1
  62. package/dist/components/feature-selection-info/close-button.d.ts.map +1 -1
  63. package/dist/components/feature-selection-info/container.d.ts +1 -1
  64. package/dist/components/feature-selection-info/container.d.ts.map +1 -1
  65. package/dist/components/feature-selection-info/header.d.ts +1 -1
  66. package/dist/components/feature-selection-info/header.d.ts.map +1 -1
  67. package/dist/components/feature-selection-info/index.d.ts +1 -1
  68. package/dist/components/feature-selection-info/index.d.ts.map +1 -1
  69. package/dist/components/feature-selection-info/with-sticky-header.d.ts +1 -1
  70. package/dist/components/feature-selection-info/with-sticky-header.d.ts.map +1 -1
  71. package/dist/components/feature-selection-info/without-sticky-header.d.ts +1 -1
  72. package/dist/components/feature-selection-info/without-sticky-header.d.ts.map +1 -1
  73. package/dist/components/filter-toggle-control/FilterToggleControl.d.ts +12 -0
  74. package/dist/components/filter-toggle-control/FilterToggleControl.d.ts.map +1 -0
  75. package/dist/components/filter-toggle-control/FilterToggleControl.js +20 -0
  76. package/dist/components/filter-toggle-control/FilterToggleControl.js.map +1 -0
  77. package/dist/components/helping/app-channel.d.ts +1 -1
  78. package/dist/components/helping/app-channel.d.ts.map +1 -1
  79. package/dist/components/helping/app-context.d.ts +1 -1
  80. package/dist/components/helping/app-context.d.ts.map +1 -1
  81. package/dist/components/instance.d.ts +1 -1
  82. package/dist/components/instance.d.ts.map +1 -1
  83. package/dist/components/layer-switcher/GroupedLayerSwitcher.d.ts +1 -1
  84. package/dist/components/layer-switcher/LayerSwitcher.d.ts +1 -1
  85. package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts +4 -2
  86. package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts.map +1 -1
  87. package/dist/components/layer-switcher/LayerSwitcherContainer.js +10 -4
  88. package/dist/components/layer-switcher/LayerSwitcherContainer.js.map +1 -1
  89. package/dist/components/layer-switcher/LayerSwitcherEntry.d.ts +1 -1
  90. package/dist/components/layer-switcher/SplitBaseLayerSwitcher.d.ts +26 -0
  91. package/dist/components/layer-switcher/SplitBaseLayerSwitcher.d.ts.map +1 -0
  92. package/dist/components/layer-switcher/SplitBaseLayerSwitcher.js +48 -0
  93. package/dist/components/layer-switcher/SplitBaseLayerSwitcher.js.map +1 -0
  94. package/dist/components/layer-switcher/index.d.ts +1 -1
  95. package/dist/components/layer-switcher/index.d.ts.map +1 -1
  96. package/dist/components/layer-switcher/index.js +1 -0
  97. package/dist/components/layer-switcher/index.js.map +1 -1
  98. package/dist/components/layout/additional-container/content.d.ts +1 -1
  99. package/dist/components/layout/additional-container/content.d.ts.map +1 -1
  100. package/dist/components/layout/additional-container/index.d.ts +1 -1
  101. package/dist/components/layout/additional-container/index.d.ts.map +1 -1
  102. package/dist/components/layout/additional-container/marginal.d.ts +1 -1
  103. package/dist/components/layout/additional-container/marginal.d.ts.map +1 -1
  104. package/dist/components/layout/main-container.d.ts +1 -1
  105. package/dist/components/layout/main-container.d.ts.map +1 -1
  106. package/dist/components/layout/map-row.d.ts +1 -1
  107. package/dist/components/layout/map-row.d.ts.map +1 -1
  108. package/dist/components/layout/title-bar.d.ts +1 -1
  109. package/dist/components/layout/title-bar.d.ts.map +1 -1
  110. package/dist/components/layout/wrapper.d.ts +1 -1
  111. package/dist/components/layout/wrapper.d.ts.map +1 -1
  112. package/dist/components/link-share.d.ts +1 -1
  113. package/dist/components/link-share.d.ts.map +1 -1
  114. package/dist/components/main-panel/container.d.ts +1 -1
  115. package/dist/components/main-panel/container.d.ts.map +1 -1
  116. package/dist/components/main-panel/context.d.ts +1 -1
  117. package/dist/components/main-panel/context.d.ts.map +1 -1
  118. package/dist/components/main-panel/index.d.ts +1 -1
  119. package/dist/components/main-panel/index.d.ts.map +1 -1
  120. package/dist/components/main-panel/list-toggle-button.d.ts +1 -1
  121. package/dist/components/main-panel/list-toggle-button.d.ts.map +1 -1
  122. package/dist/components/map-overlay/attribution-entries.d.ts +1 -1
  123. package/dist/components/map-overlay/attribution-entries.d.ts.map +1 -1
  124. package/dist/components/map-overlay/attribution.d.ts +1 -1
  125. package/dist/components/map-overlay/attribution.d.ts.map +1 -1
  126. package/dist/components/map-overlay/combined-buttons.d.ts +1 -1
  127. package/dist/components/map-overlay/combined-buttons.d.ts.map +1 -1
  128. package/dist/components/map-overlay/index.d.ts +1 -1
  129. package/dist/components/map-overlay/index.d.ts.map +1 -1
  130. package/dist/components/map-overlay/info-overlay-left.d.ts +1 -1
  131. package/dist/components/map-overlay/info-overlay-left.d.ts.map +1 -1
  132. package/dist/components/map-overlay/info-overlay-modal.d.ts +1 -1
  133. package/dist/components/map-overlay/info-overlay-modal.d.ts.map +1 -1
  134. package/dist/components/map-overlay/info-overlay-right.d.ts +1 -1
  135. package/dist/components/map-overlay/info-overlay-right.d.ts.map +1 -1
  136. package/dist/components/map-overlay/layer-switcher-overlay.d.ts +1 -1
  137. package/dist/components/map-overlay/layer-switcher-overlay.d.ts.map +1 -1
  138. package/dist/components/map-overlay/legend.d.ts +1 -1
  139. package/dist/components/map-overlay/legend.d.ts.map +1 -1
  140. package/dist/components/map-overlay/logo.d.ts +1 -1
  141. package/dist/components/map-overlay/logo.d.ts.map +1 -1
  142. package/dist/components/map-overlay/measure-distance-button.d.ts +1 -1
  143. package/dist/components/map-overlay/measure-distance-button.d.ts.map +1 -1
  144. package/dist/components/map-overlay/measure-distance-overlay.d.ts +1 -1
  145. package/dist/components/map-overlay/measure-distance-overlay.d.ts.map +1 -1
  146. package/dist/components/map-overlay/search-overlay.d.ts +1 -1
  147. package/dist/components/map-overlay/search-overlay.d.ts.map +1 -1
  148. package/dist/components/map-overlay/share-position-link-button.d.ts +1 -1
  149. package/dist/components/map-overlay/share-position-link-button.d.ts.map +1 -1
  150. package/dist/components/map-overlay/tool-overlay.d.ts +1 -1
  151. package/dist/components/map-overlay/tool-overlay.d.ts.map +1 -1
  152. package/dist/components/map-overlay/zoom-buttons.d.ts +1 -1
  153. package/dist/components/map-overlay/zoom-buttons.d.ts.map +1 -1
  154. package/dist/components/map-synced-interlay/index.d.ts +1 -1
  155. package/dist/components/map-synced-interlay/map-synced-interlay.d.ts +1 -1
  156. package/dist/components/map-synced-interlay/map-synced-interlay.d.ts.map +1 -1
  157. package/dist/components/map-synced-interlay/tooltip.d.ts +1 -1
  158. package/dist/components/map-synced-interlay/tooltip.d.ts.map +1 -1
  159. package/dist/components/map-wrapper.d.ts +3 -3
  160. package/dist/components/map-wrapper.d.ts.map +1 -1
  161. package/dist/components/map-wrapper.js +4 -7
  162. package/dist/components/map-wrapper.js.map +1 -1
  163. package/dist/components/map.d.ts +1 -1
  164. package/dist/components/map.d.ts.map +1 -1
  165. package/dist/components/mapsight-icon/mapsight-icon.d.ts +10 -0
  166. package/dist/components/mapsight-icon/mapsight-icon.d.ts.map +1 -0
  167. package/dist/components/mapsight-icon/mapsight-icon.js +33 -0
  168. package/dist/components/mapsight-icon/mapsight-icon.js.map +1 -0
  169. package/dist/components/modal.d.ts +1 -1
  170. package/dist/components/modal.d.ts.map +1 -1
  171. package/dist/components/query-input-with-label.d.ts +1 -1
  172. package/dist/components/query-input-with-label.d.ts.map +1 -1
  173. package/dist/components/search/index.d.ts +1 -1
  174. package/dist/components/search/index.d.ts.map +1 -1
  175. package/dist/components/search/result-entry.d.ts +1 -1
  176. package/dist/components/search/result-entry.d.ts.map +1 -1
  177. package/dist/components/search/result.d.ts +1 -1
  178. package/dist/components/search/result.d.ts.map +1 -1
  179. package/dist/components/switcher/GroupedSwitcher.d.ts +1 -1
  180. package/dist/components/switcher/GroupedSwitcher.d.ts.map +1 -1
  181. package/dist/components/switcher/Switcher.d.ts +1 -1
  182. package/dist/components/switcher/Switcher.d.ts.map +1 -1
  183. package/dist/components/switcher/SwitcherButton.d.ts +1 -1
  184. package/dist/components/switcher/SwitcherButton.d.ts.map +1 -1
  185. package/dist/components/switcher/SwitcherEntry.d.ts +1 -1
  186. package/dist/components/switcher/SwitcherEntry.d.ts.map +1 -1
  187. package/dist/components/switcher/SwitcherHeader.d.ts +1 -1
  188. package/dist/components/switcher/SwitcherHeader.d.ts.map +1 -1
  189. package/dist/components/switcher/SwitcherStatusIcon.d.ts +1 -1
  190. package/dist/components/switcher/SwitcherStatusIcon.d.ts.map +1 -1
  191. package/dist/components/tag-switcher/TagSwitcher.d.ts +1 -1
  192. package/dist/components/tag-switcher/TagSwitcher.d.ts.map +1 -1
  193. package/dist/components/tag-switcher/createTagSwitcherEntry.d.ts +1 -1
  194. package/dist/components/tag-switcher/createTagSwitcherHeader.d.ts +1 -1
  195. package/dist/components/tag-switcher/index.d.ts +1 -1
  196. package/dist/components/time-filter.d.ts +1 -1
  197. package/dist/components/time-filter.d.ts.map +1 -1
  198. package/dist/components/view-toggle-button/desktop-button.d.ts +1 -1
  199. package/dist/components/view-toggle-button/desktop-button.d.ts.map +1 -1
  200. package/dist/components/view-toggle-button/index.d.ts +1 -1
  201. package/dist/components/view-toggle-button/mobile-button.d.ts +1 -1
  202. package/dist/components/view-toggle-button/mobile-button.d.ts.map +1 -1
  203. package/dist/components/view-toggle-button/view-toggle-button.d.ts +1 -1
  204. package/dist/components/view-toggle-button/view-toggle-button.d.ts.map +1 -1
  205. package/dist/components/view-toggle-button/viewport-button.d.ts +1 -1
  206. package/dist/components/view-toggle-button/viewport-button.d.ts.map +1 -1
  207. package/dist/config/feature/sources.d.ts +8 -5
  208. package/dist/config/feature/sources.d.ts.map +1 -1
  209. package/dist/config/feature/sources.js +7 -9
  210. package/dist/config/feature/sources.js.map +1 -1
  211. package/dist/config/index.d.ts +1 -1
  212. package/dist/config/map/featureInteractions.js.map +1 -1
  213. package/dist/config/map/layers.d.ts +16 -13
  214. package/dist/config/map/layers.d.ts.map +1 -1
  215. package/dist/config/map/layers.js.map +1 -1
  216. package/dist/config/schema/index.d.ts +197 -0
  217. package/dist/config/schema/index.d.ts.map +1 -0
  218. package/dist/config/schema/index.js +26 -0
  219. package/dist/config/schema/index.js.map +1 -0
  220. package/dist/config/schema/validate.d.ts +8 -0
  221. package/dist/config/schema/validate.d.ts.map +1 -0
  222. package/dist/config/schema/validate.js +7 -0
  223. package/dist/config/schema/validate.js.map +1 -0
  224. package/dist/controllers/defaults.d.ts.map +1 -1
  225. package/dist/controllers/defaults.js +5 -0
  226. package/dist/controllers/defaults.js.map +1 -1
  227. package/dist/filters/tag-filter.d.ts +7 -0
  228. package/dist/filters/tag-filter.d.ts.map +1 -1
  229. package/dist/filters/tag-filter.js +10 -0
  230. package/dist/filters/tag-filter.js.map +1 -1
  231. package/dist/filters/time-filter.d.ts +9 -0
  232. package/dist/filters/time-filter.d.ts.map +1 -1
  233. package/dist/filters/time-filter.js +10 -0
  234. package/dist/filters/time-filter.js.map +1 -1
  235. package/dist/helpers/i18n/de.d.ts.map +1 -1
  236. package/dist/helpers/i18n/de.js +3 -0
  237. package/dist/helpers/i18n/de.js.map +1 -1
  238. package/dist/helpers/i18n/en.d.ts.map +1 -1
  239. package/dist/helpers/i18n/en.js +3 -0
  240. package/dist/helpers/i18n/en.js.map +1 -1
  241. package/dist/helpers/sort-features-by-distance.d.ts +2 -7
  242. package/dist/helpers/sort-features-by-distance.d.ts.map +1 -1
  243. package/dist/helpers/sort-features-by-distance.js +27 -39
  244. package/dist/helpers/sort-features-by-distance.js.map +1 -1
  245. package/dist/hooks/useMapsightIcon.d.ts +8 -0
  246. package/dist/hooks/useMapsightIcon.d.ts.map +1 -0
  247. package/dist/hooks/useMapsightIcon.js +50 -0
  248. package/dist/hooks/useMapsightIcon.js.map +1 -0
  249. package/dist/index.d.ts +2 -2
  250. package/dist/index.d.ts.map +1 -1
  251. package/dist/index.js +15 -2
  252. package/dist/index.js.map +1 -1
  253. package/dist/plugins/browser-defaults.d.ts +2 -0
  254. package/dist/plugins/browser-defaults.d.ts.map +1 -1
  255. package/dist/plugins/browser-defaults.js +5 -0
  256. package/dist/plugins/browser-defaults.js.map +1 -1
  257. package/dist/plugins/common/combined-visible-layers.d.ts +15 -0
  258. package/dist/plugins/common/combined-visible-layers.d.ts.map +1 -0
  259. package/dist/plugins/common/combined-visible-layers.js +63 -0
  260. package/dist/plugins/common/combined-visible-layers.js.map +1 -0
  261. package/dist/plugins/common/runtime-icon-style.d.ts +12 -0
  262. package/dist/plugins/common/runtime-icon-style.d.ts.map +1 -0
  263. package/dist/plugins/common/runtime-icon-style.js +58 -0
  264. package/dist/plugins/common/runtime-icon-style.js.map +1 -0
  265. package/dist/react-modal-app-element.d.ts +6 -0
  266. package/dist/react-modal-app-element.d.ts.map +1 -0
  267. package/dist/react-modal-app-element.js +9 -0
  268. package/dist/react-modal-app-element.js.map +1 -0
  269. package/dist/store/actions.d.ts.map +1 -1
  270. package/dist/store/actions.js +6 -1
  271. package/dist/store/actions.js.map +1 -1
  272. package/dist/store/reducers.d.ts +75 -6
  273. package/dist/store/reducers.d.ts.map +1 -1
  274. package/dist/store/selectors.d.ts +75 -17
  275. package/dist/store/selectors.d.ts.map +1 -1
  276. package/dist/store/selectors.js +9 -1
  277. package/dist/store/selectors.js.map +1 -1
  278. package/dist/types.d.ts +21 -5
  279. package/dist/types.d.ts.map +1 -1
  280. package/package.json +24 -8
  281. package/src/scss/blocks/_features-sorting.scss +0 -13
  282. package/src/scss/blocks/_filter-button.scss +39 -8
  283. package/src/scss/blocks/_filter-toggle-control.scss +15 -0
  284. package/src/scss/default.scss +1 -0
  285. package/src/scss/themes/2022-03.scss +66 -0
  286. package/src/img/mapsight-ui/check-empty.svg +0 -1
  287. package/src/img/mapsight-ui/check.svg +0 -2
  288. package/src/img/mapsight-ui/close-list.svg +0 -1
  289. package/src/img/mapsight-ui/close.svg +0 -1
  290. package/src/img/mapsight-ui/error.svg +0 -1
  291. package/src/img/mapsight-ui/fullscreen-close.svg +0 -1
  292. package/src/img/mapsight-ui/fullscreen.svg +0 -1
  293. package/src/img/mapsight-ui/geo-active.svg +0 -1
  294. package/src/img/mapsight-ui/geo-error.svg +0 -1
  295. package/src/img/mapsight-ui/geo-inactive.svg +0 -1
  296. package/src/img/mapsight-ui/info.svg +0 -1
  297. package/src/img/mapsight-ui/layers.svg +0 -1
  298. package/src/img/mapsight-ui/loading.svg +0 -1
  299. package/src/img/mapsight-ui/map.svg +0 -1
  300. package/src/img/mapsight-ui/measure-distance.svg +0 -7
  301. package/src/img/mapsight-ui/open-list.svg +0 -1
  302. package/src/img/mapsight-ui/place-marker.svg +0 -4
  303. package/src/img/mapsight-ui/print.svg +0 -4
  304. package/src/img/mapsight-ui/reset-active.svg +0 -1
  305. package/src/img/mapsight-ui/reset.svg +0 -1
  306. package/src/img/mapsight-ui/search.svg +0 -1
  307. package/src/img/mapsight-ui/sharing.svg +0 -7
  308. package/src/img/mapsight-ui/sort-active.svg +0 -1
  309. package/src/img/mapsight-ui/sort.svg +0 -1
  310. package/src/img/mapsight-ui/watermark.svg +0 -1
  311. package/src/img/mapsight-ui/zoom-in.svg +0 -3
  312. package/src/img/mapsight-ui/zoom-out.svg +0 -3
  313. package/src/js/components/app.tsx +0 -232
  314. package/src/js/components/close-overlay-button.tsx +0 -27
  315. package/src/js/components/feature-details-content/feature-details-content-inner.tsx +0 -116
  316. package/src/js/components/feature-details-content/feature-details-content.jsx +0 -185
  317. package/src/js/components/feature-details-content/index.js +0 -16
  318. package/src/js/components/feature-details-content/share-feature-link-modal.jsx +0 -56
  319. package/src/js/components/feature-list/content.jsx +0 -42
  320. package/src/js/components/feature-list/context.tsx +0 -47
  321. package/src/js/components/feature-list/empty-message.jsx +0 -15
  322. package/src/js/components/feature-list/filter.jsx +0 -35
  323. package/src/js/components/feature-list/footer.jsx +0 -5
  324. package/src/js/components/feature-list/grouped-content.jsx +0 -74
  325. package/src/js/components/feature-list/header.jsx +0 -7
  326. package/src/js/components/feature-list/hooks/useAutoloadFeatureSource.ts +0 -25
  327. package/src/js/components/feature-list/hooks/useFeatureListFeatureSource.ts +0 -22
  328. package/src/js/components/feature-list/hooks/useFeatureListItemGroups.ts +0 -127
  329. package/src/js/components/feature-list/hooks/useFeatureListState.ts +0 -98
  330. package/src/js/components/feature-list/hooks/useKeyboardNavigation.js +0 -112
  331. package/src/js/components/feature-list/hooks/useMakeHeaderSticky.js +0 -40
  332. package/src/js/components/feature-list/hooks/usePaginatedFilteredFeatures.ts +0 -129
  333. package/src/js/components/feature-list/hooks/useRestoreDocumentScroll.js +0 -12
  334. package/src/js/components/feature-list/hooks/useSelectFeature.js +0 -88
  335. package/src/js/components/feature-list/index.jsx +0 -278
  336. package/src/js/components/feature-list/pagination.tsx +0 -57
  337. package/src/js/components/feature-list/query-input.jsx +0 -14
  338. package/src/js/components/feature-list-cycling/button.jsx +0 -13
  339. package/src/js/components/feature-list-cycling/dot.jsx +0 -43
  340. package/src/js/components/feature-list-cycling/feature-list-cycling.jsx +0 -153
  341. package/src/js/components/feature-list-cycling/index.js +0 -82
  342. package/src/js/components/feature-list-item/head.jsx +0 -131
  343. package/src/js/components/feature-list-item/hooks/useFeatureListItemScrollAndFocus.js +0 -51
  344. package/src/js/components/feature-list-item/hooks/useFeatureListItemState.ts +0 -75
  345. package/src/js/components/feature-list-item/icon.jsx +0 -35
  346. package/src/js/components/feature-list-item/index.jsx +0 -168
  347. package/src/js/components/feature-list-sorting/feature-list-sorting.tsx +0 -144
  348. package/src/js/components/feature-list-sorting/index.js +0 -22
  349. package/src/js/components/feature-list-sorting/status-indicator.jsx +0 -10
  350. package/src/js/components/feature-select-button.jsx +0 -70
  351. package/src/js/components/feature-selection-info/close-button.jsx +0 -64
  352. package/src/js/components/feature-selection-info/container.jsx +0 -9
  353. package/src/js/components/feature-selection-info/header.tsx +0 -27
  354. package/src/js/components/feature-selection-info/index.tsx +0 -81
  355. package/src/js/components/feature-selection-info/with-sticky-header.tsx +0 -76
  356. package/src/js/components/feature-selection-info/without-sticky-header.jsx +0 -19
  357. package/src/js/components/feature-selection-info/wrapper.jsx +0 -43
  358. package/src/js/components/helping/app-channel.tsx +0 -99
  359. package/src/js/components/helping/app-context.tsx +0 -32
  360. package/src/js/components/helping/visibility-wrapper.jsx +0 -23
  361. package/src/js/components/instance.tsx +0 -48
  362. package/src/js/components/layer-switcher/GroupedLayerSwitcher.js +0 -47
  363. package/src/js/components/layer-switcher/LayerSwitcher.ts +0 -34
  364. package/src/js/components/layer-switcher/LayerSwitcherContainer.tsx +0 -88
  365. package/src/js/components/layer-switcher/LayerSwitcherEntry.ts +0 -152
  366. package/src/js/components/layer-switcher/index.ts +0 -42
  367. package/src/js/components/layout/additional-container/content.jsx +0 -10
  368. package/src/js/components/layout/additional-container/index.jsx +0 -5
  369. package/src/js/components/layout/additional-container/marginal.jsx +0 -10
  370. package/src/js/components/layout/main-container.jsx +0 -5
  371. package/src/js/components/layout/map-row.jsx +0 -5
  372. package/src/js/components/layout/title-bar.tsx +0 -25
  373. package/src/js/components/layout/wrapper.jsx +0 -28
  374. package/src/js/components/link-share.jsx +0 -78
  375. package/src/js/components/main-panel/container.tsx +0 -23
  376. package/src/js/components/main-panel/context.tsx +0 -71
  377. package/src/js/components/main-panel/index.tsx +0 -46
  378. package/src/js/components/main-panel/list-toggle-button.jsx +0 -43
  379. package/src/js/components/map-overlay/area.jsx +0 -17
  380. package/src/js/components/map-overlay/attribution-entries.tsx +0 -33
  381. package/src/js/components/map-overlay/attribution.tsx +0 -25
  382. package/src/js/components/map-overlay/combined-buttons.jsx +0 -5
  383. package/src/js/components/map-overlay/index.jsx +0 -5
  384. package/src/js/components/map-overlay/info-overlay-left.jsx +0 -51
  385. package/src/js/components/map-overlay/info-overlay-modal.tsx +0 -49
  386. package/src/js/components/map-overlay/info-overlay-right.jsx +0 -46
  387. package/src/js/components/map-overlay/layer-switcher-overlay.tsx +0 -100
  388. package/src/js/components/map-overlay/legend.tsx +0 -22
  389. package/src/js/components/map-overlay/logo.jsx +0 -11
  390. package/src/js/components/map-overlay/measure-distance-button.tsx +0 -116
  391. package/src/js/components/map-overlay/measure-distance-overlay.jsx +0 -56
  392. package/src/js/components/map-overlay/mini-legend.jsx +0 -103
  393. package/src/js/components/map-overlay/region-selector.jsx +0 -63
  394. package/src/js/components/map-overlay/search-overlay.jsx +0 -79
  395. package/src/js/components/map-overlay/share-position-link-button.tsx +0 -144
  396. package/src/js/components/map-overlay/tool-overlay.tsx +0 -28
  397. package/src/js/components/map-overlay/user-geo-location-button.jsx +0 -89
  398. package/src/js/components/map-overlay/zoom-button.jsx +0 -98
  399. package/src/js/components/map-overlay/zoom-buttons.jsx +0 -26
  400. package/src/js/components/map-synced-interlay/index.ts +0 -15
  401. package/src/js/components/map-synced-interlay/map-synced-interlay.jsx +0 -22
  402. package/src/js/components/map-synced-interlay/tooltip-content.tsx +0 -22
  403. package/src/js/components/map-synced-interlay/tooltip.tsx +0 -199
  404. package/src/js/components/map-wrapper.tsx +0 -65
  405. package/src/js/components/map.tsx +0 -55
  406. package/src/js/components/modal.tsx +0 -40
  407. package/src/js/components/query-input-with-label.tsx +0 -71
  408. package/src/js/components/query-input.tsx +0 -81
  409. package/src/js/components/search/index.jsx +0 -83
  410. package/src/js/components/search/query-input.jsx +0 -20
  411. package/src/js/components/search/result-entry.jsx +0 -63
  412. package/src/js/components/search/result.jsx +0 -71
  413. package/src/js/components/switcher/GroupedSwitcher.jsx +0 -42
  414. package/src/js/components/switcher/Switcher.jsx +0 -54
  415. package/src/js/components/switcher/SwitcherButton.jsx +0 -23
  416. package/src/js/components/switcher/SwitcherEntry.tsx +0 -164
  417. package/src/js/components/switcher/SwitcherHeader.jsx +0 -58
  418. package/src/js/components/switcher/SwitcherStatusIcon.jsx +0 -36
  419. package/src/js/components/tag-switcher/TagSwitcher.tsx +0 -56
  420. package/src/js/components/tag-switcher/createTagSwitcherEntry.ts +0 -39
  421. package/src/js/components/tag-switcher/createTagSwitcherHeader.ts +0 -47
  422. package/src/js/components/tag-switcher/index.ts +0 -17
  423. package/src/js/components/time-filter.jsx +0 -187
  424. package/src/js/components/view-toggle-button/desktop-button.jsx +0 -13
  425. package/src/js/components/view-toggle-button/index.ts +0 -42
  426. package/src/js/components/view-toggle-button/mobile-button.tsx +0 -13
  427. package/src/js/components/view-toggle-button/view-toggle-button.jsx +0 -74
  428. package/src/js/components/view-toggle-button/viewport-button.tsx +0 -13
  429. package/src/js/config/constants/app.ts +0 -16
  430. package/src/js/config/constants/controllers.ts +0 -11
  431. package/src/js/config/feature/selections.ts +0 -13
  432. package/src/js/config/feature/sources.ts +0 -77
  433. package/src/js/config/index.ts +0 -133
  434. package/src/js/config/map/featureInteractions.ts +0 -53
  435. package/src/js/config/map/interactions.ts +0 -15
  436. package/src/js/config/map/layers.ts +0 -190
  437. package/src/js/controllers/defaults.ts +0 -36
  438. package/src/js/embed/browser.ts +0 -89
  439. package/src/js/embed/node.ts +0 -57
  440. package/src/js/filters/tag-filter.ts +0 -135
  441. package/src/js/filters/time-filter.ts +0 -53
  442. package/src/js/helpers/components.ts +0 -66
  443. package/src/js/helpers/create-action-watcher.ts +0 -35
  444. package/src/js/helpers/events.ts +0 -11
  445. package/src/js/helpers/get-feature-property.ts +0 -14
  446. package/src/js/helpers/i18n/de.ts +0 -145
  447. package/src/js/helpers/i18n/en.ts +0 -140
  448. package/src/js/helpers/i18n/index.ts +0 -41
  449. package/src/js/helpers/makeReplaceableComponent.ts +0 -0
  450. package/src/js/helpers/mod-classes.ts +0 -47
  451. package/src/js/helpers/react.ts +0 -14
  452. package/src/js/helpers/scroll-to-element-top.ts +0 -16
  453. package/src/js/helpers/sort-features-by-distance.ts +0 -102
  454. package/src/js/helpers/sticky.js +0 -143
  455. package/src/js/hooks/useCallbackRef.ts +0 -14
  456. package/src/js/hooks/useControllableState.ts +0 -50
  457. package/src/js/hooks/useDebounce.ts +0 -32
  458. package/src/js/hooks/useHandleEscapeKeyDown.ts +0 -27
  459. package/src/js/hooks/useMapsightPanel.ts +0 -40
  460. package/src/js/hooks/useMountable.ts +0 -47
  461. package/src/js/hooks/usePrevious.ts +0 -15
  462. package/src/js/hooks/useStickyHeader.ts +0 -50
  463. package/src/js/hooks/useUpdateMapSizeCallback.ts +0 -32
  464. package/src/js/hooks/useUpdateMapSizeOnRender.ts +0 -16
  465. package/src/js/hooks/useUpdateMapSizeOnTransitionEnd.ts +0 -40
  466. package/src/js/hooks/useUpdateMapSizeOnViewChange.ts +0 -36
  467. package/src/js/index.ts +0 -320
  468. package/src/js/plugins/browser/app-title.ts +0 -36
  469. package/src/js/plugins/browser/debug.ts +0 -37
  470. package/src/js/plugins/browser/feature-deep-link.ts +0 -223
  471. package/src/js/plugins/browser/local-storage.ts +0 -79
  472. package/src/js/plugins/browser/native-fullscreen.ts +0 -81
  473. package/src/js/plugins/browser/no-scroll.ts +0 -91
  474. package/src/js/plugins/browser/partial-content-changed-event.ts +0 -23
  475. package/src/js/plugins/browser/piwik-track-feature-selection-event.ts +0 -75
  476. package/src/js/plugins/browser/piwik-track-fullscreen-toggle-event.ts +0 -46
  477. package/src/js/plugins/browser/search.ts +0 -42
  478. package/src/js/plugins/browser/share-position-link.ts +0 -463
  479. package/src/js/plugins/browser/toggle-mobile-views.ts +0 -60
  480. package/src/js/plugins/browser/user-geolocation.ts +0 -142
  481. package/src/js/plugins/browser/views.ts +0 -141
  482. package/src/js/plugins/browser-defaults.ts +0 -101
  483. package/src/js/plugins/common/feature-selection-details-url.ts +0 -135
  484. package/src/js/plugins/common/lang.ts +0 -17
  485. package/src/js/plugins/common/measure-distance.ts +0 -223
  486. package/src/js/plugins/common/ol-proxy.ts +0 -68
  487. package/src/js/plugins/common/render-await-feature-details-loaded.ts +0 -154
  488. package/src/js/plugins/common/render-await-list-feature-sources-loaded.ts +0 -109
  489. package/src/js/plugins/server/feature-deep-link.ts +0 -67
  490. package/src/js/plugins/server-defaults.ts +0 -36
  491. package/src/js/renderer/browser-dom.tsx +0 -27
  492. package/src/js/renderer/server-string.tsx +0 -17
  493. package/src/js/server-handler.js +0 -39
  494. package/src/js/store/actions.ts +0 -662
  495. package/src/js/store/reducers.ts +0 -491
  496. package/src/js/store/selectors.ts +0 -483
  497. package/src/js/types.ts +0 -405
@@ -1,47 +0,0 @@
1
- import {useEffect, useState} from "react";
2
-
3
- export type Mountable = {
4
- /** mount function, receives element as parameter */
5
- mount(element: Element): void;
6
-
7
- /** unmount function, receives element as parameter */
8
- unmount(element: Element): void;
9
- };
10
-
11
- export function isMountable(obj: object): obj is Mountable {
12
- return (
13
- "mount" in obj &&
14
- typeof obj.mount === "function" &&
15
- "unmount" in obj &&
16
- typeof obj.unmount === "function"
17
- );
18
- }
19
-
20
- /**
21
- * Mounts the mountable object to the element
22
- *
23
- * @param mountable mountable object
24
- * @returns callback to set target
25
- */
26
- export default function useMountable(mountable: undefined | Mountable) {
27
- const [target, setTarget] = useState<undefined | Element>();
28
-
29
- useEffect(() => {
30
- if (!mountable) {
31
- console.info("mount failed, no mountable");
32
- return;
33
- }
34
-
35
- if (!target) {
36
- console.info("mount failed, no target");
37
- return;
38
- }
39
-
40
- mountable.mount(target);
41
- return () => {
42
- mountable.unmount(target);
43
- };
44
- }, [target, mountable]);
45
-
46
- return setTarget;
47
- }
@@ -1,15 +0,0 @@
1
- import {useEffect, useRef} from "react";
2
-
3
- export default function usePrevious<T>(value: T): T | null {
4
- // The ref object is a generic container whose current property is mutable ...
5
- // ... and can hold any value, similar to an instance property on a class
6
- const ref = useRef<T | null>(null);
7
-
8
- // Store current value in ref
9
- useEffect(() => {
10
- ref.current = value;
11
- }, [value]); // Only re-run if value changes
12
-
13
- // Return previous value (happens before update in useEffect above)
14
- return ref.current;
15
- }
@@ -1,50 +0,0 @@
1
- import type {DependencyList} from "react";
2
- import {useCallback, useEffect, useRef, useState} from "react";
3
-
4
- type Options = {
5
- stuckHeaderHeight?: number;
6
- resetDeps?: DependencyList;
7
- };
8
-
9
- export default function useStickyHeader<
10
- TElement extends HTMLElement = HTMLElement,
11
- >({stuckHeaderHeight = 30, resetDeps = []}: Options) {
12
- const [isHeaderStuck, setIsHeaderStuck] = useState(false);
13
- const [stickThreshold, setStickThreshold] = useState(0);
14
-
15
- const stickyHeaderRef = useRef<TElement | null>(null);
16
- const stickyScrollAreaRef = useRef<{scrollTop: number} | null>(null);
17
-
18
- const onScroll = useCallback(
19
- (e: React.UIEvent<HTMLDivElement, UIEvent>) => {
20
- setIsHeaderStuck(stickThreshold < e.currentTarget.scrollTop);
21
- },
22
- [stickThreshold],
23
- );
24
-
25
- useEffect(
26
- () => {
27
- if (stickyScrollAreaRef.current) {
28
- stickyScrollAreaRef.current.scrollTop = 0;
29
- }
30
-
31
- setIsHeaderStuck(false);
32
- },
33
- // eslint-disable-next-line react-hooks/exhaustive-deps
34
- [...resetDeps],
35
- );
36
-
37
- useEffect(() => {
38
- if (stickyHeaderRef.current) {
39
- const headerSize = stickyHeaderRef.current.offsetHeight;
40
- setStickThreshold(headerSize - stuckHeaderHeight);
41
- }
42
- }, [stickyHeaderRef.current?.offsetHeight, stuckHeaderHeight]);
43
-
44
- return {
45
- isHeaderStuck,
46
- stickyHeaderRef,
47
- stickyScrollAreaRef,
48
- onScroll,
49
- };
50
- }
@@ -1,32 +0,0 @@
1
- import type {RefObject} from "react";
2
- import {useCallback} from "react";
3
-
4
- import type {Dispatch} from "@reduxjs/toolkit";
5
-
6
- import {async} from "@mapsight/core/lib/base/actions";
7
- import {updateMapSize} from "@mapsight/core/lib/map/actions";
8
-
9
- import {MAP} from "../config/constants/controllers";
10
- import type {MainPanelPosition} from "../types";
11
-
12
- export default function useUpdateMapSizeCallback(
13
- // TODO: use hook
14
- dispatch: Dispatch,
15
- // TODO: why is this a ref?
16
- positionRef?: RefObject<MainPanelPosition | null>,
17
- reCenter: boolean = true,
18
- ) {
19
- return useCallback(
20
- function updateMapSizeCallback() {
21
- dispatch(
22
- async(
23
- updateMapSize(MAP, {
24
- from: positionRef?.current,
25
- reCenter,
26
- }),
27
- ),
28
- );
29
- },
30
- [dispatch, positionRef, reCenter],
31
- );
32
- }
@@ -1,16 +0,0 @@
1
- import {useEffect} from "react";
2
-
3
- import type {Dispatch} from "@reduxjs/toolkit";
4
-
5
- import useUpdateMapSizeCallback from "./useUpdateMapSizeCallback";
6
-
7
- export default function useUpdateMapSizeOnRender(
8
- // TODO: use hook
9
- dispatch: Dispatch<any>,
10
- ) {
11
- const updateMapSize = useUpdateMapSizeCallback(dispatch, undefined, false);
12
- useEffect(() => {
13
- console.log("UPDATE MAP SIZE ON RENDER");
14
- return updateMapSize();
15
- }, [updateMapSize]);
16
- }
@@ -1,40 +0,0 @@
1
- import type {RefObject} from "react";
2
- import {useEffect} from "react";
3
-
4
- import type {Dispatch} from "@reduxjs/toolkit";
5
-
6
- import type {MainPanelPosition} from "../types";
7
- import useUpdateMapSizeCallback from "./useUpdateMapSizeCallback";
8
-
9
- export default function useUpdateMapSizeOnTransitionEnd(
10
- target: undefined | Element,
11
- // TODO: use hook
12
- dispatch: Dispatch,
13
- // TODO: why is this a ref?
14
- positionRef?: RefObject<MainPanelPosition | null>,
15
- reCenter: boolean = true,
16
- ) {
17
- const updateMapSize = useUpdateMapSizeCallback(
18
- dispatch,
19
- positionRef,
20
- reCenter,
21
- );
22
-
23
- useEffect(() => {
24
- if (target === undefined) {
25
- return;
26
- }
27
-
28
- const handleTransitionEnd = (e: Event) => {
29
- if (e.target === target) {
30
- console.log("UPDATE MAP SIZE ON TRANSITION END");
31
- updateMapSize();
32
- }
33
- };
34
-
35
- target.addEventListener("transitionend", handleTransitionEnd);
36
- return () => {
37
- target.removeEventListener("transitionend", handleTransitionEnd);
38
- };
39
- }, [target, updateMapSize]);
40
- }
@@ -1,36 +0,0 @@
1
- import {useEffect} from "react";
2
-
3
- import type {Store} from "@reduxjs/toolkit";
4
-
5
- import {updateMapSize} from "@mapsight/core/lib/map/actions";
6
-
7
- import identity from "@mapsight/lib-js/util/identity";
8
-
9
- import {VIEW_MAP_ONLY, VIEW_MOBILE} from "../config/constants/app";
10
- import {MAP} from "../config/constants/controllers";
11
- import type {MapsightUiView} from "../types";
12
- import usePrevious from "./usePrevious";
13
-
14
- export default function useUpdateMapSizeOnViewChange(
15
- // TODO: use hook
16
- view: MapsightUiView,
17
- // TODO: use hook
18
- store: Store,
19
- ) {
20
- const prevView = usePrevious(view);
21
-
22
- useEffect(() => {
23
- const didViewChangeBetweenMobileAndMapOnly =
24
- (prevView === VIEW_MOBILE && view === VIEW_MAP_ONLY) ||
25
- (view === VIEW_MOBILE && prevView === VIEW_MAP_ONLY);
26
- const options = didViewChangeBetweenMobileAndMapOnly
27
- ? identity<Parameters<typeof updateMapSize>[1]>({
28
- from: "below",
29
- to: "below",
30
- reCenter: false,
31
- })
32
- : undefined;
33
-
34
- store.dispatch(updateMapSize(MAP, options));
35
- }, [prevView, view, store]);
36
- }
package/src/js/index.ts DELETED
@@ -1,320 +0,0 @@
1
- import {applyMiddleware, compose} from "@reduxjs/toolkit";
2
- import merge from "lodash/merge";
3
- import {thunk} from "redux-thunk";
4
-
5
- import {createMapsightStore} from "@mapsight/core";
6
- import {layerIdsExternalSwitcherSelector} from "@mapsight/core/lib/map/selectors";
7
- import {type State} from "@mapsight/core/types";
8
-
9
- import * as nonNull from "@mapsight/lib-js/nonNullable";
10
- import type {MapsightStyleFunction} from "@mapsight/lib-ol/style/styleFunction";
11
-
12
- import {siteConfig} from "./config";
13
- import {VIEW_MOBILE} from "./config/constants/app";
14
- import * as c from "./config/constants/controllers";
15
- import {createDefaultControllers} from "./controllers/defaults";
16
- import uiReducers from "./store/reducers";
17
- import type {
18
- CreateOptions,
19
- MapsightUiContext,
20
- MapsightUiRenderer,
21
- MapsightUiRendererProps,
22
- MapsightUiStore,
23
- PluginDefinition,
24
- PluginPhase,
25
- } from "./types";
26
-
27
- /**
28
- * Default mapsight ui renderer (Does nothing but log a warning!).
29
- */
30
- const defaultRenderer: MapsightUiRenderer<void> = (
31
- _container,
32
- _props,
33
- _hydrate = false,
34
- ) => {
35
- console.info("create has to be passed a renderer to render the app");
36
- };
37
-
38
- // FIXME: What's the point in having this if it's all undefined?
39
- const defaultCreateOptions: CreateOptions = {
40
- baseUrl: undefined,
41
- imagesUrl: undefined,
42
- // search
43
- searchUrl: undefined,
44
- searchQueryParameter: undefined,
45
- reHydratedState: undefined,
46
- uiState: {
47
- isFullscreen: false,
48
- listQuery: "",
49
- listSorting: undefined,
50
- listPage: 0, // current page
51
- searchQuery: "",
52
- searchResult: {},
53
- searchResultSelectionFeatures: [],
54
- title: "",
55
- userPreferenceListVisible: true,
56
- mapIsOutOfViewport: false,
57
-
58
- // views
59
- view: VIEW_MOBILE, // mobile first
60
- viewBreakpoints: [],
61
-
62
- embeddedMap: false, // map is embedded which switch some behaviours which would be annoying
63
- searchInMap: true, // enable address search in map overlay
64
-
65
- pageTitle: {
66
- show: true, // show page title
67
- },
68
- tagSwitcher: {
69
- show: false, // turn on tag switcher which will filter
70
- featureSourceId: undefined,
71
- featureSourcesControllerName: c.FEATURE_SOURCES,
72
- toggleableGroups: false, // make group names (headers) buttons that toggle on/off groups
73
- sortTags: false, // sort tags with locale sort, but not the tagGroups. to sort tagGroups add all tagGroups to first feature entry (but with empty tags if the entry doesn't have tags for a tagGroup)
74
- },
75
- viewToggle: {
76
- show: true,
77
- deselectFeaturesOnToggle: true,
78
- },
79
- layerSwitcher: {
80
- show: {
81
- internal: true,
82
- external: false,
83
- },
84
- internal: {
85
- layerIdsSelector: undefined, // implied default: layer ids of layers viewed in internal Selector
86
- grouped: false,
87
- },
88
- external: {
89
- // FIXME: function in redux state?
90
- layerIdsSelector: layerIdsExternalSwitcherSelector,
91
- grouped: true,
92
- },
93
- },
94
- list: {
95
- selectionBehavior: {
96
- desktop: "scrollToMap", // always 'scrollToMap' for now
97
- mobile: "expandInList", // either 'expandInList', 'scrollToMap', 'showInMapOnlyView'
98
- },
99
- detailsInList: false, // if true details will always be shown in list even if not on mobile
100
- showSelectedOnly: false, // don't show list entries, only show the selected one (need some other kind of communication, cyclingControl or icons on the map)
101
- highlightOnMouse: true, // highlights list item on mouse enter (and un-highlights on leave)
102
- selectOnClick: true, // select on click to selected list item
103
- deselectOnClick: false, // deselect on click to selected list item
104
- cyclingControl: false, // show a control to select next or previous list entry
105
- sortControl: true, // show sort control icon
106
- filterControl: true, // show filter box
107
- paginationControl: false, // show pagination
108
- itemsPerPage: 10, // number of items per page
109
- stickyHeader: true, // make list header sticky?
110
- showVaryingListInfoOnly: true, // show info column only, if the contents vary (determined before list filter)
111
- },
112
- featureSelectionInfo: {
113
- stickyHeader: false, // make feature selection info header sticky?
114
- stuckHeaderHeight: 30, // px
115
- },
116
- regions: {},
117
- places: {},
118
- },
119
-
120
- plugins: [],
121
- renderer: defaultRenderer,
122
- components: {},
123
- renderBreakpoints: {
124
- // NOTE: Keep in sync with css!
125
- mobile: [0, 767],
126
- tablet: [768, 1014],
127
- desktop: [1015, -1],
128
- },
129
- partialChangeHandler: undefined,
130
-
131
- // add additional reducers
132
- reducers: {...uiReducers},
133
- };
134
-
135
- /**
136
- * Creates an mapsight ui instance
137
- *
138
- * @param container element the mapsight ui app should be rendered into
139
- * @param styleFunction the mapsight core vector style function (see @mapsight/core)
140
- * @param [baseMapsightConfig] base mapsight configuration TODO: document further
141
- * @param [createOptions] ui creation options TODO: document further
142
- * @returns mapsight ui instance
143
- */
144
- export function create(
145
- container: HTMLElement | null,
146
- styleFunction: MapsightStyleFunction,
147
- baseMapsightConfig: Partial<State> = {},
148
- createOptions: CreateOptions = {},
149
- ): MapsightUiContext {
150
- const context: MapsightUiContext = {
151
- hasRendered: false,
152
- container: container,
153
- styleFunction: styleFunction,
154
- baseMapsightConfig: baseMapsightConfig,
155
- createOptions: merge({}, defaultCreateOptions, createOptions),
156
- appChannelListeners: [],
157
- };
158
-
159
- // transfer some create options to global site config to make them available even outside of the redux context
160
- // TODO: Replace this mechanic with an explicit API, e.g. exposing the site config directly as `@mapsight/ui/site-config` or
161
- // make them local to the mapsight ui context to allow for several independent instances with different site configs
162
- siteConfig.baseUrl = context.createOptions.baseUrl ?? siteConfig.baseUrl;
163
- siteConfig.imagesUrl =
164
- context.createOptions.imagesUrl || siteConfig.imagesUrl;
165
- siteConfig.searchUrl =
166
- context.createOptions.searchUrl || siteConfig.searchUrl;
167
- siteConfig.searchQueryParameter =
168
- context.createOptions.searchQueryParameter ||
169
- siteConfig.searchQueryParameter;
170
-
171
- // initial state
172
- context.initialState = merge({}, context.baseMapsightConfig, {
173
- app: context.createOptions.uiState,
174
- });
175
- delete context.createOptions.uiState;
176
-
177
- // override initial state by re-hydration
178
- context.isStateReHydrated = false;
179
- if (context.createOptions.reHydratedState !== undefined) {
180
- context.isStateReHydrated = true;
181
- merge(context.initialState, context.createOptions.reHydratedState);
182
- }
183
-
184
- // setup controllers
185
- context.controllers = Object.assign(
186
- createDefaultControllers(context),
187
- context.createOptions.controllers,
188
- );
189
-
190
- // store enhancer
191
- const uiStoreEnhancer = applyMiddleware(thunk);
192
- // @ts-expect-error TODO
193
- context.storeEnhancer = context.createOptions.storeEnhancer
194
- ? compose(uiStoreEnhancer, context.createOptions.storeEnhancer)
195
- : uiStoreEnhancer;
196
-
197
- // plugin: afterInit
198
- callAndForgetPlugins(context, "afterInit");
199
-
200
- context.store = createMapsightStore<MapsightUiStore>(
201
- context.controllers,
202
- Object.fromEntries(
203
- Object.entries(context.createOptions.reducers ?? {})
204
- .map(([name, reducer]) =>
205
- nonNull.map(reducer, (reducer) => [name, reducer] as const),
206
- )
207
- .filter(nonNull.is),
208
- ),
209
- context.initialState,
210
- context.storeEnhancer,
211
- );
212
-
213
- // render
214
- function internalRender(): unknown {
215
- const hydrate = !context.hasRendered && context.isStateReHydrated;
216
- nonNull.assert(context.store);
217
- nonNull.assert(context.createOptions.renderer);
218
-
219
- const props: MapsightUiRendererProps = {
220
- store: context.store,
221
- components: context.createOptions.components || {},
222
- appChannelListeners: context.appChannelListeners,
223
- ...context.rendererProps,
224
- };
225
- context.renderRef = context.createOptions.renderer(
226
- context.container,
227
- props,
228
- hydrate,
229
- );
230
- context.hasRendered = true;
231
-
232
- callAndForgetPlugins(context, "afterRender");
233
-
234
- return context.renderRef;
235
- }
236
-
237
- // Render without waiting for plugins (for e.g. waiting on external data)
238
- context.render = function mapsightUiRender(rendererProps) {
239
- context.rendererProps = rendererProps;
240
- context.canPluginsDelayRender = false;
241
-
242
- callAndForgetPlugins(context, "beforeRender");
243
-
244
- return internalRender();
245
- };
246
-
247
- // Render allowing plugins to delay render (for e.g. waiting on external data)
248
- context.renderAsync = async function mapsightUiRenderAsync(rendererProps) {
249
- context.rendererProps = rendererProps;
250
- context.canPluginsDelayRender = true;
251
-
252
- await callAndAwaitPlugins(context, "beforeRender");
253
-
254
- return internalRender();
255
- };
256
-
257
- // plugin: afterCreate
258
- callAndForgetPlugins(context, "afterCreate");
259
-
260
- return context;
261
- }
262
-
263
- /**
264
- * Overrides plugins with the same name (last to come wins), null unsets the plugin,
265
- * Flattened order is in order of first occurrence of a name.
266
- *
267
- * @param plugins (sorted) array of plugin definitions to be flattened, null unsets
268
- * @returns flattened plugin definitions
269
- */
270
- function flattenPlugins(plugins: Array<PluginDefinition>) {
271
- const pluginPositionByName: Record<string, number> = {};
272
- const flattenedPlugins: Array<PluginDefinition> = [];
273
-
274
- plugins.forEach(function filterPlugin(plugin) {
275
- const [key] = plugin;
276
- const position = pluginPositionByName[key];
277
- if (position !== undefined) {
278
- flattenedPlugins.splice(position, 1, plugin);
279
- } else {
280
- pluginPositionByName[key] = flattenedPlugins.length;
281
- flattenedPlugins.push(plugin);
282
- }
283
- });
284
-
285
- return flattenedPlugins.filter(([_, plugin]) => !!plugin);
286
- }
287
-
288
- /**
289
- * @param context context in which the plugin will be called
290
- * @param phase phase of the plugin
291
- * @returns array of plugin call return values
292
- */
293
- function callPlugins(
294
- context: MapsightUiContext,
295
- phase: PluginPhase,
296
- ): Array<Promise<unknown>> {
297
- return flattenPlugins(context.createOptions?.plugins ?? [])
298
- .map(([_name, plugin]) => plugin?.[phase]?.(context) ?? undefined)
299
- .filter(nonNull.is);
300
- }
301
-
302
- /**
303
- @param context context in which the plugin will be called
304
- @param phase phase of the plugin
305
- */
306
- function callAndForgetPlugins(context: MapsightUiContext, phase: PluginPhase) {
307
- Promise.allSettled(callPlugins(context, phase)).catch(() => {});
308
- }
309
-
310
- /**
311
- * @param context context in which the plugin will be called
312
- * @param phase phase of the plugin
313
- * @returns promise that all plugins are resolved
314
- */
315
- async function callAndAwaitPlugins(
316
- context: MapsightUiContext,
317
- phase: PluginPhase,
318
- ): Promise<void> {
319
- await Promise.all(callPlugins(context, phase));
320
- }
@@ -1,36 +0,0 @@
1
- import {setAppTitle} from "../../store/actions";
2
- import type {PluginInstance} from "../../types";
3
-
4
- const defaultRendererPropName = "title";
5
-
6
- /**
7
- * This plugin will apply a title on render passed as a prop to the renderer.
8
- *
9
- * @param [options] options currently not used
10
- * @param [options.rendererPropName="title"] title property name passed to the renderer
11
- * @returns plugin instance
12
- */
13
- export default function createPlugin(
14
- options: {
15
- rendererPropName?: string;
16
- } = {},
17
- ): PluginInstance {
18
- const {rendererPropName = defaultRendererPropName} = options;
19
-
20
- return {
21
- beforeRender: function appTitleRenderPlugin(context) {
22
- const {store, rendererProps} = context;
23
-
24
- if (!store || !rendererProps) {
25
- return;
26
- }
27
-
28
- if (
29
- rendererPropName in rendererProps &&
30
- rendererProps[rendererPropName]
31
- ) {
32
- store.dispatch(setAppTitle(rendererProps[rendererPropName]));
33
- }
34
- },
35
- };
36
- }
@@ -1,37 +0,0 @@
1
- import type {MapController} from "@mapsight/core/lib/map/controller";
2
- import {getIdForLayer} from "@mapsight/core/lib/map/lib/tagLayer";
3
-
4
- import type {PluginInstance} from "../../types";
5
-
6
- const defaultGlobalVariableName = "MSUI";
7
-
8
- /**
9
- * This plugin will make debug info available in a global variable.
10
- */
11
- export default function createPlugin(
12
- options: {
13
- globalVariableName?: string;
14
- } = {},
15
- ): PluginInstance {
16
- const {globalVariableName = defaultGlobalVariableName} = options;
17
-
18
- return {
19
- afterCreate: (ctx) => {
20
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
21
- // @ts-ignore
22
- window[globalVariableName] = {
23
- context: ctx,
24
- getLayerObjects() {
25
- const layerMap = {};
26
- (ctx.controllers?.map as MapController)
27
- .getMap()
28
- ?.getAllLayers()
29
- .forEach((l, i) => {
30
- layerMap[getIdForLayer(l) ?? "unnamed_" + i] = l;
31
- });
32
- return layerMap;
33
- },
34
- };
35
- },
36
- };
37
- }