@mapsight/ui 7.0.3 → 7.1.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.
- package/dist/components/app.d.ts +2 -2
- package/dist/components/app.d.ts.map +1 -1
- package/dist/components/app.js +7 -7
- package/dist/components/app.js.map +1 -1
- package/dist/components/feature-details-content/feature-details-content.js +2 -2
- package/dist/components/feature-details-content/feature-details-content.js.map +1 -1
- package/dist/components/feature-details-content/index.d.ts +3 -5
- package/dist/components/feature-details-content/index.js +6 -7
- package/dist/components/feature-details-content/index.js.map +1 -1
- package/dist/components/feature-list/filter.js +2 -2
- package/dist/components/feature-list/filter.js.map +1 -1
- package/dist/components/feature-list/hooks/useFeatureListState.d.ts.map +1 -1
- package/dist/components/feature-list/hooks/useFeatureListState.js +7 -2
- package/dist/components/feature-list/hooks/useFeatureListState.js.map +1 -1
- package/dist/components/feature-list/hooks/useRestoreDocumentScroll.js +1 -1
- package/dist/components/feature-list/hooks/useRestoreDocumentScroll.js.map +1 -1
- package/dist/components/feature-list/hooks/useSelectFeature.js +6 -6
- package/dist/components/feature-list/hooks/useSelectFeature.js.map +1 -1
- package/dist/components/feature-list/index.js +4 -4
- package/dist/components/feature-list/index.js.map +1 -1
- package/dist/components/feature-list-cycling/index.d.ts +3 -5
- package/dist/components/feature-list-cycling/index.js +1 -1
- package/dist/components/feature-list-cycling/index.js.map +1 -1
- package/dist/components/feature-list-sorting/index.d.ts +4 -16
- package/dist/components/feature-list-sorting/index.d.ts.map +1 -1
- package/dist/components/feature-list-sorting/index.js +6 -7
- package/dist/components/feature-list-sorting/index.js.map +1 -1
- package/dist/components/feature-selection-info/index.js +2 -2
- package/dist/components/feature-selection-info/index.js.map +1 -1
- package/dist/components/feature-selection-info/with-sticky-header.d.ts +10 -7
- package/dist/components/feature-selection-info/with-sticky-header.d.ts.map +1 -1
- package/dist/components/feature-selection-info/with-sticky-header.js +4 -4
- package/dist/components/feature-selection-info/with-sticky-header.js.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/layer-switcher/GroupedLayerSwitcher.js +1 -1
- package/dist/components/layer-switcher/GroupedLayerSwitcher.js.map +1 -1
- package/dist/components/layer-switcher/LayerSwitcher.d.ts +12 -11
- package/dist/components/layer-switcher/LayerSwitcher.d.ts.map +1 -1
- package/dist/components/layer-switcher/LayerSwitcher.js +1 -1
- package/dist/components/layer-switcher/LayerSwitcher.js.map +1 -1
- package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts +15 -0
- package/dist/components/layer-switcher/LayerSwitcherContainer.d.ts.map +1 -0
- package/dist/components/layer-switcher/{LayerSwticherContainer.js → LayerSwitcherContainer.js} +5 -9
- package/dist/components/layer-switcher/LayerSwitcherContainer.js.map +1 -0
- package/dist/components/layer-switcher/LayerSwitcherEntry.d.ts +28 -12
- package/dist/components/layer-switcher/LayerSwitcherEntry.d.ts.map +1 -1
- package/dist/components/layer-switcher/LayerSwitcherEntry.js +33 -35
- package/dist/components/layer-switcher/LayerSwitcherEntry.js.map +1 -1
- package/dist/components/layer-switcher/index.d.ts +9 -2
- package/dist/components/layer-switcher/index.d.ts.map +1 -1
- package/dist/components/layer-switcher/index.js +12 -21
- package/dist/components/layer-switcher/index.js.map +1 -1
- package/dist/components/layout/wrapper.js +1 -1
- package/dist/components/layout/wrapper.js.map +1 -1
- package/dist/components/main-panel/context.d.ts +6 -5
- package/dist/components/main-panel/context.d.ts.map +1 -1
- package/dist/components/main-panel/context.js +5 -13
- package/dist/components/main-panel/context.js.map +1 -1
- package/dist/components/main-panel/list-toggle-button.js +2 -2
- package/dist/components/main-panel/list-toggle-button.js.map +1 -1
- package/dist/components/map-overlay/attribution.js +1 -1
- package/dist/components/map-overlay/attribution.js.map +1 -1
- package/dist/components/map-overlay/info-overlay-left.js +2 -2
- package/dist/components/map-overlay/info-overlay-left.js.map +1 -1
- package/dist/components/map-overlay/info-overlay-right.js +2 -2
- package/dist/components/map-overlay/info-overlay-right.js.map +1 -1
- package/dist/components/map-overlay/legend.js +1 -1
- package/dist/components/map-overlay/legend.js.map +1 -1
- package/dist/components/map-overlay/measure-distance-button.js +1 -1
- package/dist/components/map-overlay/measure-distance-button.js.map +1 -1
- package/dist/components/map-overlay/mini-legend.js +2 -2
- package/dist/components/map-overlay/mini-legend.js.map +1 -1
- package/dist/components/map-overlay/region-selector.js +2 -2
- package/dist/components/map-overlay/region-selector.js.map +1 -1
- package/dist/components/map-overlay/search-overlay.js +1 -1
- package/dist/components/map-overlay/search-overlay.js.map +1 -1
- package/dist/components/map-overlay/share-position-link-button.js +1 -1
- package/dist/components/map-overlay/share-position-link-button.js.map +1 -1
- package/dist/components/map-synced-interlay/index.d.ts +2 -5
- package/dist/components/map-synced-interlay/index.d.ts.map +1 -1
- package/dist/components/map-synced-interlay/index.js +5 -6
- package/dist/components/map-synced-interlay/index.js.map +1 -1
- package/dist/components/map-synced-interlay/map-synced-interlay.js +1 -1
- package/dist/components/map-synced-interlay/map-synced-interlay.js.map +1 -1
- package/dist/components/map-synced-interlay/tooltip.js +1 -1
- package/dist/components/map-synced-interlay/tooltip.js.map +1 -1
- package/dist/components/map.d.ts +6 -5
- package/dist/components/map.d.ts.map +1 -1
- package/dist/components/map.js +15 -5
- package/dist/components/map.js.map +1 -1
- package/dist/components/search/index.js +2 -2
- package/dist/components/search/index.js.map +1 -1
- package/dist/components/search/result-entry.js +1 -1
- package/dist/components/search/result-entry.js.map +1 -1
- package/dist/components/search/result.js +1 -1
- package/dist/components/search/result.js.map +1 -1
- package/dist/components/switcher/SwitcherEntry.d.ts +21 -3
- package/dist/components/switcher/SwitcherEntry.d.ts.map +1 -1
- package/dist/components/switcher/SwitcherEntry.js +8 -9
- package/dist/components/switcher/SwitcherEntry.js.map +1 -1
- package/dist/components/tag-switcher/TagSwitcher.d.ts +2 -2
- package/dist/components/tag-switcher/TagSwitcher.d.ts.map +1 -1
- package/dist/components/tag-switcher/TagSwitcher.js.map +1 -1
- package/dist/components/tag-switcher/createTagSwitcherEntry.d.ts +13 -11
- package/dist/components/tag-switcher/createTagSwitcherEntry.d.ts.map +1 -1
- package/dist/components/tag-switcher/createTagSwitcherEntry.js +6 -12
- package/dist/components/tag-switcher/createTagSwitcherEntry.js.map +1 -1
- package/dist/components/tag-switcher/createTagSwitcherHeader.d.ts +12 -10
- package/dist/components/tag-switcher/createTagSwitcherHeader.d.ts.map +1 -1
- package/dist/components/tag-switcher/createTagSwitcherHeader.js +5 -5
- package/dist/components/tag-switcher/createTagSwitcherHeader.js.map +1 -1
- package/dist/components/tag-switcher/index.d.ts +2 -5
- package/dist/components/tag-switcher/index.d.ts.map +1 -1
- package/dist/components/tag-switcher/index.js +6 -7
- package/dist/components/tag-switcher/index.js.map +1 -1
- package/dist/components/view-toggle-button/index.d.ts +6 -5
- package/dist/components/view-toggle-button/index.d.ts.map +1 -1
- package/dist/components/view-toggle-button/index.js +8 -8
- package/dist/components/view-toggle-button/index.js.map +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/mobile-button.js.map +1 -1
- package/dist/components/view-toggle-button/view-toggle-button.js +1 -1
- package/dist/components/view-toggle-button/view-toggle-button.js.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/components/view-toggle-button/viewport-button.js.map +1 -1
- package/dist/helpers/components.d.ts +1 -1
- package/dist/helpers/components.d.ts.map +1 -1
- package/dist/helpers/create-action-watcher.d.ts +1 -1
- package/dist/helpers/create-action-watcher.d.ts.map +1 -1
- package/dist/helpers/create-action-watcher.js +1 -1
- package/dist/helpers/create-action-watcher.js.map +1 -1
- package/dist/hooks/useMountable.d.ts +2 -2
- package/dist/hooks/useMountable.d.ts.map +1 -1
- package/dist/hooks/useMountable.js +6 -0
- package/dist/hooks/useMountable.js.map +1 -1
- package/dist/hooks/useStickyHeader.d.ts +3 -3
- package/dist/hooks/useStickyHeader.d.ts.map +1 -1
- package/dist/hooks/useStickyHeader.js +3 -3
- package/dist/hooks/useStickyHeader.js.map +1 -1
- package/dist/hooks/useUpdateMapSizeCallback.d.ts +1 -1
- package/dist/hooks/useUpdateMapSizeCallback.d.ts.map +1 -1
- package/dist/hooks/useUpdateMapSizeOnRender.d.ts +1 -1
- package/dist/hooks/useUpdateMapSizeOnRender.d.ts.map +1 -1
- package/dist/hooks/useUpdateMapSizeOnTransitionEnd.d.ts +1 -1
- package/dist/hooks/useUpdateMapSizeOnTransitionEnd.d.ts.map +1 -1
- package/dist/hooks/useUpdateMapSizeOnViewChange.d.ts +1 -1
- package/dist/hooks/useUpdateMapSizeOnViewChange.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/plugins/browser/app-title.d.ts +1 -1
- package/dist/plugins/browser/app-title.d.ts.map +1 -1
- package/dist/plugins/browser/feature-deep-link.d.ts +1 -1
- package/dist/plugins/browser/feature-deep-link.d.ts.map +1 -1
- package/dist/plugins/browser/feature-deep-link.js.map +1 -1
- package/dist/plugins/browser/local-storage.d.ts +1 -1
- package/dist/plugins/browser/local-storage.d.ts.map +1 -1
- package/dist/plugins/browser/native-fullscreen.d.ts +2 -2
- package/dist/plugins/browser/native-fullscreen.d.ts.map +1 -1
- package/dist/plugins/browser/no-scroll.d.ts +3 -4
- package/dist/plugins/browser/no-scroll.d.ts.map +1 -1
- package/dist/plugins/browser/no-scroll.js.map +1 -1
- package/dist/plugins/browser/partial-content-changed-event.d.ts +1 -1
- package/dist/plugins/browser/partial-content-changed-event.d.ts.map +1 -1
- package/dist/plugins/browser/piwik-track-feature-selection-event.d.ts +1 -1
- package/dist/plugins/browser/piwik-track-feature-selection-event.d.ts.map +1 -1
- package/dist/plugins/browser/piwik-track-fullscreen-toggle-event.d.ts +1 -1
- package/dist/plugins/browser/piwik-track-fullscreen-toggle-event.d.ts.map +1 -1
- package/dist/plugins/browser/search.d.ts +1 -1
- package/dist/plugins/browser/search.d.ts.map +1 -1
- package/dist/plugins/browser/share-position-link.d.ts +1 -1
- package/dist/plugins/browser/share-position-link.d.ts.map +1 -1
- package/dist/plugins/browser/share-position-link.js +1 -1
- package/dist/plugins/browser/share-position-link.js.map +1 -1
- package/dist/plugins/browser/toggle-mobile-views.d.ts +1 -1
- package/dist/plugins/browser/toggle-mobile-views.d.ts.map +1 -1
- package/dist/plugins/browser/user-geolocation.d.ts +1 -1
- package/dist/plugins/browser/user-geolocation.d.ts.map +1 -1
- package/dist/plugins/browser/user-geolocation.js +7 -6
- package/dist/plugins/browser/user-geolocation.js.map +1 -1
- package/dist/plugins/browser/views.d.ts +1 -1
- package/dist/plugins/browser/views.d.ts.map +1 -1
- package/dist/plugins/browser-defaults.d.ts +13 -13
- package/dist/plugins/browser-defaults.d.ts.map +1 -1
- package/dist/plugins/browser-defaults.js +13 -13
- package/dist/plugins/browser-defaults.js.map +1 -1
- package/dist/plugins/common/feature-selection-details-url.d.ts +1 -1
- package/dist/plugins/common/feature-selection-details-url.d.ts.map +1 -1
- package/dist/plugins/common/measure-distance.d.ts +1 -1
- package/dist/plugins/common/measure-distance.d.ts.map +1 -1
- package/dist/plugins/common/measure-distance.js +1 -1
- package/dist/plugins/common/measure-distance.js.map +1 -1
- package/dist/plugins/common/ol-proxy.d.ts +1 -1
- package/dist/plugins/common/ol-proxy.d.ts.map +1 -1
- package/dist/plugins/common/render-await-feature-details-loaded.d.ts +1 -1
- package/dist/plugins/common/render-await-feature-details-loaded.d.ts.map +1 -1
- package/dist/plugins/common/render-await-feature-details-loaded.js +2 -1
- package/dist/plugins/common/render-await-feature-details-loaded.js.map +1 -1
- package/dist/plugins/common/render-await-list-feature-sources-loaded.d.ts +1 -1
- package/dist/plugins/common/render-await-list-feature-sources-loaded.d.ts.map +1 -1
- package/dist/plugins/common/render-await-list-feature-sources-loaded.js +2 -1
- package/dist/plugins/common/render-await-list-feature-sources-loaded.js.map +1 -1
- package/dist/plugins/server/feature-deep-link.d.ts +1 -1
- package/dist/plugins/server/feature-deep-link.d.ts.map +1 -1
- package/dist/plugins/server-defaults.d.ts +4 -4
- package/dist/plugins/server-defaults.d.ts.map +1 -1
- package/dist/plugins/server-defaults.js +4 -4
- package/dist/plugins/server-defaults.js.map +1 -1
- package/dist/renderer/browser-dom.d.ts.map +1 -1
- package/dist/renderer/browser-dom.js +6 -2
- package/dist/renderer/browser-dom.js.map +1 -1
- package/dist/renderer/server-string.js +2 -2
- package/dist/renderer/server-string.js.map +1 -1
- package/dist/store/actions.d.ts +4 -2
- package/dist/store/actions.d.ts.map +1 -1
- package/dist/store/actions.js +1 -1
- package/dist/store/actions.js.map +1 -1
- package/dist/store/reducers.d.ts +222 -9
- package/dist/store/reducers.d.ts.map +1 -1
- package/dist/store/reducers.js +1 -1
- package/dist/store/reducers.js.map +1 -1
- package/dist/store/selectors.d.ts +274 -243
- package/dist/store/selectors.d.ts.map +1 -1
- package/dist/store/selectors.js +49 -68
- package/dist/store/selectors.js.map +1 -1
- package/dist/types.d.ts +50 -35
- package/dist/types.d.ts.map +1 -1
- package/package.json +7 -8
- package/src/js/components/{app.jsx → app.tsx} +9 -14
- package/src/js/components/feature-details-content/feature-details-content.jsx +2 -2
- package/src/js/components/feature-details-content/index.js +7 -11
- package/src/js/components/feature-list/filter.jsx +2 -2
- package/src/js/components/feature-list/hooks/useAutoloadFeatureSource.ts +1 -1
- package/src/js/components/feature-list/hooks/useFeatureListState.ts +17 -9
- package/src/js/components/feature-list/hooks/useRestoreDocumentScroll.js +1 -1
- package/src/js/components/feature-list/hooks/useSelectFeature.js +6 -6
- package/src/js/components/feature-list/index.jsx +4 -4
- package/src/js/components/feature-list-cycling/index.js +1 -1
- package/src/js/components/feature-list-sorting/index.js +6 -9
- package/src/js/components/feature-selection-info/index.tsx +3 -3
- package/src/js/components/feature-selection-info/{with-sticky-header.jsx → with-sticky-header.tsx} +23 -8
- package/src/js/components/helping/app-context.tsx +1 -1
- package/src/js/components/layer-switcher/GroupedLayerSwitcher.js +1 -1
- package/src/js/components/layer-switcher/{LayerSwitcher.js → LayerSwitcher.ts} +11 -4
- package/src/js/components/layer-switcher/{LayerSwticherContainer.jsx → LayerSwitcherContainer.tsx} +22 -14
- package/src/js/components/layer-switcher/LayerSwitcherEntry.ts +152 -0
- package/src/js/components/layer-switcher/index.ts +42 -0
- package/src/js/components/layout/wrapper.jsx +1 -1
- package/src/js/components/main-panel/context.tsx +71 -0
- package/src/js/components/main-panel/list-toggle-button.jsx +2 -2
- package/src/js/components/map-overlay/attribution.tsx +1 -1
- package/src/js/components/map-overlay/info-overlay-left.jsx +2 -2
- package/src/js/components/map-overlay/info-overlay-right.jsx +2 -2
- package/src/js/components/map-overlay/legend.tsx +1 -1
- package/src/js/components/map-overlay/measure-distance-button.tsx +1 -1
- package/src/js/components/map-overlay/mini-legend.jsx +2 -2
- package/src/js/components/map-overlay/region-selector.jsx +2 -2
- package/src/js/components/map-overlay/search-overlay.jsx +1 -1
- package/src/js/components/map-overlay/share-position-link-button.tsx +1 -1
- package/src/js/components/map-synced-interlay/index.ts +15 -0
- package/src/js/components/map-synced-interlay/map-synced-interlay.jsx +1 -1
- package/src/js/components/map-synced-interlay/tooltip.tsx +1 -1
- package/src/js/components/map.tsx +55 -0
- package/src/js/components/search/index.jsx +2 -2
- package/src/js/components/search/result-entry.jsx +1 -1
- package/src/js/components/search/result.jsx +1 -1
- package/src/js/components/switcher/{SwitcherEntry.jsx → SwitcherEntry.tsx} +47 -26
- package/src/js/components/tag-switcher/{TagSwitcher.jsx → TagSwitcher.tsx} +1 -2
- package/src/js/components/tag-switcher/{createTagSwitcherEntry.js → createTagSwitcherEntry.ts} +14 -16
- package/src/js/components/tag-switcher/createTagSwitcherHeader.ts +47 -0
- package/src/js/components/tag-switcher/index.ts +17 -0
- package/src/js/components/view-toggle-button/{index.js → index.ts} +13 -10
- package/src/js/components/view-toggle-button/view-toggle-button.jsx +1 -1
- package/src/js/helpers/components.ts +1 -1
- package/src/js/helpers/create-action-watcher.ts +3 -3
- package/src/js/hooks/useMountable.ts +10 -1
- package/src/js/hooks/useStickyHeader.ts +7 -8
- package/src/js/hooks/useUpdateMapSizeCallback.ts +1 -1
- package/src/js/hooks/useUpdateMapSizeOnRender.ts +1 -1
- package/src/js/hooks/useUpdateMapSizeOnTransitionEnd.ts +1 -1
- package/src/js/hooks/useUpdateMapSizeOnViewChange.ts +1 -1
- package/src/js/index.ts +4 -3
- package/src/js/plugins/browser/app-title.ts +1 -1
- package/src/js/plugins/browser/feature-deep-link.ts +4 -3
- package/src/js/plugins/browser/local-storage.ts +1 -1
- package/src/js/plugins/browser/native-fullscreen.ts +2 -2
- package/src/js/plugins/browser/no-scroll.ts +3 -2
- package/src/js/plugins/browser/partial-content-changed-event.ts +1 -1
- package/src/js/plugins/browser/piwik-track-feature-selection-event.ts +1 -1
- package/src/js/plugins/browser/piwik-track-fullscreen-toggle-event.ts +1 -1
- package/src/js/plugins/browser/search.ts +1 -1
- package/src/js/plugins/browser/share-position-link.ts +2 -2
- package/src/js/plugins/browser/toggle-mobile-views.ts +1 -1
- package/src/js/plugins/browser/user-geolocation.ts +20 -12
- package/src/js/plugins/browser/views.ts +1 -1
- package/src/js/plugins/browser-defaults.ts +14 -14
- package/src/js/plugins/common/feature-selection-details-url.ts +1 -1
- package/src/js/plugins/common/measure-distance.ts +4 -4
- package/src/js/plugins/common/ol-proxy.ts +1 -1
- package/src/js/plugins/common/render-await-feature-details-loaded.ts +3 -2
- package/src/js/plugins/common/render-await-list-feature-sources-loaded.ts +3 -2
- package/src/js/plugins/server/feature-deep-link.ts +1 -1
- package/src/js/plugins/server-defaults.ts +5 -5
- package/src/js/renderer/browser-dom.tsx +8 -4
- package/src/js/renderer/server-string.tsx +2 -2
- package/src/js/store/actions.ts +24 -10
- package/src/js/store/reducers.ts +3 -3
- package/src/js/store/selectors.ts +192 -158
- package/src/js/types.ts +65 -41
- package/dist/components/layer-switcher/LayerSwticherContainer.d.ts +0 -4
- package/dist/components/layer-switcher/LayerSwticherContainer.d.ts.map +0 -1
- package/dist/components/layer-switcher/LayerSwticherContainer.js.map +0 -1
- package/src/js/components/layer-switcher/LayerSwitcherEntry.js +0 -132
- package/src/js/components/layer-switcher/index.js +0 -47
- package/src/js/components/main-panel/context.jsx +0 -62
- package/src/js/components/map-synced-interlay/index.js +0 -17
- package/src/js/components/map.jsx +0 -37
- package/src/js/components/tag-switcher/createTagSwitcherHeader.js +0 -34
- package/src/js/components/tag-switcher/index.js +0 -20
- package/src/js/global.d.ts +0 -7
- /package/src/js/components/view-toggle-button/{mobile-button.jsx → mobile-button.tsx} +0 -0
- /package/src/js/components/view-toggle-button/{viewport-button.jsx → viewport-button.tsx} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {Selector} from "@reduxjs/toolkit";
|
|
2
|
+
import {createSelector} from "@reduxjs/toolkit";
|
|
2
3
|
|
|
3
4
|
import type {
|
|
4
5
|
FeatureSelectionId,
|
|
@@ -13,7 +14,10 @@ import {
|
|
|
13
14
|
findFeatureInFeatureSourcesById,
|
|
14
15
|
mapFeaturesToFeatureSource,
|
|
15
16
|
} from "@mapsight/core/lib/feature-sources/selectors";
|
|
16
|
-
import type {
|
|
17
|
+
import type {
|
|
18
|
+
FeatureSourceState,
|
|
19
|
+
FeatureSourcesState,
|
|
20
|
+
} from "@mapsight/core/lib/feature-sources/types";
|
|
17
21
|
import {
|
|
18
22
|
createListFeatureSelector,
|
|
19
23
|
featureSourceIdSelector,
|
|
@@ -24,9 +28,7 @@ import type {MapState} from "@mapsight/core/lib/map/types";
|
|
|
24
28
|
import type {UserGeolocationState} from "@mapsight/core/lib/user-geolocation/selectors";
|
|
25
29
|
import type {State} from "@mapsight/core/types";
|
|
26
30
|
|
|
27
|
-
import
|
|
28
|
-
|
|
29
|
-
import type {MapsightUiPlacesData} from "../components/feature-list-sorting/feature-list-sorting.tsx";
|
|
31
|
+
import type {MapsightUiPlacesData} from "../components/feature-list-sorting/feature-list-sorting";
|
|
30
32
|
import type {View} from "../config/constants/app";
|
|
31
33
|
import {
|
|
32
34
|
DETAILS_CONTENT_STATE_KEY,
|
|
@@ -48,19 +50,29 @@ import {
|
|
|
48
50
|
FEATURE_SELECTION_SELECT,
|
|
49
51
|
} from "../config/feature/selections";
|
|
50
52
|
import type {
|
|
53
|
+
FetchTextState,
|
|
51
54
|
FullUiState,
|
|
55
|
+
LayerSwitcherConfigState,
|
|
52
56
|
MainPanelContentType,
|
|
53
57
|
MainPanelContextOptions,
|
|
54
58
|
MapsightUiFeature,
|
|
59
|
+
RegionState,
|
|
55
60
|
UiState,
|
|
56
|
-
} from "../types
|
|
61
|
+
} from "../types";
|
|
57
62
|
import {
|
|
58
63
|
FETCH_JSON_STATUS_ERROR,
|
|
59
64
|
FETCH_JSON_STATUS_LOADING,
|
|
60
65
|
FETCH_JSON_STATUS_SUCCESS,
|
|
61
66
|
FETCH_TEXT_STATUS_ERROR,
|
|
62
67
|
FETCH_TEXT_STATUS_SUCCESS,
|
|
63
|
-
} from "./actions
|
|
68
|
+
} from "./actions";
|
|
69
|
+
|
|
70
|
+
type SEARCH_STATUS =
|
|
71
|
+
| typeof SEARCH_STATUS_INACTIVE
|
|
72
|
+
| typeof SEARCH_STATUS_EMPTY
|
|
73
|
+
| typeof SEARCH_STATUS_FOUND
|
|
74
|
+
| typeof SEARCH_STATUS_LOADING
|
|
75
|
+
| typeof SEARCH_STATUS_ERROR;
|
|
64
76
|
|
|
65
77
|
export const SEARCH_STATUS_INACTIVE = "inactive";
|
|
66
78
|
export const SEARCH_STATUS_EMPTY = "empty";
|
|
@@ -68,8 +80,19 @@ export const SEARCH_STATUS_FOUND = "found";
|
|
|
68
80
|
export const SEARCH_STATUS_LOADING = "loading";
|
|
69
81
|
export const SEARCH_STATUS_ERROR = "error";
|
|
70
82
|
|
|
71
|
-
type RootStateSlice = {
|
|
83
|
+
export type RootStateSlice = {
|
|
72
84
|
app: UiState;
|
|
85
|
+
[TAG_FILTER]: {
|
|
86
|
+
featureSourceId: string;
|
|
87
|
+
visibleTags: {
|
|
88
|
+
[tagGroup: string]: {
|
|
89
|
+
[tag: string]: boolean;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
visibleTagGroups: {
|
|
93
|
+
[tagGroup: string]: boolean;
|
|
94
|
+
};
|
|
95
|
+
};
|
|
73
96
|
};
|
|
74
97
|
|
|
75
98
|
export const viewSelector = (state: RootStateSlice) => state.app.view!;
|
|
@@ -84,28 +107,25 @@ export const isViewMobile = (view: View | undefined) =>
|
|
|
84
107
|
|
|
85
108
|
export const isViewMapOnly = (view: View) => view === VIEW_MAP_ONLY;
|
|
86
109
|
|
|
87
|
-
export const isViewMobileOrMapOnlySelector =
|
|
88
|
-
viewSelector,
|
|
89
|
-
|
|
90
|
-
);
|
|
91
|
-
export const
|
|
92
|
-
viewSelector,
|
|
93
|
-
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
export const mapVisible = (state: RootStateSlice) => state.app.map?.show;
|
|
101
|
-
export const listVisible = (state: RootStateSlice) => state.app.list?.show;
|
|
110
|
+
export const isViewMobileOrMapOnlySelector: Selector<RootStateSlice, boolean> =
|
|
111
|
+
createSelector(viewSelector, isViewMobile);
|
|
112
|
+
export const isViewMapOnlySelector: Selector<RootStateSlice, boolean> =
|
|
113
|
+
createSelector(viewSelector, isViewMapOnly);
|
|
114
|
+
export const isFullscreenSelector: Selector<RootStateSlice, boolean> =
|
|
115
|
+
createSelector(viewSelector, isViewFullscreen);
|
|
116
|
+
|
|
117
|
+
export const mapVisible = (state: RootStateSlice) =>
|
|
118
|
+
state.app.map?.show ?? false;
|
|
119
|
+
export const listVisible = (state: RootStateSlice) =>
|
|
120
|
+
state.app.list?.show ?? false;
|
|
102
121
|
export const timeFilterVisible = (state: RootStateSlice) =>
|
|
103
|
-
state.app.timeFilter?.show;
|
|
122
|
+
state.app.timeFilter?.show ?? false;
|
|
104
123
|
|
|
105
|
-
export const mapAndListVisible =
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
)
|
|
124
|
+
export const mapAndListVisible: Selector<RootStateSlice, boolean> =
|
|
125
|
+
createSelector(
|
|
126
|
+
[mapVisible, listVisible],
|
|
127
|
+
(map, list) => map !== undefined && list !== undefined,
|
|
128
|
+
);
|
|
109
129
|
|
|
110
130
|
export const viewBreakpointsSelector = (state: RootStateSlice) =>
|
|
111
131
|
state.app.viewBreakpoints;
|
|
@@ -126,45 +146,50 @@ export const listSortingSelector = (state: RootStateSlice) =>
|
|
|
126
146
|
export const listQuerySelector = (state: RootStateSlice) => state.app.listQuery;
|
|
127
147
|
export const listPageSelector = (state: RootStateSlice) =>
|
|
128
148
|
state.app.listPage || 0;
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
149
|
+
|
|
150
|
+
const placesWithGeoLocationSelector: Selector<
|
|
151
|
+
RootStateSlice,
|
|
152
|
+
MapsightUiPlacesData
|
|
153
|
+
> = createSelector(
|
|
154
|
+
[
|
|
155
|
+
(state: State) => state[USER_GEOLOCATION] as UserGeolocationState,
|
|
156
|
+
placesSelector,
|
|
157
|
+
],
|
|
158
|
+
(userGeolocation, places) =>
|
|
159
|
+
userGeolocation.longitude && userGeolocation.latitude
|
|
160
|
+
? {
|
|
161
|
+
...places,
|
|
162
|
+
geolocation: {
|
|
163
|
+
title: "",
|
|
164
|
+
x: userGeolocation.longitude,
|
|
165
|
+
y: userGeolocation.latitude,
|
|
166
|
+
},
|
|
167
|
+
}
|
|
168
|
+
: places
|
|
169
|
+
? places
|
|
170
|
+
: {},
|
|
171
|
+
);
|
|
172
|
+
|
|
173
|
+
export const listFilterOptionsSelector = (state: RootStateSlice) => ({
|
|
174
|
+
query: listQuerySelector(state),
|
|
175
|
+
sorting: listSortingSelector(state),
|
|
176
|
+
places: placesWithGeoLocationSelector(state),
|
|
152
177
|
});
|
|
153
178
|
|
|
154
179
|
export const searchQuerySelector = (state: RootStateSlice) =>
|
|
155
180
|
state.app.searchQuery;
|
|
156
181
|
export const searchResultSelector = (state: RootStateSlice) =>
|
|
157
|
-
|
|
182
|
+
state.app.searchResult;
|
|
158
183
|
export const getSearchResultStatus = (
|
|
159
184
|
searchResult?: FullUiState["searchResult"],
|
|
160
185
|
) => searchResult?.status;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
export const searchResultFeaturesSelector
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
);
|
|
186
|
+
|
|
187
|
+
const getSearchResultFeatures = (searchResult?: FullUiState["searchResult"]) =>
|
|
188
|
+
(searchResult?.data?.features ?? []) as MapsightUiFeature[];
|
|
189
|
+
export const searchResultFeaturesSelector: Selector<
|
|
190
|
+
RootStateSlice,
|
|
191
|
+
MapsightUiFeature[]
|
|
192
|
+
> = createSelector(searchResultSelector, getSearchResultFeatures);
|
|
168
193
|
|
|
169
194
|
export const haveSearchInMapSelector = (state: RootStateSlice) =>
|
|
170
195
|
state.app.searchInMap;
|
|
@@ -197,15 +222,15 @@ export const layerSwitcherShowInternalSelector = (state: RootStateSlice) =>
|
|
|
197
222
|
export const layerSwitcherShowExternalSelector = (state: RootStateSlice) =>
|
|
198
223
|
state.app.layerSwitcher?.show?.external;
|
|
199
224
|
export const layerSwitcherConfigInternalSelector = (state: RootStateSlice) =>
|
|
200
|
-
state.app.layerSwitcher?.internal;
|
|
225
|
+
state.app.layerSwitcher?.internal as LayerSwitcherConfigState | undefined;
|
|
201
226
|
export const layerSwitcherConfigExternalSelector = (state: RootStateSlice) =>
|
|
202
|
-
state.app.layerSwitcher?.external;
|
|
227
|
+
state.app.layerSwitcher?.external as LayerSwitcherConfigState | undefined;
|
|
203
228
|
|
|
204
229
|
export const pageTitleShowSelector = (state: RootStateSlice) =>
|
|
205
|
-
state.app.pageTitle?.show;
|
|
230
|
+
state.app.pageTitle?.show ?? false;
|
|
206
231
|
|
|
207
232
|
export const tagSwitcherShowSelector = (state: RootStateSlice) =>
|
|
208
|
-
state.app.tagSwitcher?.show;
|
|
233
|
+
state.app.tagSwitcher?.show ?? false;
|
|
209
234
|
export const tagSwitcherToggleableGroups = (state: RootStateSlice) =>
|
|
210
235
|
state.app.tagSwitcher?.toggleableGroups;
|
|
211
236
|
export const tagSwitcherSortTags = (state: RootStateSlice) =>
|
|
@@ -234,76 +259,80 @@ export const viewToggleShowSelector = (state: RootStateSlice) =>
|
|
|
234
259
|
export const viewToggleOptionsSelector = (state: RootStateSlice) =>
|
|
235
260
|
state.app.viewToggle;
|
|
236
261
|
|
|
237
|
-
export const searchStatusSelector =
|
|
238
|
-
searchResultSelector,
|
|
239
|
-
searchQuerySelector,
|
|
262
|
+
export const searchStatusSelector: Selector<RootStateSlice, SEARCH_STATUS> =
|
|
240
263
|
createSelector(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
(
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
264
|
+
searchResultSelector,
|
|
265
|
+
searchQuerySelector,
|
|
266
|
+
createSelector(
|
|
267
|
+
getSearchResultStatus,
|
|
268
|
+
getSearchResultFeatures,
|
|
269
|
+
(_: unknown, query: string | undefined) => !!query,
|
|
270
|
+
(
|
|
271
|
+
status: FullUiState["searchResult"]["status"],
|
|
272
|
+
features: MapsightUiFeature[],
|
|
273
|
+
hasQuery: boolean,
|
|
274
|
+
) => {
|
|
275
|
+
switch (status) {
|
|
276
|
+
case FETCH_JSON_STATUS_ERROR:
|
|
277
|
+
return SEARCH_STATUS_ERROR;
|
|
278
|
+
case FETCH_JSON_STATUS_LOADING:
|
|
279
|
+
return SEARCH_STATUS_LOADING;
|
|
280
|
+
case FETCH_JSON_STATUS_SUCCESS:
|
|
281
|
+
return hasQuery
|
|
282
|
+
? features.length
|
|
283
|
+
? SEARCH_STATUS_FOUND
|
|
284
|
+
: SEARCH_STATUS_EMPTY
|
|
285
|
+
: SEARCH_STATUS_INACTIVE;
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
) as Selector<
|
|
289
|
+
FullUiState["searchResult"],
|
|
290
|
+
SEARCH_STATUS,
|
|
291
|
+
[string | undefined]
|
|
292
|
+
>,
|
|
293
|
+
);
|
|
260
294
|
export const userPreferenceListVisibleSelector = (state: RootStateSlice) =>
|
|
261
295
|
state.app.userPreferenceListVisible;
|
|
262
296
|
|
|
263
297
|
export const searchResultSelectionFeaturesSelector = (state: RootStateSlice) =>
|
|
264
298
|
state.app.searchResultSelectionFeatures;
|
|
265
|
-
export const searchResultSelectionFeatureSourceSelector
|
|
299
|
+
export const searchResultSelectionFeatureSourceSelector: Selector<
|
|
300
|
+
RootStateSlice,
|
|
301
|
+
FeatureSourceState
|
|
302
|
+
> = createSelector(
|
|
266
303
|
searchResultSelectionFeaturesSelector,
|
|
267
304
|
mapFeaturesToFeatureSource<MapsightUiFeature>,
|
|
268
305
|
);
|
|
269
306
|
|
|
270
307
|
export const featureDetailsSelector = (state: RootStateSlice) =>
|
|
271
|
-
state.app[DETAILS_CONTENT_STATE_KEY];
|
|
308
|
+
state.app[DETAILS_CONTENT_STATE_KEY] as FetchTextState;
|
|
272
309
|
export const featureDetailsUrlSelector = (state: RootStateSlice) =>
|
|
273
|
-
state.app[DETAILS_CONTENT_STATE_KEY]?.url;
|
|
310
|
+
(state.app[DETAILS_CONTENT_STATE_KEY] as FetchTextState)?.url;
|
|
274
311
|
|
|
275
|
-
export const featureDetailsHasErrorSelector =
|
|
276
|
-
featureDetailsSelector,
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
312
|
+
export const featureDetailsHasErrorSelector: Selector<RootStateSlice, boolean> =
|
|
313
|
+
createSelector(featureDetailsSelector, (detailsContent) =>
|
|
314
|
+
detailsContent
|
|
315
|
+
? detailsContent.status === FETCH_TEXT_STATUS_ERROR
|
|
316
|
+
: false,
|
|
317
|
+
);
|
|
280
318
|
|
|
281
|
-
export const featureDetailsHtmlSelector
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
319
|
+
export const featureDetailsHtmlSelector: Selector<
|
|
320
|
+
RootStateSlice,
|
|
321
|
+
string | null
|
|
322
|
+
> = createSelector(featureDetailsSelector, (detailsContent) =>
|
|
323
|
+
detailsContent?.status === FETCH_TEXT_STATUS_SUCCESS
|
|
324
|
+
? detailsContent.data
|
|
325
|
+
: null,
|
|
287
326
|
);
|
|
288
327
|
|
|
289
328
|
export const createTagVisibleSelector =
|
|
290
|
-
(featureSourceId, tagGroup, tag
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
"visibleTags",
|
|
294
|
-
featureSourceId,
|
|
295
|
-
tagGroup,
|
|
296
|
-
tag,
|
|
297
|
-
]);
|
|
329
|
+
(featureSourceId: string, tagGroup: string, tag: string) =>
|
|
330
|
+
(state: RootStateSlice) =>
|
|
331
|
+
!!state[TAG_FILTER]?.visibleTags?.[featureSourceId]?.[tagGroup]?.[tag];
|
|
298
332
|
|
|
299
333
|
export const createTagGroupVisibleSelector =
|
|
300
|
-
(featureSourceId, tagGroup) => (state) =>
|
|
301
|
-
!!
|
|
302
|
-
TAG_FILTER,
|
|
303
|
-
"visibleTagGroups",
|
|
304
|
-
featureSourceId,
|
|
305
|
-
tagGroup,
|
|
306
|
-
]);
|
|
334
|
+
(featureSourceId: string, tagGroup: string) => (state: RootStateSlice) =>
|
|
335
|
+
!!state[TAG_FILTER]?.visibleTagGroups?.[featureSourceId]?.[tagGroup];
|
|
307
336
|
|
|
308
337
|
export const isOverlayModalVisibleSelector = (state: RootStateSlice) =>
|
|
309
338
|
state.app.isOverlayModalVisible === true;
|
|
@@ -311,14 +340,18 @@ export const isOverlayModalVisibleSelector = (state: RootStateSlice) =>
|
|
|
311
340
|
export const selectedRegionIdSelector = (state: RootStateSlice) =>
|
|
312
341
|
state.app.selectedRegion || null;
|
|
313
342
|
|
|
314
|
-
export const selectedRegionSelector
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
343
|
+
export const selectedRegionSelector: Selector<
|
|
344
|
+
RootStateSlice,
|
|
345
|
+
RegionState | null
|
|
346
|
+
> = createSelector(selectedRegionIdSelector, regionsSelector, (id, regions) =>
|
|
347
|
+
id !== null && regions !== undefined ? (regions[id] as RegionState) : null,
|
|
318
348
|
);
|
|
319
349
|
|
|
320
|
-
export const miniLegendLayerIdSelector
|
|
321
|
-
|
|
350
|
+
export const miniLegendLayerIdSelector: Selector<
|
|
351
|
+
RootStateSlice,
|
|
352
|
+
string | null
|
|
353
|
+
> = createSelector(
|
|
354
|
+
(state: RootStateSlice) =>
|
|
322
355
|
visibleLayersWithMiniLegendsSelector(state[MAP] as MapState),
|
|
323
356
|
(state: RootStateSlice) => state.app.miniLegendLayer,
|
|
324
357
|
(visibleLayers, layerId) => {
|
|
@@ -339,7 +372,10 @@ export const miniLegendLayerIdSelector = createSelector(
|
|
|
339
372
|
},
|
|
340
373
|
);
|
|
341
374
|
|
|
342
|
-
export const selectedFeatureSelector
|
|
375
|
+
export const selectedFeatureSelector: Selector<
|
|
376
|
+
State,
|
|
377
|
+
MapsightUiFeature | null
|
|
378
|
+
> = createSelector(
|
|
343
379
|
(state: State) =>
|
|
344
380
|
(state[FEATURE_SELECTIONS] as FeatureSelectionsState)[
|
|
345
381
|
FEATURE_SELECTION_SELECT
|
|
@@ -349,17 +385,26 @@ export const selectedFeatureSelector = createSelector(
|
|
|
349
385
|
const features = getFilteredFeatures(featureSelection);
|
|
350
386
|
const featureId = features && features[0];
|
|
351
387
|
return featureId
|
|
352
|
-
? findFeatureInFeatureSourcesById(
|
|
388
|
+
? (findFeatureInFeatureSourcesById(
|
|
389
|
+
featureSources,
|
|
390
|
+
featureId,
|
|
391
|
+
) as MapsightUiFeature | null)
|
|
353
392
|
: null;
|
|
354
393
|
},
|
|
355
394
|
);
|
|
356
395
|
|
|
396
|
+
type MainPanelState = {
|
|
397
|
+
feature: MapsightUiFeature | null;
|
|
398
|
+
contentType: MainPanelContentType | null;
|
|
399
|
+
collapsed: boolean;
|
|
400
|
+
};
|
|
401
|
+
|
|
357
402
|
export const createMainPanelContentTypeSelector = (
|
|
358
403
|
options: Pick<
|
|
359
404
|
MainPanelContextOptions,
|
|
360
405
|
"showSelectionInfo" | "showList" | "collapsible"
|
|
361
406
|
>,
|
|
362
|
-
) =>
|
|
407
|
+
): Selector<State, MainPanelState> =>
|
|
363
408
|
createSelector(
|
|
364
409
|
selectedFeatureSelector,
|
|
365
410
|
userPreferenceListVisibleSelector,
|
|
@@ -381,15 +426,15 @@ export const createMainPanelContentTypeSelector = (
|
|
|
381
426
|
(contentType === "list" &&
|
|
382
427
|
collapsible &&
|
|
383
428
|
!userPreferenceListVisible),
|
|
384
|
-
};
|
|
429
|
+
} as const;
|
|
385
430
|
},
|
|
386
431
|
);
|
|
387
432
|
|
|
388
|
-
export
|
|
433
|
+
export const createSelectionIndexSelector = (
|
|
389
434
|
featureIds: Array<string>,
|
|
390
435
|
targetSelection: FeatureSelectionId,
|
|
391
|
-
)
|
|
392
|
-
|
|
436
|
+
): Selector<State, number> =>
|
|
437
|
+
createSelector(
|
|
393
438
|
(state: State) =>
|
|
394
439
|
(state[FEATURE_SELECTIONS] as FeatureSelectionsState)[
|
|
395
440
|
targetSelection
|
|
@@ -399,51 +444,40 @@ export function createSelectionIndexSelector(
|
|
|
399
444
|
? featureIds.indexOf(selection[0]!)
|
|
400
445
|
: -1,
|
|
401
446
|
);
|
|
402
|
-
}
|
|
403
447
|
|
|
404
448
|
export const featureSelectionInfoUiOptionsSelector = (state: RootStateSlice) =>
|
|
405
449
|
state.app.featureSelectionInfo || {};
|
|
406
|
-
export const featureSelectionInfoStickyHeaderSelector = createSelector(
|
|
407
|
-
featureSelectionInfoUiOptionsSelector,
|
|
408
|
-
({stickyHeader}) => stickyHeader,
|
|
409
|
-
);
|
|
410
|
-
export const featureSelectionInfoStuckHeaderHeightSelector = createSelector(
|
|
411
|
-
featureSelectionInfoUiOptionsSelector,
|
|
412
|
-
({stuckHeaderHeight}) => stuckHeaderHeight,
|
|
413
|
-
);
|
|
414
450
|
|
|
415
|
-
const selectSelectionSelector = createFeatureSelectionSelector(
|
|
451
|
+
export const selectSelectionSelector = createFeatureSelectionSelector(
|
|
416
452
|
FEATURE_SELECTIONS,
|
|
417
453
|
FEATURE_SELECTION_SELECT,
|
|
418
454
|
);
|
|
419
|
-
const preselectSelectionSelector = createFeatureSelectionSelector(
|
|
455
|
+
export const preselectSelectionSelector = createFeatureSelectionSelector(
|
|
420
456
|
FEATURE_SELECTIONS,
|
|
421
457
|
FEATURE_SELECTION_PRESELECT,
|
|
422
458
|
);
|
|
423
|
-
const highlightSelectionSelector = createFeatureSelectionSelector(
|
|
459
|
+
export const highlightSelectionSelector = createFeatureSelectionSelector(
|
|
424
460
|
FEATURE_SELECTIONS,
|
|
425
461
|
FEATURE_SELECTION_HIGHLIGHT,
|
|
426
462
|
);
|
|
427
463
|
|
|
428
|
-
export const featureListContextSelector = createStructuredSelector({
|
|
429
|
-
tagSwitcherShow: tagSwitcherShowSelector,
|
|
430
|
-
layerSwitcherShowExternal: layerSwitcherShowExternalSelector,
|
|
431
|
-
scrollPosition: lastListScrollPositionSelector,
|
|
432
|
-
selectSelection: selectSelectionSelector,
|
|
433
|
-
preselectSelection: preselectSelectionSelector,
|
|
434
|
-
highlightSelection: highlightSelectionSelector,
|
|
435
|
-
});
|
|
436
|
-
|
|
437
464
|
export const createFeatureSourceSelector = (
|
|
438
465
|
listControllerName = FEATURE_LIST,
|
|
439
|
-
)
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
),
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
466
|
+
): Selector<
|
|
467
|
+
RootStateSlice,
|
|
468
|
+
{featureSourceId?: string; featureSource?: FeatureSourceState}
|
|
469
|
+
> => {
|
|
470
|
+
const listFeatureSourceIdSelector = createSelector(
|
|
471
|
+
(state: State) => state[listControllerName] as ListState,
|
|
472
|
+
featureSourceIdSelector,
|
|
473
|
+
);
|
|
474
|
+
const listFeatureSourceSelector = createListFeatureSelector(
|
|
475
|
+
listControllerName,
|
|
476
|
+
FEATURE_SOURCES,
|
|
477
|
+
);
|
|
478
|
+
|
|
479
|
+
return (state) => ({
|
|
480
|
+
featureSourceId: listFeatureSourceIdSelector(state),
|
|
481
|
+
featureSource: listFeatureSourceSelector(state),
|
|
449
482
|
});
|
|
483
|
+
};
|