@mapsight/ui 7.0.2 → 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 +8 -9
- 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,7 +1,7 @@
|
|
|
1
1
|
import {Fragment, useCallback, useEffect, useMemo} from "react";
|
|
2
2
|
import {useDispatch, useSelector} from "react-redux";
|
|
3
3
|
|
|
4
|
-
import {createSelector} from "
|
|
4
|
+
import {createSelector} from "@reduxjs/toolkit";
|
|
5
5
|
|
|
6
6
|
import {removeAllFeatures} from "@mapsight/core/lib/feature-sources/actions";
|
|
7
7
|
import {createFilteredFeatureSourceSelector} from "@mapsight/core/lib/feature-sources/selectors";
|
|
@@ -7,11 +7,11 @@ import {useDispatch, useSelector} from "react-redux";
|
|
|
7
7
|
|
|
8
8
|
import {MAP} from "../../config/constants/controllers";
|
|
9
9
|
import {translate} from "../../helpers/i18n";
|
|
10
|
-
import {setMiniLegendLayer, setOverlayModalVisible} from "../../store/actions
|
|
10
|
+
import {setMiniLegendLayer, setOverlayModalVisible} from "../../store/actions";
|
|
11
11
|
import {
|
|
12
12
|
isOverlayModalVisibleSelector,
|
|
13
13
|
miniLegendLayerIdSelector,
|
|
14
|
-
} from "../../store/selectors
|
|
14
|
+
} from "../../store/selectors";
|
|
15
15
|
|
|
16
16
|
const layersSelector = (state) =>
|
|
17
17
|
visibleLayersWithMiniLegendsSelector(state[MAP]);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {memo, useCallback} from "react";
|
|
2
2
|
import {useDispatch, useSelector} from "react-redux";
|
|
3
|
-
import {setSelectedRegionIdAndAnimateMap} from "../../store/actions
|
|
3
|
+
import {setSelectedRegionIdAndAnimateMap} from "../../store/actions";
|
|
4
4
|
|
|
5
|
-
import {regionsSelector, selectedRegionIdSelector} from "../../store/selectors
|
|
5
|
+
import {regionsSelector, selectedRegionIdSelector} from "../../store/selectors";
|
|
6
6
|
|
|
7
7
|
const RegionSelectorEntry = memo(
|
|
8
8
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {Fragment, useCallback, useEffect, useMemo} from "react";
|
|
2
2
|
import {useDispatch, useSelector} from "react-redux";
|
|
3
3
|
|
|
4
|
-
import {createSelector} from "
|
|
4
|
+
import {createSelector} from "@reduxjs/toolkit";
|
|
5
5
|
|
|
6
6
|
import {removeAllFeatures} from "@mapsight/core/lib/feature-sources/actions";
|
|
7
7
|
import {createFilteredFeatureSourceSelector} from "@mapsight/core/lib/feature-sources/selectors";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import {connect} from "react-redux";
|
|
2
|
+
|
|
3
|
+
import {mapSizeSelector} from "@mapsight/core/lib/map/selectors";
|
|
4
|
+
import type {MapState} from "@mapsight/core/lib/map/types";
|
|
5
|
+
|
|
6
|
+
import {MAP} from "../../config/constants/controllers";
|
|
7
|
+
import type {RootStateSlice} from "../../store/selectors";
|
|
8
|
+
import {viewSelector} from "../../store/selectors";
|
|
9
|
+
import MapSyncedInterlay from "./map-synced-interlay";
|
|
10
|
+
|
|
11
|
+
export default connect((state: RootStateSlice) => ({
|
|
12
|
+
view: viewSelector(state),
|
|
13
|
+
size: mapSizeSelector(state[MAP] as MapState),
|
|
14
|
+
//pendingUpdateSize: state[MAP].pendingUpdateSize || false,
|
|
15
|
+
}))(MapSyncedInterlay);
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type {HTMLAttributes} from "react";
|
|
2
|
+
import {memo, useEffect, useMemo, useRef} from "react";
|
|
3
|
+
import {useStore} from "react-redux";
|
|
4
|
+
|
|
5
|
+
import type {EnhancedStore} from "@mapsight/core/types";
|
|
6
|
+
|
|
7
|
+
import {MAP} from "../config/constants/controllers";
|
|
8
|
+
import {translate} from "../helpers/i18n";
|
|
9
|
+
import useMountable, {isMountable} from "../hooks/useMountable";
|
|
10
|
+
|
|
11
|
+
type MapsightMapProps = HTMLAttributes<HTMLDivElement> & {
|
|
12
|
+
controllerName?: string;
|
|
13
|
+
enableKeyboardControl?: boolean;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
function MapsightMap({
|
|
17
|
+
controllerName = MAP,
|
|
18
|
+
enableKeyboardControl = true,
|
|
19
|
+
...attributes
|
|
20
|
+
}: MapsightMapProps) {
|
|
21
|
+
const store = useStore() as EnhancedStore;
|
|
22
|
+
const ref = useRef<HTMLDivElement>(null);
|
|
23
|
+
|
|
24
|
+
const mountable = useMemo(() => {
|
|
25
|
+
const controller = store.getController(controllerName);
|
|
26
|
+
if (!isMountable(controller)) {
|
|
27
|
+
console.error(`Controller '${controllerName}' is not mountable`);
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
return controller;
|
|
31
|
+
}, [store, controllerName]);
|
|
32
|
+
const handleMount = useMountable(mountable);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (ref.current) {
|
|
35
|
+
handleMount(ref.current);
|
|
36
|
+
}
|
|
37
|
+
}, [ref, handleMount]);
|
|
38
|
+
|
|
39
|
+
if (enableKeyboardControl) {
|
|
40
|
+
attributes.tabIndex = 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return (
|
|
44
|
+
<div className="ms3-map-target" ref={ref} {...attributes}>
|
|
45
|
+
<span className="ms3-visuallyhidden">
|
|
46
|
+
{translate("ui.map.visuallyhidden")}
|
|
47
|
+
</span>
|
|
48
|
+
<div className="ol-viewport">
|
|
49
|
+
<canvas className="ol-unselectable" />
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export default memo(MapsightMap);
|
|
@@ -3,8 +3,8 @@ import {useDispatch, useSelector} from "react-redux";
|
|
|
3
3
|
|
|
4
4
|
import {translate} from "../../helpers/i18n";
|
|
5
5
|
import useDebounce from "../../hooks/useDebounce";
|
|
6
|
-
import {search} from "../../store/actions
|
|
7
|
-
import {searchQuerySelector} from "../../store/selectors
|
|
6
|
+
import {search} from "../../store/actions";
|
|
7
|
+
import {searchQuerySelector} from "../../store/selectors";
|
|
8
8
|
|
|
9
9
|
import SearchQueryInput from "./query-input";
|
|
10
10
|
import SearchResult from "./result";
|
|
@@ -5,7 +5,7 @@ import {FEATURE_SELECTIONS} from "../../config/constants/controllers";
|
|
|
5
5
|
import {FEATURE_SELECTION_SELECT} from "../../config/feature/selections";
|
|
6
6
|
|
|
7
7
|
import getFeatureProperty from "../../helpers/get-feature-property";
|
|
8
|
-
import {search, selectSearchResult} from "../../store/actions
|
|
8
|
+
import {search, selectSearchResult} from "../../store/actions";
|
|
9
9
|
|
|
10
10
|
function SearchResultEntry({closeSearch, onReturnFocus, feature}) {
|
|
11
11
|
const dispatch = useDispatch();
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
+
import type {ElementType} from "react";
|
|
2
|
+
import {Fragment, memo} from "react";
|
|
3
|
+
|
|
1
4
|
import {
|
|
5
|
+
type FeatureSourceStatus,
|
|
2
6
|
STATUS_ERROR,
|
|
3
7
|
STATUS_LOADING,
|
|
4
8
|
STATUS_OK,
|
|
5
9
|
} from "@mapsight/core/lib/feature-sources/selectors";
|
|
6
|
-
import {Fragment, memo} from "react";
|
|
7
10
|
|
|
8
11
|
import {translate} from "../../helpers/i18n";
|
|
9
|
-
|
|
10
12
|
import SwitcherButton from "./SwitcherButton";
|
|
11
13
|
import SwitcherStatusIcon from "./SwitcherStatusIcon";
|
|
12
14
|
|
|
15
|
+
type SwitcherEntryStatus = "active" | "inactive" | "error" | "loading";
|
|
16
|
+
|
|
13
17
|
export const STATUS_ACTIVE = "active";
|
|
14
18
|
export const STATUS_INACTIVE = "inactive";
|
|
15
19
|
|
|
16
|
-
const mapStatusClassName = (status) =>
|
|
20
|
+
const mapStatusClassName = (status: SwitcherEntryStatus) =>
|
|
17
21
|
({
|
|
18
22
|
[STATUS_ERROR]: "error",
|
|
19
23
|
[STATUS_LOADING]: "loading",
|
|
@@ -21,10 +25,13 @@ const mapStatusClassName = (status) =>
|
|
|
21
25
|
[STATUS_INACTIVE]: "inactive",
|
|
22
26
|
})[status];
|
|
23
27
|
|
|
24
|
-
const mapStatusLabel = (status) =>
|
|
28
|
+
const mapStatusLabel = (status: string) =>
|
|
25
29
|
translate("ui.switcher.entry.label" + status);
|
|
26
30
|
|
|
27
|
-
const determineDisplayStatus = (
|
|
31
|
+
const determineDisplayStatus = (
|
|
32
|
+
status?: FeatureSourceStatus,
|
|
33
|
+
active: boolean = false,
|
|
34
|
+
): SwitcherEntryStatus => {
|
|
28
35
|
if (!status || status === STATUS_OK) {
|
|
29
36
|
return active ? STATUS_ACTIVE : STATUS_INACTIVE;
|
|
30
37
|
}
|
|
@@ -32,36 +39,50 @@ const determineDisplayStatus = (status, active) => {
|
|
|
32
39
|
return status;
|
|
33
40
|
};
|
|
34
41
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
...attributes
|
|
51
|
-
} = props;
|
|
42
|
+
export type SwitcherEntryProps = {
|
|
43
|
+
as?: ElementType;
|
|
44
|
+
className?: string;
|
|
45
|
+
baseClassName?: string;
|
|
46
|
+
title: string;
|
|
47
|
+
count?: number | null;
|
|
48
|
+
toggleActive?: () => void;
|
|
49
|
+
toggleActiveCheckbox?: () => void;
|
|
50
|
+
toggleActiveText?: () => void;
|
|
51
|
+
active?: boolean;
|
|
52
|
+
activeCheckbox?: boolean;
|
|
53
|
+
activeText?: boolean;
|
|
54
|
+
status?: FeatureSourceStatus;
|
|
55
|
+
locked?: boolean;
|
|
56
|
+
};
|
|
52
57
|
|
|
58
|
+
function SwitcherEntry({
|
|
59
|
+
as: T = "li",
|
|
60
|
+
className = "",
|
|
61
|
+
baseClassName = "ms3-layer-switcher__entry", // TODO: Use generic class name
|
|
62
|
+
title,
|
|
63
|
+
count = null,
|
|
64
|
+
toggleActive,
|
|
65
|
+
toggleActiveCheckbox: _toggleActiveCheckbox,
|
|
66
|
+
toggleActiveText: _toggleActiveText,
|
|
67
|
+
active,
|
|
68
|
+
activeCheckbox: _activeCheckbox,
|
|
69
|
+
activeText: _activeText,
|
|
70
|
+
status,
|
|
71
|
+
locked = false,
|
|
72
|
+
...attributes
|
|
73
|
+
}: SwitcherEntryProps) {
|
|
53
74
|
// `toggleActive` manages the "split" mode. If `toggleActive` isn't set we switch to the
|
|
54
75
|
// "split" mode, it's enabling split active statuses and toggle handlers for the checkbox and
|
|
55
76
|
// text.
|
|
56
77
|
const isSplit = !toggleActive;
|
|
57
|
-
const activeCheckbox = isSplit ? _activeCheckbox : active;
|
|
58
|
-
const activeText = isSplit ? _activeText : active;
|
|
78
|
+
const activeCheckbox = isSplit ? (_activeCheckbox ?? false) : active;
|
|
79
|
+
const activeText = isSplit ? (_activeText ?? false) : active;
|
|
59
80
|
const toggleActiveCheckbox = isSplit ? _toggleActiveCheckbox : undefined;
|
|
60
81
|
const toggleActiveText = isSplit ? _toggleActiveText : undefined;
|
|
61
82
|
|
|
62
83
|
const checkboxDisplayStatus = determineDisplayStatus(
|
|
63
84
|
status,
|
|
64
|
-
activeCheckbox,
|
|
85
|
+
activeCheckbox ?? false,
|
|
65
86
|
);
|
|
66
87
|
const checkboxStatusClass = mapStatusClassName(checkboxDisplayStatus);
|
|
67
88
|
const checkboxStatusLabel = mapStatusLabel(checkboxDisplayStatus);
|
|
@@ -113,7 +134,7 @@ function SwitcherEntry(props) {
|
|
|
113
134
|
} else {
|
|
114
135
|
const textDisplayStatus = determineDisplayStatus(
|
|
115
136
|
status,
|
|
116
|
-
activeText,
|
|
137
|
+
activeText ?? false,
|
|
117
138
|
);
|
|
118
139
|
const textStatusClass =
|
|
119
140
|
mapStatusClassName(textDisplayStatus);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import {memo, useMemo} from "react";
|
|
2
|
-
import {getDocumentLanguage} from "../../helpers/i18n";
|
|
3
2
|
|
|
3
|
+
import {getDocumentLanguage} from "../../helpers/i18n";
|
|
4
4
|
import GroupedSwitcher from "../switcher/GroupedSwitcher";
|
|
5
|
-
|
|
6
5
|
import createTagSwitcherEntry from "./createTagSwitcherEntry";
|
|
7
6
|
import createTagSwitcherHeader from "./createTagSwitcherHeader";
|
|
8
7
|
|
package/src/js/components/tag-switcher/{createTagSwitcherEntry.js → createTagSwitcherEntry.ts}
RENAMED
|
@@ -1,28 +1,26 @@
|
|
|
1
1
|
import {connect} from "react-redux";
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {createTagVisibleSelector} from "../../store/selectors.ts";
|
|
3
|
+
import {setTagVisible} from "../../store/actions";
|
|
4
|
+
import type {RootStateSlice} from "../../store/selectors";
|
|
5
|
+
import {createTagVisibleSelector} from "../../store/selectors";
|
|
7
6
|
import SwitcherEntry from "../switcher/SwitcherEntry";
|
|
8
7
|
|
|
9
8
|
export default function createTagSwitcherEntry(
|
|
10
|
-
featureSourceId,
|
|
11
|
-
tagGroup,
|
|
12
|
-
tagName,
|
|
9
|
+
featureSourceId: string,
|
|
10
|
+
tagGroup: string,
|
|
11
|
+
tagName: string,
|
|
13
12
|
) {
|
|
13
|
+
const visibilitySelector = createTagVisibleSelector(
|
|
14
|
+
featureSourceId,
|
|
15
|
+
tagGroup,
|
|
16
|
+
tagName,
|
|
17
|
+
);
|
|
18
|
+
|
|
14
19
|
return connect(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
visibility: createTagVisibleSelector(
|
|
18
|
-
featureSourceId,
|
|
19
|
-
tagGroup,
|
|
20
|
-
tagName,
|
|
21
|
-
),
|
|
20
|
+
(state: RootStateSlice) => ({
|
|
21
|
+
visibility: visibilitySelector(state),
|
|
22
22
|
}),
|
|
23
|
-
// mapDispatchToProps:
|
|
24
23
|
null,
|
|
25
|
-
// mergeProps:
|
|
26
24
|
({visibility}, {dispatch}, {...ownProps}) => ({
|
|
27
25
|
title: tagName,
|
|
28
26
|
active: visibility,
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {connect} from "react-redux";
|
|
2
|
+
|
|
3
|
+
import {setTagGroupVisible} from "../../store/actions";
|
|
4
|
+
import {
|
|
5
|
+
type RootStateSlice,
|
|
6
|
+
createTagGroupVisibleSelector,
|
|
7
|
+
} from "../../store/selectors";
|
|
8
|
+
import SwitcherHeader from "../switcher/SwitcherHeader";
|
|
9
|
+
|
|
10
|
+
type Props = {
|
|
11
|
+
toggleable?: boolean;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export default function createTagSwitcherHeader(
|
|
15
|
+
featureSourceId: string,
|
|
16
|
+
tagGroup: string,
|
|
17
|
+
) {
|
|
18
|
+
const visibilitySelector = createTagGroupVisibleSelector(
|
|
19
|
+
featureSourceId,
|
|
20
|
+
tagGroup,
|
|
21
|
+
);
|
|
22
|
+
return connect(
|
|
23
|
+
(state: RootStateSlice) => ({
|
|
24
|
+
visibility: visibilitySelector(state),
|
|
25
|
+
}),
|
|
26
|
+
null,
|
|
27
|
+
(
|
|
28
|
+
{visibility},
|
|
29
|
+
{dispatch},
|
|
30
|
+
{toggleable = false, ...ownProps}: Props,
|
|
31
|
+
) => ({
|
|
32
|
+
label: tagGroup,
|
|
33
|
+
active: !toggleable || visibility,
|
|
34
|
+
toggleActive: toggleable
|
|
35
|
+
? () =>
|
|
36
|
+
dispatch(
|
|
37
|
+
setTagGroupVisible(
|
|
38
|
+
featureSourceId,
|
|
39
|
+
tagGroup,
|
|
40
|
+
!visibility,
|
|
41
|
+
),
|
|
42
|
+
)
|
|
43
|
+
: undefined,
|
|
44
|
+
...ownProps,
|
|
45
|
+
}),
|
|
46
|
+
)(SwitcherHeader);
|
|
47
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {connect} from "react-redux";
|
|
2
|
+
|
|
3
|
+
import type {RootStateSlice} from "../../store/selectors";
|
|
4
|
+
import {
|
|
5
|
+
tagSwitcherFeatureSourceIdSelector,
|
|
6
|
+
tagSwitcherSortTags,
|
|
7
|
+
tagSwitcherTagsSelector,
|
|
8
|
+
tagSwitcherToggleableGroups,
|
|
9
|
+
} from "../../store/selectors";
|
|
10
|
+
import TagSwitcher from "./TagSwitcher";
|
|
11
|
+
|
|
12
|
+
export default connect((state: RootStateSlice) => ({
|
|
13
|
+
featureSourceId: tagSwitcherFeatureSourceIdSelector(state),
|
|
14
|
+
groupedTagData: tagSwitcherTagsSelector(state),
|
|
15
|
+
toggleableGroups: tagSwitcherToggleableGroups(state),
|
|
16
|
+
sortTags: tagSwitcherSortTags(state),
|
|
17
|
+
}))(TagSwitcher);
|
|
@@ -1,34 +1,37 @@
|
|
|
1
1
|
import {connect} from "react-redux";
|
|
2
2
|
|
|
3
|
-
import {createStructuredSelector} from "reselect";
|
|
4
|
-
|
|
5
3
|
import {deselectAll} from "@mapsight/core/lib/feature-selections/actions";
|
|
6
4
|
|
|
5
|
+
import type {View} from "../../config/constants/app";
|
|
7
6
|
import {FEATURE_SELECTIONS} from "../../config/constants/controllers";
|
|
8
7
|
import {FEATURE_SELECTION_SELECT} from "../../config/feature/selections";
|
|
9
|
-
import {setView} from "../../store/actions
|
|
8
|
+
import {setView} from "../../store/actions";
|
|
9
|
+
import type {RootStateSlice} from "../../store/selectors";
|
|
10
10
|
import {
|
|
11
11
|
isMapOutOfViewportSelector,
|
|
12
12
|
isViewMobile,
|
|
13
13
|
viewSelector,
|
|
14
14
|
viewToggleOptionsSelector,
|
|
15
|
-
} from "../../store/selectors
|
|
15
|
+
} from "../../store/selectors";
|
|
16
16
|
import ViewToggleButton from "./view-toggle-button";
|
|
17
17
|
|
|
18
18
|
export default connect(
|
|
19
|
-
|
|
20
|
-
view: viewSelector,
|
|
21
|
-
isMapOutOfViewport: isMapOutOfViewportSelector,
|
|
22
|
-
options: viewToggleOptionsSelector,
|
|
19
|
+
(state: RootStateSlice) => ({
|
|
20
|
+
view: viewSelector(state),
|
|
21
|
+
isMapOutOfViewport: isMapOutOfViewportSelector(state),
|
|
22
|
+
options: viewToggleOptionsSelector(state),
|
|
23
23
|
}),
|
|
24
24
|
null,
|
|
25
25
|
({options, ...stateProps}, {dispatch}, ownProps) => ({
|
|
26
26
|
...stateProps,
|
|
27
27
|
dispatch: dispatch,
|
|
28
|
-
changeView: (currentView, nextView) => {
|
|
28
|
+
changeView: (currentView: View, nextView: View) => {
|
|
29
29
|
dispatch(setView(nextView));
|
|
30
30
|
|
|
31
|
-
if (
|
|
31
|
+
if (
|
|
32
|
+
options?.deselectFeaturesOnToggle &&
|
|
33
|
+
isViewMobile(currentView)
|
|
34
|
+
) {
|
|
32
35
|
dispatch(
|
|
33
36
|
deselectAll(FEATURE_SELECTIONS, FEATURE_SELECTION_SELECT),
|
|
34
37
|
);
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
VIEW_MOBILE,
|
|
9
9
|
} from "../../config/constants/app";
|
|
10
10
|
import {translate} from "../../helpers/i18n";
|
|
11
|
-
import {viewSelector} from "../../store/selectors
|
|
11
|
+
import {viewSelector} from "../../store/selectors";
|
|
12
12
|
|
|
13
13
|
function getOtherView(view) {
|
|
14
14
|
switch (view) {
|
|
@@ -37,7 +37,7 @@ export function useContextComponentWithFallback<
|
|
|
37
37
|
N extends keyof ComponentPropsWithFallback,
|
|
38
38
|
>(
|
|
39
39
|
componentName: N,
|
|
40
|
-
): (fallback
|
|
40
|
+
): (fallback?: ReactNode, props?: ComponentPropsWithFallback[N]) => ReactNode {
|
|
41
41
|
const Comp = useContext(ComponentsContext)[componentName];
|
|
42
42
|
return useCallback(
|
|
43
43
|
(fallback, props) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// FIXME: use es once default export is fixed in @mapsight/lib-redux
|
|
2
|
-
import type {AnyAction, StoreEnhancer} from "
|
|
3
|
-
import {applyMiddleware} from "
|
|
2
|
+
import type {AnyAction, StoreEnhancer} from "@reduxjs/toolkit";
|
|
3
|
+
import {applyMiddleware} from "@reduxjs/toolkit";
|
|
4
4
|
|
|
5
5
|
import {isNonNullable} from "@mapsight/lib-js/nonNullable";
|
|
6
6
|
import flattenActions from "@mapsight/lib-redux/flatten-actions";
|
|
@@ -17,7 +17,7 @@ export default function createActionWatcher(): Result {
|
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
context.enhancer = applyMiddleware(
|
|
20
|
-
(_store) => (nextMiddleware) => (action) => {
|
|
20
|
+
(_store) => (nextMiddleware) => (action: AnyAction) => {
|
|
21
21
|
const result = nextMiddleware(action);
|
|
22
22
|
|
|
23
23
|
if (isNonNullable(context.handler)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {useEffect, useState} from "react";
|
|
2
2
|
|
|
3
|
-
type Mountable = {
|
|
3
|
+
export type Mountable = {
|
|
4
4
|
/** mount function, receives element as parameter */
|
|
5
5
|
mount(element: Element): void;
|
|
6
6
|
|
|
@@ -8,6 +8,15 @@ type Mountable = {
|
|
|
8
8
|
unmount(element: Element): void;
|
|
9
9
|
};
|
|
10
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
|
+
|
|
11
20
|
/**
|
|
12
21
|
* Mounts the mountable object to the element
|
|
13
22
|
*
|
|
@@ -2,18 +2,17 @@ import type {DependencyList} from "react";
|
|
|
2
2
|
import {useCallback, useEffect, useRef, useState} from "react";
|
|
3
3
|
|
|
4
4
|
type Options = {
|
|
5
|
-
|
|
5
|
+
stuckHeaderHeight?: number;
|
|
6
6
|
resetDeps?: DependencyList;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
export default function useStickyHeader
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}: Options) {
|
|
9
|
+
export default function useStickyHeader<
|
|
10
|
+
TElement extends HTMLElement = HTMLElement,
|
|
11
|
+
>({stuckHeaderHeight = 30, resetDeps = []}: Options) {
|
|
13
12
|
const [isHeaderStuck, setIsHeaderStuck] = useState(false);
|
|
14
13
|
const [stickThreshold, setStickThreshold] = useState(0);
|
|
15
14
|
|
|
16
|
-
const stickyHeaderRef = useRef<
|
|
15
|
+
const stickyHeaderRef = useRef<TElement | null>(null);
|
|
17
16
|
const stickyScrollAreaRef = useRef<{scrollTop: number} | null>(null);
|
|
18
17
|
|
|
19
18
|
const onScroll = useCallback(
|
|
@@ -38,9 +37,9 @@ export default function useStickyHeader({
|
|
|
38
37
|
useEffect(() => {
|
|
39
38
|
if (stickyHeaderRef.current) {
|
|
40
39
|
const headerSize = stickyHeaderRef.current.offsetHeight;
|
|
41
|
-
setStickThreshold(headerSize -
|
|
40
|
+
setStickThreshold(headerSize - stuckHeaderHeight);
|
|
42
41
|
}
|
|
43
|
-
}, [stickyHeaderRef.current?.offsetHeight,
|
|
42
|
+
}, [stickyHeaderRef.current?.offsetHeight, stuckHeaderHeight]);
|
|
44
43
|
|
|
45
44
|
return {
|
|
46
45
|
isHeaderStuck,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {RefObject} from "react";
|
|
2
2
|
import {useCallback} from "react";
|
|
3
3
|
|
|
4
|
-
import type {Dispatch} from "
|
|
4
|
+
import type {Dispatch} from "@reduxjs/toolkit";
|
|
5
5
|
|
|
6
6
|
import {async} from "@mapsight/core/lib/base/actions";
|
|
7
7
|
import {updateMapSize} from "@mapsight/core/lib/map/actions";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type {RefObject} from "react";
|
|
2
2
|
import {useEffect} from "react";
|
|
3
3
|
|
|
4
|
-
import type {Dispatch} from "
|
|
4
|
+
import type {Dispatch} from "@reduxjs/toolkit";
|
|
5
5
|
|
|
6
6
|
import type {MainPanelPosition} from "../types";
|
|
7
7
|
import useUpdateMapSizeCallback from "./useUpdateMapSizeCallback";
|
package/src/js/index.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import {applyMiddleware, compose} from "@reduxjs/toolkit";
|
|
1
2
|
import merge from "lodash/merge";
|
|
2
|
-
import {
|
|
3
|
-
import thunk from "redux-thunk";
|
|
3
|
+
import {thunk} from "redux-thunk";
|
|
4
4
|
|
|
5
5
|
import {createMapsightStore} from "@mapsight/core";
|
|
6
6
|
import {layerIdsExternalSwitcherSelector} from "@mapsight/core/lib/map/selectors";
|
|
@@ -25,7 +25,7 @@ import type {
|
|
|
25
25
|
} from "./types";
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
* Default mapsight ui renderer (Does nothing
|
|
28
|
+
* Default mapsight ui renderer (Does nothing but log a warning!).
|
|
29
29
|
*/
|
|
30
30
|
const defaultRenderer: MapsightUiRenderer<void> = (
|
|
31
31
|
_container,
|
|
@@ -189,6 +189,7 @@ export function create(
|
|
|
189
189
|
|
|
190
190
|
// store enhancer
|
|
191
191
|
const uiStoreEnhancer = applyMiddleware(thunk);
|
|
192
|
+
// @ts-expect-error TODO
|
|
192
193
|
context.storeEnhancer = context.createOptions.storeEnhancer
|
|
193
194
|
? compose(uiStoreEnhancer, context.createOptions.storeEnhancer)
|
|
194
195
|
: uiStoreEnhancer;
|