@mapsight/ui 7.1.0 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (484) hide show
  1. package/README.md +91 -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/index.d.ts +3 -2
  22. package/dist/components/feature-list/index.d.ts.map +1 -1
  23. package/dist/components/feature-list/index.js +30 -42
  24. package/dist/components/feature-list/index.js.map +1 -1
  25. package/dist/components/feature-list/pagination.d.ts +1 -1
  26. package/dist/components/feature-list/pagination.d.ts.map +1 -1
  27. package/dist/components/feature-list/query-input.d.ts +1 -1
  28. package/dist/components/feature-list/query-input.d.ts.map +1 -1
  29. package/dist/components/feature-list/tag-switcher-control.d.ts +4 -0
  30. package/dist/components/feature-list/tag-switcher-control.d.ts.map +1 -0
  31. package/dist/components/feature-list/tag-switcher-control.js +10 -0
  32. package/dist/components/feature-list/tag-switcher-control.js.map +1 -0
  33. package/dist/components/feature-list-cycling/button.d.ts +1 -1
  34. package/dist/components/feature-list-cycling/button.d.ts.map +1 -1
  35. package/dist/components/feature-list-cycling/dot.d.ts +1 -1
  36. package/dist/components/feature-list-cycling/dot.d.ts.map +1 -1
  37. package/dist/components/feature-list-cycling/feature-list-cycling.d.ts +1 -1
  38. package/dist/components/feature-list-cycling/feature-list-cycling.d.ts.map +1 -1
  39. package/dist/components/feature-list-cycling/index.d.ts +1 -1
  40. package/dist/components/feature-list-item/icon.d.ts +8 -6
  41. package/dist/components/feature-list-item/icon.d.ts.map +1 -1
  42. package/dist/components/feature-list-item/icon.js +5 -13
  43. package/dist/components/feature-list-item/icon.js.map +1 -1
  44. package/dist/components/feature-list-item/index.d.ts +1 -1
  45. package/dist/components/feature-list-item/index.d.ts.map +1 -1
  46. package/dist/components/feature-list-sorting/feature-list-sorting.d.ts +1 -1
  47. package/dist/components/feature-list-sorting/feature-list-sorting.d.ts.map +1 -1
  48. package/dist/components/feature-list-sorting/feature-list-sorting.js +3 -12
  49. package/dist/components/feature-list-sorting/feature-list-sorting.js.map +1 -1
  50. package/dist/components/feature-list-sorting/index.d.ts +1 -1
  51. package/dist/components/feature-list-sorting/status-indicator.d.ts +1 -1
  52. package/dist/components/feature-list-sorting/status-indicator.d.ts.map +1 -1
  53. package/dist/components/feature-select-button.d.ts +1 -1
  54. package/dist/components/feature-select-button.d.ts.map +1 -1
  55. package/dist/components/feature-selection-info/close-button.d.ts +1 -1
  56. package/dist/components/feature-selection-info/close-button.d.ts.map +1 -1
  57. package/dist/components/feature-selection-info/container.d.ts +1 -1
  58. package/dist/components/feature-selection-info/container.d.ts.map +1 -1
  59. package/dist/components/feature-selection-info/header.d.ts +1 -1
  60. package/dist/components/feature-selection-info/header.d.ts.map +1 -1
  61. package/dist/components/feature-selection-info/index.d.ts +1 -1
  62. package/dist/components/feature-selection-info/index.d.ts.map +1 -1
  63. package/dist/components/feature-selection-info/with-sticky-header.d.ts +1 -1
  64. package/dist/components/feature-selection-info/with-sticky-header.d.ts.map +1 -1
  65. package/dist/components/feature-selection-info/without-sticky-header.d.ts +1 -1
  66. package/dist/components/feature-selection-info/without-sticky-header.d.ts.map +1 -1
  67. package/dist/components/filter-toggle-control/FilterToggleControl.d.ts +12 -0
  68. package/dist/components/filter-toggle-control/FilterToggleControl.d.ts.map +1 -0
  69. package/dist/components/filter-toggle-control/FilterToggleControl.js +20 -0
  70. package/dist/components/filter-toggle-control/FilterToggleControl.js.map +1 -0
  71. package/dist/components/helping/app-channel.d.ts +1 -1
  72. package/dist/components/helping/app-channel.d.ts.map +1 -1
  73. package/dist/components/helping/app-context.d.ts +1 -1
  74. package/dist/components/helping/app-context.d.ts.map +1 -1
  75. package/dist/components/instance.d.ts +1 -1
  76. package/dist/components/instance.d.ts.map +1 -1
  77. package/dist/components/layer-switcher/GroupedLayerSwitcher.d.ts +1 -1
  78. package/dist/components/layer-switcher/LayerSwitcher.d.ts +1 -1
  79. package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts +3 -2
  80. package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts.map +1 -1
  81. package/dist/components/layer-switcher/LayerSwitcherContainer.js +2 -2
  82. package/dist/components/layer-switcher/LayerSwitcherContainer.js.map +1 -1
  83. package/dist/components/layer-switcher/LayerSwitcherEntry.d.ts +1 -1
  84. package/dist/components/layer-switcher/index.d.ts +1 -1
  85. package/dist/components/layer-switcher/index.js.map +1 -1
  86. package/dist/components/layout/additional-container/content.d.ts +1 -1
  87. package/dist/components/layout/additional-container/content.d.ts.map +1 -1
  88. package/dist/components/layout/additional-container/index.d.ts +1 -1
  89. package/dist/components/layout/additional-container/index.d.ts.map +1 -1
  90. package/dist/components/layout/additional-container/marginal.d.ts +1 -1
  91. package/dist/components/layout/additional-container/marginal.d.ts.map +1 -1
  92. package/dist/components/layout/main-container.d.ts +1 -1
  93. package/dist/components/layout/main-container.d.ts.map +1 -1
  94. package/dist/components/layout/map-row.d.ts +1 -1
  95. package/dist/components/layout/map-row.d.ts.map +1 -1
  96. package/dist/components/layout/title-bar.d.ts +1 -1
  97. package/dist/components/layout/title-bar.d.ts.map +1 -1
  98. package/dist/components/layout/wrapper.d.ts +1 -1
  99. package/dist/components/layout/wrapper.d.ts.map +1 -1
  100. package/dist/components/link-share.d.ts +1 -1
  101. package/dist/components/link-share.d.ts.map +1 -1
  102. package/dist/components/main-panel/container.d.ts +1 -1
  103. package/dist/components/main-panel/container.d.ts.map +1 -1
  104. package/dist/components/main-panel/context.d.ts +1 -1
  105. package/dist/components/main-panel/context.d.ts.map +1 -1
  106. package/dist/components/main-panel/index.d.ts +1 -1
  107. package/dist/components/main-panel/index.d.ts.map +1 -1
  108. package/dist/components/main-panel/list-toggle-button.d.ts +1 -1
  109. package/dist/components/main-panel/list-toggle-button.d.ts.map +1 -1
  110. package/dist/components/map-overlay/attribution-entries.d.ts +1 -1
  111. package/dist/components/map-overlay/attribution-entries.d.ts.map +1 -1
  112. package/dist/components/map-overlay/attribution.d.ts +1 -1
  113. package/dist/components/map-overlay/attribution.d.ts.map +1 -1
  114. package/dist/components/map-overlay/combined-buttons.d.ts +1 -1
  115. package/dist/components/map-overlay/combined-buttons.d.ts.map +1 -1
  116. package/dist/components/map-overlay/index.d.ts +1 -1
  117. package/dist/components/map-overlay/index.d.ts.map +1 -1
  118. package/dist/components/map-overlay/info-overlay-left.d.ts +1 -1
  119. package/dist/components/map-overlay/info-overlay-left.d.ts.map +1 -1
  120. package/dist/components/map-overlay/info-overlay-modal.d.ts +1 -1
  121. package/dist/components/map-overlay/info-overlay-modal.d.ts.map +1 -1
  122. package/dist/components/map-overlay/info-overlay-right.d.ts +1 -1
  123. package/dist/components/map-overlay/info-overlay-right.d.ts.map +1 -1
  124. package/dist/components/map-overlay/layer-switcher-overlay.d.ts +1 -1
  125. package/dist/components/map-overlay/layer-switcher-overlay.d.ts.map +1 -1
  126. package/dist/components/map-overlay/legend.d.ts +1 -1
  127. package/dist/components/map-overlay/legend.d.ts.map +1 -1
  128. package/dist/components/map-overlay/logo.d.ts +1 -1
  129. package/dist/components/map-overlay/logo.d.ts.map +1 -1
  130. package/dist/components/map-overlay/measure-distance-button.d.ts +1 -1
  131. package/dist/components/map-overlay/measure-distance-button.d.ts.map +1 -1
  132. package/dist/components/map-overlay/measure-distance-overlay.d.ts +1 -1
  133. package/dist/components/map-overlay/measure-distance-overlay.d.ts.map +1 -1
  134. package/dist/components/map-overlay/search-overlay.d.ts +1 -1
  135. package/dist/components/map-overlay/search-overlay.d.ts.map +1 -1
  136. package/dist/components/map-overlay/share-position-link-button.d.ts +1 -1
  137. package/dist/components/map-overlay/share-position-link-button.d.ts.map +1 -1
  138. package/dist/components/map-overlay/tool-overlay.d.ts +1 -1
  139. package/dist/components/map-overlay/tool-overlay.d.ts.map +1 -1
  140. package/dist/components/map-overlay/zoom-buttons.d.ts +1 -1
  141. package/dist/components/map-overlay/zoom-buttons.d.ts.map +1 -1
  142. package/dist/components/map-synced-interlay/index.d.ts +1 -1
  143. package/dist/components/map-synced-interlay/map-synced-interlay.d.ts +1 -1
  144. package/dist/components/map-synced-interlay/map-synced-interlay.d.ts.map +1 -1
  145. package/dist/components/map-synced-interlay/tooltip.d.ts +1 -1
  146. package/dist/components/map-synced-interlay/tooltip.d.ts.map +1 -1
  147. package/dist/components/map-wrapper.d.ts +3 -3
  148. package/dist/components/map-wrapper.d.ts.map +1 -1
  149. package/dist/components/map-wrapper.js +4 -7
  150. package/dist/components/map-wrapper.js.map +1 -1
  151. package/dist/components/map.d.ts +1 -1
  152. package/dist/components/map.d.ts.map +1 -1
  153. package/dist/components/mapsight-icon/mapsight-icon.d.ts +10 -0
  154. package/dist/components/mapsight-icon/mapsight-icon.d.ts.map +1 -0
  155. package/dist/components/mapsight-icon/mapsight-icon.js +33 -0
  156. package/dist/components/mapsight-icon/mapsight-icon.js.map +1 -0
  157. package/dist/components/modal.d.ts +1 -1
  158. package/dist/components/modal.d.ts.map +1 -1
  159. package/dist/components/query-input-with-label.d.ts +1 -1
  160. package/dist/components/query-input-with-label.d.ts.map +1 -1
  161. package/dist/components/search/index.d.ts +1 -1
  162. package/dist/components/search/index.d.ts.map +1 -1
  163. package/dist/components/search/result-entry.d.ts +1 -1
  164. package/dist/components/search/result-entry.d.ts.map +1 -1
  165. package/dist/components/search/result.d.ts +1 -1
  166. package/dist/components/search/result.d.ts.map +1 -1
  167. package/dist/components/switcher/GroupedSwitcher.d.ts +1 -1
  168. package/dist/components/switcher/GroupedSwitcher.d.ts.map +1 -1
  169. package/dist/components/switcher/Switcher.d.ts +1 -1
  170. package/dist/components/switcher/Switcher.d.ts.map +1 -1
  171. package/dist/components/switcher/SwitcherButton.d.ts +1 -1
  172. package/dist/components/switcher/SwitcherButton.d.ts.map +1 -1
  173. package/dist/components/switcher/SwitcherEntry.d.ts +1 -1
  174. package/dist/components/switcher/SwitcherEntry.d.ts.map +1 -1
  175. package/dist/components/switcher/SwitcherHeader.d.ts +1 -1
  176. package/dist/components/switcher/SwitcherHeader.d.ts.map +1 -1
  177. package/dist/components/switcher/SwitcherStatusIcon.d.ts +1 -1
  178. package/dist/components/switcher/SwitcherStatusIcon.d.ts.map +1 -1
  179. package/dist/components/tag-switcher/TagSwitcher.d.ts +1 -1
  180. package/dist/components/tag-switcher/TagSwitcher.d.ts.map +1 -1
  181. package/dist/components/tag-switcher/createTagSwitcherEntry.d.ts +1 -1
  182. package/dist/components/tag-switcher/createTagSwitcherHeader.d.ts +1 -1
  183. package/dist/components/tag-switcher/index.d.ts +1 -1
  184. package/dist/components/time-filter.d.ts +1 -1
  185. package/dist/components/time-filter.d.ts.map +1 -1
  186. package/dist/components/view-toggle-button/desktop-button.d.ts +1 -1
  187. package/dist/components/view-toggle-button/desktop-button.d.ts.map +1 -1
  188. package/dist/components/view-toggle-button/index.d.ts +1 -1
  189. package/dist/components/view-toggle-button/mobile-button.d.ts +1 -1
  190. package/dist/components/view-toggle-button/mobile-button.d.ts.map +1 -1
  191. package/dist/components/view-toggle-button/view-toggle-button.d.ts +1 -1
  192. package/dist/components/view-toggle-button/view-toggle-button.d.ts.map +1 -1
  193. package/dist/components/view-toggle-button/viewport-button.d.ts +1 -1
  194. package/dist/components/view-toggle-button/viewport-button.d.ts.map +1 -1
  195. package/dist/config/feature/sources.d.ts +8 -5
  196. package/dist/config/feature/sources.d.ts.map +1 -1
  197. package/dist/config/feature/sources.js +10 -0
  198. package/dist/config/feature/sources.js.map +1 -1
  199. package/dist/config/index.d.ts +1 -1
  200. package/dist/config/map/featureInteractions.js.map +1 -1
  201. package/dist/config/map/layers.d.ts +16 -13
  202. package/dist/config/map/layers.d.ts.map +1 -1
  203. package/dist/config/map/layers.js.map +1 -1
  204. package/dist/config/schema/index.d.ts +195 -0
  205. package/dist/config/schema/index.d.ts.map +1 -0
  206. package/dist/config/schema/index.js +26 -0
  207. package/dist/config/schema/index.js.map +1 -0
  208. package/dist/config/schema/validate.d.ts +8 -0
  209. package/dist/config/schema/validate.d.ts.map +1 -0
  210. package/dist/config/schema/validate.js +7 -0
  211. package/dist/config/schema/validate.js.map +1 -0
  212. package/dist/controllers/defaults.d.ts.map +1 -1
  213. package/dist/controllers/defaults.js +5 -0
  214. package/dist/controllers/defaults.js.map +1 -1
  215. package/dist/filters/tag-filter.d.ts +7 -0
  216. package/dist/filters/tag-filter.d.ts.map +1 -1
  217. package/dist/filters/tag-filter.js +10 -0
  218. package/dist/filters/tag-filter.js.map +1 -1
  219. package/dist/filters/time-filter.d.ts +9 -0
  220. package/dist/filters/time-filter.d.ts.map +1 -1
  221. package/dist/filters/time-filter.js +10 -0
  222. package/dist/filters/time-filter.js.map +1 -1
  223. package/dist/helpers/i18n/de.d.ts.map +1 -1
  224. package/dist/helpers/i18n/de.js +1 -0
  225. package/dist/helpers/i18n/de.js.map +1 -1
  226. package/dist/helpers/i18n/en.d.ts.map +1 -1
  227. package/dist/helpers/i18n/en.js +1 -0
  228. package/dist/helpers/i18n/en.js.map +1 -1
  229. package/dist/helpers/sort-features-by-distance.d.ts +2 -7
  230. package/dist/helpers/sort-features-by-distance.d.ts.map +1 -1
  231. package/dist/helpers/sort-features-by-distance.js +27 -39
  232. package/dist/helpers/sort-features-by-distance.js.map +1 -1
  233. package/dist/hooks/useMapsightIcon.d.ts +8 -0
  234. package/dist/hooks/useMapsightIcon.d.ts.map +1 -0
  235. package/dist/hooks/useMapsightIcon.js +50 -0
  236. package/dist/hooks/useMapsightIcon.js.map +1 -0
  237. package/dist/index.d.ts +2 -2
  238. package/dist/index.d.ts.map +1 -1
  239. package/dist/index.js +12 -2
  240. package/dist/index.js.map +1 -1
  241. package/dist/plugins/browser-defaults.d.ts +2 -0
  242. package/dist/plugins/browser-defaults.d.ts.map +1 -1
  243. package/dist/plugins/browser-defaults.js +5 -0
  244. package/dist/plugins/browser-defaults.js.map +1 -1
  245. package/dist/plugins/common/combined-visible-layers.d.ts +15 -0
  246. package/dist/plugins/common/combined-visible-layers.d.ts.map +1 -0
  247. package/dist/plugins/common/combined-visible-layers.js +63 -0
  248. package/dist/plugins/common/combined-visible-layers.js.map +1 -0
  249. package/dist/plugins/common/runtime-icon-style.d.ts +12 -0
  250. package/dist/plugins/common/runtime-icon-style.d.ts.map +1 -0
  251. package/dist/plugins/common/runtime-icon-style.js +58 -0
  252. package/dist/plugins/common/runtime-icon-style.js.map +1 -0
  253. package/dist/react-modal-app-element.d.ts +6 -0
  254. package/dist/react-modal-app-element.d.ts.map +1 -0
  255. package/dist/react-modal-app-element.js +9 -0
  256. package/dist/react-modal-app-element.js.map +1 -0
  257. package/dist/store/actions.d.ts.map +1 -1
  258. package/dist/store/actions.js +6 -1
  259. package/dist/store/actions.js.map +1 -1
  260. package/dist/store/reducers.d.ts +8 -6
  261. package/dist/store/reducers.d.ts.map +1 -1
  262. package/dist/store/selectors.d.ts +10 -17
  263. package/dist/store/selectors.d.ts.map +1 -1
  264. package/dist/store/selectors.js +9 -1
  265. package/dist/store/selectors.js.map +1 -1
  266. package/dist/types.d.ts +19 -5
  267. package/dist/types.d.ts.map +1 -1
  268. package/package.json +24 -8
  269. package/src/scss/blocks/_features-sorting.scss +0 -13
  270. package/src/scss/blocks/_filter-button.scss +23 -0
  271. package/src/scss/blocks/_filter-toggle-control.scss +15 -0
  272. package/src/scss/default.scss +1 -0
  273. package/src/img/mapsight-ui/check-empty.svg +0 -1
  274. package/src/img/mapsight-ui/check.svg +0 -2
  275. package/src/img/mapsight-ui/close-list.svg +0 -1
  276. package/src/img/mapsight-ui/close.svg +0 -1
  277. package/src/img/mapsight-ui/error.svg +0 -1
  278. package/src/img/mapsight-ui/fullscreen-close.svg +0 -1
  279. package/src/img/mapsight-ui/fullscreen.svg +0 -1
  280. package/src/img/mapsight-ui/geo-active.svg +0 -1
  281. package/src/img/mapsight-ui/geo-error.svg +0 -1
  282. package/src/img/mapsight-ui/geo-inactive.svg +0 -1
  283. package/src/img/mapsight-ui/info.svg +0 -1
  284. package/src/img/mapsight-ui/layers.svg +0 -1
  285. package/src/img/mapsight-ui/loading.svg +0 -1
  286. package/src/img/mapsight-ui/map.svg +0 -1
  287. package/src/img/mapsight-ui/measure-distance.svg +0 -7
  288. package/src/img/mapsight-ui/open-list.svg +0 -1
  289. package/src/img/mapsight-ui/place-marker.svg +0 -4
  290. package/src/img/mapsight-ui/print.svg +0 -4
  291. package/src/img/mapsight-ui/reset-active.svg +0 -1
  292. package/src/img/mapsight-ui/reset.svg +0 -1
  293. package/src/img/mapsight-ui/search.svg +0 -1
  294. package/src/img/mapsight-ui/sharing.svg +0 -7
  295. package/src/img/mapsight-ui/sort-active.svg +0 -1
  296. package/src/img/mapsight-ui/sort.svg +0 -1
  297. package/src/img/mapsight-ui/watermark.svg +0 -1
  298. package/src/img/mapsight-ui/zoom-in.svg +0 -3
  299. package/src/img/mapsight-ui/zoom-out.svg +0 -3
  300. package/src/js/components/app.tsx +0 -232
  301. package/src/js/components/close-overlay-button.tsx +0 -27
  302. package/src/js/components/feature-details-content/feature-details-content-inner.tsx +0 -116
  303. package/src/js/components/feature-details-content/feature-details-content.jsx +0 -185
  304. package/src/js/components/feature-details-content/index.js +0 -16
  305. package/src/js/components/feature-details-content/share-feature-link-modal.jsx +0 -56
  306. package/src/js/components/feature-list/content.jsx +0 -42
  307. package/src/js/components/feature-list/context.tsx +0 -47
  308. package/src/js/components/feature-list/empty-message.jsx +0 -15
  309. package/src/js/components/feature-list/filter.jsx +0 -35
  310. package/src/js/components/feature-list/footer.jsx +0 -5
  311. package/src/js/components/feature-list/grouped-content.jsx +0 -74
  312. package/src/js/components/feature-list/header.jsx +0 -7
  313. package/src/js/components/feature-list/hooks/useAutoloadFeatureSource.ts +0 -25
  314. package/src/js/components/feature-list/hooks/useFeatureListFeatureSource.ts +0 -22
  315. package/src/js/components/feature-list/hooks/useFeatureListItemGroups.ts +0 -127
  316. package/src/js/components/feature-list/hooks/useFeatureListState.ts +0 -98
  317. package/src/js/components/feature-list/hooks/useKeyboardNavigation.js +0 -112
  318. package/src/js/components/feature-list/hooks/useMakeHeaderSticky.js +0 -40
  319. package/src/js/components/feature-list/hooks/usePaginatedFilteredFeatures.ts +0 -129
  320. package/src/js/components/feature-list/hooks/useRestoreDocumentScroll.js +0 -12
  321. package/src/js/components/feature-list/hooks/useSelectFeature.js +0 -88
  322. package/src/js/components/feature-list/index.jsx +0 -278
  323. package/src/js/components/feature-list/pagination.tsx +0 -57
  324. package/src/js/components/feature-list/query-input.jsx +0 -14
  325. package/src/js/components/feature-list-cycling/button.jsx +0 -13
  326. package/src/js/components/feature-list-cycling/dot.jsx +0 -43
  327. package/src/js/components/feature-list-cycling/feature-list-cycling.jsx +0 -153
  328. package/src/js/components/feature-list-cycling/index.js +0 -82
  329. package/src/js/components/feature-list-item/head.jsx +0 -131
  330. package/src/js/components/feature-list-item/hooks/useFeatureListItemScrollAndFocus.js +0 -51
  331. package/src/js/components/feature-list-item/hooks/useFeatureListItemState.ts +0 -75
  332. package/src/js/components/feature-list-item/icon.jsx +0 -35
  333. package/src/js/components/feature-list-item/index.jsx +0 -168
  334. package/src/js/components/feature-list-sorting/feature-list-sorting.tsx +0 -144
  335. package/src/js/components/feature-list-sorting/index.js +0 -22
  336. package/src/js/components/feature-list-sorting/status-indicator.jsx +0 -10
  337. package/src/js/components/feature-select-button.jsx +0 -70
  338. package/src/js/components/feature-selection-info/close-button.jsx +0 -64
  339. package/src/js/components/feature-selection-info/container.jsx +0 -9
  340. package/src/js/components/feature-selection-info/header.tsx +0 -27
  341. package/src/js/components/feature-selection-info/index.tsx +0 -81
  342. package/src/js/components/feature-selection-info/with-sticky-header.tsx +0 -76
  343. package/src/js/components/feature-selection-info/without-sticky-header.jsx +0 -19
  344. package/src/js/components/feature-selection-info/wrapper.jsx +0 -43
  345. package/src/js/components/helping/app-channel.tsx +0 -99
  346. package/src/js/components/helping/app-context.tsx +0 -32
  347. package/src/js/components/helping/visibility-wrapper.jsx +0 -23
  348. package/src/js/components/instance.tsx +0 -48
  349. package/src/js/components/layer-switcher/GroupedLayerSwitcher.js +0 -47
  350. package/src/js/components/layer-switcher/LayerSwitcher.ts +0 -34
  351. package/src/js/components/layer-switcher/LayerSwitcherContainer.tsx +0 -88
  352. package/src/js/components/layer-switcher/LayerSwitcherEntry.ts +0 -152
  353. package/src/js/components/layer-switcher/index.ts +0 -42
  354. package/src/js/components/layout/additional-container/content.jsx +0 -10
  355. package/src/js/components/layout/additional-container/index.jsx +0 -5
  356. package/src/js/components/layout/additional-container/marginal.jsx +0 -10
  357. package/src/js/components/layout/main-container.jsx +0 -5
  358. package/src/js/components/layout/map-row.jsx +0 -5
  359. package/src/js/components/layout/title-bar.tsx +0 -25
  360. package/src/js/components/layout/wrapper.jsx +0 -28
  361. package/src/js/components/link-share.jsx +0 -78
  362. package/src/js/components/main-panel/container.tsx +0 -23
  363. package/src/js/components/main-panel/context.tsx +0 -71
  364. package/src/js/components/main-panel/index.tsx +0 -46
  365. package/src/js/components/main-panel/list-toggle-button.jsx +0 -43
  366. package/src/js/components/map-overlay/area.jsx +0 -17
  367. package/src/js/components/map-overlay/attribution-entries.tsx +0 -33
  368. package/src/js/components/map-overlay/attribution.tsx +0 -25
  369. package/src/js/components/map-overlay/combined-buttons.jsx +0 -5
  370. package/src/js/components/map-overlay/index.jsx +0 -5
  371. package/src/js/components/map-overlay/info-overlay-left.jsx +0 -51
  372. package/src/js/components/map-overlay/info-overlay-modal.tsx +0 -49
  373. package/src/js/components/map-overlay/info-overlay-right.jsx +0 -46
  374. package/src/js/components/map-overlay/layer-switcher-overlay.tsx +0 -100
  375. package/src/js/components/map-overlay/legend.tsx +0 -22
  376. package/src/js/components/map-overlay/logo.jsx +0 -11
  377. package/src/js/components/map-overlay/measure-distance-button.tsx +0 -116
  378. package/src/js/components/map-overlay/measure-distance-overlay.jsx +0 -56
  379. package/src/js/components/map-overlay/mini-legend.jsx +0 -103
  380. package/src/js/components/map-overlay/region-selector.jsx +0 -63
  381. package/src/js/components/map-overlay/search-overlay.jsx +0 -79
  382. package/src/js/components/map-overlay/share-position-link-button.tsx +0 -144
  383. package/src/js/components/map-overlay/tool-overlay.tsx +0 -28
  384. package/src/js/components/map-overlay/user-geo-location-button.jsx +0 -89
  385. package/src/js/components/map-overlay/zoom-button.jsx +0 -98
  386. package/src/js/components/map-overlay/zoom-buttons.jsx +0 -26
  387. package/src/js/components/map-synced-interlay/index.ts +0 -15
  388. package/src/js/components/map-synced-interlay/map-synced-interlay.jsx +0 -22
  389. package/src/js/components/map-synced-interlay/tooltip-content.tsx +0 -22
  390. package/src/js/components/map-synced-interlay/tooltip.tsx +0 -199
  391. package/src/js/components/map-wrapper.tsx +0 -65
  392. package/src/js/components/map.tsx +0 -55
  393. package/src/js/components/modal.tsx +0 -40
  394. package/src/js/components/query-input-with-label.tsx +0 -71
  395. package/src/js/components/query-input.tsx +0 -81
  396. package/src/js/components/search/index.jsx +0 -83
  397. package/src/js/components/search/query-input.jsx +0 -20
  398. package/src/js/components/search/result-entry.jsx +0 -63
  399. package/src/js/components/search/result.jsx +0 -71
  400. package/src/js/components/switcher/GroupedSwitcher.jsx +0 -42
  401. package/src/js/components/switcher/Switcher.jsx +0 -54
  402. package/src/js/components/switcher/SwitcherButton.jsx +0 -23
  403. package/src/js/components/switcher/SwitcherEntry.tsx +0 -164
  404. package/src/js/components/switcher/SwitcherHeader.jsx +0 -58
  405. package/src/js/components/switcher/SwitcherStatusIcon.jsx +0 -36
  406. package/src/js/components/tag-switcher/TagSwitcher.tsx +0 -56
  407. package/src/js/components/tag-switcher/createTagSwitcherEntry.ts +0 -39
  408. package/src/js/components/tag-switcher/createTagSwitcherHeader.ts +0 -47
  409. package/src/js/components/tag-switcher/index.ts +0 -17
  410. package/src/js/components/time-filter.jsx +0 -187
  411. package/src/js/components/view-toggle-button/desktop-button.jsx +0 -13
  412. package/src/js/components/view-toggle-button/index.ts +0 -42
  413. package/src/js/components/view-toggle-button/mobile-button.tsx +0 -13
  414. package/src/js/components/view-toggle-button/view-toggle-button.jsx +0 -74
  415. package/src/js/components/view-toggle-button/viewport-button.tsx +0 -13
  416. package/src/js/config/constants/app.ts +0 -16
  417. package/src/js/config/constants/controllers.ts +0 -11
  418. package/src/js/config/feature/selections.ts +0 -13
  419. package/src/js/config/feature/sources.ts +0 -77
  420. package/src/js/config/index.ts +0 -133
  421. package/src/js/config/map/featureInteractions.ts +0 -53
  422. package/src/js/config/map/interactions.ts +0 -15
  423. package/src/js/config/map/layers.ts +0 -190
  424. package/src/js/controllers/defaults.ts +0 -36
  425. package/src/js/embed/browser.ts +0 -89
  426. package/src/js/embed/node.ts +0 -57
  427. package/src/js/filters/tag-filter.ts +0 -135
  428. package/src/js/filters/time-filter.ts +0 -53
  429. package/src/js/helpers/components.ts +0 -66
  430. package/src/js/helpers/create-action-watcher.ts +0 -35
  431. package/src/js/helpers/events.ts +0 -11
  432. package/src/js/helpers/get-feature-property.ts +0 -14
  433. package/src/js/helpers/i18n/de.ts +0 -145
  434. package/src/js/helpers/i18n/en.ts +0 -140
  435. package/src/js/helpers/i18n/index.ts +0 -41
  436. package/src/js/helpers/makeReplaceableComponent.ts +0 -0
  437. package/src/js/helpers/mod-classes.ts +0 -47
  438. package/src/js/helpers/react.ts +0 -14
  439. package/src/js/helpers/scroll-to-element-top.ts +0 -16
  440. package/src/js/helpers/sort-features-by-distance.ts +0 -102
  441. package/src/js/helpers/sticky.js +0 -143
  442. package/src/js/hooks/useCallbackRef.ts +0 -14
  443. package/src/js/hooks/useControllableState.ts +0 -50
  444. package/src/js/hooks/useDebounce.ts +0 -32
  445. package/src/js/hooks/useHandleEscapeKeyDown.ts +0 -27
  446. package/src/js/hooks/useMapsightPanel.ts +0 -40
  447. package/src/js/hooks/useMountable.ts +0 -47
  448. package/src/js/hooks/usePrevious.ts +0 -15
  449. package/src/js/hooks/useStickyHeader.ts +0 -50
  450. package/src/js/hooks/useUpdateMapSizeCallback.ts +0 -32
  451. package/src/js/hooks/useUpdateMapSizeOnRender.ts +0 -16
  452. package/src/js/hooks/useUpdateMapSizeOnTransitionEnd.ts +0 -40
  453. package/src/js/hooks/useUpdateMapSizeOnViewChange.ts +0 -36
  454. package/src/js/index.ts +0 -320
  455. package/src/js/plugins/browser/app-title.ts +0 -36
  456. package/src/js/plugins/browser/debug.ts +0 -37
  457. package/src/js/plugins/browser/feature-deep-link.ts +0 -223
  458. package/src/js/plugins/browser/local-storage.ts +0 -79
  459. package/src/js/plugins/browser/native-fullscreen.ts +0 -81
  460. package/src/js/plugins/browser/no-scroll.ts +0 -91
  461. package/src/js/plugins/browser/partial-content-changed-event.ts +0 -23
  462. package/src/js/plugins/browser/piwik-track-feature-selection-event.ts +0 -75
  463. package/src/js/plugins/browser/piwik-track-fullscreen-toggle-event.ts +0 -46
  464. package/src/js/plugins/browser/search.ts +0 -42
  465. package/src/js/plugins/browser/share-position-link.ts +0 -463
  466. package/src/js/plugins/browser/toggle-mobile-views.ts +0 -60
  467. package/src/js/plugins/browser/user-geolocation.ts +0 -142
  468. package/src/js/plugins/browser/views.ts +0 -141
  469. package/src/js/plugins/browser-defaults.ts +0 -101
  470. package/src/js/plugins/common/feature-selection-details-url.ts +0 -135
  471. package/src/js/plugins/common/lang.ts +0 -17
  472. package/src/js/plugins/common/measure-distance.ts +0 -223
  473. package/src/js/plugins/common/ol-proxy.ts +0 -68
  474. package/src/js/plugins/common/render-await-feature-details-loaded.ts +0 -154
  475. package/src/js/plugins/common/render-await-list-feature-sources-loaded.ts +0 -109
  476. package/src/js/plugins/server/feature-deep-link.ts +0 -67
  477. package/src/js/plugins/server-defaults.ts +0 -36
  478. package/src/js/renderer/browser-dom.tsx +0 -27
  479. package/src/js/renderer/server-string.tsx +0 -17
  480. package/src/js/server-handler.js +0 -39
  481. package/src/js/store/actions.ts +0 -662
  482. package/src/js/store/reducers.ts +0 -491
  483. package/src/js/store/selectors.ts +0 -483
  484. package/src/js/types.ts +0 -405
@@ -1,185 +0,0 @@
1
- import {selectExclusively} from "@mapsight/core/lib/feature-selections/actions";
2
- import {
3
- memo,
4
- useCallback,
5
- useEffect,
6
- useReducer,
7
- useRef,
8
- useState,
9
- } from "react";
10
- import {useDispatch, useSelector} from "react-redux";
11
-
12
- import {VIEW_MAP_ONLY, VIEW_MOBILE} from "../../config/constants/app";
13
- import {FEATURE_SELECTIONS} from "../../config/constants/controllers";
14
- import {FEATURE_SELECTION_SELECT} from "../../config/feature/selections";
15
-
16
- import getFeatureProperty from "../../helpers/get-feature-property";
17
-
18
- import {setView} from "../../store/actions";
19
- import {viewSelector} from "../../store/selectors";
20
-
21
- import {
22
- APP_EVENT_PARTIAL_CONTENT_CHANGED,
23
- useAppChannelDispatchEvent,
24
- } from "../helping/app-channel";
25
-
26
- import FeatureDetailsContentInner from "./feature-details-content-inner";
27
-
28
- import ShareFeatureLinkModal from "./share-feature-link-modal";
29
-
30
- function FeatureDetailsContent({feature, html, hasError, isEmbeddedMap}) {
31
- const dispatch = useDispatch();
32
- const view = useSelector(viewSelector);
33
-
34
- /** @type {React.Ref<Element>} containerElemRef */
35
- const contentContainerElemRef = useRef();
36
- const [partialContentCounter, dispatchPartialContentCounter] = useReducer(
37
- (i) => i + 1,
38
- 0,
39
- );
40
-
41
- const [showShareLinkDialog, setShowShareLinkDialog] = useState(false);
42
-
43
- /** @param {MouseEvent} e event */
44
- const onShareButtonClick = useCallback((e) => {
45
- e.preventDefault();
46
-
47
- if (e.target.getAttribute("href")) {
48
- setShowShareLinkDialog(true);
49
- }
50
- }, []);
51
-
52
- /** @param {MouseEvent} e event */
53
- const onMapButtonClick = useCallback(
54
- (e) => {
55
- e.preventDefault();
56
-
57
- if (view === VIEW_MOBILE && !isEmbeddedMap) {
58
- dispatch(setView(VIEW_MAP_ONLY));
59
- }
60
-
61
- const featureId = e.target.getAttribute("data-ms3-feature");
62
- if (featureId) {
63
- dispatch(
64
- selectExclusively(
65
- FEATURE_SELECTIONS,
66
- FEATURE_SELECTION_SELECT,
67
- featureId,
68
- ),
69
- );
70
- }
71
- },
72
- [dispatch, isEmbeddedMap, view],
73
- );
74
-
75
- /** @param {MouseEvent} _e event */
76
- const onPrintButtonClick = useCallback((_e) => {
77
- const doc = window.document.documentElement;
78
- doc.classList.add("ms3--print-feature-selection-info-only");
79
- window.addEventListener(
80
- "afterprint",
81
- () => {
82
- doc.classList.remove("ms3--print-feature-selection-info-only");
83
- },
84
- {once: true},
85
- );
86
- }, []);
87
-
88
- // binds click handlers to links in containerElem by querying the Dom
89
- // NOTE(PG): We cannot use React JSX event listeners as we need to support external HTML
90
- useEffect(
91
- function handlePartialContentChange() {
92
- const contentContainerElem = contentContainerElemRef.current;
93
- if (!contentContainerElem) {
94
- return undefined;
95
- }
96
-
97
- // links/buttons
98
- const shareLinks = contentContainerElem.querySelectorAll(
99
- ".js-ms3-feature-link--share",
100
- );
101
- shareLinks.forEach((buttonElement) => {
102
- buttonElement.addEventListener("click", onShareButtonClick);
103
- });
104
- const showOnMapLinks = contentContainerElem.querySelectorAll(
105
- ".js-ms3-feature-link--map",
106
- );
107
- showOnMapLinks.forEach((buttonElement) => {
108
- buttonElement.addEventListener("click", onMapButtonClick);
109
- });
110
- const printLinks = contentContainerElem.querySelectorAll(
111
- ".js-ms3-feature-link--print",
112
- );
113
- printLinks.forEach((buttonElement) => {
114
- buttonElement.addEventListener("click", onPrintButtonClick);
115
- });
116
-
117
- return () => {
118
- shareLinks.forEach((buttonElement) => {
119
- buttonElement.removeEventListener(
120
- "click",
121
- onShareButtonClick,
122
- );
123
- });
124
- showOnMapLinks.forEach((buttonElement) => {
125
- buttonElement.removeEventListener(
126
- "click",
127
- onMapButtonClick,
128
- );
129
- });
130
- printLinks.forEach((buttonElement) => {
131
- buttonElement.removeEventListener(
132
- "click",
133
- onPrintButtonClick,
134
- );
135
- });
136
- };
137
- },
138
- [
139
- partialContentCounter,
140
- onShareButtonClick,
141
- onMapButtonClick,
142
- onPrintButtonClick,
143
- ],
144
- );
145
-
146
- const dispatchAppChannelEvent = useAppChannelDispatchEvent();
147
-
148
- /**
149
- * @param {Element} nextContentContainerElem container
150
- */
151
- const handleContentChange = useCallback(
152
- (nextContentContainerElem) => {
153
- dispatchAppChannelEvent(
154
- new CustomEvent(APP_EVENT_PARTIAL_CONTENT_CHANGED),
155
- );
156
- contentContainerElemRef.current = nextContentContainerElem;
157
- dispatchPartialContentCounter({});
158
- },
159
- [dispatchAppChannelEvent],
160
- );
161
-
162
- const closeShareLinkDialog = useCallback(() => {
163
- setShowShareLinkDialog(false);
164
- }, [setShowShareLinkDialog]);
165
-
166
- return (
167
- <div>
168
- <FeatureDetailsContentInner
169
- feature={feature}
170
- url={getFeatureProperty(feature, "detailsUrl")}
171
- html={html}
172
- hasError={hasError}
173
- handleContentChange={handleContentChange}
174
- />
175
-
176
- <ShareFeatureLinkModal
177
- feature={feature}
178
- isOpen={showShareLinkDialog}
179
- onRequestClose={closeShareLinkDialog}
180
- />
181
- </div>
182
- );
183
- }
184
-
185
- export default memo(FeatureDetailsContent);
@@ -1,16 +0,0 @@
1
- import {connect} from "react-redux";
2
-
3
- import {
4
- featureDetailsHasErrorSelector,
5
- featureDetailsHtmlSelector,
6
- isEmbeddedMapSelector,
7
- viewSelector,
8
- } from "../../store/selectors";
9
- import FeatureDetailsContent from "./feature-details-content";
10
-
11
- export default connect((state) => ({
12
- view: viewSelector(state),
13
- isEmbeddedMap: isEmbeddedMapSelector(state),
14
- hasError: featureDetailsHasErrorSelector(state),
15
- html: featureDetailsHtmlSelector(state),
16
- }))(FeatureDetailsContent);
@@ -1,56 +0,0 @@
1
- import {memo} from "react";
2
- import ReactModal from "react-modal";
3
-
4
- import getFeatureProperty from "../../helpers/get-feature-property";
5
- import {translate} from "../../helpers/i18n";
6
-
7
- const selectInputContent = (e) =>
8
- e.target.setSelectionRange(0, e.target.value.length);
9
-
10
-
11
-
12
- /* NOTE: we use a wrapping label around the input element which is fine a11y as well. */
13
- function ShareFeatureLinkModal({isOpen, onRequestClose, feature}) {
14
- return (
15
- <ReactModal
16
- isOpen={isOpen}
17
- // contentLabel="onRequestClose Example" // aria-label="" on .ms3-modal
18
- onRequestClose={onRequestClose}
19
- className="ms3-modal"
20
- overlayClassName="ms3-app-overlay"
21
- shouldCloseOnOverlayClick={true}
22
- >
23
- <div className="ms3-modal__inner">
24
- <div className="ms3-share-link">
25
- <h3 className="ms3-share-link__head">
26
- {translate("ui.feature-details.share-link.head")}
27
- </h3>
28
-
29
- <label className="ms3-share-link__label">
30
- {translate("ui.feature-details.share-link.place")}
31
- <br />
32
-
33
- <input
34
- className="ms3-share-link__input"
35
- value={getFeatureProperty(feature, "permanentLink")}
36
- onClick={selectInputContent}
37
- readOnly={true}
38
- />
39
- </label>
40
- </div>
41
-
42
- <button
43
- className="ms3-dialog-close-button"
44
- type="button"
45
- onClick={onRequestClose}
46
- >
47
- <span className="ms3-visuallyhidden">
48
- {translate("ui.feature-details.share-link.close")}
49
- </span>
50
- </button>
51
- </div>
52
- </ReactModal>
53
- );
54
- }
55
-
56
- export default memo(ShareFeatureLinkModal);
@@ -1,42 +0,0 @@
1
- import {forwardRef, memo} from "react";
2
-
3
- import FeatureListEmptyMessage from "./empty-message";
4
-
5
- const FeatureListContent = memo(
6
- forwardRef(function FeatureListContent(props, ref) {
7
- const {
8
- status,
9
- children,
10
- showFeatureListInfo: _showFeatureListInfo,
11
- as: T = "div",
12
- emptyAs,
13
- featureSourceId,
14
- ...attributes
15
- } = props;
16
- let content = children;
17
- if (!content) {
18
- const hasSource =
19
- featureSourceId !== null &&
20
- featureSourceId !== undefined &&
21
- featureSourceId !== "";
22
- content = (
23
- <FeatureListEmptyMessage as={emptyAs} hasSource={hasSource} />
24
- );
25
- }
26
-
27
- const statusClass = status ? " ms3-list--status-" + status : "";
28
- return (
29
- <T
30
- ref={ref}
31
- className={`[ ms3-list ms3-list--features ${statusClass} ] ${
32
- attributes.className || ""
33
- }`}
34
- {...attributes}
35
- >
36
- {content}
37
- </T>
38
- );
39
- }),
40
- );
41
-
42
- export default FeatureListContent;
@@ -1,47 +0,0 @@
1
- import type {PropsWithChildren} from "react";
2
- import {createContext, useContext} from "react";
3
-
4
- import type {
5
- FullUiState,
6
- MapsightUiFeatureId,
7
- SelectFeatureActionOptions,
8
- } from "../../types";
9
- import type {FeatureListStateProps} from "./hooks/useFeatureListState";
10
-
11
- export type FeatureListContextValue = {
12
- state: Omit<FeatureListStateProps, "listUiOptions">;
13
- listUiOptions: Partial<FullUiState["list"]>;
14
- enableKeyboardControl: boolean;
15
- showFeatureListInfo: boolean;
16
- selectFeature: (
17
- featureId: MapsightUiFeatureId,
18
- options: SelectFeatureActionOptions,
19
- ) => void;
20
- deselectFeature: (
21
- featureId: MapsightUiFeatureId,
22
- options: SelectFeatureActionOptions,
23
- ) => void;
24
- };
25
-
26
- const FeatureListContext = createContext<FeatureListContextValue | null>(null);
27
- FeatureListContext.displayName = "FeatureListContext";
28
-
29
- export const FeatureListContextProvider = ({
30
- value,
31
- children,
32
- }: PropsWithChildren<{
33
- value: FeatureListContextValue;
34
- }>) => (
35
- <FeatureListContext.Provider value={value}>
36
- {children}
37
- </FeatureListContext.Provider>
38
- );
39
-
40
- export const useFeatureListContext = () => {
41
- const value = useContext(FeatureListContext);
42
- if (value === null) {
43
- throw new Error("FeatureListContext is not provided");
44
- }
45
-
46
- return value;
47
- };
@@ -1,15 +0,0 @@
1
- import {translate} from "../../helpers/i18n";
2
-
3
- function FeatureListEmptyMessage({hasSource, as: T = "div", ...attributes}) {
4
- const emptyMessage = hasSource
5
- ? translate("ui.feature-list.content.noEntries")
6
- : translate("ui.feature-list.content.noListSelected");
7
-
8
- return (
9
- <T className="ms3-list__empty" {...attributes}>
10
- {emptyMessage}
11
- </T>
12
- );
13
- }
14
-
15
- export default FeatureListEmptyMessage;
@@ -1,35 +0,0 @@
1
- import {memo, useEffect, useState} from "react";
2
- import {useDispatch, useSelector} from "react-redux";
3
- import useDebounce from "../../hooks/useDebounce";
4
-
5
- import {filterListQuery} from "../../store/actions";
6
- import {listQuerySelector} from "../../store/selectors";
7
-
8
- import FeaturesQueryInput from "./query-input";
9
-
10
- function FeatureFilter() {
11
- const dispatch = useDispatch();
12
-
13
- const [input, setInput] = useState(useSelector(listQuerySelector));
14
- const debouncedInput = useDebounce(input, 200);
15
- useEffect(() => {
16
- if (debouncedInput !== "") {
17
- dispatch(filterListQuery(debouncedInput));
18
- }
19
- }, [dispatch, debouncedInput]);
20
-
21
- // needed to "override" debounce if the value is ""
22
- useEffect(() => {
23
- if (input === "") {
24
- dispatch(filterListQuery(""));
25
- }
26
- }, [dispatch, input]);
27
-
28
- return (
29
- <div className="ms3-list__filter-box">
30
- <FeaturesQueryInput query={input} onChange={setInput} />
31
- </div>
32
- );
33
- }
34
-
35
- export default memo(FeatureFilter);
@@ -1,5 +0,0 @@
1
- function FeatureListFooter({as: T = "div", ...attributes}) {
2
- return <T className="ms3-list-footer" {...attributes} />;
3
- }
4
-
5
- export default FeatureListFooter;
@@ -1,74 +0,0 @@
1
- import {forwardRef, Fragment, memo, useRef} from "react";
2
-
3
- import FeatureListContent from "./content";
4
- import {useFeatureListContext} from "./context";
5
- import useFeatureListItemGroups from "./hooks/useFeatureListItemGroups";
6
- import useKeyboardNavigation from "./hooks/useKeyboardNavigation";
7
-
8
- function FeatureListGroupedContent(
9
- {as: T = "div", groupAs = null, itemAs, ...listProps},
10
- forwardedRef,
11
- ) {
12
- const ownRef = useRef();
13
- const ref = forwardedRef || ownRef;
14
-
15
- const {
16
- state: {filteredFeatures: features = []},
17
- itemProps,
18
- enableKeyboardControl,
19
- } = useFeatureListContext();
20
- const rootProps = {
21
- ...useKeyboardNavigation(enableKeyboardControl, ref),
22
- ref: ref,
23
- };
24
-
25
- listProps.emptyAs = itemProps.as;
26
-
27
- // we have to separate calculation of items from wrapping them,
28
- // as the outer tags depend on restProps, and we do not want to recreate list items on changes to restProps.
29
- const itemGroups = useFeatureListItemGroups(
30
- groupAs,
31
- features,
32
- itemAs,
33
- itemProps,
34
- );
35
-
36
- if (!features.length) {
37
- return <FeatureListContent {...listProps} {...rootProps} />;
38
- }
39
-
40
- if (itemGroups.groups) {
41
- const GroupNameT = groupAs;
42
-
43
- return (
44
- <T className="ms3-list-groups ms3-scroll-target" {...rootProps}>
45
- {itemGroups.groups.map(function composeGroup(group, index) {
46
- return (
47
- <Fragment key={group.name}>
48
- {group.name ? (
49
- <GroupNameT className="ms3-list__group ms3-list__group--name">
50
- {group.name}
51
- </GroupNameT>
52
- ) : null}
53
-
54
- <FeatureListContent
55
- data-ms3-group-name={group.name}
56
- {...listProps}
57
- >
58
- {itemGroups.items[index]}
59
- </FeatureListContent>
60
- </Fragment>
61
- );
62
- })}
63
- </T>
64
- );
65
- }
66
-
67
- return (
68
- <FeatureListContent {...listProps} {...rootProps}>
69
- {itemGroups.items[0]}
70
- </FeatureListContent>
71
- );
72
- }
73
-
74
- export default memo(forwardRef(FeatureListGroupedContent));
@@ -1,7 +0,0 @@
1
- import {forwardRef} from "react";
2
-
3
- function FeatureListHeader({as: T = "div", ...attributes}, ref) {
4
- return <T className="ms3-list-header" ref={ref} {...attributes} />;
5
- }
6
-
7
- export default forwardRef(FeatureListHeader);
@@ -1,25 +0,0 @@
1
- import {useEffect} from "react";
2
- import {useDispatch} from "react-redux";
3
-
4
- import type {AnyAction} from "@reduxjs/toolkit";
5
-
6
- import {async} from "@mapsight/core/lib/base/actions";
7
- import {load} from "@mapsight/core/lib/feature-sources/actions";
8
-
9
- import {FEATURE_SOURCES} from "../../../config/constants/controllers";
10
-
11
- export default function useAutoloadFeatureSource(
12
- enabled = false,
13
- featureSourceId?: string,
14
- ) {
15
- const dispatch = useDispatch();
16
- useEffect(() => {
17
- if (enabled && featureSourceId) {
18
- dispatch(
19
- async(
20
- load(FEATURE_SOURCES, featureSourceId),
21
- ) as unknown as AnyAction,
22
- );
23
- }
24
- }, [enabled, featureSourceId, dispatch]);
25
- }
@@ -1,22 +0,0 @@
1
- import {useMemo} from "react";
2
- import {useSelector} from "react-redux";
3
-
4
- import type {FeatureSourceState} from "@mapsight/core/lib/feature-sources/types";
5
-
6
- import {FEATURE_LIST} from "../../../config/constants/controllers";
7
- import {createFeatureSourceSelector} from "../../../store/selectors";
8
-
9
- // TODO: type out feature source state (probably in @mapsight/core)
10
- /**
11
- * @param {string} listControllerName listControllerName
12
- * @returns {{featureSource: object, featureSourceId: string}} featureSource
13
- */
14
- export default function useFeatureListFeatureSource(
15
- listControllerName = FEATURE_LIST,
16
- ): {featureSourceId?: string; featureSource?: FeatureSourceState} {
17
- const selector = useMemo(
18
- () => createFeatureSourceSelector(listControllerName),
19
- [listControllerName],
20
- );
21
- return useSelector(selector);
22
- }
@@ -1,127 +0,0 @@
1
- import type {ComponentType, ElementType, ReactElement} from "react";
2
- import {createElement, useMemo} from "react";
3
-
4
- import type {Feature} from "@mapsight/core/types";
5
-
6
- import getFeatureProperty from "../../../helpers/get-feature-property";
7
- import type {MapsightUiFeature} from "../../../types";
8
- import FeatureListItem from "../../feature-list-item";
9
-
10
- export interface MapsightUiListGroup {
11
- name: string;
12
- features: Feature[];
13
- }
14
-
15
- function determineFeatureGroups(
16
- features: MapsightUiFeature[],
17
- ): MapsightUiListGroup[] {
18
- const groups: MapsightUiListGroup[] = [];
19
-
20
- const defaultGroup = createGroup("");
21
- groups[0] = defaultGroup;
22
-
23
- features.forEach((feature) => {
24
- const featureGroupName = getFeatureProperty(feature, "group") as string;
25
-
26
- if (!featureGroupName) {
27
- defaultGroup.features.push(feature);
28
- } else {
29
- // find group and add feature to it
30
- let group = findGroup(groups, featureGroupName);
31
- if (!group) {
32
- group = createGroup(featureGroupName);
33
- groups.push(group);
34
- }
35
- group.features.push(feature);
36
- }
37
- });
38
-
39
- // reset if no groups found in data
40
- // TODO discuss with paul, if we should show an empty header for the group without name and
41
- // if to show that even if there's no other group
42
- if (groups.length === 1) {
43
- return [];
44
- }
45
-
46
- // remove default group if there are no features left
47
- if (!groups[0].features.length) {
48
- groups.shift();
49
- }
50
-
51
- return groups;
52
- }
53
-
54
- function createGroup(name: string): MapsightUiListGroup {
55
- return {name: name, features: []};
56
- }
57
-
58
- function findGroup(
59
- groups: MapsightUiListGroup[],
60
- name: string,
61
- ): undefined | MapsightUiListGroup {
62
- return groups.find((g) => g.name === name);
63
- }
64
-
65
- const renderItems = (
66
- features: Feature[],
67
- as: ComponentType<{feature: Feature}>,
68
- itemProps: Record<string, unknown>,
69
- ) => {
70
- const Component = typeof as === "string" ? FeatureListItem : as;
71
- return features.map((feature) =>
72
- createElement(Component, {
73
- ...itemProps,
74
- key: feature.id,
75
- feature: feature,
76
- }),
77
- );
78
- };
79
-
80
- export type ItemGroups = {
81
- groups: null | MapsightUiListGroup[];
82
- items: Array<Array<ReactElement>>;
83
- };
84
-
85
- function calcAndRenderGroupedFeatureItems(
86
- enableGrouping: boolean,
87
- features: MapsightUiFeature[],
88
- itemAs: ComponentType<{feature: Feature}>,
89
- itemProps: Record<string, unknown>,
90
- ): ItemGroups {
91
- if (enableGrouping && features.length) {
92
- const groups = determineFeatureGroups(features);
93
- if (groups && groups.length) {
94
- return {
95
- groups: groups,
96
- items: groups.map((group) =>
97
- renderItems(group.features, itemAs, itemProps),
98
- ),
99
- };
100
- }
101
- }
102
-
103
- return {
104
- groups: null,
105
- items: features.length
106
- ? [renderItems(features, itemAs, itemProps)]
107
- : [],
108
- };
109
- }
110
-
111
- export default function useFeatureListItemGroups(
112
- groupAs: ElementType,
113
- features: MapsightUiFeature[],
114
- itemAs: ComponentType<{feature: Feature}>,
115
- itemProps: Record<string, unknown>,
116
- ): ItemGroups {
117
- return useMemo(
118
- () =>
119
- calcAndRenderGroupedFeatureItems(
120
- !!groupAs,
121
- features,
122
- itemAs,
123
- itemProps,
124
- ),
125
- [groupAs, features, itemAs, itemProps],
126
- );
127
- }