diff --git a/docs/plugins/interface.md b/docs/plugins/interface.md new file mode 100644 index 0000000000000000000000000000000000000000..7701cb9a23607801d2d661462a346c875127490e --- /dev/null +++ b/docs/plugins/interface.md @@ -0,0 +1,28 @@ +### Interface + +#### getOpenedPanel + +Return string identifying panel that is currently opened. Available options: +``` +undefined +'none' +'search' +'project-info' +'plugins' +'export' +'legend' +'submaps' +'reaction' +'overlays' +'bio-entity' +'comment' +'available-plugins' +'layers'; +``` + +##### Example of getOpenedPanel method usage: + +```javascript +window.minerva.map.data.getOpenedPanel(); +``` + diff --git a/index.d.ts b/index.d.ts index 2e109d808e96a3525d41b8b7b17e26eb82727e9a..b08f4aae3879b8e194c475ddfa3573ec0499b733 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2,7 +2,6 @@ import { getBounds } from '@/services/pluginsManager/map/data/getBounds'; import { fitBounds } from '@/services/pluginsManager/map/fitBounds'; import { getOpenMapId } from '@/services/pluginsManager/map/getOpenMapId'; import { triggerSearch } from '@/services/pluginsManager/map/triggerSearch'; -import { MinervaConfiguration } from '@/services/pluginsManager/pluginsManager'; import { getModels } from '@/services/pluginsManager/map/models/getModels'; import { openMap } from '@/services/pluginsManager/map/openMap'; import { getCenter } from '@/services/pluginsManager/map/position/getCenter'; @@ -21,6 +20,7 @@ import { hideDataOverlay } from '@/services/pluginsManager/map/overlays/hideData import { removeDataOverlay } from '@/services/pluginsManager/map/overlays/removeDataOverlay'; import { addDataOverlay } from '@/services/pluginsManager/map/overlays/addDataOverlay'; import { getApiUrls } from '@/services/pluginsManager/project/data/getApiUrls'; +import { getOpenedPanel } from '@/services/pluginsManager/interface/getOpenedPanel'; type Plugin = { pluginName: string; @@ -73,6 +73,9 @@ declare global { getCenter: typeof getCenter; setCenter: typeof setCenter; }; + interface: { + getOpenedPanel: typeof getOpenedPanel; + }; overviewImage: { getCurrentOverviewImage: typeof getCurrentOverviewImage; getOverviewImages: typeof getOverviewImages; diff --git a/src/redux/drawer/drawer.selectors.ts b/src/redux/drawer/drawer.selectors.ts index 6c3a2a016bd005b4afde1d2a6500d48f17be3c92..05a64d2edd7ad18cb859b0b24a568ff2049604e6 100644 --- a/src/redux/drawer/drawer.selectors.ts +++ b/src/redux/drawer/drawer.selectors.ts @@ -147,3 +147,10 @@ export const searchDrawerOpenSelector = createSelector( export const resultDrawerOpen = createSelector(drawerSelector, drawer => { return drawer.isOpen && RESULT_DRAWERS.includes(drawer.drawerName); }); + +export const openedDrawerSelector = createSelector(drawerSelector, drawer => { + if (drawer.isOpen) { + return drawer.drawerName; + } + return undefined; +}); diff --git a/src/services/pluginsManager/interface/getOpenedPanel.ts b/src/services/pluginsManager/interface/getOpenedPanel.ts new file mode 100644 index 0000000000000000000000000000000000000000..7124e0af1134ed98fb95e3403009bb49877ebf61 --- /dev/null +++ b/src/services/pluginsManager/interface/getOpenedPanel.ts @@ -0,0 +1,9 @@ +import { store } from '@/redux/store'; +import { openedDrawerSelector } from '@/redux/drawer/drawer.selectors'; + +export const getOpenedPanel = (): string | undefined => { + const { getState } = store; + const drawerName = openedDrawerSelector(getState()); + + return drawerName; +}; diff --git a/src/services/pluginsManager/pluginsManager.ts b/src/services/pluginsManager/pluginsManager.ts index 60d8942a1547067ea4201faaac7e4ea3786d2987..3f3264522d9e6bdefe03e7f9debea7458d7e29cb 100644 --- a/src/services/pluginsManager/pluginsManager.ts +++ b/src/services/pluginsManager/pluginsManager.ts @@ -9,6 +9,7 @@ import { getPluginHashWithoutPrefix } from '@/utils/plugins/getPluginHashWithout import { ONE, ZERO } from '@/constants/common'; import { minervaDefine } from '@/services/pluginsManager/map/minervaDefine'; import { PluginsContextMenu } from '@/services/pluginsManager/pluginContextMenu/pluginsContextMenu'; +import { getOpenedPanel } from '@/services/pluginsManager/interface/getOpenedPanel'; import { bioEntitiesMethods } from './bioEntities'; import { getModels } from './map/models/getModels'; import { openMap } from './map/openMap'; @@ -78,6 +79,9 @@ export const PluginsManager: PluginsManagerType = { data: { bioEntities: bioEntitiesMethods, }, + interface: { + getOpenedPanel, + }, map: { data: { getBounds,