@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.
- package/README.md +95 -2
- package/dist/components/app.d.ts +1 -1
- package/dist/components/app.d.ts.map +1 -1
- package/dist/components/feature-details-content/feature-details-content.d.ts +1 -1
- package/dist/components/feature-details-content/feature-details-content.d.ts.map +1 -1
- package/dist/components/feature-details-content/index.d.ts +1 -1
- package/dist/components/feature-details-content/share-feature-link-modal.d.ts +1 -1
- package/dist/components/feature-details-content/share-feature-link-modal.d.ts.map +1 -1
- package/dist/components/feature-list/context.d.ts +12 -4
- package/dist/components/feature-list/context.d.ts.map +1 -1
- package/dist/components/feature-list/context.js.map +1 -1
- package/dist/components/feature-list/empty-message.d.ts +1 -1
- package/dist/components/feature-list/empty-message.d.ts.map +1 -1
- package/dist/components/feature-list/filter.d.ts +1 -1
- package/dist/components/feature-list/filter.d.ts.map +1 -1
- package/dist/components/feature-list/footer.d.ts +1 -1
- package/dist/components/feature-list/footer.d.ts.map +1 -1
- package/dist/components/feature-list/hooks/useAutoloadFeatureSource.d.ts.map +1 -1
- package/dist/components/feature-list/hooks/useAutoloadFeatureSource.js +12 -3
- package/dist/components/feature-list/hooks/useAutoloadFeatureSource.js.map +1 -1
- package/dist/components/feature-list/hooks/useFeatureListItemGroups.js +1 -1
- package/dist/components/feature-list/hooks/useFeatureListItemGroups.js.map +1 -1
- package/dist/components/feature-list/index.d.ts +3 -2
- package/dist/components/feature-list/index.d.ts.map +1 -1
- package/dist/components/feature-list/index.js +33 -42
- package/dist/components/feature-list/index.js.map +1 -1
- package/dist/components/feature-list/layer-switcher-control.d.ts +4 -0
- package/dist/components/feature-list/layer-switcher-control.d.ts.map +1 -0
- package/dist/components/feature-list/layer-switcher-control.js +11 -0
- package/dist/components/feature-list/layer-switcher-control.js.map +1 -0
- package/dist/components/feature-list/pagination.d.ts +1 -1
- package/dist/components/feature-list/pagination.d.ts.map +1 -1
- package/dist/components/feature-list/query-input.d.ts +1 -1
- package/dist/components/feature-list/query-input.d.ts.map +1 -1
- package/dist/components/feature-list/tag-switcher-control.d.ts +4 -0
- package/dist/components/feature-list/tag-switcher-control.d.ts.map +1 -0
- package/dist/components/feature-list/tag-switcher-control.js +10 -0
- package/dist/components/feature-list/tag-switcher-control.js.map +1 -0
- package/dist/components/feature-list-cycling/button.d.ts +1 -1
- package/dist/components/feature-list-cycling/button.d.ts.map +1 -1
- package/dist/components/feature-list-cycling/dot.d.ts +1 -1
- package/dist/components/feature-list-cycling/dot.d.ts.map +1 -1
- package/dist/components/feature-list-cycling/feature-list-cycling.d.ts +1 -1
- package/dist/components/feature-list-cycling/feature-list-cycling.d.ts.map +1 -1
- package/dist/components/feature-list-cycling/index.d.ts +1 -1
- package/dist/components/feature-list-item/icon.d.ts +8 -6
- package/dist/components/feature-list-item/icon.d.ts.map +1 -1
- package/dist/components/feature-list-item/icon.js +5 -13
- package/dist/components/feature-list-item/icon.js.map +1 -1
- package/dist/components/feature-list-item/index.d.ts +1 -1
- package/dist/components/feature-list-item/index.d.ts.map +1 -1
- package/dist/components/feature-list-sorting/feature-list-sorting.d.ts +1 -1
- package/dist/components/feature-list-sorting/feature-list-sorting.d.ts.map +1 -1
- package/dist/components/feature-list-sorting/feature-list-sorting.js +3 -12
- package/dist/components/feature-list-sorting/feature-list-sorting.js.map +1 -1
- package/dist/components/feature-list-sorting/index.d.ts +1 -1
- package/dist/components/feature-list-sorting/status-indicator.d.ts +1 -1
- package/dist/components/feature-list-sorting/status-indicator.d.ts.map +1 -1
- package/dist/components/feature-select-button.d.ts +1 -1
- package/dist/components/feature-select-button.d.ts.map +1 -1
- package/dist/components/feature-selection-info/close-button.d.ts +1 -1
- package/dist/components/feature-selection-info/close-button.d.ts.map +1 -1
- package/dist/components/feature-selection-info/container.d.ts +1 -1
- package/dist/components/feature-selection-info/container.d.ts.map +1 -1
- package/dist/components/feature-selection-info/header.d.ts +1 -1
- package/dist/components/feature-selection-info/header.d.ts.map +1 -1
- package/dist/components/feature-selection-info/index.d.ts +1 -1
- package/dist/components/feature-selection-info/index.d.ts.map +1 -1
- package/dist/components/feature-selection-info/with-sticky-header.d.ts +1 -1
- package/dist/components/feature-selection-info/with-sticky-header.d.ts.map +1 -1
- package/dist/components/feature-selection-info/without-sticky-header.d.ts +1 -1
- package/dist/components/feature-selection-info/without-sticky-header.d.ts.map +1 -1
- package/dist/components/filter-toggle-control/FilterToggleControl.d.ts +12 -0
- package/dist/components/filter-toggle-control/FilterToggleControl.d.ts.map +1 -0
- package/dist/components/filter-toggle-control/FilterToggleControl.js +20 -0
- package/dist/components/filter-toggle-control/FilterToggleControl.js.map +1 -0
- package/dist/components/helping/app-channel.d.ts +1 -1
- package/dist/components/helping/app-channel.d.ts.map +1 -1
- package/dist/components/helping/app-context.d.ts +1 -1
- package/dist/components/helping/app-context.d.ts.map +1 -1
- package/dist/components/instance.d.ts +1 -1
- package/dist/components/instance.d.ts.map +1 -1
- package/dist/components/layer-switcher/GroupedLayerSwitcher.d.ts +1 -1
- package/dist/components/layer-switcher/LayerSwitcher.d.ts +1 -1
- package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts +4 -2
- package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts.map +1 -1
- package/dist/components/layer-switcher/LayerSwitcherContainer.js +10 -4
- package/dist/components/layer-switcher/LayerSwitcherContainer.js.map +1 -1
- package/dist/components/layer-switcher/LayerSwitcherEntry.d.ts +1 -1
- package/dist/components/layer-switcher/SplitBaseLayerSwitcher.d.ts +26 -0
- package/dist/components/layer-switcher/SplitBaseLayerSwitcher.d.ts.map +1 -0
- package/dist/components/layer-switcher/SplitBaseLayerSwitcher.js +48 -0
- package/dist/components/layer-switcher/SplitBaseLayerSwitcher.js.map +1 -0
- package/dist/components/layer-switcher/index.d.ts +1 -1
- package/dist/components/layer-switcher/index.d.ts.map +1 -1
- package/dist/components/layer-switcher/index.js +1 -0
- package/dist/components/layer-switcher/index.js.map +1 -1
- package/dist/components/layout/additional-container/content.d.ts +1 -1
- package/dist/components/layout/additional-container/content.d.ts.map +1 -1
- package/dist/components/layout/additional-container/index.d.ts +1 -1
- package/dist/components/layout/additional-container/index.d.ts.map +1 -1
- package/dist/components/layout/additional-container/marginal.d.ts +1 -1
- package/dist/components/layout/additional-container/marginal.d.ts.map +1 -1
- package/dist/components/layout/main-container.d.ts +1 -1
- package/dist/components/layout/main-container.d.ts.map +1 -1
- package/dist/components/layout/map-row.d.ts +1 -1
- package/dist/components/layout/map-row.d.ts.map +1 -1
- package/dist/components/layout/title-bar.d.ts +1 -1
- package/dist/components/layout/title-bar.d.ts.map +1 -1
- package/dist/components/layout/wrapper.d.ts +1 -1
- package/dist/components/layout/wrapper.d.ts.map +1 -1
- package/dist/components/link-share.d.ts +1 -1
- package/dist/components/link-share.d.ts.map +1 -1
- package/dist/components/main-panel/container.d.ts +1 -1
- package/dist/components/main-panel/container.d.ts.map +1 -1
- package/dist/components/main-panel/context.d.ts +1 -1
- package/dist/components/main-panel/context.d.ts.map +1 -1
- package/dist/components/main-panel/index.d.ts +1 -1
- package/dist/components/main-panel/index.d.ts.map +1 -1
- package/dist/components/main-panel/list-toggle-button.d.ts +1 -1
- package/dist/components/main-panel/list-toggle-button.d.ts.map +1 -1
- package/dist/components/map-overlay/attribution-entries.d.ts +1 -1
- package/dist/components/map-overlay/attribution-entries.d.ts.map +1 -1
- package/dist/components/map-overlay/attribution.d.ts +1 -1
- package/dist/components/map-overlay/attribution.d.ts.map +1 -1
- package/dist/components/map-overlay/combined-buttons.d.ts +1 -1
- package/dist/components/map-overlay/combined-buttons.d.ts.map +1 -1
- package/dist/components/map-overlay/index.d.ts +1 -1
- package/dist/components/map-overlay/index.d.ts.map +1 -1
- package/dist/components/map-overlay/info-overlay-left.d.ts +1 -1
- package/dist/components/map-overlay/info-overlay-left.d.ts.map +1 -1
- package/dist/components/map-overlay/info-overlay-modal.d.ts +1 -1
- package/dist/components/map-overlay/info-overlay-modal.d.ts.map +1 -1
- package/dist/components/map-overlay/info-overlay-right.d.ts +1 -1
- package/dist/components/map-overlay/info-overlay-right.d.ts.map +1 -1
- package/dist/components/map-overlay/layer-switcher-overlay.d.ts +1 -1
- package/dist/components/map-overlay/layer-switcher-overlay.d.ts.map +1 -1
- package/dist/components/map-overlay/legend.d.ts +1 -1
- package/dist/components/map-overlay/legend.d.ts.map +1 -1
- package/dist/components/map-overlay/logo.d.ts +1 -1
- package/dist/components/map-overlay/logo.d.ts.map +1 -1
- package/dist/components/map-overlay/measure-distance-button.d.ts +1 -1
- package/dist/components/map-overlay/measure-distance-button.d.ts.map +1 -1
- package/dist/components/map-overlay/measure-distance-overlay.d.ts +1 -1
- package/dist/components/map-overlay/measure-distance-overlay.d.ts.map +1 -1
- package/dist/components/map-overlay/search-overlay.d.ts +1 -1
- package/dist/components/map-overlay/search-overlay.d.ts.map +1 -1
- package/dist/components/map-overlay/share-position-link-button.d.ts +1 -1
- package/dist/components/map-overlay/share-position-link-button.d.ts.map +1 -1
- package/dist/components/map-overlay/tool-overlay.d.ts +1 -1
- package/dist/components/map-overlay/tool-overlay.d.ts.map +1 -1
- package/dist/components/map-overlay/zoom-buttons.d.ts +1 -1
- package/dist/components/map-overlay/zoom-buttons.d.ts.map +1 -1
- package/dist/components/map-synced-interlay/index.d.ts +1 -1
- package/dist/components/map-synced-interlay/map-synced-interlay.d.ts +1 -1
- package/dist/components/map-synced-interlay/map-synced-interlay.d.ts.map +1 -1
- package/dist/components/map-synced-interlay/tooltip.d.ts +1 -1
- package/dist/components/map-synced-interlay/tooltip.d.ts.map +1 -1
- package/dist/components/map-wrapper.d.ts +3 -3
- package/dist/components/map-wrapper.d.ts.map +1 -1
- package/dist/components/map-wrapper.js +4 -7
- package/dist/components/map-wrapper.js.map +1 -1
- package/dist/components/map.d.ts +1 -1
- package/dist/components/map.d.ts.map +1 -1
- package/dist/components/mapsight-icon/mapsight-icon.d.ts +10 -0
- package/dist/components/mapsight-icon/mapsight-icon.d.ts.map +1 -0
- package/dist/components/mapsight-icon/mapsight-icon.js +33 -0
- package/dist/components/mapsight-icon/mapsight-icon.js.map +1 -0
- package/dist/components/modal.d.ts +1 -1
- package/dist/components/modal.d.ts.map +1 -1
- package/dist/components/query-input-with-label.d.ts +1 -1
- package/dist/components/query-input-with-label.d.ts.map +1 -1
- package/dist/components/search/index.d.ts +1 -1
- package/dist/components/search/index.d.ts.map +1 -1
- package/dist/components/search/result-entry.d.ts +1 -1
- package/dist/components/search/result-entry.d.ts.map +1 -1
- package/dist/components/search/result.d.ts +1 -1
- package/dist/components/search/result.d.ts.map +1 -1
- package/dist/components/switcher/GroupedSwitcher.d.ts +1 -1
- package/dist/components/switcher/GroupedSwitcher.d.ts.map +1 -1
- package/dist/components/switcher/Switcher.d.ts +1 -1
- package/dist/components/switcher/Switcher.d.ts.map +1 -1
- package/dist/components/switcher/SwitcherButton.d.ts +1 -1
- package/dist/components/switcher/SwitcherButton.d.ts.map +1 -1
- package/dist/components/switcher/SwitcherEntry.d.ts +1 -1
- package/dist/components/switcher/SwitcherEntry.d.ts.map +1 -1
- package/dist/components/switcher/SwitcherHeader.d.ts +1 -1
- package/dist/components/switcher/SwitcherHeader.d.ts.map +1 -1
- package/dist/components/switcher/SwitcherStatusIcon.d.ts +1 -1
- package/dist/components/switcher/SwitcherStatusIcon.d.ts.map +1 -1
- package/dist/components/tag-switcher/TagSwitcher.d.ts +1 -1
- package/dist/components/tag-switcher/TagSwitcher.d.ts.map +1 -1
- package/dist/components/tag-switcher/createTagSwitcherEntry.d.ts +1 -1
- package/dist/components/tag-switcher/createTagSwitcherHeader.d.ts +1 -1
- package/dist/components/tag-switcher/index.d.ts +1 -1
- package/dist/components/time-filter.d.ts +1 -1
- package/dist/components/time-filter.d.ts.map +1 -1
- package/dist/components/view-toggle-button/desktop-button.d.ts +1 -1
- package/dist/components/view-toggle-button/desktop-button.d.ts.map +1 -1
- package/dist/components/view-toggle-button/index.d.ts +1 -1
- package/dist/components/view-toggle-button/mobile-button.d.ts +1 -1
- package/dist/components/view-toggle-button/mobile-button.d.ts.map +1 -1
- package/dist/components/view-toggle-button/view-toggle-button.d.ts +1 -1
- package/dist/components/view-toggle-button/view-toggle-button.d.ts.map +1 -1
- package/dist/components/view-toggle-button/viewport-button.d.ts +1 -1
- package/dist/components/view-toggle-button/viewport-button.d.ts.map +1 -1
- package/dist/config/feature/sources.d.ts +8 -5
- package/dist/config/feature/sources.d.ts.map +1 -1
- package/dist/config/feature/sources.js +7 -9
- package/dist/config/feature/sources.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/map/featureInteractions.js.map +1 -1
- package/dist/config/map/layers.d.ts +16 -13
- package/dist/config/map/layers.d.ts.map +1 -1
- package/dist/config/map/layers.js.map +1 -1
- package/dist/config/schema/index.d.ts +197 -0
- package/dist/config/schema/index.d.ts.map +1 -0
- package/dist/config/schema/index.js +26 -0
- package/dist/config/schema/index.js.map +1 -0
- package/dist/config/schema/validate.d.ts +8 -0
- package/dist/config/schema/validate.d.ts.map +1 -0
- package/dist/config/schema/validate.js +7 -0
- package/dist/config/schema/validate.js.map +1 -0
- package/dist/controllers/defaults.d.ts.map +1 -1
- package/dist/controllers/defaults.js +5 -0
- package/dist/controllers/defaults.js.map +1 -1
- package/dist/filters/tag-filter.d.ts +7 -0
- package/dist/filters/tag-filter.d.ts.map +1 -1
- package/dist/filters/tag-filter.js +10 -0
- package/dist/filters/tag-filter.js.map +1 -1
- package/dist/filters/time-filter.d.ts +9 -0
- package/dist/filters/time-filter.d.ts.map +1 -1
- package/dist/filters/time-filter.js +10 -0
- package/dist/filters/time-filter.js.map +1 -1
- package/dist/helpers/i18n/de.d.ts.map +1 -1
- package/dist/helpers/i18n/de.js +3 -0
- package/dist/helpers/i18n/de.js.map +1 -1
- package/dist/helpers/i18n/en.d.ts.map +1 -1
- package/dist/helpers/i18n/en.js +3 -0
- package/dist/helpers/i18n/en.js.map +1 -1
- package/dist/helpers/sort-features-by-distance.d.ts +2 -7
- package/dist/helpers/sort-features-by-distance.d.ts.map +1 -1
- package/dist/helpers/sort-features-by-distance.js +27 -39
- package/dist/helpers/sort-features-by-distance.js.map +1 -1
- package/dist/hooks/useMapsightIcon.d.ts +8 -0
- package/dist/hooks/useMapsightIcon.d.ts.map +1 -0
- package/dist/hooks/useMapsightIcon.js +50 -0
- package/dist/hooks/useMapsightIcon.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/plugins/browser-defaults.d.ts +2 -0
- package/dist/plugins/browser-defaults.d.ts.map +1 -1
- package/dist/plugins/browser-defaults.js +5 -0
- package/dist/plugins/browser-defaults.js.map +1 -1
- package/dist/plugins/common/combined-visible-layers.d.ts +15 -0
- package/dist/plugins/common/combined-visible-layers.d.ts.map +1 -0
- package/dist/plugins/common/combined-visible-layers.js +63 -0
- package/dist/plugins/common/combined-visible-layers.js.map +1 -0
- package/dist/plugins/common/runtime-icon-style.d.ts +12 -0
- package/dist/plugins/common/runtime-icon-style.d.ts.map +1 -0
- package/dist/plugins/common/runtime-icon-style.js +58 -0
- package/dist/plugins/common/runtime-icon-style.js.map +1 -0
- package/dist/react-modal-app-element.d.ts +6 -0
- package/dist/react-modal-app-element.d.ts.map +1 -0
- package/dist/react-modal-app-element.js +9 -0
- package/dist/react-modal-app-element.js.map +1 -0
- package/dist/store/actions.d.ts.map +1 -1
- package/dist/store/actions.js +6 -1
- package/dist/store/actions.js.map +1 -1
- package/dist/store/reducers.d.ts +75 -6
- package/dist/store/reducers.d.ts.map +1 -1
- package/dist/store/selectors.d.ts +75 -17
- package/dist/store/selectors.d.ts.map +1 -1
- package/dist/store/selectors.js +9 -1
- package/dist/store/selectors.js.map +1 -1
- package/dist/types.d.ts +21 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +24 -8
- package/src/scss/blocks/_features-sorting.scss +0 -13
- package/src/scss/blocks/_filter-button.scss +39 -8
- package/src/scss/blocks/_filter-toggle-control.scss +15 -0
- package/src/scss/default.scss +1 -0
- package/src/scss/themes/2022-03.scss +66 -0
- package/src/img/mapsight-ui/check-empty.svg +0 -1
- package/src/img/mapsight-ui/check.svg +0 -2
- package/src/img/mapsight-ui/close-list.svg +0 -1
- package/src/img/mapsight-ui/close.svg +0 -1
- package/src/img/mapsight-ui/error.svg +0 -1
- package/src/img/mapsight-ui/fullscreen-close.svg +0 -1
- package/src/img/mapsight-ui/fullscreen.svg +0 -1
- package/src/img/mapsight-ui/geo-active.svg +0 -1
- package/src/img/mapsight-ui/geo-error.svg +0 -1
- package/src/img/mapsight-ui/geo-inactive.svg +0 -1
- package/src/img/mapsight-ui/info.svg +0 -1
- package/src/img/mapsight-ui/layers.svg +0 -1
- package/src/img/mapsight-ui/loading.svg +0 -1
- package/src/img/mapsight-ui/map.svg +0 -1
- package/src/img/mapsight-ui/measure-distance.svg +0 -7
- package/src/img/mapsight-ui/open-list.svg +0 -1
- package/src/img/mapsight-ui/place-marker.svg +0 -4
- package/src/img/mapsight-ui/print.svg +0 -4
- package/src/img/mapsight-ui/reset-active.svg +0 -1
- package/src/img/mapsight-ui/reset.svg +0 -1
- package/src/img/mapsight-ui/search.svg +0 -1
- package/src/img/mapsight-ui/sharing.svg +0 -7
- package/src/img/mapsight-ui/sort-active.svg +0 -1
- package/src/img/mapsight-ui/sort.svg +0 -1
- package/src/img/mapsight-ui/watermark.svg +0 -1
- package/src/img/mapsight-ui/zoom-in.svg +0 -3
- package/src/img/mapsight-ui/zoom-out.svg +0 -3
- package/src/js/components/app.tsx +0 -232
- package/src/js/components/close-overlay-button.tsx +0 -27
- package/src/js/components/feature-details-content/feature-details-content-inner.tsx +0 -116
- package/src/js/components/feature-details-content/feature-details-content.jsx +0 -185
- package/src/js/components/feature-details-content/index.js +0 -16
- package/src/js/components/feature-details-content/share-feature-link-modal.jsx +0 -56
- package/src/js/components/feature-list/content.jsx +0 -42
- package/src/js/components/feature-list/context.tsx +0 -47
- package/src/js/components/feature-list/empty-message.jsx +0 -15
- package/src/js/components/feature-list/filter.jsx +0 -35
- package/src/js/components/feature-list/footer.jsx +0 -5
- package/src/js/components/feature-list/grouped-content.jsx +0 -74
- package/src/js/components/feature-list/header.jsx +0 -7
- package/src/js/components/feature-list/hooks/useAutoloadFeatureSource.ts +0 -25
- package/src/js/components/feature-list/hooks/useFeatureListFeatureSource.ts +0 -22
- package/src/js/components/feature-list/hooks/useFeatureListItemGroups.ts +0 -127
- package/src/js/components/feature-list/hooks/useFeatureListState.ts +0 -98
- package/src/js/components/feature-list/hooks/useKeyboardNavigation.js +0 -112
- package/src/js/components/feature-list/hooks/useMakeHeaderSticky.js +0 -40
- package/src/js/components/feature-list/hooks/usePaginatedFilteredFeatures.ts +0 -129
- package/src/js/components/feature-list/hooks/useRestoreDocumentScroll.js +0 -12
- package/src/js/components/feature-list/hooks/useSelectFeature.js +0 -88
- package/src/js/components/feature-list/index.jsx +0 -278
- package/src/js/components/feature-list/pagination.tsx +0 -57
- package/src/js/components/feature-list/query-input.jsx +0 -14
- package/src/js/components/feature-list-cycling/button.jsx +0 -13
- package/src/js/components/feature-list-cycling/dot.jsx +0 -43
- package/src/js/components/feature-list-cycling/feature-list-cycling.jsx +0 -153
- package/src/js/components/feature-list-cycling/index.js +0 -82
- package/src/js/components/feature-list-item/head.jsx +0 -131
- package/src/js/components/feature-list-item/hooks/useFeatureListItemScrollAndFocus.js +0 -51
- package/src/js/components/feature-list-item/hooks/useFeatureListItemState.ts +0 -75
- package/src/js/components/feature-list-item/icon.jsx +0 -35
- package/src/js/components/feature-list-item/index.jsx +0 -168
- package/src/js/components/feature-list-sorting/feature-list-sorting.tsx +0 -144
- package/src/js/components/feature-list-sorting/index.js +0 -22
- package/src/js/components/feature-list-sorting/status-indicator.jsx +0 -10
- package/src/js/components/feature-select-button.jsx +0 -70
- package/src/js/components/feature-selection-info/close-button.jsx +0 -64
- package/src/js/components/feature-selection-info/container.jsx +0 -9
- package/src/js/components/feature-selection-info/header.tsx +0 -27
- package/src/js/components/feature-selection-info/index.tsx +0 -81
- package/src/js/components/feature-selection-info/with-sticky-header.tsx +0 -76
- package/src/js/components/feature-selection-info/without-sticky-header.jsx +0 -19
- package/src/js/components/feature-selection-info/wrapper.jsx +0 -43
- package/src/js/components/helping/app-channel.tsx +0 -99
- package/src/js/components/helping/app-context.tsx +0 -32
- package/src/js/components/helping/visibility-wrapper.jsx +0 -23
- package/src/js/components/instance.tsx +0 -48
- package/src/js/components/layer-switcher/GroupedLayerSwitcher.js +0 -47
- package/src/js/components/layer-switcher/LayerSwitcher.ts +0 -34
- package/src/js/components/layer-switcher/LayerSwitcherContainer.tsx +0 -88
- package/src/js/components/layer-switcher/LayerSwitcherEntry.ts +0 -152
- package/src/js/components/layer-switcher/index.ts +0 -42
- package/src/js/components/layout/additional-container/content.jsx +0 -10
- package/src/js/components/layout/additional-container/index.jsx +0 -5
- package/src/js/components/layout/additional-container/marginal.jsx +0 -10
- package/src/js/components/layout/main-container.jsx +0 -5
- package/src/js/components/layout/map-row.jsx +0 -5
- package/src/js/components/layout/title-bar.tsx +0 -25
- package/src/js/components/layout/wrapper.jsx +0 -28
- package/src/js/components/link-share.jsx +0 -78
- package/src/js/components/main-panel/container.tsx +0 -23
- package/src/js/components/main-panel/context.tsx +0 -71
- package/src/js/components/main-panel/index.tsx +0 -46
- package/src/js/components/main-panel/list-toggle-button.jsx +0 -43
- package/src/js/components/map-overlay/area.jsx +0 -17
- package/src/js/components/map-overlay/attribution-entries.tsx +0 -33
- package/src/js/components/map-overlay/attribution.tsx +0 -25
- package/src/js/components/map-overlay/combined-buttons.jsx +0 -5
- package/src/js/components/map-overlay/index.jsx +0 -5
- package/src/js/components/map-overlay/info-overlay-left.jsx +0 -51
- package/src/js/components/map-overlay/info-overlay-modal.tsx +0 -49
- package/src/js/components/map-overlay/info-overlay-right.jsx +0 -46
- package/src/js/components/map-overlay/layer-switcher-overlay.tsx +0 -100
- package/src/js/components/map-overlay/legend.tsx +0 -22
- package/src/js/components/map-overlay/logo.jsx +0 -11
- package/src/js/components/map-overlay/measure-distance-button.tsx +0 -116
- package/src/js/components/map-overlay/measure-distance-overlay.jsx +0 -56
- package/src/js/components/map-overlay/mini-legend.jsx +0 -103
- package/src/js/components/map-overlay/region-selector.jsx +0 -63
- package/src/js/components/map-overlay/search-overlay.jsx +0 -79
- package/src/js/components/map-overlay/share-position-link-button.tsx +0 -144
- package/src/js/components/map-overlay/tool-overlay.tsx +0 -28
- package/src/js/components/map-overlay/user-geo-location-button.jsx +0 -89
- package/src/js/components/map-overlay/zoom-button.jsx +0 -98
- package/src/js/components/map-overlay/zoom-buttons.jsx +0 -26
- package/src/js/components/map-synced-interlay/index.ts +0 -15
- package/src/js/components/map-synced-interlay/map-synced-interlay.jsx +0 -22
- package/src/js/components/map-synced-interlay/tooltip-content.tsx +0 -22
- package/src/js/components/map-synced-interlay/tooltip.tsx +0 -199
- package/src/js/components/map-wrapper.tsx +0 -65
- package/src/js/components/map.tsx +0 -55
- package/src/js/components/modal.tsx +0 -40
- package/src/js/components/query-input-with-label.tsx +0 -71
- package/src/js/components/query-input.tsx +0 -81
- package/src/js/components/search/index.jsx +0 -83
- package/src/js/components/search/query-input.jsx +0 -20
- package/src/js/components/search/result-entry.jsx +0 -63
- package/src/js/components/search/result.jsx +0 -71
- package/src/js/components/switcher/GroupedSwitcher.jsx +0 -42
- package/src/js/components/switcher/Switcher.jsx +0 -54
- package/src/js/components/switcher/SwitcherButton.jsx +0 -23
- package/src/js/components/switcher/SwitcherEntry.tsx +0 -164
- package/src/js/components/switcher/SwitcherHeader.jsx +0 -58
- package/src/js/components/switcher/SwitcherStatusIcon.jsx +0 -36
- package/src/js/components/tag-switcher/TagSwitcher.tsx +0 -56
- package/src/js/components/tag-switcher/createTagSwitcherEntry.ts +0 -39
- package/src/js/components/tag-switcher/createTagSwitcherHeader.ts +0 -47
- package/src/js/components/tag-switcher/index.ts +0 -17
- package/src/js/components/time-filter.jsx +0 -187
- package/src/js/components/view-toggle-button/desktop-button.jsx +0 -13
- package/src/js/components/view-toggle-button/index.ts +0 -42
- package/src/js/components/view-toggle-button/mobile-button.tsx +0 -13
- package/src/js/components/view-toggle-button/view-toggle-button.jsx +0 -74
- package/src/js/components/view-toggle-button/viewport-button.tsx +0 -13
- package/src/js/config/constants/app.ts +0 -16
- package/src/js/config/constants/controllers.ts +0 -11
- package/src/js/config/feature/selections.ts +0 -13
- package/src/js/config/feature/sources.ts +0 -77
- package/src/js/config/index.ts +0 -133
- package/src/js/config/map/featureInteractions.ts +0 -53
- package/src/js/config/map/interactions.ts +0 -15
- package/src/js/config/map/layers.ts +0 -190
- package/src/js/controllers/defaults.ts +0 -36
- package/src/js/embed/browser.ts +0 -89
- package/src/js/embed/node.ts +0 -57
- package/src/js/filters/tag-filter.ts +0 -135
- package/src/js/filters/time-filter.ts +0 -53
- package/src/js/helpers/components.ts +0 -66
- package/src/js/helpers/create-action-watcher.ts +0 -35
- package/src/js/helpers/events.ts +0 -11
- package/src/js/helpers/get-feature-property.ts +0 -14
- package/src/js/helpers/i18n/de.ts +0 -145
- package/src/js/helpers/i18n/en.ts +0 -140
- package/src/js/helpers/i18n/index.ts +0 -41
- package/src/js/helpers/makeReplaceableComponent.ts +0 -0
- package/src/js/helpers/mod-classes.ts +0 -47
- package/src/js/helpers/react.ts +0 -14
- package/src/js/helpers/scroll-to-element-top.ts +0 -16
- package/src/js/helpers/sort-features-by-distance.ts +0 -102
- package/src/js/helpers/sticky.js +0 -143
- package/src/js/hooks/useCallbackRef.ts +0 -14
- package/src/js/hooks/useControllableState.ts +0 -50
- package/src/js/hooks/useDebounce.ts +0 -32
- package/src/js/hooks/useHandleEscapeKeyDown.ts +0 -27
- package/src/js/hooks/useMapsightPanel.ts +0 -40
- package/src/js/hooks/useMountable.ts +0 -47
- package/src/js/hooks/usePrevious.ts +0 -15
- package/src/js/hooks/useStickyHeader.ts +0 -50
- package/src/js/hooks/useUpdateMapSizeCallback.ts +0 -32
- package/src/js/hooks/useUpdateMapSizeOnRender.ts +0 -16
- package/src/js/hooks/useUpdateMapSizeOnTransitionEnd.ts +0 -40
- package/src/js/hooks/useUpdateMapSizeOnViewChange.ts +0 -36
- package/src/js/index.ts +0 -320
- package/src/js/plugins/browser/app-title.ts +0 -36
- package/src/js/plugins/browser/debug.ts +0 -37
- package/src/js/plugins/browser/feature-deep-link.ts +0 -223
- package/src/js/plugins/browser/local-storage.ts +0 -79
- package/src/js/plugins/browser/native-fullscreen.ts +0 -81
- package/src/js/plugins/browser/no-scroll.ts +0 -91
- package/src/js/plugins/browser/partial-content-changed-event.ts +0 -23
- package/src/js/plugins/browser/piwik-track-feature-selection-event.ts +0 -75
- package/src/js/plugins/browser/piwik-track-fullscreen-toggle-event.ts +0 -46
- package/src/js/plugins/browser/search.ts +0 -42
- package/src/js/plugins/browser/share-position-link.ts +0 -463
- package/src/js/plugins/browser/toggle-mobile-views.ts +0 -60
- package/src/js/plugins/browser/user-geolocation.ts +0 -142
- package/src/js/plugins/browser/views.ts +0 -141
- package/src/js/plugins/browser-defaults.ts +0 -101
- package/src/js/plugins/common/feature-selection-details-url.ts +0 -135
- package/src/js/plugins/common/lang.ts +0 -17
- package/src/js/plugins/common/measure-distance.ts +0 -223
- package/src/js/plugins/common/ol-proxy.ts +0 -68
- package/src/js/plugins/common/render-await-feature-details-loaded.ts +0 -154
- package/src/js/plugins/common/render-await-list-feature-sources-loaded.ts +0 -109
- package/src/js/plugins/server/feature-deep-link.ts +0 -67
- package/src/js/plugins/server-defaults.ts +0 -36
- package/src/js/renderer/browser-dom.tsx +0 -27
- package/src/js/renderer/server-string.tsx +0 -17
- package/src/js/server-handler.js +0 -39
- package/src/js/store/actions.ts +0 -662
- package/src/js/store/reducers.ts +0 -491
- package/src/js/store/selectors.ts +0 -483
- 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
|
-
}
|