From 4a9d3eb1e717fcb78bd61cc59f53219b6b77b5b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Mon, 17 Feb 2025 12:16:14 +0100 Subject: [PATCH 01/15] feat(layer-text): add transform interaction for layer text and delete functionality --- ...eObjectEditFactoryModal.component.test.tsx | 38 ++- ...rImageObjectEditFactoryModal.component.tsx | 21 +- .../LayerDrawerTextItem.component.tsx | 70 +++- .../LayersDrawer/LayersDrawer.component.tsx | 4 +- .../LayersDrawerImageItem.component.tsx | 4 +- .../LayersDrawerObjectsList.component.tsx | 147 +++++--- .../Map/MapViewer/MapViewer.component.tsx | 8 +- .../useOlMapAdditionalLayers.ts | 34 +- .../utils/shapes/elements/Glyph/Glyph.ts | 10 +- .../Map/MapViewer/utils/shapes/layer/Layer.ts | 56 ++-- .../Glyph => layer/elements}/LayerImage.ts | 33 +- .../elements/LayerText.test.ts} | 28 +- .../utils/shapes/layer/elements/LayerText.ts | 315 ++++++++++++++++++ ...est.ts => getTransformInteraction.test.ts} | 6 +- ...eraction.ts => getTransformInteraction.ts} | 40 +-- .../utils/updateElement.ts} | 12 +- .../Map/MapViewer/utils/shapes/text/Text.ts | 145 -------- .../utils/shapes/text/getTextCoords.ts | 9 +- .../utils/websocket/processLayerImage.ts | 4 +- .../utils/websocket/processLayerText.ts | 33 +- src/models/layerTextSchema.ts | 4 +- src/redux/apiPath.ts | 4 + src/redux/layers/layers.reducers.ts | 32 ++ src/redux/layers/layers.slice.ts | 6 + src/redux/layers/layers.thunks.ts | 86 ++++- src/redux/mapEditTools/mapEditTools.mock.ts | 2 +- .../mapEditTools/mapEditTools.reducers.ts | 6 +- .../mapEditTools/mapEditTools.selectors.ts | 4 +- src/redux/mapEditTools/mapEditTools.types.ts | 4 +- 29 files changed, 818 insertions(+), 347 deletions(-) rename src/components/Map/MapViewer/utils/shapes/{elements/Glyph => layer/elements}/LayerImage.ts (54%) rename src/components/Map/MapViewer/utils/shapes/{text/Text.test.ts => layer/elements/LayerText.test.ts} (75%) create mode 100644 src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts rename src/components/Map/MapViewer/utils/shapes/layer/interaction/{getTransformImageInteraction.test.ts => getTransformInteraction.test.ts} (85%) rename src/components/Map/MapViewer/utils/shapes/layer/interaction/{getTransformImageInteraction.ts => getTransformInteraction.ts} (76%) rename src/components/Map/MapViewer/utils/shapes/{elements/Glyph/updateGlyph.ts => layer/utils/updateElement.ts} (60%) delete mode 100644 src/components/Map/MapViewer/utils/shapes/text/Text.ts diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx index 0c0973f2..29a26c8b 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx @@ -81,7 +81,13 @@ const renderComponent = ( describe('LayerImageObjectEditFactoryModal - component', () => { it('should render LayerImageObjectEditFactoryModal component with initial state', () => { - renderComponent(); + renderComponent({ + activeAction: null, + layerObject: { + ...layerImageFixture, + glyph: null, + }, + }); expect(screen.getByText(/Glyph:/i)).toBeInTheDocument(); expect(screen.getByText(/File:/i)).toBeInTheDocument(); @@ -90,7 +96,13 @@ describe('LayerImageObjectEditFactoryModal - component', () => { }); it('should display a list of glyphs in the dropdown', async () => { - renderComponent(); + renderComponent({ + activeAction: null, + layerObject: { + ...layerImageFixture, + glyph: null, + }, + }); const dropdown = screen.getByTestId('autocomplete'); if (!dropdown.firstChild) { @@ -102,7 +114,13 @@ describe('LayerImageObjectEditFactoryModal - component', () => { }); it('should update the selected glyph on dropdown change', async () => { - renderComponent(); + renderComponent({ + activeAction: null, + layerObject: { + ...layerImageFixture, + glyph: null, + }, + }); const dropdown = screen.getByTestId('autocomplete'); if (!dropdown.firstChild) { @@ -142,13 +160,13 @@ describe('LayerImageObjectEditFactoryModal - component', () => { }; const getGlyphDataMock = jest.fn(() => glyphData); jest.spyOn(layerObjectFeature, 'get').mockImplementation(key => { - if (key === 'update') return (): void => {}; - if (key === 'getGlyphData') return getGlyphDataMock; + if (key === 'updateElement') return (): void => {}; + if (key === 'getObjectData') return getGlyphDataMock; return undefined; }); renderComponent({ activeAction: MAP_EDIT_ACTIONS.TRANSFORM_IMAGE, - layerImageObject: glyphData, + layerObject: glyphData, }); const submitButton = screen.getByText(/Submit/i); @@ -164,7 +182,13 @@ describe('LayerImageObjectEditFactoryModal - component', () => { }); it('should display "No Image" when there is no image file', () => { - const { store } = renderComponent(); + const { store } = renderComponent({ + activeAction: null, + layerObject: { + ...layerImageFixture, + glyph: null, + }, + }); store.dispatch({ type: 'glyphs/clearGlyphData', diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx index e4dfcdd0..dc280845 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; -import { mapEditToolsLayerImageObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; import { LayerImageObjectForm } from '@/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectForm.component'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { addGlyph } from '@/redux/glyphs/glyphs.thunks'; @@ -13,24 +13,25 @@ import { showToast } from '@/utils/showToast'; import { closeModal } from '@/redux/modal/modal.slice'; import { SerializedError } from '@reduxjs/toolkit'; import { useMapInstance } from '@/utils/context/mapInstanceContext'; -import updateGlyph from '@/components/Map/MapViewer/utils/shapes/elements/Glyph/updateGlyph'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; export const LayerImageObjectEditFactoryModal: React.FC = () => { - const layerImageObject = useAppSelector(mapEditToolsLayerImageObjectSelector); + const layerObject = useAppSelector(mapEditToolsLayerObjectSelector); const { mapInstance } = useMapInstance(); + if (!layerObject || !('glyph' in layerObject)) { + throw new Error('Invalid layer image object'); + } const currentModelId = useAppSelector(currentModelIdSelector); const dispatch = useAppDispatch(); - const [selectedGlyph, setSelectedGlyph] = useState<number | null>( - layerImageObject?.glyph || null, - ); + const [selectedGlyph, setSelectedGlyph] = useState<number | null>(layerObject?.glyph || null); const [file, setFile] = useState<File | null>(null); const [isSending, setIsSending] = useState<boolean>(false); const handleSubmit = async (): Promise<void> => { - if (!layerImageObject) { + if (!layerObject) { return; } setIsSending(true); @@ -47,8 +48,8 @@ export const LayerImageObjectEditFactoryModal: React.FC = () => { const layerImage = await dispatch( updateLayerImageObject({ modelId: currentModelId, - layerId: layerImageObject.layer, - ...layerImageObject, + layerId: layerObject.layer, + ...layerObject, glyph: glyphId, }), ).unwrap(); @@ -57,7 +58,7 @@ export const LayerImageObjectEditFactoryModal: React.FC = () => { layerUpdateImage({ modelId: currentModelId, layerId: layerImage.layer, layerImage }), ); dispatch(mapEditToolsSetLayerObject(layerImage)); - updateGlyph(mapInstance, layerImage.layer, layerImage); + updateElement(mapInstance, layerImage.layer, layerImage); } showToast({ type: 'success', diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx index 12a7959c..6f57c762 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx @@ -1,18 +1,80 @@ -import { JSX } from 'react'; +import React, { JSX, useMemo } from 'react'; import { LayerText } from '@/types/models'; import { Icon } from '@/shared/Icon'; +import { LayersDrawerObjectActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; interface LayersDrawerTextItemProps { layerText: LayerText; + bringToFront: () => void; + bringToBack: () => void; + removeObject: () => void; + centerObject: () => void; + editObject: () => void; + isLayerVisible: boolean; + isLayerActive: boolean; } export const LayersDrawerTextItem = ({ layerText, + bringToFront, + bringToBack, + removeObject, + centerObject, + editObject, + isLayerVisible, + isLayerActive, }: LayersDrawerTextItemProps): JSX.Element | null => { + const dispatch = useAppDispatch(); + const activeLayerObject = useAppSelector(mapEditToolsLayerObjectSelector); + const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); + + const showActions = useMemo(() => { + return activeLayerObject?.id === layerText.id; + }, [activeLayerObject?.id, layerText.id]); + + const canSelectItem = useMemo(() => { + return isLayerVisible && isLayerActive && hasPrivilegeToWriteProject; + }, [isLayerVisible, isLayerActive, hasPrivilegeToWriteProject]); + + const selectItem = useMemo(() => { + return (): void => { + if (canSelectItem) { + dispatch(mapEditToolsSetLayerObject(layerText)); + } + }; + }, [canSelectItem, dispatch, layerText]); + + const handleKeyPress = (): void => {}; + return ( - <div className="flex min-h-[24px] gap-2"> - <Icon name="text" className="shrink-0" /> - <span className="truncate">{layerText.notes}</span> + <div + className="flex min-h-[24px] items-center justify-between gap-2" + id={`layer-text-item-${layerText.id}`} + > + <div + className={`flex gap-2 ${canSelectItem ? 'cursor-pointer' : 'cursor-default'}`} + onClick={selectItem} + tabIndex={0} + onKeyDown={handleKeyPress} + role="button" + > + <Icon name="text" className="shrink-0" /> + <span className="truncate">{layerText.notes}</span> + </div> + {showActions && ( + <LayersDrawerObjectActions + bringToFront={bringToFront} + bringToBack={bringToBack} + removeObject={removeObject} + centerObject={centerObject} + editObject={editObject} + /> + )} </div> ); }; diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index df941aca..12bef081 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -8,14 +8,14 @@ import { JSX, useEffect, useRef } from 'react'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; import { LayersDrawerLayer } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component'; -import { mapEditToolsLayerImageObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; export const LayersDrawer = (): JSX.Element => { const layersForCurrentModel = useAppSelector(layersForCurrentModelSelector); const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); const dispatch = useAppDispatch(); const layersDrawerRef = useRef<HTMLDivElement>(null); - const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerImageObjectSelector); + const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); const addNewLayer = (): void => { dispatch(openLayerFactoryModal()); diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx index d2884a5b..0622f141 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx @@ -4,7 +4,7 @@ import { Icon } from '@/shared/Icon'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { glyphFileNameByIdSelector } from '@/redux/glyphs/glyphs.selectors'; import { LayersDrawerObjectActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component'; -import { mapEditToolsLayerImageObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; @@ -31,7 +31,7 @@ export const LayersDrawerImageItem = ({ isLayerActive, }: LayersDrawerImageItemProps): JSX.Element | null => { const dispatch = useAppDispatch(); - const activeLayerImage = useAppSelector(mapEditToolsLayerImageObjectSelector); + const activeLayerImage = useAppSelector(mapEditToolsLayerObjectSelector); const fileName = useAppSelector(state => glyphFileNameByIdSelector(state, layerImage.glyph)); const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index fca7a858..fa98e051 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -9,19 +9,23 @@ import { JSX, useState } from 'react'; import { LayersDrawerImageItem } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component'; import { LayersDrawerTextItem } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component'; import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; -import { removeLayerImage, updateLayerImageObject } from '@/redux/layers/layers.thunks'; -import { layerDeleteImage, layerUpdateImage } from '@/redux/layers/layers.slice'; +import { + removeLayerImage, + removeLayerText, + updateLayerImageObject, +} from '@/redux/layers/layers.thunks'; +import { layerDeleteImage, layerDeleteText, layerUpdateImage } from '@/redux/layers/layers.slice'; import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; -import { LayerImage } from '@/types/models'; +import { LayerImage, LayerText } from '@/types/models'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { useMapInstance } from '@/utils/context/mapInstanceContext'; import { mapModelIdSelector } from '@/redux/map/map.selectors'; import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; -import updateGlyph from '@/components/Map/MapViewer/utils/shapes/elements/Glyph/updateGlyph'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; import { useSetBounds } from '@/utils/map/useSetBounds'; -import { mapEditToolsLayerImageObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; import { usePointToProjection } from '@/utils/map/usePointToProjection'; import { Coordinate } from 'ol/coordinate'; import { openLayerImageObjectEditFactoryModal } from '@/redux/modal/modal.slice'; @@ -32,6 +36,19 @@ interface LayersDrawerObjectsListProps { isLayerActive: boolean; } +const removeObjectConfig = { + image: { + question: 'Are you sure you want to remove the image?', + successMessage: 'The layer image has been successfully removed', + errorMessage: 'An error occurred while removing the layer text', + }, + text: { + question: 'Are you sure you want to remove the text?', + successMessage: 'The layer text has been successfully removed', + errorMessage: 'An error occurred while removing the layer text', + }, +}; + export const LayersDrawerObjectsList = ({ layerId, isLayerVisible, @@ -41,57 +58,81 @@ export const LayersDrawerObjectsList = ({ const highestZIndex = useAppSelector(highestZIndexSelector); const lowestZIndex = useAppSelector(lowestZIndexSelector); const layer = useAppSelector(state => layerByIdSelector(state, layerId)); - const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerImageObjectSelector); - const [isImageRemoveModalOpen, setIsImageRemoveModalOpen] = useState(false); - const [layerImageToRemove, setLayerImageToRemove] = useState<LayerImage | null>(null); + const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); + const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image'>(undefined); + const [layerObjectToRemove, setLayerObjectToRemove] = useState<LayerImage | LayerText | null>( + null, + ); const dispatch = useAppDispatch(); const setBounds = useSetBounds(); const pointToProjection = usePointToProjection(); const { mapInstance } = useMapInstance(); - const removeImage = (layerImage: LayerImage): void => { - setLayerImageToRemove(layerImage); - setIsImageRemoveModalOpen(true); + const removeObject = (layerObject: LayerImage | LayerText): void => { + setLayerObjectToRemove(layerObject); + if ('glyph' in layerObject) { + setRemoveModalState('image'); + } else { + setRemoveModalState('text'); + } }; - const rejectImageRemove = (): void => { - setIsImageRemoveModalOpen(false); + const rejectRemove = (): void => { + setRemoveModalState(undefined); }; - const confirmImageRemove = async (): Promise<void> => { - if (!layerImageToRemove) { + const confirmRemove = async (): Promise<void> => { + if (!layerObjectToRemove || !removeModalState) { return; } + try { - await dispatch( - removeLayerImage({ - modelId: currentModelId, - layerId: layerImageToRemove.layer, - imageId: layerImageToRemove.id, - }), - ).unwrap(); - dispatch( - layerDeleteImage({ - modelId: currentModelId, - layerId: layerImageToRemove.layer, - imageId: layerImageToRemove.id, - }), - ); + if (removeModalState === 'text') { + await dispatch( + removeLayerText({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + textId: layerObjectToRemove.id, + }), + ).unwrap(); + dispatch( + layerDeleteText({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + textId: layerObjectToRemove.id, + }), + ); + } else { + await dispatch( + removeLayerImage({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + imageId: layerObjectToRemove.id, + }), + ).unwrap(); + dispatch( + layerDeleteImage({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + imageId: layerObjectToRemove.id, + }), + ); + } removeElementFromLayer({ mapInstance, - layerId: layerImageToRemove.layer, - featureId: layerImageToRemove.id, + layerId: layerObjectToRemove.layer, + featureId: layerObjectToRemove.id, }); showToast({ type: 'success', - message: 'The layer image has been successfully removed', + message: removeObjectConfig[removeModalState].successMessage, }); - setIsImageRemoveModalOpen(false); + setRemoveModalState(undefined); } catch (error) { const typedError = error as SerializedError; showToast({ type: 'error', - message: typedError.message || 'An error occurred while removing the layer image', + message: typedError.message || removeObjectConfig[removeModalState].errorMessage, }); } }; @@ -120,7 +161,7 @@ export const LayersDrawerObjectsList = ({ }), ); dispatch(mapEditToolsSetLayerObject(newLayerImage)); - updateGlyph(mapInstance, newLayerImage.layer, newLayerImage); + updateElement(mapInstance, newLayerImage.layer, newLayerImage); } }; @@ -132,12 +173,12 @@ export const LayersDrawerObjectsList = ({ await updateImageZIndex({ zIndex: lowestZIndex - 1, layerImage }); }; - const centerObject = (layerImage: LayerImage): void => { - if (mapEditToolsLayerImageObject && mapEditToolsLayerImageObject.id === layerImage.id) { - const point1 = pointToProjection({ x: layerImage.x, y: layerImage.y }); + const centerObject = (layerObject: LayerImage | LayerText): void => { + if (mapEditToolsLayerImageObject && mapEditToolsLayerImageObject.id === layerObject.id) { + const point1 = pointToProjection({ x: layerObject.x, y: layerObject.y }); const point2 = pointToProjection({ - x: layerImage.x + layerImage.width, - y: layerImage.y + layerImage.height, + x: layerObject.x + layerObject.width, + y: layerObject.y + layerObject.height, }); setBounds([point1, point2] as Coordinate[]); } @@ -154,13 +195,27 @@ export const LayersDrawerObjectsList = ({ return ( <div className={`${isLayerVisible ? 'opacity-100' : 'opacity-40'} flex flex-col gap-1 ps-3`}> <QuestionModal - isOpen={isImageRemoveModalOpen} - onClose={rejectImageRemove} - onConfirm={confirmImageRemove} - question="Are you sure you want to remove the image?" + isOpen={Boolean(removeModalState)} + onClose={rejectRemove} + onConfirm={confirmRemove} + question={ + removeModalState + ? removeObjectConfig[removeModalState].question + : 'Are you sure you want to remove the object' + } /> {Object.values(layer.texts).map(layerText => ( - <LayersDrawerTextItem layerText={layerText} key={layerText.id} /> + <LayersDrawerTextItem + layerText={layerText} + key={layerText.id} + bringToFront={() => {}} + bringToBack={() => {}} + removeObject={() => removeObject(layerText)} + centerObject={() => centerObject(layerText)} + editObject={() => {}} + isLayerVisible={isLayerVisible} + isLayerActive={isLayerActive} + /> ))} {Object.values(layer.images).map(layerImage => ( <LayersDrawerImageItem @@ -168,7 +223,7 @@ export const LayersDrawerObjectsList = ({ key={layerImage.id} bringToFront={() => bringImageToFront(layerImage)} bringToBack={() => bringImageToBack(layerImage)} - removeObject={() => removeImage(layerImage)} + removeObject={() => removeObject(layerImage)} centerObject={() => centerObject(layerImage)} editObject={() => editImage()} isLayerVisible={isLayerVisible} diff --git a/src/components/Map/MapViewer/MapViewer.component.tsx b/src/components/Map/MapViewer/MapViewer.component.tsx index 0307cf08..faf874c1 100644 --- a/src/components/Map/MapViewer/MapViewer.component.tsx +++ b/src/components/Map/MapViewer/MapViewer.component.tsx @@ -1,13 +1,17 @@ import 'ol/ol.css'; import { twMerge } from 'tailwind-merge'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; -import { isMapEditToolsActiveSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { + isMapEditToolsActiveSelector, + mapEditToolsLayerObjectSelector, +} from '@/redux/mapEditTools/mapEditTools.selectors'; import { useOlMap } from './utils/useOlMap'; import { MAP_VIEWER_ROLE } from './MapViewer.constants'; export const MapViewer = (): JSX.Element => { const { mapRef } = useOlMap(); const isMapEditToolsActive = useAppSelector(isMapEditToolsActiveSelector); + const layerObject = useAppSelector(mapEditToolsLayerObjectSelector); return ( <div @@ -15,7 +19,7 @@ export const MapViewer = (): JSX.Element => { role={MAP_VIEWER_ROLE} className={twMerge( 'absolute left-[88px] top-[104px] h-[calc(100%-104px)] w-[calc(100%-88px)] bg-white', - isMapEditToolsActive ? 'bg-[#e4e2de]' : 'bg-white', + isMapEditToolsActive || layerObject ? 'bg-[#e4e2de]' : 'bg-white', )} /> ); diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 162d345c..5e378293 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -16,7 +16,7 @@ import { } from '@/redux/layers/layers.selectors'; import { usePointToProjection } from '@/utils/map/usePointToProjection'; import { MapInstance } from '@/types/map'; -import { Geometry, LineString, MultiPolygon, Point } from 'ol/geom'; +import { Geometry, LineString, MultiPolygon } from 'ol/geom'; import Polygon from 'ol/geom/Polygon'; import Layer from '@/components/Map/MapViewer/utils/shapes/layer/Layer'; import { arrowTypesSelector, lineTypesSelector } from '@/redux/shapes/shapes.selectors'; @@ -25,7 +25,7 @@ import { mapDataSizeSelector } from '@/redux/map/map.selectors'; import { LayerState } from '@/redux/layers/layers.types'; import { mapEditToolsActiveActionSelector, - mapEditToolsLayerImageObjectSelector, + mapEditToolsLayerObjectSelector, } from '@/redux/mapEditTools/mapEditTools.selectors'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; import getDrawBoundingBoxInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawBoundingBoxInteraction'; @@ -38,7 +38,7 @@ import { mapEditToolsSetActiveAction, mapEditToolsSetLayerObject, } from '@/redux/mapEditTools/mapEditTools.slice'; -import getTransformImageInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction'; +import getTransformInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction'; import { useWebSocketEntityUpdatesContext } from '@/utils/websocket-entity-updates/webSocketEntityUpdatesProvider'; import processMessage from '@/components/Map/MapViewer/utils/websocket/processMessage'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; @@ -46,9 +46,7 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' export const useOlMapAdditionalLayers = ( mapInstance: MapInstance, ): Array< - VectorLayer< - VectorSource<Feature<Point> | Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>> - > + VectorLayer<VectorSource<Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>>> > => { const activeAction = useAppSelector(mapEditToolsActiveActionSelector); const dispatch = useAppDispatch(); @@ -61,7 +59,7 @@ export const useOlMapAdditionalLayers = ( const activeLayers = useAppSelector(layersActiveLayersSelector); const drawLayer = useAppSelector(layersDrawLayerSelector); const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); - const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerImageObjectSelector); + const mapEditToolsLayerObject = useAppSelector(mapEditToolsLayerObjectSelector); const [layersState, setLayersState] = useState<Array<LayerState>>([]); const [layersLoadingState, setLayersLoadingState] = useState(false); @@ -157,21 +155,23 @@ export const useOlMapAdditionalLayers = ( if (!dispatch || !currentModelId || !activeLayers.length) { return null; } - const imagesFeatures: Array<Feature<Geometry>> = []; + const features: Array<Feature<Geometry>> = []; const activeVectorLayers = vectorLayers.filter(layer => activeLayers.includes(layer.get('id'))); activeVectorLayers.forEach(vectorLayer => { - imagesFeatures.push(...vectorLayer.get('imagesFeatures')); + features.push(...vectorLayer.get('imagesFeatures')); + features.push(...vectorLayer.get('textsFeatures')); }); - const imagesFeaturesCollection = new Collection(imagesFeatures); - return getTransformImageInteraction( + const featuresCollection = new Collection(features); + return getTransformInteraction( dispatch, mapSize, currentModelId, - imagesFeaturesCollection, + featuresCollection, restrictionExtent, ); }, [dispatch, mapSize, currentModelId, restrictionExtent, activeLayers, vectorLayers]); const transformRef = useRef(transformInteraction); + useEffect(() => { transformRef.current = transformInteraction; }, [transformInteraction]); @@ -202,13 +202,13 @@ export const useOlMapAdditionalLayers = ( } const transformFeatures = transformRef.current.getFeatures(); if ( - mapEditToolsLayerImageObject && + mapEditToolsLayerObject && (!transformFeatures.getLength() || - transformFeatures.item(0).getId() !== mapEditToolsLayerImageObject.id) + transformFeatures.item(0).getId() !== mapEditToolsLayerObject.id) ) { const layer = vectorLayers.find(vectorLayer => { const layerId = vectorLayer.get('id'); - return layerId === mapEditToolsLayerImageObject.layer; + return layerId === mapEditToolsLayerObject.layer; }); if (!layer) { return; @@ -217,13 +217,13 @@ export const useOlMapAdditionalLayers = ( if (!source) { return; } - const feature = source.getFeatureById(mapEditToolsLayerImageObject.id); + const feature = source.getFeatureById(mapEditToolsLayerObject.id); if (!feature) { return; } transformRef.current.setSelection(new Collection<Feature>([feature])); } - }, [mapEditToolsLayerImageObject, vectorLayers]); + }, [mapEditToolsLayerObject, vectorLayers]); useEffect(() => { const activeVectorLayers = vectorLayers.filter(layer => { diff --git a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts b/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts index 0dca36a1..342cdfac 100644 --- a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts +++ b/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts @@ -17,7 +17,6 @@ import { LayerImage } from '@/types/models'; import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; import getFill from '@/components/Map/MapViewer/utils/shapes/style/getFill'; import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle'; -import getBoundingBoxFromExtent from '@/components/Map/MapViewer/utils/shapes/coords/getBoundingBoxFromExtent'; export type GlyphProps = { elementId: number; @@ -154,7 +153,7 @@ export default class Glyph { this.feature.set('setCoordinates', this.setCoordinates.bind(this)); this.feature.set('refreshPolygon', this.refreshPolygon.bind(this)); - this.feature.set('update', this.update.bind(this)); + this.feature.set('updateElement', this.updateElement.bind(this)); this.feature.setId(this.elementId); this.feature.setStyle(this.getStyle.bind(this)); @@ -186,7 +185,7 @@ export default class Glyph { this.feature.changed(); } - private update(imageObject: LayerImage): void { + protected updateElement(imageObject: LayerImage): void { this.elementId = imageObject.id; this.x = imageObject.x; this.y = imageObject.y; @@ -219,11 +218,6 @@ export default class Glyph { const geometry = this.polygonStyle.getGeometry(); if (geometry && geometry instanceof Polygon) { geometry.setCoordinates(coords); - const boundingBox = getBoundingBoxFromExtent(geometry.getExtent(), this.mapSize); - this.x = boundingBox.x; - this.y = boundingBox.y; - this.width = boundingBox.width; - this.height = boundingBox.height; } } diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 2149e63b..7f697a72 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -4,12 +4,12 @@ import { LayerLine, LayerOval, LayerRect, - LayerText, + LayerText as LayerTextModel, } from '@/types/models'; import { MapInstance } from '@/types/map'; import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection'; import { Feature } from 'ol'; -import { LineString, MultiPolygon, Point } from 'ol/geom'; +import { LineString, MultiPolygon } from 'ol/geom'; import Polygon from 'ol/geom/Polygon'; import VectorSource from 'ol/source/Vector'; import VectorLayer from 'ol/layer/Vector'; @@ -30,11 +30,11 @@ import getArrowFeature from '@/components/Map/MapViewer/utils/shapes/elements/ge import getRotation from '@/components/Map/MapViewer/utils/shapes/coords/getRotation'; import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; -import Text from '@/components/Map/MapViewer/utils/shapes/text/Text'; -import LayerImage from '@/components/Map/MapViewer/utils/shapes/elements/Glyph/LayerImage'; +import LayerText from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerText'; +import LayerImage from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage'; export interface LayerProps { - texts: { [key: string]: LayerText }; + texts: { [key: string]: LayerTextModel }; rects: Array<LayerRect>; ovals: Array<LayerOval>; lines: Array<LayerLine>; @@ -51,7 +51,7 @@ export interface LayerProps { export default class Layer { layerId: number; - texts: { [key: string]: LayerText }; + texts: { [key: string]: LayerTextModel }; rects: Array<LayerRect>; @@ -71,12 +71,10 @@ export default class Layer { mapSize: MapSize; - vectorSource: VectorSource< - Feature<Point> | Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon> - >; + vectorSource: VectorSource<Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>>; vectorLayer: VectorLayer< - VectorSource<Feature<Point> | Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>> + VectorSource<Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>> >; constructor({ @@ -107,7 +105,9 @@ export default class Layer { this.mapSize = mapSize; this.layerId = layerId; - this.vectorSource.addFeatures(this.getTextsFeatures()); + const textsFeatures = this.getTextsFeatures(); + this.vectorSource.addFeatures(textsFeatures); + this.vectorSource.addFeatures(this.getRectsFeatures()); this.vectorSource.addFeatures(this.getOvalsFeatures()); const imagesFeatures = this.getImagesFeatures(); @@ -127,53 +127,39 @@ export default class Layer { this.vectorLayer.set('id', layerId); this.vectorLayer.set('imagesFeatures', imagesFeatures); + this.vectorLayer.set('textsFeatures', textsFeatures); this.vectorLayer.set('drawImage', this.drawImage.bind(this)); this.vectorLayer.set('drawText', this.drawText.bind(this)); } - private getTextsFeatures = (): Array<Feature<Point>> => { - const textObjects = Object.values(this.texts).map(text => { - return new Text({ - x: text.x, - y: text.y, - zIndex: text.z, - width: text.width, - height: text.height, - layer: text.layer, - fontColor: text.color, - borderColor: text.borderColor, - fontSize: text.fontSize, - text: text.notes, - verticalAlign: text.verticalAlign as VerticalAlign, - horizontalAlign: text.horizontalAlign as HorizontalAlign, - pointToProjection: this.pointToProjection, - mapInstance: this.mapInstance, - }); - }); - return textObjects.map(text => text.feature); + private getTextsFeatures = (): Array<Feature<Polygon>> => { + return Object.values(this.texts).map(text => this.getTextFeature(text)); }; - private drawText(text: LayerText): void { + private drawText(text: LayerTextModel): void { const textFeature = this.getTextFeature(text); this.vectorSource.addFeature(textFeature); } - private getTextFeature(text: LayerText): Feature<Point> { - const textObject = new Text({ + private getTextFeature(text: LayerTextModel): Feature<Polygon> { + const textObject = new LayerText({ + elementId: text.id, x: text.x, y: text.y, zIndex: text.z, width: text.width, height: text.height, layer: text.layer, - fontColor: text.color, + color: text.color, borderColor: text.borderColor, + backgroundColor: text.backgroundColor, fontSize: text.fontSize, text: text.notes, verticalAlign: text.verticalAlign as VerticalAlign, horizontalAlign: text.horizontalAlign as HorizontalAlign, pointToProjection: this.pointToProjection, mapInstance: this.mapInstance, + mapSize: this.mapSize, }); return textObject.feature; } diff --git a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/LayerImage.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage.ts similarity index 54% rename from src/components/Map/MapViewer/utils/shapes/elements/Glyph/LayerImage.ts rename to src/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage.ts index ff893bdf..b7d306bb 100644 --- a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/LayerImage.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage.ts @@ -3,6 +3,11 @@ import { MapInstance } from '@/types/map'; import { MapSize } from '@/redux/map/map.types'; import { LayerImage as LayerImageModel } from '@/types/models'; import Glyph from '@/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph'; +import { store } from '@/redux/store'; +import { updateLayerImageObject } from '@/redux/layers/layers.thunks'; +import { layerUpdateImage } from '@/redux/layers/layers.slice'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { BoundingBox } from '@/components/Map/MapViewer/MapViewer.types'; export type LayerImageProps = { elementId: number; @@ -47,11 +52,35 @@ export default class LayerImage extends Glyph { mapSize, }); this.layer = layer; - this.feature.set('getGlyphData', this.getGlyphData.bind(this)); + this.feature.set('getObjectData', this.getData.bind(this)); + this.feature.set('save', this.save.bind(this)); this.feature.set('layer', layer); } - private getGlyphData(): LayerImageModel { + private async save({ + modelId, + boundingBox, + }: { + modelId: number; + boundingBox: BoundingBox; + }): Promise<void> { + const { dispatch } = store; + const layerImage = await dispatch( + updateLayerImageObject({ + modelId, + layerId: this.layer, + ...this.getData(), + ...boundingBox, + }), + ).unwrap(); + if (layerImage) { + dispatch(layerUpdateImage({ modelId, layerId: layerImage.layer, layerImage })); + dispatch(mapEditToolsSetLayerObject(layerImage)); + this.updateElement(layerImage); + } + } + + private getData(): LayerImageModel { return { id: this.elementId, x: this.x, diff --git a/src/components/Map/MapViewer/utils/shapes/text/Text.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.test.ts similarity index 75% rename from src/components/Map/MapViewer/utils/shapes/text/Text.test.ts rename to src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.test.ts index 2f2e145d..7db76f34 100644 --- a/src/components/Map/MapViewer/utils/shapes/text/Text.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.test.ts @@ -3,17 +3,20 @@ import { Map } from 'ol'; import { Style } from 'ol/style'; import View from 'ol/View'; import { BLACK_COLOR } from '@/components/Map/MapViewer/MapViewer.constants'; -import Text, { TextProps } from '@/components/Map/MapViewer/utils/shapes/text/Text'; +import LayerText, { + LayerTextProps, +} from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerText'; import getTextStyle from '@/components/Map/MapViewer/utils/shapes/text/getTextStyle'; import { rgbToHex } from '@/components/Map/MapViewer/utils/shapes/style/rgbToHex'; import getTextCoords from '@/components/Map/MapViewer/utils/shapes/text/getTextCoords'; +import { DEFAULT_TILE_SIZE } from '@/constants/map'; -jest.mock('./getTextCoords'); -jest.mock('./getTextStyle'); -jest.mock('../style/rgbToHex'); +jest.mock('../../text/getTextCoords'); +jest.mock('../../text/getTextStyle'); +jest.mock('../../style/rgbToHex'); describe('Text', () => { - let props: TextProps; + let props: LayerTextProps; beforeEach(() => { const dummyElement = document.createElement('div'); @@ -26,6 +29,7 @@ describe('Text', () => { }), }); props = { + elementId: 1, x: 0, y: 0, width: 100, @@ -34,12 +38,20 @@ describe('Text', () => { layer: 1, text: 'Test', fontSize: 12, - fontColor: BLACK_COLOR, + color: BLACK_COLOR, borderColor: BLACK_COLOR, + backgroundColor: BLACK_COLOR, verticalAlign: 'MIDDLE', horizontalAlign: 'CENTER', pointToProjection: jest.fn(({ x, y }) => [x, y]), mapInstance, + mapSize: { + minZoom: 1, + maxZoom: 9, + width: 0, + height: 0, + tileSize: DEFAULT_TILE_SIZE, + }, }; (getTextStyle as jest.Mock).mockReturnValue(new Style()); @@ -48,7 +60,7 @@ describe('Text', () => { }); it('should apply correct styles to the feature', () => { - const text = new Text(props); + const text = new LayerText(props); const { feature } = text; const style = feature.getStyleFunction()?.call(text, feature, 1); @@ -61,7 +73,7 @@ describe('Text', () => { }); it('should hide text when the scaled font size is too small', () => { - const text = new Text(props); + const text = new LayerText(props); const { feature } = text; const style = feature.getStyleFunction()?.call(text, feature, 20); diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts new file mode 100644 index 00000000..133034cf --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts @@ -0,0 +1,315 @@ +/* eslint-disable no-magic-numbers */ +import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection'; +import Style from 'ol/style/Style'; +import { Point } from 'ol/geom'; +import { Feature } from 'ol'; +import { FeatureLike } from 'ol/Feature'; +import { MapInstance } from '@/types/map'; +import { LayerText as LayerTextModel, Color } from '@/types/models'; +import { TEXT_CUTOFF_SCALE } from '@/components/Map/MapViewer/MapViewer.constants'; +import { + BoundingBox, + HorizontalAlign, + VerticalAlign, +} from '@/components/Map/MapViewer/MapViewer.types'; +import getTextCoords from '@/components/Map/MapViewer/utils/shapes/text/getTextCoords'; +import getTextStyle from '@/components/Map/MapViewer/utils/shapes/text/getTextStyle'; +import { rgbToHex } from '@/components/Map/MapViewer/utils/shapes/style/rgbToHex'; +import Polygon from 'ol/geom/Polygon'; +import getStroke from '@/components/Map/MapViewer/utils/shapes/style/getStroke'; +import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; +import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle'; +import { Stroke } from 'ol/style'; +import { MapSize } from '@/redux/map/map.types'; +import getBoundingBoxFromExtent from '@/components/Map/MapViewer/utils/shapes/coords/getBoundingBoxFromExtent'; +import { Coordinate } from 'ol/coordinate'; +import { store } from '@/redux/store'; +import { updateLayerText } from '@/redux/layers/layers.thunks'; +import { layerUpdateText } from '@/redux/layers/layers.slice'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; + +export interface LayerTextProps { + elementId: number; + x: number; + y: number; + width: number; + height: number; + layer: number; + zIndex: number; + text: string; + fontSize: number; + color: Color; + borderColor: Color; + backgroundColor: Color; + verticalAlign: VerticalAlign; + horizontalAlign: HorizontalAlign; + pointToProjection: UsePointToProjectionResult; + mapInstance: MapInstance; + mapSize: MapSize; +} + +export default class LayerText { + elementId: number; + + x: number; + + y: number; + + zIndex: number; + + width: number; + + height: number; + + layer: number; + + text: string; + + verticalAlign: VerticalAlign; + + horizontalAlign: HorizontalAlign; + + backgroundColor: Color; + + borderColor: Color; + + color: Color; + + fontSize: number; + + style: Style; + + polygonStyle: Style; + + polygon: Polygon = new Polygon([]); + + strokeStyle: Stroke; + + point: Point; + + feature: Feature<Polygon>; + + mapSize: MapSize; + + pointToProjection: UsePointToProjectionResult; + + constructor({ + elementId, + x, + y, + width, + height, + layer, + zIndex, + text, + fontSize, + color, + borderColor, + backgroundColor, + verticalAlign, + horizontalAlign, + pointToProjection, + mapInstance, + mapSize, + }: LayerTextProps) { + this.text = text; + this.fontSize = fontSize; + this.elementId = elementId; + this.x = x; + this.y = y; + this.zIndex = zIndex; + this.width = width; + this.height = height; + this.layer = layer; + this.text = text; + this.verticalAlign = verticalAlign; + this.horizontalAlign = horizontalAlign; + this.backgroundColor = backgroundColor; + this.borderColor = borderColor; + this.color = color; + this.mapSize = mapSize; + this.pointToProjection = pointToProjection; + + const textCoords = getTextCoords({ + x, + y, + height, + width, + fontSize, + verticalAlign, + horizontalAlign, + pointToProjection, + }); + this.drawPolygon(); + this.strokeStyle = getStroke({ + color: rgbToHex(borderColor), + width: 1, + }); + this.polygonStyle = getStyle({ + geometry: this.polygon, + borderColor, + fillColor: { rgb: 0, alpha: 0 }, + lineWidth: 1, + zIndex, + }); + + const textStyle = getTextStyle({ + text, + fontSize, + color: rgbToHex(color), + zIndex, + horizontalAlign, + }); + this.point = new Point(textCoords); + this.style = textStyle; + this.style.setGeometry(this.point); + + this.feature = new Feature({ + geometry: this.polygon, + getScale: (resolution: number): number => { + const maxZoom = mapInstance?.getView().get('originalMaxZoom'); + if (maxZoom) { + const minResolution = mapInstance?.getView().getResolutionForZoom(maxZoom); + if (minResolution) { + return Math.round((minResolution / resolution) * 100) / 100; + } + } + return 1; + }, + layer, + }); + this.feature.setId(this.elementId); + this.feature.set('getObjectData', this.getData.bind(this)); + this.feature.set('setCoordinates', this.setCoordinates.bind(this)); + this.feature.set('refreshPolygon', this.refreshPolygon.bind(this)); + this.feature.set('save', this.save.bind(this)); + this.feature.set('updateElement', this.updateElement.bind(this)); + this.feature.setStyle(this.getStyle.bind(this)); + } + + private getData(): LayerTextModel { + return { + id: this.elementId, + x: this.x, + y: this.y, + z: this.zIndex, + width: this.width, + height: this.height, + layer: this.layer, + fontSize: this.fontSize, + notes: this.text, + verticalAlign: this.verticalAlign, + horizontalAlign: this.horizontalAlign, + backgroundColor: this.backgroundColor, + borderColor: this.borderColor, + color: this.color, + }; + } + + private drawPolygon(): void { + this.polygon = new Polygon([ + [ + this.pointToProjection({ x: this.x, y: this.y }), + this.pointToProjection({ x: this.x + this.width, y: this.y }), + this.pointToProjection({ x: this.x + this.width, y: this.y + this.height }), + this.pointToProjection({ x: this.x, y: this.y + this.height }), + this.pointToProjection({ x: this.x, y: this.y }), + ], + ]); + } + + private async save({ + modelId, + boundingBox, + }: { + modelId: number; + boundingBox: BoundingBox; + }): Promise<void> { + const { dispatch } = store; + const layerText = await dispatch( + updateLayerText({ + modelId, + layerId: this.layer, + ...this.getData(), + ...boundingBox, + }), + ).unwrap(); + if (layerText) { + dispatch(layerUpdateText({ modelId, layerId: layerText.layer, layerText })); + dispatch(mapEditToolsSetLayerObject(layerText)); + this.updateElement(layerText); + } + } + + private refreshPolygon(): void { + this.drawPolygon(); + this.polygonStyle.setGeometry(this.polygon); + this.feature.setGeometry(this.polygon); + this.feature.changed(); + } + + private refreshZIndex(): void { + this.polygonStyle.setZIndex(this.zIndex); + this.style.setZIndex(this.zIndex); + this.feature.changed(); + } + + private updateElement(layerText: LayerTextModel): void { + this.elementId = layerText.id; + this.x = layerText.x; + this.y = layerText.y; + this.zIndex = layerText.z; + this.width = layerText.width; + this.height = layerText.height; + this.text = layerText.notes; + this.fontSize = layerText.fontSize; + this.color = layerText.color; + this.borderColor = layerText.borderColor; + this.verticalAlign = layerText.verticalAlign; + this.horizontalAlign = layerText.horizontalAlign; + + this.refreshPolygon(); + this.refreshZIndex(); + this.feature.changed(); + } + + private setCoordinates(coords: Coordinate[][]): void { + const geometry = this.polygonStyle.getGeometry(); + if (geometry && geometry instanceof Polygon) { + geometry.setCoordinates(coords); + } + } + + protected getStyle(feature: FeatureLike, resolution: number): Style | Array<Style> | void { + const getScale = feature.get('getScale'); + let scale = 1; + if (getScale instanceof Function) { + scale = getScale(resolution); + } + const geometry = feature.getGeometry(); + if (geometry && geometry instanceof Polygon) { + const polygonExtent = geometry.getExtent(); + if (polygonExtent) { + const boundingBox = getBoundingBoxFromExtent(polygonExtent, this.mapSize); + const textCoords = getTextCoords({ + x: boundingBox.x, + y: boundingBox.y, + height: boundingBox.height, + width: boundingBox.width, + fontSize: this.fontSize, + verticalAlign: this.verticalAlign, + horizontalAlign: this.horizontalAlign, + pointToProjection: this.pointToProjection, + }); + this.point.setCoordinates(textCoords); + } + } + if (scale < TEXT_CUTOFF_SCALE) { + return undefined; + } + return [ + getScaledElementStyle(this.polygonStyle, this.strokeStyle, scale), + getScaledElementStyle(this.style, undefined, scale), + ]; + } +} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.test.ts similarity index 85% rename from src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction.test.ts rename to src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.test.ts index c2f77a29..1cb1fec9 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.test.ts @@ -10,13 +10,13 @@ import { DEFAULT_TILE_SIZE } from '@/constants/map'; import { Collection, Feature } from 'ol'; import Transform from 'ol-ext/interaction/Transform'; import { Geometry } from 'ol/geom'; -import getTransformImageInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction'; +import getTransformInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction'; jest.mock('../../../../../../../utils/map/latLngToPoint', () => ({ latLngToPoint: jest.fn(latLng => ({ x: latLng[0], y: latLng[1] })), })); -describe('getTransformImageInteraction', () => { +describe('getTransformInteraction', () => { let store = {} as ToolkitStoreWithSingleSlice<ModalState>; let modelIdMock: number; let featuresCollectionMock: Collection<Feature<Geometry>>; @@ -39,7 +39,7 @@ describe('getTransformImageInteraction', () => { }); it('returns a Transform interaction', () => { - const transformInteraction = getTransformImageInteraction( + const transformInteraction = getTransformInteraction( store.dispatch, mapSize, modelIdMock, diff --git a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction.ts b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts similarity index 76% rename from src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction.ts rename to src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts index 3a1435fd..c1c8565c 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformImageInteraction.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts @@ -5,15 +5,13 @@ import Transform from 'ol-ext/interaction/Transform'; import { Geometry } from 'ol/geom'; import { Collection, Feature } from 'ol'; import BaseEvent from 'ol/events/Event'; -import { updateLayerImageObject } from '@/redux/layers/layers.thunks'; -import { layerUpdateImage } from '@/redux/layers/layers.slice'; import getBoundingBoxFromExtent from '@/components/Map/MapViewer/utils/shapes/coords/getBoundingBoxFromExtent'; import { MapSize } from '@/redux/map/map.types'; import { Extent } from 'ol/extent'; import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; import { openDrawer } from '@/redux/drawer/drawer.slice'; -export default function getTransformImageInteraction( +export default function getTransformInteraction( dispatch: AppDispatch, mapSize: MapSize, modelId: number, @@ -86,6 +84,11 @@ export default function getTransformImageInteraction( newGeometry.scale(1, -1); feature.setGeometry(newGeometry); transform.setSelection(new Collection([feature])); + return; + } + const setCoordinates = feature.get('setCoordinates'); + if (geometry instanceof Polygon && setCoordinates instanceof Function) { + setCoordinates(geometry.getCoordinates()); } }); @@ -96,10 +99,10 @@ export default function getTransformImageInteraction( dispatch(mapEditToolsSetLayerObject(null)); return; } - const getGlyphData = features.item(0).get('getGlyphData'); - if (getGlyphData && getGlyphData instanceof Function) { - const glyphData = getGlyphData(); - dispatch(mapEditToolsSetLayerObject(glyphData)); + const getObjectData = features.item(0).get('getObjectData'); + if (getObjectData && getObjectData instanceof Function) { + const objectData = getObjectData(); + dispatch(mapEditToolsSetLayerObject(objectData)); dispatch(openDrawer('layers')); } }); @@ -107,30 +110,13 @@ export default function getTransformImageInteraction( transform.on(['scaleend', 'translateend'], async (event: BaseEvent | Event): Promise<void> => { const transformEvent = event as unknown as { feature: Feature }; const { feature } = transformEvent; - const setCoordinates = feature.get('setCoordinates'); - const getGlyphData = feature.get('getGlyphData'); const refreshPolygon = feature.get('refreshPolygon'); + const save = feature.get('save'); const geometry = feature.getGeometry(); - if (geometry && getGlyphData instanceof Function) { - const glyphData = getGlyphData(); + if (geometry && save instanceof Function) { try { const boundingBox = getBoundingBoxFromExtent(geometry.getExtent(), mapSize); - const layerImage = await dispatch( - updateLayerImageObject({ - modelId, - layerId: glyphData.layer, - ...glyphData, - ...boundingBox, - }), - ).unwrap(); - if (layerImage) { - dispatch(layerUpdateImage({ modelId, layerId: layerImage.layer, layerImage })); - dispatch(mapEditToolsSetLayerObject(layerImage)); - } - if (geometry instanceof Polygon && setCoordinates instanceof Function) { - setCoordinates(geometry.getCoordinates()); - geometry.changed(); - } + save({ modelId, boundingBox }); } catch { if (refreshPolygon instanceof Function) { refreshPolygon(); diff --git a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/updateGlyph.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts similarity index 60% rename from src/components/Map/MapViewer/utils/shapes/elements/Glyph/updateGlyph.ts rename to src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts index 05418973..88f50d44 100644 --- a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/updateGlyph.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts @@ -1,20 +1,20 @@ import VectorSource from 'ol/source/Vector'; -import { LayerImage } from '@/types/models'; +import { LayerImage, LayerText } from '@/types/models'; import { MapInstance } from '@/types/map'; -export default function updateGlyph( +export default function updateElement( mapInstance: MapInstance, layerId: number, - layerImage: LayerImage, + layerObject: LayerImage | LayerText, ): void { mapInstance?.getAllLayers().forEach(layer => { if (layer.get('id') === layerId) { const source = layer.getSource(); if (source instanceof VectorSource) { - const feature = source.getFeatureById(layerImage.id); - const update = feature?.get('update'); + const feature = source.getFeatureById(layerObject.id); + const update = feature?.get('updateElement'); if (update && update instanceof Function) { - update(layerImage); + update(layerObject); feature.changed(); } } diff --git a/src/components/Map/MapViewer/utils/shapes/text/Text.ts b/src/components/Map/MapViewer/utils/shapes/text/Text.ts deleted file mode 100644 index c1bc5799..00000000 --- a/src/components/Map/MapViewer/utils/shapes/text/Text.ts +++ /dev/null @@ -1,145 +0,0 @@ -/* eslint-disable no-magic-numbers */ -import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection'; -import Style from 'ol/style/Style'; -import { Point } from 'ol/geom'; -import { Feature } from 'ol'; -import { FeatureLike } from 'ol/Feature'; -import { MapInstance } from '@/types/map'; -import { Color } from '@/types/models'; -import { TEXT_CUTOFF_SCALE } from '@/components/Map/MapViewer/MapViewer.constants'; -import { HorizontalAlign, VerticalAlign } from '@/components/Map/MapViewer/MapViewer.types'; -import getTextCoords from '@/components/Map/MapViewer/utils/shapes/text/getTextCoords'; -import getTextStyle from '@/components/Map/MapViewer/utils/shapes/text/getTextStyle'; -import { rgbToHex } from '@/components/Map/MapViewer/utils/shapes/style/rgbToHex'; -import Polygon from 'ol/geom/Polygon'; -import getStroke from '@/components/Map/MapViewer/utils/shapes/style/getStroke'; -import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; -import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle'; -import { Stroke } from 'ol/style'; - -export interface TextProps { - x: number; - y: number; - width: number; - height: number; - layer: number; - zIndex: number; - text: string; - fontSize: number; - fontColor: Color; - borderColor: Color; - verticalAlign: VerticalAlign; - horizontalAlign: HorizontalAlign; - pointToProjection: UsePointToProjectionResult; - mapInstance: MapInstance; -} - -export default class Text { - text: string; - - fontSize: number; - - style: Style; - - polygonStyle: Style; - - strokeStyle: Stroke; - - point: Point; - - feature: Feature<Point>; - - constructor({ - x, - y, - width, - height, - layer, - zIndex, - text, - fontSize, - fontColor, - borderColor, - verticalAlign, - horizontalAlign, - pointToProjection, - mapInstance, - }: TextProps) { - this.text = text; - this.fontSize = fontSize; - - const textCoords = getTextCoords({ - x, - y, - height, - width, - fontSize, - verticalAlign, - horizontalAlign, - pointToProjection, - }); - const borderPolygon = new Polygon([ - [ - pointToProjection({ x, y }), - pointToProjection({ x: x + width, y }), - pointToProjection({ x: x + width, y: y + height }), - pointToProjection({ x, y: y + height }), - pointToProjection({ x, y }), - ], - ]); - this.strokeStyle = getStroke({ - color: rgbToHex(borderColor), - width: 1, - }); - this.polygonStyle = getStyle({ - geometry: borderPolygon, - borderColor, - fillColor: { rgb: 0, alpha: 0 }, - lineWidth: 1, - zIndex, - }); - - const textStyle = getTextStyle({ - text, - fontSize, - color: rgbToHex(fontColor), - zIndex, - horizontalAlign, - }); - this.point = new Point(textCoords); - this.style = textStyle; - this.style.setGeometry(this.point); - - this.feature = new Feature({ - geometry: this.point, - getScale: (resolution: number): number => { - const maxZoom = mapInstance?.getView().get('originalMaxZoom'); - if (maxZoom) { - const minResolution = mapInstance?.getView().getResolutionForZoom(maxZoom); - if (minResolution) { - return Math.round((minResolution / resolution) * 100) / 100; - } - } - return 1; - }, - layer, - }); - - this.feature.setStyle(this.getStyle.bind(this)); - } - - protected getStyle(feature: FeatureLike, resolution: number): Style | Array<Style> | void { - const getScale = feature.get('getScale'); - let scale = 1; - if (getScale instanceof Function) { - scale = getScale(resolution); - } - if (scale < TEXT_CUTOFF_SCALE) { - return undefined; - } - return [ - getScaledElementStyle(this.polygonStyle, this.strokeStyle, scale), - getScaledElementStyle(this.style, undefined, scale), - ]; - } -} diff --git a/src/components/Map/MapViewer/utils/shapes/text/getTextCoords.ts b/src/components/Map/MapViewer/utils/shapes/text/getTextCoords.ts index e3224fc9..26acfb6b 100644 --- a/src/components/Map/MapViewer/utils/shapes/text/getTextCoords.ts +++ b/src/components/Map/MapViewer/utils/shapes/text/getTextCoords.ts @@ -12,6 +12,7 @@ export default function getTextCoords({ verticalAlign, horizontalAlign, pointToProjection, + useProjection = true, }: { x: number; y: number; @@ -20,7 +21,8 @@ export default function getTextCoords({ fontSize: number; verticalAlign: VerticalAlign; horizontalAlign: HorizontalAlign; - pointToProjection: UsePointToProjectionResult; + pointToProjection?: UsePointToProjectionResult; + useProjection?: boolean; }): Coordinate { const minX = x; const maxX = x + width; @@ -41,5 +43,8 @@ export default function getTextCoords({ textX = maxX; } - return pointToProjection({ x: textX, y: textY }); + if (useProjection && pointToProjection) { + return pointToProjection({ x: textX, y: textY }); + } + return [textX, textY]; } diff --git a/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts b/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts index 84018d80..6fd6ec3a 100644 --- a/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts +++ b/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts @@ -2,7 +2,7 @@ import { WebSocketEntityUpdateInterface } from '@/utils/websocket-entity-updates import { store } from '@/redux/store'; import { ENTITY_OPERATION_TYPES } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.constants'; import { getLayerImage } from '@/redux/layers/layers.thunks'; -import updateGlyph from '@/components/Map/MapViewer/utils/shapes/elements/Glyph/updateGlyph'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; import { MapInstance } from '@/types/map'; import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; import { layerDeleteImage } from '@/redux/layers/layers.slice'; @@ -38,7 +38,7 @@ export default async function processLayerImage({ drawFunctionKey: 'drawImage', }); } else { - updateGlyph(mapInstance, data.layerId, resultImage); + updateElement(mapInstance, data.layerId, resultImage); } } else if (data.type === ENTITY_OPERATION_TYPES.ENTITY_DELETED) { dispatch( diff --git a/src/components/Map/MapViewer/utils/websocket/processLayerText.ts b/src/components/Map/MapViewer/utils/websocket/processLayerText.ts index f31697c4..e1740c97 100644 --- a/src/components/Map/MapViewer/utils/websocket/processLayerText.ts +++ b/src/components/Map/MapViewer/utils/websocket/processLayerText.ts @@ -4,6 +4,9 @@ import { ENTITY_OPERATION_TYPES } from '@/utils/websocket-entity-updates/webSock import { getLayerText } from '@/redux/layers/layers.thunks'; import { MapInstance } from '@/types/map'; import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; +import { layerDeleteText } from '@/redux/layers/layers.slice'; +import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; export default async function processLayerText({ data, @@ -13,7 +16,10 @@ export default async function processLayerText({ mapInstance: MapInstance; }): Promise<void> { const { dispatch } = store; - if (data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED) { + if ( + data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED || + data.type === ENTITY_OPERATION_TYPES.ENTITY_UPDATED + ) { const resultText = await dispatch( getLayerText({ modelId: data.mapId, @@ -24,11 +30,24 @@ export default async function processLayerText({ if (!resultText) { return; } - drawElementOnLayer({ - mapInstance, - activeLayer: data.layerId, - object: resultText, - drawFunctionKey: 'drawText', - }); + if (data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED) { + drawElementOnLayer({ + mapInstance, + activeLayer: data.layerId, + object: resultText, + drawFunctionKey: 'drawText', + }); + } else { + updateElement(mapInstance, data.layerId, resultText); + } + } else if (data.type === ENTITY_OPERATION_TYPES.ENTITY_DELETED) { + dispatch( + layerDeleteText({ + modelId: data.mapId, + layerId: data.layerId, + textId: data.entityId, + }), + ); + removeElementFromLayer({ mapInstance, layerId: data.layerId, featureId: data.entityId }); } } diff --git a/src/models/layerTextSchema.ts b/src/models/layerTextSchema.ts index 0ec90665..a575b139 100644 --- a/src/models/layerTextSchema.ts +++ b/src/models/layerTextSchema.ts @@ -11,8 +11,8 @@ export const layerTextSchema = z.object({ layer: z.number(), fontSize: z.number(), notes: z.string(), - verticalAlign: z.string(), - horizontalAlign: z.string(), + verticalAlign: z.enum(['TOP', 'MIDDLE', 'BOTTOM']), + horizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER', 'END', 'START']), backgroundColor: colorSchema, borderColor: colorSchema, color: colorSchema, diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts index 9eb33c02..18186d6f 100644 --- a/src/redux/apiPath.ts +++ b/src/redux/apiPath.ts @@ -64,6 +64,10 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/`, getLayerText: (modelId: number, layerId: number, imageId: number | string): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/${imageId}`, + updateLayerText: (modelId: number, layerId: number, textId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/${textId}`, + removeLayerText: (modelId: number, layerId: number, textId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/${textId}`, getLayer: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}`, getGlyphImage: (glyphId: number): string => diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index 0213d714..238a3441 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -198,3 +198,35 @@ export const layerAddTextReducer = ( } layer.texts[layerText.id] = layerText; }; + +export const layerUpdateTextReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; layerText: LayerText }>, +): void => { + const { modelId, layerId, layerText } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + const layer = data.layers.find(layerState => layerState.details.id === layerId); + if (!layer) { + return; + } + layer.texts[layerText.id] = layerText; +}; + +export const layerDeleteTextReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; textId: number }>, +): void => { + const { modelId, layerId, textId } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + const layer = data.layers.find(layerState => layerState.details.id === layerId); + if (!layer) { + return; + } + delete layer.texts[textId]; +}; diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index dcd20ceb..871012fc 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -12,6 +12,8 @@ import { setDrawLayerReducer, setLayerToInactiveReducer, setLayerToActiveReducer, + layerDeleteTextReducer, + layerUpdateTextReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ @@ -25,6 +27,8 @@ export const layersSlice = createSlice({ layerUpdateImage: layerUpdateImageReducer, layerDeleteImage: layerDeleteImageReducer, layerAddText: layerAddTextReducer, + layerUpdateText: layerUpdateTextReducer, + layerDeleteText: layerDeleteTextReducer, setDrawLayer: setDrawLayerReducer, }, extraReducers: builder => { @@ -42,6 +46,8 @@ export const { layerUpdateImage, layerDeleteImage, layerAddText, + layerUpdateText, + layerDeleteText, setDrawLayer, } = layersSlice.actions; diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 847d84d2..66035fd8 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -1,7 +1,7 @@ /* eslint-disable no-magic-numbers */ import { z as zod } from 'zod'; import { apiPath } from '@/redux/apiPath'; -import { Layer, LayerImage, Layers, LayerText } from '@/types/models'; +import { Color, Layer, LayerImage, Layers, LayerText } from '@/types/models'; import { validateDataUsingZodSchema } from '@/utils/validateDataUsingZodSchema'; import { createAsyncThunk } from '@reduxjs/toolkit'; import { ThunkConfig } from '@/types/store'; @@ -22,7 +22,11 @@ import { layerLineSchema } from '@/models/layerLineSchema'; import { layerImageSchema } from '@/models/layerImageSchema'; import arrayToKeyValue from '@/utils/array/arrayToKeyValue'; import { LayerTextFactoryForm } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types'; -import { BoundingBox } from '@/components/Map/MapViewer/MapViewer.types'; +import { + BoundingBox, + HorizontalAlign, + VerticalAlign, +} from '@/components/Map/MapViewer/MapViewer.types'; export const getLayer = createAsyncThunk< Layer | null, @@ -307,3 +311,81 @@ export const getLayerText = createAsyncThunk< return Promise.reject(getError({ error })); } }); + +export const removeLayerText = createAsyncThunk< + null, + { modelId: number; layerId: number; textId: number }, + ThunkConfig +>('layers/removeLayerText', async ({ modelId, layerId, textId }) => { + try { + await axiosInstanceNewAPI.delete<void>(apiPath.removeLayerText(modelId, layerId, textId)); + return null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); + +export const updateLayerText = createAsyncThunk< + LayerText | null, + { + modelId: number; + layerId: number; + id: number; + x: number; + y: number; + z: number; + width: number; + height: number; + fontSize: number; + notes: string; + verticalAlign: VerticalAlign; + horizontalAlign: HorizontalAlign; + color: Color; + borderColor: Color; + }, + ThunkConfig +>( + 'layers/updateLayerText', + async ({ + modelId, + layerId, + id, + x, + y, + z, + width, + height, + fontSize, + notes, + verticalAlign, + horizontalAlign, + color, + borderColor, + }) => { + try { + const { data } = await axiosInstanceNewAPI.put<LayerText>( + apiPath.updateLayerText(modelId, layerId, id), + { + x, + y, + z, + width, + height, + fontSize, + notes, + verticalAlign, + horizontalAlign, + color, + borderColor, + }, + ); + const isDataValid = validateDataUsingZodSchema(data, layerTextSchema); + if (isDataValid) { + return data; + } + return null; + } catch (error) { + return Promise.reject(getError({ error })); + } + }, +); diff --git a/src/redux/mapEditTools/mapEditTools.mock.ts b/src/redux/mapEditTools/mapEditTools.mock.ts index d6fe529c..fbbacec7 100644 --- a/src/redux/mapEditTools/mapEditTools.mock.ts +++ b/src/redux/mapEditTools/mapEditTools.mock.ts @@ -2,5 +2,5 @@ import { MapEditToolsState } from '@/redux/mapEditTools/mapEditTools.types'; export const MAP_EDIT_TOOLS_STATE_INITIAL_MOCK: MapEditToolsState = { activeAction: null, - layerImageObject: null, + layerObject: null, }; diff --git a/src/redux/mapEditTools/mapEditTools.reducers.ts b/src/redux/mapEditTools/mapEditTools.reducers.ts index da3f5f7f..d45e719f 100644 --- a/src/redux/mapEditTools/mapEditTools.reducers.ts +++ b/src/redux/mapEditTools/mapEditTools.reducers.ts @@ -2,7 +2,7 @@ import { PayloadAction } from '@reduxjs/toolkit'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; import { MapEditToolsState } from '@/redux/mapEditTools/mapEditTools.types'; -import { LayerImage } from '@/types/models'; +import { LayerImage, LayerText } from '@/types/models'; export const mapEditToolsSetActiveActionReducer = ( state: MapEditToolsState, @@ -13,7 +13,7 @@ export const mapEditToolsSetActiveActionReducer = ( export const mapEditToolsSetLayerObjectReducer = ( state: MapEditToolsState, - action: PayloadAction<LayerImage | null>, + action: PayloadAction<LayerImage | LayerText | null>, ): void => { - state.layerImageObject = action.payload; + state.layerObject = action.payload; }; diff --git a/src/redux/mapEditTools/mapEditTools.selectors.ts b/src/redux/mapEditTools/mapEditTools.selectors.ts index 2b29bd35..d3ea7d12 100644 --- a/src/redux/mapEditTools/mapEditTools.selectors.ts +++ b/src/redux/mapEditTools/mapEditTools.selectors.ts @@ -9,9 +9,9 @@ export const mapEditToolsActiveActionSelector = createSelector( state => state.activeAction, ); -export const mapEditToolsLayerImageObjectSelector = createSelector( +export const mapEditToolsLayerObjectSelector = createSelector( mapEditToolsSelector, - state => state.layerImageObject, + state => state.layerObject, ); export const isMapEditToolsActiveSelector = createSelector(mapEditToolsSelector, state => diff --git a/src/redux/mapEditTools/mapEditTools.types.ts b/src/redux/mapEditTools/mapEditTools.types.ts index e141e6b8..4c216c40 100644 --- a/src/redux/mapEditTools/mapEditTools.types.ts +++ b/src/redux/mapEditTools/mapEditTools.types.ts @@ -1,7 +1,7 @@ import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; -import { LayerImage } from '@/types/models'; +import { LayerImage, LayerText } from '@/types/models'; export type MapEditToolsState = { activeAction: keyof typeof MAP_EDIT_ACTIONS | null; - layerImageObject: LayerImage | null; + layerObject: LayerImage | LayerText | null; }; -- GitLab From 09dff5302aad6a606bc317acb391aa0a7b2cc0bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Mon, 17 Feb 2025 13:08:07 +0100 Subject: [PATCH 02/15] feat(layer-text): Add editing text notes, font size, color alignment etc. --- ...rImageObjectEditFactoryModal.component.tsx | 2 +- .../LayerTextEditFactoryModal.component.tsx | 109 ++++++++++++++++++ .../LayerTextFactory.constants.ts | 12 +- .../LayerTextFactory.types.ts | 5 +- .../LayerTextForm.component.tsx | 4 +- .../FunctionalArea/Modal/Modal.component.tsx | 6 + .../ModalLayout/ModalLayout.component.tsx | 3 +- .../LayersDrawerObjectsList.component.tsx | 59 +++++++++- .../Map/MapViewer/MapViewer.types.ts | 2 +- .../utils/shapes/elements/Glyph/Glyph.ts | 52 +++++---- .../utils/shapes/layer/elements/LayerText.ts | 56 ++++----- src/models/bioEntitySchema.ts | 2 +- src/models/layerTextSchema.ts | 2 +- src/models/modelElementModificationSchema.ts | 2 +- src/models/modelElementSchema.ts | 2 +- src/redux/modal/modal.reducers.ts | 6 + src/redux/modal/modal.slice.ts | 3 + src/types/modal.ts | 3 +- 18 files changed, 257 insertions(+), 73 deletions(-) create mode 100644 src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx index dc280845..b90d5b25 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx @@ -69,7 +69,7 @@ export const LayerImageObjectEditFactoryModal: React.FC = () => { const typedError = error as SerializedError; showToast({ type: 'error', - message: typedError.message || 'An error occurred while adding a new image', + message: typedError.message || 'An error occurred while editing the layer image', }); } finally { setIsSending(false); diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx new file mode 100644 index 00000000..c73e9d93 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx @@ -0,0 +1,109 @@ +/* eslint-disable no-magic-numbers */ +import React, { useState } from 'react'; +import './LayerTextFactoryModal.styles.css'; +import { LayerTextForm } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component'; +import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { Button } from '@/shared/Button'; +import { LayerTextFactoryForm } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types'; +import { Color } from '@/types/models'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { showToast } from '@/utils/showToast'; +import { closeModal } from '@/redux/modal/modal.slice'; +import { SerializedError } from '@reduxjs/toolkit'; +import { updateLayerText } from '@/redux/layers/layers.thunks'; +import { layerUpdateText } from '@/redux/layers/layers.slice'; +import { useMapInstance } from '@/utils/context/mapInstanceContext'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; + +export const LayerTextEditFactoryModal: React.FC = () => { + const layerObject = useAppSelector(mapEditToolsLayerObjectSelector); + const currentModelId = useAppSelector(currentModelIdSelector); + const dispatch = useAppDispatch(); + const { mapInstance } = useMapInstance(); + + if (!layerObject || !('notes' in layerObject)) { + throw new Error('Invalid layer text object'); + } + + const [isSending, setIsSending] = useState<boolean>(false); + const [data, setData] = useState<LayerTextFactoryForm>({ + notes: layerObject.notes, + fontSize: layerObject.fontSize, + horizontalAlign: layerObject.horizontalAlign, + verticalAlign: layerObject.verticalAlign, + color: layerObject.color, + borderColor: layerObject.borderColor, + }); + + const handleSubmit = async (): Promise<void> => { + if (!layerObject) { + return; + } + try { + const layerText = await dispatch( + updateLayerText({ + modelId: currentModelId, + layerId: layerObject.layer, + id: layerObject.id, + x: layerObject.x, + y: layerObject.y, + z: layerObject.z, + width: layerObject.width, + height: layerObject.height, + notes: data.notes, + fontSize: data.fontSize, + horizontalAlign: data.horizontalAlign, + verticalAlign: data.verticalAlign, + color: data.color, + borderColor: data.borderColor, + }), + ).unwrap(); + + if (layerText) { + dispatch(layerUpdateText({ modelId: currentModelId, layerId: layerText.layer, layerText })); + dispatch(mapEditToolsSetLayerObject(layerText)); + updateElement(mapInstance, layerText.layer, layerText); + } + showToast({ + type: 'success', + message: 'The text has been successfully updated', + }); + dispatch(closeModal()); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while editing the layer text', + }); + } finally { + setIsSending(false); + } + }; + + const changeValues = (value: string | number | Color, key: string): void => { + setData(prevData => ({ ...prevData, [key]: value })); + }; + + return ( + <div className="relative w-[900px] border border-t-[#E1E0E6] bg-white p-[24px]"> + {isSending && ( + <div className="c-layer-text-factory-modal-loader"> + <LoadingIndicator width={44} height={44} /> + </div> + )} + <LayerTextForm onChange={changeValues} data={data} /> + <hr className="py-2" /> + <Button + type="button" + onClick={handleSubmit} + className="justify-center self-end justify-self-end text-base font-medium" + > + Submit + </Button> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.constants.ts b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.constants.ts index feddd690..cbee5e1c 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.constants.ts +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.constants.ts @@ -1,21 +1,21 @@ /* eslint-disable no-magic-numbers */ +import { HorizontalAlign, VerticalAlign } from '@/components/Map/MapViewer/MapViewer.types'; + export const TEXT_FONT_SIZES = [8, 9, 10, 11, 12, 14, 16, 18, 24, 30, 36, 48, 60, 72, 96]; export const TEXT_HORIZONTAL_ALIGNMENTS = [ { id: 'LEFT', name: 'left' }, { id: 'RIGHT', name: 'right' }, { id: 'CENTER', name: 'center' }, - { id: 'END', name: 'end' }, - { id: 'START', name: 'start' }, -]; +] as const; export const TEXT_VERTICAL_ALIGNMENTS = [ { id: 'TOP', name: 'top' }, { id: 'MIDDLE', name: 'middle' }, { id: 'BOTTOM', name: 'bottom' }, -]; +] as const; export const DEFAULT_TEXT_FONT_SIZE = 12; -export const DEFAULT_HORIZONTAL_ALIGNMENT = TEXT_HORIZONTAL_ALIGNMENTS[0].id; -export const DEFAULT_VERTICAL_ALIGNMENT = TEXT_VERTICAL_ALIGNMENTS[0].id; +export const DEFAULT_HORIZONTAL_ALIGNMENT: HorizontalAlign = TEXT_HORIZONTAL_ALIGNMENTS[0].id; +export const DEFAULT_VERTICAL_ALIGNMENT: VerticalAlign = TEXT_VERTICAL_ALIGNMENTS[0].id; diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types.ts b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types.ts index bb47feaa..231eb942 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types.ts +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types.ts @@ -1,10 +1,11 @@ import { Color } from '@/types/models'; +import { HorizontalAlign, VerticalAlign } from '@/components/Map/MapViewer/MapViewer.types'; export type LayerTextFactoryForm = { notes: string; fontSize: number; - horizontalAlign: string; - verticalAlign: string; + horizontalAlign: HorizontalAlign; + verticalAlign: VerticalAlign; color: Color; borderColor: Color; }; diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component.tsx index 22bcde3c..2dac649b 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component.tsx @@ -41,7 +41,7 @@ export const LayerTextForm = ({ data, onChange }: LayerTextFormProps): React.JSX <div> <span>Horizontal alignment:</span> <Select - options={TEXT_HORIZONTAL_ALIGNMENTS} + options={[...TEXT_HORIZONTAL_ALIGNMENTS]} selectedId={data.horizontalAlign} testId="horizontal-alignment-select" onChange={value => onChange(value, 'horizontalAlign')} @@ -50,7 +50,7 @@ export const LayerTextForm = ({ data, onChange }: LayerTextFormProps): React.JSX <div> <span>Vertical alignment:</span> <Select - options={TEXT_VERTICAL_ALIGNMENTS} + options={[...TEXT_VERTICAL_ALIGNMENTS]} selectedId={data.verticalAlign} testId="vertical-alignment-select" onChange={value => onChange(value, 'verticalAlign')} diff --git a/src/components/FunctionalArea/Modal/Modal.component.tsx b/src/components/FunctionalArea/Modal/Modal.component.tsx index 6cc342ee..bbd8c7d5 100644 --- a/src/components/FunctionalArea/Modal/Modal.component.tsx +++ b/src/components/FunctionalArea/Modal/Modal.component.tsx @@ -10,6 +10,7 @@ import { LayerImageObjectFactoryModal, } from '@/components/FunctionalArea/Modal/LayerImageObjectModal'; import { LayerTextFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component'; +import { LayerTextEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component'; import { EditOverlayModal } from './EditOverlayModal'; import { LoginModal } from './LoginModal'; import { ErrorReportModal } from './ErrorReportModal'; @@ -105,6 +106,11 @@ export const Modal = (): React.ReactNode => { <LayerTextFactoryModal /> </ModalLayout> )} + {isOpen && modalName === 'layer-text-edit-factory' && ( + <ModalLayout> + <LayerTextEditFactoryModal /> + </ModalLayout> + )} </> ); }; diff --git a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx index 59d85797..e9fd515a 100644 --- a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx +++ b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx @@ -34,7 +34,8 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { modalName === 'add-comment' && 'h-auto w-[400px]', modalName === 'error-report' && 'h-auto w-[800px]', modalName === 'layer-factory' && 'h-auto w-[400px]', - modalName === 'layer-text-factory' && 'h-auto w-[900px]', + ['layer-text-factory', 'layer-text-edit-factory'].includes(modalName) && + 'h-auto w-[900px]', ['layer-image-object-factory', 'layer-image-object-edit-factory'].includes(modalName) && 'h-auto w-[800px]', ['edit-overlay', 'logged-in-menu'].includes(modalName) && 'h-auto w-[432px]', diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index fa98e051..70a6acf5 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -13,8 +13,14 @@ import { removeLayerImage, removeLayerText, updateLayerImageObject, + updateLayerText, } from '@/redux/layers/layers.thunks'; -import { layerDeleteImage, layerDeleteText, layerUpdateImage } from '@/redux/layers/layers.slice'; +import { + layerDeleteImage, + layerDeleteText, + layerUpdateImage, + layerUpdateText, +} from '@/redux/layers/layers.slice'; import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; @@ -28,7 +34,10 @@ import { useSetBounds } from '@/utils/map/useSetBounds'; import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; import { usePointToProjection } from '@/utils/map/usePointToProjection'; import { Coordinate } from 'ol/coordinate'; -import { openLayerImageObjectEditFactoryModal } from '@/redux/modal/modal.slice'; +import { + openLayerImageObjectEditFactoryModal, + openLayerTextEditFactoryModal, +} from '@/redux/modal/modal.slice'; interface LayersDrawerObjectsListProps { layerId: number; @@ -173,6 +182,42 @@ export const LayersDrawerObjectsList = ({ await updateImageZIndex({ zIndex: lowestZIndex - 1, layerImage }); }; + const updateTextZIndex = async ({ + zIndex, + layerText, + }: { + zIndex: number; + layerText: LayerText; + }): Promise<void> => { + const newLayerText = await dispatch( + updateLayerText({ + modelId: currentModelId, + layerId: layerText.layer, + ...layerText, + z: zIndex, + }), + ).unwrap(); + if (newLayerText) { + dispatch( + layerUpdateText({ + modelId: currentModelId, + layerId: newLayerText.layer, + layerText: newLayerText, + }), + ); + dispatch(mapEditToolsSetLayerObject(newLayerText)); + updateElement(mapInstance, newLayerText.layer, newLayerText); + } + }; + + const bringTextToFront = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: highestZIndex + 1, layerText }); + }; + + const bringTextToBack = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: lowestZIndex - 1, layerText }); + }; + const centerObject = (layerObject: LayerImage | LayerText): void => { if (mapEditToolsLayerImageObject && mapEditToolsLayerImageObject.id === layerObject.id) { const point1 = pointToProjection({ x: layerObject.x, y: layerObject.y }); @@ -188,6 +233,10 @@ export const LayersDrawerObjectsList = ({ dispatch(openLayerImageObjectEditFactoryModal()); }; + const editText = (): void => { + dispatch(openLayerTextEditFactoryModal()); + }; + if (!layer) { return null; } @@ -208,11 +257,11 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerTextItem layerText={layerText} key={layerText.id} - bringToFront={() => {}} - bringToBack={() => {}} + bringToFront={() => bringTextToFront(layerText)} + bringToBack={() => bringTextToBack(layerText)} removeObject={() => removeObject(layerText)} centerObject={() => centerObject(layerText)} - editObject={() => {}} + editObject={() => editText()} isLayerVisible={isLayerVisible} isLayerActive={isLayerActive} /> diff --git a/src/components/Map/MapViewer/MapViewer.types.ts b/src/components/Map/MapViewer/MapViewer.types.ts index f10c9070..4204320f 100644 --- a/src/components/Map/MapViewer/MapViewer.types.ts +++ b/src/components/Map/MapViewer/MapViewer.types.ts @@ -8,7 +8,7 @@ export type MapConfig = { }; export type VerticalAlign = 'TOP' | 'MIDDLE' | 'BOTTOM'; -export type HorizontalAlign = 'LEFT' | 'RIGHT' | 'CENTER' | 'END' | 'START'; +export type HorizontalAlign = 'LEFT' | 'RIGHT' | 'CENTER'; export type OverlayBioEntityGroupedElementsType = { [id: string]: Array<OverlayBioEntityRender & { amount: number }>; diff --git a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts b/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts index 342cdfac..57b36875 100644 --- a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts +++ b/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts @@ -34,13 +34,13 @@ export type GlyphProps = { export default class Glyph { feature: Feature<Polygon>; - style: Style = new Style({}); + style: Style = new Style(); - noGlyphStyle: Style; + noGlyphStyle: Style = new Style(); imageScale: number = 1; - polygonStyle: Style; + polygonStyle: Style = new Style(); polygon: Polygon = new Polygon([]); @@ -113,26 +113,7 @@ export default class Glyph { this.drawPolygon(); - this.polygonStyle = getStyle({ - geometry: this.polygon, - zIndex: this.zIndex, - borderColor: { ...WHITE_COLOR, alpha: 0 }, - fillColor: { ...WHITE_COLOR, alpha: 0 }, - }); - - this.noGlyphStyle = getStyle({ - geometry: this.polygon, - zIndex: this.zIndex, - fillColor: '#E7E7E7', - }); - this.noGlyphStyle.setText( - new Text({ - text: 'No image', - font: '12pt Arial', - fill: getFill({ color: '#000' }), - overflow: true, - }), - ); + this.setStyles(); this.feature = new Feature({ geometry: this.polygon, @@ -172,6 +153,29 @@ export default class Glyph { ]); } + private setStyles(): void { + this.polygonStyle = getStyle({ + geometry: this.polygon, + zIndex: this.zIndex, + borderColor: { ...WHITE_COLOR, alpha: 0 }, + fillColor: { ...WHITE_COLOR, alpha: 0 }, + }); + + this.noGlyphStyle = getStyle({ + geometry: this.polygon, + zIndex: this.zIndex, + fillColor: '#E7E7E7', + }); + this.noGlyphStyle.setText( + new Text({ + text: 'No image', + font: '12pt Arial', + fill: getFill({ color: '#000' }), + overflow: true, + }), + ); + } + private refreshPolygon(): void { this.drawPolygon(); this.polygonStyle.setGeometry(this.polygon); @@ -195,7 +199,7 @@ export default class Glyph { this.glyphId = imageObject.glyph; this.refreshPolygon(); - this.refreshZIndex(); + this.setStyles(); this.drawImage(); this.feature.changed(); } diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts index 133034cf..26565345 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts @@ -5,7 +5,7 @@ import { Point } from 'ol/geom'; import { Feature } from 'ol'; import { FeatureLike } from 'ol/Feature'; import { MapInstance } from '@/types/map'; -import { LayerText as LayerTextModel, Color } from '@/types/models'; +import { Color, LayerText as LayerTextModel } from '@/types/models'; import { TEXT_CUTOFF_SCALE } from '@/components/Map/MapViewer/MapViewer.constants'; import { BoundingBox, @@ -77,13 +77,13 @@ export default class LayerText { fontSize: number; - style: Style; + style: Style = new Style(); - polygonStyle: Style; + polygonStyle: Style = new Style(); polygon: Polygon = new Polygon([]); - strokeStyle: Stroke; + strokeStyle: Stroke = new Stroke(); point: Point; @@ -140,29 +140,11 @@ export default class LayerText { horizontalAlign, pointToProjection, }); + this.point = new Point(textCoords); + this.drawPolygon(); - this.strokeStyle = getStroke({ - color: rgbToHex(borderColor), - width: 1, - }); - this.polygonStyle = getStyle({ - geometry: this.polygon, - borderColor, - fillColor: { rgb: 0, alpha: 0 }, - lineWidth: 1, - zIndex, - }); - const textStyle = getTextStyle({ - text, - fontSize, - color: rgbToHex(color), - zIndex, - horizontalAlign, - }); - this.point = new Point(textCoords); - this.style = textStyle; - this.style.setGeometry(this.point); + this.setStyles(); this.feature = new Feature({ geometry: this.polygon, @@ -254,6 +236,28 @@ export default class LayerText { this.feature.changed(); } + private setStyles(): void { + this.strokeStyle = getStroke({ + color: rgbToHex(this.borderColor), + width: 1, + }); + this.polygonStyle = getStyle({ + geometry: this.polygon, + borderColor: this.borderColor, + fillColor: { rgb: 0, alpha: 0 }, + lineWidth: 1, + zIndex: this.zIndex, + }); + this.style = getTextStyle({ + text: this.text, + fontSize: this.fontSize, + color: rgbToHex(this.color), + zIndex: this.zIndex, + horizontalAlign: this.horizontalAlign, + }); + this.style.setGeometry(this.point); + } + private updateElement(layerText: LayerTextModel): void { this.elementId = layerText.id; this.x = layerText.x; @@ -269,7 +273,7 @@ export default class LayerText { this.horizontalAlign = layerText.horizontalAlign; this.refreshPolygon(); - this.refreshZIndex(); + this.setStyles(); this.feature.changed(); } diff --git a/src/models/bioEntitySchema.ts b/src/models/bioEntitySchema.ts index ec78db95..5c754989 100644 --- a/src/models/bioEntitySchema.ts +++ b/src/models/bioEntitySchema.ts @@ -26,7 +26,7 @@ export const bioEntitySchema = z.object({ nameWidth: z.number(), nameHeight: z.number(), nameVerticalAlign: z.enum(['TOP', 'MIDDLE', 'BOTTOM']), - nameHorizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER', 'END', 'START']), + nameHorizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER']), width: z .number() .optional() diff --git a/src/models/layerTextSchema.ts b/src/models/layerTextSchema.ts index a575b139..d0460100 100644 --- a/src/models/layerTextSchema.ts +++ b/src/models/layerTextSchema.ts @@ -12,7 +12,7 @@ export const layerTextSchema = z.object({ fontSize: z.number(), notes: z.string(), verticalAlign: z.enum(['TOP', 'MIDDLE', 'BOTTOM']), - horizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER', 'END', 'START']), + horizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER']), backgroundColor: colorSchema, borderColor: colorSchema, color: colorSchema, diff --git a/src/models/modelElementModificationSchema.ts b/src/models/modelElementModificationSchema.ts index 3d7f318e..d69ce89a 100644 --- a/src/models/modelElementModificationSchema.ts +++ b/src/models/modelElementModificationSchema.ts @@ -15,7 +15,7 @@ export const modelElementModificationSchema = z.object({ nameWidth: z.number(), nameHeight: z.number(), nameVerticalAlign: z.enum(['TOP', 'MIDDLE', 'BOTTOM']), - nameHorizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER', 'END', 'START']), + nameHorizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER']), species: z.number(), borderColor: colorSchema, fillColor: colorSchema, diff --git a/src/models/modelElementSchema.ts b/src/models/modelElementSchema.ts index 86b82f67..32eae25e 100644 --- a/src/models/modelElementSchema.ts +++ b/src/models/modelElementSchema.ts @@ -36,7 +36,7 @@ export const modelElementSchema = z.object({ nameWidth: z.number(), nameHeight: z.number(), nameVerticalAlign: z.enum(['TOP', 'MIDDLE', 'BOTTOM']), - nameHorizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER', 'END', 'START']), + nameHorizontalAlign: z.enum(['LEFT', 'RIGHT', 'CENTER']), synonyms: z.array(z.string()), formerSymbols: z.array(z.string()), activity: z.boolean().optional(), diff --git a/src/redux/modal/modal.reducers.ts b/src/redux/modal/modal.reducers.ts index 1b903069..923d2858 100644 --- a/src/redux/modal/modal.reducers.ts +++ b/src/redux/modal/modal.reducers.ts @@ -165,3 +165,9 @@ export const openLayerTextFactoryModalReducer = ( state.modalTitle = 'Add text'; state.isOpen = true; }; + +export const openLayerTextEditFactoryModalReducer = (state: ModalState): void => { + state.isOpen = true; + state.modalName = 'layer-text-edit-factory'; + state.modalTitle = 'Edit text'; +}; diff --git a/src/redux/modal/modal.slice.ts b/src/redux/modal/modal.slice.ts index bf01d86a..ed74baec 100644 --- a/src/redux/modal/modal.slice.ts +++ b/src/redux/modal/modal.slice.ts @@ -20,6 +20,7 @@ import { openLayerImageObjectFactoryModalReducer, openLayerImageObjectEditFactoryModalReducer, openLayerTextFactoryModalReducer, + openLayerTextEditFactoryModalReducer, } from './modal.reducers'; const modalSlice = createSlice({ @@ -45,6 +46,7 @@ const modalSlice = createSlice({ openLayerImageObjectFactoryModal: openLayerImageObjectFactoryModalReducer, openLayerImageObjectEditFactoryModal: openLayerImageObjectEditFactoryModalReducer, openLayerTextFactoryModal: openLayerTextFactoryModalReducer, + openLayerTextEditFactoryModal: openLayerTextEditFactoryModalReducer, }, }); @@ -68,6 +70,7 @@ export const { openLayerImageObjectFactoryModal, openLayerImageObjectEditFactoryModal, openLayerTextFactoryModal, + openLayerTextEditFactoryModal, } = modalSlice.actions; export default modalSlice.reducer; diff --git a/src/types/modal.ts b/src/types/modal.ts index 8b02e86a..579c8137 100644 --- a/src/types/modal.ts +++ b/src/types/modal.ts @@ -15,4 +15,5 @@ export type ModalName = | 'layer-factory' | 'layer-image-object-factory' | 'layer-image-object-edit-factory' - | 'layer-text-factory'; + | 'layer-text-factory' + | 'layer-text-edit-factory'; -- GitLab From 7f8d0b665cbd00568e46ba57597c5d22ab28192b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 10:10:19 +0100 Subject: [PATCH 03/15] feat(layers): add layers zIndex editing --- .../LayerFactoryModal.component.tsx | 4 + ...LayerImageObjectFactoryModal.component.tsx | 9 +- .../LayerTextFactoryModal.component.tsx | 9 +- .../LayerDrawerTextItem.component.tsx | 12 +- .../LayersDrawer/LayersDrawer.component.tsx | 46 ++++-- .../LayersDrawerImageItem.component.tsx | 12 +- .../LayersDrawerLayer.component.tsx | 107 +++++++++++--- .../LayersDrawerLayerActions.component.tsx | 39 +++++ .../LayersDrawerObjectActions.component.tsx | 20 +-- .../LayersDrawerObjectsList.component.tsx | 32 ++-- .../useOlMapAdditionalLayers.ts | 1 + .../commentsLayer/useOlMapCommentsLayer.ts | 1 + .../config/mapCardLayer/useOlMapCardLayer.ts | 1 + .../config/pinsLayer/useOlMapPinsLayer.ts | 1 + .../processLayer/useOlMapProcessLayer.ts | 1 + .../reactionsLayer/useOlMapReactionsLayer.ts | 1 + .../utils/shapes/layer/Layer.test.ts | 1 + .../Map/MapViewer/utils/shapes/layer/Layer.ts | 3 + src/models/layerSchema.ts | 1 + src/redux/layers/layers.reducers.test.ts | 4 +- src/redux/layers/layers.selectors.ts | 139 +++++++++++++----- src/redux/layers/layers.thunks.test.ts | 18 ++- src/redux/layers/layers.thunks.ts | 28 ++-- src/redux/layers/layers.types.ts | 2 + src/shared/Icon/Icon.component.tsx | 12 +- src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx | 12 +- src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx | 12 +- src/shared/Icon/Icons/LayerArrowDownIcon.tsx | 18 +++ src/shared/Icon/Icons/LayerArrowUpIcon.tsx | 18 +++ .../{BringBackIcon.tsx => MoveBackIcon.tsx} | 6 +- .../{BringFrontIcon.tsx => MoveFrontIcon.tsx} | 6 +- .../IconButton/IconButton.component.tsx | 8 +- src/types/iconTypes.ts | 6 +- 33 files changed, 430 insertions(+), 160 deletions(-) create mode 100644 src/shared/Icon/Icons/LayerArrowDownIcon.tsx create mode 100644 src/shared/Icon/Icons/LayerArrowUpIcon.tsx rename src/shared/Icon/Icons/{BringBackIcon.tsx => MoveBackIcon.tsx} (78%) rename src/shared/Icon/Icons/{BringFrontIcon.tsx => MoveFrontIcon.tsx} (77%) diff --git a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx index 8d925951..b806d2b6 100644 --- a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx @@ -19,11 +19,13 @@ import { SerializedError } from '@reduxjs/toolkit'; import { layerFactoryStateSelector } from '@/redux/modal/modal.selector'; import './LayerFactoryModal.styles.css'; import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { maxLayerZIndexAboveDiagramSelector } from '@/redux/layers/layers.selectors'; export const LayerFactoryModal: React.FC = () => { const dispatch = useAppDispatch(); const currentModelId = useAppSelector(currentModelIdSelector); const layerFactoryState = useAppSelector(layerFactoryStateSelector); + const maxLayerZIndexAboveDiagram = useAppSelector(maxLayerZIndexAboveDiagramSelector); const [loaded, setLoaded] = useState<boolean>(false); const [data, setData] = useState<LayerStoreInterface>({ @@ -31,6 +33,7 @@ export const LayerFactoryModal: React.FC = () => { visible: false, locked: false, modelId: currentModelId, + zIndex: maxLayerZIndexAboveDiagram, }); const fetchData = useMemo(() => { @@ -42,6 +45,7 @@ export const LayerFactoryModal: React.FC = () => { visible: layer.visible, locked: layer.locked, modelId: currentModelId, + zIndex: layer.z, }); } setLoaded(true); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx index 1efb7d88..4d1513e9 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx @@ -4,7 +4,10 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { layerImageObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; -import { highestZIndexSelector, layersDrawLayerSelector } from '@/redux/layers/layers.selectors'; +import { + layersDrawLayerSelector, + maxObjectZIndexForLayerSelector, +} from '@/redux/layers/layers.selectors'; import { addLayerImageObject } from '@/redux/layers/layers.thunks'; import { addGlyph } from '@/redux/glyphs/glyphs.thunks'; import { SerializedError } from '@reduxjs/toolkit'; @@ -22,7 +25,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { const drawLayer = useAppSelector(layersDrawLayerSelector); const layerImageObjectFactoryState = useAppSelector(layerImageObjectFactoryStateSelector); const dispatch = useAppDispatch(); - const highestZIndex = useAppSelector(highestZIndexSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const { mapInstance } = useMapInstance(); const [selectedGlyph, setSelectedGlyph] = useState<number | null>(null); @@ -49,7 +52,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { layerId: drawLayer, x: layerImageObjectFactoryState.x, y: layerImageObjectFactoryState.y, - z: highestZIndex + 1, + z: maxZIndex + 1, width: layerImageObjectFactoryState.width, height: layerImageObjectFactoryState.height, glyph: glyphId, diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx index e1ccf612..bfb80aff 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx @@ -13,7 +13,10 @@ import { LayerTextFactoryForm } from '@/components/FunctionalArea/Modal/LayerTex import { Color } from '@/types/models'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { layerTextFactoryStateSelector } from '@/redux/modal/modal.selector'; -import { highestZIndexSelector, layersDrawLayerSelector } from '@/redux/layers/layers.selectors'; +import { + layersDrawLayerSelector, + maxObjectZIndexForLayerSelector, +} from '@/redux/layers/layers.selectors'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { showToast } from '@/utils/showToast'; @@ -31,7 +34,7 @@ export const LayerTextFactoryModal: React.FC = () => { const currentModelId = useAppSelector(currentModelIdSelector); const layerTextFactoryState = useAppSelector(layerTextFactoryStateSelector); const dispatch = useAppDispatch(); - const highestZIndex = useAppSelector(highestZIndexSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const { mapInstance } = useMapInstance(); const [isSending, setIsSending] = useState<boolean>(false); @@ -55,7 +58,7 @@ export const LayerTextFactoryModal: React.FC = () => { layerId: drawLayer, boundingBox: layerTextFactoryState, textData: data, - z: highestZIndex + 1, + z: maxZIndex + 1, }), ).unwrap(); if (!textData) { diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx index 6f57c762..a9c3d3b3 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx @@ -10,8 +10,8 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' interface LayersDrawerTextItemProps { layerText: LayerText; - bringToFront: () => void; - bringToBack: () => void; + moveToFront: () => void; + moveToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; @@ -21,8 +21,8 @@ interface LayersDrawerTextItemProps { export const LayersDrawerTextItem = ({ layerText, - bringToFront, - bringToBack, + moveToFront, + moveToBack, removeObject, centerObject, editObject, @@ -68,8 +68,8 @@ export const LayersDrawerTextItem = ({ </div> {showActions && ( <LayersDrawerObjectActions - bringToFront={bringToFront} - bringToBack={bringToBack} + moveToFront={moveToFront} + moveToBack={moveToBack} removeObject={removeObject} centerObject={centerObject} editObject={editObject} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index 12bef081..33c259f3 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -4,7 +4,7 @@ import { DrawerHeading } from '@/shared/DrawerHeading'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { layersForCurrentModelSelector } from '@/redux/layers/layers.selectors'; import { Button } from '@/shared/Button'; -import { JSX, useEffect, useRef } from 'react'; +import { JSX, useEffect, useMemo, useRef } from 'react'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; import { LayersDrawerLayer } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component'; @@ -21,6 +21,19 @@ export const LayersDrawer = (): JSX.Element => { dispatch(openLayerFactoryModal()); }; + const sortedLayers = useMemo(() => { + return [...layersForCurrentModel].sort((layerA, layerB) => layerB.details.z - layerA.details.z); + }, [layersForCurrentModel]); + + const negativeZLayers = useMemo( + () => sortedLayers.filter(layer => layer.details.z < 0), + [sortedLayers], + ); + const positiveZLayers = useMemo( + () => sortedLayers.filter(layer => layer.details.z >= 0), + [sortedLayers], + ); + useEffect(() => { if (!mapEditToolsLayerImageObject || !layersDrawerRef.current) { return; @@ -61,20 +74,33 @@ export const LayersDrawer = (): JSX.Element => { ref={layersDrawerRef} > {hasPrivilegeToWriteProject && ( - <div className="flex justify-start pt-2"> + <div className="flex justify-start py-2"> <Button icon="plus" isIcon isFrontIcon onClick={addNewLayer}> Add layer </Button> </div> )} - <div className="flex flex-col gap-4"> - {layersForCurrentModel.map(layer => ( - <LayersDrawerLayer - key={layer.details.id} - layerId={layer.details.id} - layerName={layer.details.name} - /> - ))} + <div className="flex flex-col gap-2"> + {Boolean(positiveZLayers.length) && ( + <span className="border-b-2 border-dashed border-b-gray-400 text-center text-lg font-semibold"> + Layers above the diagram + </span> + )} + <div className="flex flex-col gap-5"> + {positiveZLayers.map(layer => ( + <LayersDrawerLayer key={layer.details.id} layerDetails={layer.details} /> + ))} + </div> + {Boolean(negativeZLayers.length) && ( + <span className="border-b-2 border-dashed border-b-gray-400 text-center text-lg font-semibold"> + Layers below the diagram + </span> + )} + <div className="flex flex-col gap-5"> + {negativeZLayers.map(layer => ( + <LayersDrawerLayer key={layer.details.id} layerDetails={layer.details} /> + ))} + </div> </div> </div> </div> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx index 0622f141..e160b807 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx @@ -11,8 +11,8 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' interface LayersDrawerImageItemProps { layerImage: LayerImage; - bringToFront: () => void; - bringToBack: () => void; + moveToFront: () => void; + moveToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; @@ -22,8 +22,8 @@ interface LayersDrawerImageItemProps { export const LayersDrawerImageItem = ({ layerImage, - bringToFront, - bringToBack, + moveToFront, + moveToBack, removeObject, centerObject, editObject, @@ -72,8 +72,8 @@ export const LayersDrawerImageItem = ({ </div> {showActions && ( <LayersDrawerObjectActions - bringToFront={bringToFront} - bringToBack={bringToBack} + moveToFront={moveToFront} + moveToBack={moveToBack} removeObject={removeObject} centerObject={centerObject} editObject={editObject} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index 49b8536f..8b0f9b01 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -1,14 +1,19 @@ +/* eslint-disable no-magic-numbers */ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { layersActiveLayersSelector, layersVisibilityForCurrentModelSelector, + maxLayerZIndexAboveDiagramSelector, + maxLayerZIndexBelowDiagramSelector, + minLayerZIndexAboveDiagramSelector, + minLayerZIndexBelowDiagramSelector, } from '@/redux/layers/layers.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; import { useState, JSX, useMemo } from 'react'; -import { getLayersForModel, removeLayer } from '@/redux/layers/layers.thunks'; +import { getLayersForModel, removeLayer, updateLayer } from '@/redux/layers/layers.thunks'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; import { LayersDrawerLayerActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component'; @@ -21,38 +26,42 @@ import { import { LayersDrawerObjectsList } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component'; import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.slice'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; +import { Layer } from '@/types/models'; interface LayersDrawerLayerProps { - layerId: number; - layerName: string; + layerDetails: Layer; } -export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps): JSX.Element => { +export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX.Element => { const layersVisibilityForCurrentModel = useAppSelector(layersVisibilityForCurrentModelSelector); const activeLayers = useAppSelector(layersActiveLayersSelector); const currentModelId = useAppSelector(currentModelIdSelector); + const maxLayerZIndexAboveDiagram = useAppSelector(maxLayerZIndexAboveDiagramSelector); + const maxLayerZIndexBelowDiagram = useAppSelector(maxLayerZIndexBelowDiagramSelector); + const minLayerZIndexAboveDiagram = useAppSelector(minLayerZIndexAboveDiagramSelector); + const minLayerZIndexBelowDiagram = useAppSelector(minLayerZIndexBelowDiagramSelector); const dispatch = useAppDispatch(); const [isModalOpen, setIsModalOpen] = useState(false); const isLayerVisible = useMemo(() => { - return layersVisibilityForCurrentModel[layerId]; - }, [layerId, layersVisibilityForCurrentModel]); + return layersVisibilityForCurrentModel[layerDetails.id]; + }, [layerDetails.id, layersVisibilityForCurrentModel]); const isLayerActive = useMemo(() => { - return activeLayers.includes(layerId); - }, [activeLayers, layerId]); + return activeLayers.includes(layerDetails.id); + }, [activeLayers, layerDetails.id]); const editLayer = (): void => { - dispatch(openLayerFactoryModal(layerId)); + dispatch(openLayerFactoryModal(layerDetails.id)); }; const addImage = (): void => { - dispatch(setDrawLayer({ modelId: currentModelId, layerId })); + dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.DRAW_IMAGE)); }; const addText = (): void => { - dispatch(setDrawLayer({ modelId: currentModelId, layerId })); + dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_TEXT)); }; @@ -61,11 +70,11 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps }; const confirmRemove = async (): Promise<void> => { - if (!layerId) { + if (!layerDetails.id) { return; } try { - await dispatch(removeLayer({ modelId: currentModelId, layerId })).unwrap(); + await dispatch(removeLayer({ modelId: currentModelId, layerId: layerDetails.id })).unwrap(); showToast({ type: 'success', message: 'The layer has been successfully removed', @@ -87,12 +96,61 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps const toggleActiveLayer = (value: boolean): void => { if (value) { - dispatch(setLayerToActive({ modelId: currentModelId, layerId })); + dispatch(setLayerToActive({ modelId: currentModelId, layerId: layerDetails.id })); } else { - dispatch(setLayerToInactive({ modelId: currentModelId, layerId })); + dispatch(setLayerToInactive({ modelId: currentModelId, layerId: layerDetails.id })); } }; + const updateLayerZIndex = async (zIndex: number): Promise<void> => { + try { + dispatch( + updateLayer({ + name: layerDetails.name, + visible: layerDetails.visible, + locked: layerDetails.locked, + modelId: currentModelId, + layerId: layerDetails.id, + zIndex, + }), + ); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while updating the layer', + }); + } + }; + + const moveToFront = (): void => { + if (layerDetails.z > 0) { + updateLayerZIndex(maxLayerZIndexAboveDiagram); + } else if (layerDetails.z < 0) { + const zIndex = Math.min(maxLayerZIndexBelowDiagram, -1); + updateLayerZIndex(zIndex); + } + }; + + const moveToBack = (): void => { + if (layerDetails.z > 0) { + const zIndex = Math.max(minLayerZIndexAboveDiagram, 1); + updateLayerZIndex(zIndex); + } else if (layerDetails.z < 0) { + updateLayerZIndex(minLayerZIndexBelowDiagram); + } + }; + + const moveAboveDiagram = (): void => { + const zIndex = Math.max(minLayerZIndexAboveDiagram - 1, 1); + updateLayerZIndex(zIndex); + }; + + const moveBelowDiagram = (): void => { + const zIndex = Math.min(minLayerZIndexBelowDiagram + 1, -1); + updateLayerZIndex(zIndex); + }; + return ( <div> <QuestionModal @@ -101,9 +159,13 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps onConfirm={confirmRemove} question="Are you sure you want to remove the layer?" /> - <div className="flex items-center justify-between py-3"> - <span className={`font-semibold ${isLayerVisible ? 'opacity-100' : 'opacity-40'}`}> - {layerName} + <div className="flex items-center justify-between pb-3"> + <span + className={`font-semibold ${ + isLayerVisible ? 'opacity-100' : 'opacity-40' + } min-w-0 flex-1 truncate `} + > + {layerDetails.name} </span> <LayersDrawerLayerActions toggleVisibility={() => @@ -111,7 +173,7 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps setLayerVisibility({ modelId: currentModelId, visible: !isLayerVisible, - layerId, + layerId: layerDetails.id, }), ) } @@ -120,12 +182,17 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps removeLayer={onRemoveLayer} addImage={addImage} addText={addText} + moveToFront={moveToFront} + moveToBack={moveToBack} + moveAboveDiagram={moveAboveDiagram} + moveBelowDiagram={moveBelowDiagram} + zIndex={layerDetails.z} isVisible={isLayerVisible} isActive={isLayerActive} /> </div> <LayersDrawerObjectsList - layerId={layerId} + layerId={layerDetails.id} isLayerVisible={isLayerVisible} isLayerActive={isLayerActive} /> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx index 18627b13..81435100 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-magic-numbers */ import { IconButton } from '@/shared/IconButton'; import { JSX } from 'react'; import { LayerDrawerLayerContextMenu } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component'; @@ -9,10 +10,15 @@ type LayersDrawerLayerActionsProps = { removeLayer: () => void; isVisible: boolean; isActive: boolean; + zIndex: number; toggleVisibility: () => void; toggleActiveLayer: (value: boolean) => void; addImage: () => void; addText: () => void; + moveToFront: () => void; + moveToBack: () => void; + moveAboveDiagram: () => void; + moveBelowDiagram: () => void; }; export const LayersDrawerLayerActions = ({ @@ -20,10 +26,15 @@ export const LayersDrawerLayerActions = ({ removeLayer, isVisible, isActive, + zIndex, toggleVisibility, toggleActiveLayer, addImage, addText, + moveToFront, + moveToBack, + moveAboveDiagram, + moveBelowDiagram, }: LayersDrawerLayerActionsProps): JSX.Element => { const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); @@ -43,6 +54,34 @@ export const LayersDrawerLayerActions = ({ className="h-auto w-auto bg-transparent p-0" onClick={() => toggleActiveLayer(!isActive)} /> + <IconButton + title="Move to front" + icon="move-front" + className="h-auto w-auto bg-transparent p-0" + onClick={moveToFront} + /> + <IconButton + title="Move to back" + icon="move-back" + className="h-auto w-auto bg-transparent p-0" + onClick={moveToBack} + /> + {zIndex < 0 && ( + <IconButton + title="Move above the diagram" + icon="layer-arrow-up" + className="h-auto w-auto bg-transparent p-0" + onClick={moveAboveDiagram} + /> + )} + {zIndex > 0 && ( + <IconButton + title="Move below the diagram" + icon="layer-arrow-down" + className="h-auto w-auto bg-transparent p-0" + onClick={moveBelowDiagram} + /> + )} <LayerDrawerLayerContextMenu removeLayer={removeLayer} editLayer={editLayer} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx index 4cf6871e..a97189ea 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx @@ -2,16 +2,16 @@ import { JSX } from 'react'; import { IconButton } from '@/shared/IconButton'; interface LayersDrawerObjectActionsProps { - bringToFront: () => void; - bringToBack: () => void; + moveToFront: () => void; + moveToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; } export const LayersDrawerObjectActions = ({ - bringToFront, - bringToBack, + moveToFront, + moveToBack, removeObject, centerObject, editObject, @@ -31,16 +31,16 @@ export const LayersDrawerObjectActions = ({ onClick={editObject} /> <IconButton - icon="bring-front" + icon="move-front" className="h-auto w-auto bg-transparent p-0" - title="Bring to front" - onClick={bringToFront} + title="Move to front" + onClick={moveToFront} /> <IconButton - icon="bring-back" + icon="move-back" className="h-auto w-auto bg-transparent p-0" - title="Bring to back" - onClick={bringToBack} + title="Move to back" + onClick={moveToBack} /> <IconButton icon="trash" diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 70a6acf5..9ec19fe4 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -1,9 +1,9 @@ /* eslint-disable no-magic-numbers */ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { - highestZIndexSelector, layerByIdSelector, - lowestZIndexSelector, + maxObjectZIndexForLayerSelector, + minObjectZIndexForLayerSelector, } from '@/redux/layers/layers.selectors'; import { JSX, useState } from 'react'; import { LayersDrawerImageItem } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component'; @@ -64,8 +64,8 @@ export const LayersDrawerObjectsList = ({ isLayerActive, }: LayersDrawerObjectsListProps): JSX.Element | null => { const currentModelId = useAppSelector(mapModelIdSelector); - const highestZIndex = useAppSelector(highestZIndexSelector); - const lowestZIndex = useAppSelector(lowestZIndexSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, layerId)); + const minZIndex = useAppSelector(state => minObjectZIndexForLayerSelector(state, layerId)); const layer = useAppSelector(state => layerByIdSelector(state, layerId)); const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image'>(undefined); @@ -174,12 +174,12 @@ export const LayersDrawerObjectsList = ({ } }; - const bringImageToFront = async (layerImage: LayerImage): Promise<void> => { - await updateImageZIndex({ zIndex: highestZIndex + 1, layerImage }); + const moveImageToFront = async (layerImage: LayerImage): Promise<void> => { + await updateImageZIndex({ zIndex: maxZIndex + 1, layerImage }); }; - const bringImageToBack = async (layerImage: LayerImage): Promise<void> => { - await updateImageZIndex({ zIndex: lowestZIndex - 1, layerImage }); + const moveImageToBack = async (layerImage: LayerImage): Promise<void> => { + await updateImageZIndex({ zIndex: minZIndex - 1, layerImage }); }; const updateTextZIndex = async ({ @@ -210,12 +210,12 @@ export const LayersDrawerObjectsList = ({ } }; - const bringTextToFront = async (layerText: LayerText): Promise<void> => { - await updateTextZIndex({ zIndex: highestZIndex + 1, layerText }); + const moveTextToFront = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: maxZIndex + 1, layerText }); }; - const bringTextToBack = async (layerText: LayerText): Promise<void> => { - await updateTextZIndex({ zIndex: lowestZIndex - 1, layerText }); + const moveTextToBack = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: minZIndex - 1, layerText }); }; const centerObject = (layerObject: LayerImage | LayerText): void => { @@ -257,8 +257,8 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerTextItem layerText={layerText} key={layerText.id} - bringToFront={() => bringTextToFront(layerText)} - bringToBack={() => bringTextToBack(layerText)} + moveToFront={() => moveTextToFront(layerText)} + moveToBack={() => moveTextToBack(layerText)} removeObject={() => removeObject(layerText)} centerObject={() => centerObject(layerText)} editObject={() => editText()} @@ -270,8 +270,8 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerImageItem layerImage={layerImage} key={layerImage.id} - bringToFront={() => bringImageToFront(layerImage)} - bringToBack={() => bringImageToBack(layerImage)} + moveToFront={() => moveImageToFront(layerImage)} + moveToBack={() => moveImageToBack(layerImage)} removeObject={() => removeObject(layerImage)} centerObject={() => centerObject(layerImage)} editObject={() => editImage()} diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 5e378293..6d41944f 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -125,6 +125,7 @@ export const useOlMapAdditionalLayers = ( const vectorLayers = useMemo(() => { return layersState.map(layer => { const additionalLayer = new Layer({ + zIndex: layer.details.z, texts: layer.texts, rects: layer.rects, ovals: layer.ovals, diff --git a/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts b/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts index 7ac3b73b..a3640020 100644 --- a/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts @@ -36,6 +36,7 @@ export const useOlMapCommentsLayer = (): VectorLayer<VectorSource<Feature<Geomet return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: Infinity, source: vectorSource, }); vectorLayer.set('type', LAYER_TYPE.COMMENTS_LAYER); diff --git a/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts b/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts index 69cec807..db3dbad4 100644 --- a/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts +++ b/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts @@ -38,6 +38,7 @@ export const useOlMapCardLayer = (): VectorLayer<VectorSource<Feature<Polygon>>> return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: -Infinity, source: vectorSource, style: new Style({ fill: new Fill({ diff --git a/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts b/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts index f7b6001c..4cd5a32b 100644 --- a/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts @@ -77,6 +77,7 @@ export const useOlMapPinsLayer = (): VectorLayer<VectorSource<Feature<Geometry>> return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: Infinity, source: vectorSource, }); vectorLayer.set('type', LAYER_TYPE.PINS_LAYER); diff --git a/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts b/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts index 2811ec30..98cb6e1e 100644 --- a/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts +++ b/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts @@ -274,6 +274,7 @@ export const useOlMapProcessLayer = ({ return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: 0, source: vectorSource, updateWhileAnimating: true, updateWhileInteracting: true, diff --git a/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts b/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts index bfb2668e..df526271 100644 --- a/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts @@ -63,6 +63,7 @@ export const useOlMapReactionsLayer = (): VectorLayer<VectorSource<Feature<Geome return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: Infinity, source: vectorSource, style: new Style({ fill: new Fill({ color: LINE_COLOR }), diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts index 7b8bb971..10349c6d 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts @@ -133,6 +133,7 @@ describe('Layer', () => { pointToProjection: jest.fn(point => [point.x, point.y]), mapInstance, mapSize, + zIndex: 1, lineTypes: {}, arrowTypes: {}, }; diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 7f697a72..14d5f8b5 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -34,6 +34,7 @@ import LayerText from '@/components/Map/MapViewer/utils/shapes/layer/elements/La import LayerImage from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage'; export interface LayerProps { + zIndex: number; texts: { [key: string]: LayerTextModel }; rects: Array<LayerRect>; ovals: Array<LayerOval>; @@ -78,6 +79,7 @@ export default class Layer { >; constructor({ + zIndex, texts, rects, ovals, @@ -118,6 +120,7 @@ export default class Layer { this.vectorSource.addFeatures(arrowsFeatures); this.vectorLayer = new VectorLayer({ + zIndex, source: this.vectorSource, visible, updateWhileAnimating: true, diff --git a/src/models/layerSchema.ts b/src/models/layerSchema.ts index 380146a7..11fcd88d 100644 --- a/src/models/layerSchema.ts +++ b/src/models/layerSchema.ts @@ -5,4 +5,5 @@ export const layerSchema = z.object({ name: z.string(), visible: z.boolean(), locked: z.boolean(), + z: z.number(), }); diff --git a/src/redux/layers/layers.reducers.test.ts b/src/redux/layers/layers.reducers.test.ts index 7bcb10ba..d93fb4f8 100644 --- a/src/redux/layers/layers.reducers.test.ts +++ b/src/redux/layers/layers.reducers.test.ts @@ -92,7 +92,7 @@ describe('layers reducer', () => { const { type } = await store.dispatch(getLayersForModel(1)); const { data, loading, error } = store.getState().layers[1]; - expect(type).toBe('vectorMap/getLayers/fulfilled'); + expect(type).toBe('layers/getLayers/fulfilled'); expect(loading).toEqual('succeeded'); expect(error).toEqual({ message: '', name: '' }); expect(data).toEqual({ @@ -120,7 +120,7 @@ describe('layers reducer', () => { const action = await store.dispatch(getLayersForModel(1)); const { data, loading, error } = store.getState().layers[1]; - expect(action.type).toBe('vectorMap/getLayers/rejected'); + expect(action.type).toBe('layers/getLayers/rejected'); expect(() => unwrapResult(action)).toThrow( "Failed to fetch layers: The page you're looking for doesn't exist. Please verify the URL and try again.", ); diff --git a/src/redux/layers/layers.selectors.ts b/src/redux/layers/layers.selectors.ts index 8f016c8a..8123fa00 100644 --- a/src/redux/layers/layers.selectors.ts +++ b/src/redux/layers/layers.selectors.ts @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { rootSelector } from '@/redux/root/root.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { LayerState } from '@/redux/layers/layers.types'; export const layersSelector = createSelector(rootSelector, state => state.layers); @@ -18,7 +19,7 @@ export const layersActiveLayersSelector = createSelector( export const layersDrawLayerSelector = createSelector( layersStateForCurrentModelSelector, - state => state?.data?.drawLayer, + state => state?.data?.drawLayer || null, ); export const layerByIdSelector = createSelector( @@ -41,40 +42,112 @@ export const layersForCurrentModelSelector = createSelector( state => state?.data?.layers || [], ); -export const highestZIndexSelector = createSelector(layersForCurrentModelSelector, layers => { - if (!layers || layers.length === 0) return 0; - - const getMaxZFromItems = <T extends { z?: number }>(items: T[] = []): number => - items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; - - return layers.reduce((maxZ, layer) => { - const textsMaxZ = getMaxZFromItems(Object.values(layer.texts)); - const rectsMaxZ = getMaxZFromItems(layer.rects); - const ovalsMaxZ = getMaxZFromItems(layer.ovals); - const linesMaxZ = getMaxZFromItems(layer.lines); - const imagesMaxZ = getMaxZFromItems(Object.values(layer.images)); - - const layerMaxZ = Math.max(textsMaxZ, rectsMaxZ, ovalsMaxZ, linesMaxZ, imagesMaxZ); - - return Math.max(maxZ, layerMaxZ); - }, 0); -}); +export const maxLayerZIndexAboveDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return 1000; + } + let maxZIndex = -Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z > 0 && layer.details.z > maxZIndex) { + maxZIndex = layer.details.z; + } + }); + return maxZIndex; + }, +); -export const lowestZIndexSelector = createSelector(layersForCurrentModelSelector, layers => { - if (!layers || layers.length === 0) return 0; +export const maxLayerZIndexBelowDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return -1000; + } + let maxZIndex = -Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z < 0 && layer.details.z > maxZIndex) { + maxZIndex = layer.details.z; + } + }); + return maxZIndex; + }, +); - const getMinZFromItems = <T extends { z?: number }>(items: T[] = []): number => - items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; +export const minLayerZIndexAboveDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return 1000; + } + let minZIndex = Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z > 0 && layer.details.z < minZIndex) { + minZIndex = layer.details.z; + } + }); + return minZIndex; + }, +); - return layers.reduce((minZ, layer) => { - const textsMinZ = getMinZFromItems(Object.values(layer.texts)); - const rectsMinZ = getMinZFromItems(layer.rects); - const ovalsMinZ = getMinZFromItems(layer.ovals); - const linesMinZ = getMinZFromItems(layer.lines); - const imagesMinZ = getMinZFromItems(Object.values(layer.images)); +export const minLayerZIndexBelowDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return -1000; + } + let minZIndex = Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z < 0 && layer.details.z < minZIndex) { + minZIndex = layer.details.z; + } + }); + return minZIndex; + }, +); - const layerMinZ = Math.min(textsMinZ, rectsMinZ, ovalsMinZ, linesMinZ, imagesMinZ); +export const maxObjectZIndexForLayerSelector = createSelector( + [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], + (layers, layerId) => { + if (!layers || layers.length === 0 || !layerId) { + return 0; + } + const foundLayer = layers.find(layer => layer.details.id === layerId); + if (!foundLayer) { + return 0; + } + const getMaxZFromItems = <T extends { z?: number }>(items: T[] = []): number => + items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; + + const textsMaxZ = getMaxZFromItems(Object.values(foundLayer.texts)); + const rectsMaxZ = getMaxZFromItems(foundLayer.rects); + const ovalsMaxZ = getMaxZFromItems(foundLayer.ovals); + const linesMaxZ = getMaxZFromItems(foundLayer.lines); + const imagesMaxZ = getMaxZFromItems(Object.values(foundLayer.images)); + + return Math.max(textsMaxZ, rectsMaxZ, ovalsMaxZ, linesMaxZ, imagesMaxZ); + }, +); - return Math.min(minZ, layerMinZ); - }, 0); -}); +export const minObjectZIndexForLayerSelector = createSelector( + [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], + (layers, layerId) => { + if (!layers || layers.length === 0 || !layerId) { + return 0; + } + const foundLayer = layers.find(layer => layer.details.id === layerId); + if (!foundLayer) { + return 0; + } + const getMinZFromItems = <T extends { z?: number }>(items: T[] = []): number => + items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; + + const textsMinZ = getMinZFromItems(Object.values(foundLayer.texts)); + const rectsMinZ = getMinZFromItems(foundLayer.rects); + const ovalsMinZ = getMinZFromItems(foundLayer.ovals); + const linesMinZ = getMinZFromItems(foundLayer.lines); + const imagesMinZ = getMinZFromItems(Object.values(foundLayer.images)); + + return Math.min(textsMinZ, rectsMinZ, ovalsMinZ, linesMinZ, imagesMinZ); + }, +); diff --git a/src/redux/layers/layers.thunks.test.ts b/src/redux/layers/layers.thunks.test.ts index 77e10bdb..09028272 100644 --- a/src/redux/layers/layers.thunks.test.ts +++ b/src/redux/layers/layers.thunks.test.ts @@ -111,7 +111,13 @@ describe('layers thunks', () => { mockedAxiosClient.onPost(apiPath.storeLayer(1)).reply(HttpStatusCode.Created, layerFixture); const { payload } = await store.dispatch( - addLayerForModel({ name: 'New Layer', visible: true, locked: false, modelId: 1 }), + addLayerForModel({ + name: 'New Layer', + visible: true, + locked: false, + modelId: 1, + zIndex: 1, + }), ); expect(payload).toEqual(layerFixture); }); @@ -122,7 +128,13 @@ describe('layers thunks', () => { .reply(HttpStatusCode.Created, { invalid: 'data' }); const { payload } = await store.dispatch( - addLayerForModel({ name: 'New Layer', visible: true, locked: false, modelId: 1 }), + addLayerForModel({ + name: 'New Layer', + visible: true, + locked: false, + modelId: 1, + zIndex: 1, + }), ); expect(payload).toBeNull(); }); @@ -139,6 +151,7 @@ describe('layers thunks', () => { locked: true, modelId: 1, layerId: 2, + zIndex: 1, }), ); expect(payload).toEqual(layerFixture); @@ -156,6 +169,7 @@ describe('layers thunks', () => { locked: true, modelId: 1, layerId: 2, + zIndex: 1, }), ); expect(payload).toBeNull(); diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 66035fd8..bda72fce 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -32,7 +32,7 @@ export const getLayer = createAsyncThunk< Layer | null, { modelId: number; layerId: number }, ThunkConfig ->('vectorMap/getLayer', async ({ modelId, layerId }) => { +>('layers/getLayer', async ({ modelId, layerId }) => { try { const { data } = await axiosInstanceNewAPI.get<Layer>(apiPath.getLayer(modelId, layerId)); @@ -48,7 +48,7 @@ export const getLayersForModel = createAsyncThunk< LayersVisibilitiesState | undefined, number, ThunkConfig ->('vectorMap/getLayers', async (modelId: number) => { +>('layers/getLayers', async (modelId: number) => { try { const { data } = await axiosInstanceNewAPI.get<Layers>(apiPath.getLayers(modelId)); const isDataValid = validateDataUsingZodSchema(data, pageableSchema(layerSchema)); @@ -103,13 +103,14 @@ export const getLayersForModel = createAsyncThunk< }); export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterface, ThunkConfig>( - 'vectorMap/addLayer', - async ({ name, visible, locked, modelId }) => { + 'layers/addLayer', + async ({ name, visible, locked, modelId, zIndex }) => { try { const { data } = await axiosInstanceNewAPI.post<Layer>(apiPath.storeLayer(modelId), { name, visible, locked, + z: zIndex, }); const isDataValid = validateDataUsingZodSchema(data, layerSchema); @@ -122,13 +123,14 @@ export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterfa ); export const updateLayer = createAsyncThunk<Layer | null, LayerUpdateInterface, ThunkConfig>( - 'vectorMap/updateLayer', - async ({ name, visible, locked, modelId, layerId }) => { + 'layers/updateLayer', + async ({ name, visible, locked, modelId, layerId, zIndex }) => { try { const { data } = await axiosInstanceNewAPI.put<Layer>(apiPath.updateLayer(modelId, layerId), { name, visible, locked, + z: zIndex, }); const isDataValid = validateDataUsingZodSchema(data, layerSchema); @@ -144,7 +146,7 @@ export const removeLayer = createAsyncThunk< null, { modelId: number; layerId: number }, ThunkConfig ->('vectorMap/removeLayer', async ({ modelId, layerId }) => { +>('layers/removeLayer', async ({ modelId, layerId }) => { try { await axiosInstanceNewAPI.delete<void>(apiPath.removeLayer(modelId, layerId)); return null; @@ -161,7 +163,7 @@ export const getLayerImage = createAsyncThunk< imageId: number; }, ThunkConfig ->('vectorMap/getLayerImage', async ({ modelId, layerId, imageId }) => { +>('layers/getLayerImage', async ({ modelId, layerId, imageId }) => { try { const { data } = await axiosInstanceNewAPI.get<LayerImage>( apiPath.getLayerImageObject(modelId, layerId, imageId), @@ -187,7 +189,7 @@ export const addLayerImageObject = createAsyncThunk< glyph: number | null; }, ThunkConfig ->('vectorMap/addLayerImageObject', async ({ modelId, layerId, x, y, z, width, height, glyph }) => { +>('layers/addLayerImageObject', async ({ modelId, layerId, x, y, z, width, height, glyph }) => { try { const { data } = await axiosInstanceNewAPI.post<LayerImage>( apiPath.addLayerImageObject(modelId, layerId), @@ -223,7 +225,7 @@ export const updateLayerImageObject = createAsyncThunk< }, ThunkConfig >( - 'vectorMap/updateLayerImageObject', + 'layers/updateLayerImageObject', async ({ modelId, layerId, id, x, y, z, width, height, glyph }) => { try { const { data } = await axiosInstanceNewAPI.put<LayerImage>( @@ -252,7 +254,7 @@ export const removeLayerImage = createAsyncThunk< null, { modelId: number; layerId: number; imageId: number }, ThunkConfig ->('vectorMap/removeLayerImage', async ({ modelId, layerId, imageId }) => { +>('layers/removeLayerImage', async ({ modelId, layerId, imageId }) => { try { await axiosInstanceNewAPI.delete<void>( apiPath.removeLayerImageObject(modelId, layerId, imageId), @@ -273,7 +275,7 @@ export const addLayerText = createAsyncThunk< textData: LayerTextFactoryForm; }, ThunkConfig ->('vectorMap/addLayerText', async ({ modelId, layerId, z, boundingBox, textData }) => { +>('layers/addLayerText', async ({ modelId, layerId, z, boundingBox, textData }) => { try { const { data } = await axiosInstanceNewAPI.post<LayerText>( apiPath.addLayerText(modelId, layerId), @@ -299,7 +301,7 @@ export const getLayerText = createAsyncThunk< textId: number; }, ThunkConfig ->('vectorMap/getLayerText', async ({ modelId, layerId, textId }) => { +>('layers/getLayerText', async ({ modelId, layerId, textId }) => { try { const { data } = await axiosInstanceNewAPI.get<LayerText>( apiPath.getLayerText(modelId, layerId, textId), diff --git a/src/redux/layers/layers.types.ts b/src/redux/layers/layers.types.ts index 60e42717..05b4636e 100644 --- a/src/redux/layers/layers.types.ts +++ b/src/redux/layers/layers.types.ts @@ -6,6 +6,7 @@ export interface LayerStoreInterface { visible: boolean; locked: boolean; modelId: number; + zIndex: number; } export interface LayerUpdateInterface { @@ -14,6 +15,7 @@ export interface LayerUpdateInterface { visible: boolean; locked: boolean; modelId: number; + zIndex: number; } export type LayerState = { diff --git a/src/shared/Icon/Icon.component.tsx b/src/shared/Icon/Icon.component.tsx index 5745b6ec..aed961c3 100644 --- a/src/shared/Icon/Icon.component.tsx +++ b/src/shared/Icon/Icon.component.tsx @@ -31,8 +31,10 @@ import { PadlockOpenIcon } from '@/shared/Icon/Icons/PadlockOpenIcon'; import { PadlockLockedIcon } from '@/shared/Icon/Icons/PadlockLockedIcon'; import { CrossedEyeIcon } from '@/shared/Icon/Icons/CrossedEyeIcon'; import { CenterIcon } from '@/shared/Icon/Icons/CenterIcon'; -import { BringFrontIcon } from '@/shared/Icon/Icons/BringFrontIcon'; -import { BringBackIcon } from '@/shared/Icon/Icons/BringBackIcon'; +import { MoveFrontIcon } from '@/shared/Icon/Icons/MoveFrontIcon'; +import { MoveBackIcon } from '@/shared/Icon/Icons/MoveBackIcon'; +import { LayerArrowUpIcon } from '@/shared/Icon/Icons/LayerArrowUpIcon'; +import { LayerArrowDownIcon } from '@/shared/Icon/Icons/LayerArrowDownIcon'; import { LocationIcon } from './Icons/LocationIcon'; import { MaginfierZoomInIcon } from './Icons/MagnifierZoomIn'; import { MaginfierZoomOutIcon } from './Icons/MagnifierZoomOut'; @@ -87,8 +89,10 @@ const icons: Record<IconTypes, IconComponentType> = { 'padlock-open': PadlockOpenIcon, 'padlock-locked': PadlockLockedIcon, center: CenterIcon, - 'bring-front': BringFrontIcon, - 'bring-back': BringBackIcon, + 'move-front': MoveFrontIcon, + 'move-back': MoveBackIcon, + 'layer-arrow-up': LayerArrowUpIcon, + 'layer-arrow-down': LayerArrowDownIcon, } as const; export const Icon = ({ name, className = '', ...rest }: IconProps): JSX.Element => { diff --git a/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx b/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx index d7ab4e38..cf5ce5f7 100644 --- a/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx +++ b/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx @@ -13,26 +13,16 @@ export const ArrowDoubleDownIcon = ({ className }: ArrowDoubleDownIconProps): JS > <path d="M8 8L8 18M8 18L5 15M8 18L11 15" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> <path d="M16 8L16 18M16 18L13 15M16 18L19 15" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> - <line - x1="4" - y1="6" - x2="20" - y2="6" - stroke="currentColor" - strokeWidth="1.5" - strokeLinecap="round" - /> + <line x1="4" y1="6" x2="20" y2="6" strokeWidth="1.5" strokeLinecap="round" /> </svg> ); diff --git a/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx b/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx index ed51a602..861773cd 100644 --- a/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx +++ b/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx @@ -13,26 +13,16 @@ export const ArrowDoubleUpIcon = ({ className }: ArrowDoubleUpIconProps): JSX.El > <path d="M8 16L8 6M8 6L5 9M8 6L11 9" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> <path d="M16 16L16 6M16 6L13 9M16 6L19 9" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> - <line - x1="4" - y1="18" - x2="20" - y2="18" - stroke="currentColor" - strokeWidth="1.5" - strokeLinecap="round" - /> + <line x1="4" y1="18" x2="20" y2="18" strokeWidth="1.5" strokeLinecap="round" /> </svg> ); diff --git a/src/shared/Icon/Icons/LayerArrowDownIcon.tsx b/src/shared/Icon/Icons/LayerArrowDownIcon.tsx new file mode 100644 index 00000000..71223a31 --- /dev/null +++ b/src/shared/Icon/Icons/LayerArrowDownIcon.tsx @@ -0,0 +1,18 @@ +interface LayerArrowDownIconProps { + className?: string; +} + +export const LayerArrowDownIcon = ({ className }: LayerArrowDownIconProps): JSX.Element => ( + <svg + width="20" + height="20" + viewBox="2 3 20 17" + fill="none" + xmlns="http://www.w3.org/2000/svg" + className={className} + > + <path d="M12 21L7 16H10V10H14V16H17L12 21Z" /> + <rect x="4" y="3" width="16" height="2" /> + <rect x="4" y="7" width="16" height="2" /> + </svg> +); diff --git a/src/shared/Icon/Icons/LayerArrowUpIcon.tsx b/src/shared/Icon/Icons/LayerArrowUpIcon.tsx new file mode 100644 index 00000000..bbcf233f --- /dev/null +++ b/src/shared/Icon/Icons/LayerArrowUpIcon.tsx @@ -0,0 +1,18 @@ +interface LayerArrowUpIconProps { + className?: string; +} + +export const LayerArrowUpIcon = ({ className }: LayerArrowUpIconProps): JSX.Element => ( + <svg + width="20" + height="20" + viewBox="2 3 20 19" + fill="none" + xmlns="http://www.w3.org/2000/svg" + className={className} + > + <path d="M12 3L7 8H10V14H14V8H17L12 3Z" /> + <rect x="4" y="16" width="16" height="2" /> + <rect x="4" y="20" width="16" height="2" /> + </svg> +); diff --git a/src/shared/Icon/Icons/BringBackIcon.tsx b/src/shared/Icon/Icons/MoveBackIcon.tsx similarity index 78% rename from src/shared/Icon/Icons/BringBackIcon.tsx rename to src/shared/Icon/Icons/MoveBackIcon.tsx index d086ac9b..734bd201 100644 --- a/src/shared/Icon/Icons/BringBackIcon.tsx +++ b/src/shared/Icon/Icons/MoveBackIcon.tsx @@ -1,8 +1,8 @@ -interface BringBackIconProps { +interface MoveBackIconProps { className?: string; } -export const BringBackIcon = ({ className }: BringBackIconProps): JSX.Element => ( +export const MoveBackIcon = ({ className }: MoveBackIconProps): JSX.Element => ( <svg width="20" height="20" @@ -23,6 +23,6 @@ export const BringBackIcon = ({ className }: BringBackIconProps): JSX.Element => stroke="white" fill="none" /> - <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" fill="black" /> + <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" /> </svg> ); diff --git a/src/shared/Icon/Icons/BringFrontIcon.tsx b/src/shared/Icon/Icons/MoveFrontIcon.tsx similarity index 77% rename from src/shared/Icon/Icons/BringFrontIcon.tsx rename to src/shared/Icon/Icons/MoveFrontIcon.tsx index e5aa5017..037f5cb3 100644 --- a/src/shared/Icon/Icons/BringFrontIcon.tsx +++ b/src/shared/Icon/Icons/MoveFrontIcon.tsx @@ -1,8 +1,8 @@ -interface BringFrontIconProps { +interface MoveFrontIconProps { className?: string; } -export const BringFrontIcon = ({ className }: BringFrontIconProps): JSX.Element => ( +export const MoveFrontIcon = ({ className }: MoveFrontIconProps): JSX.Element => ( <svg width="20" height="20" @@ -11,7 +11,7 @@ export const BringFrontIcon = ({ className }: BringFrontIconProps): JSX.Element fill="none" className={className} > - <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" fill="black" /> + <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" /> <rect x="30" y="30" diff --git a/src/shared/IconButton/IconButton.component.tsx b/src/shared/IconButton/IconButton.component.tsx index 1330e460..e71c6211 100644 --- a/src/shared/IconButton/IconButton.component.tsx +++ b/src/shared/IconButton/IconButton.component.tsx @@ -29,8 +29,8 @@ export const IconButton = ({ const isStrokeIcon = [ 'plugin', - 'bring-back', - 'bring-front', + 'move-back', + 'move-front', 'center', 'eye', 'crossed-eye', @@ -38,6 +38,8 @@ export const IconButton = ({ 'padlock-locked', 'layers', 'edit', + 'arrow-double-up', + 'arrow-double-down', ].includes(icon); return ( @@ -57,6 +59,8 @@ export const IconButton = ({ isStrokeIcon ? 'stroke-font-400 group-hover:stroke-primary-500 group-active:stroke-primary-500' : 'fill-font-400 group-hover:fill-primary-500 group-active:fill-primary-500', + ['move-back', 'move-front'].includes(icon) && + 'fill-font-400 stroke-font-400 group-hover:fill-primary-500 group-hover:stroke-primary-500 group-active:fill-primary-500 group-active:stroke-primary-500', isActive && getActiveFillOrStrokeColor(icon), classNameIcon, )} diff --git a/src/types/iconTypes.ts b/src/types/iconTypes.ts index 0d74dd78..0083a622 100644 --- a/src/types/iconTypes.ts +++ b/src/types/iconTypes.ts @@ -38,7 +38,9 @@ export type IconTypes = | 'padlock-open' | 'padlock-locked' | 'center' - | 'bring-front' - | 'bring-back'; + | 'move-front' + | 'move-back' + | 'layer-arrow-up' + | 'layer-arrow-down'; export type IconComponentType = ({ className }: { className: string }) => JSX.Element; -- GitLab From f6e504ece2951e59900cec58b70bec18b21b4bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 10:19:22 +0100 Subject: [PATCH 04/15] Revert "feat(layers): add layers zIndex editing" This reverts commit 7f8d0b665cbd00568e46ba57597c5d22ab28192b. --- .../LayerFactoryModal.component.tsx | 4 - ...LayerImageObjectFactoryModal.component.tsx | 9 +- .../LayerTextFactoryModal.component.tsx | 9 +- .../LayerDrawerTextItem.component.tsx | 12 +- .../LayersDrawer/LayersDrawer.component.tsx | 46 ++---- .../LayersDrawerImageItem.component.tsx | 12 +- .../LayersDrawerLayer.component.tsx | 107 +++----------- .../LayersDrawerLayerActions.component.tsx | 39 ----- .../LayersDrawerObjectActions.component.tsx | 20 +-- .../LayersDrawerObjectsList.component.tsx | 32 ++-- .../useOlMapAdditionalLayers.ts | 1 - .../commentsLayer/useOlMapCommentsLayer.ts | 1 - .../config/mapCardLayer/useOlMapCardLayer.ts | 1 - .../config/pinsLayer/useOlMapPinsLayer.ts | 1 - .../processLayer/useOlMapProcessLayer.ts | 1 - .../reactionsLayer/useOlMapReactionsLayer.ts | 1 - .../utils/shapes/layer/Layer.test.ts | 1 - .../Map/MapViewer/utils/shapes/layer/Layer.ts | 3 - src/models/layerSchema.ts | 1 - src/redux/layers/layers.reducers.test.ts | 4 +- src/redux/layers/layers.selectors.ts | 139 +++++------------- src/redux/layers/layers.thunks.test.ts | 18 +-- src/redux/layers/layers.thunks.ts | 28 ++-- src/redux/layers/layers.types.ts | 2 - src/shared/Icon/Icon.component.tsx | 12 +- src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx | 12 +- src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx | 12 +- .../{MoveBackIcon.tsx => BringBackIcon.tsx} | 6 +- .../{MoveFrontIcon.tsx => BringFrontIcon.tsx} | 6 +- src/shared/Icon/Icons/LayerArrowDownIcon.tsx | 18 --- src/shared/Icon/Icons/LayerArrowUpIcon.tsx | 18 --- .../IconButton/IconButton.component.tsx | 8 +- src/types/iconTypes.ts | 6 +- 33 files changed, 160 insertions(+), 430 deletions(-) rename src/shared/Icon/Icons/{MoveBackIcon.tsx => BringBackIcon.tsx} (78%) rename src/shared/Icon/Icons/{MoveFrontIcon.tsx => BringFrontIcon.tsx} (77%) delete mode 100644 src/shared/Icon/Icons/LayerArrowDownIcon.tsx delete mode 100644 src/shared/Icon/Icons/LayerArrowUpIcon.tsx diff --git a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx index b806d2b6..8d925951 100644 --- a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx @@ -19,13 +19,11 @@ import { SerializedError } from '@reduxjs/toolkit'; import { layerFactoryStateSelector } from '@/redux/modal/modal.selector'; import './LayerFactoryModal.styles.css'; import { LoadingIndicator } from '@/shared/LoadingIndicator'; -import { maxLayerZIndexAboveDiagramSelector } from '@/redux/layers/layers.selectors'; export const LayerFactoryModal: React.FC = () => { const dispatch = useAppDispatch(); const currentModelId = useAppSelector(currentModelIdSelector); const layerFactoryState = useAppSelector(layerFactoryStateSelector); - const maxLayerZIndexAboveDiagram = useAppSelector(maxLayerZIndexAboveDiagramSelector); const [loaded, setLoaded] = useState<boolean>(false); const [data, setData] = useState<LayerStoreInterface>({ @@ -33,7 +31,6 @@ export const LayerFactoryModal: React.FC = () => { visible: false, locked: false, modelId: currentModelId, - zIndex: maxLayerZIndexAboveDiagram, }); const fetchData = useMemo(() => { @@ -45,7 +42,6 @@ export const LayerFactoryModal: React.FC = () => { visible: layer.visible, locked: layer.locked, modelId: currentModelId, - zIndex: layer.z, }); } setLoaded(true); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx index 4d1513e9..1efb7d88 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx @@ -4,10 +4,7 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { layerImageObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; -import { - layersDrawLayerSelector, - maxObjectZIndexForLayerSelector, -} from '@/redux/layers/layers.selectors'; +import { highestZIndexSelector, layersDrawLayerSelector } from '@/redux/layers/layers.selectors'; import { addLayerImageObject } from '@/redux/layers/layers.thunks'; import { addGlyph } from '@/redux/glyphs/glyphs.thunks'; import { SerializedError } from '@reduxjs/toolkit'; @@ -25,7 +22,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { const drawLayer = useAppSelector(layersDrawLayerSelector); const layerImageObjectFactoryState = useAppSelector(layerImageObjectFactoryStateSelector); const dispatch = useAppDispatch(); - const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); + const highestZIndex = useAppSelector(highestZIndexSelector); const { mapInstance } = useMapInstance(); const [selectedGlyph, setSelectedGlyph] = useState<number | null>(null); @@ -52,7 +49,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { layerId: drawLayer, x: layerImageObjectFactoryState.x, y: layerImageObjectFactoryState.y, - z: maxZIndex + 1, + z: highestZIndex + 1, width: layerImageObjectFactoryState.width, height: layerImageObjectFactoryState.height, glyph: glyphId, diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx index bfb80aff..e1ccf612 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx @@ -13,10 +13,7 @@ import { LayerTextFactoryForm } from '@/components/FunctionalArea/Modal/LayerTex import { Color } from '@/types/models'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { layerTextFactoryStateSelector } from '@/redux/modal/modal.selector'; -import { - layersDrawLayerSelector, - maxObjectZIndexForLayerSelector, -} from '@/redux/layers/layers.selectors'; +import { highestZIndexSelector, layersDrawLayerSelector } from '@/redux/layers/layers.selectors'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { showToast } from '@/utils/showToast'; @@ -34,7 +31,7 @@ export const LayerTextFactoryModal: React.FC = () => { const currentModelId = useAppSelector(currentModelIdSelector); const layerTextFactoryState = useAppSelector(layerTextFactoryStateSelector); const dispatch = useAppDispatch(); - const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); + const highestZIndex = useAppSelector(highestZIndexSelector); const { mapInstance } = useMapInstance(); const [isSending, setIsSending] = useState<boolean>(false); @@ -58,7 +55,7 @@ export const LayerTextFactoryModal: React.FC = () => { layerId: drawLayer, boundingBox: layerTextFactoryState, textData: data, - z: maxZIndex + 1, + z: highestZIndex + 1, }), ).unwrap(); if (!textData) { diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx index a9c3d3b3..6f57c762 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx @@ -10,8 +10,8 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' interface LayersDrawerTextItemProps { layerText: LayerText; - moveToFront: () => void; - moveToBack: () => void; + bringToFront: () => void; + bringToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; @@ -21,8 +21,8 @@ interface LayersDrawerTextItemProps { export const LayersDrawerTextItem = ({ layerText, - moveToFront, - moveToBack, + bringToFront, + bringToBack, removeObject, centerObject, editObject, @@ -68,8 +68,8 @@ export const LayersDrawerTextItem = ({ </div> {showActions && ( <LayersDrawerObjectActions - moveToFront={moveToFront} - moveToBack={moveToBack} + bringToFront={bringToFront} + bringToBack={bringToBack} removeObject={removeObject} centerObject={centerObject} editObject={editObject} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index 33c259f3..12bef081 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -4,7 +4,7 @@ import { DrawerHeading } from '@/shared/DrawerHeading'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { layersForCurrentModelSelector } from '@/redux/layers/layers.selectors'; import { Button } from '@/shared/Button'; -import { JSX, useEffect, useMemo, useRef } from 'react'; +import { JSX, useEffect, useRef } from 'react'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; import { LayersDrawerLayer } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component'; @@ -21,19 +21,6 @@ export const LayersDrawer = (): JSX.Element => { dispatch(openLayerFactoryModal()); }; - const sortedLayers = useMemo(() => { - return [...layersForCurrentModel].sort((layerA, layerB) => layerB.details.z - layerA.details.z); - }, [layersForCurrentModel]); - - const negativeZLayers = useMemo( - () => sortedLayers.filter(layer => layer.details.z < 0), - [sortedLayers], - ); - const positiveZLayers = useMemo( - () => sortedLayers.filter(layer => layer.details.z >= 0), - [sortedLayers], - ); - useEffect(() => { if (!mapEditToolsLayerImageObject || !layersDrawerRef.current) { return; @@ -74,33 +61,20 @@ export const LayersDrawer = (): JSX.Element => { ref={layersDrawerRef} > {hasPrivilegeToWriteProject && ( - <div className="flex justify-start py-2"> + <div className="flex justify-start pt-2"> <Button icon="plus" isIcon isFrontIcon onClick={addNewLayer}> Add layer </Button> </div> )} - <div className="flex flex-col gap-2"> - {Boolean(positiveZLayers.length) && ( - <span className="border-b-2 border-dashed border-b-gray-400 text-center text-lg font-semibold"> - Layers above the diagram - </span> - )} - <div className="flex flex-col gap-5"> - {positiveZLayers.map(layer => ( - <LayersDrawerLayer key={layer.details.id} layerDetails={layer.details} /> - ))} - </div> - {Boolean(negativeZLayers.length) && ( - <span className="border-b-2 border-dashed border-b-gray-400 text-center text-lg font-semibold"> - Layers below the diagram - </span> - )} - <div className="flex flex-col gap-5"> - {negativeZLayers.map(layer => ( - <LayersDrawerLayer key={layer.details.id} layerDetails={layer.details} /> - ))} - </div> + <div className="flex flex-col gap-4"> + {layersForCurrentModel.map(layer => ( + <LayersDrawerLayer + key={layer.details.id} + layerId={layer.details.id} + layerName={layer.details.name} + /> + ))} </div> </div> </div> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx index e160b807..0622f141 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx @@ -11,8 +11,8 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' interface LayersDrawerImageItemProps { layerImage: LayerImage; - moveToFront: () => void; - moveToBack: () => void; + bringToFront: () => void; + bringToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; @@ -22,8 +22,8 @@ interface LayersDrawerImageItemProps { export const LayersDrawerImageItem = ({ layerImage, - moveToFront, - moveToBack, + bringToFront, + bringToBack, removeObject, centerObject, editObject, @@ -72,8 +72,8 @@ export const LayersDrawerImageItem = ({ </div> {showActions && ( <LayersDrawerObjectActions - moveToFront={moveToFront} - moveToBack={moveToBack} + bringToFront={bringToFront} + bringToBack={bringToBack} removeObject={removeObject} centerObject={centerObject} editObject={editObject} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index 8b0f9b01..49b8536f 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -1,19 +1,14 @@ -/* eslint-disable no-magic-numbers */ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { layersActiveLayersSelector, layersVisibilityForCurrentModelSelector, - maxLayerZIndexAboveDiagramSelector, - maxLayerZIndexBelowDiagramSelector, - minLayerZIndexAboveDiagramSelector, - minLayerZIndexBelowDiagramSelector, } from '@/redux/layers/layers.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; import { useState, JSX, useMemo } from 'react'; -import { getLayersForModel, removeLayer, updateLayer } from '@/redux/layers/layers.thunks'; +import { getLayersForModel, removeLayer } from '@/redux/layers/layers.thunks'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; import { LayersDrawerLayerActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component'; @@ -26,42 +21,38 @@ import { import { LayersDrawerObjectsList } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component'; import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.slice'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; -import { Layer } from '@/types/models'; interface LayersDrawerLayerProps { - layerDetails: Layer; + layerId: number; + layerName: string; } -export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX.Element => { +export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps): JSX.Element => { const layersVisibilityForCurrentModel = useAppSelector(layersVisibilityForCurrentModelSelector); const activeLayers = useAppSelector(layersActiveLayersSelector); const currentModelId = useAppSelector(currentModelIdSelector); - const maxLayerZIndexAboveDiagram = useAppSelector(maxLayerZIndexAboveDiagramSelector); - const maxLayerZIndexBelowDiagram = useAppSelector(maxLayerZIndexBelowDiagramSelector); - const minLayerZIndexAboveDiagram = useAppSelector(minLayerZIndexAboveDiagramSelector); - const minLayerZIndexBelowDiagram = useAppSelector(minLayerZIndexBelowDiagramSelector); const dispatch = useAppDispatch(); const [isModalOpen, setIsModalOpen] = useState(false); const isLayerVisible = useMemo(() => { - return layersVisibilityForCurrentModel[layerDetails.id]; - }, [layerDetails.id, layersVisibilityForCurrentModel]); + return layersVisibilityForCurrentModel[layerId]; + }, [layerId, layersVisibilityForCurrentModel]); const isLayerActive = useMemo(() => { - return activeLayers.includes(layerDetails.id); - }, [activeLayers, layerDetails.id]); + return activeLayers.includes(layerId); + }, [activeLayers, layerId]); const editLayer = (): void => { - dispatch(openLayerFactoryModal(layerDetails.id)); + dispatch(openLayerFactoryModal(layerId)); }; const addImage = (): void => { - dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); + dispatch(setDrawLayer({ modelId: currentModelId, layerId })); dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.DRAW_IMAGE)); }; const addText = (): void => { - dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); + dispatch(setDrawLayer({ modelId: currentModelId, layerId })); dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_TEXT)); }; @@ -70,11 +61,11 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX }; const confirmRemove = async (): Promise<void> => { - if (!layerDetails.id) { + if (!layerId) { return; } try { - await dispatch(removeLayer({ modelId: currentModelId, layerId: layerDetails.id })).unwrap(); + await dispatch(removeLayer({ modelId: currentModelId, layerId })).unwrap(); showToast({ type: 'success', message: 'The layer has been successfully removed', @@ -96,61 +87,12 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX const toggleActiveLayer = (value: boolean): void => { if (value) { - dispatch(setLayerToActive({ modelId: currentModelId, layerId: layerDetails.id })); + dispatch(setLayerToActive({ modelId: currentModelId, layerId })); } else { - dispatch(setLayerToInactive({ modelId: currentModelId, layerId: layerDetails.id })); + dispatch(setLayerToInactive({ modelId: currentModelId, layerId })); } }; - const updateLayerZIndex = async (zIndex: number): Promise<void> => { - try { - dispatch( - updateLayer({ - name: layerDetails.name, - visible: layerDetails.visible, - locked: layerDetails.locked, - modelId: currentModelId, - layerId: layerDetails.id, - zIndex, - }), - ); - } catch (error) { - const typedError = error as SerializedError; - showToast({ - type: 'error', - message: typedError.message || 'An error occurred while updating the layer', - }); - } - }; - - const moveToFront = (): void => { - if (layerDetails.z > 0) { - updateLayerZIndex(maxLayerZIndexAboveDiagram); - } else if (layerDetails.z < 0) { - const zIndex = Math.min(maxLayerZIndexBelowDiagram, -1); - updateLayerZIndex(zIndex); - } - }; - - const moveToBack = (): void => { - if (layerDetails.z > 0) { - const zIndex = Math.max(minLayerZIndexAboveDiagram, 1); - updateLayerZIndex(zIndex); - } else if (layerDetails.z < 0) { - updateLayerZIndex(minLayerZIndexBelowDiagram); - } - }; - - const moveAboveDiagram = (): void => { - const zIndex = Math.max(minLayerZIndexAboveDiagram - 1, 1); - updateLayerZIndex(zIndex); - }; - - const moveBelowDiagram = (): void => { - const zIndex = Math.min(minLayerZIndexBelowDiagram + 1, -1); - updateLayerZIndex(zIndex); - }; - return ( <div> <QuestionModal @@ -159,13 +101,9 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX onConfirm={confirmRemove} question="Are you sure you want to remove the layer?" /> - <div className="flex items-center justify-between pb-3"> - <span - className={`font-semibold ${ - isLayerVisible ? 'opacity-100' : 'opacity-40' - } min-w-0 flex-1 truncate `} - > - {layerDetails.name} + <div className="flex items-center justify-between py-3"> + <span className={`font-semibold ${isLayerVisible ? 'opacity-100' : 'opacity-40'}`}> + {layerName} </span> <LayersDrawerLayerActions toggleVisibility={() => @@ -173,7 +111,7 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX setLayerVisibility({ modelId: currentModelId, visible: !isLayerVisible, - layerId: layerDetails.id, + layerId, }), ) } @@ -182,17 +120,12 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX removeLayer={onRemoveLayer} addImage={addImage} addText={addText} - moveToFront={moveToFront} - moveToBack={moveToBack} - moveAboveDiagram={moveAboveDiagram} - moveBelowDiagram={moveBelowDiagram} - zIndex={layerDetails.z} isVisible={isLayerVisible} isActive={isLayerActive} /> </div> <LayersDrawerObjectsList - layerId={layerDetails.id} + layerId={layerId} isLayerVisible={isLayerVisible} isLayerActive={isLayerActive} /> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx index 81435100..18627b13 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx @@ -1,4 +1,3 @@ -/* eslint-disable no-magic-numbers */ import { IconButton } from '@/shared/IconButton'; import { JSX } from 'react'; import { LayerDrawerLayerContextMenu } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component'; @@ -10,15 +9,10 @@ type LayersDrawerLayerActionsProps = { removeLayer: () => void; isVisible: boolean; isActive: boolean; - zIndex: number; toggleVisibility: () => void; toggleActiveLayer: (value: boolean) => void; addImage: () => void; addText: () => void; - moveToFront: () => void; - moveToBack: () => void; - moveAboveDiagram: () => void; - moveBelowDiagram: () => void; }; export const LayersDrawerLayerActions = ({ @@ -26,15 +20,10 @@ export const LayersDrawerLayerActions = ({ removeLayer, isVisible, isActive, - zIndex, toggleVisibility, toggleActiveLayer, addImage, addText, - moveToFront, - moveToBack, - moveAboveDiagram, - moveBelowDiagram, }: LayersDrawerLayerActionsProps): JSX.Element => { const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); @@ -54,34 +43,6 @@ export const LayersDrawerLayerActions = ({ className="h-auto w-auto bg-transparent p-0" onClick={() => toggleActiveLayer(!isActive)} /> - <IconButton - title="Move to front" - icon="move-front" - className="h-auto w-auto bg-transparent p-0" - onClick={moveToFront} - /> - <IconButton - title="Move to back" - icon="move-back" - className="h-auto w-auto bg-transparent p-0" - onClick={moveToBack} - /> - {zIndex < 0 && ( - <IconButton - title="Move above the diagram" - icon="layer-arrow-up" - className="h-auto w-auto bg-transparent p-0" - onClick={moveAboveDiagram} - /> - )} - {zIndex > 0 && ( - <IconButton - title="Move below the diagram" - icon="layer-arrow-down" - className="h-auto w-auto bg-transparent p-0" - onClick={moveBelowDiagram} - /> - )} <LayerDrawerLayerContextMenu removeLayer={removeLayer} editLayer={editLayer} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx index a97189ea..4cf6871e 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx @@ -2,16 +2,16 @@ import { JSX } from 'react'; import { IconButton } from '@/shared/IconButton'; interface LayersDrawerObjectActionsProps { - moveToFront: () => void; - moveToBack: () => void; + bringToFront: () => void; + bringToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; } export const LayersDrawerObjectActions = ({ - moveToFront, - moveToBack, + bringToFront, + bringToBack, removeObject, centerObject, editObject, @@ -31,16 +31,16 @@ export const LayersDrawerObjectActions = ({ onClick={editObject} /> <IconButton - icon="move-front" + icon="bring-front" className="h-auto w-auto bg-transparent p-0" - title="Move to front" - onClick={moveToFront} + title="Bring to front" + onClick={bringToFront} /> <IconButton - icon="move-back" + icon="bring-back" className="h-auto w-auto bg-transparent p-0" - title="Move to back" - onClick={moveToBack} + title="Bring to back" + onClick={bringToBack} /> <IconButton icon="trash" diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 9ec19fe4..70a6acf5 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -1,9 +1,9 @@ /* eslint-disable no-magic-numbers */ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { + highestZIndexSelector, layerByIdSelector, - maxObjectZIndexForLayerSelector, - minObjectZIndexForLayerSelector, + lowestZIndexSelector, } from '@/redux/layers/layers.selectors'; import { JSX, useState } from 'react'; import { LayersDrawerImageItem } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component'; @@ -64,8 +64,8 @@ export const LayersDrawerObjectsList = ({ isLayerActive, }: LayersDrawerObjectsListProps): JSX.Element | null => { const currentModelId = useAppSelector(mapModelIdSelector); - const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, layerId)); - const minZIndex = useAppSelector(state => minObjectZIndexForLayerSelector(state, layerId)); + const highestZIndex = useAppSelector(highestZIndexSelector); + const lowestZIndex = useAppSelector(lowestZIndexSelector); const layer = useAppSelector(state => layerByIdSelector(state, layerId)); const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image'>(undefined); @@ -174,12 +174,12 @@ export const LayersDrawerObjectsList = ({ } }; - const moveImageToFront = async (layerImage: LayerImage): Promise<void> => { - await updateImageZIndex({ zIndex: maxZIndex + 1, layerImage }); + const bringImageToFront = async (layerImage: LayerImage): Promise<void> => { + await updateImageZIndex({ zIndex: highestZIndex + 1, layerImage }); }; - const moveImageToBack = async (layerImage: LayerImage): Promise<void> => { - await updateImageZIndex({ zIndex: minZIndex - 1, layerImage }); + const bringImageToBack = async (layerImage: LayerImage): Promise<void> => { + await updateImageZIndex({ zIndex: lowestZIndex - 1, layerImage }); }; const updateTextZIndex = async ({ @@ -210,12 +210,12 @@ export const LayersDrawerObjectsList = ({ } }; - const moveTextToFront = async (layerText: LayerText): Promise<void> => { - await updateTextZIndex({ zIndex: maxZIndex + 1, layerText }); + const bringTextToFront = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: highestZIndex + 1, layerText }); }; - const moveTextToBack = async (layerText: LayerText): Promise<void> => { - await updateTextZIndex({ zIndex: minZIndex - 1, layerText }); + const bringTextToBack = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: lowestZIndex - 1, layerText }); }; const centerObject = (layerObject: LayerImage | LayerText): void => { @@ -257,8 +257,8 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerTextItem layerText={layerText} key={layerText.id} - moveToFront={() => moveTextToFront(layerText)} - moveToBack={() => moveTextToBack(layerText)} + bringToFront={() => bringTextToFront(layerText)} + bringToBack={() => bringTextToBack(layerText)} removeObject={() => removeObject(layerText)} centerObject={() => centerObject(layerText)} editObject={() => editText()} @@ -270,8 +270,8 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerImageItem layerImage={layerImage} key={layerImage.id} - moveToFront={() => moveImageToFront(layerImage)} - moveToBack={() => moveImageToBack(layerImage)} + bringToFront={() => bringImageToFront(layerImage)} + bringToBack={() => bringImageToBack(layerImage)} removeObject={() => removeObject(layerImage)} centerObject={() => centerObject(layerImage)} editObject={() => editImage()} diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 6d41944f..5e378293 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -125,7 +125,6 @@ export const useOlMapAdditionalLayers = ( const vectorLayers = useMemo(() => { return layersState.map(layer => { const additionalLayer = new Layer({ - zIndex: layer.details.z, texts: layer.texts, rects: layer.rects, ovals: layer.ovals, diff --git a/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts b/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts index a3640020..7ac3b73b 100644 --- a/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts @@ -36,7 +36,6 @@ export const useOlMapCommentsLayer = (): VectorLayer<VectorSource<Feature<Geomet return useMemo(() => { const vectorLayer = new VectorLayer({ - zIndex: Infinity, source: vectorSource, }); vectorLayer.set('type', LAYER_TYPE.COMMENTS_LAYER); diff --git a/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts b/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts index db3dbad4..69cec807 100644 --- a/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts +++ b/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts @@ -38,7 +38,6 @@ export const useOlMapCardLayer = (): VectorLayer<VectorSource<Feature<Polygon>>> return useMemo(() => { const vectorLayer = new VectorLayer({ - zIndex: -Infinity, source: vectorSource, style: new Style({ fill: new Fill({ diff --git a/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts b/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts index 4cd5a32b..f7b6001c 100644 --- a/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts @@ -77,7 +77,6 @@ export const useOlMapPinsLayer = (): VectorLayer<VectorSource<Feature<Geometry>> return useMemo(() => { const vectorLayer = new VectorLayer({ - zIndex: Infinity, source: vectorSource, }); vectorLayer.set('type', LAYER_TYPE.PINS_LAYER); diff --git a/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts b/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts index 98cb6e1e..2811ec30 100644 --- a/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts +++ b/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts @@ -274,7 +274,6 @@ export const useOlMapProcessLayer = ({ return useMemo(() => { const vectorLayer = new VectorLayer({ - zIndex: 0, source: vectorSource, updateWhileAnimating: true, updateWhileInteracting: true, diff --git a/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts b/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts index df526271..bfb2668e 100644 --- a/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts @@ -63,7 +63,6 @@ export const useOlMapReactionsLayer = (): VectorLayer<VectorSource<Feature<Geome return useMemo(() => { const vectorLayer = new VectorLayer({ - zIndex: Infinity, source: vectorSource, style: new Style({ fill: new Fill({ color: LINE_COLOR }), diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts index 10349c6d..7b8bb971 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts @@ -133,7 +133,6 @@ describe('Layer', () => { pointToProjection: jest.fn(point => [point.x, point.y]), mapInstance, mapSize, - zIndex: 1, lineTypes: {}, arrowTypes: {}, }; diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 14d5f8b5..7f697a72 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -34,7 +34,6 @@ import LayerText from '@/components/Map/MapViewer/utils/shapes/layer/elements/La import LayerImage from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage'; export interface LayerProps { - zIndex: number; texts: { [key: string]: LayerTextModel }; rects: Array<LayerRect>; ovals: Array<LayerOval>; @@ -79,7 +78,6 @@ export default class Layer { >; constructor({ - zIndex, texts, rects, ovals, @@ -120,7 +118,6 @@ export default class Layer { this.vectorSource.addFeatures(arrowsFeatures); this.vectorLayer = new VectorLayer({ - zIndex, source: this.vectorSource, visible, updateWhileAnimating: true, diff --git a/src/models/layerSchema.ts b/src/models/layerSchema.ts index 11fcd88d..380146a7 100644 --- a/src/models/layerSchema.ts +++ b/src/models/layerSchema.ts @@ -5,5 +5,4 @@ export const layerSchema = z.object({ name: z.string(), visible: z.boolean(), locked: z.boolean(), - z: z.number(), }); diff --git a/src/redux/layers/layers.reducers.test.ts b/src/redux/layers/layers.reducers.test.ts index d93fb4f8..7bcb10ba 100644 --- a/src/redux/layers/layers.reducers.test.ts +++ b/src/redux/layers/layers.reducers.test.ts @@ -92,7 +92,7 @@ describe('layers reducer', () => { const { type } = await store.dispatch(getLayersForModel(1)); const { data, loading, error } = store.getState().layers[1]; - expect(type).toBe('layers/getLayers/fulfilled'); + expect(type).toBe('vectorMap/getLayers/fulfilled'); expect(loading).toEqual('succeeded'); expect(error).toEqual({ message: '', name: '' }); expect(data).toEqual({ @@ -120,7 +120,7 @@ describe('layers reducer', () => { const action = await store.dispatch(getLayersForModel(1)); const { data, loading, error } = store.getState().layers[1]; - expect(action.type).toBe('layers/getLayers/rejected'); + expect(action.type).toBe('vectorMap/getLayers/rejected'); expect(() => unwrapResult(action)).toThrow( "Failed to fetch layers: The page you're looking for doesn't exist. Please verify the URL and try again.", ); diff --git a/src/redux/layers/layers.selectors.ts b/src/redux/layers/layers.selectors.ts index 8123fa00..8f016c8a 100644 --- a/src/redux/layers/layers.selectors.ts +++ b/src/redux/layers/layers.selectors.ts @@ -2,7 +2,6 @@ import { createSelector } from '@reduxjs/toolkit'; import { rootSelector } from '@/redux/root/root.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; -import { LayerState } from '@/redux/layers/layers.types'; export const layersSelector = createSelector(rootSelector, state => state.layers); @@ -19,7 +18,7 @@ export const layersActiveLayersSelector = createSelector( export const layersDrawLayerSelector = createSelector( layersStateForCurrentModelSelector, - state => state?.data?.drawLayer || null, + state => state?.data?.drawLayer, ); export const layerByIdSelector = createSelector( @@ -42,112 +41,40 @@ export const layersForCurrentModelSelector = createSelector( state => state?.data?.layers || [], ); -export const maxLayerZIndexAboveDiagramSelector = createSelector( - layersForCurrentModelSelector, - layers => { - if (!layers || layers.length === 0) { - return 1000; - } - let maxZIndex = -Infinity; - layers.forEach((layer: LayerState) => { - if (layer.details.z > 0 && layer.details.z > maxZIndex) { - maxZIndex = layer.details.z; - } - }); - return maxZIndex; - }, -); +export const highestZIndexSelector = createSelector(layersForCurrentModelSelector, layers => { + if (!layers || layers.length === 0) return 0; -export const maxLayerZIndexBelowDiagramSelector = createSelector( - layersForCurrentModelSelector, - layers => { - if (!layers || layers.length === 0) { - return -1000; - } - let maxZIndex = -Infinity; - layers.forEach((layer: LayerState) => { - if (layer.details.z < 0 && layer.details.z > maxZIndex) { - maxZIndex = layer.details.z; - } - }); - return maxZIndex; - }, -); + const getMaxZFromItems = <T extends { z?: number }>(items: T[] = []): number => + items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; -export const minLayerZIndexAboveDiagramSelector = createSelector( - layersForCurrentModelSelector, - layers => { - if (!layers || layers.length === 0) { - return 1000; - } - let minZIndex = Infinity; - layers.forEach((layer: LayerState) => { - if (layer.details.z > 0 && layer.details.z < minZIndex) { - minZIndex = layer.details.z; - } - }); - return minZIndex; - }, -); + return layers.reduce((maxZ, layer) => { + const textsMaxZ = getMaxZFromItems(Object.values(layer.texts)); + const rectsMaxZ = getMaxZFromItems(layer.rects); + const ovalsMaxZ = getMaxZFromItems(layer.ovals); + const linesMaxZ = getMaxZFromItems(layer.lines); + const imagesMaxZ = getMaxZFromItems(Object.values(layer.images)); -export const minLayerZIndexBelowDiagramSelector = createSelector( - layersForCurrentModelSelector, - layers => { - if (!layers || layers.length === 0) { - return -1000; - } - let minZIndex = Infinity; - layers.forEach((layer: LayerState) => { - if (layer.details.z < 0 && layer.details.z < minZIndex) { - minZIndex = layer.details.z; - } - }); - return minZIndex; - }, -); + const layerMaxZ = Math.max(textsMaxZ, rectsMaxZ, ovalsMaxZ, linesMaxZ, imagesMaxZ); -export const maxObjectZIndexForLayerSelector = createSelector( - [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], - (layers, layerId) => { - if (!layers || layers.length === 0 || !layerId) { - return 0; - } - const foundLayer = layers.find(layer => layer.details.id === layerId); - if (!foundLayer) { - return 0; - } - const getMaxZFromItems = <T extends { z?: number }>(items: T[] = []): number => - items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; - - const textsMaxZ = getMaxZFromItems(Object.values(foundLayer.texts)); - const rectsMaxZ = getMaxZFromItems(foundLayer.rects); - const ovalsMaxZ = getMaxZFromItems(foundLayer.ovals); - const linesMaxZ = getMaxZFromItems(foundLayer.lines); - const imagesMaxZ = getMaxZFromItems(Object.values(foundLayer.images)); - - return Math.max(textsMaxZ, rectsMaxZ, ovalsMaxZ, linesMaxZ, imagesMaxZ); - }, -); + return Math.max(maxZ, layerMaxZ); + }, 0); +}); -export const minObjectZIndexForLayerSelector = createSelector( - [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], - (layers, layerId) => { - if (!layers || layers.length === 0 || !layerId) { - return 0; - } - const foundLayer = layers.find(layer => layer.details.id === layerId); - if (!foundLayer) { - return 0; - } - const getMinZFromItems = <T extends { z?: number }>(items: T[] = []): number => - items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; - - const textsMinZ = getMinZFromItems(Object.values(foundLayer.texts)); - const rectsMinZ = getMinZFromItems(foundLayer.rects); - const ovalsMinZ = getMinZFromItems(foundLayer.ovals); - const linesMinZ = getMinZFromItems(foundLayer.lines); - const imagesMinZ = getMinZFromItems(Object.values(foundLayer.images)); - - return Math.min(textsMinZ, rectsMinZ, ovalsMinZ, linesMinZ, imagesMinZ); - }, -); +export const lowestZIndexSelector = createSelector(layersForCurrentModelSelector, layers => { + if (!layers || layers.length === 0) return 0; + + const getMinZFromItems = <T extends { z?: number }>(items: T[] = []): number => + items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; + + return layers.reduce((minZ, layer) => { + const textsMinZ = getMinZFromItems(Object.values(layer.texts)); + const rectsMinZ = getMinZFromItems(layer.rects); + const ovalsMinZ = getMinZFromItems(layer.ovals); + const linesMinZ = getMinZFromItems(layer.lines); + const imagesMinZ = getMinZFromItems(Object.values(layer.images)); + + const layerMinZ = Math.min(textsMinZ, rectsMinZ, ovalsMinZ, linesMinZ, imagesMinZ); + + return Math.min(minZ, layerMinZ); + }, 0); +}); diff --git a/src/redux/layers/layers.thunks.test.ts b/src/redux/layers/layers.thunks.test.ts index 09028272..77e10bdb 100644 --- a/src/redux/layers/layers.thunks.test.ts +++ b/src/redux/layers/layers.thunks.test.ts @@ -111,13 +111,7 @@ describe('layers thunks', () => { mockedAxiosClient.onPost(apiPath.storeLayer(1)).reply(HttpStatusCode.Created, layerFixture); const { payload } = await store.dispatch( - addLayerForModel({ - name: 'New Layer', - visible: true, - locked: false, - modelId: 1, - zIndex: 1, - }), + addLayerForModel({ name: 'New Layer', visible: true, locked: false, modelId: 1 }), ); expect(payload).toEqual(layerFixture); }); @@ -128,13 +122,7 @@ describe('layers thunks', () => { .reply(HttpStatusCode.Created, { invalid: 'data' }); const { payload } = await store.dispatch( - addLayerForModel({ - name: 'New Layer', - visible: true, - locked: false, - modelId: 1, - zIndex: 1, - }), + addLayerForModel({ name: 'New Layer', visible: true, locked: false, modelId: 1 }), ); expect(payload).toBeNull(); }); @@ -151,7 +139,6 @@ describe('layers thunks', () => { locked: true, modelId: 1, layerId: 2, - zIndex: 1, }), ); expect(payload).toEqual(layerFixture); @@ -169,7 +156,6 @@ describe('layers thunks', () => { locked: true, modelId: 1, layerId: 2, - zIndex: 1, }), ); expect(payload).toBeNull(); diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index bda72fce..66035fd8 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -32,7 +32,7 @@ export const getLayer = createAsyncThunk< Layer | null, { modelId: number; layerId: number }, ThunkConfig ->('layers/getLayer', async ({ modelId, layerId }) => { +>('vectorMap/getLayer', async ({ modelId, layerId }) => { try { const { data } = await axiosInstanceNewAPI.get<Layer>(apiPath.getLayer(modelId, layerId)); @@ -48,7 +48,7 @@ export const getLayersForModel = createAsyncThunk< LayersVisibilitiesState | undefined, number, ThunkConfig ->('layers/getLayers', async (modelId: number) => { +>('vectorMap/getLayers', async (modelId: number) => { try { const { data } = await axiosInstanceNewAPI.get<Layers>(apiPath.getLayers(modelId)); const isDataValid = validateDataUsingZodSchema(data, pageableSchema(layerSchema)); @@ -103,14 +103,13 @@ export const getLayersForModel = createAsyncThunk< }); export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterface, ThunkConfig>( - 'layers/addLayer', - async ({ name, visible, locked, modelId, zIndex }) => { + 'vectorMap/addLayer', + async ({ name, visible, locked, modelId }) => { try { const { data } = await axiosInstanceNewAPI.post<Layer>(apiPath.storeLayer(modelId), { name, visible, locked, - z: zIndex, }); const isDataValid = validateDataUsingZodSchema(data, layerSchema); @@ -123,14 +122,13 @@ export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterfa ); export const updateLayer = createAsyncThunk<Layer | null, LayerUpdateInterface, ThunkConfig>( - 'layers/updateLayer', - async ({ name, visible, locked, modelId, layerId, zIndex }) => { + 'vectorMap/updateLayer', + async ({ name, visible, locked, modelId, layerId }) => { try { const { data } = await axiosInstanceNewAPI.put<Layer>(apiPath.updateLayer(modelId, layerId), { name, visible, locked, - z: zIndex, }); const isDataValid = validateDataUsingZodSchema(data, layerSchema); @@ -146,7 +144,7 @@ export const removeLayer = createAsyncThunk< null, { modelId: number; layerId: number }, ThunkConfig ->('layers/removeLayer', async ({ modelId, layerId }) => { +>('vectorMap/removeLayer', async ({ modelId, layerId }) => { try { await axiosInstanceNewAPI.delete<void>(apiPath.removeLayer(modelId, layerId)); return null; @@ -163,7 +161,7 @@ export const getLayerImage = createAsyncThunk< imageId: number; }, ThunkConfig ->('layers/getLayerImage', async ({ modelId, layerId, imageId }) => { +>('vectorMap/getLayerImage', async ({ modelId, layerId, imageId }) => { try { const { data } = await axiosInstanceNewAPI.get<LayerImage>( apiPath.getLayerImageObject(modelId, layerId, imageId), @@ -189,7 +187,7 @@ export const addLayerImageObject = createAsyncThunk< glyph: number | null; }, ThunkConfig ->('layers/addLayerImageObject', async ({ modelId, layerId, x, y, z, width, height, glyph }) => { +>('vectorMap/addLayerImageObject', async ({ modelId, layerId, x, y, z, width, height, glyph }) => { try { const { data } = await axiosInstanceNewAPI.post<LayerImage>( apiPath.addLayerImageObject(modelId, layerId), @@ -225,7 +223,7 @@ export const updateLayerImageObject = createAsyncThunk< }, ThunkConfig >( - 'layers/updateLayerImageObject', + 'vectorMap/updateLayerImageObject', async ({ modelId, layerId, id, x, y, z, width, height, glyph }) => { try { const { data } = await axiosInstanceNewAPI.put<LayerImage>( @@ -254,7 +252,7 @@ export const removeLayerImage = createAsyncThunk< null, { modelId: number; layerId: number; imageId: number }, ThunkConfig ->('layers/removeLayerImage', async ({ modelId, layerId, imageId }) => { +>('vectorMap/removeLayerImage', async ({ modelId, layerId, imageId }) => { try { await axiosInstanceNewAPI.delete<void>( apiPath.removeLayerImageObject(modelId, layerId, imageId), @@ -275,7 +273,7 @@ export const addLayerText = createAsyncThunk< textData: LayerTextFactoryForm; }, ThunkConfig ->('layers/addLayerText', async ({ modelId, layerId, z, boundingBox, textData }) => { +>('vectorMap/addLayerText', async ({ modelId, layerId, z, boundingBox, textData }) => { try { const { data } = await axiosInstanceNewAPI.post<LayerText>( apiPath.addLayerText(modelId, layerId), @@ -301,7 +299,7 @@ export const getLayerText = createAsyncThunk< textId: number; }, ThunkConfig ->('layers/getLayerText', async ({ modelId, layerId, textId }) => { +>('vectorMap/getLayerText', async ({ modelId, layerId, textId }) => { try { const { data } = await axiosInstanceNewAPI.get<LayerText>( apiPath.getLayerText(modelId, layerId, textId), diff --git a/src/redux/layers/layers.types.ts b/src/redux/layers/layers.types.ts index 05b4636e..60e42717 100644 --- a/src/redux/layers/layers.types.ts +++ b/src/redux/layers/layers.types.ts @@ -6,7 +6,6 @@ export interface LayerStoreInterface { visible: boolean; locked: boolean; modelId: number; - zIndex: number; } export interface LayerUpdateInterface { @@ -15,7 +14,6 @@ export interface LayerUpdateInterface { visible: boolean; locked: boolean; modelId: number; - zIndex: number; } export type LayerState = { diff --git a/src/shared/Icon/Icon.component.tsx b/src/shared/Icon/Icon.component.tsx index aed961c3..5745b6ec 100644 --- a/src/shared/Icon/Icon.component.tsx +++ b/src/shared/Icon/Icon.component.tsx @@ -31,10 +31,8 @@ import { PadlockOpenIcon } from '@/shared/Icon/Icons/PadlockOpenIcon'; import { PadlockLockedIcon } from '@/shared/Icon/Icons/PadlockLockedIcon'; import { CrossedEyeIcon } from '@/shared/Icon/Icons/CrossedEyeIcon'; import { CenterIcon } from '@/shared/Icon/Icons/CenterIcon'; -import { MoveFrontIcon } from '@/shared/Icon/Icons/MoveFrontIcon'; -import { MoveBackIcon } from '@/shared/Icon/Icons/MoveBackIcon'; -import { LayerArrowUpIcon } from '@/shared/Icon/Icons/LayerArrowUpIcon'; -import { LayerArrowDownIcon } from '@/shared/Icon/Icons/LayerArrowDownIcon'; +import { BringFrontIcon } from '@/shared/Icon/Icons/BringFrontIcon'; +import { BringBackIcon } from '@/shared/Icon/Icons/BringBackIcon'; import { LocationIcon } from './Icons/LocationIcon'; import { MaginfierZoomInIcon } from './Icons/MagnifierZoomIn'; import { MaginfierZoomOutIcon } from './Icons/MagnifierZoomOut'; @@ -89,10 +87,8 @@ const icons: Record<IconTypes, IconComponentType> = { 'padlock-open': PadlockOpenIcon, 'padlock-locked': PadlockLockedIcon, center: CenterIcon, - 'move-front': MoveFrontIcon, - 'move-back': MoveBackIcon, - 'layer-arrow-up': LayerArrowUpIcon, - 'layer-arrow-down': LayerArrowDownIcon, + 'bring-front': BringFrontIcon, + 'bring-back': BringBackIcon, } as const; export const Icon = ({ name, className = '', ...rest }: IconProps): JSX.Element => { diff --git a/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx b/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx index cf5ce5f7..d7ab4e38 100644 --- a/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx +++ b/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx @@ -13,16 +13,26 @@ export const ArrowDoubleDownIcon = ({ className }: ArrowDoubleDownIconProps): JS > <path d="M8 8L8 18M8 18L5 15M8 18L11 15" + stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> <path d="M16 8L16 18M16 18L13 15M16 18L19 15" + stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> - <line x1="4" y1="6" x2="20" y2="6" strokeWidth="1.5" strokeLinecap="round" /> + <line + x1="4" + y1="6" + x2="20" + y2="6" + stroke="currentColor" + strokeWidth="1.5" + strokeLinecap="round" + /> </svg> ); diff --git a/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx b/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx index 861773cd..ed51a602 100644 --- a/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx +++ b/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx @@ -13,16 +13,26 @@ export const ArrowDoubleUpIcon = ({ className }: ArrowDoubleUpIconProps): JSX.El > <path d="M8 16L8 6M8 6L5 9M8 6L11 9" + stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> <path d="M16 16L16 6M16 6L13 9M16 6L19 9" + stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> - <line x1="4" y1="18" x2="20" y2="18" strokeWidth="1.5" strokeLinecap="round" /> + <line + x1="4" + y1="18" + x2="20" + y2="18" + stroke="currentColor" + strokeWidth="1.5" + strokeLinecap="round" + /> </svg> ); diff --git a/src/shared/Icon/Icons/MoveBackIcon.tsx b/src/shared/Icon/Icons/BringBackIcon.tsx similarity index 78% rename from src/shared/Icon/Icons/MoveBackIcon.tsx rename to src/shared/Icon/Icons/BringBackIcon.tsx index 734bd201..d086ac9b 100644 --- a/src/shared/Icon/Icons/MoveBackIcon.tsx +++ b/src/shared/Icon/Icons/BringBackIcon.tsx @@ -1,8 +1,8 @@ -interface MoveBackIconProps { +interface BringBackIconProps { className?: string; } -export const MoveBackIcon = ({ className }: MoveBackIconProps): JSX.Element => ( +export const BringBackIcon = ({ className }: BringBackIconProps): JSX.Element => ( <svg width="20" height="20" @@ -23,6 +23,6 @@ export const MoveBackIcon = ({ className }: MoveBackIconProps): JSX.Element => ( stroke="white" fill="none" /> - <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" /> + <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" fill="black" /> </svg> ); diff --git a/src/shared/Icon/Icons/MoveFrontIcon.tsx b/src/shared/Icon/Icons/BringFrontIcon.tsx similarity index 77% rename from src/shared/Icon/Icons/MoveFrontIcon.tsx rename to src/shared/Icon/Icons/BringFrontIcon.tsx index 037f5cb3..e5aa5017 100644 --- a/src/shared/Icon/Icons/MoveFrontIcon.tsx +++ b/src/shared/Icon/Icons/BringFrontIcon.tsx @@ -1,8 +1,8 @@ -interface MoveFrontIconProps { +interface BringFrontIconProps { className?: string; } -export const MoveFrontIcon = ({ className }: MoveFrontIconProps): JSX.Element => ( +export const BringFrontIcon = ({ className }: BringFrontIconProps): JSX.Element => ( <svg width="20" height="20" @@ -11,7 +11,7 @@ export const MoveFrontIcon = ({ className }: MoveFrontIconProps): JSX.Element => fill="none" className={className} > - <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" /> + <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" fill="black" /> <rect x="30" y="30" diff --git a/src/shared/Icon/Icons/LayerArrowDownIcon.tsx b/src/shared/Icon/Icons/LayerArrowDownIcon.tsx deleted file mode 100644 index 71223a31..00000000 --- a/src/shared/Icon/Icons/LayerArrowDownIcon.tsx +++ /dev/null @@ -1,18 +0,0 @@ -interface LayerArrowDownIconProps { - className?: string; -} - -export const LayerArrowDownIcon = ({ className }: LayerArrowDownIconProps): JSX.Element => ( - <svg - width="20" - height="20" - viewBox="2 3 20 17" - fill="none" - xmlns="http://www.w3.org/2000/svg" - className={className} - > - <path d="M12 21L7 16H10V10H14V16H17L12 21Z" /> - <rect x="4" y="3" width="16" height="2" /> - <rect x="4" y="7" width="16" height="2" /> - </svg> -); diff --git a/src/shared/Icon/Icons/LayerArrowUpIcon.tsx b/src/shared/Icon/Icons/LayerArrowUpIcon.tsx deleted file mode 100644 index bbcf233f..00000000 --- a/src/shared/Icon/Icons/LayerArrowUpIcon.tsx +++ /dev/null @@ -1,18 +0,0 @@ -interface LayerArrowUpIconProps { - className?: string; -} - -export const LayerArrowUpIcon = ({ className }: LayerArrowUpIconProps): JSX.Element => ( - <svg - width="20" - height="20" - viewBox="2 3 20 19" - fill="none" - xmlns="http://www.w3.org/2000/svg" - className={className} - > - <path d="M12 3L7 8H10V14H14V8H17L12 3Z" /> - <rect x="4" y="16" width="16" height="2" /> - <rect x="4" y="20" width="16" height="2" /> - </svg> -); diff --git a/src/shared/IconButton/IconButton.component.tsx b/src/shared/IconButton/IconButton.component.tsx index e71c6211..1330e460 100644 --- a/src/shared/IconButton/IconButton.component.tsx +++ b/src/shared/IconButton/IconButton.component.tsx @@ -29,8 +29,8 @@ export const IconButton = ({ const isStrokeIcon = [ 'plugin', - 'move-back', - 'move-front', + 'bring-back', + 'bring-front', 'center', 'eye', 'crossed-eye', @@ -38,8 +38,6 @@ export const IconButton = ({ 'padlock-locked', 'layers', 'edit', - 'arrow-double-up', - 'arrow-double-down', ].includes(icon); return ( @@ -59,8 +57,6 @@ export const IconButton = ({ isStrokeIcon ? 'stroke-font-400 group-hover:stroke-primary-500 group-active:stroke-primary-500' : 'fill-font-400 group-hover:fill-primary-500 group-active:fill-primary-500', - ['move-back', 'move-front'].includes(icon) && - 'fill-font-400 stroke-font-400 group-hover:fill-primary-500 group-hover:stroke-primary-500 group-active:fill-primary-500 group-active:stroke-primary-500', isActive && getActiveFillOrStrokeColor(icon), classNameIcon, )} diff --git a/src/types/iconTypes.ts b/src/types/iconTypes.ts index 0083a622..0d74dd78 100644 --- a/src/types/iconTypes.ts +++ b/src/types/iconTypes.ts @@ -38,9 +38,7 @@ export type IconTypes = | 'padlock-open' | 'padlock-locked' | 'center' - | 'move-front' - | 'move-back' - | 'layer-arrow-up' - | 'layer-arrow-down'; + | 'bring-front' + | 'bring-back'; export type IconComponentType = ({ className }: { className: string }) => JSX.Element; -- GitLab From 9a22256d5716408896071fe7f94a3eb95ca86932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 10:24:21 +0100 Subject: [PATCH 05/15] feat(layers): add layers zIndex editing -- GitLab From 3b5fd23cd01eca739523f29616d79577817a2bd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 10:27:03 +0100 Subject: [PATCH 06/15] Revert "Revert "feat(layers): add layers zIndex editing"" This reverts commit f6e504ece2951e59900cec58b70bec18b21b4bde. --- .../LayerFactoryModal.component.tsx | 4 + ...LayerImageObjectFactoryModal.component.tsx | 9 +- .../LayerTextFactoryModal.component.tsx | 9 +- .../LayerDrawerTextItem.component.tsx | 12 +- .../LayersDrawer/LayersDrawer.component.tsx | 46 ++++-- .../LayersDrawerImageItem.component.tsx | 12 +- .../LayersDrawerLayer.component.tsx | 107 +++++++++++--- .../LayersDrawerLayerActions.component.tsx | 39 +++++ .../LayersDrawerObjectActions.component.tsx | 20 +-- .../LayersDrawerObjectsList.component.tsx | 32 ++-- .../useOlMapAdditionalLayers.ts | 1 + .../commentsLayer/useOlMapCommentsLayer.ts | 1 + .../config/mapCardLayer/useOlMapCardLayer.ts | 1 + .../config/pinsLayer/useOlMapPinsLayer.ts | 1 + .../processLayer/useOlMapProcessLayer.ts | 1 + .../reactionsLayer/useOlMapReactionsLayer.ts | 1 + .../utils/shapes/layer/Layer.test.ts | 1 + .../Map/MapViewer/utils/shapes/layer/Layer.ts | 3 + src/models/layerSchema.ts | 1 + src/redux/layers/layers.reducers.test.ts | 4 +- src/redux/layers/layers.selectors.ts | 139 +++++++++++++----- src/redux/layers/layers.thunks.test.ts | 18 ++- src/redux/layers/layers.thunks.ts | 28 ++-- src/redux/layers/layers.types.ts | 2 + src/shared/Icon/Icon.component.tsx | 12 +- src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx | 12 +- src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx | 12 +- src/shared/Icon/Icons/LayerArrowDownIcon.tsx | 18 +++ src/shared/Icon/Icons/LayerArrowUpIcon.tsx | 18 +++ .../{BringBackIcon.tsx => MoveBackIcon.tsx} | 6 +- .../{BringFrontIcon.tsx => MoveFrontIcon.tsx} | 6 +- .../IconButton/IconButton.component.tsx | 8 +- src/types/iconTypes.ts | 6 +- 33 files changed, 430 insertions(+), 160 deletions(-) create mode 100644 src/shared/Icon/Icons/LayerArrowDownIcon.tsx create mode 100644 src/shared/Icon/Icons/LayerArrowUpIcon.tsx rename src/shared/Icon/Icons/{BringBackIcon.tsx => MoveBackIcon.tsx} (78%) rename src/shared/Icon/Icons/{BringFrontIcon.tsx => MoveFrontIcon.tsx} (77%) diff --git a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx index 8d925951..b806d2b6 100644 --- a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx @@ -19,11 +19,13 @@ import { SerializedError } from '@reduxjs/toolkit'; import { layerFactoryStateSelector } from '@/redux/modal/modal.selector'; import './LayerFactoryModal.styles.css'; import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { maxLayerZIndexAboveDiagramSelector } from '@/redux/layers/layers.selectors'; export const LayerFactoryModal: React.FC = () => { const dispatch = useAppDispatch(); const currentModelId = useAppSelector(currentModelIdSelector); const layerFactoryState = useAppSelector(layerFactoryStateSelector); + const maxLayerZIndexAboveDiagram = useAppSelector(maxLayerZIndexAboveDiagramSelector); const [loaded, setLoaded] = useState<boolean>(false); const [data, setData] = useState<LayerStoreInterface>({ @@ -31,6 +33,7 @@ export const LayerFactoryModal: React.FC = () => { visible: false, locked: false, modelId: currentModelId, + zIndex: maxLayerZIndexAboveDiagram, }); const fetchData = useMemo(() => { @@ -42,6 +45,7 @@ export const LayerFactoryModal: React.FC = () => { visible: layer.visible, locked: layer.locked, modelId: currentModelId, + zIndex: layer.z, }); } setLoaded(true); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx index 1efb7d88..4d1513e9 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx @@ -4,7 +4,10 @@ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { layerImageObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; -import { highestZIndexSelector, layersDrawLayerSelector } from '@/redux/layers/layers.selectors'; +import { + layersDrawLayerSelector, + maxObjectZIndexForLayerSelector, +} from '@/redux/layers/layers.selectors'; import { addLayerImageObject } from '@/redux/layers/layers.thunks'; import { addGlyph } from '@/redux/glyphs/glyphs.thunks'; import { SerializedError } from '@reduxjs/toolkit'; @@ -22,7 +25,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { const drawLayer = useAppSelector(layersDrawLayerSelector); const layerImageObjectFactoryState = useAppSelector(layerImageObjectFactoryStateSelector); const dispatch = useAppDispatch(); - const highestZIndex = useAppSelector(highestZIndexSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const { mapInstance } = useMapInstance(); const [selectedGlyph, setSelectedGlyph] = useState<number | null>(null); @@ -49,7 +52,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { layerId: drawLayer, x: layerImageObjectFactoryState.x, y: layerImageObjectFactoryState.y, - z: highestZIndex + 1, + z: maxZIndex + 1, width: layerImageObjectFactoryState.width, height: layerImageObjectFactoryState.height, glyph: glyphId, diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx index e1ccf612..bfb80aff 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx @@ -13,7 +13,10 @@ import { LayerTextFactoryForm } from '@/components/FunctionalArea/Modal/LayerTex import { Color } from '@/types/models'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { layerTextFactoryStateSelector } from '@/redux/modal/modal.selector'; -import { highestZIndexSelector, layersDrawLayerSelector } from '@/redux/layers/layers.selectors'; +import { + layersDrawLayerSelector, + maxObjectZIndexForLayerSelector, +} from '@/redux/layers/layers.selectors'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { showToast } from '@/utils/showToast'; @@ -31,7 +34,7 @@ export const LayerTextFactoryModal: React.FC = () => { const currentModelId = useAppSelector(currentModelIdSelector); const layerTextFactoryState = useAppSelector(layerTextFactoryStateSelector); const dispatch = useAppDispatch(); - const highestZIndex = useAppSelector(highestZIndexSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const { mapInstance } = useMapInstance(); const [isSending, setIsSending] = useState<boolean>(false); @@ -55,7 +58,7 @@ export const LayerTextFactoryModal: React.FC = () => { layerId: drawLayer, boundingBox: layerTextFactoryState, textData: data, - z: highestZIndex + 1, + z: maxZIndex + 1, }), ).unwrap(); if (!textData) { diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx index 6f57c762..a9c3d3b3 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx @@ -10,8 +10,8 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' interface LayersDrawerTextItemProps { layerText: LayerText; - bringToFront: () => void; - bringToBack: () => void; + moveToFront: () => void; + moveToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; @@ -21,8 +21,8 @@ interface LayersDrawerTextItemProps { export const LayersDrawerTextItem = ({ layerText, - bringToFront, - bringToBack, + moveToFront, + moveToBack, removeObject, centerObject, editObject, @@ -68,8 +68,8 @@ export const LayersDrawerTextItem = ({ </div> {showActions && ( <LayersDrawerObjectActions - bringToFront={bringToFront} - bringToBack={bringToBack} + moveToFront={moveToFront} + moveToBack={moveToBack} removeObject={removeObject} centerObject={centerObject} editObject={editObject} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index 12bef081..33c259f3 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -4,7 +4,7 @@ import { DrawerHeading } from '@/shared/DrawerHeading'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { layersForCurrentModelSelector } from '@/redux/layers/layers.selectors'; import { Button } from '@/shared/Button'; -import { JSX, useEffect, useRef } from 'react'; +import { JSX, useEffect, useMemo, useRef } from 'react'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; import { LayersDrawerLayer } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component'; @@ -21,6 +21,19 @@ export const LayersDrawer = (): JSX.Element => { dispatch(openLayerFactoryModal()); }; + const sortedLayers = useMemo(() => { + return [...layersForCurrentModel].sort((layerA, layerB) => layerB.details.z - layerA.details.z); + }, [layersForCurrentModel]); + + const negativeZLayers = useMemo( + () => sortedLayers.filter(layer => layer.details.z < 0), + [sortedLayers], + ); + const positiveZLayers = useMemo( + () => sortedLayers.filter(layer => layer.details.z >= 0), + [sortedLayers], + ); + useEffect(() => { if (!mapEditToolsLayerImageObject || !layersDrawerRef.current) { return; @@ -61,20 +74,33 @@ export const LayersDrawer = (): JSX.Element => { ref={layersDrawerRef} > {hasPrivilegeToWriteProject && ( - <div className="flex justify-start pt-2"> + <div className="flex justify-start py-2"> <Button icon="plus" isIcon isFrontIcon onClick={addNewLayer}> Add layer </Button> </div> )} - <div className="flex flex-col gap-4"> - {layersForCurrentModel.map(layer => ( - <LayersDrawerLayer - key={layer.details.id} - layerId={layer.details.id} - layerName={layer.details.name} - /> - ))} + <div className="flex flex-col gap-2"> + {Boolean(positiveZLayers.length) && ( + <span className="border-b-2 border-dashed border-b-gray-400 text-center text-lg font-semibold"> + Layers above the diagram + </span> + )} + <div className="flex flex-col gap-5"> + {positiveZLayers.map(layer => ( + <LayersDrawerLayer key={layer.details.id} layerDetails={layer.details} /> + ))} + </div> + {Boolean(negativeZLayers.length) && ( + <span className="border-b-2 border-dashed border-b-gray-400 text-center text-lg font-semibold"> + Layers below the diagram + </span> + )} + <div className="flex flex-col gap-5"> + {negativeZLayers.map(layer => ( + <LayersDrawerLayer key={layer.details.id} layerDetails={layer.details} /> + ))} + </div> </div> </div> </div> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx index 0622f141..e160b807 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx @@ -11,8 +11,8 @@ import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors' interface LayersDrawerImageItemProps { layerImage: LayerImage; - bringToFront: () => void; - bringToBack: () => void; + moveToFront: () => void; + moveToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; @@ -22,8 +22,8 @@ interface LayersDrawerImageItemProps { export const LayersDrawerImageItem = ({ layerImage, - bringToFront, - bringToBack, + moveToFront, + moveToBack, removeObject, centerObject, editObject, @@ -72,8 +72,8 @@ export const LayersDrawerImageItem = ({ </div> {showActions && ( <LayersDrawerObjectActions - bringToFront={bringToFront} - bringToBack={bringToBack} + moveToFront={moveToFront} + moveToBack={moveToBack} removeObject={removeObject} centerObject={centerObject} editObject={editObject} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index 49b8536f..8b0f9b01 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -1,14 +1,19 @@ +/* eslint-disable no-magic-numbers */ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { layersActiveLayersSelector, layersVisibilityForCurrentModelSelector, + maxLayerZIndexAboveDiagramSelector, + maxLayerZIndexBelowDiagramSelector, + minLayerZIndexAboveDiagramSelector, + minLayerZIndexBelowDiagramSelector, } from '@/redux/layers/layers.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; import { useState, JSX, useMemo } from 'react'; -import { getLayersForModel, removeLayer } from '@/redux/layers/layers.thunks'; +import { getLayersForModel, removeLayer, updateLayer } from '@/redux/layers/layers.thunks'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; import { LayersDrawerLayerActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component'; @@ -21,38 +26,42 @@ import { import { LayersDrawerObjectsList } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component'; import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.slice'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; +import { Layer } from '@/types/models'; interface LayersDrawerLayerProps { - layerId: number; - layerName: string; + layerDetails: Layer; } -export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps): JSX.Element => { +export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX.Element => { const layersVisibilityForCurrentModel = useAppSelector(layersVisibilityForCurrentModelSelector); const activeLayers = useAppSelector(layersActiveLayersSelector); const currentModelId = useAppSelector(currentModelIdSelector); + const maxLayerZIndexAboveDiagram = useAppSelector(maxLayerZIndexAboveDiagramSelector); + const maxLayerZIndexBelowDiagram = useAppSelector(maxLayerZIndexBelowDiagramSelector); + const minLayerZIndexAboveDiagram = useAppSelector(minLayerZIndexAboveDiagramSelector); + const minLayerZIndexBelowDiagram = useAppSelector(minLayerZIndexBelowDiagramSelector); const dispatch = useAppDispatch(); const [isModalOpen, setIsModalOpen] = useState(false); const isLayerVisible = useMemo(() => { - return layersVisibilityForCurrentModel[layerId]; - }, [layerId, layersVisibilityForCurrentModel]); + return layersVisibilityForCurrentModel[layerDetails.id]; + }, [layerDetails.id, layersVisibilityForCurrentModel]); const isLayerActive = useMemo(() => { - return activeLayers.includes(layerId); - }, [activeLayers, layerId]); + return activeLayers.includes(layerDetails.id); + }, [activeLayers, layerDetails.id]); const editLayer = (): void => { - dispatch(openLayerFactoryModal(layerId)); + dispatch(openLayerFactoryModal(layerDetails.id)); }; const addImage = (): void => { - dispatch(setDrawLayer({ modelId: currentModelId, layerId })); + dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.DRAW_IMAGE)); }; const addText = (): void => { - dispatch(setDrawLayer({ modelId: currentModelId, layerId })); + dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_TEXT)); }; @@ -61,11 +70,11 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps }; const confirmRemove = async (): Promise<void> => { - if (!layerId) { + if (!layerDetails.id) { return; } try { - await dispatch(removeLayer({ modelId: currentModelId, layerId })).unwrap(); + await dispatch(removeLayer({ modelId: currentModelId, layerId: layerDetails.id })).unwrap(); showToast({ type: 'success', message: 'The layer has been successfully removed', @@ -87,12 +96,61 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps const toggleActiveLayer = (value: boolean): void => { if (value) { - dispatch(setLayerToActive({ modelId: currentModelId, layerId })); + dispatch(setLayerToActive({ modelId: currentModelId, layerId: layerDetails.id })); } else { - dispatch(setLayerToInactive({ modelId: currentModelId, layerId })); + dispatch(setLayerToInactive({ modelId: currentModelId, layerId: layerDetails.id })); } }; + const updateLayerZIndex = async (zIndex: number): Promise<void> => { + try { + dispatch( + updateLayer({ + name: layerDetails.name, + visible: layerDetails.visible, + locked: layerDetails.locked, + modelId: currentModelId, + layerId: layerDetails.id, + zIndex, + }), + ); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while updating the layer', + }); + } + }; + + const moveToFront = (): void => { + if (layerDetails.z > 0) { + updateLayerZIndex(maxLayerZIndexAboveDiagram); + } else if (layerDetails.z < 0) { + const zIndex = Math.min(maxLayerZIndexBelowDiagram, -1); + updateLayerZIndex(zIndex); + } + }; + + const moveToBack = (): void => { + if (layerDetails.z > 0) { + const zIndex = Math.max(minLayerZIndexAboveDiagram, 1); + updateLayerZIndex(zIndex); + } else if (layerDetails.z < 0) { + updateLayerZIndex(minLayerZIndexBelowDiagram); + } + }; + + const moveAboveDiagram = (): void => { + const zIndex = Math.max(minLayerZIndexAboveDiagram - 1, 1); + updateLayerZIndex(zIndex); + }; + + const moveBelowDiagram = (): void => { + const zIndex = Math.min(minLayerZIndexBelowDiagram + 1, -1); + updateLayerZIndex(zIndex); + }; + return ( <div> <QuestionModal @@ -101,9 +159,13 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps onConfirm={confirmRemove} question="Are you sure you want to remove the layer?" /> - <div className="flex items-center justify-between py-3"> - <span className={`font-semibold ${isLayerVisible ? 'opacity-100' : 'opacity-40'}`}> - {layerName} + <div className="flex items-center justify-between pb-3"> + <span + className={`font-semibold ${ + isLayerVisible ? 'opacity-100' : 'opacity-40' + } min-w-0 flex-1 truncate `} + > + {layerDetails.name} </span> <LayersDrawerLayerActions toggleVisibility={() => @@ -111,7 +173,7 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps setLayerVisibility({ modelId: currentModelId, visible: !isLayerVisible, - layerId, + layerId: layerDetails.id, }), ) } @@ -120,12 +182,17 @@ export const LayersDrawerLayer = ({ layerId, layerName }: LayersDrawerLayerProps removeLayer={onRemoveLayer} addImage={addImage} addText={addText} + moveToFront={moveToFront} + moveToBack={moveToBack} + moveAboveDiagram={moveAboveDiagram} + moveBelowDiagram={moveBelowDiagram} + zIndex={layerDetails.z} isVisible={isLayerVisible} isActive={isLayerActive} /> </div> <LayersDrawerObjectsList - layerId={layerId} + layerId={layerDetails.id} isLayerVisible={isLayerVisible} isLayerActive={isLayerActive} /> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx index 18627b13..81435100 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx @@ -1,3 +1,4 @@ +/* eslint-disable no-magic-numbers */ import { IconButton } from '@/shared/IconButton'; import { JSX } from 'react'; import { LayerDrawerLayerContextMenu } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component'; @@ -9,10 +10,15 @@ type LayersDrawerLayerActionsProps = { removeLayer: () => void; isVisible: boolean; isActive: boolean; + zIndex: number; toggleVisibility: () => void; toggleActiveLayer: (value: boolean) => void; addImage: () => void; addText: () => void; + moveToFront: () => void; + moveToBack: () => void; + moveAboveDiagram: () => void; + moveBelowDiagram: () => void; }; export const LayersDrawerLayerActions = ({ @@ -20,10 +26,15 @@ export const LayersDrawerLayerActions = ({ removeLayer, isVisible, isActive, + zIndex, toggleVisibility, toggleActiveLayer, addImage, addText, + moveToFront, + moveToBack, + moveAboveDiagram, + moveBelowDiagram, }: LayersDrawerLayerActionsProps): JSX.Element => { const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); @@ -43,6 +54,34 @@ export const LayersDrawerLayerActions = ({ className="h-auto w-auto bg-transparent p-0" onClick={() => toggleActiveLayer(!isActive)} /> + <IconButton + title="Move to front" + icon="move-front" + className="h-auto w-auto bg-transparent p-0" + onClick={moveToFront} + /> + <IconButton + title="Move to back" + icon="move-back" + className="h-auto w-auto bg-transparent p-0" + onClick={moveToBack} + /> + {zIndex < 0 && ( + <IconButton + title="Move above the diagram" + icon="layer-arrow-up" + className="h-auto w-auto bg-transparent p-0" + onClick={moveAboveDiagram} + /> + )} + {zIndex > 0 && ( + <IconButton + title="Move below the diagram" + icon="layer-arrow-down" + className="h-auto w-auto bg-transparent p-0" + onClick={moveBelowDiagram} + /> + )} <LayerDrawerLayerContextMenu removeLayer={removeLayer} editLayer={editLayer} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx index 4cf6871e..a97189ea 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx @@ -2,16 +2,16 @@ import { JSX } from 'react'; import { IconButton } from '@/shared/IconButton'; interface LayersDrawerObjectActionsProps { - bringToFront: () => void; - bringToBack: () => void; + moveToFront: () => void; + moveToBack: () => void; removeObject: () => void; centerObject: () => void; editObject: () => void; } export const LayersDrawerObjectActions = ({ - bringToFront, - bringToBack, + moveToFront, + moveToBack, removeObject, centerObject, editObject, @@ -31,16 +31,16 @@ export const LayersDrawerObjectActions = ({ onClick={editObject} /> <IconButton - icon="bring-front" + icon="move-front" className="h-auto w-auto bg-transparent p-0" - title="Bring to front" - onClick={bringToFront} + title="Move to front" + onClick={moveToFront} /> <IconButton - icon="bring-back" + icon="move-back" className="h-auto w-auto bg-transparent p-0" - title="Bring to back" - onClick={bringToBack} + title="Move to back" + onClick={moveToBack} /> <IconButton icon="trash" diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 70a6acf5..9ec19fe4 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -1,9 +1,9 @@ /* eslint-disable no-magic-numbers */ import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { - highestZIndexSelector, layerByIdSelector, - lowestZIndexSelector, + maxObjectZIndexForLayerSelector, + minObjectZIndexForLayerSelector, } from '@/redux/layers/layers.selectors'; import { JSX, useState } from 'react'; import { LayersDrawerImageItem } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component'; @@ -64,8 +64,8 @@ export const LayersDrawerObjectsList = ({ isLayerActive, }: LayersDrawerObjectsListProps): JSX.Element | null => { const currentModelId = useAppSelector(mapModelIdSelector); - const highestZIndex = useAppSelector(highestZIndexSelector); - const lowestZIndex = useAppSelector(lowestZIndexSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, layerId)); + const minZIndex = useAppSelector(state => minObjectZIndexForLayerSelector(state, layerId)); const layer = useAppSelector(state => layerByIdSelector(state, layerId)); const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image'>(undefined); @@ -174,12 +174,12 @@ export const LayersDrawerObjectsList = ({ } }; - const bringImageToFront = async (layerImage: LayerImage): Promise<void> => { - await updateImageZIndex({ zIndex: highestZIndex + 1, layerImage }); + const moveImageToFront = async (layerImage: LayerImage): Promise<void> => { + await updateImageZIndex({ zIndex: maxZIndex + 1, layerImage }); }; - const bringImageToBack = async (layerImage: LayerImage): Promise<void> => { - await updateImageZIndex({ zIndex: lowestZIndex - 1, layerImage }); + const moveImageToBack = async (layerImage: LayerImage): Promise<void> => { + await updateImageZIndex({ zIndex: minZIndex - 1, layerImage }); }; const updateTextZIndex = async ({ @@ -210,12 +210,12 @@ export const LayersDrawerObjectsList = ({ } }; - const bringTextToFront = async (layerText: LayerText): Promise<void> => { - await updateTextZIndex({ zIndex: highestZIndex + 1, layerText }); + const moveTextToFront = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: maxZIndex + 1, layerText }); }; - const bringTextToBack = async (layerText: LayerText): Promise<void> => { - await updateTextZIndex({ zIndex: lowestZIndex - 1, layerText }); + const moveTextToBack = async (layerText: LayerText): Promise<void> => { + await updateTextZIndex({ zIndex: minZIndex - 1, layerText }); }; const centerObject = (layerObject: LayerImage | LayerText): void => { @@ -257,8 +257,8 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerTextItem layerText={layerText} key={layerText.id} - bringToFront={() => bringTextToFront(layerText)} - bringToBack={() => bringTextToBack(layerText)} + moveToFront={() => moveTextToFront(layerText)} + moveToBack={() => moveTextToBack(layerText)} removeObject={() => removeObject(layerText)} centerObject={() => centerObject(layerText)} editObject={() => editText()} @@ -270,8 +270,8 @@ export const LayersDrawerObjectsList = ({ <LayersDrawerImageItem layerImage={layerImage} key={layerImage.id} - bringToFront={() => bringImageToFront(layerImage)} - bringToBack={() => bringImageToBack(layerImage)} + moveToFront={() => moveImageToFront(layerImage)} + moveToBack={() => moveImageToBack(layerImage)} removeObject={() => removeObject(layerImage)} centerObject={() => centerObject(layerImage)} editObject={() => editImage()} diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 5e378293..6d41944f 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -125,6 +125,7 @@ export const useOlMapAdditionalLayers = ( const vectorLayers = useMemo(() => { return layersState.map(layer => { const additionalLayer = new Layer({ + zIndex: layer.details.z, texts: layer.texts, rects: layer.rects, ovals: layer.ovals, diff --git a/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts b/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts index 7ac3b73b..a3640020 100644 --- a/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts @@ -36,6 +36,7 @@ export const useOlMapCommentsLayer = (): VectorLayer<VectorSource<Feature<Geomet return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: Infinity, source: vectorSource, }); vectorLayer.set('type', LAYER_TYPE.COMMENTS_LAYER); diff --git a/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts b/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts index 69cec807..db3dbad4 100644 --- a/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts +++ b/src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts @@ -38,6 +38,7 @@ export const useOlMapCardLayer = (): VectorLayer<VectorSource<Feature<Polygon>>> return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: -Infinity, source: vectorSource, style: new Style({ fill: new Fill({ diff --git a/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts b/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts index f7b6001c..4cd5a32b 100644 --- a/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts @@ -77,6 +77,7 @@ export const useOlMapPinsLayer = (): VectorLayer<VectorSource<Feature<Geometry>> return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: Infinity, source: vectorSource, }); vectorLayer.set('type', LAYER_TYPE.PINS_LAYER); diff --git a/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts b/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts index 2811ec30..98cb6e1e 100644 --- a/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts +++ b/src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts @@ -274,6 +274,7 @@ export const useOlMapProcessLayer = ({ return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: 0, source: vectorSource, updateWhileAnimating: true, updateWhileInteracting: true, diff --git a/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts b/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts index bfb2668e..df526271 100644 --- a/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts +++ b/src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts @@ -63,6 +63,7 @@ export const useOlMapReactionsLayer = (): VectorLayer<VectorSource<Feature<Geome return useMemo(() => { const vectorLayer = new VectorLayer({ + zIndex: Infinity, source: vectorSource, style: new Style({ fill: new Fill({ color: LINE_COLOR }), diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts index 7b8bb971..10349c6d 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts @@ -133,6 +133,7 @@ describe('Layer', () => { pointToProjection: jest.fn(point => [point.x, point.y]), mapInstance, mapSize, + zIndex: 1, lineTypes: {}, arrowTypes: {}, }; diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 7f697a72..14d5f8b5 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -34,6 +34,7 @@ import LayerText from '@/components/Map/MapViewer/utils/shapes/layer/elements/La import LayerImage from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage'; export interface LayerProps { + zIndex: number; texts: { [key: string]: LayerTextModel }; rects: Array<LayerRect>; ovals: Array<LayerOval>; @@ -78,6 +79,7 @@ export default class Layer { >; constructor({ + zIndex, texts, rects, ovals, @@ -118,6 +120,7 @@ export default class Layer { this.vectorSource.addFeatures(arrowsFeatures); this.vectorLayer = new VectorLayer({ + zIndex, source: this.vectorSource, visible, updateWhileAnimating: true, diff --git a/src/models/layerSchema.ts b/src/models/layerSchema.ts index 380146a7..11fcd88d 100644 --- a/src/models/layerSchema.ts +++ b/src/models/layerSchema.ts @@ -5,4 +5,5 @@ export const layerSchema = z.object({ name: z.string(), visible: z.boolean(), locked: z.boolean(), + z: z.number(), }); diff --git a/src/redux/layers/layers.reducers.test.ts b/src/redux/layers/layers.reducers.test.ts index 7bcb10ba..d93fb4f8 100644 --- a/src/redux/layers/layers.reducers.test.ts +++ b/src/redux/layers/layers.reducers.test.ts @@ -92,7 +92,7 @@ describe('layers reducer', () => { const { type } = await store.dispatch(getLayersForModel(1)); const { data, loading, error } = store.getState().layers[1]; - expect(type).toBe('vectorMap/getLayers/fulfilled'); + expect(type).toBe('layers/getLayers/fulfilled'); expect(loading).toEqual('succeeded'); expect(error).toEqual({ message: '', name: '' }); expect(data).toEqual({ @@ -120,7 +120,7 @@ describe('layers reducer', () => { const action = await store.dispatch(getLayersForModel(1)); const { data, loading, error } = store.getState().layers[1]; - expect(action.type).toBe('vectorMap/getLayers/rejected'); + expect(action.type).toBe('layers/getLayers/rejected'); expect(() => unwrapResult(action)).toThrow( "Failed to fetch layers: The page you're looking for doesn't exist. Please verify the URL and try again.", ); diff --git a/src/redux/layers/layers.selectors.ts b/src/redux/layers/layers.selectors.ts index 8f016c8a..8123fa00 100644 --- a/src/redux/layers/layers.selectors.ts +++ b/src/redux/layers/layers.selectors.ts @@ -2,6 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { rootSelector } from '@/redux/root/root.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { LayerState } from '@/redux/layers/layers.types'; export const layersSelector = createSelector(rootSelector, state => state.layers); @@ -18,7 +19,7 @@ export const layersActiveLayersSelector = createSelector( export const layersDrawLayerSelector = createSelector( layersStateForCurrentModelSelector, - state => state?.data?.drawLayer, + state => state?.data?.drawLayer || null, ); export const layerByIdSelector = createSelector( @@ -41,40 +42,112 @@ export const layersForCurrentModelSelector = createSelector( state => state?.data?.layers || [], ); -export const highestZIndexSelector = createSelector(layersForCurrentModelSelector, layers => { - if (!layers || layers.length === 0) return 0; - - const getMaxZFromItems = <T extends { z?: number }>(items: T[] = []): number => - items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; - - return layers.reduce((maxZ, layer) => { - const textsMaxZ = getMaxZFromItems(Object.values(layer.texts)); - const rectsMaxZ = getMaxZFromItems(layer.rects); - const ovalsMaxZ = getMaxZFromItems(layer.ovals); - const linesMaxZ = getMaxZFromItems(layer.lines); - const imagesMaxZ = getMaxZFromItems(Object.values(layer.images)); - - const layerMaxZ = Math.max(textsMaxZ, rectsMaxZ, ovalsMaxZ, linesMaxZ, imagesMaxZ); - - return Math.max(maxZ, layerMaxZ); - }, 0); -}); +export const maxLayerZIndexAboveDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return 1000; + } + let maxZIndex = -Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z > 0 && layer.details.z > maxZIndex) { + maxZIndex = layer.details.z; + } + }); + return maxZIndex; + }, +); -export const lowestZIndexSelector = createSelector(layersForCurrentModelSelector, layers => { - if (!layers || layers.length === 0) return 0; +export const maxLayerZIndexBelowDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return -1000; + } + let maxZIndex = -Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z < 0 && layer.details.z > maxZIndex) { + maxZIndex = layer.details.z; + } + }); + return maxZIndex; + }, +); - const getMinZFromItems = <T extends { z?: number }>(items: T[] = []): number => - items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; +export const minLayerZIndexAboveDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return 1000; + } + let minZIndex = Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z > 0 && layer.details.z < minZIndex) { + minZIndex = layer.details.z; + } + }); + return minZIndex; + }, +); - return layers.reduce((minZ, layer) => { - const textsMinZ = getMinZFromItems(Object.values(layer.texts)); - const rectsMinZ = getMinZFromItems(layer.rects); - const ovalsMinZ = getMinZFromItems(layer.ovals); - const linesMinZ = getMinZFromItems(layer.lines); - const imagesMinZ = getMinZFromItems(Object.values(layer.images)); +export const minLayerZIndexBelowDiagramSelector = createSelector( + layersForCurrentModelSelector, + layers => { + if (!layers || layers.length === 0) { + return -1000; + } + let minZIndex = Infinity; + layers.forEach((layer: LayerState) => { + if (layer.details.z < 0 && layer.details.z < minZIndex) { + minZIndex = layer.details.z; + } + }); + return minZIndex; + }, +); - const layerMinZ = Math.min(textsMinZ, rectsMinZ, ovalsMinZ, linesMinZ, imagesMinZ); +export const maxObjectZIndexForLayerSelector = createSelector( + [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], + (layers, layerId) => { + if (!layers || layers.length === 0 || !layerId) { + return 0; + } + const foundLayer = layers.find(layer => layer.details.id === layerId); + if (!foundLayer) { + return 0; + } + const getMaxZFromItems = <T extends { z?: number }>(items: T[] = []): number => + items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; + + const textsMaxZ = getMaxZFromItems(Object.values(foundLayer.texts)); + const rectsMaxZ = getMaxZFromItems(foundLayer.rects); + const ovalsMaxZ = getMaxZFromItems(foundLayer.ovals); + const linesMaxZ = getMaxZFromItems(foundLayer.lines); + const imagesMaxZ = getMaxZFromItems(Object.values(foundLayer.images)); + + return Math.max(textsMaxZ, rectsMaxZ, ovalsMaxZ, linesMaxZ, imagesMaxZ); + }, +); - return Math.min(minZ, layerMinZ); - }, 0); -}); +export const minObjectZIndexForLayerSelector = createSelector( + [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], + (layers, layerId) => { + if (!layers || layers.length === 0 || !layerId) { + return 0; + } + const foundLayer = layers.find(layer => layer.details.id === layerId); + if (!foundLayer) { + return 0; + } + const getMinZFromItems = <T extends { z?: number }>(items: T[] = []): number => + items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; + + const textsMinZ = getMinZFromItems(Object.values(foundLayer.texts)); + const rectsMinZ = getMinZFromItems(foundLayer.rects); + const ovalsMinZ = getMinZFromItems(foundLayer.ovals); + const linesMinZ = getMinZFromItems(foundLayer.lines); + const imagesMinZ = getMinZFromItems(Object.values(foundLayer.images)); + + return Math.min(textsMinZ, rectsMinZ, ovalsMinZ, linesMinZ, imagesMinZ); + }, +); diff --git a/src/redux/layers/layers.thunks.test.ts b/src/redux/layers/layers.thunks.test.ts index 77e10bdb..09028272 100644 --- a/src/redux/layers/layers.thunks.test.ts +++ b/src/redux/layers/layers.thunks.test.ts @@ -111,7 +111,13 @@ describe('layers thunks', () => { mockedAxiosClient.onPost(apiPath.storeLayer(1)).reply(HttpStatusCode.Created, layerFixture); const { payload } = await store.dispatch( - addLayerForModel({ name: 'New Layer', visible: true, locked: false, modelId: 1 }), + addLayerForModel({ + name: 'New Layer', + visible: true, + locked: false, + modelId: 1, + zIndex: 1, + }), ); expect(payload).toEqual(layerFixture); }); @@ -122,7 +128,13 @@ describe('layers thunks', () => { .reply(HttpStatusCode.Created, { invalid: 'data' }); const { payload } = await store.dispatch( - addLayerForModel({ name: 'New Layer', visible: true, locked: false, modelId: 1 }), + addLayerForModel({ + name: 'New Layer', + visible: true, + locked: false, + modelId: 1, + zIndex: 1, + }), ); expect(payload).toBeNull(); }); @@ -139,6 +151,7 @@ describe('layers thunks', () => { locked: true, modelId: 1, layerId: 2, + zIndex: 1, }), ); expect(payload).toEqual(layerFixture); @@ -156,6 +169,7 @@ describe('layers thunks', () => { locked: true, modelId: 1, layerId: 2, + zIndex: 1, }), ); expect(payload).toBeNull(); diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 66035fd8..bda72fce 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -32,7 +32,7 @@ export const getLayer = createAsyncThunk< Layer | null, { modelId: number; layerId: number }, ThunkConfig ->('vectorMap/getLayer', async ({ modelId, layerId }) => { +>('layers/getLayer', async ({ modelId, layerId }) => { try { const { data } = await axiosInstanceNewAPI.get<Layer>(apiPath.getLayer(modelId, layerId)); @@ -48,7 +48,7 @@ export const getLayersForModel = createAsyncThunk< LayersVisibilitiesState | undefined, number, ThunkConfig ->('vectorMap/getLayers', async (modelId: number) => { +>('layers/getLayers', async (modelId: number) => { try { const { data } = await axiosInstanceNewAPI.get<Layers>(apiPath.getLayers(modelId)); const isDataValid = validateDataUsingZodSchema(data, pageableSchema(layerSchema)); @@ -103,13 +103,14 @@ export const getLayersForModel = createAsyncThunk< }); export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterface, ThunkConfig>( - 'vectorMap/addLayer', - async ({ name, visible, locked, modelId }) => { + 'layers/addLayer', + async ({ name, visible, locked, modelId, zIndex }) => { try { const { data } = await axiosInstanceNewAPI.post<Layer>(apiPath.storeLayer(modelId), { name, visible, locked, + z: zIndex, }); const isDataValid = validateDataUsingZodSchema(data, layerSchema); @@ -122,13 +123,14 @@ export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterfa ); export const updateLayer = createAsyncThunk<Layer | null, LayerUpdateInterface, ThunkConfig>( - 'vectorMap/updateLayer', - async ({ name, visible, locked, modelId, layerId }) => { + 'layers/updateLayer', + async ({ name, visible, locked, modelId, layerId, zIndex }) => { try { const { data } = await axiosInstanceNewAPI.put<Layer>(apiPath.updateLayer(modelId, layerId), { name, visible, locked, + z: zIndex, }); const isDataValid = validateDataUsingZodSchema(data, layerSchema); @@ -144,7 +146,7 @@ export const removeLayer = createAsyncThunk< null, { modelId: number; layerId: number }, ThunkConfig ->('vectorMap/removeLayer', async ({ modelId, layerId }) => { +>('layers/removeLayer', async ({ modelId, layerId }) => { try { await axiosInstanceNewAPI.delete<void>(apiPath.removeLayer(modelId, layerId)); return null; @@ -161,7 +163,7 @@ export const getLayerImage = createAsyncThunk< imageId: number; }, ThunkConfig ->('vectorMap/getLayerImage', async ({ modelId, layerId, imageId }) => { +>('layers/getLayerImage', async ({ modelId, layerId, imageId }) => { try { const { data } = await axiosInstanceNewAPI.get<LayerImage>( apiPath.getLayerImageObject(modelId, layerId, imageId), @@ -187,7 +189,7 @@ export const addLayerImageObject = createAsyncThunk< glyph: number | null; }, ThunkConfig ->('vectorMap/addLayerImageObject', async ({ modelId, layerId, x, y, z, width, height, glyph }) => { +>('layers/addLayerImageObject', async ({ modelId, layerId, x, y, z, width, height, glyph }) => { try { const { data } = await axiosInstanceNewAPI.post<LayerImage>( apiPath.addLayerImageObject(modelId, layerId), @@ -223,7 +225,7 @@ export const updateLayerImageObject = createAsyncThunk< }, ThunkConfig >( - 'vectorMap/updateLayerImageObject', + 'layers/updateLayerImageObject', async ({ modelId, layerId, id, x, y, z, width, height, glyph }) => { try { const { data } = await axiosInstanceNewAPI.put<LayerImage>( @@ -252,7 +254,7 @@ export const removeLayerImage = createAsyncThunk< null, { modelId: number; layerId: number; imageId: number }, ThunkConfig ->('vectorMap/removeLayerImage', async ({ modelId, layerId, imageId }) => { +>('layers/removeLayerImage', async ({ modelId, layerId, imageId }) => { try { await axiosInstanceNewAPI.delete<void>( apiPath.removeLayerImageObject(modelId, layerId, imageId), @@ -273,7 +275,7 @@ export const addLayerText = createAsyncThunk< textData: LayerTextFactoryForm; }, ThunkConfig ->('vectorMap/addLayerText', async ({ modelId, layerId, z, boundingBox, textData }) => { +>('layers/addLayerText', async ({ modelId, layerId, z, boundingBox, textData }) => { try { const { data } = await axiosInstanceNewAPI.post<LayerText>( apiPath.addLayerText(modelId, layerId), @@ -299,7 +301,7 @@ export const getLayerText = createAsyncThunk< textId: number; }, ThunkConfig ->('vectorMap/getLayerText', async ({ modelId, layerId, textId }) => { +>('layers/getLayerText', async ({ modelId, layerId, textId }) => { try { const { data } = await axiosInstanceNewAPI.get<LayerText>( apiPath.getLayerText(modelId, layerId, textId), diff --git a/src/redux/layers/layers.types.ts b/src/redux/layers/layers.types.ts index 60e42717..05b4636e 100644 --- a/src/redux/layers/layers.types.ts +++ b/src/redux/layers/layers.types.ts @@ -6,6 +6,7 @@ export interface LayerStoreInterface { visible: boolean; locked: boolean; modelId: number; + zIndex: number; } export interface LayerUpdateInterface { @@ -14,6 +15,7 @@ export interface LayerUpdateInterface { visible: boolean; locked: boolean; modelId: number; + zIndex: number; } export type LayerState = { diff --git a/src/shared/Icon/Icon.component.tsx b/src/shared/Icon/Icon.component.tsx index 5745b6ec..aed961c3 100644 --- a/src/shared/Icon/Icon.component.tsx +++ b/src/shared/Icon/Icon.component.tsx @@ -31,8 +31,10 @@ import { PadlockOpenIcon } from '@/shared/Icon/Icons/PadlockOpenIcon'; import { PadlockLockedIcon } from '@/shared/Icon/Icons/PadlockLockedIcon'; import { CrossedEyeIcon } from '@/shared/Icon/Icons/CrossedEyeIcon'; import { CenterIcon } from '@/shared/Icon/Icons/CenterIcon'; -import { BringFrontIcon } from '@/shared/Icon/Icons/BringFrontIcon'; -import { BringBackIcon } from '@/shared/Icon/Icons/BringBackIcon'; +import { MoveFrontIcon } from '@/shared/Icon/Icons/MoveFrontIcon'; +import { MoveBackIcon } from '@/shared/Icon/Icons/MoveBackIcon'; +import { LayerArrowUpIcon } from '@/shared/Icon/Icons/LayerArrowUpIcon'; +import { LayerArrowDownIcon } from '@/shared/Icon/Icons/LayerArrowDownIcon'; import { LocationIcon } from './Icons/LocationIcon'; import { MaginfierZoomInIcon } from './Icons/MagnifierZoomIn'; import { MaginfierZoomOutIcon } from './Icons/MagnifierZoomOut'; @@ -87,8 +89,10 @@ const icons: Record<IconTypes, IconComponentType> = { 'padlock-open': PadlockOpenIcon, 'padlock-locked': PadlockLockedIcon, center: CenterIcon, - 'bring-front': BringFrontIcon, - 'bring-back': BringBackIcon, + 'move-front': MoveFrontIcon, + 'move-back': MoveBackIcon, + 'layer-arrow-up': LayerArrowUpIcon, + 'layer-arrow-down': LayerArrowDownIcon, } as const; export const Icon = ({ name, className = '', ...rest }: IconProps): JSX.Element => { diff --git a/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx b/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx index d7ab4e38..cf5ce5f7 100644 --- a/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx +++ b/src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx @@ -13,26 +13,16 @@ export const ArrowDoubleDownIcon = ({ className }: ArrowDoubleDownIconProps): JS > <path d="M8 8L8 18M8 18L5 15M8 18L11 15" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> <path d="M16 8L16 18M16 18L13 15M16 18L19 15" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> - <line - x1="4" - y1="6" - x2="20" - y2="6" - stroke="currentColor" - strokeWidth="1.5" - strokeLinecap="round" - /> + <line x1="4" y1="6" x2="20" y2="6" strokeWidth="1.5" strokeLinecap="round" /> </svg> ); diff --git a/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx b/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx index ed51a602..861773cd 100644 --- a/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx +++ b/src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx @@ -13,26 +13,16 @@ export const ArrowDoubleUpIcon = ({ className }: ArrowDoubleUpIconProps): JSX.El > <path d="M8 16L8 6M8 6L5 9M8 6L11 9" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> <path d="M16 16L16 6M16 6L13 9M16 6L19 9" - stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" /> - <line - x1="4" - y1="18" - x2="20" - y2="18" - stroke="currentColor" - strokeWidth="1.5" - strokeLinecap="round" - /> + <line x1="4" y1="18" x2="20" y2="18" strokeWidth="1.5" strokeLinecap="round" /> </svg> ); diff --git a/src/shared/Icon/Icons/LayerArrowDownIcon.tsx b/src/shared/Icon/Icons/LayerArrowDownIcon.tsx new file mode 100644 index 00000000..71223a31 --- /dev/null +++ b/src/shared/Icon/Icons/LayerArrowDownIcon.tsx @@ -0,0 +1,18 @@ +interface LayerArrowDownIconProps { + className?: string; +} + +export const LayerArrowDownIcon = ({ className }: LayerArrowDownIconProps): JSX.Element => ( + <svg + width="20" + height="20" + viewBox="2 3 20 17" + fill="none" + xmlns="http://www.w3.org/2000/svg" + className={className} + > + <path d="M12 21L7 16H10V10H14V16H17L12 21Z" /> + <rect x="4" y="3" width="16" height="2" /> + <rect x="4" y="7" width="16" height="2" /> + </svg> +); diff --git a/src/shared/Icon/Icons/LayerArrowUpIcon.tsx b/src/shared/Icon/Icons/LayerArrowUpIcon.tsx new file mode 100644 index 00000000..bbcf233f --- /dev/null +++ b/src/shared/Icon/Icons/LayerArrowUpIcon.tsx @@ -0,0 +1,18 @@ +interface LayerArrowUpIconProps { + className?: string; +} + +export const LayerArrowUpIcon = ({ className }: LayerArrowUpIconProps): JSX.Element => ( + <svg + width="20" + height="20" + viewBox="2 3 20 19" + fill="none" + xmlns="http://www.w3.org/2000/svg" + className={className} + > + <path d="M12 3L7 8H10V14H14V8H17L12 3Z" /> + <rect x="4" y="16" width="16" height="2" /> + <rect x="4" y="20" width="16" height="2" /> + </svg> +); diff --git a/src/shared/Icon/Icons/BringBackIcon.tsx b/src/shared/Icon/Icons/MoveBackIcon.tsx similarity index 78% rename from src/shared/Icon/Icons/BringBackIcon.tsx rename to src/shared/Icon/Icons/MoveBackIcon.tsx index d086ac9b..734bd201 100644 --- a/src/shared/Icon/Icons/BringBackIcon.tsx +++ b/src/shared/Icon/Icons/MoveBackIcon.tsx @@ -1,8 +1,8 @@ -interface BringBackIconProps { +interface MoveBackIconProps { className?: string; } -export const BringBackIcon = ({ className }: BringBackIconProps): JSX.Element => ( +export const MoveBackIcon = ({ className }: MoveBackIconProps): JSX.Element => ( <svg width="20" height="20" @@ -23,6 +23,6 @@ export const BringBackIcon = ({ className }: BringBackIconProps): JSX.Element => stroke="white" fill="none" /> - <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" fill="black" /> + <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" /> </svg> ); diff --git a/src/shared/Icon/Icons/BringFrontIcon.tsx b/src/shared/Icon/Icons/MoveFrontIcon.tsx similarity index 77% rename from src/shared/Icon/Icons/BringFrontIcon.tsx rename to src/shared/Icon/Icons/MoveFrontIcon.tsx index e5aa5017..037f5cb3 100644 --- a/src/shared/Icon/Icons/BringFrontIcon.tsx +++ b/src/shared/Icon/Icons/MoveFrontIcon.tsx @@ -1,8 +1,8 @@ -interface BringFrontIconProps { +interface MoveFrontIconProps { className?: string; } -export const BringFrontIcon = ({ className }: BringFrontIconProps): JSX.Element => ( +export const MoveFrontIcon = ({ className }: MoveFrontIconProps): JSX.Element => ( <svg width="20" height="20" @@ -11,7 +11,7 @@ export const BringFrontIcon = ({ className }: BringFrontIconProps): JSX.Element fill="none" className={className} > - <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" fill="black" /> + <rect x="4" y="4" width="64" height="64" rx="10" ry="10" strokeWidth="8" /> <rect x="30" y="30" diff --git a/src/shared/IconButton/IconButton.component.tsx b/src/shared/IconButton/IconButton.component.tsx index 1330e460..e71c6211 100644 --- a/src/shared/IconButton/IconButton.component.tsx +++ b/src/shared/IconButton/IconButton.component.tsx @@ -29,8 +29,8 @@ export const IconButton = ({ const isStrokeIcon = [ 'plugin', - 'bring-back', - 'bring-front', + 'move-back', + 'move-front', 'center', 'eye', 'crossed-eye', @@ -38,6 +38,8 @@ export const IconButton = ({ 'padlock-locked', 'layers', 'edit', + 'arrow-double-up', + 'arrow-double-down', ].includes(icon); return ( @@ -57,6 +59,8 @@ export const IconButton = ({ isStrokeIcon ? 'stroke-font-400 group-hover:stroke-primary-500 group-active:stroke-primary-500' : 'fill-font-400 group-hover:fill-primary-500 group-active:fill-primary-500', + ['move-back', 'move-front'].includes(icon) && + 'fill-font-400 stroke-font-400 group-hover:fill-primary-500 group-hover:stroke-primary-500 group-active:fill-primary-500 group-active:stroke-primary-500', isActive && getActiveFillOrStrokeColor(icon), classNameIcon, )} diff --git a/src/types/iconTypes.ts b/src/types/iconTypes.ts index 0d74dd78..0083a622 100644 --- a/src/types/iconTypes.ts +++ b/src/types/iconTypes.ts @@ -38,7 +38,9 @@ export type IconTypes = | 'padlock-open' | 'padlock-locked' | 'center' - | 'bring-front' - | 'bring-back'; + | 'move-front' + | 'move-back' + | 'layer-arrow-up' + | 'layer-arrow-down'; export type IconComponentType = ({ className }: { className: string }) => JSX.Element; -- GitLab From 4772a0a546256b02df1898bc102dad8fb90af90d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 13:15:02 +0100 Subject: [PATCH 07/15] feat(layer-rects): implement adding rectangles --- .../EditOverlayModal.component.test.tsx | 7 + .../hooks/useEditOverlay.test.ts | 5 + ...eObjectEditFactoryModal.component.test.tsx | 1 + ...ImageObjectFactoryModal.component.test.tsx | 1 + .../LayerRectFactory.types.ts | 6 + .../LayerRectFactoryModal.component.test.tsx | 102 ++++++++++ .../LayerRectFactoryModal.component.tsx | 108 ++++++++++ .../LayerRectFactoryModal.styles.css | 12 ++ .../LayerRectForm.component.tsx | 31 +++ .../LayerTextFactoryModal.component.test.tsx | 1 + .../FunctionalArea/Modal/Modal.component.tsx | 6 + .../ModalLayout/ModalLayout.component.tsx | 12 +- .../LayerDrawerLayerContextMenu.component.tsx | 6 + .../LayerDrawerRectItem.component.tsx | 23 +++ .../LayersDrawerLayer.component.tsx | 6 + .../LayersDrawerLayerActions.component.tsx | 3 + ...sDrawerLayerContextMenuItems.component.tsx | 15 +- .../LayersDrawerObjectsList.component.tsx | 4 + .../useOlMapAdditionalLayers.ts | 31 +++ .../utils/shapes/layer/Layer.test.ts | 9 +- .../Map/MapViewer/utils/shapes/layer/Layer.ts | 68 ++++--- .../utils/shapes/layer/elements/LayerRect.ts | 189 ++++++++++++++++++ .../shapes/layer/utils/drawElementOnLayer.ts | 4 +- src/models/fixtures/layerRectFixture.ts | 9 + src/models/fixtures/layerRectsFixture.ts | 2 +- src/models/layerRectSchema.ts | 3 +- src/redux/apiPath.ts | 2 + src/redux/layers/layers.reducers.test.ts | 6 +- src/redux/layers/layers.reducers.ts | 18 +- src/redux/layers/layers.selectors.ts | 4 +- src/redux/layers/layers.slice.ts | 3 + src/redux/layers/layers.thunks.test.ts | 2 +- src/redux/layers/layers.thunks.ts | 35 +++- src/redux/layers/layers.types.ts | 2 +- .../mapEditTools/mapEditTools.constants.ts | 1 + src/redux/modal/modal.constants.ts | 1 + src/redux/modal/modal.mock.ts | 1 + src/redux/modal/modal.reducers.ts | 10 + src/redux/modal/modal.selector.ts | 5 + src/redux/modal/modal.slice.ts | 3 + src/redux/modal/modal.types.ts | 3 + src/shared/Icon/Icon.component.tsx | 2 + src/shared/Icon/Icons/RectangleIcon.tsx | 16 ++ src/types/iconTypes.ts | 3 +- src/types/modal.ts | 3 +- src/utils/convert/hexToRgbIntAlpha.test.ts | 4 +- src/utils/convert/hexToRgbIntAlpha.ts | 7 +- 47 files changed, 728 insertions(+), 67 deletions(-) create mode 100644 src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types.ts create mode 100644 src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx create mode 100644 src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx create mode 100644 src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.styles.css create mode 100644 src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component.tsx create mode 100644 src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx create mode 100644 src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts create mode 100644 src/models/fixtures/layerRectFixture.ts create mode 100644 src/shared/Icon/Icons/RectangleIcon.tsx diff --git a/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx b/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx index cd91fa65..12f95047 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx @@ -52,6 +52,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); @@ -73,6 +74,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); @@ -107,6 +109,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -146,6 +149,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -186,6 +190,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -234,6 +239,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -266,6 +272,7 @@ describe('EditOverlayModal - component', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts b/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts index a086bb3e..3ab251bf 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts +++ b/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts @@ -28,6 +28,7 @@ describe('useEditOverlay', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); @@ -68,6 +69,7 @@ describe('useEditOverlay', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); @@ -111,6 +113,7 @@ describe('useEditOverlay', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); @@ -150,6 +153,7 @@ describe('useEditOverlay', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); @@ -190,6 +194,7 @@ describe('useEditOverlay', () => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx index 29a26c8b..a6adc865 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx @@ -63,6 +63,7 @@ const renderComponent = ( height: 1, }, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx index 0d0de1fe..18e2172b 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx @@ -57,6 +57,7 @@ const renderComponent = (): { store: StoreType } => { height: 1, }, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types.ts b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types.ts new file mode 100644 index 00000000..bd0218dc --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types.ts @@ -0,0 +1,6 @@ +import { Color } from '@/types/models'; + +export type LayerRectFactoryForm = { + fillColor: Color; + borderColor: Color; +}; diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx new file mode 100644 index 00000000..d6dae5a2 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx @@ -0,0 +1,102 @@ +/* eslint-disable no-magic-numbers */ +import { render, screen, fireEvent } from '@testing-library/react'; +import { act } from 'react-dom/test-utils'; +import { StoreType } from '@/redux/store'; +import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore'; +import { INITIAL_STORE_STATE_MOCK } from '@/redux/root/root.fixtures'; +import { GLYPHS_STATE_INITIAL_MOCK } from '@/redux/glyphs/glyphs.mock'; +import { apiPath } from '@/redux/apiPath'; +import { HttpStatusCode } from 'axios'; +import { mockNetworkNewAPIResponse } from '@/utils/mockNetworkResponse'; +import { + LAYER_STATE_DEFAULT_DATA, + LAYERS_STATE_INITIAL_LAYER_MOCK, +} from '@/redux/layers/layers.mock'; +import { MODELS_DATA_MOCK_WITH_MAIN_MAP } from '@/redux/models/models.mock'; +import { overlayFixture } from '@/models/fixtures/overlaysFixture'; +import { showToast } from '@/utils/showToast'; +import { layerRectFixture } from '@/models/fixtures/layerRectFixture'; +import { LayerRectFactoryModal } from './LayerRectFactoryModal.component'; + +const mockedAxiosNewClient = mockNetworkNewAPIResponse(); + +const glyph = { id: 1, file: 23, filename: 'Glyph1.png' }; + +jest.mock('../../../../utils/showToast'); + +const renderComponent = (): { store: StoreType } => { + const { Wrapper, store } = getReduxWrapperWithStore({ + ...INITIAL_STORE_STATE_MOCK, + glyphs: { + ...GLYPHS_STATE_INITIAL_MOCK, + data: [glyph], + }, + layers: { + 0: { + ...LAYERS_STATE_INITIAL_LAYER_MOCK, + data: { + ...LAYER_STATE_DEFAULT_DATA, + activeLayers: [1], + drawLayer: 1, + }, + }, + }, + modal: { + isOpen: true, + modalTitle: overlayFixture.name, + modalName: 'layer-rect-factory', + editOverlayState: overlayFixture, + molArtState: {}, + overviewImagesState: {}, + errorReportState: {}, + layerFactoryState: { id: undefined }, + layerImageObjectFactoryState: undefined, + layerRectFactoryState: { + x: 1, + y: 1, + width: 1, + height: 1, + }, + layerTextFactoryState: undefined, + }, + models: { + ...MODELS_DATA_MOCK_WITH_MAIN_MAP, + }, + }); + + return { + store, + ...render( + <Wrapper> + <LayerRectFactoryModal /> + </Wrapper>, + ), + }; +}; + +describe('LayerRectFactoryModal - component', () => { + it('should render LayerRectFactoryModal component with initial state', () => { + renderComponent(); + + expect(screen.getByText('Fill color:')).toBeInTheDocument(); + expect(screen.getByText('Border color:')).toBeInTheDocument(); + }); + + it('should handle form submission correctly', async () => { + mockedAxiosNewClient + .onPost(apiPath.addLayerRect(0, 1)) + .reply(HttpStatusCode.Ok, layerRectFixture); + renderComponent(); + + const submitButton = screen.getByText(/Submit/i); + + await act(async () => { + fireEvent.click(submitButton); + }); + + expect(showToast).toHaveBeenCalledWith({ + message: 'A new rect has been successfully added', + type: 'success', + }); + }); +}); diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx new file mode 100644 index 00000000..c374bfc5 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx @@ -0,0 +1,108 @@ +/* eslint-disable no-magic-numbers */ +import React, { useState } from 'react'; +import './LayerRectFactoryModal.styles.css'; +import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { Button } from '@/shared/Button'; +import { BLACK_COLOR } from '@/components/Map/MapViewer/MapViewer.constants'; +import { LayerRectForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component'; +import { LayerRectFactoryForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { + layersDrawLayerSelector, + maxObjectZIndexForLayerSelector, +} from '@/redux/layers/layers.selectors'; +import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { Color } from '@/types/models'; +import { layerRectFactoryStateSelector } from '@/redux/modal/modal.selector'; +import { addLayerRect } from '@/redux/layers/layers.thunks'; +import { showToast } from '@/utils/showToast'; +import { layerAddRect } from '@/redux/layers/layers.slice'; +import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; +import { closeModal } from '@/redux/modal/modal.slice'; +import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.slice'; +import { SerializedError } from '@reduxjs/toolkit'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { useMapInstance } from '@/utils/context/mapInstanceContext'; + +export const LayerRectFactoryModal: React.FC = () => { + const drawLayer = useAppSelector(layersDrawLayerSelector); + const currentModelId = useAppSelector(currentModelIdSelector); + const layerRectFactoryState = useAppSelector(layerRectFactoryStateSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); + const dispatch = useAppDispatch(); + const { mapInstance } = useMapInstance(); + + const [isSending, setIsSending] = useState<boolean>(false); + const [data, setData] = useState<LayerRectFactoryForm>({ + fillColor: BLACK_COLOR, + borderColor: BLACK_COLOR, + }); + + const handleSubmit = async (): Promise<void> => { + if (!layerRectFactoryState || !drawLayer) { + return; + } + try { + const layerRect = await dispatch( + addLayerRect({ + modelId: currentModelId, + layerId: drawLayer, + boundingBox: layerRectFactoryState, + rectData: data, + z: maxZIndex + 1, + }), + ).unwrap(); + if (!layerRect) { + showToast({ + type: 'error', + message: 'Error while adding the rect', + }); + return; + } + dispatch(layerAddRect({ modelId: currentModelId, layerId: drawLayer, layerRect })); + drawElementOnLayer({ + mapInstance, + activeLayer: drawLayer, + object: layerRect, + drawFunctionKey: 'drawRect', + }); + showToast({ + type: 'success', + message: 'A new rect has been successfully added', + }); + dispatch(closeModal()); + dispatch(mapEditToolsSetActiveAction(null)); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while adding a new rect', + }); + } finally { + setIsSending(false); + } + }; + + const changeValues = (value: string | number | Color, key: string): void => { + setData(prevData => ({ ...prevData, [key]: value })); + }; + + return ( + <div className="relative flex w-[400px] flex-col gap-4 rounded-b-lg border border-t-[#E1E0E6] bg-white p-[24px]"> + {isSending && ( + <div className="c-layer-rect-factory-modal-loader"> + <LoadingIndicator width={44} height={44} /> + </div> + )} + <LayerRectForm onChange={changeValues} data={data} /> + <hr /> + <Button + type="button" + onClick={handleSubmit} + className="justify-center self-end justify-self-end text-base font-medium" + > + Submit + </Button> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.styles.css b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.styles.css new file mode 100644 index 00000000..4e585a0e --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.styles.css @@ -0,0 +1,12 @@ +.c-layer-rect-factory-modal-loader { + width: 100%; + height: 100%; + margin-left: -24px; + margin-top: -24px; + background: #f9f9f980; + z-index: 1; + position: absolute; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component.tsx new file mode 100644 index 00000000..2bc34fb0 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component.tsx @@ -0,0 +1,31 @@ +/* eslint-disable no-magic-numbers */ +import { ColorTilePicker } from '@/shared/ColorPicker/ColorTilePicker.component'; +import hexToRgbIntAlpha from '@/utils/convert/hexToRgbIntAlpha'; +import { Color } from '@/types/models'; +import { LayerRectFactoryForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types'; + +type LayerRectFormProps = { + data: LayerRectFactoryForm; + onChange: (value: number | string | Color, key: string) => void; +}; + +export const LayerRectForm = ({ data, onChange }: LayerRectFormProps): React.JSX.Element => { + return ( + <div className="grid grid-cols-2 gap-4"> + <div> + <span>Fill color:</span> + <ColorTilePicker + initialColor={data.fillColor} + colorChange={color => onChange(hexToRgbIntAlpha(color), 'fillColor')} + /> + </div> + <div> + <span>Border color:</span> + <ColorTilePicker + initialColor={data.borderColor} + colorChange={color => onChange(hexToRgbIntAlpha(color), 'borderColor')} + /> + </div> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx index c739fb38..71f607e3 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx @@ -56,6 +56,7 @@ const renderComponent = (): { store: StoreType } => { errorReportState: {}, layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, + layerRectFactoryState: undefined, layerTextFactoryState: { x: 1, y: 1, diff --git a/src/components/FunctionalArea/Modal/Modal.component.tsx b/src/components/FunctionalArea/Modal/Modal.component.tsx index bbd8c7d5..c64517dc 100644 --- a/src/components/FunctionalArea/Modal/Modal.component.tsx +++ b/src/components/FunctionalArea/Modal/Modal.component.tsx @@ -11,6 +11,7 @@ import { } from '@/components/FunctionalArea/Modal/LayerImageObjectModal'; import { LayerTextFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component'; import { LayerTextEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component'; +import { LayerRectFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component'; import { EditOverlayModal } from './EditOverlayModal'; import { LoginModal } from './LoginModal'; import { ErrorReportModal } from './ErrorReportModal'; @@ -111,6 +112,11 @@ export const Modal = (): React.ReactNode => { <LayerTextEditFactoryModal /> </ModalLayout> )} + {isOpen && modalName === 'layer-rect-factory' && ( + <ModalLayout> + <LayerRectFactoryModal /> + </ModalLayout> + )} </> ); }; diff --git a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx index e9fd515a..357f7cf1 100644 --- a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx +++ b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx @@ -23,10 +23,10 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { className={twMerge('absolute left-0 top-0 z-20 h-full w-full bg-cetacean-blue/[.48]')} role={MODAL_ROLE} > - <div className="flex h-full w-full items-center justify-center"> + <div className="relative flex h-full w-full items-center justify-center"> <div className={twMerge( - 'flex h-5/6 w-10/12 flex-col overflow-hidden rounded-lg', + 'flex h-5/6 w-10/12 flex-col overflow-hidden rounded-lg', modalName === 'login' && 'h-auto w-[400px]', modalName === 'access-denied' && 'h-auto w-[400px]', modalName === 'select-project' && 'h-auto w-[400px]', @@ -34,6 +34,7 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { modalName === 'add-comment' && 'h-auto w-[400px]', modalName === 'error-report' && 'h-auto w-[800px]', modalName === 'layer-factory' && 'h-auto w-[400px]', + modalName === 'layer-rect-factory' && 'relative h-auto w-[400px] overflow-visible', ['layer-text-factory', 'layer-text-edit-factory'].includes(modalName) && 'h-auto w-[900px]', ['layer-image-object-factory', 'layer-image-object-edit-factory'].includes(modalName) && @@ -41,7 +42,12 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { ['edit-overlay', 'logged-in-menu'].includes(modalName) && 'h-auto w-[432px]', )} > - <div className="flex items-center justify-between bg-white p-[24px] text-xl"> + <div + className={twMerge( + 'flex items-center justify-between bg-white p-[24px] text-xl', + modalName === 'layer-rect-factory' && 'rounded-t-lg', + )} + > {(modalName === 'error-report' || modalName === 'access-denied') && ( <div className="font-bold text-red-500"> <Icon name="info" className={twMerge('mr-4 fill-red-500')} /> diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx index 4906b2bd..10d57012 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx @@ -7,6 +7,7 @@ type LayerDrawerLayerContextMenuProps = { editLayer: () => void; addImage: () => void; addText: () => void; + addRect: () => void; }; export const LayerDrawerLayerContextMenu = ({ @@ -14,6 +15,7 @@ export const LayerDrawerLayerContextMenu = ({ editLayer, addImage, addText, + addRect, }: LayerDrawerLayerContextMenuProps): JSX.Element => { const [menuVisible, setMenuVisible] = useState(false); const menuRef = useRef<HTMLUListElement>(null); @@ -66,6 +68,10 @@ export const LayerDrawerLayerContextMenu = ({ setMenuVisible(false); addText(); }} + addRect={() => { + setMenuVisible(false); + addRect(); + }} /> )} </div> diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx new file mode 100644 index 00000000..a8f0e9bc --- /dev/null +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx @@ -0,0 +1,23 @@ +import React, { JSX } from 'react'; +import { LayerRect } from '@/types/models'; +import { Icon } from '@/shared/Icon'; + +interface LayersDrawerRectItemProps { + layerRect: LayerRect; +} + +export const LayersDrawerRectItem = ({ + layerRect, +}: LayersDrawerRectItemProps): JSX.Element | null => { + return ( + <div + className="flex min-h-[24px] items-center justify-between gap-2" + id={`layer-rect-item-${layerRect.id}`} + > + <div className="flex gap-2"> + <Icon name="rectangle" className="shrink-0" /> + <span className="truncate">rectangle - {layerRect.id}</span> + </div> + </div> + ); +}; diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index 8b0f9b01..03aa4417 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -65,6 +65,11 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_TEXT)); }; + const addRect = (): void => { + dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); + dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_RECT)); + }; + const rejectRemove = (): void => { setIsModalOpen(false); }; @@ -182,6 +187,7 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX removeLayer={onRemoveLayer} addImage={addImage} addText={addText} + addRect={addRect} moveToFront={moveToFront} moveToBack={moveToBack} moveAboveDiagram={moveAboveDiagram} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx index 81435100..dd015fd6 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx @@ -15,6 +15,7 @@ type LayersDrawerLayerActionsProps = { toggleActiveLayer: (value: boolean) => void; addImage: () => void; addText: () => void; + addRect: () => void; moveToFront: () => void; moveToBack: () => void; moveAboveDiagram: () => void; @@ -31,6 +32,7 @@ export const LayersDrawerLayerActions = ({ toggleActiveLayer, addImage, addText, + addRect, moveToFront, moveToBack, moveAboveDiagram, @@ -87,6 +89,7 @@ export const LayersDrawerLayerActions = ({ editLayer={editLayer} addImage={addImage} addText={addText} + addRect={addRect} /> </> )} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx index 1017e9c8..c01f2eb7 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx @@ -6,6 +6,7 @@ type LayerDrawerLayerContextMenuProps = { editLayer: () => void; addImage: () => void; addText: () => void; + addRect: () => void; }; export const LayerDrawerLayerContextMenuItems = forwardRef< @@ -13,7 +14,7 @@ export const LayerDrawerLayerContextMenuItems = forwardRef< LayerDrawerLayerContextMenuProps >( ( - { removeLayer, editLayer, addImage, addText }: LayerDrawerLayerContextMenuProps, + { removeLayer, editLayer, addImage, addText, addRect }: LayerDrawerLayerContextMenuProps, ref, ): JSX.Element => { const handleKeyPress = (): void => {}; @@ -21,7 +22,7 @@ export const LayerDrawerLayerContextMenuItems = forwardRef< return ( <ul ref={ref} - className="absolute right-[24px] top-[-14px] z-[1] mt-2 w-[11rem] rounded border bg-white p-2 shadow-md" + className="absolute right-[24px] top-[-14px] z-[1] mt-2 w-[12rem] rounded border bg-white p-2 shadow-md" > <li className="flex min-h-[24px] cursor-pointer gap-3 px-4 py-1 hover:bg-gray-200" @@ -43,6 +44,16 @@ export const LayerDrawerLayerContextMenuItems = forwardRef< <Icon name="text" /> <span>Add text</span> </li> + <li + className="flex min-h-[24px] cursor-pointer gap-3 px-4 py-1 hover:bg-gray-200" + tabIndex={0} + onClick={addRect} + onKeyDown={handleKeyPress} + role="menuitem" + > + <Icon name="rectangle" /> + <span>Add rectangle</span> + </li> <li className="flex min-h-[24px] cursor-pointer gap-3 px-4 py-1 hover:bg-gray-200" tabIndex={0} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 9ec19fe4..330c7bbe 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -38,6 +38,7 @@ import { openLayerImageObjectEditFactoryModal, openLayerTextEditFactoryModal, } from '@/redux/modal/modal.slice'; +import { LayersDrawerRectItem } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component'; interface LayersDrawerObjectsListProps { layerId: number; @@ -279,6 +280,9 @@ export const LayersDrawerObjectsList = ({ isLayerActive={isLayerActive} /> ))} + {Object.values(layer.rects).map(layerRect => ( + <LayersDrawerRectItem layerRect={layerRect} key={layerRect.id} /> + ))} </div> ); }; diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 6d41944f..fe1497fe 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -31,6 +31,7 @@ import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; import getDrawBoundingBoxInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawBoundingBoxInteraction'; import { openLayerImageObjectFactoryModal, + openLayerRectFactoryModal, openLayerTextFactoryModal, } from '@/redux/modal/modal.slice'; import { Extent } from 'ol/extent'; @@ -113,6 +114,18 @@ export const useOlMapAdditionalLayers = ( ); }, [mapSize, dispatch, restrictionExtent]); + const drawRectInteraction = useMemo(() => { + if (!mapSize || !dispatch) { + return null; + } + return getDrawBoundingBoxInteraction( + mapSize, + dispatch, + restrictionExtent, + openLayerRectFactoryModal, + ); + }, [mapSize, dispatch, restrictionExtent]); + useEffect(() => { if (!currentModelId) { return; @@ -320,5 +333,23 @@ export const useOlMapAdditionalLayers = ( hasPrivilegeToWriteProject, ]); + useEffect(() => { + if (!drawRectInteraction || !hasPrivilegeToWriteProject) { + return; + } + mapInstance?.removeInteraction(drawRectInteraction); + if (!drawLayer || activeAction !== MAP_EDIT_ACTIONS.ADD_RECT) { + return; + } + mapInstance?.addInteraction(drawRectInteraction); + }, [ + activeAction, + drawLayer, + currentModelId, + drawRectInteraction, + mapInstance, + hasPrivilegeToWriteProject, + ]); + return vectorLayers; }; diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts index 10349c6d..17e9a679 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts @@ -55,21 +55,20 @@ describe('Layer', () => { color: BLACK_COLOR, }, }, - rects: [ - { + rects: { + 1: { id: 1, x: 10, y: 10, z: 3, width: 100, height: 100, - size: 12312, - elementId: '341', + layer: 1, lineWidth: 2, borderColor: BLACK_COLOR, fillColor: WHITE_COLOR, }, - ], + }, ovals: [ { id: 1, diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 14d5f8b5..93456a0d 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -3,7 +3,7 @@ import { LayerImage as LayerImageModel, LayerLine, LayerOval, - LayerRect, + LayerRect as LayerRectModel, LayerText as LayerTextModel, } from '@/types/models'; import { MapInstance } from '@/types/map'; @@ -32,11 +32,12 @@ import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; import LayerText from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerText'; import LayerImage from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage'; +import LayerRect from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect'; export interface LayerProps { zIndex: number; texts: { [key: string]: LayerTextModel }; - rects: Array<LayerRect>; + rects: { [key: string]: LayerRectModel }; ovals: Array<LayerOval>; lines: Array<LayerLine>; images: { [key: string]: LayerImageModel }; @@ -54,7 +55,7 @@ export default class Layer { texts: { [key: string]: LayerTextModel }; - rects: Array<LayerRect>; + rects: { [key: string]: LayerRectModel }; ovals: Array<LayerOval>; @@ -133,17 +134,13 @@ export default class Layer { this.vectorLayer.set('textsFeatures', textsFeatures); this.vectorLayer.set('drawImage', this.drawImage.bind(this)); this.vectorLayer.set('drawText', this.drawText.bind(this)); + this.vectorLayer.set('drawRect', this.drawRect.bind(this)); } private getTextsFeatures = (): Array<Feature<Polygon>> => { return Object.values(this.texts).map(text => this.getTextFeature(text)); }; - private drawText(text: LayerTextModel): void { - const textFeature = this.getTextFeature(text); - this.vectorSource.addFeature(textFeature); - } - private getTextFeature(text: LayerTextModel): Feature<Polygon> { const textObject = new LayerText({ elementId: text.id, @@ -167,34 +164,41 @@ export default class Layer { return textObject.feature; } + private drawText(text: LayerTextModel): void { + const textFeature = this.getTextFeature(text); + this.vectorSource.addFeature(textFeature); + } + private getRectsFeatures = (): Array<Feature<Polygon>> => { - return this.rects.map(rect => { - const polygon = new Polygon([ - [ - this.pointToProjection({ x: rect.x, y: rect.y }), - this.pointToProjection({ x: rect.x + rect.width, y: rect.y }), - this.pointToProjection({ x: rect.x + rect.width, y: rect.y + rect.height }), - this.pointToProjection({ x: rect.x, y: rect.y + rect.height }), - ], - ]); - const polygonStyle = getStyle({ - geometry: polygon, - borderColor: rect.borderColor, - fillColor: rect.fillColor, - lineWidth: rect.lineWidth, - zIndex: rect.z, - }); - const rectFeature = new Feature<Polygon>({ - geometry: polygon, - style: polygonStyle, - lineWidth: rect.lineWidth, - elementType: LAYER_ELEMENT_TYPES.RECT, - }); - rectFeature.setStyle(this.getStyle.bind(this)); - return rectFeature; + return Object.values(this.rects).map(rect => { + return this.getRectFeature(rect); + }); + }; + + private getRectFeature = (rect: LayerRectModel): Feature<Polygon> => { + const rectObject = new LayerRect({ + elementId: rect.id, + x: rect.x, + y: rect.y, + width: rect.width, + height: rect.height, + layer: rect.layer, + zIndex: rect.z, + fillColor: rect.fillColor, + borderColor: rect.borderColor, + lineWidth: rect.lineWidth, + pointToProjection: this.pointToProjection, + mapInstance: this.mapInstance, + mapSize: this.mapSize, }); + return rectObject.feature; }; + private drawRect(rect: LayerRectModel): void { + const rectFeature = this.getRectFeature(rect); + this.vectorSource.addFeature(rectFeature); + } + private getOvalsFeatures = (): Array<Feature<Polygon>> => { return this.ovals.map(oval => { const coords = getEllipseCoords({ diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts new file mode 100644 index 00000000..844ec355 --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts @@ -0,0 +1,189 @@ +/* eslint-disable no-magic-numbers */ +import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection'; +import Style from 'ol/style/Style'; +import { Feature } from 'ol'; +import { FeatureLike } from 'ol/Feature'; +import { MapInstance } from '@/types/map'; +import { Color, LayerRect as LayerRectModel } from '@/types/models'; +import { rgbToHex } from '@/components/Map/MapViewer/utils/shapes/style/rgbToHex'; +import Polygon from 'ol/geom/Polygon'; +import getStroke from '@/components/Map/MapViewer/utils/shapes/style/getStroke'; +import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; +import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle'; +import { Stroke } from 'ol/style'; +import { MapSize } from '@/redux/map/map.types'; +import { Coordinate } from 'ol/coordinate'; + +export interface LayerRectProps { + elementId: number; + x: number; + y: number; + width: number; + height: number; + layer: number; + zIndex: number; + fillColor: Color; + borderColor: Color; + lineWidth: number; + pointToProjection: UsePointToProjectionResult; + mapInstance: MapInstance; + mapSize: MapSize; +} + +export default class LayerRect { + elementId: number; + + x: number; + + y: number; + + width: number; + + height: number; + + layer: number; + + zIndex: number; + + fillColor: Color; + + borderColor: Color; + + lineWidth: number; + + style: Style = new Style(); + + polygon: Polygon = new Polygon([]); + + strokeStyle: Stroke = new Stroke(); + + feature: Feature<Polygon>; + + mapSize: MapSize; + + pointToProjection: UsePointToProjectionResult; + + minResolution: number; + + constructor({ + elementId, + x, + y, + width, + height, + layer, + zIndex, + fillColor, + borderColor, + lineWidth, + pointToProjection, + mapInstance, + mapSize, + }: LayerRectProps) { + this.elementId = elementId; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.layer = layer; + this.zIndex = zIndex; + this.fillColor = fillColor; + this.borderColor = borderColor; + this.lineWidth = lineWidth; + this.pointToProjection = pointToProjection; + this.mapSize = mapSize; + + const maxZoom = mapInstance?.getView().get('originalMaxZoom'); + this.minResolution = mapInstance?.getView().getResolutionForZoom(maxZoom) || 1; + + this.drawPolygon(); + + this.setStyles(); + + this.feature = new Feature({ + geometry: this.polygon, + layer, + }); + this.feature.setId(this.elementId); + this.feature.set('getObjectData', this.getData.bind(this)); + this.feature.set('setCoordinates', this.setCoordinates.bind(this)); + this.feature.set('refreshPolygon', this.refreshPolygon.bind(this)); + this.feature.set('updateElement', this.updateElement.bind(this)); + this.feature.setStyle(this.getStyle.bind(this)); + } + + private getData(): LayerRectModel { + return { + id: this.elementId, + x: this.x, + y: this.y, + z: this.zIndex, + width: this.width, + height: this.height, + layer: this.layer, + fillColor: this.fillColor, + borderColor: this.borderColor, + lineWidth: this.lineWidth, + }; + } + + private drawPolygon(): void { + this.polygon = new Polygon([ + [ + this.pointToProjection({ x: this.x, y: this.y }), + this.pointToProjection({ x: this.x + this.width, y: this.y }), + this.pointToProjection({ x: this.x + this.width, y: this.y + this.height }), + this.pointToProjection({ x: this.x, y: this.y + this.height }), + this.pointToProjection({ x: this.x, y: this.y }), + ], + ]); + } + + private refreshPolygon(): void { + this.drawPolygon(); + this.feature.setGeometry(this.polygon); + this.feature.changed(); + } + + private setStyles(): void { + this.strokeStyle = getStroke({ + color: rgbToHex(this.borderColor), + width: this.lineWidth, + }); + this.style = getStyle({ + geometry: this.polygon, + borderColor: this.borderColor, + fillColor: this.fillColor, + lineWidth: this.lineWidth, + zIndex: this.zIndex, + }); + this.style.setGeometry(this.polygon); + } + + private updateElement(layerRect: LayerRectModel): void { + this.elementId = layerRect.id; + this.x = layerRect.x; + this.y = layerRect.y; + this.width = layerRect.width; + this.height = layerRect.height; + this.zIndex = layerRect.z; + this.fillColor = layerRect.fillColor; + this.borderColor = layerRect.borderColor; + + this.refreshPolygon(); + this.setStyles(); + this.feature.changed(); + } + + private setCoordinates(coords: Coordinate[][]): void { + const geometry = this.style.getGeometry(); + if (geometry && geometry instanceof Polygon) { + geometry.setCoordinates(coords); + } + } + + protected getStyle(feature: FeatureLike, resolution: number): Style | Array<Style> | void { + const scale = this.minResolution / resolution; + return getScaledElementStyle(this.style, this.strokeStyle, scale); + } +} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts index e80c3fec..7c6338f0 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts @@ -1,4 +1,4 @@ -import { LayerImage, LayerText } from '@/types/models'; +import { LayerImage, LayerRect, LayerText } from '@/types/models'; import { MapInstance } from '@/types/map'; export default function drawElementOnLayer({ @@ -9,7 +9,7 @@ export default function drawElementOnLayer({ }: { mapInstance: MapInstance; activeLayer: number; - object: LayerImage | LayerText; + object: LayerImage | LayerText | LayerRect; drawFunctionKey: string; }): void { mapInstance?.getAllLayers().forEach(layer => { diff --git a/src/models/fixtures/layerRectFixture.ts b/src/models/fixtures/layerRectFixture.ts new file mode 100644 index 00000000..ff5b27d9 --- /dev/null +++ b/src/models/fixtures/layerRectFixture.ts @@ -0,0 +1,9 @@ +import { ZOD_SEED } from '@/constants'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { createFixture } from 'zod-fixture'; +import { layerRectSchema } from '@/models/layerRectSchema'; + +export const layerRectFixture = createFixture(layerRectSchema, { + seed: ZOD_SEED, + array: { min: 1, max: 1 }, +}); diff --git a/src/models/fixtures/layerRectsFixture.ts b/src/models/fixtures/layerRectsFixture.ts index 98469f8b..080cad3b 100644 --- a/src/models/fixtures/layerRectsFixture.ts +++ b/src/models/fixtures/layerRectsFixture.ts @@ -6,5 +6,5 @@ import { layerRectSchema } from '@/models/layerRectSchema'; export const layerRectsFixture = createFixture(pageableSchema(layerRectSchema), { seed: ZOD_SEED, - array: { min: 3, max: 3 }, + array: { min: 1, max: 1 }, }); diff --git a/src/models/layerRectSchema.ts b/src/models/layerRectSchema.ts index 440c96d4..4a299641 100644 --- a/src/models/layerRectSchema.ts +++ b/src/models/layerRectSchema.ts @@ -8,9 +8,8 @@ export const layerRectSchema = z.object({ z: z.number(), width: z.number(), height: z.number(), + layer: z.number(), lineWidth: z.number(), - size: z.number(), fillColor: colorSchema, borderColor: colorSchema, - elementId: z.string(), }); diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts index 18186d6f..d52b7f27 100644 --- a/src/redux/apiPath.ts +++ b/src/redux/apiPath.ts @@ -41,6 +41,8 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/`, getLayerRects: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/`, + addLayerRect: (modelId: number, layerId: number): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/`, getLayerOvals: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/`, getLayerLines: (modelId: number, layerId: number): string => diff --git a/src/redux/layers/layers.reducers.test.ts b/src/redux/layers/layers.reducers.test.ts index d93fb4f8..04b20859 100644 --- a/src/redux/layers/layers.reducers.test.ts +++ b/src/redux/layers/layers.reducers.test.ts @@ -46,7 +46,7 @@ const layersState: LayersState = { { details: layerFixture, texts: {}, - rects: [], + rects: {}, ovals: [], lines: [], images: {}, @@ -102,7 +102,7 @@ describe('layers reducer', () => { { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, - rects: layerRectsFixture.content, + rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, ovals: layerOvalsFixture.content, lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, @@ -168,7 +168,7 @@ describe('layers reducer', () => { { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, - rects: layerRectsFixture.content, + rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, ovals: layerOvalsFixture.content, lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index 238a3441..9d1a42d6 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -7,7 +7,7 @@ import { LAYERS_STATE_INITIAL_LAYER_MOCK, } from '@/redux/layers/layers.mock'; import { DEFAULT_ERROR } from '@/constants/errors'; -import { LayerImage, LayerText } from '@/types/models'; +import { LayerImage, LayerRect, LayerText } from '@/types/models'; export const getLayersForModelReducer = (builder: ActionReducerMapBuilder<LayersState>): void => { builder.addCase(getLayersForModel.pending, (state, action) => { @@ -230,3 +230,19 @@ export const layerDeleteTextReducer = ( } delete layer.texts[textId]; }; + +export const layerAddRectReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; layerRect: LayerRect }>, +): void => { + const { modelId, layerId, layerRect } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + const layer = data.layers.find(layerState => layerState.details.id === layerId); + if (!layer) { + return; + } + layer.rects[layerRect.id] = layerRect; +}; diff --git a/src/redux/layers/layers.selectors.ts b/src/redux/layers/layers.selectors.ts index 8123fa00..65493d94 100644 --- a/src/redux/layers/layers.selectors.ts +++ b/src/redux/layers/layers.selectors.ts @@ -120,7 +120,7 @@ export const maxObjectZIndexForLayerSelector = createSelector( items.length > 0 ? Math.max(...items.map(item => item.z || 0)) : 0; const textsMaxZ = getMaxZFromItems(Object.values(foundLayer.texts)); - const rectsMaxZ = getMaxZFromItems(foundLayer.rects); + const rectsMaxZ = getMaxZFromItems(Object.values(foundLayer.rects)); const ovalsMaxZ = getMaxZFromItems(foundLayer.ovals); const linesMaxZ = getMaxZFromItems(foundLayer.lines); const imagesMaxZ = getMaxZFromItems(Object.values(foundLayer.images)); @@ -143,7 +143,7 @@ export const minObjectZIndexForLayerSelector = createSelector( items.length > 0 ? Math.min(...items.map(item => item.z || 0)) : 0; const textsMinZ = getMinZFromItems(Object.values(foundLayer.texts)); - const rectsMinZ = getMinZFromItems(foundLayer.rects); + const rectsMinZ = getMinZFromItems(Object.values(foundLayer.rects)); const ovalsMinZ = getMinZFromItems(foundLayer.ovals); const linesMinZ = getMinZFromItems(foundLayer.lines); const imagesMinZ = getMinZFromItems(Object.values(foundLayer.images)); diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index 871012fc..c66fa629 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -14,6 +14,7 @@ import { setLayerToActiveReducer, layerDeleteTextReducer, layerUpdateTextReducer, + layerAddRectReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ @@ -29,6 +30,7 @@ export const layersSlice = createSlice({ layerAddText: layerAddTextReducer, layerUpdateText: layerUpdateTextReducer, layerDeleteText: layerDeleteTextReducer, + layerAddRect: layerAddRectReducer, setDrawLayer: setDrawLayerReducer, }, extraReducers: builder => { @@ -48,6 +50,7 @@ export const { layerAddText, layerUpdateText, layerDeleteText, + layerAddRect, setDrawLayer, } = layersSlice.actions; diff --git a/src/redux/layers/layers.thunks.test.ts b/src/redux/layers/layers.thunks.test.ts index 09028272..2feb78e4 100644 --- a/src/redux/layers/layers.thunks.test.ts +++ b/src/redux/layers/layers.thunks.test.ts @@ -68,7 +68,7 @@ describe('layers thunks', () => { { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, - rects: layerRectsFixture.content, + rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, ovals: layerOvalsFixture.content, lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index bda72fce..0db4a364 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -1,7 +1,7 @@ /* eslint-disable no-magic-numbers */ import { z as zod } from 'zod'; import { apiPath } from '@/redux/apiPath'; -import { Color, Layer, LayerImage, Layers, LayerText } from '@/types/models'; +import { Color, Layer, LayerImage, LayerRect, Layers, LayerText } from '@/types/models'; import { validateDataUsingZodSchema } from '@/utils/validateDataUsingZodSchema'; import { createAsyncThunk } from '@reduxjs/toolkit'; import { ThunkConfig } from '@/types/store'; @@ -27,6 +27,7 @@ import { HorizontalAlign, VerticalAlign, } from '@/components/Map/MapViewer/MapViewer.types'; +import { LayerRectFactoryForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types'; export const getLayer = createAsyncThunk< Layer | null, @@ -68,7 +69,7 @@ export const getLayersForModel = createAsyncThunk< return { details: layer, texts: arrayToKeyValue(textsResponse.data.content as Array<LayerText>, 'id'), - rects: rectsResponse.data.content, + rects: arrayToKeyValue(rectsResponse.data.content as Array<LayerRect>, 'id'), ovals: ovalsResponse.data.content, lines: linesResponse.data.content, images: arrayToKeyValue(imagesResponse.data.content as Array<LayerImage>, 'id'), @@ -78,7 +79,7 @@ export const getLayersForModel = createAsyncThunk< layers = layers.filter(layer => { return ( zod.array(layerTextSchema).safeParse(Object.values(layer.texts)).success && - zod.array(layerRectSchema).safeParse(layer.rects).success && + zod.array(layerRectSchema).safeParse(Object.values(layer.rects)).success && zod.array(layerOvalSchema).safeParse(layer.ovals).success && zod.array(layerLineSchema).safeParse(layer.lines).success && zod.array(layerImageSchema).safeParse(Object.values(layer.images)).success @@ -391,3 +392,31 @@ export const updateLayerText = createAsyncThunk< } }, ); + +export const addLayerRect = createAsyncThunk< + LayerRect | null, + { + modelId: number; + layerId: number; + z: number; + boundingBox: BoundingBox; + rectData: LayerRectFactoryForm; + }, + ThunkConfig +>('layers/addLayerRect', async ({ modelId, layerId, z, boundingBox, rectData }) => { + try { + const { data } = await axiosInstanceNewAPI.post<LayerRect>( + apiPath.addLayerRect(modelId, layerId), + { + ...boundingBox, + ...rectData, + z, + }, + ); + const isDataValid = validateDataUsingZodSchema(data, layerRectSchema); + + return isDataValid ? data : null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); diff --git a/src/redux/layers/layers.types.ts b/src/redux/layers/layers.types.ts index 05b4636e..26547939 100644 --- a/src/redux/layers/layers.types.ts +++ b/src/redux/layers/layers.types.ts @@ -21,7 +21,7 @@ export interface LayerUpdateInterface { export type LayerState = { details: Layer; texts: { [key: string]: LayerText }; - rects: LayerRect[]; + rects: { [key: string]: LayerRect }; ovals: LayerOval[]; lines: LayerLine[]; images: { [key: string]: LayerImage }; diff --git a/src/redux/mapEditTools/mapEditTools.constants.ts b/src/redux/mapEditTools/mapEditTools.constants.ts index c3b9c826..2a0a9512 100644 --- a/src/redux/mapEditTools/mapEditTools.constants.ts +++ b/src/redux/mapEditTools/mapEditTools.constants.ts @@ -1,5 +1,6 @@ export const MAP_EDIT_ACTIONS = { DRAW_IMAGE: 'DRAW_IMAGE', ADD_TEXT: 'ADD_TEXT', + ADD_RECT: 'ADD_RECT', TRANSFORM_IMAGE: 'TRANSFORM_IMAGE', } as const; diff --git a/src/redux/modal/modal.constants.ts b/src/redux/modal/modal.constants.ts index f858a91b..6d83ad0b 100644 --- a/src/redux/modal/modal.constants.ts +++ b/src/redux/modal/modal.constants.ts @@ -16,4 +16,5 @@ export const MODAL_INITIAL_STATE: ModalState = { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }; diff --git a/src/redux/modal/modal.mock.ts b/src/redux/modal/modal.mock.ts index 85f6e5bd..9f4076e2 100644 --- a/src/redux/modal/modal.mock.ts +++ b/src/redux/modal/modal.mock.ts @@ -16,4 +16,5 @@ export const MODAL_INITIAL_STATE_MOCK: ModalState = { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, + layerRectFactoryState: undefined, }; diff --git a/src/redux/modal/modal.reducers.ts b/src/redux/modal/modal.reducers.ts index 923d2858..e95b3e1b 100644 --- a/src/redux/modal/modal.reducers.ts +++ b/src/redux/modal/modal.reducers.ts @@ -171,3 +171,13 @@ export const openLayerTextEditFactoryModalReducer = (state: ModalState): void => state.modalName = 'layer-text-edit-factory'; state.modalTitle = 'Edit text'; }; + +export const openLayerRectFactoryModalReducer = ( + state: ModalState, + action: PayloadAction<BoundingBox>, +): void => { + state.layerRectFactoryState = action.payload; + state.modalName = 'layer-rect-factory'; + state.modalTitle = 'Add rectangle'; + state.isOpen = true; +}; diff --git a/src/redux/modal/modal.selector.ts b/src/redux/modal/modal.selector.ts index 4f5c8fb0..35b4fdbe 100644 --- a/src/redux/modal/modal.selector.ts +++ b/src/redux/modal/modal.selector.ts @@ -40,3 +40,8 @@ export const layerTextFactoryStateSelector = createSelector( modalSelector, modal => modal.layerTextFactoryState, ); + +export const layerRectFactoryStateSelector = createSelector( + modalSelector, + modal => modal.layerRectFactoryState, +); diff --git a/src/redux/modal/modal.slice.ts b/src/redux/modal/modal.slice.ts index ed74baec..7d6d21e2 100644 --- a/src/redux/modal/modal.slice.ts +++ b/src/redux/modal/modal.slice.ts @@ -21,6 +21,7 @@ import { openLayerImageObjectEditFactoryModalReducer, openLayerTextFactoryModalReducer, openLayerTextEditFactoryModalReducer, + openLayerRectFactoryModalReducer, } from './modal.reducers'; const modalSlice = createSlice({ @@ -47,6 +48,7 @@ const modalSlice = createSlice({ openLayerImageObjectEditFactoryModal: openLayerImageObjectEditFactoryModalReducer, openLayerTextFactoryModal: openLayerTextFactoryModalReducer, openLayerTextEditFactoryModal: openLayerTextEditFactoryModalReducer, + openLayerRectFactoryModal: openLayerRectFactoryModalReducer, }, }); @@ -71,6 +73,7 @@ export const { openLayerImageObjectEditFactoryModal, openLayerTextFactoryModal, openLayerTextEditFactoryModal, + openLayerRectFactoryModal, } = modalSlice.actions; export default modalSlice.reducer; diff --git a/src/redux/modal/modal.types.ts b/src/redux/modal/modal.types.ts index 20f7a998..57ff24ee 100644 --- a/src/redux/modal/modal.types.ts +++ b/src/redux/modal/modal.types.ts @@ -26,6 +26,8 @@ export type LayerImageObjectFactoryState = BoundingBox | undefined; export type LayerTextFactoryState = BoundingBox | undefined; +export type LayerRectFactoryState = BoundingBox | undefined; + export interface ModalState { isOpen: boolean; modalName: ModalName; @@ -37,6 +39,7 @@ export interface ModalState { layerFactoryState: LayerFactoryState; layerImageObjectFactoryState: LayerImageObjectFactoryState; layerTextFactoryState: LayerTextFactoryState; + layerRectFactoryState: LayerRectFactoryState; } export type OpenEditOverlayModalPayload = MapOverlay; diff --git a/src/shared/Icon/Icon.component.tsx b/src/shared/Icon/Icon.component.tsx index aed961c3..298b2c3b 100644 --- a/src/shared/Icon/Icon.component.tsx +++ b/src/shared/Icon/Icon.component.tsx @@ -35,6 +35,7 @@ import { MoveFrontIcon } from '@/shared/Icon/Icons/MoveFrontIcon'; import { MoveBackIcon } from '@/shared/Icon/Icons/MoveBackIcon'; import { LayerArrowUpIcon } from '@/shared/Icon/Icons/LayerArrowUpIcon'; import { LayerArrowDownIcon } from '@/shared/Icon/Icons/LayerArrowDownIcon'; +import { RectangleIcon } from '@/shared/Icon/Icons/RectangleIcon'; import { LocationIcon } from './Icons/LocationIcon'; import { MaginfierZoomInIcon } from './Icons/MagnifierZoomIn'; import { MaginfierZoomOutIcon } from './Icons/MagnifierZoomOut'; @@ -93,6 +94,7 @@ const icons: Record<IconTypes, IconComponentType> = { 'move-back': MoveBackIcon, 'layer-arrow-up': LayerArrowUpIcon, 'layer-arrow-down': LayerArrowDownIcon, + rectangle: RectangleIcon, } as const; export const Icon = ({ name, className = '', ...rest }: IconProps): JSX.Element => { diff --git a/src/shared/Icon/Icons/RectangleIcon.tsx b/src/shared/Icon/Icons/RectangleIcon.tsx new file mode 100644 index 00000000..522b1cc7 --- /dev/null +++ b/src/shared/Icon/Icons/RectangleIcon.tsx @@ -0,0 +1,16 @@ +interface RectangleIconProps { + className?: string; +} + +export const RectangleIcon = ({ className }: RectangleIconProps): JSX.Element => ( + <svg + width="20" + height="20" + viewBox="0 0 100 100" + fill="none" + className={className} + xmlns="http://www.w3.org/2000/svg" + > + <rect x="4" y="21" width="92" height="58" stroke="black" fill="none" strokeWidth="2" /> + </svg> +); diff --git a/src/types/iconTypes.ts b/src/types/iconTypes.ts index 0083a622..c648c34a 100644 --- a/src/types/iconTypes.ts +++ b/src/types/iconTypes.ts @@ -41,6 +41,7 @@ export type IconTypes = | 'move-front' | 'move-back' | 'layer-arrow-up' - | 'layer-arrow-down'; + | 'layer-arrow-down' + | 'rectangle'; export type IconComponentType = ({ className }: { className: string }) => JSX.Element; diff --git a/src/types/modal.ts b/src/types/modal.ts index 579c8137..eba75e3e 100644 --- a/src/types/modal.ts +++ b/src/types/modal.ts @@ -16,4 +16,5 @@ export type ModalName = | 'layer-image-object-factory' | 'layer-image-object-edit-factory' | 'layer-text-factory' - | 'layer-text-edit-factory'; + | 'layer-text-edit-factory' + | 'layer-rect-factory'; diff --git a/src/utils/convert/hexToRgbIntAlpha.test.ts b/src/utils/convert/hexToRgbIntAlpha.test.ts index cce777c8..eabaf373 100644 --- a/src/utils/convert/hexToRgbIntAlpha.test.ts +++ b/src/utils/convert/hexToRgbIntAlpha.test.ts @@ -3,12 +3,12 @@ import hexToRgbIntAlpha from './hexToRgbIntAlpha'; describe('hexToRgbIntAlpha', () => { it('should convert a valid 6-character HEX color to RGB integer and alpha', () => { const result = hexToRgbIntAlpha('#ff5733'); - expect(result).toEqual({ rgb: 16734003, alpha: 1 }); + expect(result).toEqual({ rgb: 16734003, alpha: 255 }); }); it('should convert a valid 8-character HEX color to RGB integer and alpha', () => { const result = hexToRgbIntAlpha('#ff5733cc'); - expect(result).toEqual({ rgb: 16734003, alpha: 0.8 }); + expect(result).toEqual({ rgb: 16734003, alpha: 204 }); }); it('should throw an error for an invalid HEX color length', () => { diff --git a/src/utils/convert/hexToRgbIntAlpha.ts b/src/utils/convert/hexToRgbIntAlpha.ts index fb2ce4a4..a363ca25 100644 --- a/src/utils/convert/hexToRgbIntAlpha.ts +++ b/src/utils/convert/hexToRgbIntAlpha.ts @@ -12,14 +12,11 @@ export default function hexToRgbIntAlpha(hex: string): Color { const g = parseInt(sanitizedHex.slice(2, 4), 16); const b = parseInt(sanitizedHex.slice(4, 6), 16); - let a = 255; + let alpha = 255; if (sanitizedHex.length === 8) { - a = parseInt(sanitizedHex.slice(6, 8), 16); + alpha = parseInt(sanitizedHex.slice(6, 8), 16); } - const alpha = a / 255; - const rgb = r * 65536 + g * 256 + b; - return { rgb, alpha }; } -- GitLab From 486b0ec407ab1af117baf91a5cc50bfb7ca71de2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 14:32:59 +0100 Subject: [PATCH 08/15] feat(layers-rect): implement layer rectangle editing --- .../LayerFactoryModal.component.tsx | 4 +- ...eObjectEditFactoryModal.component.test.tsx | 2 +- ...rImageObjectEditFactoryModal.component.tsx | 2 +- ...ImageObjectFactoryModal.component.test.tsx | 2 +- ...LayerImageObjectFactoryModal.component.tsx | 4 +- .../LayerRectEditFactoryModal.component.tsx | 107 ++++++++++++++++++ .../LayerRectFactoryModal.component.test.tsx | 2 +- .../LayerRectFactoryModal.component.tsx | 6 +- .../LayerTextEditFactoryModal.component.tsx | 2 +- .../LayerTextFactoryModal.component.test.tsx | 2 +- .../LayerTextFactoryModal.component.tsx | 6 +- .../FunctionalArea/Modal/Modal.component.tsx | 6 + .../ModalLayout/ModalLayout.component.tsx | 6 +- .../LayerDrawerRectItem.component.tsx | 61 +++++++++- .../LayersDrawer/LayersDrawer.component.tsx | 13 ++- .../LayersDrawerLayer.component.tsx | 2 +- .../LayersDrawerObjectsList.component.tsx | 65 ++++++++++- .../useOlMapAdditionalLayers.ts | 1 + .../utils/shapes/elements/Glyph/Glyph.ts | 29 ++--- .../shapes/elements/getBoundingBoxPolygon.ts | 26 +++++ .../Map/MapViewer/utils/shapes/layer/Layer.ts | 8 +- .../utils/shapes/layer/elements/LayerRect.ts | 54 +++++++-- .../utils/shapes/layer/elements/LayerText.ts | 35 +++--- .../utils/shapes/layer/utils/updateElement.ts | 4 +- src/redux/apiPath.ts | 6 +- src/redux/layers/layers.reducers.ts | 15 ++- src/redux/layers/layers.slice.ts | 3 + src/redux/layers/layers.thunks.ts | 42 +++++++ src/redux/layers/utils/setLayerRect.ts | 18 +++ .../mapEditTools/mapEditTools.reducers.ts | 4 +- src/redux/mapEditTools/mapEditTools.types.ts | 4 +- src/redux/modal/modal.reducers.ts | 6 + src/redux/modal/modal.slice.ts | 3 + src/types/modal.ts | 3 +- 34 files changed, 463 insertions(+), 90 deletions(-) create mode 100644 src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component.tsx create mode 100644 src/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon.ts create mode 100644 src/redux/layers/utils/setLayerRect.ts diff --git a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx index b806d2b6..31c052b8 100644 --- a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx @@ -75,13 +75,13 @@ export const LayerFactoryModal: React.FC = () => { await dispatch(updateLayer(payload)).unwrap(); showToast({ type: 'success', - message: 'The layer has been successfully updated', + message: 'The layer has been successfully updated.', }); } else { await dispatch(addLayerForModel(data)).unwrap(); showToast({ type: 'success', - message: 'A new layer has been successfully added', + message: 'A new layer has been successfully added.', }); } dispatch(closeModal()); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx index a6adc865..5233b3f6 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx @@ -177,7 +177,7 @@ describe('LayerImageObjectEditFactoryModal - component', () => { }); expect(showToast).toHaveBeenCalledWith({ - message: 'The image has been successfully updated', + message: 'The image has been successfully updated.', type: 'success', }); }); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx index b90d5b25..276b8e51 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx @@ -62,7 +62,7 @@ export const LayerImageObjectEditFactoryModal: React.FC = () => { } showToast({ type: 'success', - message: 'The image has been successfully updated', + message: 'The image has been successfully updated.', }); dispatch(closeModal()); } catch (error) { diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx index 18e2172b..53f1af3d 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx @@ -127,7 +127,7 @@ describe('LayerImageObjectFactoryModal - component', () => { }); expect(showToast).toHaveBeenCalledWith({ - message: 'A new image has been successfully added', + message: 'A new image has been successfully added.', type: 'success', }); }); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx index 4d1513e9..ec495659 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx @@ -61,7 +61,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { if (!imageData) { showToast({ type: 'error', - message: 'Error while adding the image', + message: 'An error occurred while adding a new image.', }); return; } @@ -76,7 +76,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { }); showToast({ type: 'success', - message: 'A new image has been successfully added', + message: 'A new image has been successfully added.', }); dispatch(closeModal()); dispatch(mapEditToolsSetActiveAction(null)); diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component.tsx new file mode 100644 index 00000000..4ff05d12 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component.tsx @@ -0,0 +1,107 @@ +/* eslint-disable no-magic-numbers */ +import React, { useState } from 'react'; +import './LayerRectFactoryModal.styles.css'; +import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { Button } from '@/shared/Button'; +import { LayerRectForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component'; +import { LayerRectFactoryForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { Color } from '@/types/models'; +import { updateLayerRect } from '@/redux/layers/layers.thunks'; +import { showToast } from '@/utils/showToast'; +import { layerUpdateRect } from '@/redux/layers/layers.slice'; +import { closeModal } from '@/redux/modal/modal.slice'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { SerializedError } from '@reduxjs/toolkit'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { useMapInstance } from '@/utils/context/mapInstanceContext'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; + +export const LayerRectEditFactoryModal: React.FC = () => { + const layerObject = useAppSelector(mapEditToolsLayerObjectSelector); + const currentModelId = useAppSelector(currentModelIdSelector); + const dispatch = useAppDispatch(); + const { mapInstance } = useMapInstance(); + + if (!layerObject || !('fillColor' in layerObject && 'borderColor' in layerObject)) { + throw new Error('Invalid layer rectangle object'); + } + + const [isSending, setIsSending] = useState<boolean>(false); + const [data, setData] = useState<LayerRectFactoryForm>({ + fillColor: layerObject.fillColor, + borderColor: layerObject.borderColor, + }); + + const handleSubmit = async (): Promise<void> => { + if (!layerObject) { + return; + } + try { + const layerRect = await dispatch( + updateLayerRect({ + modelId: currentModelId, + layerId: layerObject.layer, + id: layerObject.id, + x: layerObject.x, + y: layerObject.y, + z: layerObject.z, + width: layerObject.width, + height: layerObject.height, + fillColor: data.fillColor, + borderColor: data.borderColor, + }), + ).unwrap(); + + if (!layerRect) { + showToast({ + type: 'error', + message: 'An error occurred while editing the rectangle.', + }); + return; + } + + dispatch(layerUpdateRect({ modelId: currentModelId, layerId: layerRect.layer, layerRect })); + dispatch(mapEditToolsSetLayerObject(layerRect)); + updateElement(mapInstance, layerRect.layer, layerRect); + showToast({ + type: 'success', + message: 'The rectangle has been successfully updated.', + }); + dispatch(closeModal()); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while editing the rectangle.', + }); + } finally { + setIsSending(false); + } + }; + + const changeValues = (value: string | number | Color, key: string): void => { + setData(prevData => ({ ...prevData, [key]: value })); + }; + + return ( + <div className="relative flex w-[400px] flex-col gap-4 rounded-b-lg border border-t-[#E1E0E6] bg-white p-[24px]"> + {isSending && ( + <div className="c-layer-rect-factory-modal-loader"> + <LoadingIndicator width={44} height={44} /> + </div> + )} + <LayerRectForm onChange={changeValues} data={data} /> + <hr /> + <Button + type="button" + onClick={handleSubmit} + className="justify-center self-end justify-self-end text-base font-medium" + > + Submit + </Button> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx index d6dae5a2..cfaed463 100644 --- a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx @@ -95,7 +95,7 @@ describe('LayerRectFactoryModal - component', () => { }); expect(showToast).toHaveBeenCalledWith({ - message: 'A new rect has been successfully added', + message: 'A new rectangle has been successfully added.', type: 'success', }); }); diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx index c374bfc5..cbdfb230 100644 --- a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx @@ -55,7 +55,7 @@ export const LayerRectFactoryModal: React.FC = () => { if (!layerRect) { showToast({ type: 'error', - message: 'Error while adding the rect', + message: 'An error occurred while adding a new rectangle.', }); return; } @@ -68,7 +68,7 @@ export const LayerRectFactoryModal: React.FC = () => { }); showToast({ type: 'success', - message: 'A new rect has been successfully added', + message: 'A new rectangle has been successfully added.', }); dispatch(closeModal()); dispatch(mapEditToolsSetActiveAction(null)); @@ -76,7 +76,7 @@ export const LayerRectFactoryModal: React.FC = () => { const typedError = error as SerializedError; showToast({ type: 'error', - message: typedError.message || 'An error occurred while adding a new rect', + message: typedError.message || 'An error occurred while adding a new rectangle.', }); } finally { setIsSending(false); diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx index c73e9d93..d80231bd 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx @@ -70,7 +70,7 @@ export const LayerTextEditFactoryModal: React.FC = () => { } showToast({ type: 'success', - message: 'The text has been successfully updated', + message: 'The text has been successfully updated.', }); dispatch(closeModal()); } catch (error) { diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx index 71f607e3..fa095c9a 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx @@ -140,7 +140,7 @@ describe('LayerTextFactoryModal - component', () => { }); expect(showToast).toHaveBeenCalledWith({ - message: 'A new text has been successfully added', + message: 'A new text has been successfully added.', type: 'success', }); }); diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx index bfb80aff..b1446156 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx @@ -64,7 +64,7 @@ export const LayerTextFactoryModal: React.FC = () => { if (!textData) { showToast({ type: 'error', - message: 'Error while adding the text', + message: 'An error occurred while adding a new text.', }); return; } @@ -77,7 +77,7 @@ export const LayerTextFactoryModal: React.FC = () => { }); showToast({ type: 'success', - message: 'A new text has been successfully added', + message: 'A new text has been successfully added.', }); dispatch(closeModal()); dispatch(mapEditToolsSetActiveAction(null)); @@ -85,7 +85,7 @@ export const LayerTextFactoryModal: React.FC = () => { const typedError = error as SerializedError; showToast({ type: 'error', - message: typedError.message || 'An error occurred while adding a new text', + message: typedError.message || 'An error occurred while adding a new text.', }); } finally { setIsSending(false); diff --git a/src/components/FunctionalArea/Modal/Modal.component.tsx b/src/components/FunctionalArea/Modal/Modal.component.tsx index c64517dc..81de8ecb 100644 --- a/src/components/FunctionalArea/Modal/Modal.component.tsx +++ b/src/components/FunctionalArea/Modal/Modal.component.tsx @@ -12,6 +12,7 @@ import { import { LayerTextFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component'; import { LayerTextEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component'; import { LayerRectFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component'; +import { LayerRectEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component'; import { EditOverlayModal } from './EditOverlayModal'; import { LoginModal } from './LoginModal'; import { ErrorReportModal } from './ErrorReportModal'; @@ -117,6 +118,11 @@ export const Modal = (): React.ReactNode => { <LayerRectFactoryModal /> </ModalLayout> )} + {isOpen && modalName === 'layer-rect-edit-factory' && ( + <ModalLayout> + <LayerRectEditFactoryModal /> + </ModalLayout> + )} </> ); }; diff --git a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx index 357f7cf1..6bca9546 100644 --- a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx +++ b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx @@ -34,7 +34,8 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { modalName === 'add-comment' && 'h-auto w-[400px]', modalName === 'error-report' && 'h-auto w-[800px]', modalName === 'layer-factory' && 'h-auto w-[400px]', - modalName === 'layer-rect-factory' && 'relative h-auto w-[400px] overflow-visible', + ['layer-rect-factory', 'layer-rect-edit-factory'].includes(modalName) && + 'relative h-auto w-[400px] overflow-visible', ['layer-text-factory', 'layer-text-edit-factory'].includes(modalName) && 'h-auto w-[900px]', ['layer-image-object-factory', 'layer-image-object-edit-factory'].includes(modalName) && @@ -45,7 +46,8 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { <div className={twMerge( 'flex items-center justify-between bg-white p-[24px] text-xl', - modalName === 'layer-rect-factory' && 'rounded-t-lg', + ['layer-rect-factory', 'layer-rect-edit-factory'].includes(modalName) && + 'rounded-t-lg', )} > {(modalName === 'error-report' || modalName === 'access-denied') && ( diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx index a8f0e9bc..c36031e5 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx @@ -1,23 +1,80 @@ -import React, { JSX } from 'react'; +import React, { JSX, useMemo } from 'react'; import { LayerRect } from '@/types/models'; import { Icon } from '@/shared/Icon'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { LayersDrawerObjectActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component'; interface LayersDrawerRectItemProps { layerRect: LayerRect; + moveToFront: () => void; + moveToBack: () => void; + removeObject: () => void; + centerObject: () => void; + editObject: () => void; + isLayerVisible: boolean; + isLayerActive: boolean; } export const LayersDrawerRectItem = ({ layerRect, + moveToFront, + moveToBack, + removeObject, + centerObject, + editObject, + isLayerVisible, + isLayerActive, }: LayersDrawerRectItemProps): JSX.Element | null => { + const dispatch = useAppDispatch(); + const activeLayerImage = useAppSelector(mapEditToolsLayerObjectSelector); + const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); + + const showActions = useMemo(() => { + return activeLayerImage?.id === layerRect.id; + }, [activeLayerImage?.id, layerRect.id]); + + const canSelectItem = useMemo(() => { + return isLayerVisible && isLayerActive && hasPrivilegeToWriteProject; + }, [isLayerVisible, isLayerActive, hasPrivilegeToWriteProject]); + + const selectItem = useMemo(() => { + return (): void => { + if (canSelectItem) { + dispatch(mapEditToolsSetLayerObject(layerRect)); + } + }; + }, [canSelectItem, dispatch, layerRect]); + + const handleKeyPress = (): void => {}; + return ( <div className="flex min-h-[24px] items-center justify-between gap-2" id={`layer-rect-item-${layerRect.id}`} > - <div className="flex gap-2"> + <div + className={`flex gap-2 ${canSelectItem ? 'cursor-pointer' : 'cursor-default'}`} + onClick={selectItem} + tabIndex={0} + onKeyDown={handleKeyPress} + role="button" + > <Icon name="rectangle" className="shrink-0" /> <span className="truncate">rectangle - {layerRect.id}</span> </div> + {showActions && ( + <LayersDrawerObjectActions + moveToFront={moveToFront} + moveToBack={moveToBack} + removeObject={removeObject} + centerObject={centerObject} + editObject={editObject} + /> + )} </div> ); }; diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index 33c259f3..1e85c51d 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -15,7 +15,7 @@ export const LayersDrawer = (): JSX.Element => { const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); const dispatch = useAppDispatch(); const layersDrawerRef = useRef<HTMLDivElement>(null); - const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); + const mapEditToolsLayerObject = useAppSelector(mapEditToolsLayerObjectSelector); const addNewLayer = (): void => { dispatch(openLayerFactoryModal()); @@ -35,12 +35,13 @@ export const LayersDrawer = (): JSX.Element => { ); useEffect(() => { - if (!mapEditToolsLayerImageObject || !layersDrawerRef.current) { + if (!mapEditToolsLayerObject || !layersDrawerRef.current) { return; } - const layerObjectElement = document.getElementById( - `layer-image-item-${mapEditToolsLayerImageObject.id}`, - ); + const layerObjectElement = + document.getElementById(`layer-image-item-${mapEditToolsLayerObject.id}`) || + document.getElementById(`layer-text-item-${mapEditToolsLayerObject.id}`) || + document.getElementById(`layer-rect-item-${mapEditToolsLayerObject.id}`); if (!layerObjectElement) { return; } @@ -64,7 +65,7 @@ export const LayersDrawer = (): JSX.Element => { behavior: 'smooth', }); } - }, [mapEditToolsLayerImageObject]); + }, [mapEditToolsLayerObject]); return ( <div data-testid="layers-drawer" className="h-full max-h-full"> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index 03aa4417..d937ed6e 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -82,7 +82,7 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX await dispatch(removeLayer({ modelId: currentModelId, layerId: layerDetails.id })).unwrap(); showToast({ type: 'success', - message: 'The layer has been successfully removed', + message: 'The layer has been successfully removed.', }); setIsModalOpen(false); dispatch(getLayersForModel(currentModelId)); diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 330c7bbe..bd6c7cdd 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -13,18 +13,20 @@ import { removeLayerImage, removeLayerText, updateLayerImageObject, + updateLayerRect, updateLayerText, } from '@/redux/layers/layers.thunks'; import { layerDeleteImage, layerDeleteText, layerUpdateImage, + layerUpdateRect, layerUpdateText, } from '@/redux/layers/layers.slice'; import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; -import { LayerImage, LayerText } from '@/types/models'; +import { LayerImage, LayerRect, LayerText } from '@/types/models'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { useMapInstance } from '@/utils/context/mapInstanceContext'; import { mapModelIdSelector } from '@/redux/map/map.selectors'; @@ -36,6 +38,7 @@ import { usePointToProjection } from '@/utils/map/usePointToProjection'; import { Coordinate } from 'ol/coordinate'; import { openLayerImageObjectEditFactoryModal, + openLayerRectEditFactoryModal, openLayerTextEditFactoryModal, } from '@/redux/modal/modal.slice'; import { LayersDrawerRectItem } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component'; @@ -219,7 +222,49 @@ export const LayersDrawerObjectsList = ({ await updateTextZIndex({ zIndex: minZIndex - 1, layerText }); }; - const centerObject = (layerObject: LayerImage | LayerText): void => { + const updateRectZIndex = async ({ + zIndex, + layerRect, + }: { + zIndex: number; + layerRect: LayerRect; + }): Promise<void> => { + const newLayerRect = await dispatch( + updateLayerRect({ + modelId: currentModelId, + layerId: layerRect.layer, + id: layerRect.id, + x: layerRect.x, + y: layerRect.y, + z: zIndex, + width: layerRect.width, + height: layerRect.height, + fillColor: layerRect.fillColor, + borderColor: layerRect.borderColor, + }), + ).unwrap(); + if (newLayerRect) { + dispatch( + layerUpdateRect({ + modelId: currentModelId, + layerId: newLayerRect.layer, + layerRect: newLayerRect, + }), + ); + dispatch(mapEditToolsSetLayerObject(newLayerRect)); + updateElement(mapInstance, newLayerRect.layer, newLayerRect); + } + }; + + const moveRectToFront = async (layerRect: LayerRect): Promise<void> => { + await updateRectZIndex({ zIndex: maxZIndex + 1, layerRect }); + }; + + const moveRectToBack = async (layerRect: LayerRect): Promise<void> => { + await updateRectZIndex({ zIndex: minZIndex - 1, layerRect }); + }; + + const centerObject = (layerObject: LayerImage | LayerText | LayerRect): void => { if (mapEditToolsLayerImageObject && mapEditToolsLayerImageObject.id === layerObject.id) { const point1 = pointToProjection({ x: layerObject.x, y: layerObject.y }); const point2 = pointToProjection({ @@ -238,6 +283,10 @@ export const LayersDrawerObjectsList = ({ dispatch(openLayerTextEditFactoryModal()); }; + const editRect = (): void => { + dispatch(openLayerRectEditFactoryModal()); + }; + if (!layer) { return null; } @@ -281,7 +330,17 @@ export const LayersDrawerObjectsList = ({ /> ))} {Object.values(layer.rects).map(layerRect => ( - <LayersDrawerRectItem layerRect={layerRect} key={layerRect.id} /> + <LayersDrawerRectItem + layerRect={layerRect} + key={layerRect.id} + moveToFront={() => moveRectToFront(layerRect)} + moveToBack={() => moveRectToBack(layerRect)} + removeObject={() => {}} + centerObject={() => centerObject(layerRect)} + editObject={() => editRect()} + isLayerVisible={isLayerVisible} + isLayerActive={isLayerActive} + /> ))} </div> ); diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index fe1497fe..0ca5564b 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -173,6 +173,7 @@ export const useOlMapAdditionalLayers = ( const activeVectorLayers = vectorLayers.filter(layer => activeLayers.includes(layer.get('id'))); activeVectorLayers.forEach(vectorLayer => { features.push(...vectorLayer.get('imagesFeatures')); + features.push(...vectorLayer.get('rectsFeatures')); features.push(...vectorLayer.get('textsFeatures')); }); const featuresCollection = new Collection(features); diff --git a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts b/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts index 57b36875..edad8cde 100644 --- a/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts +++ b/src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts @@ -17,6 +17,7 @@ import { LayerImage } from '@/types/models'; import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; import getFill from '@/components/Map/MapViewer/utils/shapes/style/getFill'; import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle'; +import getBoundingBoxPolygon from '@/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon'; export type GlyphProps = { elementId: number; @@ -111,7 +112,13 @@ export default class Glyph { this.minResolution = mapInstance?.getView().getResolutionForZoom(maxZoom) || 1; this.pixelRatio = this.widthOnMap / this.minResolution / this.width; - this.drawPolygon(); + this.polygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, + }); this.setStyles(); @@ -141,18 +148,6 @@ export default class Glyph { this.drawImage(); } - private drawPolygon(): void { - this.polygon = new Polygon([ - [ - this.pointToProjection({ x: this.x, y: this.y }), - this.pointToProjection({ x: this.x + this.width, y: this.y }), - this.pointToProjection({ x: this.x + this.width, y: this.y + this.height }), - this.pointToProjection({ x: this.x, y: this.y + this.height }), - this.pointToProjection({ x: this.x, y: this.y }), - ], - ]); - } - private setStyles(): void { this.polygonStyle = getStyle({ geometry: this.polygon, @@ -177,7 +172,13 @@ export default class Glyph { } private refreshPolygon(): void { - this.drawPolygon(); + this.polygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, + }); this.polygonStyle.setGeometry(this.polygon); this.feature.setGeometry(this.polygon); } diff --git a/src/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon.ts b/src/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon.ts new file mode 100644 index 00000000..375cee53 --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon.ts @@ -0,0 +1,26 @@ +import Polygon from 'ol/geom/Polygon'; +import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection'; + +export default function getBoundingBoxPolygon({ + x, + y, + width, + height, + pointToProjection, +}: { + x: number; + y: number; + width: number; + height: number; + pointToProjection: UsePointToProjectionResult; +}): Polygon { + return new Polygon([ + [ + pointToProjection({ x, y }), + pointToProjection({ x: x + width, y }), + pointToProjection({ x: x + width, y: y + height }), + pointToProjection({ x, y: y + height }), + pointToProjection({ x, y }), + ], + ]); +} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 93456a0d..851bb3ea 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -111,11 +111,14 @@ export default class Layer { const textsFeatures = this.getTextsFeatures(); this.vectorSource.addFeatures(textsFeatures); - this.vectorSource.addFeatures(this.getRectsFeatures()); - this.vectorSource.addFeatures(this.getOvalsFeatures()); + const rectsFeatures = this.getRectsFeatures(); + this.vectorSource.addFeatures(rectsFeatures); + const imagesFeatures = this.getImagesFeatures(); this.vectorSource.addFeatures(imagesFeatures); + this.vectorSource.addFeatures(this.getOvalsFeatures()); + const { linesFeatures, arrowsFeatures } = this.getLinesFeatures(); this.vectorSource.addFeatures(linesFeatures); this.vectorSource.addFeatures(arrowsFeatures); @@ -132,6 +135,7 @@ export default class Layer { this.vectorLayer.set('id', layerId); this.vectorLayer.set('imagesFeatures', imagesFeatures); this.vectorLayer.set('textsFeatures', textsFeatures); + this.vectorLayer.set('rectsFeatures', rectsFeatures); this.vectorLayer.set('drawImage', this.drawImage.bind(this)); this.vectorLayer.set('drawText', this.drawText.bind(this)); this.vectorLayer.set('drawRect', this.drawRect.bind(this)); diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts index 844ec355..e86cfc44 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts @@ -13,6 +13,12 @@ import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style import { Stroke } from 'ol/style'; import { MapSize } from '@/redux/map/map.types'; import { Coordinate } from 'ol/coordinate'; +import { BoundingBox } from '@/components/Map/MapViewer/MapViewer.types'; +import { store } from '@/redux/store'; +import { updateLayerRect } from '@/redux/layers/layers.thunks'; +import { layerUpdateRect } from '@/redux/layers/layers.slice'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import getBoundingBoxPolygon from '@/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon'; export interface LayerRectProps { elementId: number; @@ -96,7 +102,13 @@ export default class LayerRect { const maxZoom = mapInstance?.getView().get('originalMaxZoom'); this.minResolution = mapInstance?.getView().getResolutionForZoom(maxZoom) || 1; - this.drawPolygon(); + this.polygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, + }); this.setStyles(); @@ -109,6 +121,7 @@ export default class LayerRect { this.feature.set('setCoordinates', this.setCoordinates.bind(this)); this.feature.set('refreshPolygon', this.refreshPolygon.bind(this)); this.feature.set('updateElement', this.updateElement.bind(this)); + this.feature.set('save', this.save.bind(this)); this.feature.setStyle(this.getStyle.bind(this)); } @@ -127,20 +140,37 @@ export default class LayerRect { }; } - private drawPolygon(): void { - this.polygon = new Polygon([ - [ - this.pointToProjection({ x: this.x, y: this.y }), - this.pointToProjection({ x: this.x + this.width, y: this.y }), - this.pointToProjection({ x: this.x + this.width, y: this.y + this.height }), - this.pointToProjection({ x: this.x, y: this.y + this.height }), - this.pointToProjection({ x: this.x, y: this.y }), - ], - ]); + private async save({ + modelId, + boundingBox, + }: { + modelId: number; + boundingBox: BoundingBox; + }): Promise<void> { + const { dispatch } = store; + const layerRect = await dispatch( + updateLayerRect({ + modelId, + layerId: this.layer, + ...this.getData(), + ...boundingBox, + }), + ).unwrap(); + if (layerRect) { + dispatch(layerUpdateRect({ modelId, layerId: layerRect.layer, layerRect })); + dispatch(mapEditToolsSetLayerObject(layerRect)); + this.updateElement(layerRect); + } } private refreshPolygon(): void { - this.drawPolygon(); + this.polygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, + }); this.feature.setGeometry(this.polygon); this.feature.changed(); } diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts index 26565345..41662941 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts @@ -27,6 +27,7 @@ import { store } from '@/redux/store'; import { updateLayerText } from '@/redux/layers/layers.thunks'; import { layerUpdateText } from '@/redux/layers/layers.slice'; import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import getBoundingBoxPolygon from '@/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon'; export interface LayerTextProps { elementId: number; @@ -142,7 +143,13 @@ export default class LayerText { }); this.point = new Point(textCoords); - this.drawPolygon(); + this.polygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, + }); this.setStyles(); @@ -188,18 +195,6 @@ export default class LayerText { }; } - private drawPolygon(): void { - this.polygon = new Polygon([ - [ - this.pointToProjection({ x: this.x, y: this.y }), - this.pointToProjection({ x: this.x + this.width, y: this.y }), - this.pointToProjection({ x: this.x + this.width, y: this.y + this.height }), - this.pointToProjection({ x: this.x, y: this.y + this.height }), - this.pointToProjection({ x: this.x, y: this.y }), - ], - ]); - } - private async save({ modelId, boundingBox, @@ -224,18 +219,18 @@ export default class LayerText { } private refreshPolygon(): void { - this.drawPolygon(); + this.polygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, + }); this.polygonStyle.setGeometry(this.polygon); this.feature.setGeometry(this.polygon); this.feature.changed(); } - private refreshZIndex(): void { - this.polygonStyle.setZIndex(this.zIndex); - this.style.setZIndex(this.zIndex); - this.feature.changed(); - } - private setStyles(): void { this.strokeStyle = getStroke({ color: rgbToHex(this.borderColor), diff --git a/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts index 88f50d44..4318381d 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts @@ -1,11 +1,11 @@ import VectorSource from 'ol/source/Vector'; -import { LayerImage, LayerText } from '@/types/models'; +import { LayerImage, LayerRect, LayerText } from '@/types/models'; import { MapInstance } from '@/types/map'; export default function updateElement( mapInstance: MapInstance, layerId: number, - layerObject: LayerImage | LayerText, + layerObject: LayerImage | LayerText | LayerRect, ): void { mapInstance?.getAllLayers().forEach(layer => { if (layer.get('id') === layerId) { diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts index d52b7f27..df31fe9e 100644 --- a/src/redux/apiPath.ts +++ b/src/redux/apiPath.ts @@ -43,6 +43,8 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/`, addLayerRect: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/`, + updateLayerRect: (modelId: number, layerId: number, rectId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/${rectId}`, getLayerOvals: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/`, getLayerLines: (modelId: number, layerId: number): string => @@ -64,8 +66,8 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/images/${imageId}`, addLayerText: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/`, - getLayerText: (modelId: number, layerId: number, imageId: number | string): string => - `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/${imageId}`, + getLayerText: (modelId: number, layerId: number, textId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/${textId}`, updateLayerText: (modelId: number, layerId: number, textId: number | string): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/texts/${textId}`, removeLayerText: (modelId: number, layerId: number, textId: number | string): string => diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index 9d1a42d6..74b83a3d 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -8,6 +8,7 @@ import { } from '@/redux/layers/layers.mock'; import { DEFAULT_ERROR } from '@/constants/errors'; import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import setLayerRect from '@/redux/layers/utils/setLayerRect'; export const getLayersForModelReducer = (builder: ActionReducerMapBuilder<LayersState>): void => { builder.addCase(getLayersForModel.pending, (state, action) => { @@ -240,9 +241,17 @@ export const layerAddRectReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); - if (!layer) { + setLayerRect({ layerId, layers: data.layers, layerRect }); +}; + +export const layerUpdateRectReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; layerRect: LayerRect }>, +): void => { + const { modelId, layerId, layerRect } = action.payload; + const { data } = state[modelId]; + if (!data) { return; } - layer.rects[layerRect.id] = layerRect; + setLayerRect({ layerId, layers: data.layers, layerRect }); }; diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index c66fa629..0760126a 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -15,6 +15,7 @@ import { layerDeleteTextReducer, layerUpdateTextReducer, layerAddRectReducer, + layerUpdateRectReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ @@ -31,6 +32,7 @@ export const layersSlice = createSlice({ layerUpdateText: layerUpdateTextReducer, layerDeleteText: layerDeleteTextReducer, layerAddRect: layerAddRectReducer, + layerUpdateRect: layerUpdateRectReducer, setDrawLayer: setDrawLayerReducer, }, extraReducers: builder => { @@ -51,6 +53,7 @@ export const { layerUpdateText, layerDeleteText, layerAddRect, + layerUpdateRect, setDrawLayer, } = layersSlice.actions; diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 0db4a364..4d351082 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -420,3 +420,45 @@ export const addLayerRect = createAsyncThunk< return Promise.reject(getError({ error })); } }); + +export const updateLayerRect = createAsyncThunk< + LayerRect | null, + { + modelId: number; + layerId: number; + id: number; + x: number; + y: number; + z: number; + width: number; + height: number; + fillColor: Color; + borderColor: Color; + }, + ThunkConfig +>( + 'layers/updateLayerRect', + async ({ modelId, layerId, id, x, y, z, width, height, fillColor, borderColor }) => { + try { + const { data } = await axiosInstanceNewAPI.put<LayerRect>( + apiPath.updateLayerRect(modelId, layerId, id), + { + x, + y, + z, + width, + height, + fillColor, + borderColor, + }, + ); + const isDataValid = validateDataUsingZodSchema(data, layerRectSchema); + if (isDataValid) { + return data; + } + return null; + } catch (error) { + return Promise.reject(getError({ error })); + } + }, +); diff --git a/src/redux/layers/utils/setLayerRect.ts b/src/redux/layers/utils/setLayerRect.ts new file mode 100644 index 00000000..a0b9abbb --- /dev/null +++ b/src/redux/layers/utils/setLayerRect.ts @@ -0,0 +1,18 @@ +import { LayerRect } from '@/types/models'; +import { LayerState } from '@/redux/layers/layers.types'; + +export default function setLayerRect({ + layerId, + layers, + layerRect, +}: { + layerId: number; + layers: LayerState[]; + layerRect: LayerRect; +}): void { + const layer = layers.find(layerState => layerState.details.id === layerId); + if (!layer) { + return; + } + layer.rects[layerRect.id] = layerRect; +} diff --git a/src/redux/mapEditTools/mapEditTools.reducers.ts b/src/redux/mapEditTools/mapEditTools.reducers.ts index d45e719f..b8519608 100644 --- a/src/redux/mapEditTools/mapEditTools.reducers.ts +++ b/src/redux/mapEditTools/mapEditTools.reducers.ts @@ -2,7 +2,7 @@ import { PayloadAction } from '@reduxjs/toolkit'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; import { MapEditToolsState } from '@/redux/mapEditTools/mapEditTools.types'; -import { LayerImage, LayerText } from '@/types/models'; +import { LayerImage, LayerRect, LayerText } from '@/types/models'; export const mapEditToolsSetActiveActionReducer = ( state: MapEditToolsState, @@ -13,7 +13,7 @@ export const mapEditToolsSetActiveActionReducer = ( export const mapEditToolsSetLayerObjectReducer = ( state: MapEditToolsState, - action: PayloadAction<LayerImage | LayerText | null>, + action: PayloadAction<LayerImage | LayerText | LayerRect | null>, ): void => { state.layerObject = action.payload; }; diff --git a/src/redux/mapEditTools/mapEditTools.types.ts b/src/redux/mapEditTools/mapEditTools.types.ts index 4c216c40..b9a012c8 100644 --- a/src/redux/mapEditTools/mapEditTools.types.ts +++ b/src/redux/mapEditTools/mapEditTools.types.ts @@ -1,7 +1,7 @@ import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; -import { LayerImage, LayerText } from '@/types/models'; +import { LayerImage, LayerRect, LayerText } from '@/types/models'; export type MapEditToolsState = { activeAction: keyof typeof MAP_EDIT_ACTIONS | null; - layerObject: LayerImage | LayerText | null; + layerObject: LayerImage | LayerText | LayerRect | null; }; diff --git a/src/redux/modal/modal.reducers.ts b/src/redux/modal/modal.reducers.ts index e95b3e1b..d020354d 100644 --- a/src/redux/modal/modal.reducers.ts +++ b/src/redux/modal/modal.reducers.ts @@ -181,3 +181,9 @@ export const openLayerRectFactoryModalReducer = ( state.modalTitle = 'Add rectangle'; state.isOpen = true; }; + +export const openLayerRectEditFactoryModalReducer = (state: ModalState): void => { + state.isOpen = true; + state.modalName = 'layer-rect-edit-factory'; + state.modalTitle = 'Edit rectangle'; +}; diff --git a/src/redux/modal/modal.slice.ts b/src/redux/modal/modal.slice.ts index 7d6d21e2..cb3398e3 100644 --- a/src/redux/modal/modal.slice.ts +++ b/src/redux/modal/modal.slice.ts @@ -22,6 +22,7 @@ import { openLayerTextFactoryModalReducer, openLayerTextEditFactoryModalReducer, openLayerRectFactoryModalReducer, + openLayerRectEditFactoryModalReducer, } from './modal.reducers'; const modalSlice = createSlice({ @@ -49,6 +50,7 @@ const modalSlice = createSlice({ openLayerTextFactoryModal: openLayerTextFactoryModalReducer, openLayerTextEditFactoryModal: openLayerTextEditFactoryModalReducer, openLayerRectFactoryModal: openLayerRectFactoryModalReducer, + openLayerRectEditFactoryModal: openLayerRectEditFactoryModalReducer, }, }); @@ -74,6 +76,7 @@ export const { openLayerTextFactoryModal, openLayerTextEditFactoryModal, openLayerRectFactoryModal, + openLayerRectEditFactoryModal, } = modalSlice.actions; export default modalSlice.reducer; diff --git a/src/types/modal.ts b/src/types/modal.ts index eba75e3e..d7360077 100644 --- a/src/types/modal.ts +++ b/src/types/modal.ts @@ -17,4 +17,5 @@ export type ModalName = | 'layer-image-object-edit-factory' | 'layer-text-factory' | 'layer-text-edit-factory' - | 'layer-rect-factory'; + | 'layer-rect-factory' + | 'layer-rect-edit-factory'; -- GitLab From 58cb5b7510566848b3539606a29b998a13c337bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 14:53:18 +0100 Subject: [PATCH 09/15] feat(layers-rect): implement layer rectangle deleting --- .../LayersDrawerObjectsList.component.tsx | 48 ++++++++++++++----- src/redux/apiPath.ts | 2 + src/redux/layers/layers.reducers.ts | 16 +++++++ src/redux/layers/layers.slice.ts | 3 ++ src/redux/layers/layers.thunks.ts | 13 +++++ 5 files changed, 71 insertions(+), 11 deletions(-) diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index bd6c7cdd..7a61c476 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -11,6 +11,7 @@ import { LayersDrawerTextItem } from '@/components/Map/Drawer/LayersDrawer/Layer import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; import { removeLayerImage, + removeLayerRect, removeLayerText, updateLayerImageObject, updateLayerRect, @@ -18,6 +19,7 @@ import { } from '@/redux/layers/layers.thunks'; import { layerDeleteImage, + layerDeleteRect, layerDeleteText, layerUpdateImage, layerUpdateRect, @@ -52,13 +54,18 @@ interface LayersDrawerObjectsListProps { const removeObjectConfig = { image: { question: 'Are you sure you want to remove the image?', - successMessage: 'The layer image has been successfully removed', - errorMessage: 'An error occurred while removing the layer text', + successMessage: 'The layer image has been successfully removed.', + errorMessage: 'An error occurred while removing the layer text.', }, text: { question: 'Are you sure you want to remove the text?', - successMessage: 'The layer text has been successfully removed', - errorMessage: 'An error occurred while removing the layer text', + successMessage: 'The layer text has been successfully removed.', + errorMessage: 'An error occurred while removing the layer text.', + }, + rect: { + question: 'Are you sure you want to remove the rectangle?', + successMessage: 'The layer rectangle has been successfully removed.', + errorMessage: 'An error occurred while removing the layer rectangle.', }, }; @@ -72,21 +79,25 @@ export const LayersDrawerObjectsList = ({ const minZIndex = useAppSelector(state => minObjectZIndexForLayerSelector(state, layerId)); const layer = useAppSelector(state => layerByIdSelector(state, layerId)); const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); - const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image'>(undefined); - const [layerObjectToRemove, setLayerObjectToRemove] = useState<LayerImage | LayerText | null>( - null, + const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image' | 'rect'>( + undefined, ); + const [layerObjectToRemove, setLayerObjectToRemove] = useState< + LayerImage | LayerText | LayerRect | null + >(null); const dispatch = useAppDispatch(); const setBounds = useSetBounds(); const pointToProjection = usePointToProjection(); const { mapInstance } = useMapInstance(); - const removeObject = (layerObject: LayerImage | LayerText): void => { + const removeObject = (layerObject: LayerImage | LayerText | LayerRect): void => { setLayerObjectToRemove(layerObject); if ('glyph' in layerObject) { setRemoveModalState('image'); - } else { + } else if ('notes' in layerObject) { setRemoveModalState('text'); + } else { + setRemoveModalState('rect'); } }; @@ -115,7 +126,7 @@ export const LayersDrawerObjectsList = ({ textId: layerObjectToRemove.id, }), ); - } else { + } else if (removeModalState === 'image') { await dispatch( removeLayerImage({ modelId: currentModelId, @@ -130,6 +141,21 @@ export const LayersDrawerObjectsList = ({ imageId: layerObjectToRemove.id, }), ); + } else { + await dispatch( + removeLayerRect({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + rectId: layerObjectToRemove.id, + }), + ).unwrap(); + dispatch( + layerDeleteRect({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + rectId: layerObjectToRemove.id, + }), + ); } removeElementFromLayer({ mapInstance, @@ -335,7 +361,7 @@ export const LayersDrawerObjectsList = ({ key={layerRect.id} moveToFront={() => moveRectToFront(layerRect)} moveToBack={() => moveRectToBack(layerRect)} - removeObject={() => {}} + removeObject={() => removeObject(layerRect)} centerObject={() => centerObject(layerRect)} editObject={() => editRect()} isLayerVisible={isLayerVisible} diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts index df31fe9e..7447981f 100644 --- a/src/redux/apiPath.ts +++ b/src/redux/apiPath.ts @@ -45,6 +45,8 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/`, updateLayerRect: (modelId: number, layerId: number, rectId: number | string): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/${rectId}`, + removeLayerRect: (modelId: number, layerId: number, rectId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/${rectId}`, getLayerOvals: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/`, getLayerLines: (modelId: number, layerId: number): string => diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index 74b83a3d..c9138958 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -255,3 +255,19 @@ export const layerUpdateRectReducer = ( } setLayerRect({ layerId, layers: data.layers, layerRect }); }; + +export const layerDeleteRectReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; rectId: number }>, +): void => { + const { modelId, layerId, rectId } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + const layer = data.layers.find(layerState => layerState.details.id === layerId); + if (!layer) { + return; + } + delete layer.rects[rectId]; +}; diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index 0760126a..22ddfca7 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -16,6 +16,7 @@ import { layerUpdateTextReducer, layerAddRectReducer, layerUpdateRectReducer, + layerDeleteRectReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ @@ -33,6 +34,7 @@ export const layersSlice = createSlice({ layerDeleteText: layerDeleteTextReducer, layerAddRect: layerAddRectReducer, layerUpdateRect: layerUpdateRectReducer, + layerDeleteRect: layerDeleteRectReducer, setDrawLayer: setDrawLayerReducer, }, extraReducers: builder => { @@ -54,6 +56,7 @@ export const { layerDeleteText, layerAddRect, layerUpdateRect, + layerDeleteRect, setDrawLayer, } = layersSlice.actions; diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 4d351082..70d995f3 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -462,3 +462,16 @@ export const updateLayerRect = createAsyncThunk< } }, ); + +export const removeLayerRect = createAsyncThunk< + null, + { modelId: number; layerId: number; rectId: number }, + ThunkConfig +>('layers/removeLayerRect', async ({ modelId, layerId, rectId }) => { + try { + await axiosInstanceNewAPI.delete<void>(apiPath.removeLayerRect(modelId, layerId, rectId)); + return null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); -- GitLab From 431516fa9c6162ceef8ec83f5ca5332f43e77f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Tue, 18 Feb 2025 15:26:03 +0100 Subject: [PATCH 10/15] bugfix(layer-objects): fix transforming new layer elements --- .../LayersDrawerLayerActions.component.tsx | 72 ++++++++++--------- .../useOlMapAdditionalLayers.ts | 29 +++++--- 2 files changed, 58 insertions(+), 43 deletions(-) diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx index dd015fd6..b6f937e6 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx @@ -56,41 +56,45 @@ export const LayersDrawerLayerActions = ({ className="h-auto w-auto bg-transparent p-0" onClick={() => toggleActiveLayer(!isActive)} /> - <IconButton - title="Move to front" - icon="move-front" - className="h-auto w-auto bg-transparent p-0" - onClick={moveToFront} - /> - <IconButton - title="Move to back" - icon="move-back" - className="h-auto w-auto bg-transparent p-0" - onClick={moveToBack} - /> - {zIndex < 0 && ( - <IconButton - title="Move above the diagram" - icon="layer-arrow-up" - className="h-auto w-auto bg-transparent p-0" - onClick={moveAboveDiagram} - /> + {isActive && ( + <> + <IconButton + title="Move to front" + icon="move-front" + className="h-auto w-auto bg-transparent p-0" + onClick={moveToFront} + /> + <IconButton + title="Move to back" + icon="move-back" + className="h-auto w-auto bg-transparent p-0" + onClick={moveToBack} + /> + {zIndex < 0 && ( + <IconButton + title="Move above the diagram" + icon="layer-arrow-up" + className="h-auto w-auto bg-transparent p-0" + onClick={moveAboveDiagram} + /> + )} + {zIndex > 0 && ( + <IconButton + title="Move below the diagram" + icon="layer-arrow-down" + className="h-auto w-auto bg-transparent p-0" + onClick={moveBelowDiagram} + /> + )} + <LayerDrawerLayerContextMenu + removeLayer={removeLayer} + editLayer={editLayer} + addImage={addImage} + addText={addText} + addRect={addRect} + /> + </> )} - {zIndex > 0 && ( - <IconButton - title="Move below the diagram" - icon="layer-arrow-down" - className="h-auto w-auto bg-transparent p-0" - onClick={moveBelowDiagram} - /> - )} - <LayerDrawerLayerContextMenu - removeLayer={removeLayer} - editLayer={editLayer} - addImage={addImage} - addText={addText} - addRect={addRect} - /> </> )} </div> diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 0ca5564b..fcd37dd6 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -1,7 +1,7 @@ /* eslint-disable no-magic-numbers */ import { Collection, Feature } from 'ol'; import VectorLayer from 'ol/layer/Vector'; -import VectorSource from 'ol/source/Vector'; +import VectorSource, { VectorSourceEvent } from 'ol/source/Vector'; import { useEffect, useMemo, useRef, useState } from 'react'; import { useSelector } from 'react-redux'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; @@ -165,10 +165,7 @@ export const useOlMapAdditionalLayers = ( } }, [layersForCurrentModel, layersLoading, layersLoadingState]); - const transformInteraction = useMemo(() => { - if (!dispatch || !currentModelId || !activeLayers.length) { - return null; - } + const featuresToSelect = useMemo(() => { const features: Array<Feature<Geometry>> = []; const activeVectorLayers = vectorLayers.filter(layer => activeLayers.includes(layer.get('id'))); activeVectorLayers.forEach(vectorLayer => { @@ -176,15 +173,21 @@ export const useOlMapAdditionalLayers = ( features.push(...vectorLayer.get('rectsFeatures')); features.push(...vectorLayer.get('textsFeatures')); }); - const featuresCollection = new Collection(features); + return new Collection(features); + }, [activeLayers, vectorLayers]); + + const transformInteraction = useMemo(() => { + if (!dispatch || !currentModelId) { + return null; + } return getTransformInteraction( dispatch, mapSize, currentModelId, - featuresCollection, + featuresToSelect, restrictionExtent, ); - }, [dispatch, mapSize, currentModelId, restrictionExtent, activeLayers, vectorLayers]); + }, [dispatch, currentModelId, mapSize, featuresToSelect, restrictionExtent]); const transformRef = useRef(transformInteraction); useEffect(() => { @@ -251,19 +254,27 @@ export const useOlMapAdditionalLayers = ( const removeFeatureHandler = (): void => { transformInteraction?.setSelection(new Collection<Feature>()); }; + const addFeatureHandler = (event: VectorSourceEvent): void => { + const newFeature = event.feature; + if (newFeature) { + featuresToSelect.push(newFeature); + } + }; activeVectorLayers.forEach(activeVectorLayer => { const source = activeVectorLayer.getSource(); source?.on('removefeature', removeFeatureHandler); + source?.on('addfeature', addFeatureHandler); }); return () => { activeVectorLayers.forEach(activeVectorLayer => { const source = activeVectorLayer.getSource(); source?.un('removefeature', removeFeatureHandler); + source?.un('addfeature', addFeatureHandler); }); }; - }, [activeLayers, layersVisibilityForCurrentModel, transformInteraction, vectorLayers]); + }, [activeLayers, featuresToSelect, transformInteraction, vectorLayers]); useEffect(() => { if ( -- GitLab From 8e5d74e00c9dfd111ff600f7eee47ac324e08984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Wed, 19 Feb 2025 09:59:59 +0100 Subject: [PATCH 11/15] feat(layer-ovals): implement adding oval --- .../EditOverlayModal.component.test.tsx | 7 + .../hooks/useEditOverlay.test.ts | 5 + ...eObjectEditFactoryModal.component.test.tsx | 1 + ...ImageObjectFactoryModal.component.test.tsx | 1 + .../LayerOvalFactory.types.ts | 5 + .../LayerOvalFactoryModal.component.test.tsx | 102 ++++++++++ .../LayerOvalFactoryModal.component.tsx | 107 ++++++++++ .../LayerOvalFactoryModal.styles.css | 12 ++ .../LayerOvalForm.component.tsx | 22 ++ .../LayerRectFactoryModal.component.test.tsx | 1 + .../LayerTextFactoryModal.component.test.tsx | 1 + .../FunctionalArea/Modal/Modal.component.tsx | 6 + .../ModalLayout/ModalLayout.component.tsx | 8 +- .../LayerDrawerLayerContextMenu.component.tsx | 6 + .../LayersDrawerLayer.component.tsx | 6 + .../LayersDrawerLayerActions.component.tsx | 3 + ...sDrawerLayerContextMenuItems.component.tsx | 20 +- .../LayersDrawerObjectsList.component.tsx | 4 + .../LayersDrawerOvalItem.component.tsx | 23 +++ .../useOlMapAdditionalLayers.ts | 26 +++ .../utils/shapes/coords/getEllipseCoords.ts | 8 +- .../utils/shapes/layer/Layer.test.ts | 10 +- .../Map/MapViewer/utils/shapes/layer/Layer.ts | 65 +++--- .../utils/shapes/layer/elements/LayerOval.ts | 191 ++++++++++++++++++ .../utils/shapes/layer/elements/LayerRect.ts | 2 +- .../interaction/getDrawOvalInteraction.ts | 82 ++++++++ .../shapes/layer/utils/drawElementOnLayer.ts | 4 +- .../utils/websocket/processLayerOval.ts | 36 ++++ .../utils/websocket/processMessage.ts | 3 + src/models/fixtures/layerOvalFixture.ts | 9 + src/models/fixtures/layerOvalsFixture.ts | 2 +- src/models/layerOvalSchema.ts | 4 +- src/redux/apiPath.ts | 4 + src/redux/layers/layers.reducers.test.ts | 6 +- src/redux/layers/layers.reducers.ts | 15 +- src/redux/layers/layers.selectors.ts | 4 +- src/redux/layers/layers.slice.ts | 7 +- src/redux/layers/layers.thunks.test.ts | 2 +- src/redux/layers/layers.thunks.ts | 56 ++++- src/redux/layers/layers.types.ts | 2 +- src/redux/layers/utils/setLayerOval.ts | 18 ++ .../mapEditTools/mapEditTools.constants.ts | 1 + src/redux/modal/modal.constants.ts | 1 + src/redux/modal/modal.mock.ts | 1 + src/redux/modal/modal.reducers.ts | 10 + src/redux/modal/modal.selector.ts | 5 + src/redux/modal/modal.slice.ts | 3 + src/redux/modal/modal.types.ts | 13 +- src/shared/Icon/Icon.component.tsx | 2 + src/shared/Icon/Icons/OvalIcon.tsx | 16 ++ src/shared/Icon/Icons/RectangleIcon.tsx | 2 +- src/types/iconTypes.ts | 3 +- src/types/modal.ts | 3 +- 53 files changed, 885 insertions(+), 71 deletions(-) create mode 100644 src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types.ts create mode 100644 src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx create mode 100644 src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx create mode 100644 src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.styles.css create mode 100644 src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component.tsx create mode 100644 src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx create mode 100644 src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts create mode 100644 src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction.ts create mode 100644 src/components/Map/MapViewer/utils/websocket/processLayerOval.ts create mode 100644 src/models/fixtures/layerOvalFixture.ts create mode 100644 src/redux/layers/utils/setLayerOval.ts create mode 100644 src/shared/Icon/Icons/OvalIcon.tsx diff --git a/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx b/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx index 12f95047..25a4cd3c 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx @@ -53,6 +53,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); @@ -75,6 +76,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); @@ -110,6 +112,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -150,6 +153,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -191,6 +195,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -240,6 +245,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -273,6 +279,7 @@ describe('EditOverlayModal - component', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts b/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts index 3ab251bf..30989ff3 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts +++ b/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts @@ -29,6 +29,7 @@ describe('useEditOverlay', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); @@ -70,6 +71,7 @@ describe('useEditOverlay', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); @@ -114,6 +116,7 @@ describe('useEditOverlay', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); @@ -154,6 +157,7 @@ describe('useEditOverlay', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); @@ -195,6 +199,7 @@ describe('useEditOverlay', () => { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx index 5233b3f6..fad84a7f 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx @@ -64,6 +64,7 @@ const renderComponent = ( }, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx index 53f1af3d..a8e2b87a 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx @@ -58,6 +58,7 @@ const renderComponent = (): { store: StoreType } => { }, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types.ts b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types.ts new file mode 100644 index 00000000..b3b9a00c --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types.ts @@ -0,0 +1,5 @@ +import { Color } from '@/types/models'; + +export type LayerOvalFactoryForm = { + color: Color; +}; diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx new file mode 100644 index 00000000..6a734c7d --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx @@ -0,0 +1,102 @@ +/* eslint-disable no-magic-numbers */ +import { render, screen, fireEvent } from '@testing-library/react'; +import { act } from 'react-dom/test-utils'; +import { StoreType } from '@/redux/store'; +import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore'; +import { INITIAL_STORE_STATE_MOCK } from '@/redux/root/root.fixtures'; +import { GLYPHS_STATE_INITIAL_MOCK } from '@/redux/glyphs/glyphs.mock'; +import { apiPath } from '@/redux/apiPath'; +import { HttpStatusCode } from 'axios'; +import { mockNetworkNewAPIResponse } from '@/utils/mockNetworkResponse'; +import { + LAYER_STATE_DEFAULT_DATA, + LAYERS_STATE_INITIAL_LAYER_MOCK, +} from '@/redux/layers/layers.mock'; +import { MODELS_DATA_MOCK_WITH_MAIN_MAP } from '@/redux/models/models.mock'; +import { overlayFixture } from '@/models/fixtures/overlaysFixture'; +import { showToast } from '@/utils/showToast'; +import { layerOvalFixture } from '@/models/fixtures/layerOvalFixture'; +import { LayerOvalFactoryModal } from './LayerOvalFactoryModal.component'; + +const mockedAxiosNewClient = mockNetworkNewAPIResponse(); + +const glyph = { id: 1, file: 23, filename: 'Glyph1.png' }; + +jest.mock('../../../../utils/showToast'); + +const renderComponent = (): { store: StoreType } => { + const { Wrapper, store } = getReduxWrapperWithStore({ + ...INITIAL_STORE_STATE_MOCK, + glyphs: { + ...GLYPHS_STATE_INITIAL_MOCK, + data: [glyph], + }, + layers: { + 0: { + ...LAYERS_STATE_INITIAL_LAYER_MOCK, + data: { + ...LAYER_STATE_DEFAULT_DATA, + activeLayers: [1], + drawLayer: 1, + }, + }, + }, + modal: { + isOpen: true, + modalTitle: overlayFixture.name, + modalName: 'layer-oval-factory', + editOverlayState: overlayFixture, + molArtState: {}, + overviewImagesState: {}, + errorReportState: {}, + layerFactoryState: { id: undefined }, + layerImageObjectFactoryState: undefined, + layerTextFactoryState: undefined, + layerRectFactoryState: undefined, + layerOvalFactoryState: { + x: 1, + y: 1, + width: 1, + height: 1, + }, + }, + models: { + ...MODELS_DATA_MOCK_WITH_MAIN_MAP, + }, + }); + + return { + store, + ...render( + <Wrapper> + <LayerOvalFactoryModal /> + </Wrapper>, + ), + }; +}; + +describe('LayerOvalFactoryModal - component', () => { + it('should render LayerOvalFactoryModal component with initial state', () => { + renderComponent(); + + expect(screen.getByText('Color:')).toBeInTheDocument(); + }); + + it('should handle form submission correctly', async () => { + mockedAxiosNewClient + .onPost(apiPath.addLayerOval(0, 1)) + .reply(HttpStatusCode.Ok, layerOvalFixture); + renderComponent(); + + const submitButton = screen.getByText(/Submit/i); + + await act(async () => { + fireEvent.click(submitButton); + }); + + expect(showToast).toHaveBeenCalledWith({ + message: 'A new oval has been successfully added.', + type: 'success', + }); + }); +}); diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx new file mode 100644 index 00000000..9031ee4d --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx @@ -0,0 +1,107 @@ +/* eslint-disable no-magic-numbers */ +import React, { useState } from 'react'; +import './LayerOvalFactoryModal.styles.css'; +import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { Button } from '@/shared/Button'; +import { BLACK_COLOR } from '@/components/Map/MapViewer/MapViewer.constants'; +import { LayerOvalForm } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component'; +import { LayerOvalFactoryForm } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { + layersDrawLayerSelector, + maxObjectZIndexForLayerSelector, +} from '@/redux/layers/layers.selectors'; +import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { Color } from '@/types/models'; +import { layerOvalFactoryStateSelector } from '@/redux/modal/modal.selector'; +import { addLayerOval } from '@/redux/layers/layers.thunks'; +import { showToast } from '@/utils/showToast'; +import { layerAddOval } from '@/redux/layers/layers.slice'; +import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; +import { closeModal } from '@/redux/modal/modal.slice'; +import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.slice'; +import { SerializedError } from '@reduxjs/toolkit'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { useMapInstance } from '@/utils/context/mapInstanceContext'; + +export const LayerOvalFactoryModal: React.FC = () => { + const drawLayer = useAppSelector(layersDrawLayerSelector); + const currentModelId = useAppSelector(currentModelIdSelector); + const layerOvalFactoryState = useAppSelector(layerOvalFactoryStateSelector); + const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); + const dispatch = useAppDispatch(); + const { mapInstance } = useMapInstance(); + + const [isSending, setIsSending] = useState<boolean>(false); + const [data, setData] = useState<LayerOvalFactoryForm>({ + color: BLACK_COLOR, + }); + + const handleSubmit = async (): Promise<void> => { + if (!layerOvalFactoryState || !drawLayer) { + return; + } + try { + const layerOval = await dispatch( + addLayerOval({ + modelId: currentModelId, + layerId: drawLayer, + boundingBox: layerOvalFactoryState, + ovalData: data, + z: maxZIndex + 1, + }), + ).unwrap(); + if (!layerOval) { + showToast({ + type: 'error', + message: 'An error occurred while adding a new oval.', + }); + return; + } + dispatch(layerAddOval({ modelId: currentModelId, layerId: drawLayer, layerOval })); + drawElementOnLayer({ + mapInstance, + activeLayer: drawLayer, + object: layerOval, + drawFunctionKey: 'drawOval', + }); + showToast({ + type: 'success', + message: 'A new oval has been successfully added.', + }); + dispatch(closeModal()); + dispatch(mapEditToolsSetActiveAction(null)); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while adding a new oval.', + }); + } finally { + setIsSending(false); + } + }; + + const changeValues = (value: string | number | Color, key: string): void => { + setData(prevData => ({ ...prevData, [key]: value })); + }; + + return ( + <div className="relative flex w-[300px] flex-col gap-4 rounded-b-lg border border-t-[#E1E0E6] bg-white p-[24px]"> + {isSending && ( + <div className="c-layer-oval-factory-modal-loader"> + <LoadingIndicator width={44} height={44} /> + </div> + )} + <LayerOvalForm onChange={changeValues} data={data} /> + <hr /> + <Button + type="button" + onClick={handleSubmit} + className="justify-center self-end justify-self-end text-base font-medium" + > + Submit + </Button> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.styles.css b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.styles.css new file mode 100644 index 00000000..dbcb11c8 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.styles.css @@ -0,0 +1,12 @@ +.c-layer-oval-factory-modal-loader { + width: 100%; + height: 100%; + margin-left: -24px; + margin-top: -24px; + background: #f9f9f980; + z-index: 1; + position: absolute; + display: flex; + align-items: center; + justify-content: center; +} diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component.tsx b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component.tsx new file mode 100644 index 00000000..feb828eb --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component.tsx @@ -0,0 +1,22 @@ +/* eslint-disable no-magic-numbers */ +import { ColorTilePicker } from '@/shared/ColorPicker/ColorTilePicker.component'; +import hexToRgbIntAlpha from '@/utils/convert/hexToRgbIntAlpha'; +import { Color } from '@/types/models'; +import { LayerOvalFactoryForm } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types'; + +type LayerOvalFormProps = { + data: LayerOvalFactoryForm; + onChange: (value: number | string | Color, key: string) => void; +}; + +export const LayerOvalForm = ({ data, onChange }: LayerOvalFormProps): React.JSX.Element => { + return ( + <div> + <span>Color:</span> + <ColorTilePicker + initialColor={data.color} + colorChange={color => onChange(hexToRgbIntAlpha(color), 'color')} + /> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx index cfaed463..8dc45723 100644 --- a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx @@ -58,6 +58,7 @@ const renderComponent = (): { store: StoreType } => { height: 1, }, layerTextFactoryState: undefined, + layerOvalFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx index fa095c9a..6fc1afea 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx @@ -57,6 +57,7 @@ const renderComponent = (): { store: StoreType } => { layerFactoryState: { id: undefined }, layerImageObjectFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, layerTextFactoryState: { x: 1, y: 1, diff --git a/src/components/FunctionalArea/Modal/Modal.component.tsx b/src/components/FunctionalArea/Modal/Modal.component.tsx index 81de8ecb..4dc19aee 100644 --- a/src/components/FunctionalArea/Modal/Modal.component.tsx +++ b/src/components/FunctionalArea/Modal/Modal.component.tsx @@ -13,6 +13,7 @@ import { LayerTextFactoryModal } from '@/components/FunctionalArea/Modal/LayerTe import { LayerTextEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component'; import { LayerRectFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component'; import { LayerRectEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component'; +import { LayerOvalFactoryModal } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component'; import { EditOverlayModal } from './EditOverlayModal'; import { LoginModal } from './LoginModal'; import { ErrorReportModal } from './ErrorReportModal'; @@ -123,6 +124,11 @@ export const Modal = (): React.ReactNode => { <LayerRectEditFactoryModal /> </ModalLayout> )} + {isOpen && modalName === 'layer-oval-factory' && ( + <ModalLayout> + <LayerOvalFactoryModal /> + </ModalLayout> + )} </> ); }; diff --git a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx index 6bca9546..aa3c1465 100644 --- a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx +++ b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx @@ -34,8 +34,9 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { modalName === 'add-comment' && 'h-auto w-[400px]', modalName === 'error-report' && 'h-auto w-[800px]', modalName === 'layer-factory' && 'h-auto w-[400px]', + modalName === 'layer-oval-factory' && 'h-auto w-[300px] overflow-visible', ['layer-rect-factory', 'layer-rect-edit-factory'].includes(modalName) && - 'relative h-auto w-[400px] overflow-visible', + 'h-auto w-[400px] overflow-visible', ['layer-text-factory', 'layer-text-edit-factory'].includes(modalName) && 'h-auto w-[900px]', ['layer-image-object-factory', 'layer-image-object-edit-factory'].includes(modalName) && @@ -46,8 +47,9 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { <div className={twMerge( 'flex items-center justify-between bg-white p-[24px] text-xl', - ['layer-rect-factory', 'layer-rect-edit-factory'].includes(modalName) && - 'rounded-t-lg', + ['layer-rect-factory', 'layer-rect-edit-factory', 'layer-oval-factory'].includes( + modalName, + ) && 'rounded-t-lg', )} > {(modalName === 'error-report' || modalName === 'access-denied') && ( diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx index 10d57012..ce8ca33d 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx @@ -8,6 +8,7 @@ type LayerDrawerLayerContextMenuProps = { addImage: () => void; addText: () => void; addRect: () => void; + addOval: () => void; }; export const LayerDrawerLayerContextMenu = ({ @@ -16,6 +17,7 @@ export const LayerDrawerLayerContextMenu = ({ addImage, addText, addRect, + addOval, }: LayerDrawerLayerContextMenuProps): JSX.Element => { const [menuVisible, setMenuVisible] = useState(false); const menuRef = useRef<HTMLUListElement>(null); @@ -72,6 +74,10 @@ export const LayerDrawerLayerContextMenu = ({ setMenuVisible(false); addRect(); }} + addOval={() => { + setMenuVisible(false); + addOval(); + }} /> )} </div> diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index d937ed6e..9c674801 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -70,6 +70,11 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_RECT)); }; + const addOval = (): void => { + dispatch(setDrawLayer({ modelId: currentModelId, layerId: layerDetails.id })); + dispatch(mapEditToolsSetActiveAction(MAP_EDIT_ACTIONS.ADD_OVAL)); + }; + const rejectRemove = (): void => { setIsModalOpen(false); }; @@ -188,6 +193,7 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX addImage={addImage} addText={addText} addRect={addRect} + addOval={addOval} moveToFront={moveToFront} moveToBack={moveToBack} moveAboveDiagram={moveAboveDiagram} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx index b6f937e6..f97407df 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx @@ -16,6 +16,7 @@ type LayersDrawerLayerActionsProps = { addImage: () => void; addText: () => void; addRect: () => void; + addOval: () => void; moveToFront: () => void; moveToBack: () => void; moveAboveDiagram: () => void; @@ -33,6 +34,7 @@ export const LayersDrawerLayerActions = ({ addImage, addText, addRect, + addOval, moveToFront, moveToBack, moveAboveDiagram, @@ -92,6 +94,7 @@ export const LayersDrawerLayerActions = ({ addImage={addImage} addText={addText} addRect={addRect} + addOval={addOval} /> </> )} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx index c01f2eb7..4871ce70 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx @@ -7,6 +7,7 @@ type LayerDrawerLayerContextMenuProps = { addImage: () => void; addText: () => void; addRect: () => void; + addOval: () => void; }; export const LayerDrawerLayerContextMenuItems = forwardRef< @@ -14,7 +15,14 @@ export const LayerDrawerLayerContextMenuItems = forwardRef< LayerDrawerLayerContextMenuProps >( ( - { removeLayer, editLayer, addImage, addText, addRect }: LayerDrawerLayerContextMenuProps, + { + removeLayer, + editLayer, + addImage, + addText, + addRect, + addOval, + }: LayerDrawerLayerContextMenuProps, ref, ): JSX.Element => { const handleKeyPress = (): void => {}; @@ -54,6 +62,16 @@ export const LayerDrawerLayerContextMenuItems = forwardRef< <Icon name="rectangle" /> <span>Add rectangle</span> </li> + <li + className="flex min-h-[24px] cursor-pointer gap-3 px-4 py-1 hover:bg-gray-200" + tabIndex={0} + onClick={addOval} + onKeyDown={handleKeyPress} + role="menuitem" + > + <Icon name="oval" /> + <span>Add oval</span> + </li> <li className="flex min-h-[24px] cursor-pointer gap-3 px-4 py-1 hover:bg-gray-200" tabIndex={0} diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 7a61c476..04f4d1e7 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -44,6 +44,7 @@ import { openLayerTextEditFactoryModal, } from '@/redux/modal/modal.slice'; import { LayersDrawerRectItem } from '@/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component'; +import { LayersDrawerOvalItem } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component'; interface LayersDrawerObjectsListProps { layerId: number; @@ -368,6 +369,9 @@ export const LayersDrawerObjectsList = ({ isLayerActive={isLayerActive} /> ))} + {Object.values(layer.ovals).map(layerOval => ( + <LayersDrawerOvalItem layerOval={layerOval} key={layerOval.id} /> + ))} </div> ); }; diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx new file mode 100644 index 00000000..5a4176fa --- /dev/null +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx @@ -0,0 +1,23 @@ +import React, { JSX } from 'react'; +import { LayerOval } from '@/types/models'; +import { Icon } from '@/shared/Icon'; + +interface LayersDrawerOvalItemProps { + layerOval: LayerOval; +} + +export const LayersDrawerOvalItem = ({ + layerOval, +}: LayersDrawerOvalItemProps): JSX.Element | null => { + return ( + <div + className="flex min-h-[24px] items-center justify-between gap-2" + id={`layer-oval-item-${layerOval.id}`} + > + <div className="flex gap-2"> + <Icon name="oval" className="shrink-0" /> + <span className="truncate">oval - {layerOval.id}</span> + </div> + </div> + ); +}; diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index fcd37dd6..e3477c83 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -43,6 +43,7 @@ import getTransformInteraction from '@/components/Map/MapViewer/utils/shapes/lay import { useWebSocketEntityUpdatesContext } from '@/utils/websocket-entity-updates/webSocketEntityUpdatesProvider'; import processMessage from '@/components/Map/MapViewer/utils/websocket/processMessage'; import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; +import getDrawOvalInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction'; export const useOlMapAdditionalLayers = ( mapInstance: MapInstance, @@ -114,6 +115,13 @@ export const useOlMapAdditionalLayers = ( ); }, [mapSize, dispatch, restrictionExtent]); + const drawOvalInteraction = useMemo(() => { + if (!mapSize || !dispatch) { + return null; + } + return getDrawOvalInteraction(mapSize, dispatch, restrictionExtent); + }, [mapSize, dispatch, restrictionExtent]); + const drawRectInteraction = useMemo(() => { if (!mapSize || !dispatch) { return null; @@ -363,5 +371,23 @@ export const useOlMapAdditionalLayers = ( hasPrivilegeToWriteProject, ]); + useEffect(() => { + if (!drawOvalInteraction || !hasPrivilegeToWriteProject) { + return; + } + mapInstance?.removeInteraction(drawOvalInteraction); + if (!drawLayer || activeAction !== MAP_EDIT_ACTIONS.ADD_OVAL) { + return; + } + mapInstance?.addInteraction(drawOvalInteraction); + }, [ + activeAction, + drawLayer, + currentModelId, + drawOvalInteraction, + mapInstance, + hasPrivilegeToWriteProject, + ]); + return vectorLayers; }; diff --git a/src/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords.ts b/src/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords.ts index bd72dd21..621007aa 100644 --- a/src/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords.ts +++ b/src/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords.ts @@ -21,7 +21,7 @@ export default function getEllipseCoords({ radius?: ShapeRelAbs; height: number; width: number; - pointToProjection: UsePointToProjectionResult; + pointToProjection?: UsePointToProjectionResult; points?: number; }): Array<Coordinate> { let centerX = x; @@ -65,7 +65,11 @@ export default function getEllipseCoords({ angle = (i / points) * 2 * Math.PI; coordsX = centerX + radiusX * Math.cos(angle); coordsY = centerY + radiusY * Math.sin(angle); - coordinates.push(pointToProjection({ x: coordsX, y: coordsY })); + if (pointToProjection) { + coordinates.push(pointToProjection({ x: coordsX, y: coordsY })); + } else { + coordinates.push([coordsX, coordsY]); + } } coordinates.push(coordinates[0]); diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts index 17e9a679..ac3a9679 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.test.ts @@ -69,20 +69,20 @@ describe('Layer', () => { fillColor: WHITE_COLOR, }, }, - ovals: [ - { + ovals: { + 1: { id: 1, + layer: 1, x: 10, y: 10, z: 3, width: 100, height: 100, - size: 12312, - elementId: '341', lineWidth: 2, + color: BLACK_COLOR, borderColor: BLACK_COLOR, }, - ], + }, lines: [ { id: 120899, diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 851bb3ea..64972ab5 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -2,7 +2,7 @@ import { LayerImage as LayerImageModel, LayerLine, - LayerOval, + LayerOval as LayerOvalModel, LayerRect as LayerRectModel, LayerText as LayerTextModel, } from '@/types/models'; @@ -21,7 +21,6 @@ import { LAYER_ELEMENT_TYPES, LAYER_TYPE, REACTION_ELEMENT_CUTOFF_SCALE, - TRANSPARENT_COLOR, } from '@/components/Map/MapViewer/MapViewer.constants'; import { Stroke } from 'ol/style'; import { MapSize } from '@/redux/map/map.types'; @@ -29,16 +28,16 @@ import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style import getArrowFeature from '@/components/Map/MapViewer/utils/shapes/elements/getArrowFeature'; import getRotation from '@/components/Map/MapViewer/utils/shapes/coords/getRotation'; import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; -import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; import LayerText from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerText'; import LayerImage from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage'; import LayerRect from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect'; +import LayerOval from '@/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval'; export interface LayerProps { zIndex: number; texts: { [key: string]: LayerTextModel }; rects: { [key: string]: LayerRectModel }; - ovals: Array<LayerOval>; + ovals: { [key: string]: LayerOvalModel }; lines: Array<LayerLine>; images: { [key: string]: LayerImageModel }; visible: boolean; @@ -57,7 +56,7 @@ export default class Layer { rects: { [key: string]: LayerRectModel }; - ovals: Array<LayerOval>; + ovals: { [key: string]: LayerOvalModel }; lines: Array<LayerLine>; @@ -138,6 +137,7 @@ export default class Layer { this.vectorLayer.set('rectsFeatures', rectsFeatures); this.vectorLayer.set('drawImage', this.drawImage.bind(this)); this.vectorLayer.set('drawText', this.drawText.bind(this)); + this.vectorLayer.set('drawOval', this.drawOval.bind(this)); this.vectorLayer.set('drawRect', this.drawRect.bind(this)); } @@ -204,34 +204,39 @@ export default class Layer { } private getOvalsFeatures = (): Array<Feature<Polygon>> => { - return this.ovals.map(oval => { - const coords = getEllipseCoords({ - x: oval.x + oval.width / 2, - y: oval.y + oval.height / 2, - height: oval.height, - width: oval.width, - pointToProjection: this.pointToProjection, - points: 20, - }); - const polygon = new Polygon([coords]); - const polygonStyle = getStyle({ - geometry: polygon, - borderColor: oval.borderColor, - fillColor: TRANSPARENT_COLOR, - lineWidth: oval.lineWidth, - zIndex: oval.z, - }); - const ovalFeature = new Feature<Polygon>({ - geometry: polygon, - style: polygonStyle, - lineWidth: oval.lineWidth, - elementType: LAYER_ELEMENT_TYPES.OVAL, - }); - ovalFeature.setStyle(this.getStyle.bind(this)); - return ovalFeature; + return Object.values(this.ovals).map(oval => { + return this.getOvalFeature(oval); + }); + }; + + private getOvalFeature = (oval: LayerOvalModel): Feature<Polygon> => { + const ovalObject = new LayerOval({ + elementId: oval.id, + x: oval.x, + y: oval.y, + width: oval.width, + height: oval.height, + layer: oval.layer, + zIndex: oval.z, + color: oval.color, + borderColor: oval.borderColor, + lineWidth: oval.lineWidth, + pointToProjection: this.pointToProjection, + mapInstance: this.mapInstance, + mapSize: this.mapSize, }); + return ovalObject.feature; }; + private drawOval(oval: LayerOvalModel): void { + const ovalFeature = this.getOvalFeature(oval); + const ovalsFeatures = this.vectorLayer.get('ovalsFeatures'); + if (ovalsFeatures && Array.isArray(ovalsFeatures)) { + ovalsFeatures.push(ovalFeature); + } + this.vectorSource.addFeature(ovalFeature); + } + private getLinesFeatures = (): { linesFeatures: Array<Feature<LineString>>; arrowsFeatures: Array<Feature<MultiPolygon>>; diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts new file mode 100644 index 00000000..1620a3c6 --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts @@ -0,0 +1,191 @@ +/* eslint-disable no-magic-numbers */ +import { UsePointToProjectionResult } from '@/utils/map/usePointToProjection'; +import Style from 'ol/style/Style'; +import { Feature } from 'ol'; +import { FeatureLike } from 'ol/Feature'; +import { MapInstance } from '@/types/map'; +import { Color, LayerOval as LayerOvalModel } from '@/types/models'; +import { rgbToHex } from '@/components/Map/MapViewer/utils/shapes/style/rgbToHex'; +import Polygon from 'ol/geom/Polygon'; +import getStroke from '@/components/Map/MapViewer/utils/shapes/style/getStroke'; +import getStyle from '@/components/Map/MapViewer/utils/shapes/style/getStyle'; +import getScaledElementStyle from '@/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle'; +import { Stroke } from 'ol/style'; +import { MapSize } from '@/redux/map/map.types'; +import { Coordinate } from 'ol/coordinate'; +import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; +import { LAYER_ELEMENT_TYPES } from '@/components/Map/MapViewer/MapViewer.constants'; + +export interface LayerOvalProps { + elementId: number; + x: number; + y: number; + width: number; + height: number; + layer: number; + zIndex: number; + color: Color; + borderColor: Color; + lineWidth: number; + pointToProjection: UsePointToProjectionResult; + mapInstance: MapInstance; + mapSize: MapSize; +} + +export default class LayerOval { + elementId: number; + + x: number; + + y: number; + + width: number; + + height: number; + + layer: number; + + zIndex: number; + + color: Color; + + borderColor: Color; + + lineWidth: number; + + style: Style = new Style(); + + polygon: Polygon = new Polygon([]); + + strokeStyle: Stroke = new Stroke(); + + feature: Feature<Polygon>; + + mapSize: MapSize; + + pointToProjection: UsePointToProjectionResult; + + minResolution: number; + + constructor({ + elementId, + x, + y, + width, + height, + layer, + zIndex, + color, + borderColor, + lineWidth, + pointToProjection, + mapInstance, + mapSize, + }: LayerOvalProps) { + this.elementId = elementId; + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.layer = layer; + this.zIndex = zIndex; + this.color = color; + this.borderColor = borderColor; + this.lineWidth = lineWidth; + this.pointToProjection = pointToProjection; + this.mapSize = mapSize; + + const maxZoom = mapInstance?.getView().get('originalMaxZoom'); + this.minResolution = mapInstance?.getView().getResolutionForZoom(maxZoom) || 1; + + this.drawPolygon(); + + this.setStyles(); + + this.feature = new Feature({ + geometry: this.polygon, + layer, + elementType: LAYER_ELEMENT_TYPES.OVAL, + }); + this.feature.setId(this.elementId); + this.feature.set('getObjectData', this.getData.bind(this)); + this.feature.set('setCoordinates', this.setCoordinates.bind(this)); + this.feature.set('refreshPolygon', this.refreshPolygon.bind(this)); + this.feature.set('updateElement', this.updateElement.bind(this)); + this.feature.setStyle(this.getStyle.bind(this)); + } + + private getData(): LayerOvalModel { + return { + id: this.elementId, + x: this.x, + y: this.y, + z: this.zIndex, + width: this.width, + height: this.height, + layer: this.layer, + color: this.color, + borderColor: this.borderColor, + lineWidth: this.lineWidth, + }; + } + + private drawPolygon(): void { + const coords = getEllipseCoords({ + x: this.x + this.width / 2, + y: this.y + this.height / 2, + height: this.height, + width: this.width, + pointToProjection: this.pointToProjection, + points: 30, + }); + this.polygon = new Polygon([coords]); + } + + private refreshPolygon(): void { + this.drawPolygon(); + this.feature.setGeometry(this.polygon); + this.feature.changed(); + } + + private setStyles(): void { + this.strokeStyle = getStroke({ + color: rgbToHex(this.borderColor), + width: 4, + }); + this.style = getStyle({ + geometry: this.polygon, + borderColor: this.borderColor, + fillColor: this.color, + lineWidth: this.lineWidth, + zIndex: this.zIndex, + }); + } + + private updateElement(layerOval: LayerOvalModel): void { + this.elementId = layerOval.id; + this.x = layerOval.x; + this.y = layerOval.y; + this.width = layerOval.width; + this.height = layerOval.height; + this.zIndex = layerOval.z; + this.color = layerOval.color; + this.borderColor = layerOval.borderColor; + + this.refreshPolygon(); + this.setStyles(); + this.feature.changed(); + } + + private setCoordinates(coords: Coordinate[][]): void { + const geometry = this.style.getGeometry(); + if (geometry && geometry instanceof Polygon) { + geometry.setCoordinates(coords); + } + } + + protected getStyle(_: FeatureLike, resolution: number): Style | Array<Style> | void { + const scale = this.minResolution / resolution; + return getScaledElementStyle(this.style, this.strokeStyle, scale); + } +} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts index e86cfc44..8796afc2 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts @@ -212,7 +212,7 @@ export default class LayerRect { } } - protected getStyle(feature: FeatureLike, resolution: number): Style | Array<Style> | void { + protected getStyle(_: FeatureLike, resolution: number): Style | Array<Style> | void { const scale = this.minResolution / resolution; return getScaledElementStyle(this.style, this.strokeStyle, scale); } diff --git a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction.ts b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction.ts new file mode 100644 index 00000000..0d81e14f --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction.ts @@ -0,0 +1,82 @@ +/* eslint-disable no-magic-numbers */ +import Draw from 'ol/interaction/Draw'; +import SimpleGeometry from 'ol/geom/SimpleGeometry'; +import Polygon from 'ol/geom/Polygon'; +import { MapSize } from '@/redux/map/map.types'; +import { AppDispatch } from '@/redux/store'; +import { Coordinate } from 'ol/coordinate'; +import getBoundingBoxFromExtent from '@/components/Map/MapViewer/utils/shapes/coords/getBoundingBoxFromExtent'; +import { Extent } from 'ol/extent'; +import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; +import { openLayerOvalFactoryModal } from '@/redux/modal/modal.slice'; + +export default function getDrawOvalInteraction( + mapSize: MapSize, + dispatch: AppDispatch, + restrictionExtent: Extent, +): Draw { + const drawOvalInteraction = new Draw({ + type: 'Circle', + freehand: false, + freehandCondition: (mapBrowserEvent): boolean => { + const coords = mapBrowserEvent.coordinate; + return ( + coords[0] >= restrictionExtent[0] && + coords[0] <= restrictionExtent[2] && + coords[1] >= restrictionExtent[1] && + coords[1] <= restrictionExtent[3] + ); + }, + geometryFunction: (coordinates, geometry): SimpleGeometry => { + const newGeometry = geometry || new Polygon([]); + if (!Array.isArray(coordinates) || coordinates.length < 2) { + return geometry; + } + const start = coordinates[0] as Coordinate; + const end = coordinates[1] as Coordinate; + + const minX = Math.min( + restrictionExtent[2], + Math.max(restrictionExtent[0], Math.min(start[0], end[0])), + ); + const minY = Math.min( + restrictionExtent[3], + Math.max(restrictionExtent[1], Math.min(start[1], end[1])), + ); + const maxX = Math.max( + restrictionExtent[0], + Math.min(restrictionExtent[2], Math.max(start[0], end[0])), + ); + const maxY = Math.max( + restrictionExtent[1], + Math.min(restrictionExtent[3], Math.max(start[1], end[1])), + ); + const centerX = (minX + maxX) / 2; + const centerY = (minY + maxY) / 2; + const ellipseCoords = getEllipseCoords({ + x: centerX, + y: centerY, + width: Math.abs(maxX - minX), + height: Math.abs(maxY - minY), + }); + newGeometry.setCoordinates([ellipseCoords]); + + return newGeometry; + }, + }); + + drawOvalInteraction.on('drawend', event => { + const geometry = event.feature.getGeometry() as Polygon; + const extent = geometry.getExtent(); + + const boundingBox = getBoundingBoxFromExtent(extent, mapSize); + + if (!boundingBox.width || !boundingBox.height) { + return; + } + + dispatch(openLayerOvalFactoryModal(boundingBox)); + }); + + return drawOvalInteraction; +} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts index 7c6338f0..8bd57e64 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts @@ -1,4 +1,4 @@ -import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import { LayerImage, LayerOval, LayerRect, LayerText } from '@/types/models'; import { MapInstance } from '@/types/map'; export default function drawElementOnLayer({ @@ -9,7 +9,7 @@ export default function drawElementOnLayer({ }: { mapInstance: MapInstance; activeLayer: number; - object: LayerImage | LayerText | LayerRect; + object: LayerImage | LayerText | LayerRect | LayerOval; drawFunctionKey: string; }): void { mapInstance?.getAllLayers().forEach(layer => { diff --git a/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts b/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts new file mode 100644 index 00000000..0f3a7fd1 --- /dev/null +++ b/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts @@ -0,0 +1,36 @@ +import { WebSocketEntityUpdateInterface } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.types'; +import { store } from '@/redux/store'; +import { ENTITY_OPERATION_TYPES } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.constants'; +import { getLayerOval } from '@/redux/layers/layers.thunks'; +import { MapInstance } from '@/types/map'; +import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; + +export default async function processLayerOval({ + data, + mapInstance, +}: { + data: WebSocketEntityUpdateInterface; + mapInstance: MapInstance; +}): Promise<void> { + const { dispatch } = store; + if (data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED) { + const resultOval = await dispatch( + getLayerOval({ + modelId: data.mapId, + layerId: data.layerId, + ovalId: data.entityId, + }), + ).unwrap(); + if (!resultOval) { + return; + } + if (data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED) { + drawElementOnLayer({ + mapInstance, + activeLayer: data.layerId, + object: resultOval, + drawFunctionKey: 'drawOval', + }); + } + } +} diff --git a/src/components/Map/MapViewer/utils/websocket/processMessage.ts b/src/components/Map/MapViewer/utils/websocket/processMessage.ts index 37fc0a91..d09c41b3 100644 --- a/src/components/Map/MapViewer/utils/websocket/processMessage.ts +++ b/src/components/Map/MapViewer/utils/websocket/processMessage.ts @@ -3,6 +3,7 @@ import processLayerImage from '@/components/Map/MapViewer/utils/websocket/proces import { MapInstance } from '@/types/map'; import { ENTITY_TYPES } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.constants'; import processLayerText from '@/components/Map/MapViewer/utils/websocket/processLayerText'; +import processLayerOval from '@/components/Map/MapViewer/utils/websocket/processLayerOval'; export default async function processMessage({ jsonMessage, @@ -17,6 +18,8 @@ export default async function processMessage({ await processLayerImage({ data: jsonMessage, mapInstance }); } else if (jsonMessage.entityType === ENTITY_TYPES.LAYER_TEXT) { await processLayerText({ data: jsonMessage, mapInstance }); + } else if (jsonMessage.entityType === ENTITY_TYPES.LAYER_OVAL) { + await processLayerOval({ data: jsonMessage, mapInstance }); } } catch { throw new Error(`Process websocket message error`); diff --git a/src/models/fixtures/layerOvalFixture.ts b/src/models/fixtures/layerOvalFixture.ts new file mode 100644 index 00000000..628f2840 --- /dev/null +++ b/src/models/fixtures/layerOvalFixture.ts @@ -0,0 +1,9 @@ +import { ZOD_SEED } from '@/constants'; +// eslint-disable-next-line import/no-extraneous-dependencies +import { createFixture } from 'zod-fixture'; +import { layerOvalSchema } from '@/models/layerOvalSchema'; + +export const layerOvalFixture = createFixture(layerOvalSchema, { + seed: ZOD_SEED, + array: { min: 1, max: 1 }, +}); diff --git a/src/models/fixtures/layerOvalsFixture.ts b/src/models/fixtures/layerOvalsFixture.ts index 50544273..57d412af 100644 --- a/src/models/fixtures/layerOvalsFixture.ts +++ b/src/models/fixtures/layerOvalsFixture.ts @@ -6,5 +6,5 @@ import { layerOvalSchema } from '@/models/layerOvalSchema'; export const layerOvalsFixture = createFixture(pageableSchema(layerOvalSchema), { seed: ZOD_SEED, - array: { min: 3, max: 3 }, + array: { min: 1, max: 1 }, }); diff --git a/src/models/layerOvalSchema.ts b/src/models/layerOvalSchema.ts index abd708ef..d0e18a76 100644 --- a/src/models/layerOvalSchema.ts +++ b/src/models/layerOvalSchema.ts @@ -3,13 +3,13 @@ import { colorSchema } from '@/models/colorSchema'; export const layerOvalSchema = z.object({ id: z.number().int().positive(), + layer: z.number(), x: z.number(), y: z.number(), z: z.number(), width: z.number(), height: z.number(), lineWidth: z.number(), - size: z.number(), - elementId: z.string(), + color: colorSchema, borderColor: colorSchema, }); diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts index 7447981f..8427c189 100644 --- a/src/redux/apiPath.ts +++ b/src/redux/apiPath.ts @@ -49,6 +49,10 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/rects/${rectId}`, getLayerOvals: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/`, + getLayerOval: (modelId: number, layerId: number, ovalId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/${ovalId}`, + addLayerOval: (modelId: number, layerId: number): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/`, getLayerLines: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/lines/`, getLayerImages: (modelId: number, layerId: number): string => diff --git a/src/redux/layers/layers.reducers.test.ts b/src/redux/layers/layers.reducers.test.ts index 04b20859..52229f5e 100644 --- a/src/redux/layers/layers.reducers.test.ts +++ b/src/redux/layers/layers.reducers.test.ts @@ -47,7 +47,7 @@ const layersState: LayersState = { details: layerFixture, texts: {}, rects: {}, - ovals: [], + ovals: {}, lines: [], images: {}, }, @@ -103,7 +103,7 @@ describe('layers reducer', () => { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, - ovals: layerOvalsFixture.content, + ovals: { [layerOvalsFixture.content[0].id]: layerOvalsFixture.content[0] }, lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, }, @@ -169,7 +169,7 @@ describe('layers reducer', () => { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, - ovals: layerOvalsFixture.content, + ovals: { [layerOvalsFixture.content[0].id]: layerOvalsFixture.content[0] }, lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, }, diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index c9138958..1ded2929 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -7,8 +7,9 @@ import { LAYERS_STATE_INITIAL_LAYER_MOCK, } from '@/redux/layers/layers.mock'; import { DEFAULT_ERROR } from '@/constants/errors'; -import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import { LayerImage, LayerOval, LayerRect, LayerText } from '@/types/models'; import setLayerRect from '@/redux/layers/utils/setLayerRect'; +import setLayerOval from '@/redux/layers/utils/setLayerOval'; export const getLayersForModelReducer = (builder: ActionReducerMapBuilder<LayersState>): void => { builder.addCase(getLayersForModel.pending, (state, action) => { @@ -271,3 +272,15 @@ export const layerDeleteRectReducer = ( } delete layer.rects[rectId]; }; + +export const layerAddOvalReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; layerOval: LayerOval }>, +): void => { + const { modelId, layerId, layerOval } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + setLayerOval({ layerId, layers: data.layers, layerOval }); +}; diff --git a/src/redux/layers/layers.selectors.ts b/src/redux/layers/layers.selectors.ts index 65493d94..e90bc984 100644 --- a/src/redux/layers/layers.selectors.ts +++ b/src/redux/layers/layers.selectors.ts @@ -121,7 +121,7 @@ export const maxObjectZIndexForLayerSelector = createSelector( const textsMaxZ = getMaxZFromItems(Object.values(foundLayer.texts)); const rectsMaxZ = getMaxZFromItems(Object.values(foundLayer.rects)); - const ovalsMaxZ = getMaxZFromItems(foundLayer.ovals); + const ovalsMaxZ = getMaxZFromItems(Object.values(foundLayer.ovals)); const linesMaxZ = getMaxZFromItems(foundLayer.lines); const imagesMaxZ = getMaxZFromItems(Object.values(foundLayer.images)); @@ -144,7 +144,7 @@ export const minObjectZIndexForLayerSelector = createSelector( const textsMinZ = getMinZFromItems(Object.values(foundLayer.texts)); const rectsMinZ = getMinZFromItems(Object.values(foundLayer.rects)); - const ovalsMinZ = getMinZFromItems(foundLayer.ovals); + const ovalsMinZ = getMinZFromItems(Object.values(foundLayer.ovals)); const linesMinZ = getMinZFromItems(foundLayer.lines); const imagesMinZ = getMinZFromItems(Object.values(foundLayer.images)); diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index 22ddfca7..554865f1 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -17,6 +17,7 @@ import { layerAddRectReducer, layerUpdateRectReducer, layerDeleteRectReducer, + layerAddOvalReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ @@ -26,6 +27,7 @@ export const layersSlice = createSlice({ setLayerVisibility: setLayerVisibilityReducer, setLayerToInactive: setLayerToInactiveReducer, setLayerToActive: setLayerToActiveReducer, + setDrawLayer: setDrawLayerReducer, layerAddImage: layerAddImageReducer, layerUpdateImage: layerUpdateImageReducer, layerDeleteImage: layerDeleteImageReducer, @@ -35,7 +37,7 @@ export const layersSlice = createSlice({ layerAddRect: layerAddRectReducer, layerUpdateRect: layerUpdateRectReducer, layerDeleteRect: layerDeleteRectReducer, - setDrawLayer: setDrawLayerReducer, + layerAddOval: layerAddOvalReducer, }, extraReducers: builder => { getLayersForModelReducer(builder); @@ -48,6 +50,7 @@ export const { setLayerVisibility, setLayerToInactive, setLayerToActive, + setDrawLayer, layerAddImage, layerUpdateImage, layerDeleteImage, @@ -57,7 +60,7 @@ export const { layerAddRect, layerUpdateRect, layerDeleteRect, - setDrawLayer, + layerAddOval, } = layersSlice.actions; export default layersSlice.reducer; diff --git a/src/redux/layers/layers.thunks.test.ts b/src/redux/layers/layers.thunks.test.ts index 2feb78e4..3cde16a5 100644 --- a/src/redux/layers/layers.thunks.test.ts +++ b/src/redux/layers/layers.thunks.test.ts @@ -69,7 +69,7 @@ describe('layers thunks', () => { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, - ovals: layerOvalsFixture.content, + ovals: { [layerOvalsFixture.content[0].id]: layerOvalsFixture.content[0] }, lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, }, diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 70d995f3..77e96278 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -1,7 +1,7 @@ /* eslint-disable no-magic-numbers */ import { z as zod } from 'zod'; import { apiPath } from '@/redux/apiPath'; -import { Color, Layer, LayerImage, LayerRect, Layers, LayerText } from '@/types/models'; +import { Color, Layer, LayerImage, LayerOval, LayerRect, Layers, LayerText } from '@/types/models'; import { validateDataUsingZodSchema } from '@/utils/validateDataUsingZodSchema'; import { createAsyncThunk } from '@reduxjs/toolkit'; import { ThunkConfig } from '@/types/store'; @@ -28,6 +28,7 @@ import { VerticalAlign, } from '@/components/Map/MapViewer/MapViewer.types'; import { LayerRectFactoryForm } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactory.types'; +import { LayerOvalFactoryForm } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types'; export const getLayer = createAsyncThunk< Layer | null, @@ -70,7 +71,7 @@ export const getLayersForModel = createAsyncThunk< details: layer, texts: arrayToKeyValue(textsResponse.data.content as Array<LayerText>, 'id'), rects: arrayToKeyValue(rectsResponse.data.content as Array<LayerRect>, 'id'), - ovals: ovalsResponse.data.content, + ovals: arrayToKeyValue(ovalsResponse.data.content as Array<LayerOval>, 'id'), lines: linesResponse.data.content, images: arrayToKeyValue(imagesResponse.data.content as Array<LayerImage>, 'id'), }; @@ -80,7 +81,7 @@ export const getLayersForModel = createAsyncThunk< return ( zod.array(layerTextSchema).safeParse(Object.values(layer.texts)).success && zod.array(layerRectSchema).safeParse(Object.values(layer.rects)).success && - zod.array(layerOvalSchema).safeParse(layer.ovals).success && + zod.array(layerOvalSchema).safeParse(Object.values(layer.ovals)).success && zod.array(layerLineSchema).safeParse(layer.lines).success && zod.array(layerImageSchema).safeParse(Object.values(layer.images)).success ); @@ -475,3 +476,52 @@ export const removeLayerRect = createAsyncThunk< return Promise.reject(getError({ error })); } }); + +export const getLayerOval = createAsyncThunk< + LayerOval | null, + { + modelId: number; + layerId: number; + ovalId: number; + }, + ThunkConfig +>('layers/getLayerOval', async ({ modelId, layerId, ovalId }) => { + try { + const { data } = await axiosInstanceNewAPI.get<LayerOval>( + apiPath.getLayerOval(modelId, layerId, ovalId), + ); + const isDataValid = validateDataUsingZodSchema(data, layerOvalSchema); + + return isDataValid ? data : null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); + +export const addLayerOval = createAsyncThunk< + LayerOval | null, + { + modelId: number; + layerId: number; + z: number; + boundingBox: BoundingBox; + ovalData: LayerOvalFactoryForm; + }, + ThunkConfig +>('layers/addLayerOval', async ({ modelId, layerId, z, boundingBox, ovalData }) => { + try { + const { data } = await axiosInstanceNewAPI.post<LayerOval>( + apiPath.addLayerOval(modelId, layerId), + { + ...boundingBox, + ...ovalData, + z, + }, + ); + const isDataValid = validateDataUsingZodSchema(data, layerOvalSchema); + + return isDataValid ? data : null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); diff --git a/src/redux/layers/layers.types.ts b/src/redux/layers/layers.types.ts index 26547939..815a69c5 100644 --- a/src/redux/layers/layers.types.ts +++ b/src/redux/layers/layers.types.ts @@ -22,7 +22,7 @@ export type LayerState = { details: Layer; texts: { [key: string]: LayerText }; rects: { [key: string]: LayerRect }; - ovals: LayerOval[]; + ovals: { [key: string]: LayerOval }; lines: LayerLine[]; images: { [key: string]: LayerImage }; }; diff --git a/src/redux/layers/utils/setLayerOval.ts b/src/redux/layers/utils/setLayerOval.ts new file mode 100644 index 00000000..af6bde00 --- /dev/null +++ b/src/redux/layers/utils/setLayerOval.ts @@ -0,0 +1,18 @@ +import { LayerOval } from '@/types/models'; +import { LayerState } from '@/redux/layers/layers.types'; + +export default function setLayerOval({ + layerId, + layers, + layerOval, +}: { + layerId: number; + layers: LayerState[]; + layerOval: LayerOval; +}): void { + const layer = layers.find(layerState => layerState.details.id === layerId); + if (!layer) { + return; + } + layer.ovals[layerOval.id] = layerOval; +} diff --git a/src/redux/mapEditTools/mapEditTools.constants.ts b/src/redux/mapEditTools/mapEditTools.constants.ts index 2a0a9512..d94ae83d 100644 --- a/src/redux/mapEditTools/mapEditTools.constants.ts +++ b/src/redux/mapEditTools/mapEditTools.constants.ts @@ -2,5 +2,6 @@ export const MAP_EDIT_ACTIONS = { DRAW_IMAGE: 'DRAW_IMAGE', ADD_TEXT: 'ADD_TEXT', ADD_RECT: 'ADD_RECT', + ADD_OVAL: 'ADD_OVAL', TRANSFORM_IMAGE: 'TRANSFORM_IMAGE', } as const; diff --git a/src/redux/modal/modal.constants.ts b/src/redux/modal/modal.constants.ts index 6d83ad0b..d83dcc1e 100644 --- a/src/redux/modal/modal.constants.ts +++ b/src/redux/modal/modal.constants.ts @@ -17,4 +17,5 @@ export const MODAL_INITIAL_STATE: ModalState = { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }; diff --git a/src/redux/modal/modal.mock.ts b/src/redux/modal/modal.mock.ts index 9f4076e2..2a54666e 100644 --- a/src/redux/modal/modal.mock.ts +++ b/src/redux/modal/modal.mock.ts @@ -17,4 +17,5 @@ export const MODAL_INITIAL_STATE_MOCK: ModalState = { layerImageObjectFactoryState: undefined, layerTextFactoryState: undefined, layerRectFactoryState: undefined, + layerOvalFactoryState: undefined, }; diff --git a/src/redux/modal/modal.reducers.ts b/src/redux/modal/modal.reducers.ts index d020354d..c79217c1 100644 --- a/src/redux/modal/modal.reducers.ts +++ b/src/redux/modal/modal.reducers.ts @@ -187,3 +187,13 @@ export const openLayerRectEditFactoryModalReducer = (state: ModalState): void => state.modalName = 'layer-rect-edit-factory'; state.modalTitle = 'Edit rectangle'; }; + +export const openLayerOvalFactoryModalReducer = ( + state: ModalState, + action: PayloadAction<BoundingBox>, +): void => { + state.layerOvalFactoryState = action.payload; + state.modalName = 'layer-oval-factory'; + state.modalTitle = 'Add oval'; + state.isOpen = true; +}; diff --git a/src/redux/modal/modal.selector.ts b/src/redux/modal/modal.selector.ts index 35b4fdbe..1a6aa462 100644 --- a/src/redux/modal/modal.selector.ts +++ b/src/redux/modal/modal.selector.ts @@ -45,3 +45,8 @@ export const layerRectFactoryStateSelector = createSelector( modalSelector, modal => modal.layerRectFactoryState, ); + +export const layerOvalFactoryStateSelector = createSelector( + modalSelector, + modal => modal.layerOvalFactoryState, +); diff --git a/src/redux/modal/modal.slice.ts b/src/redux/modal/modal.slice.ts index cb3398e3..05b58fdc 100644 --- a/src/redux/modal/modal.slice.ts +++ b/src/redux/modal/modal.slice.ts @@ -23,6 +23,7 @@ import { openLayerTextEditFactoryModalReducer, openLayerRectFactoryModalReducer, openLayerRectEditFactoryModalReducer, + openLayerOvalFactoryModalReducer, } from './modal.reducers'; const modalSlice = createSlice({ @@ -51,6 +52,7 @@ const modalSlice = createSlice({ openLayerTextEditFactoryModal: openLayerTextEditFactoryModalReducer, openLayerRectFactoryModal: openLayerRectFactoryModalReducer, openLayerRectEditFactoryModal: openLayerRectEditFactoryModalReducer, + openLayerOvalFactoryModal: openLayerOvalFactoryModalReducer, }, }); @@ -77,6 +79,7 @@ export const { openLayerTextEditFactoryModal, openLayerRectFactoryModal, openLayerRectEditFactoryModal, + openLayerOvalFactoryModal, } = modalSlice.actions; export default modalSlice.reducer; diff --git a/src/redux/modal/modal.types.ts b/src/redux/modal/modal.types.ts index 57ff24ee..7b0847a8 100644 --- a/src/redux/modal/modal.types.ts +++ b/src/redux/modal/modal.types.ts @@ -22,11 +22,7 @@ export type LayerFactoryState = { id: number | undefined; }; -export type LayerImageObjectFactoryState = BoundingBox | undefined; - -export type LayerTextFactoryState = BoundingBox | undefined; - -export type LayerRectFactoryState = BoundingBox | undefined; +export type LayerObjectFactoryBoundingBoxState = BoundingBox | undefined; export interface ModalState { isOpen: boolean; @@ -37,9 +33,10 @@ export interface ModalState { errorReportState: ErrorRepostState; editOverlayState: EditOverlayState; layerFactoryState: LayerFactoryState; - layerImageObjectFactoryState: LayerImageObjectFactoryState; - layerTextFactoryState: LayerTextFactoryState; - layerRectFactoryState: LayerRectFactoryState; + layerImageObjectFactoryState: LayerObjectFactoryBoundingBoxState; + layerTextFactoryState: LayerObjectFactoryBoundingBoxState; + layerRectFactoryState: LayerObjectFactoryBoundingBoxState; + layerOvalFactoryState: LayerObjectFactoryBoundingBoxState; } export type OpenEditOverlayModalPayload = MapOverlay; diff --git a/src/shared/Icon/Icon.component.tsx b/src/shared/Icon/Icon.component.tsx index 298b2c3b..8f8459af 100644 --- a/src/shared/Icon/Icon.component.tsx +++ b/src/shared/Icon/Icon.component.tsx @@ -36,6 +36,7 @@ import { MoveBackIcon } from '@/shared/Icon/Icons/MoveBackIcon'; import { LayerArrowUpIcon } from '@/shared/Icon/Icons/LayerArrowUpIcon'; import { LayerArrowDownIcon } from '@/shared/Icon/Icons/LayerArrowDownIcon'; import { RectangleIcon } from '@/shared/Icon/Icons/RectangleIcon'; +import { OvalIcon } from '@/shared/Icon/Icons/OvalIcon'; import { LocationIcon } from './Icons/LocationIcon'; import { MaginfierZoomInIcon } from './Icons/MagnifierZoomIn'; import { MaginfierZoomOutIcon } from './Icons/MagnifierZoomOut'; @@ -95,6 +96,7 @@ const icons: Record<IconTypes, IconComponentType> = { 'layer-arrow-up': LayerArrowUpIcon, 'layer-arrow-down': LayerArrowDownIcon, rectangle: RectangleIcon, + oval: OvalIcon, } as const; export const Icon = ({ name, className = '', ...rest }: IconProps): JSX.Element => { diff --git a/src/shared/Icon/Icons/OvalIcon.tsx b/src/shared/Icon/Icons/OvalIcon.tsx new file mode 100644 index 00000000..689e5fe8 --- /dev/null +++ b/src/shared/Icon/Icons/OvalIcon.tsx @@ -0,0 +1,16 @@ +interface OvalIconProps { + className?: string; +} + +export const OvalIcon = ({ className }: OvalIconProps): JSX.Element => ( + <svg + width="20" + height="20" + viewBox="0 0 100 100" + fill="none" + className={className} + xmlns="http://www.w3.org/2000/svg" + > + <ellipse cx="50" cy="50" rx="46" ry="28" stroke="black" fill="none" strokeWidth="4.5" /> + </svg> +); diff --git a/src/shared/Icon/Icons/RectangleIcon.tsx b/src/shared/Icon/Icons/RectangleIcon.tsx index 522b1cc7..2c417140 100644 --- a/src/shared/Icon/Icons/RectangleIcon.tsx +++ b/src/shared/Icon/Icons/RectangleIcon.tsx @@ -11,6 +11,6 @@ export const RectangleIcon = ({ className }: RectangleIconProps): JSX.Element => className={className} xmlns="http://www.w3.org/2000/svg" > - <rect x="4" y="21" width="92" height="58" stroke="black" fill="none" strokeWidth="2" /> + <rect x="4" y="21" width="92" height="58" stroke="black" fill="none" strokeWidth="4.5" /> </svg> ); diff --git a/src/types/iconTypes.ts b/src/types/iconTypes.ts index c648c34a..57cd7d66 100644 --- a/src/types/iconTypes.ts +++ b/src/types/iconTypes.ts @@ -42,6 +42,7 @@ export type IconTypes = | 'move-back' | 'layer-arrow-up' | 'layer-arrow-down' - | 'rectangle'; + | 'rectangle' + | 'oval'; export type IconComponentType = ({ className }: { className: string }) => JSX.Element; diff --git a/src/types/modal.ts b/src/types/modal.ts index d7360077..93a08900 100644 --- a/src/types/modal.ts +++ b/src/types/modal.ts @@ -18,4 +18,5 @@ export type ModalName = | 'layer-text-factory' | 'layer-text-edit-factory' | 'layer-rect-factory' - | 'layer-rect-edit-factory'; + | 'layer-rect-edit-factory' + | 'layer-oval-factory'; -- GitLab From 57dc96624d6a11f2b7c65ce88f6241bf3d35d72a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Thu, 20 Feb 2025 09:47:04 +0100 Subject: [PATCH 12/15] fix(layer-ovals): correct fill color --- .../MapViewer/utils/shapes/layer/elements/LayerOval.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts index 1620a3c6..a9ba0467 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts @@ -14,7 +14,10 @@ import { Stroke } from 'ol/style'; import { MapSize } from '@/redux/map/map.types'; import { Coordinate } from 'ol/coordinate'; import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; -import { LAYER_ELEMENT_TYPES } from '@/components/Map/MapViewer/MapViewer.constants'; +import { + LAYER_ELEMENT_TYPES, + TRANSPARENT_COLOR, +} from '@/components/Map/MapViewer/MapViewer.constants'; export interface LayerOvalProps { elementId: number; @@ -151,12 +154,12 @@ export default class LayerOval { private setStyles(): void { this.strokeStyle = getStroke({ color: rgbToHex(this.borderColor), - width: 4, + width: this.lineWidth, }); this.style = getStyle({ geometry: this.polygon, borderColor: this.borderColor, - fillColor: this.color, + fillColor: TRANSPARENT_COLOR, lineWidth: this.lineWidth, zIndex: this.zIndex, }); -- GitLab From 65e1e89f24bdf27a3978a07a1987a31c8b7e08d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Thu, 20 Feb 2025 15:05:14 +0100 Subject: [PATCH 13/15] feat(layers): update layer using websockets --- coverage/lcov-report/index.html | 4485 ++- coverage/lcov.info | 30852 +++++++++++++++- .../LayerFactoryModal.component.test.tsx | 32 +- .../LayerFactoryModal.component.tsx | 19 +- .../LayersDrawer/LayersDrawer.component.tsx | 4 +- .../LayersDrawerLayer.component.tsx | 5 +- .../LayersDrawerObjectsList.component.tsx | 2 +- .../useOlMapAdditionalLayers.test.ts | 23 - .../useOlMapAdditionalLayers.ts | 151 +- .../MapViewer/utils/config/useOlMapLayers.ts | 13 +- .../elements/removeElementFromLayer.test.ts | 78 - .../shapes/elements/removeElementFromLayer.ts | 24 - .../utils/shapes/layer/utils/removeLayer.ts | 15 + .../utils/shapes/layer/utils/updateLayer.ts | 16 + .../MapViewer/utils/websocket/processLayer.ts | 43 + .../utils/websocket/processLayerImage.ts | 2 +- .../utils/websocket/processLayerText.ts | 2 +- .../utils/websocket/processMessage.ts | 3 + src/hooks/usePrevious.tsx | 2 +- src/redux/layers/layers.mock.ts | 4 +- src/redux/layers/layers.reducers.test.ts | 40 +- src/redux/layers/layers.reducers.ts | 74 +- src/redux/layers/layers.selectors.ts | 26 +- src/redux/layers/layers.slice.ts | 5 + src/redux/layers/layers.thunks.test.ts | 22 +- src/redux/layers/layers.thunks.ts | 8 +- src/redux/layers/layers.types.ts | 6 +- src/redux/layers/utils/setLayerOval.ts | 6 +- src/redux/layers/utils/setLayerRect.ts | 6 +- 29 files changed, 35674 insertions(+), 294 deletions(-) delete mode 100644 src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.test.ts delete mode 100644 src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.test.ts delete mode 100644 src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.ts create mode 100644 src/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer.ts create mode 100644 src/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer.ts create mode 100644 src/components/Map/MapViewer/utils/websocket/processLayer.ts diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 81ba773e..618a0553 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -23,30 +23,30 @@ <div class='clearfix'> <div class='fl pad1y space-right2'> - <span class="strong">100% </span> + <span class="strong">0% </span> <span class="quiet">Statements</span> - <span class='fraction'>3/3</span> + <span class='fraction'>0/15245</span> </div> <div class='fl pad1y space-right2'> - <span class="strong">100% </span> + <span class="strong">0% </span> <span class="quiet">Branches</span> - <span class='fraction'>0/0</span> + <span class='fraction'>0/2901</span> </div> <div class='fl pad1y space-right2'> - <span class="strong">100% </span> + <span class="strong">0% </span> <span class="quiet">Functions</span> - <span class='fraction'>0/0</span> + <span class='fraction'>0/2607</span> </div> <div class='fl pad1y space-right2'> - <span class="strong">100% </span> + <span class="strong">0% </span> <span class="quiet">Lines</span> - <span class='fraction'>2/2</span> + <span class='fraction'>0/13110</span> </div> @@ -61,7 +61,7 @@ </div> </template> </div> - <div class='status-line high'></div> + <div class='status-line low'></div> <div class="pad1"> <table class="coverage-summary"> <thead> @@ -79,18 +79,4473 @@ </tr> </thead> <tbody><tr> - <td class="file high" data-value="ExampleDomain.component.tsx"><a href="ExampleDomain.component.tsx.html">ExampleDomain.component.tsx</a></td> - <td data-value="100" class="pic high"> - <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div> + <td class="file low" data-value="components/AppWrapper"><a href="components/AppWrapper/index.html">components/AppWrapper</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> <td data-value="100" class="pct high">100%</td> - <td data-value="3" class="abs high">3/3</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea"><a href="components/FunctionalArea/index.html">components/FunctionalArea</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/ContextMenu"><a href="components/FunctionalArea/ContextMenu/index.html">components/FunctionalArea/ContextMenu</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="42" class="abs low">0/42</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/CookieBanner"><a href="components/FunctionalArea/CookieBanner/index.html">components/FunctionalArea/CookieBanner</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="58" class="abs low">0/58</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="52" class="abs low">0/52</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/MapNavigation"><a href="components/FunctionalArea/MapNavigation/index.html">components/FunctionalArea/MapNavigation</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="48" class="abs low">0/48</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="43" class="abs low">0/43</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal"><a href="components/FunctionalArea/Modal/index.html">components/FunctionalArea/Modal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="43" class="abs low">0/43</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/AccessDeniedModal"><a href="components/FunctionalArea/Modal/AccessDeniedModal/index.html">components/FunctionalArea/Modal/AccessDeniedModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="31" class="abs low">0/31</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/AddCommentModal"><a href="components/FunctionalArea/Modal/AddCommentModal/index.html">components/FunctionalArea/Modal/AddCommentModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayGroupModal"><a href="components/FunctionalArea/Modal/EditOverlayGroupModal/index.html">components/FunctionalArea/Modal/EditOverlayGroupModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayGroupModal/hooks"><a href="components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/index.html">components/FunctionalArea/Modal/EditOverlayGroupModal/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="35" class="abs low">0/35</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayModal"><a href="components/FunctionalArea/Modal/EditOverlayModal/index.html">components/FunctionalArea/Modal/EditOverlayModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayModal/hooks"><a href="components/FunctionalArea/Modal/EditOverlayModal/hooks/index.html">components/FunctionalArea/Modal/EditOverlayModal/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="46" class="abs low">0/46</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="43" class="abs low">0/43</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/ErrorReportModal"><a href="components/FunctionalArea/Modal/ErrorReportModal/index.html">components/FunctionalArea/Modal/ErrorReportModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="45" class="abs low">0/45</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LayerFactoryModal"><a href="components/FunctionalArea/Modal/LayerFactoryModal/index.html">components/FunctionalArea/Modal/LayerFactoryModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="60" class="abs low">0/60</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="57" class="abs low">0/57</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LayerImageObjectModal"><a href="components/FunctionalArea/Modal/LayerImageObjectModal/index.html">components/FunctionalArea/Modal/LayerImageObjectModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="137" class="abs low">0/137</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="130" class="abs low">0/130</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LayerOvalFactoryModal"><a href="components/FunctionalArea/Modal/LayerOvalFactoryModal/index.html">components/FunctionalArea/Modal/LayerOvalFactoryModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="53" class="abs low">0/53</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="49" class="abs low">0/49</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LayerRectFactoryModal"><a href="components/FunctionalArea/Modal/LayerRectFactoryModal/index.html">components/FunctionalArea/Modal/LayerRectFactoryModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="99" class="abs low">0/99</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="93" class="abs low">0/93</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LayerTextFactoryModal"><a href="components/FunctionalArea/Modal/LayerTextFactoryModal/index.html">components/FunctionalArea/Modal/LayerTextFactoryModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="120" class="abs low">0/120</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="108" class="abs low">0/108</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LicenseModal"><a href="components/FunctionalArea/Modal/LicenseModal/index.html">components/FunctionalArea/Modal/LicenseModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LoggedInMenuModal"><a href="components/FunctionalArea/Modal/LoggedInMenuModal/index.html">components/FunctionalArea/Modal/LoggedInMenuModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/LoginModal"><a href="components/FunctionalArea/Modal/LoginModal/index.html">components/FunctionalArea/Modal/LoginModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/ModalLayout"><a href="components/FunctionalArea/Modal/ModalLayout/index.html">components/FunctionalArea/Modal/ModalLayout</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/MolArtModal"><a href="components/FunctionalArea/Modal/MolArtModal/index.html">components/FunctionalArea/Modal/MolArtModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/OverviewImagesModal"><a href="components/FunctionalArea/Modal/OverviewImagesModal/index.html">components/FunctionalArea/Modal/OverviewImagesModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/OverviewImagesModal/utils"><a href="components/FunctionalArea/Modal/OverviewImagesModal/utils/index.html">components/FunctionalArea/Modal/OverviewImagesModal/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="141" class="abs low">0/141</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="127" class="abs low">0/127</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal"><a href="components/FunctionalArea/Modal/PublicationsModal/index.html">components/FunctionalArea/Modal/PublicationsModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="78" class="abs low">0/78</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="71" class="abs low">0/71</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="27" class="abs low">0/27</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="59" class="abs low">0/59</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="57" class="abs low">0/57</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="42" class="abs low">0/42</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="39" class="abs low">0/39</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/utils"><a href="components/FunctionalArea/Modal/PublicationsModal/utils/index.html">components/FunctionalArea/Modal/PublicationsModal/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/QuestionModal"><a href="components/FunctionalArea/Modal/QuestionModal/index.html">components/FunctionalArea/Modal/QuestionModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/Modal/ToSModal"><a href="components/FunctionalArea/Modal/ToSModal/index.html">components/FunctionalArea/Modal/ToSModal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/NavBar"><a href="components/FunctionalArea/NavBar/index.html">components/FunctionalArea/NavBar</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="44" class="abs low">0/44</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="42" class="abs low">0/42</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar"><a href="components/FunctionalArea/TopBar/index.html">components/FunctionalArea/TopBar</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar/ClearAnchorsButton"><a href="components/FunctionalArea/TopBar/ClearAnchorsButton/index.html">components/FunctionalArea/TopBar/ClearAnchorsButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar/SearchBar"><a href="components/FunctionalArea/TopBar/SearchBar/index.html">components/FunctionalArea/TopBar/SearchBar</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="97" class="abs low">0/97</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="91" class="abs low">0/91</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar/User"><a href="components/FunctionalArea/TopBar/User/index.html">components/FunctionalArea/TopBar/User</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar/User/AuthenticatedUser"><a href="components/FunctionalArea/TopBar/User/AuthenticatedUser/index.html">components/FunctionalArea/TopBar/User/AuthenticatedUser</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar/User/UnauthenticatedUser"><a href="components/FunctionalArea/TopBar/User/UnauthenticatedUser/index.html">components/FunctionalArea/TopBar/User/UnauthenticatedUser</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="components/FunctionalArea/TopBar/User/hooks"><a href="components/FunctionalArea/TopBar/User/hooks/index.html">components/FunctionalArea/TopBar/User/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="35" class="abs low">0/35</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map"><a href="components/Map/index.html">components/Map</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer"><a href="components/Map/Drawer/index.html">components/Map/Drawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="35" class="abs low">0/35</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer"><a href="components/Map/Drawer/AvailablePluginsDrawer/index.html">components/Map/Drawer/AvailablePluginsDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="70" class="abs low">0/70</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="64" class="abs low">0/64</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="37" class="abs low">0/37</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins"><a href="components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins/index.html">components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins"><a href="components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins/index.html">components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins"><a href="components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins/index.html">components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer"><a href="components/Map/Drawer/BioEntityDrawer/index.html">components/Map/Drawer/BioEntityDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="44" class="abs low">0/44</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="43" class="abs low">0/43</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/AnnotationItem"><a href="components/Map/Drawer/BioEntityDrawer/AnnotationItem/index.html">components/Map/Drawer/BioEntityDrawer/AnnotationItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/AssociatedSubmap"><a href="components/Map/Drawer/BioEntityDrawer/AssociatedSubmap/index.html">components/Map/Drawer/BioEntityDrawer/AssociatedSubmap</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/ChemicalsList"><a href="components/Map/Drawer/BioEntityDrawer/ChemicalsList/index.html">components/Map/Drawer/BioEntityDrawer/ChemicalsList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/Comments"><a href="components/Map/Drawer/BioEntityDrawer/Comments/index.html">components/Map/Drawer/BioEntityDrawer/Comments</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/DrugsList"><a href="components/Map/Drawer/BioEntityDrawer/DrugsList/index.html">components/Map/Drawer/BioEntityDrawer/DrugsList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/ModificationResidueItem"><a href="components/Map/Drawer/BioEntityDrawer/ModificationResidueItem/index.html">components/Map/Drawer/BioEntityDrawer/ModificationResidueItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/utils"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/utils/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/CommentDrawer"><a href="components/Map/Drawer/CommentDrawer/index.html">components/Map/Drawer/CommentDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer"><a href="components/Map/Drawer/ExportDrawer/index.html">components/Map/Drawer/ExportDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CheckboxFilter"><a href="components/Map/Drawer/ExportDrawer/CheckboxFilter/index.html">components/Map/Drawer/ExportDrawer/CheckboxFilter</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput"><a href="components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput/index.html">components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CollapsibleSection"><a href="components/Map/Drawer/ExportDrawer/CollapsibleSection/index.html">components/Map/Drawer/ExportDrawer/CollapsibleSection</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CurrentView"><a href="components/Map/Drawer/ExportDrawer/CurrentView/index.html">components/Map/Drawer/ExportDrawer/CurrentView</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/Elements"><a href="components/Map/Drawer/ExportDrawer/Elements/index.html">components/Map/Drawer/ExportDrawer/Elements</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/index.html">components/Map/Drawer/ExportDrawer/ExportCompound</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="92" class="abs low">0/92</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="83" class="abs low">0/83</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/Annotations"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/Annotations</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="37" class="abs low">0/37</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="77" class="abs low">0/77</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="71" class="abs low">0/71</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/Submap"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/Submap/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/Submap</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/utils"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/utils/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="65" class="abs low">0/65</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="55" class="abs low">0/55</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/Graphics"><a href="components/Map/Drawer/ExportDrawer/Graphics/index.html">components/Map/Drawer/ExportDrawer/Graphics</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/Network"><a href="components/Map/Drawer/ExportDrawer/Network/index.html">components/Map/Drawer/ExportDrawer/Network</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/TabButton"><a href="components/Map/Drawer/ExportDrawer/TabButton/index.html">components/Map/Drawer/ExportDrawer/TabButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ExportDrawer/TabNavigator"><a href="components/Map/Drawer/ExportDrawer/TabNavigator/index.html">components/Map/Drawer/ExportDrawer/TabNavigator</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/LayersDrawer"><a href="components/Map/Drawer/LayersDrawer/index.html">components/Map/Drawer/LayersDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="379" class="abs low">0/379</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="89" class="abs low">0/89</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="104" class="abs low">0/104</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="360" class="abs low">0/360</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlayGroupDrawer"><a href="components/Map/Drawer/OverlayGroupDrawer/index.html">components/Map/Drawer/OverlayGroupDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlayGroupDrawer/hooks"><a href="components/Map/Drawer/OverlayGroupDrawer/hooks/index.html">components/Map/Drawer/OverlayGroupDrawer/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer"><a href="components/Map/Drawer/OverlaysDrawer/index.html">components/Map/Drawer/OverlaysDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/GeneralOverlays"><a href="components/Map/Drawer/OverlaysDrawer/GeneralOverlays/index.html">components/Map/Drawer/OverlaysDrawer/GeneralOverlays</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem"><a href="components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem/index.html">components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/OverlaysLegends"><a href="components/Map/Drawer/OverlaysDrawer/OverlaysLegends/index.html">components/Map/Drawer/OverlaysDrawer/OverlaysLegends</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend"><a href="components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend/index.html">components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="39" class="abs low">0/39</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="64" class="abs low">0/64</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="61" class="abs low">0/61</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="31" class="abs low">0/31</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/hooks"><a href="components/Map/Drawer/OverlaysDrawer/hooks/index.html">components/Map/Drawer/OverlaysDrawer/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="42" class="abs low">0/42</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="36" class="abs low">0/36</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ProjectInfoDrawer"><a href="components/Map/Drawer/ProjectInfoDrawer/index.html">components/Map/Drawer/ProjectInfoDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ReactionDrawer"><a href="components/Map/Drawer/ReactionDrawer/index.html">components/Map/Drawer/ReactionDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList"><a href="components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList/index.html">components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper"><a href="components/Map/Drawer/SearchDrawerWrapper/index.html">components/Map/Drawer/SearchDrawerWrapper</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList"><a href="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/index.html">components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList"><a href="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/index.html">components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem"><a href="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/index.html">components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="39" class="abs low">0/39</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="36" class="abs low">0/36</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="55" class="abs low">0/55</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="50" class="abs low">0/50</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader"><a href="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/index.html">components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch"><a href="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch/index.html">components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs"><a href="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs/index.html">components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer"><a href="components/Map/Drawer/SubmapsDrawer/index.html">components/Map/Drawer/SubmapsDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer/SubmapItem"><a href="components/Map/Drawer/SubmapsDrawer/SubmapItem/index.html">components/Map/Drawer/SubmapsDrawer/SubmapItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap"><a href="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.html">components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="27" class="abs low">0/27</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils"><a href="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/index.html">components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Legend"><a href="components/Map/Legend/index.html">components/Map/Legend</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Legend/LegendHeader"><a href="components/Map/Legend/LegendHeader/index.html">components/Map/Legend/LegendHeader</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Legend/LegendImages"><a href="components/Map/Legend/LegendImages/index.html">components/Map/Legend/LegendImages</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Legend/LegendTabs"><a href="components/Map/Legend/LegendTabs/index.html">components/Map/Legend/LegendTabs</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/Legend/LegendTabs/LegendTab"><a href="components/Map/Legend/LegendTabs/LegendTab/index.html">components/Map/Legend/LegendTabs/LegendTab</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapAdditionalActions"><a href="components/Map/MapAdditionalActions/index.html">components/Map/MapAdditionalActions</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapAdditionalActions/utils"><a href="components/Map/MapAdditionalActions/utils/index.html">components/Map/MapAdditionalActions/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="57" class="abs low">0/57</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="51" class="abs low">0/51</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapAdditionalLogos"><a href="components/Map/MapAdditionalLogos/index.html">components/Map/MapAdditionalLogos</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapBackgroundSwitch"><a href="components/Map/MapBackgroundSwitch/index.html">components/Map/MapBackgroundSwitch</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapLoader"><a href="components/Map/MapLoader/index.html">components/Map/MapLoader</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer"><a href="components/Map/MapViewer/index.html">components/Map/MapViewer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils"><a href="components/Map/MapViewer/utils/index.html">components/Map/MapViewer/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="27" class="abs low">0/27</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config"><a href="components/Map/MapViewer/utils/config/index.html">components/Map/MapViewer/utils/config</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="112" class="abs low">0/112</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="100" class="abs low">0/100</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/additionalLayers"><a href="components/Map/MapViewer/utils/config/additionalLayers/index.html">components/Map/MapViewer/utils/config/additionalLayers</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="207" class="abs low">0/207</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="72" class="abs low">0/72</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="42" class="abs low">0/42</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="204" class="abs low">0/204</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/commentsLayer"><a href="components/Map/MapViewer/utils/config/commentsLayer/index.html">components/Map/MapViewer/utils/config/commentsLayer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="36" class="abs low">0/36</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/mapCardLayer"><a href="components/Map/MapViewer/utils/config/mapCardLayer/index.html">components/Map/MapViewer/utils/config/mapCardLayer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/overlaysLayer"><a href="components/Map/MapViewer/utils/config/overlaysLayer/index.html">components/Map/MapViewer/utils/config/overlaysLayer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="205" class="abs low">0/205</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="56" class="abs low">0/56</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="40" class="abs low">0/40</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="187" class="abs low">0/187</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/pinsLayer"><a href="components/Map/MapViewer/utils/config/pinsLayer/index.html">components/Map/MapViewer/utils/config/pinsLayer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="172" class="abs low">0/172</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="37" class="abs low">0/37</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="153" class="abs low">0/153</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/processLayer"><a href="components/Map/MapViewer/utils/config/processLayer/index.html">components/Map/MapViewer/utils/config/processLayer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="151" class="abs low">0/151</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="145" class="abs low">0/145</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/config/reactionsLayer"><a href="components/Map/MapViewer/utils/config/reactionsLayer/index.html">components/Map/MapViewer/utils/config/reactionsLayer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="59" class="abs low">0/59</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="55" class="abs low">0/55</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/listeners"><a href="components/Map/MapViewer/utils/listeners/index.html">components/Map/MapViewer/utils/listeners</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="93" class="abs low">0/93</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="87" class="abs low">0/87</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mapSingleClick"><a href="components/Map/MapViewer/utils/listeners/mapSingleClick/index.html">components/Map/MapViewer/utils/listeners/mapSingleClick</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mouseClick"><a href="components/Map/MapViewer/utils/listeners/mouseClick/index.html">components/Map/MapViewer/utils/listeners/mouseClick</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="69" class="abs low">0/69</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="65" class="abs low">0/65</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick"><a href="components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/index.html">components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="94" class="abs low">0/94</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="90" class="abs low">0/90</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick"><a href="components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick/index.html">components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="46" class="abs low">0/46</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/listeners/pinIconClick"><a href="components/Map/MapViewer/utils/listeners/pinIconClick/index.html">components/Map/MapViewer/utils/listeners/pinIconClick</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/coords"><a href="components/Map/MapViewer/utils/shapes/coords/index.html">components/Map/MapViewer/utils/shapes/coords</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="133" class="abs low">0/133</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="39" class="abs low">0/39</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="131" class="abs low">0/131</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/elements"><a href="components/Map/MapViewer/utils/shapes/elements/index.html">components/Map/MapViewer/utils/shapes/elements</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="417" class="abs low">0/417</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="164" class="abs low">0/164</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="40" class="abs low">0/40</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="416" class="abs low">0/416</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/elements/Glyph"><a href="components/Map/MapViewer/utils/shapes/elements/Glyph/index.html">components/Map/MapViewer/utils/shapes/elements/Glyph</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="127" class="abs low">0/127</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="127" class="abs low">0/127</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer"><a href="components/Map/MapViewer/utils/shapes/layer/index.html">components/Map/MapViewer/utils/shapes/layer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="143" class="abs low">0/143</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="25" class="abs low">0/25</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="142" class="abs low">0/142</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer/elements"><a href="components/Map/MapViewer/utils/shapes/layer/elements/index.html">components/Map/MapViewer/utils/shapes/layer/elements</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="254" class="abs low">0/254</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="254" class="abs low">0/254</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer/interaction"><a href="components/Map/MapViewer/utils/shapes/layer/interaction/index.html">components/Map/MapViewer/utils/shapes/layer/interaction</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="131" class="abs low">0/131</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="41" class="abs low">0/41</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="130" class="abs low">0/130</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer/utils"><a href="components/Map/MapViewer/utils/shapes/layer/utils/index.html">components/Map/MapViewer/utils/shapes/layer/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/overlay"><a href="components/Map/MapViewer/utils/shapes/overlay/index.html">components/Map/MapViewer/utils/shapes/overlay</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="127" class="abs low">0/127</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="40" class="abs low">0/40</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="126" class="abs low">0/126</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/reaction"><a href="components/Map/MapViewer/utils/shapes/reaction/index.html">components/Map/MapViewer/utils/shapes/reaction</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="160" class="abs low">0/160</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="35" class="abs low">0/35</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="160" class="abs low">0/160</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/style"><a href="components/Map/MapViewer/utils/shapes/style/index.html">components/Map/MapViewer/utils/shapes/style</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="60" class="abs low">0/60</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="59" class="abs low">0/59</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/shapes/text"><a href="components/Map/MapViewer/utils/shapes/text/index.html">components/Map/MapViewer/utils/shapes/text</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="54" class="abs low">0/54</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="53" class="abs low">0/53</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/MapViewer/utils/websocket"><a href="components/Map/MapViewer/utils/websocket/index.html">components/Map/MapViewer/utils/websocket</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="87" class="abs low">0/87</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="85" class="abs low">0/85</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer"><a href="components/Map/PluginsDrawer/index.html">components/Map/PluginsDrawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginContent"><a href="components/Map/PluginsDrawer/PluginContent/index.html">components/Map/PluginsDrawer/PluginContent</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginContent/utils"><a href="components/Map/PluginsDrawer/PluginContent/utils/index.html">components/Map/PluginsDrawer/PluginContent/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader"><a href="components/Map/PluginsDrawer/PluginsHeader/index.html">components/Map/PluginsDrawer/PluginsHeader</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo"><a href="components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/index.html">components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton"><a href="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/index.html">components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement"><a href="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement/index.html">components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginsTabs"><a href="components/Map/PluginsDrawer/PluginsTabs/index.html">components/Map/PluginsDrawer/PluginsTabs</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab"><a href="components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab/index.html">components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + </tr> + +<tr> + <td class="file low" data-value="components/SPA"><a href="components/SPA/index.html">components/SPA</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + </tr> + +<tr> + <td class="file low" data-value="constants"><a href="constants/index.html">constants</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="179" class="abs low">0/179</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="99" class="abs low">0/99</td> + </tr> + +<tr> + <td class="file low" data-value="hooks"><a href="hooks/index.html">hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="31" class="abs low">0/31</td> + </tr> + +<tr> + <td class="file low" data-value="models"><a href="models/index.html">models</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="376" class="abs low">0/376</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="272" class="abs low">0/272</td> + </tr> + +<tr> + <td class="file low" data-value="models/fixtures"><a href="models/fixtures/index.html">models/fixtures</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="265" class="abs low">0/265</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="212" class="abs low">0/212</td> + </tr> + +<tr> + <td class="file low" data-value="models/generators"><a href="models/generators/index.html">models/generators</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="43" class="abs low">0/43</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="37" class="abs low">0/37</td> + </tr> + +<tr> + <td class="file low" data-value="models/mocks"><a href="models/mocks/index.html">models/mocks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="46" class="abs low">0/46</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + </tr> + +<tr> + <td class="file low" data-value="redux"><a href="redux/index.html">redux</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="134" class="abs low">0/134</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="83" class="abs low">0/83</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="130" class="abs low">0/130</td> + </tr> + +<tr> + <td class="file low" data-value="redux/autocomplete"><a href="redux/autocomplete/index.html">redux/autocomplete</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="86" class="abs low">0/86</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="70" class="abs low">0/70</td> + </tr> + +<tr> + <td class="file low" data-value="redux/bioEntity"><a href="redux/bioEntity/index.html">redux/bioEntity</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="60" class="abs low">0/60</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="42" class="abs low">0/42</td> + </tr> + +<tr> + <td class="file low" data-value="redux/chemicals"><a href="redux/chemicals/index.html">redux/chemicals</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="136" class="abs low">0/136</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="48" class="abs low">0/48</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="104" class="abs low">0/104</td> + </tr> + +<tr> + <td class="file low" data-value="redux/comment"><a href="redux/comment/index.html">redux/comment</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="64" class="abs low">0/64</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="49" class="abs low">0/49</td> + </tr> + +<tr> + <td class="file low" data-value="redux/comment/thunks"><a href="redux/comment/thunks/index.html">redux/comment/thunks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="36" class="abs low">0/36</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + </tr> + +<tr> + <td class="file low" data-value="redux/configuration"><a href="redux/configuration/index.html">redux/configuration</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="208" class="abs low">0/208</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="44" class="abs low">0/44</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="145" class="abs low">0/145</td> + </tr> + +<tr> + <td class="file low" data-value="redux/constant"><a href="redux/constant/index.html">redux/constant</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="33" class="abs low">0/33</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + </tr> + +<tr> + <td class="file low" data-value="redux/contextMenu"><a href="redux/contextMenu/index.html">redux/contextMenu</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="redux/cookieBanner"><a href="redux/cookieBanner/index.html">redux/cookieBanner</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="27" class="abs low">0/27</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + </tr> + +<tr> + <td class="file low" data-value="redux/drawer"><a href="redux/drawer/index.html">redux/drawer</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="283" class="abs low">0/283</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="63" class="abs low">0/63</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="225" class="abs low">0/225</td> + </tr> + +<tr> + <td class="file low" data-value="redux/drugs"><a href="redux/drugs/index.html">redux/drugs</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="136" class="abs low">0/136</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="48" class="abs low">0/48</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="103" class="abs low">0/103</td> + </tr> + +<tr> + <td class="file low" data-value="redux/entityNumber"><a href="redux/entityNumber/index.html">redux/entityNumber</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + </tr> + +<tr> + <td class="file low" data-value="redux/export"><a href="redux/export/index.html">redux/export</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="81" class="abs low">0/81</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="71" class="abs low">0/71</td> + </tr> + +<tr> + <td class="file low" data-value="redux/glyphs"><a href="redux/glyphs/index.html">redux/glyphs</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="66" class="abs low">0/66</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="53" class="abs low">0/53</td> + </tr> + +<tr> + <td class="file low" data-value="redux/hooks"><a href="redux/hooks/index.html">redux/hooks</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="redux/layers"><a href="redux/layers/index.html">redux/layers</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="517" class="abs low">0/517</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="126" class="abs low">0/126</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="85" class="abs low">0/85</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="447" class="abs low">0/447</td> + </tr> + +<tr> + <td class="file low" data-value="redux/layers/utils"><a href="redux/layers/utils/index.html">redux/layers/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="redux/legend"><a href="redux/legend/index.html">redux/legend</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="79" class="abs low">0/79</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="55" class="abs low">0/55</td> + </tr> + +<tr> + <td class="file low" data-value="redux/map"><a href="redux/map/index.html">redux/map</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="308" class="abs low">0/308</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="65" class="abs low">0/65</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="51" class="abs low">0/51</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="236" class="abs low">0/236</td> + </tr> + +<tr> + <td class="file low" data-value="redux/map/middleware"><a href="redux/map/middleware/index.html">redux/map/middleware</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="44" class="abs low">0/44</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + </tr> + +<tr> + <td class="file low" data-value="redux/mapEditTools"><a href="redux/mapEditTools/index.html">redux/mapEditTools</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + </tr> + +<tr> + <td class="file low" data-value="redux/markers"><a href="redux/markers/index.html">redux/markers</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="68" class="abs low">0/68</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="44" class="abs low">0/44</td> + </tr> + +<tr> + <td class="file low" data-value="redux/middlewares"><a href="redux/middlewares/index.html">redux/middlewares</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + </tr> + +<tr> + <td class="file low" data-value="redux/modal"><a href="redux/modal/index.html">redux/modal</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="209" class="abs low">0/209</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="37" class="abs low">0/37</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="168" class="abs low">0/168</td> + </tr> + +<tr> + <td class="file low" data-value="redux/modelElements"><a href="redux/modelElements/index.html">redux/modelElements</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="266" class="abs low">0/266</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="55" class="abs low">0/55</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="85" class="abs low">0/85</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="209" class="abs low">0/209</td> + </tr> + +<tr> + <td class="file low" data-value="redux/models"><a href="redux/models/index.html">redux/models</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="99" class="abs low">0/99</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="27" class="abs low">0/27</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="66" class="abs low">0/66</td> + </tr> + +<tr> + <td class="file low" data-value="redux/newReactions"><a href="redux/newReactions/index.html">redux/newReactions</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="83" class="abs low">0/83</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="67" class="abs low">0/67</td> + </tr> + +<tr> + <td class="file low" data-value="redux/oauth"><a href="redux/oauth/index.html">redux/oauth</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="49" class="abs low">0/49</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="39" class="abs low">0/39</td> + </tr> + +<tr> + <td class="file low" data-value="redux/overlayBioEntity"><a href="redux/overlayBioEntity/index.html">redux/overlayBioEntity</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="237" class="abs low">0/237</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="54" class="abs low">0/54</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="196" class="abs low">0/196</td> + </tr> + +<tr> + <td class="file low" data-value="redux/overlayGroup"><a href="redux/overlayGroup/index.html">redux/overlayGroup</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="91" class="abs low">0/91</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="80" class="abs low">0/80</td> + </tr> + +<tr> + <td class="file low" data-value="redux/overlays"><a href="redux/overlays/index.html">redux/overlays</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="216" class="abs low">0/216</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="51" class="abs low">0/51</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="174" class="abs low">0/174</td> + </tr> + +<tr> + <td class="file low" data-value="redux/plugins"><a href="redux/plugins/index.html">redux/plugins</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="190" class="abs low">0/190</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="141" class="abs low">0/141</td> + </tr> + +<tr> + <td class="file low" data-value="redux/project"><a href="redux/project/index.html">redux/project</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="96" class="abs low">0/96</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="69" class="abs low">0/69</td> + </tr> + +<tr> + <td class="file low" data-value="redux/projects"><a href="redux/projects/index.html">redux/projects</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="45" class="abs low">0/45</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="36" class="abs low">0/36</td> + </tr> + +<tr> + <td class="file low" data-value="redux/publications"><a href="redux/publications/index.html">redux/publications</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="95" class="abs low">0/95</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="67" class="abs low">0/67</td> + </tr> + +<tr> + <td class="file low" data-value="redux/reactions"><a href="redux/reactions/index.html">redux/reactions</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="90" class="abs low">0/90</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="69" class="abs low">0/69</td> + </tr> + +<tr> + <td class="file low" data-value="redux/root"><a href="redux/root/index.html">redux/root</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="147" class="abs low">0/147</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="135" class="abs low">0/135</td> + </tr> + +<tr> + <td class="file low" data-value="redux/search"><a href="redux/search/index.html">redux/search</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="92" class="abs low">0/92</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="69" class="abs low">0/69</td> + </tr> + +<tr> + <td class="file low" data-value="redux/selectors"><a href="redux/selectors/index.html">redux/selectors</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="redux/shapes"><a href="redux/shapes/index.html">redux/shapes</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="108" class="abs low">0/108</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="88" class="abs low">0/88</td> + </tr> + +<tr> + <td class="file low" data-value="redux/statistics"><a href="redux/statistics/index.html">redux/statistics</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="48" class="abs low">0/48</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="37" class="abs low">0/37</td> + </tr> + +<tr> + <td class="file low" data-value="redux/user"><a href="redux/user/index.html">redux/user</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="156" class="abs low">0/156</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="31" class="abs low">0/31</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="31" class="abs low">0/31</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="128" class="abs low">0/128</td> + </tr> + +<tr> + <td class="file low" data-value="services/api/utils"><a href="services/api/utils/index.html">services/api/utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="35" class="abs low">0/35</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager"><a href="services/pluginsManager/index.html">services/pluginsManager</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="134" class="abs low">0/134</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="113" class="abs low">0/113</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/bioEntities"><a href="services/pluginsManager/bioEntities/index.html">services/pluginsManager/bioEntities</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="91" class="abs low">0/91</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="81" class="abs low">0/81</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/interface"><a href="services/pluginsManager/interface/index.html">services/pluginsManager/interface</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/legend"><a href="services/pluginsManager/legend/index.html">services/pluginsManager/legend</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map"><a href="services/pluginsManager/map/index.html">services/pluginsManager/map</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="44" class="abs low">0/44</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="36" class="abs low">0/36</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/data"><a href="services/pluginsManager/map/data/index.html">services/pluginsManager/map/data</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/fitBounds"><a href="services/pluginsManager/map/fitBounds/index.html">services/pluginsManager/map/fitBounds</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="30" class="abs low">0/30</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/models"><a href="services/pluginsManager/map/models/index.html">services/pluginsManager/map/models</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/overlays"><a href="services/pluginsManager/map/overlays/index.html">services/pluginsManager/map/overlays</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="64" class="abs low">0/64</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="57" class="abs low">0/57</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/overlays/addDataOverlay"><a href="services/pluginsManager/map/overlays/addDataOverlay/index.html">services/pluginsManager/map/overlays/addDataOverlay</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="39" class="abs low">0/39</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="32" class="abs low">0/32</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/overlays/showDataOverlay"><a href="services/pluginsManager/map/overlays/showDataOverlay/index.html">services/pluginsManager/map/overlays/showDataOverlay</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/overlays/types"><a href="services/pluginsManager/map/overlays/types/index.html">services/pluginsManager/map/overlays/types</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="18" class="abs low">0/18</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/position"><a href="services/pluginsManager/map/position/index.html">services/pluginsManager/map/position</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/triggerSearch"><a href="services/pluginsManager/map/triggerSearch/index.html">services/pluginsManager/map/triggerSearch</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="133" class="abs low">0/133</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="121" class="abs low">0/121</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/map/zoom"><a href="services/pluginsManager/map/zoom/index.html">services/pluginsManager/map/zoom</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/overviewImage"><a href="services/pluginsManager/overviewImage/index.html">services/pluginsManager/overviewImage</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="54" class="abs low">0/54</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/pluginContextMenu"><a href="services/pluginsManager/pluginContextMenu/index.html">services/pluginsManager/pluginContextMenu</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/pluginsEventBus"><a href="services/pluginsManager/pluginsEventBus/index.html">services/pluginsManager/pluginsEventBus</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="27" class="abs low">0/27</td> + </tr> + +<tr> + <td class="file low" data-value="services/pluginsManager/project/data"><a href="services/pluginsManager/project/data/index.html">services/pluginsManager/project/data</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="59" class="abs low">0/59</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Accordion"><a href="shared/Accordion/index.html">shared/Accordion</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Accordion/AccordionItem"><a href="shared/Accordion/AccordionItem/index.html">shared/Accordion/AccordionItem</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Accordion/AccordionItemButton"><a href="shared/Accordion/AccordionItemButton/index.html">shared/Accordion/AccordionItemButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Accordion/AccordionItemHeading"><a href="shared/Accordion/AccordionItemHeading/index.html">shared/Accordion/AccordionItemHeading</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Accordion/AccordionItemPanel"><a href="shared/Accordion/AccordionItemPanel/index.html">shared/Accordion/AccordionItemPanel</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Autocomplete"><a href="shared/Autocomplete/index.html">shared/Autocomplete</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Button"><a href="shared/Button/index.html">shared/Button</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="shared/ColorPicker"><a href="shared/ColorPicker/index.html">shared/ColorPicker</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="26" class="abs low">0/26</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + </tr> + +<tr> + <td class="file low" data-value="shared/DrawerHeading"><a href="shared/DrawerHeading/index.html">shared/DrawerHeading</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="shared/DrawerHeadingBackwardButton"><a href="shared/DrawerHeadingBackwardButton/index.html">shared/DrawerHeadingBackwardButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Icon"><a href="shared/Icon/index.html">shared/Icon</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="54" class="abs low">0/54</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="52" class="abs low">0/52</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Icon/Icons"><a href="shared/Icon/Icons/index.html">shared/Icon/Icons</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="47" class="abs low">0/47</td> + </tr> + +<tr> + <td class="file low" data-value="shared/IconButton"><a href="shared/IconButton/index.html">shared/IconButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Input"><a href="shared/Input/index.html">shared/Input</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="8" class="abs low">0/8</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="shared/LinkButton"><a href="shared/LinkButton/index.html">shared/LinkButton</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="shared/LoadingIndicator"><a href="shared/LoadingIndicator/index.html">shared/LoadingIndicator</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="shared/OutsideClickWrapper"><a href="shared/OutsideClickWrapper/index.html">shared/OutsideClickWrapper</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Select"><a href="shared/Select/index.html">shared/Select</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="24" class="abs low">0/24</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Switch"><a href="shared/Switch/index.html">shared/Switch</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Textarea"><a href="shared/Textarea/index.html">shared/Textarea</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + </tr> + +<tr> + <td class="file low" data-value="shared/Toast"><a href="shared/Toast/index.html">shared/Toast</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="6" class="abs low">0/6</td> + </tr> + +<tr> + <td class="file low" data-value="types"><a href="types/index.html">types</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> <td data-value="100" class="pct high">100%</td> <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + </tr> + +<tr> + <td class="file low" data-value="utils"><a href="utils/index.html">utils</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="61" class="abs low">0/61</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="49" class="abs low">0/49</td> + </tr> + +<tr> + <td class="file low" data-value="utils/array"><a href="utils/array/index.html">utils/array</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> <td data-value="100" class="pct high">100%</td> <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + </tr> + +<tr> + <td class="file low" data-value="utils/bioEntity"><a href="utils/bioEntity/index.html">utils/bioEntity</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="23" class="abs low">0/23</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="21" class="abs low">0/21</td> + </tr> + +<tr> + <td class="file low" data-value="utils/canvas"><a href="utils/canvas/index.html">utils/canvas</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="utils/context"><a href="utils/context/index.html">utils/context</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + </tr> + +<tr> + <td class="file low" data-value="utils/convert"><a href="utils/convert/index.html">utils/convert</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="83" class="abs low">0/83</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="76" class="abs low">0/76</td> + </tr> + +<tr> + <td class="file low" data-value="utils/error-report"><a href="utils/error-report/index.html">utils/error-report</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="99" class="abs low">0/99</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="40" class="abs low">0/40</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="92" class="abs low">0/92</td> + </tr> + +<tr> + <td class="file low" data-value="utils/getErrorMessage"><a href="utils/getErrorMessage/index.html">utils/getErrorMessage</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="38" class="abs low">0/38</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="28" class="abs low">0/28</td> + </tr> + +<tr> + <td class="file low" data-value="utils/initialize"><a href="utils/initialize/index.html">utils/initialize</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="19" class="abs low">0/19</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + </tr> + +<tr> + <td class="file low" data-value="utils/lerp"><a href="utils/lerp/index.html">utils/lerp</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="17" class="abs low">0/17</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="utils/map"><a href="utils/map/index.html">utils/map</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="100" class="abs low">0/100</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="20" class="abs low">0/20</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="92" class="abs low">0/92</td> + </tr> + +<tr> + <td class="file low" data-value="utils/number"><a href="utils/number/index.html">utils/number</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="22" class="abs low">0/22</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="utils/object"><a href="utils/object/index.html">utils/object</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="12" class="abs low">0/12</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + </tr> + +<tr> + <td class="file low" data-value="utils/overlays"><a href="utils/overlays/index.html">utils/overlays</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="10" class="abs low">0/10</td> + </tr> + +<tr> + <td class="file low" data-value="utils/plugins"><a href="utils/plugins/index.html">utils/plugins</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="13" class="abs low">0/13</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="11" class="abs low">0/11</td> + </tr> + +<tr> + <td class="file low" data-value="utils/point"><a href="utils/point/index.html">utils/point</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="5" class="abs low">0/5</td> <td data-value="100" class="pct high">100%</td> - <td data-value="2" class="abs high">2/2</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + </tr> + +<tr> + <td class="file low" data-value="utils/promise"><a href="utils/promise/index.html">utils/promise</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="14" class="abs low">0/14</td> + </tr> + +<tr> + <td class="file low" data-value="utils/query-manager"><a href="utils/query-manager/index.html">utils/query-manager</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="16" class="abs low">0/16</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="3" class="abs low">0/3</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + </tr> + +<tr> + <td class="file low" data-value="utils/reaction"><a href="utils/reaction/index.html">utils/reaction</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="1" class="abs low">0/1</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="2" class="abs low">0/2</td> + </tr> + +<tr> + <td class="file low" data-value="utils/testing"><a href="utils/testing/index.html">utils/testing</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="34" class="abs low">0/34</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="4" class="abs low">0/4</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="9" class="abs low">0/9</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="29" class="abs low">0/29</td> + </tr> + +<tr> + <td class="file low" data-value="utils/websocket-entity-updates"><a href="utils/websocket-entity-updates/index.html">utils/websocket-entity-updates</a></td> + <td data-value="0" class="pic low"> + <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> + </td> + <td data-value="0" class="pct low">0%</td> + <td data-value="48" class="abs low">0/48</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="15" class="abs low">0/15</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="7" class="abs low">0/7</td> + <td data-value="0" class="pct low">0%</td> + <td data-value="43" class="abs low">0/43</td> </tr> </tbody> @@ -101,7 +4556,7 @@ <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> - at 2023-09-19T12:58:25.625Z + at 2025-02-20T13:47:12.787Z </div> <script src="prettify.js"></script> <script> diff --git a/coverage/lcov.info b/coverage/lcov.info index 8b6abf1c..89ecdac3 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,11 +1,30855 @@ TN: -SF:src/components/[DomainName]/ExampleDomain.component.tsx +SF:src/components/AppWrapper/AppWrapper.component.tsx +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:13,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/AppWrapper/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/FunctionalArea.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/ContextMenu/ContextMenu.component.tsx +FN:19,(anonymous_2) +FN:27,(anonymous_3) +FN:29,(anonymous_4) +FN:33,(anonymous_5) +FN:37,(anonymous_6) +FN:44,(anonymous_7) +FN:51,(anonymous_8) +FN:57,(anonymous_9) +FN:106,(anonymous_10) +FNF:9 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:49,0 +DA:51,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:107,0 +LF:39 +LH:0 +BRDA:30,0,0,0 +BRDA:30,0,1,0 +BRDA:38,1,0,0 +BRDA:49,2,0,0 +BRDA:49,2,1,0 +BRDA:64,3,0,0 +BRDA:64,3,1,0 +BRDA:76,4,0,0 +BRDA:76,4,1,0 +BRDA:87,5,0,0 +BRDA:87,5,1,0 +BRDA:104,6,0,0 +BRDA:104,6,1,0 +BRDA:113,7,0,0 +BRDA:113,7,1,0 +BRF:15 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/ContextMenu/ContextMenu.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/ContextMenu/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/CookieBanner/CookieBanner.component.tsx +FN:28,(anonymous_5) +FN:36,(anonymous_6) +FN:66,(anonymous_7) +FN:87,(anonymous_8) +FN:115,(anonymous_9) +FNF:5 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:21,0 +DA:23,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:52,0 +DA:54,0 +DA:55,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:78,0 +DA:80,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:91,0 +DA:95,0 +DA:96,0 +LF:47 +LH:0 +BRDA:39,0,0,0 +BRDA:39,0,1,0 +BRDA:39,0,2,0 +BRDA:43,1,0,0 +BRDA:43,1,1,0 +BRDA:54,2,0,0 +BRDA:59,3,0,0 +BRDA:59,3,1,0 +BRDA:73,4,0,0 +BRDA:73,4,1,0 +BRDA:88,5,0,0 +BRDA:88,5,1,0 +BRDA:95,6,0,0 +BRDA:95,7,0,0 +BRDA:95,7,1,0 +BRDA:104,8,0,0 +BRF:16 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/CookieBanner/CookieBanner.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/CookieBanner/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/MapNavigation/MapNavigation.component.tsx +FN:17,(anonymous_1) +FN:21,(anonymous_2) +FN:23,(anonymous_3) +FN:24,(anonymous_4) +FN:28,(anonymous_5) +FN:45,(anonymous_6) +FN:53,(anonymous_7) +FN:65,(anonymous_8) +FN:73,(anonymous_9) +FN:79,(anonymous_10) +FN:90,(anonymous_11) +FNF:11 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:58,0 +DA:66,0 +DA:73,0 +DA:79,0 +DA:90,0 +LF:42 +LH:0 +BRDA:30,0,0,0 +BRDA:30,0,1,0 +BRDA:47,1,0,0 +BRDA:54,2,0,0 +BRDA:54,2,1,0 +BRDA:70,3,0,0 +BRDA:70,3,1,0 +BRDA:72,4,0,0 +BRDA:72,4,1,0 +BRDA:77,5,0,0 +BRDA:92,6,0,0 +BRDA:92,6,1,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/MapNavigation/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/Modal.component.tsx +FN:28,(anonymous_5) +FN:28,(anonymous_6) +FN:28,(anonymous_7) +FN:32,(anonymous_9) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_9) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:32,0 +DA:33,0 +LF:25 +LH:0 +BRDA:37,0,0,0 +BRDA:37,0,1,0 +BRDA:42,1,0,0 +BRDA:42,1,1,0 +BRDA:47,2,0,0 +BRDA:47,2,1,0 +BRDA:52,3,0,0 +BRDA:52,3,1,0 +BRDA:57,4,0,0 +BRDA:57,4,1,0 +BRDA:62,5,0,0 +BRDA:62,5,1,0 +BRDA:62,5,2,0 +BRDA:63,6,0,0 +BRDA:63,6,1,0 +BRDA:68,7,0,0 +BRDA:68,7,1,0 +BRDA:73,8,0,0 +BRDA:73,8,1,0 +BRDA:78,9,0,0 +BRDA:78,9,1,0 +BRDA:83,10,0,0 +BRDA:83,10,1,0 +BRDA:88,11,0,0 +BRDA:88,11,1,0 +BRDA:93,12,0,0 +BRDA:93,12,1,0 +BRDA:98,13,0,0 +BRDA:98,13,1,0 +BRDA:103,14,0,0 +BRDA:103,14,1,0 +BRDA:108,15,0,0 +BRDA:108,15,1,0 +BRDA:113,16,0,0 +BRDA:113,16,1,0 +BRDA:118,17,0,0 +BRDA:118,17,1,0 +BRDA:123,18,0,0 +BRDA:123,18,1,0 +BRDA:128,19,0,0 +BRDA:128,19,1,0 +BRDA:133,20,0,0 +BRDA:133,20,1,0 +BRF:43 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/AccessDeniedModal/AccessDeniedModal.component.tsx +FN:12,(anonymous_2) +FN:25,(anonymous_3) +FN:30,(anonymous_4) +FN:36,(anonymous_5) +FN:41,(anonymous_6) +FN:69,(anonymous_7) +FNF:6 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:41,0 +DA:42,0 +DA:70,0 +LF:31 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:47,1,0,0 +BRDA:65,2,0,0 +BRDA:83,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/AddCommentModal/AddCommentModal.component.tsx +FN:13,(anonymous_2) +FN:24,(anonymous_3) +FN:26,(anonymous_4) +FN:29,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +LF:23 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/EditOverlayGroupModal/EditOverlayGroupModal.component.tsx +FN:6,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:15,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/EditOverlayGroupModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/useEditOverlayGroup.ts +FN:31,(anonymous_4) +FN:38,(anonymous_5) +FN:42,(anonymous_6) +FN:46,(anonymous_7) +FN:50,(anonymous_8) +FN:55,(anonymous_9) +FN:71,(anonymous_10) +FN:75,(anonymous_11) +FN:79,(anonymous_12) +FNF:9 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:13,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:55,0 +DA:60,0 +DA:71,0 +DA:72,0 +DA:75,0 +DA:76,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:87,0 +DA:89,0 +DA:92,0 +LF:35 +LH:0 +BRDA:51,0,0,0 +BRDA:51,1,0,0 +BRDA:51,1,1,0 +BRDA:51,1,2,0 +BRDA:80,2,0,0 +BRDA:80,3,0,0 +BRDA:80,3,1,0 +BRDA:80,3,2,0 +BRDA:84,4,0,0 +BRDA:84,4,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.tsx +FN:8,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:20,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/EditOverlayModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.ts +FN:38,(anonymous_4) +FN:46,(anonymous_5) +FN:49,(anonymous_6) +FN:53,(anonymous_7) +FN:57,(anonymous_8) +FN:60,(anonymous_9) +FN:64,(anonymous_10) +FN:69,(anonymous_11) +FN:87,(anonymous_12) +FN:91,(anonymous_13) +FN:95,(anonymous_14) +FNF:11 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:49,0 +DA:50,0 +DA:53,0 +DA:54,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:69,0 +DA:75,0 +DA:87,0 +DA:88,0 +DA:91,0 +DA:92,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:104,0 +DA:105,0 +DA:107,0 +DA:110,0 +LF:43 +LH:0 +BRDA:65,0,0,0 +BRDA:65,1,0,0 +BRDA:65,1,1,0 +BRDA:96,2,0,0 +BRDA:96,3,0,0 +BRDA:96,3,1,0 +BRDA:96,3,2,0 +BRDA:99,4,0,0 +BRDA:99,4,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/ErrorReportModal/ErroReportModal.component.tsx +FN:12,(anonymous_2) +FN:16,getValue +FN:46,(anonymous_4) +FN:49,(anonymous_5) +FN:69,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,getValue +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:54,0 +DA:56,0 +DA:57,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:63,0 +DA:65,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +LF:44 +LH:0 +BRDA:17,0,0,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:50,2,0,0 +BRDA:51,3,0,0 +BRDA:51,3,1,0 +BRDA:52,4,0,0 +BRDA:52,4,1,0 +BRDA:56,5,0,0 +BRDA:57,6,0,0 +BRDA:57,6,1,0 +BRDA:59,7,0,0 +BRDA:60,8,0,0 +BRDA:60,8,1,0 +BRDA:62,9,0,0 +BRDA:63,10,0,0 +BRDA:63,10,1,0 +BRF:17 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/ErrorReportModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx +FN:19,(anonymous_4) +FN:34,(anonymous_5) +FN:35,(anonymous_6) +FN:50,(anonymous_7) +FN:58,(anonymous_8) +FN:59,(anonymous_9) +FN:62,(anonymous_10) +FN:118,(anonymous_11) +FN:133,(anonymous_12) +FN:145,(anonymous_13) +FNF:10 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:46,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:54,0 +DA:58,0 +DA:59,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:71,0 +DA:72,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:81,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:119,0 +DA:133,0 +DA:145,0 +LF:56 +LH:0 +BRDA:37,0,0,0 +BRDA:51,1,0,0 +BRDA:51,1,1,0 +BRDA:66,2,0,0 +BRDA:66,2,1,0 +BRDA:78,3,0,0 +BRDA:88,4,0,0 +BRDA:97,5,0,0 +BRDA:97,5,1,0 +BRDA:104,6,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerFactoryModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx +FN:19,(anonymous_5) +FN:33,(anonymous_6) +FNF:2 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:48,0 +DA:56,0 +DA:57,0 +DA:60,0 +DA:61,0 +DA:63,0 +DA:67,0 +DA:69,0 +DA:70,0 +DA:75,0 +LF:45 +LH:0 +BRDA:23,0,0,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:29,2,0,0 +BRDA:29,2,1,0 +BRDA:34,3,0,0 +BRDA:41,4,0,0 +BRDA:43,5,0,0 +BRDA:56,6,0,0 +BRDA:72,7,0,0 +BRDA:72,7,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx +FN:23,(anonymous_5) +FN:28,(anonymous_6) +FN:35,(anonymous_7) +FNF:3 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:49,0 +DA:61,0 +DA:62,0 +DA:66,0 +DA:68,0 +DA:71,0 +DA:77,0 +DA:81,0 +DA:82,0 +DA:84,0 +DA:85,0 +DA:90,0 +LF:49 +LH:0 +BRDA:36,0,0,0 +BRDA:36,1,0,0 +BRDA:36,1,1,0 +BRDA:42,2,0,0 +BRDA:44,3,0,0 +BRDA:61,4,0,0 +BRDA:87,5,0,0 +BRDA:87,5,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectForm.component.tsx +FN:24,(anonymous_5) +FN:34,(anonymous_6) +FN:36,(anonymous_7) +FN:46,(anonymous_8) +FN:57,(anonymous_9) +FNF:5 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:24,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:63,0 +LF:34 +LH:0 +BRDA:37,0,0,0 +BRDA:40,1,0,0 +BRDA:47,2,0,0 +BRDA:47,2,1,0 +BRDA:49,3,0,0 +BRDA:52,4,0,0 +BRDA:58,5,0,0 +BRDA:58,5,1,0 +BRDA:60,6,0,0 +BRDA:68,7,0,0 +BRDA:99,8,0,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx +FN:27,(anonymous_5) +FN:31,(anonymous_6) +FN:40,(anonymous_7) +FN:85,(anonymous_8) +FN:86,(anonymous_9) +FNF:5 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:44,0 +DA:45,0 +DA:54,0 +DA:55,0 +DA:59,0 +DA:61,0 +DA:62,0 +DA:68,0 +DA:72,0 +DA:73,0 +DA:75,0 +DA:76,0 +DA:81,0 +DA:85,0 +DA:86,0 +LF:45 +LH:0 +BRDA:41,0,0,0 +BRDA:41,1,0,0 +BRDA:41,1,1,0 +BRDA:54,2,0,0 +BRDA:78,3,0,0 +BRDA:78,3,1,0 +BRDA:91,4,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component.tsx +FN:12,(anonymous_2) +FN:18,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:12,0 +DA:18,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component.tsx +FN:22,(anonymous_5) +FN:38,(anonymous_6) +FN:85,(anonymous_7) +FN:86,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:43,0 +DA:58,0 +DA:59,0 +DA:63,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:73,0 +DA:75,0 +DA:76,0 +DA:81,0 +DA:85,0 +DA:86,0 +LF:43 +LH:0 +BRDA:28,0,0,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:28,2,0,0 +BRDA:28,2,1,0 +BRDA:39,3,0,0 +BRDA:58,4,0,0 +BRDA:78,5,0,0 +BRDA:78,5,1,0 +BRDA:91,6,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx +FN:27,(anonymous_5) +FN:31,(anonymous_6) +FN:41,(anonymous_7) +FN:86,(anonymous_8) +FN:87,(anonymous_9) +FNF:5 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:46,0 +DA:55,0 +DA:56,0 +DA:60,0 +DA:62,0 +DA:63,0 +DA:69,0 +DA:73,0 +DA:74,0 +DA:76,0 +DA:77,0 +DA:82,0 +DA:86,0 +DA:87,0 +LF:45 +LH:0 +BRDA:42,0,0,0 +BRDA:42,1,0,0 +BRDA:42,1,1,0 +BRDA:55,2,0,0 +BRDA:79,3,0,0 +BRDA:79,3,1,0 +BRDA:92,4,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component.tsx +FN:12,(anonymous_2) +FN:19,(anonymous_3) +FN:26,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:12,0 +DA:19,0 +DA:26,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx +FN:22,(anonymous_5) +FN:42,(anonymous_6) +FN:87,(anonymous_7) +FN:88,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:47,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:71,0 +DA:75,0 +DA:77,0 +DA:78,0 +DA:83,0 +DA:87,0 +DA:88,0 +LF:41 +LH:0 +BRDA:28,0,0,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:43,2,0,0 +BRDA:66,3,0,0 +BRDA:80,4,0,0 +BRDA:80,4,1,0 +BRDA:93,5,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.constants.ts +FNF:0 +FNH:0 +DA:5,0 +DA:7,0 +DA:13,0 +DA:19,0 +DA:20,0 +DA:21,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx +FN:32,(anonymous_5) +FN:37,(anonymous_6) +FN:50,(anonymous_7) +FN:95,(anonymous_8) +FN:96,(anonymous_9) +FNF:5 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:54,0 +DA:55,0 +DA:64,0 +DA:65,0 +DA:69,0 +DA:71,0 +DA:72,0 +DA:78,0 +DA:82,0 +DA:83,0 +DA:85,0 +DA:86,0 +DA:91,0 +DA:95,0 +DA:96,0 +LF:46 +LH:0 +BRDA:51,0,0,0 +BRDA:51,1,0,0 +BRDA:51,1,1,0 +BRDA:64,2,0,0 +BRDA:88,3,0,0 +BRDA:88,3,1,0 +BRDA:101,4,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component.tsx +FN:20,(anonymous_2) +FN:21,(anonymous_3) +FN:38,(anonymous_4) +FN:47,(anonymous_5) +FN:56,(anonymous_6) +FN:63,(anonymous_7) +FN:70,(anonymous_8) +FN:76,(anonymous_9) +FNF:8 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:3,0 +DA:4,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:38,0 +DA:47,0 +DA:56,0 +DA:63,0 +DA:70,0 +DA:76,0 +LF:15 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LicenseModal/LicenseModal.component.tsx +FN:5,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +LF:8 +LH:0 +BRDA:9,0,0,0 +BRDA:10,1,0,0 +BRDA:10,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LicenseModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LoggedInMenuModal/LoggedInMenuModal.component.tsx +FN:7,(anonymous_2) +FN:10,(anonymous_3) +FN:14,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:14,0 +DA:15,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LoggedInMenuModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LoginModal/LoginModal.component.tsx +FN:15,(anonymous_2) +FN:25,(anonymous_3) +FN:27,(anonymous_4) +FN:30,(anonymous_5) +FN:34,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +LF:29 +LH:0 +BRDA:72,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/LoginModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx +FN:13,(anonymous_1) +FN:17,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +LF:12 +LH:0 +BRDA:30,0,0,0 +BRDA:30,0,1,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:32,2,0,0 +BRDA:32,2,1,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:34,4,0,0 +BRDA:34,4,1,0 +BRDA:35,5,0,0 +BRDA:35,5,1,0 +BRDA:36,6,0,0 +BRDA:36,6,1,0 +BRDA:37,7,0,0 +BRDA:37,7,1,0 +BRDA:38,8,0,0 +BRDA:38,8,1,0 +BRDA:40,9,0,0 +BRDA:40,9,1,0 +BRDA:42,10,0,0 +BRDA:42,10,1,0 +BRDA:44,11,0,0 +BRDA:44,11,1,0 +BRDA:50,12,0,0 +BRDA:50,12,1,0 +BRDA:55,13,0,0 +BRDA:55,13,1,0 +BRDA:61,14,0,0 +BRDA:61,14,1,0 +BRDA:65,15,0,0 +BRDA:65,15,1,0 +BRF:32 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/ModalLayout/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/MolArtModal/MolArtModal.component.tsx +FN:13,(anonymous_4) +FN:17,(anonymous_5) +FN:36,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:42,0 +LF:22 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/MolArtModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImagesModal.component.tsx +FN:6,(anonymous_4) +FN:12,(anonymous_5) +FN:19,(anonymous_6) +FN:20,(anonymous_7) +FN:27,(anonymous_8) +FN:42,(anonymous_9) +FNF:6 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:44,0 +LF:20 +LH:0 +BRDA:13,0,0,0 +BRDA:21,1,0,0 +BRDA:30,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImagesModal.constants.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/getFinalImageSize.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:8,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:22,0 +LF:10 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRDA:25,2,0,0 +BRDA:25,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/getOverviewImageLinkSize.ts +FN:6,(anonymous_1) +FN:19,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:4,0 +DA:6,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +LF:11 +LH:0 +BRDA:15,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImage.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:3,0 +DA:4,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts +FN:23,(anonymous_1) +FN:30,(anonymous_2) +FN:31,(anonymous_3) +FN:33,(anonymous_4) +FN:34,(anonymous_5) +FN:36,(anonymous_6) +FN:37,(anonymous_7) +FN:39,(anonymous_8) +FN:55,(anonymous_9) +FN:69,(anonymous_10) +FN:81,(anonymous_11) +FN:91,(anonymous_12) +FN:100,(anonymous_13) +FNF:13 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:52,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:81,0 +DA:82,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:88,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:97,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:105,0 +DA:106,0 +DA:109,0 +DA:110,0 +DA:113,0 +DA:114,0 +DA:117,0 +DA:120,0 +LF:69 +LH:0 +BRDA:43,0,0,0 +BRDA:47,1,0,0 +BRDA:72,2,0,0 +BRDA:93,3,0,0 +BRDA:105,4,0,0 +BRDA:109,5,0,0 +BRDA:113,6,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkElements.tsx +FN:12,(anonymous_1) +FN:20,(anonymous_2) +FN:23,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:23,0 +LF:11 +LH:0 +BRDA:18,0,0,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageSize.ts +FN:15,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:15,0 +DA:18,0 +DA:20,0 +DA:22,0 +DA:27,0 +LF:9 +LH:0 +BRDA:20,0,0,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageUrl.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:15,0 +LF:9 +LH:0 +BRDA:11,0,0,0 +BRDA:11,1,0,0 +BRDA:11,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModal.tsx +FN:15,(anonymous_1) +FN:20,(anonymous_2) +FN:21,(anonymous_3) +FN:33,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:35,0 +LF:20 +LH:0 +BRDA:27,0,0,0 +BRDA:27,0,1,0 +BRDA:30,1,0,0 +BRDA:30,1,1,0 +BRDA:34,2,0,0 +BRDA:42,3,0,0 +BRDA:42,3,1,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/PublicationsModalLayout.component.tsx +FN:18,(anonymous_2) +FN:23,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +LF:18 +LH:0 +BRDA:41,0,0,0 +BRDA:41,0,1,0 +BRDA:44,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/PublicationsModalLayout.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/getBasePublications.ts +FN:15,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:21,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:33,0 +LF:16 +LH:0 +BRDA:26,0,0,0 +BRDA:26,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/getStandarizedPublications.ts +FN:13,(anonymous_1) +FN:18,(anonymous_2) +FN:18,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:3,0 +DA:4,0 +DA:11,0 +DA:13,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:24,0 +DA:29,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/mapBasePublicationToStandarized.ts +FN:12,(anonymous_1) +FN:19,(anonymous_2) +FN:20,(anonymous_3) +FN:22,(anonymous_4) +FN:23,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:3,0 +DA:4,0 +DA:10,0 +DA:12,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +LF:13 +LH:0 +BRDA:29,0,0,0 +BRDA:29,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/mapStandarizedPublicationsToCSVString.ts +FN:3,(anonymous_1) +FN:7,(anonymous_2) +FN:9,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:3,0 +DA:6,0 +DA:8,0 +DA:9,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/useDownloadPublicationsAsCSVFile.ts +FN:26,(anonymous_1) +FN:33,(anonymous_2) +FN:38,(anonymous_3) +FN:52,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:9,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:38,0 +DA:40,0 +DA:44,0 +DA:49,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:61,0 +LF:29 +LH:0 +BRDA:35,0,0,0 +BRDA:35,0,1,0 +BRDA:40,1,0,0 +BRDA:40,1,1,0 +BRDA:40,2,0,0 +BRDA:40,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/PublicationsSearch.component.tsx +FN:19,(anonymous_2) +FN:28,(anonymous_3) +FN:32,(anonymous_4) +FN:47,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:47,0 +DA:48,0 +DA:49,0 +LF:26 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/PublicationsTable.component.tsx +FN:45,(anonymous_1) +FN:50,(anonymous_3) +FN:55,(anonymous_5) +FN:57,(anonymous_6) +FN:60,(anonymous_7) +FN:65,(anonymous_9) +FN:71,(anonymous_11) +FN:74,(anonymous_12) +FN:86,(anonymous_13) +FN:88,(anonymous_14) +FN:97,(anonymous_15) +FN:112,(anonymous_16) +FN:131,(anonymous_17) +FN:155,(anonymous_18) +FN:157,(anonymous_19) +FN:171,(anonymous_20) +FN:173,(anonymous_21) +FN:194,(anonymous_22) +FN:201,(anonymous_23) +FN:213,(anonymous_24) +FN:221,(anonymous_25) +FNF:21 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +DA:1,0 +DA:2,0 +DA:3,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:42,0 +DA:44,0 +DA:45,0 +DA:50,0 +DA:55,0 +DA:57,0 +DA:60,0 +DA:65,0 +DA:71,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:81,0 +DA:86,0 +DA:88,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:108,0 +DA:109,0 +DA:110,0 +DA:112,0 +DA:116,0 +DA:118,0 +DA:132,0 +DA:134,0 +DA:138,0 +DA:156,0 +DA:158,0 +DA:172,0 +DA:174,0 +DA:194,0 +DA:201,0 +DA:213,0 +DA:221,0 +LF:56 +LH:0 +BRDA:101,0,0,0 +BRDA:101,0,1,0 +BRDA:101,1,0,0 +BRDA:101,1,1,0 +BRDA:170,2,0,0 +BRDA:170,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/PublicationsTable.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementsOnMapCell.component.tsx +FN:9,(anonymous_1) +FN:12,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:9,0 +DA:13,0 +LF:4 +LH:0 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink/ElementLink.component.tsx +FN:23,(anonymous_1) +FN:31,(anonymous_2) +FN:32,(anonymous_3) +FN:34,(anonymous_4) +FN:46,(anonymous_5) +FN:59,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +LF:38 +LH:0 +BRDA:36,0,0,0 +BRDA:36,0,1,0 +BRDA:47,1,0,0 +BRDA:47,1,1,0 +BRDA:53,2,0,0 +BRDA:71,3,0,0 +BRDA:71,3,1,0 +BRDA:72,4,0,0 +BRDA:72,4,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader/FilterBySubmapHeader.component.tsx +FN:16,(anonymous_1) +FN:23,(anonymous_2) +FN:52,(anonymous_3) +FN:79,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:49,0 +DA:52,0 +DA:80,0 +LF:23 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRDA:63,1,0,0 +BRDA:63,1,1,0 +BRDA:67,2,0,0 +BRDA:67,2,1,0 +BRDA:74,3,0,0 +BRDA:74,3,1,0 +BRDA:78,4,0,0 +BRDA:78,4,1,0 +BRDA:85,5,0,0 +BRDA:85,5,1,0 +BRDA:86,6,0,0 +BRDA:86,6,1,0 +BRF:14 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader/SortByHeader.component.tsx +FN:19,(anonymous_1) +FN:26,(anonymous_2) +FN:49,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:36,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:53,0 +LF:22 +LH:0 +BRDA:27,0,0,0 +BRDA:27,0,1,0 +BRDA:50,1,0,0 +BRDA:50,1,1,0 +BRDA:63,2,0,0 +BRDA:66,3,0,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/PublicationsModal/utils/fetchElementData.ts +FN:11,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:33,0 +DA:39,0 +LF:17 +LH:0 +BRDA:24,0,0,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/QuestionModal/QustionModal.component.tsx +FN:14,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:14,0 +DA:20,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:56,0 +LF:12 +LH:0 +BRDA:20,0,0,0 +BRDA:24,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/Modal/ToSModal/ToSModal.component.tsx +FN:11,(anonymous_2) +FN:17,(anonymous_3) +FN:29,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:29,0 +DA:30,0 +DA:31,0 +LF:23 +LH:0 +BRDA:18,0,0,0 +BRDA:23,1,0,0 +BRDA:23,2,0,0 +BRDA:23,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/NavBar/NavBar.component.tsx +FN:15,(anonymous_2) +FN:20,(anonymous_3) +FN:28,(anonymous_4) +FN:40,(anonymous_5) +FN:48,(anonymous_6) +FN:56,(anonymous_7) +FNF:6 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:33,0 +DA:35,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:44,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:52,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:64,0 +DA:65,0 +DA:67,0 +DA:69,0 +DA:71,0 +LF:41 +LH:0 +BRDA:21,0,0,0 +BRDA:21,0,1,0 +BRDA:21,1,0,0 +BRDA:21,1,1,0 +BRDA:29,2,0,0 +BRDA:29,2,1,0 +BRDA:30,3,0,0 +BRDA:30,3,1,0 +BRDA:41,4,0,0 +BRDA:41,4,1,0 +BRDA:41,5,0,0 +BRDA:41,5,1,0 +BRDA:49,6,0,0 +BRDA:49,6,1,0 +BRDA:49,7,0,0 +BRDA:49,7,1,0 +BRDA:57,8,0,0 +BRDA:57,8,1,0 +BRDA:65,9,0,0 +BRDA:65,9,1,0 +BRDA:69,10,0,0 +BRDA:69,10,1,0 +BRF:22 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/NavBar/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/TopBar.component.tsx +FN:18,(anonymous_1) +FN:25,(anonymous_2) +FN:29,(anonymous_3) +FN:33,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:33,0 +DA:34,0 +LF:23 +LH:0 +BRDA:61,0,0,0 +BRDA:71,1,0,0 +BRDA:71,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/ClearAnchorsButton/ClearAnchorsButton.component.tsx +FN:15,(anonymous_2) +FN:19,(anonymous_3) +FN:26,(anonymous_4) +FN:39,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:26,0 +DA:28,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:41,0 +LF:29 +LH:0 +BRDA:20,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/ClearAnchorsButton/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.tsx +FN:36,(anonymous_2) +FN:50,(anonymous_3) +FN:57,(anonymous_4) +FN:63,(anonymous_5) +FN:71,(anonymous_6) +FN:79,(anonymous_7) +FN:90,(anonymous_8) +FN:98,(anonymous_9) +FN:101,(anonymous_10) +FN:103,(anonymous_11) +FN:110,(anonymous_12) +FN:114,(anonymous_13) +FN:122,(anonymous_14) +FN:127,(anonymous_15) +FN:133,(anonymous_16) +FN:148,(anonymous_17) +FN:150,(anonymous_18) +FN:153,(anonymous_19) +FNF:18 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +DA:5,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:67,0 +DA:71,0 +DA:72,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:79,0 +DA:80,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:90,0 +DA:91,0 +DA:93,0 +DA:96,0 +DA:99,0 +DA:101,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:109,0 +DA:110,0 +DA:114,0 +DA:122,0 +DA:123,0 +DA:127,0 +DA:128,0 +DA:133,0 +DA:134,0 +DA:137,0 +DA:148,0 +DA:150,0 +DA:151,0 +DA:153,0 +DA:154,0 +DA:157,0 +LF:81 +LH:0 +BRDA:52,0,0,0 +BRDA:58,1,0,0 +BRDA:58,2,0,0 +BRDA:58,2,1,0 +BRDA:64,3,0,0 +BRDA:64,3,1,0 +BRDA:82,4,0,0 +BRDA:91,5,0,0 +BRDA:106,6,0,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/SearchBar/SearchBar.utils.ts +FN:5,(anonymous_3) +FN:8,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/SearchBar/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/User.component.tsx +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +LF:6 +LH:0 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/User.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:6,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/AuthenticatedUser/AuthenticatedUser.component.tsx +FN:11,(anonymous_1) +FN:45,(anonymous_2) +FN:51,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:46,0 +DA:51,0 +LF:19 +LH:0 +BRDA:22,0,0,0 +BRDA:22,1,0,0 +BRDA:22,1,1,0 +BRDA:22,1,2,0 +BRDA:40,2,0,0 +BRDA:40,2,1,0 +BRDA:44,3,0,0 +BRDA:44,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/AuthenticatedUser/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/UnauthenticatedUser/UnauthenticatedUser.component.tsx +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/UnauthenticatedUser/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/FunctionalArea/TopBar/User/hooks/useUserActions.ts +FN:20,(anonymous_1) +FN:24,(anonymous_2) +FN:30,(anonymous_3) +FN:34,(anonymous_4) +FN:39,(anonymous_5) +FN:43,(anonymous_6) +FN:47,(anonymous_7) +FNF:7 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:43,0 +DA:44,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:57,0 +DA:59,0 +DA:63,0 +LF:34 +LH:0 +BRDA:25,0,0,0 +BRDA:25,0,1,0 +BRDA:25,1,0,0 +BRDA:25,1,1,0 +BRDA:31,2,0,0 +BRDA:31,2,1,0 +BRDA:31,3,0,0 +BRDA:31,3,1,0 +BRDA:48,4,0,0 +BRDA:48,4,1,0 +BRDA:48,4,2,0 +BRDA:48,4,3,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Map.component.tsx +FN:11,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/Drawer.component.tsx +FN:17,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +LF:17 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:28,1,2,0 +BRDA:29,2,0,0 +BRDA:29,2,1,0 +BRDA:29,2,2,0 +BRDA:30,3,0,0 +BRDA:30,3,1,0 +BRDA:30,3,2,0 +BRDA:31,4,0,0 +BRDA:31,4,1,0 +BRDA:31,4,2,0 +BRDA:32,5,0,0 +BRDA:32,5,1,0 +BRDA:32,5,2,0 +BRDA:33,6,0,0 +BRDA:33,6,1,0 +BRDA:33,6,2,0 +BRDA:34,7,0,0 +BRDA:34,7,1,0 +BRDA:34,7,2,0 +BRDA:35,8,0,0 +BRDA:35,8,1,0 +BRDA:35,8,2,0 +BRDA:36,9,0,0 +BRDA:36,9,1,0 +BRDA:36,9,2,0 +BRDA:37,10,0,0 +BRDA:37,10,1,0 +BRDA:37,10,2,0 +BRDA:38,11,0,0 +BRDA:38,11,1,0 +BRDA:38,11,2,0 +BRF:35 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/Drawer.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/AvailablePluginsDrawer.component.tsx +FN:7,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/AvailablePluginsDrawer.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/LoadPlugin.component.tsx +FN:12,(anonymous_1) +FN:18,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:19,0 +DA:20,0 +LF:9 +LH:0 +BRDA:19,0,0,0 +BRDA:37,1,0,0 +BRDA:37,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks/useLoadPlugin.ts +FN:36,(anonymous_2) +FN:41,(anonymous_3) +FN:42,(anonymous_4) +FN:43,(anonymous_5) +FN:44,(anonymous_6) +FN:49,(anonymous_7) +FN:50,(anonymous_8) +FN:57,(anonymous_9) +FN:99,(anonymous_10) +FN:107,(anonymous_11) +FN:121,(anonymous_12) +FN:130,(anonymous_13) +FNF:12 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:36,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:67,0 +DA:70,0 +DA:72,0 +DA:74,0 +DA:75,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:84,0 +DA:85,0 +DA:90,0 +DA:94,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:104,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:112,0 +DA:114,0 +DA:116,0 +DA:118,0 +DA:121,0 +DA:122,0 +DA:124,0 +DA:126,0 +DA:127,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:134,0 +DA:138,0 +LF:64 +LH:0 +BRDA:52,0,0,0 +BRDA:74,1,0,0 +BRDA:79,2,0,0 +BRDA:79,2,1,0 +BRDA:81,3,0,0 +BRDA:84,4,0,0 +BRDA:84,4,1,0 +BRDA:100,5,0,0 +BRDA:131,6,0,0 +BRDA:131,6,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/LoadPluginFromUrl.component.tsx +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks/useLoadPluginFromUrl.ts +FN:21,(anonymous_2) +FN:26,(anonymous_3) +FN:30,(anonymous_4) +FN:74,(anonymous_5) +FN:80,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:38,0 +DA:42,0 +DA:43,0 +DA:47,0 +DA:50,0 +DA:55,0 +DA:58,0 +DA:60,0 +DA:62,0 +DA:64,0 +DA:65,0 +DA:70,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:80,0 +DA:81,0 +DA:84,0 +LF:37 +LH:0 +BRDA:26,0,0,0 +BRDA:26,0,1,0 +BRDA:26,0,2,0 +BRDA:38,1,0,0 +BRDA:39,2,0,0 +BRDA:39,2,1,0 +BRDA:75,3,0,0 +BRDA:75,4,0,0 +BRDA:75,4,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins/PrivateActivePlugins.component.tsx +FN:5,(anonymous_1) +FN:7,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins/PublicActivePlugins.component.tsx +FN:5,(anonymous_1) +FN:7,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins/PublicPlugins.component.tsx +FN:6,(anonymous_2) +FN:8,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/BioEntityDrawer.component.tsx +FN:31,(anonymous_2) +FN:40,(anonymous_3) +FN:50,(anonymous_4) +FN:54,(anonymous_5) +FN:64,(anonymous_6) +FN:103,(anonymous_7) +FN:126,(anonymous_8) +FNF:7 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:61,0 +DA:62,0 +DA:64,0 +DA:65,0 +DA:67,0 +DA:104,0 +DA:126,0 +LF:43 +LH:0 +BRDA:36,0,0,0 +BRDA:36,0,1,0 +BRDA:41,1,0,0 +BRDA:41,1,1,0 +BRDA:41,2,0,0 +BRDA:41,2,1,0 +BRDA:41,2,2,0 +BRDA:57,3,0,0 +BRDA:63,4,0,0 +BRDA:63,4,1,0 +BRDA:64,5,0,0 +BRDA:64,5,1,0 +BRDA:81,6,0,0 +BRDA:81,6,1,0 +BRDA:83,7,0,0 +BRDA:88,8,0,0 +BRDA:98,9,0,0 +BRDA:101,10,0,0 +BRDA:110,11,0,0 +BRDA:124,12,0,0 +BRDA:125,13,0,0 +BRDA:125,13,1,0 +BRF:22 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/AnnotationItem/AnnotationItem.component.tsx +FNF:0 +FNH:0 +DA:2,0 +DA:6,0 +LF:2 +LH:0 +BRDA:8,0,0,0 +BRDA:8,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/AnnotationItem/AnnotationItemList.component.tsx +FN:10,(anonymous_2) +FN:19,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:4,0 +DA:10,0 +DA:11,0 +DA:20,0 +LF:6 +LH:0 +BRDA:15,0,0,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/AnnotationItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/AssociatedSubmap/AssociatedSubmap.component.tsx +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:13,0 +DA:14,0 +LF:9 +LH:0 +BRDA:13,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/AssociatedSubmap/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/ChemicalsList/ChemicalsList.component.tsx +FN:7,(anonymous_1) +FN:18,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:19,0 +LF:12 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRDA:12,1,0,0 +BRDA:21,2,0,0 +BRDA:21,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/ChemicalsList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/Comments/CommentItem.component.tsx +FN:8,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:2,0 +DA:8,0 +DA:9,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/DrugsList/DrugsList.component.tsx +FN:7,(anonymous_1) +FN:18,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:19,0 +LF:12 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRDA:12,1,0,0 +BRDA:21,2,0,0 +BRDA:21,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/DrugsList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/ModificationResidueItem/ModificationResidueItem.component.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRDA:11,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/ModificationResidueItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayData.component.tsx +FN:16,(anonymous_1) +FN:23,(anonymous_2) +FN:31,(anonymous_3) +FN:39,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:16,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:32,0 +DA:40,0 +LF:18 +LH:0 +BRDA:16,0,0,0 +BRDA:17,1,0,0 +BRDA:18,2,0,0 +BRDA:25,3,0,0 +BRDA:48,4,0,0 +BRDA:48,4,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes/GroupedOverlayAxes.components.tsx +FN:13,(anonymous_1) +FN:15,(anonymous_2) +FN:16,(anonymous_3) +FN:28,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:29,0 +LF:11 +LH:0 +BRDA:18,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/OverlayAxis.component.tsx +FN:13,(anonymous_1) +FN:17,(anonymous_2) +FN:18,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +LF:11 +LH:0 +BRDA:26,0,0,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRDA:44,3,0,0 +BRDA:44,3,1,0 +BRDA:45,4,0,0 +BRDA:45,4,1,0 +BRDA:53,5,0,0 +BRDA:53,5,1,0 +BRDA:60,6,0,0 +BRDA:67,7,0,0 +BRDA:67,7,1,0 +BRF:14 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable/GeneVariantsTable.component.tsx +FN:9,(anonymous_1) +FN:19,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:9,0 +DA:20,0 +DA:21,0 +DA:23,0 +LF:6 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils/getOverlayAxisProps.ts +FN:26,(anonymous_1) +FN:36,(anonymous_2) +FN:44,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:41,0 +DA:44,0 +DA:45,0 +LF:17 +LH:0 +BRDA:27,0,0,0 +BRDA:27,0,1,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRDA:37,2,0,0 +BRDA:41,3,0,0 +BRDA:41,3,1,0 +BRDA:57,4,0,0 +BRDA:57,4,1,0 +BRDA:58,5,0,0 +BRDA:58,5,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/utils/getAxesSortedByValue.ts +FN:4,(anonymous_1) +FN:5,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:4,0 +DA:5,0 +LF:3 +LH:0 +BRDA:5,0,0,0 +BRDA:5,0,1,0 +BRDA:5,1,0,0 +BRDA:5,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/utils/getUniqueAxes.ts +FN:7,(anonymous_1) +FN:8,(anonymous_2) +FN:9,(anonymous_3) +FN:12,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:19,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/utils/useOverlaysAxes.ts +FN:15,(anonymous_1) +FN:27,(anonymous_2) +FN:28,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:27,0 +DA:28,0 +DA:30,0 +LF:12 +LH:0 +BRDA:15,0,0,0 +BRDA:16,1,0,0 +BRDA:32,2,0,0 +BRDA:32,2,1,0 +BRDA:32,2,2,0 +BRDA:32,3,0,0 +BRDA:32,3,1,0 +BRDA:33,4,0,0 +BRDA:33,4,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/CommentDrawer/CommentDrawer.component.tsx +FN:9,(anonymous_1) +FN:14,(anonymous_2) +FN:25,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:26,0 +LF:14 +LH:0 +BRDA:16,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/CommentDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.tsx +FN:11,(anonymous_1) +FN:14,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +LF:12 +LH:0 +BRDA:22,0,0,0 +BRDA:22,0,1,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:24,2,0,0 +BRDA:24,2,1,0 +BRDA:25,3,0,0 +BRDA:25,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils.tsx +FN:3,(anonymous_1) +FN:6,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:3,0 +DA:4,0 +DA:6,0 +LF:3 +LH:0 +BRDA:4,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.component.tsx +FN:18,(anonymous_5) +FN:30,(anonymous_6) +FN:31,(anonymous_7) +FN:39,(anonymous_8) +FN:45,(anonymous_9) +FN:46,(anonymous_10) +FN:47,(anonymous_11) +FN:54,(anonymous_12) +FN:59,(anonymous_13) +FN:96,(anonymous_14) +FNF:10 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:18,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:59,0 +DA:60,0 +DA:97,0 +LF:29 +LH:0 +BRDA:20,0,0,0 +BRDA:23,1,0,0 +BRDA:24,2,0,0 +BRDA:46,3,0,0 +BRDA:46,3,1,0 +BRDA:65,4,0,0 +BRDA:89,5,0,0 +BRDA:89,5,1,0 +BRDA:93,6,0,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput/OptionInput.component.tsx +FN:12,(anonymous_1) +FN:19,(anonymous_2) +FN:21,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:12,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:30,0 +LF:10 +LH:0 +BRDA:14,0,0,0 +BRDA:22,1,0,0 +BRDA:22,1,1,0 +BRDA:22,1,2,0 +BRDA:40,2,0,0 +BRDA:40,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CollapsibleSection/CollapsibleSection.component.tsx +FN:18,(anonymous_1) +FN:24,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:8,0 +DA:18,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +LF:7 +LH:0 +BRDA:27,0,0,0 +BRDA:27,1,0,0 +BRDA:27,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CollapsibleSection/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CurrentView/CurrentView.component.tsx +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/CurrentView/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/Elements/Elements.component.tsx +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/Elements/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.component.tsx +FN:38,(anonymous_1) +FN:57,(anonymous_2) +FN:68,(anonymous_3) +FN:80,(anonymous_4) +FN:82,(anonymous_5) +FN:88,(anonymous_6) +FN:97,(anonymous_7) +FN:102,(anonymous_8) +FN:112,(anonymous_9) +FN:131,(anonymous_10) +FNF:10 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:65,0 +DA:68,0 +DA:69,0 +DA:77,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:84,0 +DA:88,0 +DA:92,0 +DA:93,0 +DA:97,0 +DA:98,0 +DA:102,0 +DA:106,0 +DA:107,0 +DA:111,0 +DA:112,0 +DA:130,0 +DA:131,0 +DA:156,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:162,0 +DA:163,0 +DA:164,0 +DA:165,0 +LF:71 +LH:0 +BRDA:92,0,0,0 +BRDA:106,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.constant.ts +FN:51,(anonymous_6) +FN:52,(anonymous_7) +FN:53,(anonymous_8) +FN:54,(anonymous_9) +FN:55,(anonymous_10) +FN:56,(anonymous_11) +FN:57,(anonymous_12) +FN:58,(anonymous_13) +FN:59,(anonymous_14) +FN:60,(anonymous_15) +FNF:10 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +DA:2,0 +DA:4,0 +DA:9,0 +DA:14,0 +DA:37,0 +DA:50,0 +DA:57,0 +DA:58,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.context.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.tsx +FN:19,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +LF:17 +LH:0 +BRDA:30,0,0,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:31,1,2,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.utils.ts +FN:16,(anonymous_1) +FN:20,(anonymous_2) +FN:28,(anonymous_3) +FN:29,(anonymous_4) +FN:32,(anonymous_5) +FN:47,(anonymous_6) +FN:50,(anonymous_7) +FNF:7 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:3,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:23,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:37,0 +DA:40,0 +DA:44,0 +DA:46,0 +DA:48,0 +DA:50,0 +LF:14 +LH:0 +BRDA:17,0,0,0 +BRDA:17,0,1,0 +BRDA:37,1,0,0 +BRDA:37,2,0,0 +BRDA:37,2,1,0 +BRDA:40,3,0,0 +BRDA:40,3,1,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView/DownloadCurrentView.component.tsx +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/DownloadElements.tsx +FN:7,(anonymous_2) +FN:11,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +LF:12 +LH:0 +BRDA:20,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics/DownloadGraphics.component.tsx +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/DownloadNetwork.tsx +FN:7,(anonymous_2) +FN:11,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +LF:12 +LH:0 +BRDA:20,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +LF:15 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRDA:19,0,2,0 +BRDA:23,1,0,0 +BRDA:24,2,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat/ImageFormat.component.tsx +FN:13,(anonymous_1) +FN:21,(anonymous_2) +FN:22,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:27,0 +DA:28,0 +DA:34,0 +LF:19 +LH:0 +BRDA:28,0,0,0 +BRDA:29,1,0,0 +BRDA:29,1,1,0 +BRDA:29,1,2,0 +BRDA:29,1,3,0 +BRDA:39,2,0,0 +BRDA:40,3,0,0 +BRDA:40,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/ImageSize.component.tsx +FN:4,(anonymous_1) +FN:18,(anonymous_2) +FN:31,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:19,0 +DA:31,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/ImageSize.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:11,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useExportGraphicsSelectedModel.ts +FN:8,(anonymous_1) +FN:17,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:17,0 +LF:12 +LH:0 +BRDA:13,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useImageSize.ts +FN:17,(anonymous_1) +FN:27,(anonymous_2) +FN:46,(anonymous_3) +FN:58,(anonymous_4) +FN:67,(anonymous_5) +FN:76,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:37,0 +DA:45,0 +DA:47,0 +DA:48,0 +DA:53,0 +DA:58,0 +DA:59,0 +DA:64,0 +DA:67,0 +DA:68,0 +DA:73,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:81,0 +DA:84,0 +LF:36 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRDA:77,2,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useModelAspectRatios.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:12,0 +LF:5 +LH:0 +BRDA:8,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useScreenAspectRatios.ts +FN:5,(anonymous_3) +FN:20,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:29,0 +LF:18 +LH:0 +BRDA:7,0,0,0 +BRDA:22,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways/IncludedCompartmentPathways.component.tsx +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +LF:14 +LH:0 +BRDA:22,0,0,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:23,1,2,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Submap/Submap.component.tsx +FN:10,(anonymous_1) +FN:17,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:22,0 +DA:23,0 +DA:29,0 +LF:17 +LH:0 +BRDA:23,0,0,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRDA:24,1,2,0 +BRDA:24,1,3,0 +BRDA:34,2,0,0 +BRDA:35,3,0,0 +BRDA:35,3,1,0 +BRDA:35,3,2,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Submap/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/extractAndParseNumberIdFromCompartment.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:9,0 +LF:5 +LH:0 +BRDA:7,0,0,0 +BRDA:7,1,0,0 +BRDA:7,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.ts +FN:10,(anonymous_1) +FN:16,(anonymous_2) +FN:24,(anonymous_3) +FN:29,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:10,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:22,0 +DA:24,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:34,0 +LF:11 +LH:0 +BRDA:17,0,0,0 +BRDA:30,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.ts +FN:20,(anonymous_1) +FN:29,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:20,0 +DA:26,0 +DA:29,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getExportContextWithReduxWrapper.tsx +FN:23,(anonymous_1) +FN:29,(anonymous_2) +FN:37,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:4,0 +DA:5,0 +DA:6,0 +DA:23,0 +DA:27,0 +DA:29,0 +DA:37,0 +DA:45,0 +LF:8 +LH:0 +BRDA:31,0,0,0 +BRDA:31,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getGraphicsDownloadUrl.ts +FN:12,(anonymous_1) +FN:20,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:12,0 +DA:19,0 +DA:20,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:39,0 +LF:15 +LH:0 +BRDA:20,0,0,0 +BRDA:20,0,1,0 +BRDA:24,1,0,0 +BRDA:31,2,0,0 +BRDA:33,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getModelExportZoom.ts +FN:12,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:21,0 +LF:8 +LH:0 +BRDA:14,0,0,0 +BRDA:14,1,0,0 +BRDA:14,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.ts +FN:20,(anonymous_1) +FN:29,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:20,0 +DA:26,0 +DA:29,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/Graphics/Graphics.component.tsx +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/Graphics/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/Network/Network.component.tsx +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/Network/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/TabButton/TabButton.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:9,0 +LF:2 +LH:0 +BRDA:14,0,0,0 +BRDA:14,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/TabButton/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/TabNavigator/TabNavigator.component.tsx +FN:12,(anonymous_2) +FN:15,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:10,0 +DA:13,0 +DA:15,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/TabNavigator/TabNavigator.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ExportDrawer/TabNavigator/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx +FN:14,(anonymous_4) +FN:26,(anonymous_5) +FN:30,(anonymous_6) +FN:31,(anonymous_7) +FN:41,(anonymous_8) +FN:57,(anonymous_9) +FN:61,(anonymous_10) +FN:65,(anonymous_11) +FN:69,(anonymous_12) +FN:73,(anonymous_13) +FN:77,(anonymous_14) +FNF:11 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:2,0 +DA:3,0 +DA:14,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:58,0 +DA:59,0 +DA:62,0 +DA:63,0 +DA:66,0 +DA:67,0 +DA:70,0 +DA:71,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:79,0 +LF:30 +LH:0 +BRDA:32,0,0,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:35,2,0,0 +BRDA:35,3,0,0 +BRDA:35,3,1,0 +BRDA:54,4,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx +FN:22,(anonymous_4) +FN:36,(anonymous_5) +FN:40,(anonymous_6) +FN:44,(anonymous_7) +FN:45,(anonymous_8) +FN:52,(anonymous_9) +FNF:6 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:22,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:52,0 +LF:21 +LH:0 +BRDA:41,0,0,0 +BRDA:41,0,1,0 +BRDA:41,0,2,0 +BRDA:46,1,0,0 +BRDA:60,2,0,0 +BRDA:60,2,1,0 +BRDA:69,3,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx +FN:22,(anonymous_4) +FN:36,(anonymous_5) +FN:40,(anonymous_6) +FN:44,(anonymous_7) +FN:45,(anonymous_8) +FN:52,(anonymous_9) +FNF:6 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:22,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:52,0 +LF:21 +LH:0 +BRDA:41,0,0,0 +BRDA:41,0,1,0 +BRDA:41,0,2,0 +BRDA:46,1,0,0 +BRDA:60,2,0,0 +BRDA:60,2,1,0 +BRDA:69,3,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +FN:13,(anonymous_1) +FN:20,(anonymous_2) +FN:24,(anonymous_3) +FN:26,(anonymous_4) +FN:31,(anonymous_5) +FN:31,(anonymous_6) +FN:35,(anonymous_7) +FN:35,(anonymous_8) +FN:39,(anonymous_9) +FN:93,(anonymous_10) +FN:103,(anonymous_11) +FNF:11 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:44,0 +DA:47,0 +DA:48,0 +DA:51,0 +DA:52,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:64,0 +DA:65,0 +DA:94,0 +DA:104,0 +LF:41 +LH:0 +BRDA:40,0,0,0 +BRDA:40,1,0,0 +BRDA:40,1,1,0 +BRDA:44,2,0,0 +BRDA:44,2,1,0 +BRDA:44,2,2,0 +BRDA:47,3,0,0 +BRDA:57,4,0,0 +BRDA:64,5,0,0 +BRDA:79,6,0,0 +BRDA:87,7,0,0 +BRDA:97,8,0,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx +FN:23,(anonymous_4) +FN:35,(anonymous_5) +FN:38,(anonymous_6) +FN:42,(anonymous_7) +FN:46,(anonymous_8) +FN:47,(anonymous_9) +FN:54,(anonymous_10) +FNF:7 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:23,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:54,0 +LF:23 +LH:0 +BRDA:43,0,0,0 +BRDA:43,0,1,0 +BRDA:43,0,2,0 +BRDA:48,1,0,0 +BRDA:62,2,0,0 +BRDA:62,2,1,0 +BRDA:69,3,0,0 +BRDA:69,3,1,0 +BRDA:73,4,0,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +FN:35,(anonymous_2) +FN:46,(anonymous_3) +FN:50,(anonymous_4) +FN:54,(anonymous_5) +FN:58,(anonymous_6) +FN:63,(anonymous_7) +FN:68,(anonymous_8) +FN:73,(anonymous_9) +FN:78,(anonymous_10) +FN:82,(anonymous_11) +FN:102,(anonymous_12) +FN:106,(anonymous_13) +FN:114,(anonymous_14) +FN:136,(anonymous_15) +FN:145,(anonymous_16) +FN:154,(anonymous_17) +FN:159,(anonymous_18) +FN:181,(anonymous_19) +FNF:18 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +DA:2,0 +DA:3,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:54,0 +DA:55,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:79,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:92,0 +DA:94,0 +DA:95,0 +DA:102,0 +DA:103,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:126,0 +DA:128,0 +DA:129,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:141,0 +DA:145,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:154,0 +DA:155,0 +DA:156,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:182,0 +LF:84 +LH:0 +BRDA:83,0,0,0 +BRDA:97,1,0,0 +BRDA:97,1,1,0 +BRDA:107,2,0,0 +BRDA:107,2,1,0 +BRDA:131,3,0,0 +BRDA:131,3,1,0 +BRDA:137,4,0,0 +BRDA:137,4,1,0 +BRDA:139,5,0,0 +BRDA:146,6,0,0 +BRDA:146,6,1,0 +BRDA:149,7,0,0 +BRDA:175,8,0,0 +BRDA:175,8,1,0 +BRF:15 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx +FN:26,(anonymous_1) +FN:59,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:26,0 +DA:43,0 +DA:59,0 +LF:7 +LH:0 +BRDA:48,0,0,0 +BRDA:48,0,1,0 +BRDA:53,1,0,0 +BRDA:56,2,0,0 +BRDA:56,2,1,0 +BRDA:61,3,0,0 +BRDA:75,4,0,0 +BRDA:83,5,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx +FN:17,(anonymous_4) +FN:28,(anonymous_5) +FNF:2 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:13,0 +DA:28,0 +DA:101,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx +FN:12,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:12,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +FN:73,(anonymous_2) +FN:79,(anonymous_3) +FN:80,(anonymous_4) +FN:81,(anonymous_5) +FN:94,(anonymous_6) +FN:105,(anonymous_7) +FN:109,(anonymous_8) +FN:180,(anonymous_9) +FN:208,(anonymous_10) +FN:212,(anonymous_11) +FN:216,(anonymous_12) +FN:244,(anonymous_13) +FN:248,(anonymous_14) +FN:252,(anonymous_15) +FN:286,(anonymous_16) +FN:290,(anonymous_17) +FN:294,(anonymous_18) +FN:305,(anonymous_19) +FN:309,(anonymous_20) +FN:313,(anonymous_21) +FN:333,(anonymous_22) +FN:337,(anonymous_23) +FN:338,(anonymous_24) +FN:339,(anonymous_25) +FN:340,(anonymous_26) +FN:341,(anonymous_27) +FN:346,(anonymous_28) +FN:350,(anonymous_29) +FN:351,(anonymous_30) +FN:352,(anonymous_31) +FN:353,(anonymous_32) +FN:354,(anonymous_33) +FN:359,(anonymous_34) +FN:363,(anonymous_35) +FN:364,(anonymous_36) +FN:365,(anonymous_37) +FN:366,(anonymous_38) +FN:367,(anonymous_39) +FN:372,(anonymous_40) +FNF:39 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +DA:2,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:19,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:55,0 +DA:73,0 +DA:78,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:86,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:101,0 +DA:105,0 +DA:106,0 +DA:109,0 +DA:110,0 +DA:111,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:123,0 +DA:130,0 +DA:131,0 +DA:138,0 +DA:146,0 +DA:153,0 +DA:161,0 +DA:166,0 +DA:170,0 +DA:172,0 +DA:173,0 +DA:180,0 +DA:187,0 +DA:195,0 +DA:196,0 +DA:203,0 +DA:204,0 +DA:208,0 +DA:209,0 +DA:212,0 +DA:213,0 +DA:216,0 +DA:223,0 +DA:231,0 +DA:232,0 +DA:239,0 +DA:240,0 +DA:244,0 +DA:245,0 +DA:248,0 +DA:249,0 +DA:252,0 +DA:259,0 +DA:273,0 +DA:274,0 +DA:281,0 +DA:282,0 +DA:286,0 +DA:287,0 +DA:290,0 +DA:291,0 +DA:294,0 +DA:295,0 +DA:296,0 +DA:297,0 +DA:301,0 +DA:305,0 +DA:306,0 +DA:309,0 +DA:310,0 +DA:313,0 +DA:314,0 +DA:317,0 +DA:318,0 +DA:334,0 +DA:337,0 +DA:338,0 +DA:339,0 +DA:340,0 +DA:341,0 +DA:347,0 +DA:350,0 +DA:351,0 +DA:352,0 +DA:353,0 +DA:354,0 +DA:360,0 +DA:363,0 +DA:364,0 +DA:365,0 +DA:366,0 +DA:367,0 +DA:373,0 +LF:122 +LH:0 +BRDA:96,0,0,0 +BRDA:96,0,1,0 +BRDA:98,1,0,0 +BRDA:98,1,1,0 +BRDA:110,2,0,0 +BRDA:110,3,0,0 +BRDA:110,3,1,0 +BRDA:115,4,0,0 +BRDA:115,4,1,0 +BRDA:130,5,0,0 +BRDA:130,5,1,0 +BRDA:175,6,0,0 +BRDA:175,6,1,0 +BRDA:195,7,0,0 +BRDA:231,8,0,0 +BRDA:273,9,0,0 +BRDA:295,10,0,0 +BRDA:295,11,0,0 +BRDA:295,11,1,0 +BRDA:317,12,0,0 +BRDA:322,13,0,0 +BRDA:322,13,1,0 +BRDA:328,14,0,0 +BRDA:328,14,1,0 +BRF:24 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx +FN:9,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:9,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/LayersDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlayGroupDrawer/OverlaysGroupDrawer.component.tsx +FN:8,(anonymous_1) +FN:10,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:14,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlayGroupDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlayGroupDrawer/hooks/useOverlayGroupForm.ts +FN:13,(anonymous_1) +FN:19,(anonymous_2) +FN:22,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:32,0 +DA:35,0 +LF:16 +LH:0 +BRDA:23,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysDrawer.component.tsx +FN:10,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +LF:10 +LH:0 +BRDA:15,0,0,0 +BRDA:25,1,0,0 +BRDA:25,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/GeneralOverlays.component.tsx +FN:9,(anonymous_2) +FN:30,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:31,0 +LF:12 +LH:0 +BRDA:17,0,0,0 +BRDA:17,0,1,0 +BRDA:26,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem/OverlayListItem.component.tsx +FN:11,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:11,0 +DA:13,0 +LF:6 +LH:0 +BRDA:24,0,0,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRDA:33,2,0,0 +BRDA:33,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaysLegends.component.tsx +FN:5,(anonymous_1) +FN:10,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:11,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend/OverlaySingleLegend.component.tsx +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:9,0 +DA:10,0 +DA:11,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/UserOverlayForm.component.tsx +FN:14,(anonymous_1) +FN:36,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:34,0 +DA:36,0 +DA:37,0 +LF:16 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/UserOverlayForm.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:5,0 +DA:16,0 +DA:22,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/UserOverlayForm.utils.ts +FN:10,(anonymous_1) +FN:17,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:7,0 +DA:8,0 +DA:10,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +LF:12 +LH:0 +BRDA:21,0,0,0 +BRDA:21,1,0,0 +BRDA:21,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload/FileUpload.component.tsx +FN:13,(anonymous_2) +FN:23,(anonymous_3) +FN:30,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:4,0 +DA:13,0 +DA:19,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +LF:15 +LH:0 +BRDA:27,0,0,0 +BRDA:31,1,0,0 +BRDA:49,2,0,0 +BRDA:49,2,1,0 +BRDA:51,3,0,0 +BRDA:51,3,1,0 +BRDA:51,3,2,0 +BRDA:53,4,0,0 +BRDA:53,4,1,0 +BRDA:58,5,0,0 +BRDA:58,5,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/OverlayGroupSelector.component.tsx +FN:15,(anonymous_1) +FN:21,(anonymous_2) +FN:38,(anonymous_3) +FN:67,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:4,0 +DA:5,0 +DA:15,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:34,0 +DA:38,0 +DA:68,0 +LF:10 +LH:0 +BRDA:22,0,0,0 +BRDA:45,1,0,0 +BRDA:45,1,1,0 +BRDA:56,2,0,0 +BRDA:56,2,1,0 +BRDA:63,3,0,0 +BRDA:63,3,1,0 +BRDA:66,4,0,0 +BRDA:66,4,1,0 +BRDA:71,5,0,0 +BRDA:71,5,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/OverlaySelector.component.tsx +FN:15,(anonymous_1) +FN:21,(anonymous_2) +FN:38,(anonymous_3) +FN:67,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:4,0 +DA:5,0 +DA:15,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:34,0 +DA:38,0 +DA:68,0 +LF:10 +LH:0 +BRDA:22,0,0,0 +BRDA:45,1,0,0 +BRDA:45,1,1,0 +BRDA:56,2,0,0 +BRDA:56,2,1,0 +BRDA:63,3,0,0 +BRDA:63,3,1,0 +BRDA:66,4,0,0 +BRDA:66,4,1,0 +BRDA:71,5,0,0 +BRDA:71,5,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks/useUserOverlayForm.ts +FN:35,(anonymous_1) +FN:50,(anonymous_2) +FN:54,(anonymous_3) +FN:58,(anonymous_4) +FN:62,(anonymous_5) +FN:66,(anonymous_6) +FN:70,(anonymous_7) +FN:74,(anonymous_8) +FN:83,(anonymous_9) +FN:94,(anonymous_10) +FN:100,(anonymous_11) +FNF:11 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:51,0 +DA:54,0 +DA:55,0 +DA:58,0 +DA:59,0 +DA:62,0 +DA:63,0 +DA:66,0 +DA:67,0 +DA:70,0 +DA:71,0 +DA:74,0 +DA:75,0 +DA:77,0 +DA:78,0 +DA:80,0 +DA:81,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:87,0 +DA:90,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:100,0 +DA:101,0 +DA:103,0 +DA:104,0 +DA:107,0 +DA:109,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:128,0 +LF:61 +LH:0 +BRDA:75,0,0,0 +BRDA:75,0,1,0 +BRDA:75,0,2,0 +BRDA:75,0,3,0 +BRDA:84,1,0,0 +BRDA:103,2,0,0 +BRDA:107,3,0,0 +BRDA:107,4,0,0 +BRDA:107,4,1,0 +BRDA:107,4,2,0 +BRDA:112,5,0,0 +BRDA:112,5,1,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlays.component.tsx +FN:15,(anonymous_2) +FN:24,(anonymous_3) +FN:27,(anonymous_4) +FN:55,(anonymous_5) +FN:60,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:56,0 +DA:60,0 +LF:22 +LH:0 +BRDA:33,0,0,0 +BRDA:35,1,0,0 +BRDA:35,1,1,0 +BRDA:44,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlaysGroup.component.tsx +FN:27,(anonymous_2) +FN:53,(anonymous_3) +FN:84,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:27,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:85,0 +LF:21 +LH:0 +BRDA:41,0,0,0 +BRDA:41,0,1,0 +BRDA:54,1,0,0 +BRDA:68,2,0,0 +BRDA:81,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlaysGroup.utils.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:4,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:16,0 +DA:18,0 +LF:7 +LH:0 +BRDA:12,0,0,0 +BRDA:12,1,0,0 +BRDA:12,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayListItem.component.tsx +FN:19,(anonymous_2) +FN:36,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:19,0 +DA:25,0 +DA:26,0 +DA:36,0 +LF:13 +LH:0 +BRDA:39,0,0,0 +BRDA:39,0,1,0 +BRDA:42,1,0,0 +BRDA:46,2,0,0 +BRDA:54,3,0,0 +BRDA:63,4,0,0 +BRDA:63,4,1,0 +BRDA:63,5,0,0 +BRDA:63,5,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/UserOverlayActions.component.tsx +FN:13,(anonymous_4) +FN:14,(anonymous_5) +FN:38,(anonymous_6) +FN:44,(anonymous_7) +FNF:4 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:19,0 +DA:39,0 +DA:44,0 +LF:12 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRDA:37,1,0,0 +BRDA:37,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/UserOverlayActions.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks/useUserOverlayActions.ts +FN:12,(anonymous_1) +FN:15,(anonymous_2) +FN:19,(anonymous_3) +FN:23,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:36,0 +LF:19 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRDA:24,0,2,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo/UserOverlayInfo.component.tsx +FN:11,(anonymous_4) +FN:12,(anonymous_5) +FNF:2 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:3,0 +DA:4,0 +DA:11,0 +DA:12,0 +LF:5 +LH:0 +BRDA:18,0,0,0 +BRDA:25,1,0,0 +BRDA:25,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks/useDragAndDrop.ts +FN:21,(anonymous_1) +FN:31,(anonymous_2) +FN:38,(anonymous_3) +FN:46,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:5,0 +DA:21,0 +DA:28,0 +DA:31,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:44,0 +DA:47,0 +DA:51,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks/useUserOverlays.ts +FN:17,(anonymous_1) +FN:26,(anonymous_2) +FN:32,(anonymous_3) +FN:38,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:17,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:38,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:46,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:68,0 +LF:31 +LH:0 +BRDA:27,0,0,0 +BRDA:43,1,0,0 +BRDA:45,2,0,0 +BRDA:60,3,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/OverlaysDrawer/hooks/useOverlay.ts +FN:27,(anonymous_2) +FN:29,(anonymous_3) +FN:30,(anonymous_4) +FN:31,(anonymous_5) +FN:32,(anonymous_6) +FN:35,(anonymous_7) +FN:37,(anonymous_8) +FN:49,(anonymous_9) +FN:64,(anonymous_10) +FNF:9 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:58,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:68,0 +LF:36 +LH:0 +BRDA:38,0,0,0 +BRDA:38,0,1,0 +BRDA:40,1,0,0 +BRDA:42,2,0,0 +BRDA:42,2,1,0 +BRDA:50,3,0,0 +BRDA:50,3,1,0 +BRDA:53,4,0,0 +BRDA:53,4,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ProjectInfoDrawer/ProjectInfoDrawer.component.tsx +FN:21,(anonymous_1) +FN:40,(anonymous_2) +FN:44,(anonymous_3) +FN:48,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:48,0 +DA:49,0 +LF:31 +LH:0 +BRDA:35,0,0,0 +BRDA:36,1,0,0 +BRDA:36,1,1,0 +BRDA:79,2,0,0 +BRDA:92,3,0,0 +BRDA:105,4,0,0 +BRDA:122,5,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ProjectInfoDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ReactionDrawer/ReactionDrawer.component.tsx +FN:14,(anonymous_2) +FN:53,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:24,0 +DA:53,0 +LF:17 +LH:0 +BRDA:18,0,0,0 +BRDA:40,1,0,0 +BRDA:51,2,0,0 +BRDA:52,3,0,0 +BRDA:52,3,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ReactionDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList/ConnectedBioEntitiesList.component.tsx +FN:10,(anonymous_2) +FN:23,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:24,0 +LF:12 +LH:0 +BRDA:15,0,0,0 +BRDA:22,1,0,0 +BRDA:22,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerWrapper.component.tsx +FN:14,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +LF:14 +LH:0 +BRDA:27,0,0,0 +BRDA:27,0,1,0 +BRDA:29,1,0,0 +BRDA:29,1,1,0 +BRDA:35,2,0,0 +BRDA:35,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesResultsList.component.tsx +FN:9,(anonymous_1) +FN:14,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +LF:13 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsList.component.tsx +FN:9,(anonymous_1) +FN:13,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:3,0 +DA:9,0 +DA:14,0 +LF:3 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRDA:14,1,0,0 +BRDA:14,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/BioEntitiesPinsListItem.component.tsx +FN:31,(anonymous_2) +FN:37,(anonymous_3) +FN:45,(anonymous_4) +FN:59,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:31,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:50,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:66,0 +LF:33 +LH:0 +BRDA:38,0,0,0 +BRDA:38,0,1,0 +BRDA:46,1,0,0 +BRDA:74,2,0,0 +BRDA:74,2,1,0 +BRDA:80,3,0,0 +BRDA:80,3,1,0 +BRDA:89,4,0,0 +BRDA:97,5,0,0 +BRDA:105,6,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/BioEntitiesPinsListItem.utils.ts +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:6,0 +DA:9,0 +LF:2 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/GroupedSearchResults.component.tsx +FN:8,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:8,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesAccordion.component.tsx +FN:18,(anonymous_1) +FN:25,(anonymous_2) +FN:38,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:10,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:39,0 +LF:16 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRDA:34,1,0,0 +BRDA:34,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem/BioEntitiesSubmapItem.component.tsx +FN:19,(anonymous_1) +FN:29,(anonymous_2) +FN:30,(anonymous_3) +FN:32,(anonymous_4) +FN:44,(anonymous_5) +FN:50,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:19,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:48,0 +DA:49,0 +DA:50,0 +LF:28 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRDA:38,1,0,0 +BRDA:49,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion/ChemicalsAccordion.component.tsx +FN:13,(anonymous_1) +FN:24,(anonymous_2) +FN:29,(anonymous_3) +FN:31,(anonymous_4) +FN:32,(anonymous_5) +FN:36,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:35,0 +DA:36,0 +DA:37,0 +LF:25 +LH:0 +BRDA:31,0,0,0 +BRDA:31,0,1,0 +BRDA:46,1,0,0 +BRDA:46,1,1,0 +BRDA:49,2,0,0 +BRDA:49,2,1,0 +BRDA:50,3,0,0 +BRDA:50,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion/DrugsAccordion.component.tsx +FN:13,(anonymous_1) +FN:25,(anonymous_2) +FN:30,(anonymous_3) +FN:32,(anonymous_4) +FN:33,(anonymous_5) +FN:36,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +LF:25 +LH:0 +BRDA:32,0,0,0 +BRDA:32,0,1,0 +BRDA:46,1,0,0 +BRDA:46,1,1,0 +BRDA:49,2,0,0 +BRDA:49,2,1,0 +BRDA:50,3,0,0 +BRDA:50,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/ResultsList.component.tsx +FN:9,(anonymous_1) +FN:14,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +LF:13 +LH:0 +BRDA:23,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/ResultsList.component.utils.tsx +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +LF:5 +LH:0 +BRDA:2,0,0,0 +BRDA:2,0,1,0 +BRDA:2,0,2,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails/AccordionsDetails.component.tsx +FN:19,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:7,0 +DA:13,0 +DA:19,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails/AccordionsDetails.utils.tsx +FN:3,(anonymous_5) +FN:6,(anonymous_6) +FN:13,(anonymous_7) +FN:16,(anonymous_8) +FN:25,(anonymous_9) +FN:28,(anonymous_10) +FN:37,(anonymous_11) +FN:40,(anonymous_12) +FN:46,(anonymous_13) +FNF:9 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:34,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:54,0 +LF:25 +LH:0 +BRDA:17,0,0,0 +BRDA:29,1,0,0 +BRDA:38,2,0,0 +BRDA:40,3,0,0 +BRDA:40,3,1,0 +BRDA:44,4,0,0 +BRDA:47,5,0,0 +BRDA:47,5,1,0 +BRDA:47,6,0,0 +BRDA:47,6,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsList.component.tsx +FN:14,(anonymous_1) +FN:26,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:20,0 +DA:27,0 +DA:41,0 +DA:43,0 +DA:45,0 +DA:47,0 +LF:15 +LH:0 +BRDA:17,0,0,0 +BRDA:17,0,1,0 +BRDA:17,0,2,0 +BRDA:17,0,3,0 +BRDA:17,0,4,0 +BRDA:17,0,5,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/PinsListItem.component.tsx +FN:24,(anonymous_1) +FN:42,(anonymous_2) +FN:43,(anonymous_3) +FN:45,(anonymous_4) +FN:57,(anonymous_5) +FN:93,(anonymous_6) +FN:113,(anonymous_7) +FN:131,(anonymous_8) +FN:134,(anonymous_9) +FNF:9 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:14,0 +DA:24,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:49,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:66,0 +DA:94,0 +DA:114,0 +DA:132,0 +DA:134,0 +LF:36 +LH:0 +BRDA:46,0,0,0 +BRDA:46,0,1,0 +BRDA:51,1,0,0 +BRDA:58,2,0,0 +BRDA:92,3,0,0 +BRDA:92,3,1,0 +BRDA:101,4,0,0 +BRDA:101,4,1,0 +BRDA:118,5,0,0 +BRDA:118,5,1,0 +BRDA:128,6,0,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/PinsListItem.component.utils.ts +FN:6,(anonymous_3) +FN:18,(anonymous_4) +FN:22,(anonymous_5) +FN:25,(anonymous_6) +FN:29,(anonymous_7) +FN:33,(anonymous_8) +FNF:6 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:4,0 +DA:6,0 +DA:7,0 +DA:15,0 +DA:18,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:29,0 +DA:30,0 +DA:33,0 +DA:36,0 +DA:39,0 +LF:13 +LH:0 +BRDA:25,0,0,0 +BRDA:25,0,1,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks/useVisiblePinsPolygonCoordinates.ts +FN:12,(anonymous_1) +FN:18,(anonymous_2) +FN:18,(anonymous_3) +FN:22,(anonymous_4) +FN:23,(anonymous_5) +FN:24,(anonymous_6) +FN:45,(anonymous_7) +FN:45,(anonymous_8) +FNF:8 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:41,0 +DA:44,0 +DA:45,0 +DA:49,0 +DA:50,0 +DA:53,0 +LF:25 +LH:0 +BRDA:49,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils/getTargetElementsUniqueSorted.ts +FN:8,(anonymous_1) +FN:12,(anonymous_2) +FN:14,(anonymous_3) +FN:15,(anonymous_4) +FN:22,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:8,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/SearchDrawerHeader.component.tsx +FN:7,(anonymous_1) +FN:10,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch/PerfectMatchSwitch.component.tsx +FN:10,(anonymous_1) +FN:15,(anonymous_2) +FN:19,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +LF:17 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs/SearchDrawerTabs.component.tsx +FN:9,(anonymous_1) +FN:14,(anonymous_2) +FN:16,(anonymous_3) +FN:28,(anonymous_4) +FN:36,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:29,0 +DA:36,0 +LF:18 +LH:0 +BRDA:20,0,0,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRDA:34,2,0,0 +BRDA:34,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/SubmapsDrawer.tsx +FN:11,(anonymous_1) +FN:17,(anonymous_2) +FN:18,(anonymous_3) +FN:20,(anonymous_4) +FN:36,(anonymous_5) +FN:41,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:37,0 +DA:41,0 +LF:24 +LH:0 +BRDA:21,0,0,0 +BRDA:21,0,1,0 +BRDA:26,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/SubmapItem.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:10,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.tsx +FN:17,(anonymous_2) +FN:28,(anonymous_3) +FN:29,(anonymous_4) +FN:32,(anonymous_5) +FN:67,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:68,0 +LF:24 +LH:0 +BRDA:48,0,0,0 +BRDA:57,1,0,0 +BRDA:62,2,0,0 +BRDA:62,2,1,0 +BRDA:66,3,0,0 +BRDA:66,3,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.constants.ts +FNF:0 +FNH:0 +DA:6,0 +DA:8,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.ts +FN:13,(anonymous_1) +FN:17,(anonymous_2) +FN:19,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:26,0 +DA:29,0 +LF:13 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRDA:22,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/Legend.component.tsx +FN:11,(anonymous_4) +FN:15,(anonymous_5) +FNF:2 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +LF:14 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/Legend.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendHeader/LegendHeader.component.tsx +FN:7,(anonymous_3) +FN:10,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendHeader/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendImages/LegendImages.component.tsx +FN:5,(anonymous_1) +FN:13,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:14,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendImages/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendTabs/LegendTabs.component.tsx +FN:6,(anonymous_2) +FN:11,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:12,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendTabs/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendTabs/LegendTab/LegendTab.component.tsx +FN:11,(anonymous_2) +FN:13,(anonymous_3) +FN:15,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +LF:12 +LH:0 +BRDA:21,0,0,0 +BRDA:21,0,1,0 +BRDA:22,1,0,0 +BRDA:22,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/Legend/LegendTabs/LegendTab/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalActions/MapAdditionalActions.component.tsx +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalActions/MappAdditionalActions.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalActions/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalActions/utils/useAdditionalActions.ts +FN:17,(anonymous_1) +FN:22,(anonymous_2) +FN:24,(anonymous_3) +FN:44,(anonymous_4) +FN:51,(anonymous_5) +FN:52,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:37,0 +DA:40,0 +DA:43,0 +DA:45,0 +DA:50,0 +DA:51,0 +DA:52,0 +LF:28 +LH:0 +BRDA:25,0,0,0 +BRDA:29,1,0,0 +BRDA:32,2,0,0 +BRDA:32,2,1,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:34,4,0,0 +BRDA:34,4,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalActions/utils/useVisibleBioEntitiesPolygonCoordinates.ts +FN:11,(anonymous_1) +FN:15,(anonymous_2) +FN:16,(anonymous_3) +FN:17,(anonymous_4) +FN:40,(anonymous_5) +FN:40,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:48,0 +LF:23 +LH:0 +BRDA:44,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalLogos/MapAdditionalLogos.component.tsx +FN:14,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +LF:11 +LH:0 +BRDA:25,0,0,0 +BRDA:37,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapAdditionalLogos/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapBackgroundSwitch/MapBackgroundSwitch.component.tsx +FN:9,(anonymous_1) +FN:13,(anonymous_2) +FN:19,(anonymous_3) +FN:26,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:20,0 +DA:26,0 +LF:13 +LH:0 +BRDA:22,0,0,0 +BRDA:22,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapLoader/MapLoader.component.tsx +FN:7,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +LF:8 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRDA:13,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/MapViewer.component.tsx +FN:11,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +LF:10 +LH:0 +BRDA:22,0,0,0 +BRDA:22,0,1,0 +BRDA:22,1,0,0 +BRDA:22,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/MapViewer.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:5,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:29,0 +DA:34,0 +DA:39,0 +DA:46,0 +DA:55,0 +DA:63,0 +DA:195,0 +DA:205,0 +LF:17 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/useOlMap.ts +FN:21,(anonymous_5) +FN:30,(anonymous_6) +FN:49,(anonymous_7) +FN:58,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:36,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:55,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:65,0 +LF:27 +LH:0 +BRDA:21,0,0,0 +BRDA:32,1,0,0 +BRDA:32,2,0,0 +BRDA:32,2,1,0 +BRDA:45,3,0,0 +BRDA:45,3,1,0 +BRDA:50,4,0,0 +BRDA:59,5,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/getCanvasIcon.ts +FN:18,(anonymous_6) +FN:27,(anonymous_7) +FN:40,(anonymous_8) +FN:45,(anonymous_9) +FN:63,(anonymous_10) +FNF:5 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:18,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:32,0 +DA:34,0 +DA:36,0 +DA:40,0 +DA:45,0 +DA:49,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:63,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:72,0 +DA:74,0 +DA:75,0 +DA:78,0 +LF:39 +LH:0 +BRDA:28,0,0,0 +BRDA:28,0,1,0 +BRDA:28,0,2,0 +BRDA:28,0,3,0 +BRDA:57,1,0,0 +BRDA:57,1,1,0 +BRDA:68,2,0,0 +BRDA:74,3,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/getCanvasMultiIcon.ts +FN:5,(anonymous_1) +FN:13,(anonymous_2) +FN:24,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:24,0 +DA:26,0 +LF:12 +LH:0 +BRDA:20,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/getMapTileUrl.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:10,0 +DA:11,0 +DA:14,0 +LF:5 +LH:0 +BRDA:10,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/useOlMapLayers.ts +FN:16,(anonymous_1) +FN:24,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +LF:16 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/useOlMapView.ts +FN:16,(anonymous_1) +FN:21,(anonymous_2) +FN:40,(anonymous_3) +FN:55,(anonymous_4) +FN:71,(anonymous_5) +FN:73,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:27,0 +DA:32,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:46,0 +DA:48,0 +DA:54,0 +DA:55,0 +DA:71,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:81,0 +LF:28 +LH:0 +BRDA:62,0,0,0 +BRDA:62,0,1,0 +BRDA:62,1,0,0 +BRDA:62,1,1,0 +BRDA:74,2,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +FN:47,(anonymous_2) +FN:74,(anonymous_3) +FN:84,(anonymous_4) +FN:92,(anonymous_5) +FN:103,(anonymous_6) +FN:115,(anonymous_7) +FN:127,(anonymous_8) +FN:134,(anonymous_9) +FN:146,(anonymous_10) +FN:155,(anonymous_11) +FN:156,(anonymous_12) +FN:182,(anonymous_13) +FN:191,(anonymous_14) +FN:205,(anonymous_15) +FN:209,(anonymous_16) +FN:210,(anonymous_17) +FN:218,(anonymous_18) +FN:229,(anonymous_19) +FN:255,(anonymous_20) +FN:256,(anonymous_21) +FN:261,(anonymous_22) +FN:263,(anonymous_23) +FN:266,(anonymous_24) +FN:273,(anonymous_25) +FN:279,(anonymous_26) +FN:280,(anonymous_27) +FN:289,(anonymous_28) +FN:293,(anonymous_29) +FN:294,(anonymous_30) +FN:298,(anonymous_31) +FN:304,(anonymous_32) +FN:305,(anonymous_33) +FN:316,(anonymous_34) +FN:323,(anonymous_35) +FN:326,(anonymous_36) +FN:339,(anonymous_37) +FN:357,(anonymous_38) +FN:358,(anonymous_39) +FN:362,(anonymous_40) +FN:367,(anonymous_41) +FN:385,(anonymous_42) +FN:403,(anonymous_43) +FNF:42 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:16,0 +DA:17,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:35,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:66,0 +DA:72,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:82,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:89,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:107,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:119,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:131,0 +DA:134,0 +DA:135,0 +DA:136,0 +DA:138,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:150,0 +DA:151,0 +DA:155,0 +DA:156,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:177,0 +DA:179,0 +DA:180,0 +DA:182,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:195,0 +DA:203,0 +DA:205,0 +DA:206,0 +DA:209,0 +DA:210,0 +DA:211,0 +DA:212,0 +DA:213,0 +DA:218,0 +DA:219,0 +DA:220,0 +DA:221,0 +DA:223,0 +DA:224,0 +DA:229,0 +DA:230,0 +DA:231,0 +DA:233,0 +DA:234,0 +DA:239,0 +DA:240,0 +DA:241,0 +DA:243,0 +DA:244,0 +DA:245,0 +DA:247,0 +DA:248,0 +DA:249,0 +DA:251,0 +DA:255,0 +DA:256,0 +DA:257,0 +DA:258,0 +DA:260,0 +DA:261,0 +DA:263,0 +DA:264,0 +DA:266,0 +DA:267,0 +DA:268,0 +DA:269,0 +DA:273,0 +DA:274,0 +DA:275,0 +DA:276,0 +DA:279,0 +DA:280,0 +DA:281,0 +DA:282,0 +DA:283,0 +DA:289,0 +DA:290,0 +DA:292,0 +DA:293,0 +DA:294,0 +DA:295,0 +DA:296,0 +DA:297,0 +DA:298,0 +DA:299,0 +DA:303,0 +DA:304,0 +DA:305,0 +DA:306,0 +DA:307,0 +DA:308,0 +DA:309,0 +DA:313,0 +DA:316,0 +DA:317,0 +DA:323,0 +DA:325,0 +DA:326,0 +DA:327,0 +DA:328,0 +DA:339,0 +DA:340,0 +DA:341,0 +DA:343,0 +DA:344,0 +DA:345,0 +DA:347,0 +DA:357,0 +DA:358,0 +DA:359,0 +DA:361,0 +DA:362,0 +DA:363,0 +DA:367,0 +DA:368,0 +DA:369,0 +DA:371,0 +DA:372,0 +DA:373,0 +DA:375,0 +DA:385,0 +DA:386,0 +DA:387,0 +DA:389,0 +DA:390,0 +DA:391,0 +DA:393,0 +DA:403,0 +DA:404,0 +DA:405,0 +DA:407,0 +DA:408,0 +DA:409,0 +DA:411,0 +LF:204 +LH:0 +BRDA:85,0,0,0 +BRDA:85,1,0,0 +BRDA:85,1,1,0 +BRDA:104,2,0,0 +BRDA:104,3,0,0 +BRDA:104,3,1,0 +BRDA:116,4,0,0 +BRDA:116,5,0,0 +BRDA:116,5,1,0 +BRDA:128,6,0,0 +BRDA:128,7,0,0 +BRDA:128,7,1,0 +BRDA:135,8,0,0 +BRDA:135,9,0,0 +BRDA:135,9,1,0 +BRDA:147,10,0,0 +BRDA:150,11,0,0 +BRDA:158,12,0,0 +BRDA:175,13,0,0 +BRDA:183,14,0,0 +BRDA:192,15,0,0 +BRDA:192,16,0,0 +BRDA:192,16,1,0 +BRDA:212,17,0,0 +BRDA:212,18,0,0 +BRDA:212,18,1,0 +BRDA:220,19,0,0 +BRDA:223,20,0,0 +BRDA:230,21,0,0 +BRDA:234,22,0,0 +BRDA:235,23,0,0 +BRDA:235,23,1,0 +BRDA:235,23,2,0 +BRDA:240,24,0,0 +BRDA:244,25,0,0 +BRDA:248,26,0,0 +BRDA:260,27,0,0 +BRDA:268,28,0,0 +BRDA:292,29,0,0 +BRDA:292,29,1,0 +BRDA:296,30,0,0 +BRDA:303,31,0,0 +BRDA:307,32,0,0 +BRDA:317,33,0,0 +BRDA:318,34,0,0 +BRDA:318,34,1,0 +BRDA:318,34,2,0 +BRDA:318,34,3,0 +BRDA:340,35,0,0 +BRDA:340,36,0,0 +BRDA:340,36,1,0 +BRDA:344,37,0,0 +BRDA:344,38,0,0 +BRDA:344,38,1,0 +BRDA:368,39,0,0 +BRDA:368,40,0,0 +BRDA:368,40,1,0 +BRDA:372,41,0,0 +BRDA:372,42,0,0 +BRDA:372,42,1,0 +BRDA:386,43,0,0 +BRDA:386,44,0,0 +BRDA:386,44,1,0 +BRDA:390,45,0,0 +BRDA:390,46,0,0 +BRDA:390,46,1,0 +BRDA:404,47,0,0 +BRDA:404,48,0,0 +BRDA:404,48,1,0 +BRDA:408,49,0,0 +BRDA:408,50,0,0 +BRDA:408,50,1,0 +BRF:72 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/commentsLayer/getCommentsFeatures.ts +FN:9,(anonymous_3) +FN:46,(anonymous_4) +FN:54,(anonymous_5) +FNF:3 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:36,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:54,0 +DA:55,0 +LF:13 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts +FN:16,(anonymous_2) +FN:22,(anonymous_3) +FN:31,(anonymous_4) +FN:37,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:31,0 +DA:32,0 +DA:37,0 +DA:38,0 +DA:42,0 +DA:43,0 +LF:20 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts +FN:13,(anonymous_2) +FN:17,(anonymous_3) +FN:29,(anonymous_4) +FN:33,(anonymous_5) +FN:39,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:29,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:39,0 +DA:40,0 +DA:49,0 +DA:50,0 +LF:24 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createFeatureFromExtent.ts +FN:7,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:11,0 +DA:13,0 +LF:7 +LH:0 +BRDA:16,0,0,0 +BRDA:16,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayGeometryFeature.ts +FN:7,(anonymous_1) +FN:13,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:13,0 +DA:18,0 +DA:19,0 +DA:20,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayLineFeature.ts +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:5,0 +DA:6,0 +DA:13,0 +DA:17,0 +DA:19,0 +DA:21,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlaySubmapLinkRectangleFeature.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:5,0 +DA:6,0 +DA:8,0 +DA:13,0 +DA:14,0 +DA:15,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlayLineFeatureStyle.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlaySubmapLinkRectangleFeatureStyle.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:4,0 +DA:5,0 +LF:3 +LH:0 +BRDA:6,0,0,0 +BRDA:6,0,1,0 +BRDA:7,1,0,0 +BRDA:7,1,1,0 +BRDA:8,2,0,0 +BRDA:8,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getPolygonLatitudeCoordinates.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:16,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getSubmapLinkRectangle.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:4,0 +DA:11,0 +DA:12,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:25,0 +LF:8 +LH:0 +BRDA:11,0,0,0 +BRDA:19,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/groupSubmapLinksRectanglesById.ts +FN:4,(anonymous_1) +FN:10,(anonymous_2) +FN:18,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:4,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:29,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:40,0 +DA:44,0 +LF:19 +LH:0 +BRDA:14,0,0,0 +BRDA:19,1,0,0 +BRDA:19,1,1,0 +BRDA:21,2,0,0 +BRDA:21,2,1,0 +BRDA:23,3,0,0 +BRDA:23,3,1,0 +BRDA:25,4,0,0 +BRDA:25,4,1,0 +BRDA:25,4,2,0 +BRDA:29,5,0,0 +BRDA:29,6,0,0 +BRDA:29,6,1,0 +BRDA:34,7,0,0 +BRDA:34,7,1,0 +BRF:15 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/parseSurfaceMarkersToBioEntityRender.ts +FN:6,(anonymous_1) +FN:9,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:4,0 +DA:6,0 +DA:9,0 +LF:4 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useBioEntitiesWithSubmapLinks.ts +FN:18,(anonymous_1) +FN:22,(anonymous_2) +FN:22,(anonymous_3) +FN:26,(anonymous_4) +FN:26,(anonymous_5) +FN:31,(anonymous_6) +FN:32,(anonymous_7) +FN:47,(anonymous_8) +FN:59,(anonymous_9) +FN:63,(anonymous_10) +FN:83,(anonymous_11) +FN:87,(anonymous_12) +FNF:12 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:46,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:67,0 +DA:77,0 +DA:82,0 +DA:83,0 +DA:86,0 +DA:87,0 +DA:91,0 +LF:38 +LH:0 +BRDA:36,0,0,0 +BRDA:40,1,0,0 +BRDA:40,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.ts +FN:29,(anonymous_1) +FN:38,(anonymous_2) +FN:50,(anonymous_3) +FN:56,(anonymous_4) +FN:67,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:37,0 +DA:39,0 +DA:49,0 +DA:51,0 +DA:55,0 +DA:56,0 +DA:66,0 +DA:68,0 +DA:69,0 +DA:71,0 +DA:72,0 +DA:74,0 +DA:79,0 +LF:28 +LH:0 +BRDA:29,0,0,0 +BRDA:30,1,0,0 +BRDA:30,1,1,0 +BRDA:31,2,0,0 +BRDA:31,2,1,0 +BRDA:32,3,0,0 +BRDA:32,3,1,0 +BRDA:33,4,0,0 +BRDA:33,4,1,0 +BRDA:35,5,0,0 +BRDA:35,5,1,0 +BRDA:35,5,2,0 +BRDA:68,6,0,0 +BRDA:69,7,0,0 +BRDA:69,7,1,0 +BRDA:71,8,0,0 +BRF:16 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useOlMapOverlaysLayer.ts +FN:23,(anonymous_2) +FN:26,(anonymous_3) +FN:32,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:32,0 +DA:33,0 +DA:36,0 +DA:37,0 +LF:13 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.ts +FN:19,(anonymous_1) +FN:29,(anonymous_2) +FN:30,(anonymous_3) +FN:46,(anonymous_4) +FN:47,(anonymous_5) +FN:58,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:45,0 +DA:47,0 +DA:53,0 +DA:58,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:65,0 +DA:66,0 +DA:76,0 +DA:77,0 +DA:87,0 +DA:101,0 +LF:37 +LH:0 +BRDA:38,0,0,0 +BRDA:38,0,1,0 +BRDA:58,1,0,0 +BRDA:58,1,1,0 +BRDA:63,2,0,0 +BRDA:63,2,1,0 +BRDA:65,3,0,0 +BRDA:71,4,0,0 +BRDA:71,4,1,0 +BRDA:76,5,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getBioEntitiesFeatures.ts +FN:7,(anonymous_1) +FN:19,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:5,0 +DA:7,0 +DA:19,0 +DA:20,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMarkerSingleFeature.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:16,0 +DA:17,0 +DA:22,0 +DA:23,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMarkersFeatures.ts +FN:6,(anonymous_1) +FN:14,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:4,0 +DA:6,0 +DA:14,0 +DA:15,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getModelElementSingleFeature.ts +FN:12,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:26,0 +DA:30,0 +DA:34,0 +DA:35,0 +DA:41,0 +DA:42,0 +LF:12 +LH:0 +BRDA:26,0,0,0 +BRDA:26,0,1,0 +BRDA:30,1,0,0 +BRDA:30,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinCanvasArgs.ts +FN:17,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:17,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:27,0 +DA:29,0 +DA:33,0 +LF:12 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:27,1,0,0 +BRDA:27,1,1,0 +BRDA:29,2,0,0 +BRDA:29,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinSingleFeature.ts +FN:10,(anonymous_1) +FN:23,(anonymous_2) +FN:33,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:27,0 +DA:33,0 +DA:34,0 +DA:40,0 +DA:42,0 +DA:43,0 +LF:14 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinStyle.ts +FN:12,(anonymous_2) +FN:13,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:21,0 +DA:23,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinsBioEntitiesIds.ts +FN:3,(anonymous_1) +FN:5,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:3,0 +DA:5,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinsFeatures.ts +FN:7,(anonymous_1) +FN:19,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:5,0 +DA:7,0 +DA:19,0 +DA:20,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinsModelElements.ts +FN:13,(anonymous_1) +FN:20,(anonymous_2) +FN:32,(anonymous_3) +FN:33,(anonymous_4) +FN:37,(anonymous_5) +FN:37,(anonymous_6) +FN:38,(anonymous_7) +FN:41,(anonymous_8) +FN:43,(anonymous_9) +FN:44,(anonymous_10) +FN:55,(anonymous_11) +FNF:11 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:1,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:20,0 +DA:24,0 +DA:26,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:41,0 +DA:42,0 +DA:44,0 +DA:48,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:57,0 +LF:24 +LH:0 +BRDA:28,0,0,0 +BRDA:28,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getPinFeature.ts +FN:11,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:22,0 +DA:24,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:37,0 +DA:43,0 +LF:15 +LH:0 +BRDA:25,0,0,0 +BRDA:25,0,1,0 +BRDA:26,1,0,0 +BRDA:26,1,1,0 +BRDA:31,2,0,0 +BRDA:31,2,1,0 +BRDA:34,3,0,0 +BRDA:34,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/getPinStyle.ts +FN:7,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:16,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts +FN:23,(anonymous_2) +FN:30,(anonymous_3) +FN:38,(anonymous_4) +FN:43,(anonymous_5) +FN:46,(anonymous_6) +FN:71,(anonymous_7) +FN:73,(anonymous_8) +FN:78,(anonymous_9) +FNF:8 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:42,0 +DA:44,0 +DA:46,0 +DA:71,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:79,0 +DA:83,0 +DA:84,0 +LF:36 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/processLayer/processModelElements.ts +FN:18,processModelElements +FN:35,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,processModelElements +FNDA:0,(anonymous_3) +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:49,0 +DA:50,0 +DA:53,0 +DA:54,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:93,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:141,0 +LF:27 +LH:0 +BRDA:36,0,0,0 +BRDA:53,1,0,0 +BRDA:86,2,0,0 +BRDA:86,2,1,0 +BRDA:88,3,0,0 +BRDA:88,3,1,0 +BRDA:90,4,0,0 +BRDA:96,5,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts +FN:53,(anonymous_2) +FN:70,(anonymous_3) +FN:86,(anonymous_4) +FN:87,(anonymous_5) +FN:89,(anonymous_6) +FN:90,(anonymous_7) +FN:110,(anonymous_8) +FN:114,(anonymous_9) +FN:118,(anonymous_10) +FN:124,(anonymous_11) +FN:136,(anonymous_12) +FN:138,(anonymous_13) +FN:140,(anonymous_14) +FN:144,(anonymous_15) +FN:145,(anonymous_16) +FN:148,(anonymous_17) +FN:152,(anonymous_18) +FN:168,(anonymous_19) +FN:172,(anonymous_20) +FN:188,(anonymous_21) +FN:192,(anonymous_22) +FN:227,(anonymous_23) +FN:259,(anonymous_24) +FN:261,(anonymous_25) +FN:270,(anonymous_26) +FN:275,(anonymous_27) +FNF:26 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:12,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:24,0 +DA:25,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:93,0 +DA:94,0 +DA:98,0 +DA:108,0 +DA:110,0 +DA:112,0 +DA:114,0 +DA:115,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:128,0 +DA:129,0 +DA:131,0 +DA:132,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:140,0 +DA:141,0 +DA:144,0 +DA:145,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:152,0 +DA:153,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:172,0 +DA:173,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:192,0 +DA:193,0 +DA:194,0 +DA:195,0 +DA:197,0 +DA:212,0 +DA:227,0 +DA:228,0 +DA:229,0 +DA:231,0 +DA:259,0 +DA:260,0 +DA:261,0 +DA:262,0 +DA:270,0 +DA:271,0 +DA:272,0 +DA:275,0 +DA:276,0 +DA:282,0 +DA:283,0 +LF:118 +LH:0 +BRDA:88,0,0,0 +BRDA:88,1,0,0 +BRDA:88,1,1,0 +BRDA:88,1,2,0 +BRDA:119,2,0,0 +BRDA:125,3,0,0 +BRDA:128,4,0,0 +BRDA:131,5,0,0 +BRDA:149,6,0,0 +BRDA:169,7,0,0 +BRDA:189,8,0,0 +BRDA:189,9,0,0 +BRDA:189,9,1,0 +BRDA:193,10,0,0 +BRDA:193,10,1,0 +BRDA:194,11,0,0 +BRDA:228,12,0,0 +BRDA:228,13,0,0 +BRDA:228,13,1,0 +BRDA:228,13,2,0 +BRF:20 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/reactionsLayer/getLineFeature.ts +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:4,0 +DA:6,0 +DA:10,0 +DA:12,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/reactionsLayer/getReactionLineSegments.ts +FN:3,getReactionLineSegments +FN:6,(anonymous_2) +FN:9,(anonymous_3) +FN:12,(anonymous_4) +FN:15,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,getReactionLineSegments +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:18,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts +FN:22,(anonymous_2) +FN:24,(anonymous_3) +FN:26,(anonymous_4) +FN:34,(anonymous_5) +FN:41,(anonymous_6) +FN:41,(anonymous_7) +FN:46,(anonymous_8) +FN:47,(anonymous_9) +FN:56,(anonymous_10) +FN:58,(anonymous_11) +FN:64,(anonymous_12) +FNF:11 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:2,0 +DA:3,0 +DA:4,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:45,0 +DA:47,0 +DA:48,0 +DA:56,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:73,0 +DA:74,0 +LF:38 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/onMapPositionChange.ts +FN:10,(anonymous_1) +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/onPointerMove.ts +FN:5,(anonymous_1) +FN:10,(anonymous_2) +FN:16,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:27,0 +LF:16 +LH:0 +BRDA:6,0,0,0 +BRDA:6,0,1,0 +BRDA:6,0,2,0 +BRDA:11,1,0,0 +BRDA:18,2,0,0 +BRDA:26,3,0,0 +BRDA:27,4,0,0 +BRDA:27,4,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/useOlMapListeners.ts +FN:30,(anonymous_1) +FN:38,(anonymous_2) +FN:84,(anonymous_3) +FN:86,(anonymous_4) +FN:89,(anonymous_5) +FN:94,(anonymous_6) +FN:97,(anonymous_7) +FN:100,(anonymous_8) +FN:105,(anonymous_9) +FN:110,(anonymous_10) +FN:113,(anonymous_11) +FN:118,(anonymous_12) +FN:133,(anonymous_13) +FNF:13 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:48,0 +DA:50,0 +DA:56,0 +DA:70,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:94,0 +DA:97,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:105,0 +DA:106,0 +DA:110,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:118,0 +DA:119,0 +DA:121,0 +DA:122,0 +DA:124,0 +DA:130,0 +DA:133,0 +LF:61 +LH:0 +BRDA:63,0,0,0 +BRDA:63,0,1,0 +BRDA:75,1,0,0 +BRDA:75,1,1,0 +BRDA:90,2,0,0 +BRDA:101,3,0,0 +BRDA:101,4,0,0 +BRDA:101,4,1,0 +BRDA:101,4,2,0 +BRDA:114,5,0,0 +BRDA:114,6,0,0 +BRDA:114,6,1,0 +BRDA:114,6,2,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mapSingleClick/handleOpenImmediateLink.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +LF:8 +LH:0 +BRDA:6,0,0,0 +BRDA:8,1,0,0 +BRDA:8,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/clickHandleReaction.ts +FN:15,(anonymous_2) +FN:16,(anonymous_3) +FN:19,(anonymous_4) +FN:24,(anonymous_5) +FN:25,(anonymous_6) +FN:40,(anonymous_7) +FN:43,(anonymous_8) +FNF:7 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:34,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:51,0 +DA:52,0 +LF:34 +LH:0 +BRDA:15,0,0,0 +BRDA:20,1,0,0 +BRDA:28,2,0,0 +BRDA:51,3,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/getFeatureAtCoordinate.ts +FN:8,isFeatureFilledCompartment +FN:12,isFeatureNotCompartment +FN:19,getFeatureAtCoordinate +FN:36,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,isFeatureFilledCompartment +FNDA:0,isFeatureNotCompartment +FNDA:0,getFeatureAtCoordinate +FNDA:0,(anonymous_4) +DA:5,0 +DA:6,0 +DA:9,0 +DA:13,0 +DA:19,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:37,0 +DA:38,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:51,0 +LF:15 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRDA:14,1,0,0 +BRDA:14,1,1,0 +BRDA:22,2,0,0 +BRDA:30,3,0,0 +BRDA:38,4,0,0 +BRDA:39,5,0,0 +BRDA:39,5,1,0 +BRDA:39,5,2,0 +BRDA:39,5,3,0 +BRDA:39,5,4,0 +BRDA:39,5,5,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/getModelElementsIdsFromReaction.ts +FN:3,getModelElementsIdsFromReaction +FN:5,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,getModelElementsIdsFromReaction +FNDA:0,(anonymous_2) +DA:3,0 +DA:4,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/handleDataReset.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +LF:13 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/handleFeaturesClick.ts +FN:17,(anonymous_1) +FN:22,(anonymous_2) +FN:23,(anonymous_3) +FN:25,(anonymous_4) +FN:31,(anonymous_5) +FN:49,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:7,0 +DA:9,0 +DA:17,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:44,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:54,0 +LF:29 +LH:0 +BRDA:28,0,0,0 +BRDA:28,0,1,0 +BRDA:30,1,0,0 +BRDA:32,2,0,0 +BRDA:32,2,1,0 +BRDA:34,3,0,0 +BRDA:34,3,1,0 +BRDA:36,4,0,0 +BRDA:36,4,1,0 +BRDA:38,5,0,0 +BRDA:38,5,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/leftClickHandleAlias.ts +FN:14,(anonymous_1) +FN:15,(anonymous_2) +FN:18,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:42,0 +DA:45,0 +DA:46,0 +LF:25 +LH:0 +BRDA:14,0,0,0 +BRDA:21,1,0,0 +BRDA:45,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/onMapLeftClick.ts +FN:21,(anonymous_2) +FN:30,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:30,0 +DA:34,0 +DA:35,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:47,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +LF:36 +LH:0 +BRDA:40,0,0,0 +BRDA:42,1,0,0 +BRDA:49,2,0,0 +BRDA:50,3,0,0 +BRDA:61,4,0,0 +BRDA:61,4,1,0 +BRDA:63,5,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick/onMapRightClick.ts +FN:20,(anonymous_2) +FN:21,(anonymous_3) +FN:30,(anonymous_4) +FN:35,(anonymous_5) +FN:56,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:49,0 +DA:50,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:62,0 +LF:37 +LH:0 +BRDA:31,0,0,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:32,2,0,0 +BRDA:34,3,0,0 +BRDA:36,4,0,0 +BRDA:36,4,1,0 +BRDA:36,4,2,0 +BRDA:36,4,3,0 +BRDA:49,5,0,0 +BRDA:55,6,0,0 +BRDA:55,6,1,0 +BRDA:57,7,0,0 +BRDA:61,8,0,0 +BRF:14 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick/rightClickHandleAlias.ts +FN:9,(anonymous_1) +FN:10,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:4,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/listeners/pinIconClick/useHandlePinIconClick.ts +FN:13,(anonymous_2) +FN:19,(anonymous_3) +FN:33,(anonymous_4) +FN:36,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:41,0 +LF:24 +LH:0 +BRDA:24,0,0,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRDA:24,1,2,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/findLargestExtent.ts +FN:3,findLargestExtent +FN:7,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,findLargestExtent +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:15,0 +LF:10 +LH:0 +BRDA:9,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getBezierCurve.ts +FN:4,getBezierCurve +FNF:1 +FNH:0 +FNDA:0,getBezierCurve +DA:4,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:23,0 +DA:29,0 +DA:34,0 +DA:36,0 +DA:38,0 +LF:9 +LH:0 +BRDA:9,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getBoundingBoxFromExtent.ts +FN:8,getBoundingBoxFromExtent +FNF:1 +FNH:0 +FNDA:0,getBoundingBoxFromExtent +DA:3,0 +DA:4,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:17,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getCenter.ts +FN:4,getCenter +FN:10,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,getCenter +FNDA:0,(anonymous_2) +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:25,0 +DA:26,0 +DA:28,0 +LF:17 +LH:0 +BRDA:11,0,0,0 +BRDA:14,1,0,0 +BRDA:17,2,0,0 +BRDA:20,3,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getCoordsX.ts +FN:2,getCoordsX +FNF:1 +FNH:0 +FNDA:0,getCoordsX +DA:2,0 +DA:10,0 +LF:2 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getCoordsY.ts +FN:2,getCoordsY +FNF:1 +FNH:0 +FNDA:0,getCoordsY +DA:2,0 +DA:10,0 +LF:2 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getCurveCoords.ts +FN:7,getCurveCoords +FNF:1 +FNH:0 +FNDA:0,getCurveCoords +DA:3,0 +DA:4,0 +DA:7,0 +DA:22,0 +DA:26,0 +DA:30,0 +DA:34,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getDividedExtents.ts +FN:4,getDividedExtents +FN:14,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,getDividedExtents +FNDA:0,(anonymous_2) +DA:4,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:42,0 +LF:26 +LH:0 +BRDA:17,0,0,0 +BRDA:17,0,1,0 +BRDA:17,0,2,0 +BRDA:17,0,3,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRDA:19,2,0,0 +BRDA:19,3,0,0 +BRDA:19,3,1,0 +BRDA:19,3,2,0 +BRDA:19,3,3,0 +BRDA:22,4,0,0 +BRDA:26,5,0,0 +BRDA:30,6,0,0 +BRDA:34,7,0,0 +BRF:15 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords.ts +FN:8,getEllipseCoords +FNF:1 +FNH:0 +FNDA:0,getEllipseCoords +DA:2,0 +DA:3,0 +DA:8,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:40,0 +DA:49,0 +DA:50,0 +DA:54,0 +DA:62,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:71,0 +DA:74,0 +DA:76,0 +LF:23 +LH:0 +BRDA:16,0,0,0 +BRDA:31,1,0,0 +BRDA:49,2,0,0 +BRDA:53,3,0,0 +BRDA:53,3,1,0 +BRDA:57,4,0,0 +BRDA:57,4,1,0 +BRDA:68,5,0,0 +BRDA:68,5,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getLineSegments.ts +FN:6,getLineSegments +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,getLineSegments +FNDA:0,(anonymous_2) +DA:6,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:18,0 +LF:5 +LH:0 +BRDA:12,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getPolygonCoords.ts +FN:10,getPolygonCoords +FN:26,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,getPolygonCoords +FNDA:0,(anonymous_3) +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:36,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:54,0 +LF:18 +LH:0 +BRDA:27,0,0,0 +BRDA:51,1,0,0 +BRDA:51,2,0,0 +BRDA:51,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/coords/getRotation.ts +FN:4,getRotation +FNF:1 +FNH:0 +FNDA:0,getRotation +DA:4,0 +DA:5,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/BaseMultiPolygon.ts +FN:134,(anonymous_2) +FN:198,(anonymous_3) +FN:226,(anonymous_4) +FN:230,(anonymous_5) +FN:266,(anonymous_6) +FN:279,(anonymous_7) +FN:283,(anonymous_8) +FN:297,(anonymous_9) +FN:310,(anonymous_10) +FN:336,(anonymous_11) +FN:374,(anonymous_12) +FNF:11 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:2,0 +DA:4,0 +DA:5,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:58,0 +DA:103,0 +DA:105,0 +DA:107,0 +DA:109,0 +DA:115,0 +DA:127,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:177,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:181,0 +DA:182,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:187,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:192,0 +DA:193,0 +DA:199,0 +DA:200,0 +DA:210,0 +DA:211,0 +DA:212,0 +DA:219,0 +DA:220,0 +DA:221,0 +DA:222,0 +DA:227,0 +DA:231,0 +DA:232,0 +DA:235,0 +DA:236,0 +DA:237,0 +DA:239,0 +DA:240,0 +DA:243,0 +DA:244,0 +DA:246,0 +DA:253,0 +DA:254,0 +DA:262,0 +DA:263,0 +DA:267,0 +DA:273,0 +DA:275,0 +DA:281,0 +DA:283,0 +DA:284,0 +DA:285,0 +DA:286,0 +DA:289,0 +DA:290,0 +DA:292,0 +DA:294,0 +DA:298,0 +DA:303,0 +DA:308,0 +DA:310,0 +DA:311,0 +DA:312,0 +DA:313,0 +DA:314,0 +DA:317,0 +DA:321,0 +DA:324,0 +DA:325,0 +DA:326,0 +DA:328,0 +DA:329,0 +DA:331,0 +DA:333,0 +DA:341,0 +DA:342,0 +DA:351,0 +DA:352,0 +DA:353,0 +DA:355,0 +DA:356,0 +DA:359,0 +DA:360,0 +DA:371,0 +DA:375,0 +DA:376,0 +DA:378,0 +DA:379,0 +DA:381,0 +DA:382,0 +DA:383,0 +DA:384,0 +DA:386,0 +DA:387,0 +DA:391,0 +DA:392,0 +DA:394,0 +LF:123 +LH:0 +BRDA:193,0,0,0 +BRDA:193,0,1,0 +BRDA:199,1,0,0 +BRDA:231,2,0,0 +BRDA:239,3,0,0 +BRDA:239,4,0,0 +BRDA:239,4,1,0 +BRDA:267,5,0,0 +BRDA:267,5,1,0 +BRDA:268,6,0,0 +BRDA:268,6,1,0 +BRDA:268,6,2,0 +BRDA:268,6,3,0 +BRDA:285,7,0,0 +BRDA:289,8,0,0 +BRDA:298,9,0,0 +BRDA:299,10,0,0 +BRDA:299,10,1,0 +BRDA:299,10,2,0 +BRDA:312,11,0,0 +BRDA:317,12,0,0 +BRDA:318,13,0,0 +BRDA:318,13,1,0 +BRDA:325,14,0,0 +BRDA:325,15,0,0 +BRDA:325,15,1,0 +BRDA:328,16,0,0 +BRDA:355,17,0,0 +BRDA:359,18,0,0 +BRDA:359,19,0,0 +BRDA:359,19,1,0 +BRDA:359,19,2,0 +BRDA:375,20,0,0 +BRDA:381,21,0,0 +BRDA:381,22,0,0 +BRDA:381,22,1,0 +BRDA:383,23,0,0 +BRDA:386,24,0,0 +BRF:38 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/Compartment.ts +FN:66,(anonymous_2) +FN:140,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:5,0 +DA:6,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:98,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:133,0 +DA:134,0 +DA:135,0 +DA:141,0 +DA:142,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:158,0 +DA:160,0 +DA:161,0 +DA:163,0 +DA:164,0 +DA:166,0 +DA:168,0 +DA:169,0 +DA:176,0 +DA:178,0 +DA:179,0 +DA:181,0 +DA:182,0 +DA:184,0 +DA:186,0 +DA:187,0 +DA:197,0 +LF:41 +LH:0 +BRDA:152,0,0,0 +BRDA:152,0,1,0 +BRDA:163,1,0,0 +BRDA:163,1,1,0 +BRDA:181,2,0,0 +BRDA:181,2,1,0 +BRDA:191,3,0,0 +BRDA:191,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/CompartmentCircle.ts +FN:51,(anonymous_2) +FN:117,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:10,0 +DA:14,0 +DA:15,0 +DA:50,0 +DA:83,0 +DA:118,0 +DA:128,0 +LF:7 +LH:0 +BRDA:62,0,0,0 +BRDA:63,1,0,0 +BRDA:64,2,0,0 +BRDA:65,3,0,0 +BRDA:66,4,0,0 +BRDA:67,5,0,0 +BRDA:68,6,0,0 +BRDA:69,7,0,0 +BRDA:74,8,0,0 +BRDA:75,9,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/CompartmentPathway.ts +FN:58,(anonymous_2) +FN:125,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:10,0 +DA:11,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:53,0 +DA:88,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:126,0 +DA:135,0 +DA:136,0 +DA:141,0 +DA:148,0 +DA:157,0 +LF:21 +LH:0 +BRDA:69,0,0,0 +BRDA:70,1,0,0 +BRDA:71,2,0,0 +BRDA:72,3,0,0 +BRDA:73,4,0,0 +BRDA:74,5,0,0 +BRDA:79,6,0,0 +BRDA:80,7,0,0 +BRDA:152,8,0,0 +BRDA:152,8,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/CompartmentSquare.ts +FN:50,(anonymous_2) +FN:116,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:9,0 +DA:13,0 +DA:14,0 +DA:49,0 +DA:82,0 +DA:117,0 +DA:125,0 +LF:7 +LH:0 +BRDA:61,0,0,0 +BRDA:62,1,0,0 +BRDA:63,2,0,0 +BRDA:64,3,0,0 +BRDA:65,4,0,0 +BRDA:66,5,0,0 +BRDA:67,6,0,0 +BRDA:68,7,0,0 +BRDA:73,8,0,0 +BRDA:74,9,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/MapElement.ts +FN:99,(anonymous_2) +FN:185,(anonymous_3) +FN:200,(anonymous_4) +FN:213,(anonymous_5) +FN:214,(anonymous_6) +FN:268,(anonymous_7) +FN:269,(anonymous_8) +FN:296,(anonymous_9) +FN:297,(anonymous_10) +FN:334,(anonymous_11) +FN:335,(anonymous_12) +FN:344,(anonymous_13) +FNF:12 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:2,0 +DA:4,0 +DA:14,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:74,0 +DA:91,0 +DA:93,0 +DA:95,0 +DA:139,0 +DA:169,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:177,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:181,0 +DA:182,0 +DA:186,0 +DA:187,0 +DA:190,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:194,0 +DA:196,0 +DA:198,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:205,0 +DA:206,0 +DA:207,0 +DA:209,0 +DA:214,0 +DA:215,0 +DA:224,0 +DA:225,0 +DA:226,0 +DA:232,0 +DA:233,0 +DA:234,0 +DA:237,0 +DA:240,0 +DA:241,0 +DA:251,0 +DA:254,0 +DA:255,0 +DA:262,0 +DA:263,0 +DA:264,0 +DA:269,0 +DA:270,0 +DA:278,0 +DA:279,0 +DA:285,0 +DA:291,0 +DA:292,0 +DA:297,0 +DA:298,0 +DA:306,0 +DA:307,0 +DA:315,0 +DA:320,0 +DA:321,0 +DA:322,0 +DA:327,0 +DA:329,0 +DA:330,0 +DA:335,0 +DA:336,0 +DA:337,0 +DA:339,0 +DA:344,0 +DA:346,0 +DA:347,0 +DA:355,0 +DA:356,0 +DA:362,0 +DA:368,0 +DA:369,0 +LF:96 +LH:0 +BRDA:111,0,0,0 +BRDA:112,1,0,0 +BRDA:113,2,0,0 +BRDA:114,3,0,0 +BRDA:116,4,0,0 +BRDA:117,5,0,0 +BRDA:122,6,0,0 +BRDA:123,7,0,0 +BRDA:124,8,0,0 +BRDA:129,9,0,0 +BRDA:130,10,0,0 +BRDA:131,11,0,0 +BRDA:132,12,0,0 +BRDA:133,13,0,0 +BRDA:186,14,0,0 +BRDA:187,15,0,0 +BRDA:187,15,1,0 +BRDA:193,16,0,0 +BRDA:201,17,0,0 +BRDA:206,18,0,0 +BRDA:222,19,0,0 +BRDA:222,19,1,0 +BRDA:237,20,0,0 +BRDA:237,20,1,0 +BRDA:240,21,0,0 +BRDA:310,22,0,0 +BRDA:310,22,1,0 +BRDA:321,23,0,0 +BRDA:336,24,0,0 +BRDA:344,25,0,0 +BRDA:344,25,1,0 +BRF:31 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/getArrowFeature.ts +FN:15,getArrowFeature +FN:42,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,getArrowFeature +FNDA:0,(anonymous_3) +DA:3,0 +DA:4,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:51,0 +DA:58,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:69,0 +DA:74,0 +DA:75,0 +LF:23 +LH:0 +BRDA:37,0,0,0 +BRDA:55,1,0,0 +BRDA:55,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon.ts +FN:4,getBoundingBoxPolygon +FNF:1 +FNH:0 +FNDA:0,getBoundingBoxPolygon +DA:1,0 +DA:4,0 +DA:17,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/getShapePolygon.ts +FN:10,getShapePolygon +FN:45,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,getShapePolygon +FNDA:0,(anonymous_3) +DA:2,0 +DA:4,0 +DA:5,0 +DA:8,0 +DA:10,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:46,0 +DA:48,0 +DA:51,0 +DA:53,0 +LF:17 +LH:0 +BRDA:28,0,0,0 +BRDA:28,0,1,0 +BRDA:30,1,0,0 +BRDA:42,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/handleSemanticView.ts +FN:14,handleSemanticView +FN:59,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,handleSemanticView +FNDA:0,(anonymous_3) +DA:4,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:51,0 +DA:53,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:63,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:79,0 +DA:86,0 +DA:87,0 +DA:91,0 +DA:93,0 +DA:97,0 +DA:98,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:109,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:119,0 +LF:58 +LH:0 +BRDA:32,0,0,0 +BRDA:43,1,0,0 +BRDA:44,2,0,0 +BRDA:44,2,1,0 +BRDA:44,2,2,0 +BRDA:50,3,0,0 +BRDA:50,4,0,0 +BRDA:50,4,1,0 +BRDA:56,5,0,0 +BRDA:63,6,0,0 +BRDA:64,7,0,0 +BRDA:64,7,1,0 +BRDA:64,7,2,0 +BRDA:64,7,3,0 +BRDA:64,7,4,0 +BRDA:73,8,0,0 +BRDA:79,9,0,0 +BRDA:80,10,0,0 +BRDA:80,10,1,0 +BRDA:80,10,2,0 +BRDA:80,10,3,0 +BRDA:80,10,4,0 +BRDA:86,11,0,0 +BRDA:91,12,0,0 +BRDA:91,12,1,0 +BRDA:97,13,0,0 +BRDA:97,14,0,0 +BRDA:97,14,1,0 +BRDA:100,15,0,0 +BRDA:102,16,0,0 +BRDA:102,17,0,0 +BRDA:102,17,1,0 +BRDA:106,18,0,0 +BRDA:108,19,0,0 +BRDA:108,20,0,0 +BRDA:108,20,1,0 +BRDA:112,21,0,0 +BRDA:114,22,0,0 +BRDA:114,23,0,0 +BRDA:114,23,1,0 +BRF:40 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/isFeatureInCompartment.ts +FN:4,isFeatureInCompartment +FNF:1 +FNH:0 +FNDA:0,isFeatureInCompartment +DA:4,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +LF:10 +LH:0 +BRDA:11,0,0,0 +BRDA:14,1,0,0 +BRDA:14,2,0,0 +BRDA:14,2,1,0 +BRDA:18,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/isFeatureInPathway.ts +FN:4,isFeatureInPathway +FNF:1 +FNH:0 +FNDA:0,isFeatureInPathway +DA:4,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +LF:10 +LH:0 +BRDA:11,0,0,0 +BRDA:14,1,0,0 +BRDA:14,2,0,0 +BRDA:14,2,1,0 +BRDA:18,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts +FN:84,(anonymous_2) +FN:130,(anonymous_3) +FN:151,(anonymous_4) +FN:174,(anonymous_5) +FN:186,(anonymous_6) +FN:193,(anonymous_7) +FN:208,(anonymous_8) +FN:222,(anonymous_9) +FN:229,(anonymous_10) +FN:234,(anonymous_11) +FN:255,(anonymous_12) +FNF:11 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:3,0 +DA:4,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:35,0 +DA:38,0 +DA:40,0 +DA:42,0 +DA:44,0 +DA:46,0 +DA:66,0 +DA:70,0 +DA:72,0 +DA:74,0 +DA:76,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:109,0 +DA:111,0 +DA:112,0 +DA:113,0 +DA:115,0 +DA:123,0 +DA:125,0 +DA:131,0 +DA:132,0 +DA:133,0 +DA:134,0 +DA:135,0 +DA:136,0 +DA:138,0 +DA:142,0 +DA:143,0 +DA:144,0 +DA:145,0 +DA:146,0 +DA:148,0 +DA:152,0 +DA:159,0 +DA:164,0 +DA:175,0 +DA:182,0 +DA:183,0 +DA:187,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:194,0 +DA:195,0 +DA:196,0 +DA:197,0 +DA:198,0 +DA:199,0 +DA:200,0 +DA:202,0 +DA:203,0 +DA:204,0 +DA:205,0 +DA:209,0 +DA:210,0 +DA:211,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:217,0 +DA:218,0 +DA:223,0 +DA:224,0 +DA:225,0 +DA:230,0 +DA:231,0 +DA:233,0 +DA:234,0 +DA:235,0 +DA:236,0 +DA:237,0 +DA:238,0 +DA:239,0 +DA:240,0 +DA:241,0 +DA:242,0 +DA:250,0 +DA:252,0 +DA:256,0 +DA:257,0 +DA:258,0 +DA:259,0 +DA:261,0 +DA:262,0 +DA:263,0 +DA:264,0 +DA:265,0 +DA:266,0 +DA:267,0 +DA:268,0 +DA:271,0 +DA:273,0 +DA:274,0 +DA:275,0 +DA:276,0 +DA:278,0 +DA:279,0 +DA:280,0 +DA:281,0 +DA:282,0 +DA:284,0 +LF:127 +LH:0 +BRDA:112,0,0,0 +BRDA:112,0,1,0 +BRDA:134,1,0,0 +BRDA:138,2,0,0 +BRDA:138,2,1,0 +BRDA:213,3,0,0 +BRDA:213,3,1,0 +BRDA:224,4,0,0 +BRDA:224,5,0,0 +BRDA:224,5,1,0 +BRDA:230,6,0,0 +BRDA:262,7,0,0 +BRDA:262,7,1,0 +BRDA:262,8,0,0 +BRDA:262,8,1,0 +BRDA:264,9,0,0 +BRDA:273,10,0,0 +BRDA:278,11,0,0 +BRF:18 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +FN:81,(anonymous_2) +FN:145,(anonymous_3) +FN:146,(anonymous_4) +FN:177,(anonymous_5) +FN:178,(anonymous_6) +FN:183,(anonymous_7) +FN:207,(anonymous_8) +FN:208,(anonymous_9) +FN:213,(anonymous_10) +FN:241,(anonymous_11) +FN:248,(anonymous_12) +FN:250,(anonymous_13) +FN:149,(anonymous_14) +FN:172,(anonymous_15) +FN:202,(anonymous_16) +FN:232,(anonymous_17) +FN:340,(anonymous_18) +FN:341,(anonymous_19) +FN:346,(anonymous_20) +FN:355,(anonymous_21) +FN:372,(anonymous_22) +FN:395,(anonymous_23) +FNF:22 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:24,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:52,0 +DA:96,0 +DA:97,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:109,0 +DA:111,0 +DA:112,0 +DA:114,0 +DA:115,0 +DA:117,0 +DA:118,0 +DA:120,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:126,0 +DA:133,0 +DA:135,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:141,0 +DA:142,0 +DA:145,0 +DA:146,0 +DA:150,0 +DA:169,0 +DA:173,0 +DA:174,0 +DA:177,0 +DA:178,0 +DA:179,0 +DA:183,0 +DA:184,0 +DA:199,0 +DA:203,0 +DA:204,0 +DA:207,0 +DA:208,0 +DA:209,0 +DA:213,0 +DA:214,0 +DA:229,0 +DA:233,0 +DA:234,0 +DA:235,0 +DA:236,0 +DA:238,0 +DA:241,0 +DA:245,0 +DA:246,0 +DA:248,0 +DA:249,0 +DA:251,0 +DA:252,0 +DA:257,0 +DA:261,0 +DA:262,0 +DA:263,0 +DA:267,0 +DA:268,0 +DA:269,0 +DA:271,0 +DA:282,0 +DA:283,0 +DA:284,0 +DA:285,0 +DA:286,0 +DA:290,0 +DA:291,0 +DA:292,0 +DA:296,0 +DA:297,0 +DA:298,0 +DA:300,0 +DA:311,0 +DA:312,0 +DA:313,0 +DA:314,0 +DA:318,0 +DA:320,0 +DA:321,0 +DA:328,0 +DA:334,0 +DA:335,0 +DA:337,0 +DA:341,0 +DA:342,0 +DA:347,0 +DA:348,0 +DA:349,0 +DA:350,0 +DA:352,0 +DA:356,0 +DA:369,0 +DA:373,0 +DA:374,0 +DA:375,0 +DA:376,0 +DA:377,0 +DA:378,0 +DA:381,0 +DA:383,0 +DA:385,0 +DA:386,0 +DA:389,0 +DA:390,0 +DA:391,0 +DA:392,0 +DA:393,0 +DA:395,0 +DA:396,0 +DA:397,0 +DA:398,0 +DA:400,0 +DA:403,0 +LF:142 +LH:0 +BRDA:251,0,0,0 +BRDA:261,1,0,0 +BRDA:282,2,0,0 +BRDA:290,3,0,0 +BRDA:311,4,0,0 +BRDA:320,5,0,0 +BRDA:320,5,1,0 +BRDA:235,6,0,0 +BRDA:235,7,0,0 +BRDA:235,7,1,0 +BRDA:349,8,0,0 +BRDA:349,9,0,0 +BRDA:349,9,1,0 +BRDA:377,10,0,0 +BRDA:377,11,0,0 +BRDA:377,11,1,0 +BRDA:385,12,0,0 +BRDA:385,13,0,0 +BRDA:385,13,1,0 +BRDA:390,14,0,0 +BRDA:390,14,1,0 +BRDA:392,15,0,0 +BRDA:397,16,0,0 +BRDA:397,17,0,0 +BRDA:397,17,1,0 +BRF:25 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage.ts +FN:29,(anonymous_2) +FN:60,(anonymous_3) +FN:83,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:26,0 +DA:42,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:67,0 +DA:68,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:84,0 +LF:18 +LH:0 +BRDA:76,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts +FN:73,(anonymous_2) +FN:121,(anonymous_3) +FN:136,(anonymous_4) +FN:148,(anonymous_5) +FN:154,(anonymous_6) +FN:168,(anonymous_7) +FN:183,(anonymous_8) +FN:190,(anonymous_9) +FNF:8 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:3,0 +DA:4,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:20,0 +DA:38,0 +DA:59,0 +DA:61,0 +DA:63,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:101,0 +DA:102,0 +DA:104,0 +DA:106,0 +DA:108,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:122,0 +DA:137,0 +DA:145,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:155,0 +DA:159,0 +DA:169,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:191,0 +DA:192,0 +LF:61 +LH:0 +BRDA:102,0,0,0 +BRDA:102,0,1,0 +BRDA:185,1,0,0 +BRDA:185,2,0,0 +BRDA:185,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts +FN:74,(anonymous_2) +FN:128,(anonymous_3) +FN:143,(anonymous_4) +FN:166,(anonymous_5) +FN:178,(anonymous_6) +FN:193,(anonymous_7) +FN:208,(anonymous_8) +FN:215,(anonymous_9) +FNF:8 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:3,0 +DA:4,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:39,0 +DA:60,0 +DA:62,0 +DA:64,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:103,0 +DA:105,0 +DA:113,0 +DA:115,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:129,0 +DA:150,0 +DA:151,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:162,0 +DA:167,0 +DA:174,0 +DA:175,0 +DA:179,0 +DA:183,0 +DA:190,0 +DA:194,0 +DA:195,0 +DA:196,0 +DA:197,0 +DA:198,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:203,0 +DA:204,0 +DA:205,0 +DA:209,0 +DA:210,0 +DA:211,0 +DA:216,0 +DA:217,0 +LF:70 +LH:0 +BRDA:103,0,0,0 +BRDA:103,0,1,0 +BRDA:159,1,0,0 +BRDA:210,2,0,0 +BRDA:210,3,0,0 +BRDA:210,3,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts +FN:97,(anonymous_2) +FN:158,(anonymous_3) +FN:179,(anonymous_4) +FN:198,(anonymous_5) +FN:221,(anonymous_6) +FN:234,(anonymous_7) +FN:256,(anonymous_8) +FN:275,(anonymous_9) +FN:282,(anonymous_10) +FNF:9 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:3,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:52,0 +DA:81,0 +DA:83,0 +DA:85,0 +DA:87,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:134,0 +DA:144,0 +DA:146,0 +DA:154,0 +DA:156,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:162,0 +DA:163,0 +DA:166,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:180,0 +DA:205,0 +DA:206,0 +DA:214,0 +DA:215,0 +DA:216,0 +DA:217,0 +DA:222,0 +DA:229,0 +DA:230,0 +DA:231,0 +DA:235,0 +DA:239,0 +DA:246,0 +DA:253,0 +DA:257,0 +DA:258,0 +DA:259,0 +DA:260,0 +DA:261,0 +DA:262,0 +DA:263,0 +DA:264,0 +DA:265,0 +DA:266,0 +DA:267,0 +DA:268,0 +DA:270,0 +DA:271,0 +DA:272,0 +DA:276,0 +DA:277,0 +DA:278,0 +DA:283,0 +DA:284,0 +DA:285,0 +DA:286,0 +DA:288,0 +DA:289,0 +DA:290,0 +DA:291,0 +DA:292,0 +DA:293,0 +DA:303,0 +DA:306,0 +DA:307,0 +DA:309,0 +LF:105 +LH:0 +BRDA:160,0,0,0 +BRDA:162,1,0,0 +BRDA:214,2,0,0 +BRDA:277,3,0,0 +BRDA:277,4,0,0 +BRDA:277,4,1,0 +BRDA:285,5,0,0 +BRDA:289,6,0,0 +BRDA:289,7,0,0 +BRDA:289,7,1,0 +BRDA:291,8,0,0 +BRDA:306,9,0,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawBoundingBoxInteraction.ts +FN:13,getDrawBoundingBoxInteraction +FN:22,(anonymous_3) +FN:31,(anonymous_4) +FN:70,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,getDrawBoundingBoxInteraction +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:4,0 +DA:8,0 +DA:13,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:43,0 +DA:47,0 +DA:51,0 +DA:56,0 +DA:64,0 +DA:66,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:74,0 +DA:76,0 +DA:77,0 +DA:80,0 +DA:83,0 +LF:27 +LH:0 +BRDA:25,0,0,0 +BRDA:25,0,1,0 +BRDA:25,0,2,0 +BRDA:25,0,3,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:33,2,0,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:76,4,0,0 +BRDA:76,5,0,0 +BRDA:76,5,1,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction.ts +FN:13,getDrawOvalInteraction +FN:21,(anonymous_3) +FN:30,(anonymous_4) +FN:68,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,getDrawOvalInteraction +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:4,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:18,0 +DA:22,0 +DA:23,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:42,0 +DA:46,0 +DA:50,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:62,0 +DA:64,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:72,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:81,0 +LF:31 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRDA:24,0,2,0 +BRDA:24,0,3,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:32,2,0,0 +BRDA:32,3,0,0 +BRDA:32,3,1,0 +BRDA:74,4,0,0 +BRDA:74,5,0,0 +BRDA:74,5,1,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts +FN:14,getTransformInteraction +FN:32,(anonymous_6) +FN:63,(anonymous_7) +FN:80,(anonymous_8) +FN:95,(anonymous_9) +FN:110,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,getTransformInteraction +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:21,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:47,0 +DA:52,0 +DA:53,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:68,0 +DA:69,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:80,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:87,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:110,0 +DA:111,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:121,0 +DA:122,0 +DA:128,0 +LF:72 +LH:0 +BRDA:36,0,0,0 +BRDA:55,1,0,0 +BRDA:55,2,0,0 +BRDA:55,2,1,0 +BRDA:68,3,0,0 +BRDA:82,4,0,0 +BRDA:90,5,0,0 +BRDA:90,6,0,0 +BRDA:90,6,1,0 +BRDA:98,7,0,0 +BRDA:103,8,0,0 +BRDA:103,9,0,0 +BRDA:103,9,1,0 +BRDA:116,10,0,0 +BRDA:116,11,0,0 +BRDA:116,11,1,0 +BRDA:121,12,0,0 +BRF:17 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts +FN:4,drawElementOnLayer +FN:15,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,drawElementOnLayer +FNDA:0,(anonymous_2) +DA:4,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +LF:6 +LH:0 +BRDA:16,0,0,0 +BRDA:18,1,0,0 +BRDA:18,2,0,0 +BRDA:18,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer.ts +FN:4,removeElementFromLayer +FN:13,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,removeElementFromLayer +FNDA:0,(anonymous_3) +DA:2,0 +DA:4,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +LF:9 +LH:0 +BRDA:14,0,0,0 +BRDA:16,1,0,0 +BRDA:18,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer.ts +FN:3,removeLayer +FN:10,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,removeLayer +FNDA:0,(anonymous_2) +DA:3,0 +DA:10,0 +DA:11,0 +DA:12,0 +LF:4 +LH:0 +BRDA:11,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts +FN:5,updateElement +FN:10,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,updateElement +FNDA:0,(anonymous_3) +DA:1,0 +DA:5,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +LF:11 +LH:0 +BRDA:11,0,0,0 +BRDA:13,1,0,0 +BRDA:16,2,0,0 +BRDA:16,3,0,0 +BRDA:16,3,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer.ts +FN:4,updateLayer +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,updateLayer +FNDA:0,(anonymous_2) +DA:4,0 +DA:11,0 +DA:12,0 +DA:13,0 +LF:4 +LH:0 +BRDA:12,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/LineOverlay.ts +FN:29,(anonymous_2) +FN:37,(anonymous_3) +FN:59,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:18,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:38,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:50,0 +DA:55,0 +DA:56,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:67,0 +DA:68,0 +DA:70,0 +DA:71,0 +DA:73,0 +LF:27 +LH:0 +BRDA:63,0,0,0 +BRDA:63,1,0,0 +BRDA:63,1,1,0 +BRDA:70,2,0,0 +BRDA:70,3,0,0 +BRDA:70,3,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/MarkerOverlay.ts +FN:29,(anonymous_2) +FN:42,(anonymous_3) +FN:67,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:4,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:18,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:43,0 +DA:44,0 +DA:52,0 +DA:58,0 +DA:63,0 +DA:64,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:75,0 +DA:76,0 +DA:78,0 +DA:79,0 +DA:81,0 +LF:26 +LH:0 +BRDA:54,0,0,0 +BRDA:54,0,1,0 +BRDA:71,1,0,0 +BRDA:71,2,0,0 +BRDA:71,2,1,0 +BRDA:78,3,0,0 +BRDA:78,4,0,0 +BRDA:78,4,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/areOverlayOrdersNotEqual.ts +FN:4,areOverlayOrdersNotEqual +FNF:1 +FNH:0 +FNDA:0,areOverlayOrdersNotEqual +DA:4,0 +DA:8,0 +DA:9,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:26,0 +DA:30,0 +LF:11 +LH:0 +BRDA:8,0,0,0 +BRDA:12,1,0,0 +BRDA:20,2,0,0 +BRDA:21,3,0,0 +BRDA:21,3,1,0 +BRDA:21,3,2,0 +BRDA:21,3,3,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/calculateOverlayDimensions.ts +FN:4,calculateOverlayDimensions +FNF:1 +FNH:0 +FNDA:0,calculateOverlayDimensions +DA:4,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +LF:8 +LH:0 +BRDA:14,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/findMatchingSubmapLinkRectangle.ts +FN:3,findMatchingSubmapLinkRectangle +FN:7,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,findMatchingSubmapLinkRectangle +FNDA:0,(anonymous_2) +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:17,0 +LF:7 +LH:0 +BRDA:8,0,0,0 +BRDA:8,0,1,0 +BRDA:9,1,0,0 +BRDA:9,1,1,0 +BRDA:11,2,0,0 +BRDA:11,2,1,0 +BRDA:13,3,0,0 +BRDA:13,3,1,0 +BRDA:13,3,2,0 +BRDA:17,4,0,0 +BRDA:17,4,1,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/getOverlays.ts +FN:6,getOverlays +FN:12,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,getOverlays +FNDA:0,(anonymous_3) +DA:3,0 +DA:4,0 +DA:6,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:20,0 +DA:22,0 +DA:25,0 +LF:12 +LH:0 +BRDA:14,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/groupOverlayEntities.ts +FN:5,groupOverlayEntities +FN:10,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,groupOverlayEntities +FNDA:0,(anonymous_3) +DA:3,0 +DA:5,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:23,0 +DA:24,0 +DA:29,0 +DA:33,0 +LF:13 +LH:0 +BRDA:11,0,0,0 +BRDA:14,1,0,0 +BRDA:23,2,0,0 +BRDA:23,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/processOverlayGroupedElements.ts +FN:8,processOverlayGroupedElements +FN:13,(anonymous_3) +FN:19,(anonymous_4) +FN:23,(anonymous_5) +FNF:4 +FNH:0 +FNDA:0,processOverlayGroupedElements +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:5,0 +DA:6,0 +DA:8,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:31,0 +DA:33,0 +LF:13 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/overlay/sortElementOverlayByColor.ts +FN:5,sortElementOverlayByColor +FN:9,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,sortElementOverlayByColor +FNDA:0,(anonymous_2) +DA:5,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:18,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:15,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/reaction/Reaction.ts +FN:79,(anonymous_2) +FN:113,(anonymous_3) +FN:121,(anonymous_4) +FN:126,(anonymous_5) +FN:145,(anonymous_6) +FN:230,(anonymous_7) +FN:240,(anonymous_8) +FN:286,(anonymous_9) +FN:349,(anonymous_10) +FN:350,(anonymous_11) +FN:364,(anonymous_12) +FN:381,(anonymous_13) +FN:392,(anonymous_14) +FN:418,(anonymous_15) +FNF:14 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:13,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:46,0 +DA:71,0 +DA:73,0 +DA:75,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:105,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:114,0 +DA:115,0 +DA:117,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:126,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:133,0 +DA:135,0 +DA:142,0 +DA:149,0 +DA:150,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:158,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:162,0 +DA:173,0 +DA:174,0 +DA:175,0 +DA:176,0 +DA:180,0 +DA:181,0 +DA:182,0 +DA:186,0 +DA:187,0 +DA:188,0 +DA:189,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:203,0 +DA:207,0 +DA:209,0 +DA:210,0 +DA:217,0 +DA:225,0 +DA:227,0 +DA:231,0 +DA:232,0 +DA:233,0 +DA:234,0 +DA:238,0 +DA:239,0 +DA:240,0 +DA:241,0 +DA:249,0 +DA:256,0 +DA:263,0 +DA:270,0 +DA:271,0 +DA:273,0 +DA:282,0 +DA:283,0 +DA:287,0 +DA:291,0 +DA:292,0 +DA:293,0 +DA:297,0 +DA:298,0 +DA:303,0 +DA:308,0 +DA:315,0 +DA:322,0 +DA:323,0 +DA:324,0 +DA:331,0 +DA:332,0 +DA:335,0 +DA:345,0 +DA:346,0 +DA:350,0 +DA:351,0 +DA:352,0 +DA:353,0 +DA:355,0 +DA:356,0 +DA:357,0 +DA:358,0 +DA:360,0 +DA:365,0 +DA:366,0 +DA:368,0 +DA:369,0 +DA:372,0 +DA:373,0 +DA:374,0 +DA:377,0 +DA:378,0 +DA:381,0 +DA:382,0 +DA:383,0 +DA:384,0 +DA:386,0 +DA:389,0 +DA:396,0 +DA:397,0 +DA:399,0 +DA:400,0 +DA:403,0 +DA:404,0 +DA:405,0 +DA:408,0 +DA:409,0 +DA:412,0 +DA:413,0 +DA:414,0 +DA:415,0 +DA:416,0 +DA:418,0 +DA:419,0 +DA:420,0 +DA:421,0 +DA:423,0 +DA:426,0 +LF:160 +LH:0 +BRDA:108,0,0,0 +BRDA:108,0,1,0 +BRDA:152,1,0,0 +BRDA:173,2,0,0 +BRDA:180,3,0,0 +BRDA:200,4,0,0 +BRDA:209,5,0,0 +BRDA:209,5,1,0 +BRDA:291,6,0,0 +BRDA:291,6,1,0 +BRDA:322,7,0,0 +BRDA:331,8,0,0 +BRDA:352,9,0,0 +BRDA:357,10,0,0 +BRDA:357,11,0,0 +BRDA:357,11,1,0 +BRDA:360,12,0,0 +BRDA:360,12,1,0 +BRDA:365,13,0,0 +BRDA:368,14,0,0 +BRDA:377,15,0,0 +BRDA:377,16,0,0 +BRDA:377,16,1,0 +BRDA:383,17,0,0 +BRDA:383,18,0,0 +BRDA:383,18,1,0 +BRDA:396,19,0,0 +BRDA:399,20,0,0 +BRDA:408,21,0,0 +BRDA:413,22,0,0 +BRDA:413,22,1,0 +BRDA:415,23,0,0 +BRDA:420,24,0,0 +BRDA:420,25,0,0 +BRDA:420,25,1,0 +BRF:35 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/getCoverStyles.ts +FN:13,getCoverStyles +FNF:1 +FNH:0 +FNDA:0,getCoverStyles +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:13,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:51,0 +DA:52,0 +DA:54,0 +DA:61,0 +DA:62,0 +DA:65,0 +LF:27 +LH:0 +BRDA:33,0,0,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRDA:39,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/getFill.ts +FN:4,getFill +FNF:1 +FNH:0 +FNDA:0,getFill +DA:2,0 +DA:4,0 +DA:5,0 +LF:3 +LH:0 +BRDA:4,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle.ts +FN:6,getScaledElementStyle +FNF:1 +FNH:0 +FNDA:0,getScaledElementStyle +DA:4,0 +DA:6,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +LF:6 +LH:0 +BRDA:11,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/getScaledStrokeStyle.ts +FN:4,getScaledStrokeStyle +FN:9,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,getScaledStrokeStyle +FNDA:0,(anonymous_2) +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +LF:8 +LH:0 +BRDA:5,0,0,0 +BRDA:5,0,1,0 +BRDA:8,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/getStroke.ts +FN:4,getStroke +FNF:1 +FNH:0 +FNDA:0,getStroke +DA:2,0 +DA:4,0 +DA:15,0 +LF:3 +LH:0 +BRDA:5,0,0,0 +BRDA:6,1,0,0 +BRDA:7,2,0,0 +BRDA:8,3,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/getStyle.ts +FN:10,getStyle +FNF:1 +FNH:0 +FNDA:0,getStyle +DA:2,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:25,0 +LF:7 +LH:0 +BRDA:12,0,0,0 +BRDA:13,1,0,0 +BRDA:14,2,0,0 +BRDA:15,3,0,0 +BRDA:16,4,0,0 +BRDA:28,5,0,0 +BRDA:28,5,1,0 +BRDA:32,6,0,0 +BRDA:32,6,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/style/rgbToHex.ts +FN:5,rgbToHex +FNF:1 +FNH:0 +FNDA:0,rgbToHex +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +LF:5 +LH:0 +BRDA:6,0,0,0 +BRDA:6,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/text/getTextCoords.ts +FN:6,getTextCoords +FNF:1 +FNH:0 +FNDA:0,getTextCoords +DA:6,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:49,0 +LF:18 +LH:0 +BRDA:15,0,0,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRDA:35,2,0,0 +BRDA:40,3,0,0 +BRDA:40,3,1,0 +BRDA:42,4,0,0 +BRDA:46,5,0,0 +BRDA:46,6,0,0 +BRDA:46,6,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/text/getTextStyle.ts +FN:5,getTextStyle +FNF:1 +FNH:0 +FNDA:0,getTextStyle +DA:1,0 +DA:2,0 +DA:5,0 +DA:20,0 +LF:4 +LH:0 +BRDA:11,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/shapes/text/getWrappedTextWithFontSize.ts +FN:2,getWrappedTextWithFontSize +FN:32,(anonymous_2) +FN:48,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,getWrappedTextWithFontSize +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:15,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:56,0 +DA:57,0 +DA:58,0 +LF:31 +LH:0 +BRDA:6,0,0,0 +BRDA:7,1,0,0 +BRDA:21,2,0,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:36,4,0,0 +BRDA:36,4,1,0 +BRDA:36,5,0,0 +BRDA:36,5,1,0 +BRDA:43,6,0,0 +BRDA:51,7,0,0 +BRDA:51,8,0,0 +BRDA:51,8,1,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/websocket/processLayer.ts +FN:10,processLayer +FNF:1 +FNH:0 +FNDA:0,processLayer +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:17,0 +DA:18,0 +DA:22,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:41,0 +LF:17 +LH:0 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRDA:19,1,0,0 +BRDA:19,1,1,0 +BRDA:28,2,0,0 +BRDA:31,3,0,0 +BRDA:34,4,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/websocket/processLayerImage.ts +FN:11,processLayerImage +FNF:1 +FNH:0 +FNDA:0,processLayerImage +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:51,0 +LF:19 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRDA:30,2,0,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:43,4,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/websocket/processLayerOval.ts +FN:8,processLayerOval +FNF:1 +FNH:0 +FNDA:0,processLayerOval +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +LF:12 +LH:0 +BRDA:16,0,0,0 +BRDA:24,1,0,0 +BRDA:27,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/websocket/processLayerText.ts +FN:11,processLayerText +FNF:1 +FNH:0 +FNDA:0,processLayerText +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:51,0 +LF:19 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRDA:30,2,0,0 +BRDA:33,3,0,0 +BRDA:33,3,1,0 +BRDA:43,4,0,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/websocket/processMessage.ts +FN:9,processMessage +FNF:1 +FNH:0 +FNDA:0,processMessage +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +LF:16 +LH:0 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRDA:22,2,0,0 +BRDA:22,2,1,0 +BRDA:24,3,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/components/Map/MapViewer/utils/websocket/websocket.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:8,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsDrawer.component.tsx +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +LF:9 +LH:0 +BRDA:16,0,0,0 +BRDA:16,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsDrawer.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginContent/PluginContent.component.tsx +FN:6,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginContent/PluginContent.constants.ts +FN:9,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:3,0 +DA:9,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginContent/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginContent/utils/getPluginContentStyle.ts +FN:7,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:12,0 +LF:5 +LH:0 +BRDA:8,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginsHeader.component.tsx +FN:10,(anonymous_1) +FN:14,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +LF:13 +LH:0 +BRDA:25,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/PluginHeaderInfo.component.tsx +FN:13,(anonymous_1) +FN:19,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:20,0 +DA:21,0 +LF:11 +LH:0 +BRDA:20,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/PluginHeaderInfo.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/PluginOpenButton.component.tsx +FN:9,(anonymous_1) +FN:29,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:30,0 +LF:10 +LH:0 +BRDA:18,0,0,0 +BRDA:25,1,0,0 +BRDA:25,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement/LoadPluginElement.component.tsx +FN:14,(anonymous_1) +FN:21,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:22,0 +DA:23,0 +DA:28,0 +LF:11 +LH:0 +BRDA:22,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsTabs/PluginsTabs.component.tsx +FN:8,(anonymous_1) +FN:12,(anonymous_2) +FN:17,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:18,0 +LF:12 +LH:0 +BRDA:30,0,0,0 +BRDA:30,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsTabs/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab/PluginSingleTab.component.tsx +FN:15,(anonymous_1) +FN:23,(anonymous_2) +FN:29,(anonymous_3) +FN:41,(anonymous_4) +FN:45,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:41,0 +DA:45,0 +LF:18 +LH:0 +BRDA:24,0,0,0 +BRDA:38,1,0,0 +BRDA:38,1,1,0 +BRDA:40,2,0,0 +BRDA:40,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/SPA/MinervaSPA.component.tsx +FN:13,(anonymous_1) +FN:17,(anonymous_2) +FN:20,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:20,0 +LF:16 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/components/SPA/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/canvas.ts +FNF:0 +FNH:0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:15,0 +DA:22,0 +DA:27,0 +DA:29,0 +DA:31,0 +DA:33,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/common.ts +FN:19,(anonymous_19) +FNF:1 +FNH:0 +FNDA:0,(anonymous_19) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:28,0 +LF:18 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/dividers.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/errors.ts +FN:8,(anonymous_5) +FN:10,(anonymous_6) +FNF:2 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:3,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:14,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/features.ts +FNF:0 +FNH:0 +DA:1,0 +DA:13,0 +DA:19,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/fetchData.ts +FNF:0 +FNH:0 +DA:2,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/font.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:10,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/hexColors.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/index.ts +FNF:0 +FNH:0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +LF:12 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRDA:10,1,0,0 +BRDA:10,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/constants/index.utils.ts +FN:3,(anonymous_3) +FN:11,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:18,0 +LF:10 +LH:0 +BRDA:5,0,0,0 +BRDA:5,1,0,0 +BRDA:5,1,1,0 +BRDA:5,1,2,0 +BRDA:12,2,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/constants/map.ts +FNF:0 +FNH:0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:22,0 +DA:29,0 +LF:14 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/mocks.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/plugins.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/project.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/searchDrawer.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/time.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/constants/user.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/hooks/useOpenSubmaps.ts +FN:19,(anonymous_1) +FN:28,(anonymous_2) +FN:29,(anonymous_3) +FN:32,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:49,0 +LF:25 +LH:0 +BRDA:30,0,0,0 +BRDA:30,0,1,0 +BRDA:30,0,2,0 +BRDA:33,1,0,0 +BRDA:37,2,0,0 +BRDA:37,2,1,0 +BRDA:43,3,0,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/hooks/usePrevious.tsx +FN:3,usePrevious +FN:6,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,usePrevious +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:10,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/arrowSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/arrowTypeSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/articleSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/authorSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/autocompleteSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/bioEntityContentSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/bioEntityResponseSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/bioEntitySchema.ts +FN:33,(anonymous_1) +FN:37,(anonymous_2) +FN:66,(anonymous_3) +FN:70,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:33,0 +DA:37,0 +DA:66,0 +DA:70,0 +LF:16 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRDA:37,1,0,0 +BRDA:37,1,1,0 +BRDA:66,2,0,0 +BRDA:66,2,1,0 +BRDA:70,3,0,0 +BRDA:70,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/models/bioShapeSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/chemicalSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/colorSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/commentSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:8,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/configurationOptionSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/configurationSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:9,0 +DA:19,0 +DA:25,0 +DA:27,0 +DA:33,0 +DA:43,0 +DA:45,0 +DA:61,0 +DA:70,0 +DA:72,0 +DA:74,0 +DA:79,0 +LF:14 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/drugSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/elementSearchResult.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/exportSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/geneVariant.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/glyphSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/idSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/javaStacktraceSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/layerImageSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/layerLineSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/layerOvalSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/layerRectSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/layerSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/layerTextSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/licenseSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/lineSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/lineTypeSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/loginSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mapOverlaySchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:17,0 +DA:25,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mapPoint.ts +FNF:0 +FNH:0 +DA:1,0 +DA:5,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/markerSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:10,0 +DA:19,0 +DA:24,0 +DA:29,0 +DA:34,0 +DA:39,0 +DA:41,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/modelElementModificationSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/modelElementSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/modelSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:34,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/modificationResiduesSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/newReactionSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/oauthSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/operatorSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/organism.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overlayBioEntitySchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:11,0 +DA:16,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overlayGroupSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overlayLeftBioEntitySchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overlayLeftReactionSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overlayRightBioEntitySchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overviewImageLink.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:11,0 +DA:21,0 +DA:29,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/overviewImageView.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/pageableSchema.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:5,0 +DA:6,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/pluginSchema.ts +FNF:0 +FNH:0 +DA:2,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/pointSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/positionSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/projectSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/publicationElementSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/publicationsSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/reactionProduct.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/referenceSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/segmentSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/sessionValidSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/shapeEllipseSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/shapePolygonSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/shapeRelAbsBezierPointSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/shapeRelAbsSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/shapeSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/statisticsSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/structuralStateSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/submapConnection.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/submodelSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/targetElementLeanResponseSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/targetElementSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/targetParticipantSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/targetSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/targetSearchNameResult.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/userPrivilegesSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/userSchema.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/arrowTypesFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/bioEntityContentsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:13,0 +DA:15,0 +DA:23,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/bioShapesFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/chemicalsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/commentFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/commentsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/configurationFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/drugFixtures.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:12,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/elementSearchResultFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/glyphsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/javaStacktraceFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerImageFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerImagesFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerLinesFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerOvalFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerOvalsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerRectFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerRectsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerTextFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layerTextsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/layersFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/lineTypesFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/loginFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/modelElementFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/modelElementsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/modelsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:13,0 +DA:18,0 +DA:23,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/newReactionFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/newReactionsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/oauthFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/overlayBioEntityFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:9,0 +DA:11,0 +DA:16,0 +DA:20,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/overlayGroupsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/overlaysFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:9,0 +DA:11,0 +DA:16,0 +DA:21,0 +DA:25,0 +DA:29,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/pluginFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/projectFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:19,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/projectsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/publicationElementFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/referenceFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/sessionFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/shapesFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/statisticsFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/fixtures/userFixture.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/generators/diseaseGenerator.ts +FN:9,(anonymous_1) +FN:13,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:11,0 +DA:14,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/generators/diseaseNameGenerator.ts +FN:8,(anonymous_1) +FN:9,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/generators/modelIdGenerator.ts +FN:10,(anonymous_1) +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:4,0 +DA:7,0 +DA:10,0 +DA:11,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/generators/organismGenerator.ts +FN:10,(anonymous_1) +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:10,0 +DA:12,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/generators/organismNameGenerator.ts +FN:8,(anonymous_1) +FN:9,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/generators/topOverviewImageGenerator.ts +FN:10,(anonymous_1) +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:10,0 +DA:12,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/configurationFormatsMock.ts +FNF:0 +FNH:0 +DA:3,0 +DA:10,0 +DA:33,0 +DA:35,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/configurationOptionMock.ts +FNF:0 +FNH:0 +DA:10,0 +DA:12,0 +DA:22,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/elementSearchResultMock.ts +FNF:0 +FNH:0 +DA:3,0 +DA:9,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/geneVariantsMock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/modelsMock.ts +FNF:0 +FNH:0 +DA:2,0 +DA:4,0 +DA:408,0 +DA:462,0 +DA:480,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/overviewImageMocks.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +DA:12,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/pluginsMock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/publicationsResponseMock.ts +FNF:0 +FNH:0 +DA:2,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/models/mocks/referencesMock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +DA:91,0 +DA:178,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/apiPath.ts +FN:5,(anonymous_1) +FN:10,(anonymous_2) +FN:14,(anonymous_3) +FN:22,(anonymous_4) +FN:27,(anonymous_5) +FN:29,(anonymous_6) +FN:31,(anonymous_7) +FN:33,(anonymous_8) +FN:34,(anonymous_9) +FN:36,(anonymous_10) +FN:37,(anonymous_11) +FN:38,(anonymous_12) +FN:39,(anonymous_13) +FN:40,(anonymous_14) +FN:42,(anonymous_15) +FN:44,(anonymous_16) +FN:46,(anonymous_17) +FN:48,(anonymous_18) +FN:50,(anonymous_19) +FN:52,(anonymous_20) +FN:54,(anonymous_21) +FN:56,(anonymous_22) +FN:58,(anonymous_23) +FN:60,(anonymous_24) +FN:61,(anonymous_25) +FN:63,(anonymous_26) +FN:65,(anonymous_27) +FN:67,(anonymous_28) +FN:69,(anonymous_29) +FN:71,(anonymous_30) +FN:73,(anonymous_31) +FN:75,(anonymous_32) +FN:77,(anonymous_33) +FN:79,(anonymous_34) +FN:81,(anonymous_35) +FN:83,(anonymous_36) +FN:85,(anonymous_37) +FN:86,(anonymous_38) +FN:87,(anonymous_39) +FN:89,(anonymous_40) +FN:91,(anonymous_41) +FN:93,(anonymous_42) +FN:97,(anonymous_43) +FN:98,(anonymous_44) +FN:99,(anonymous_45) +FN:100,(anonymous_46) +FN:101,(anonymous_47) +FN:102,(anonymous_48) +FN:103,(anonymous_49) +FN:105,(anonymous_50) +FN:106,(anonymous_51) +FN:107,(anonymous_52) +FN:108,(anonymous_53) +FN:109,(anonymous_54) +FN:111,(anonymous_55) +FN:121,(anonymous_56) +FN:122,(anonymous_57) +FN:123,(anonymous_58) +FN:125,(anonymous_59) +FN:127,(anonymous_60) +FN:128,(anonymous_61) +FN:129,(anonymous_62) +FN:130,(anonymous_63) +FN:134,(anonymous_64) +FN:135,(anonymous_65) +FN:136,(anonymous_66) +FN:137,(anonymous_67) +FN:138,(anonymous_68) +FN:139,(anonymous_69) +FN:140,(anonymous_70) +FN:141,(anonymous_71) +FN:142,(anonymous_72) +FN:143,(anonymous_73) +FN:144,(anonymous_74) +FN:145,(anonymous_75) +FN:148,(anonymous_76) +FN:150,(anonymous_77) +FN:151,(anonymous_78) +FN:152,(anonymous_79) +FN:153,(anonymous_80) +FN:154,(anonymous_81) +FN:156,(anonymous_82) +FNF:82 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:0,(anonymous_57) +FNDA:0,(anonymous_58) +FNDA:0,(anonymous_59) +FNDA:0,(anonymous_60) +FNDA:0,(anonymous_61) +FNDA:0,(anonymous_62) +FNDA:0,(anonymous_63) +FNDA:0,(anonymous_64) +FNDA:0,(anonymous_65) +FNDA:0,(anonymous_66) +FNDA:0,(anonymous_67) +FNDA:0,(anonymous_68) +FNDA:0,(anonymous_69) +FNDA:0,(anonymous_70) +FNDA:0,(anonymous_71) +FNDA:0,(anonymous_72) +FNDA:0,(anonymous_73) +FNDA:0,(anonymous_74) +FNDA:0,(anonymous_75) +FNDA:0,(anonymous_76) +FNDA:0,(anonymous_77) +FNDA:0,(anonymous_78) +FNDA:0,(anonymous_79) +FNDA:0,(anonymous_80) +FNDA:0,(anonymous_81) +FNDA:0,(anonymous_82) +DA:1,0 +DA:5,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:21,0 +DA:26,0 +DA:28,0 +DA:30,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:43,0 +DA:45,0 +DA:47,0 +DA:49,0 +DA:51,0 +DA:53,0 +DA:55,0 +DA:57,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:64,0 +DA:66,0 +DA:68,0 +DA:70,0 +DA:72,0 +DA:74,0 +DA:76,0 +DA:78,0 +DA:80,0 +DA:82,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:88,0 +DA:90,0 +DA:92,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:104,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:118,0 +DA:121,0 +DA:122,0 +DA:124,0 +DA:126,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:131,0 +DA:134,0 +DA:135,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:141,0 +DA:142,0 +DA:143,0 +DA:144,0 +DA:146,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:155,0 +DA:157,0 +LF:88 +LH:0 +BRDA:130,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/store.ts +FN:95,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:31,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:90,0 +DA:92,0 +DA:95,0 +LF:42 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/autocomplete/autocomplete.constants.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/autocomplete/autocomplete.reducers.ts +FN:9,(anonymous_4) +FN:12,(anonymous_5) +FN:15,(anonymous_6) +FN:19,(anonymous_7) +FN:25,(anonymous_8) +FN:28,(anonymous_9) +FN:31,(anonymous_10) +FN:35,(anonymous_11) +FN:41,(anonymous_12) +FN:44,(anonymous_13) +FN:47,(anonymous_14) +FN:51,(anonymous_15) +FNF:12 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +DA:7,0 +DA:9,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:41,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:51,0 +DA:52,0 +LF:25 +LH:0 +BRDA:16,0,0,0 +BRDA:16,0,1,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:48,2,0,0 +BRDA:48,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/autocomplete/autocomplete.selectors.ts +FN:6,(anonymous_4) +FN:11,(anonymous_5) +FN:16,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:16,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/autocomplete/autocomplete.slice.ts +FN:13,(anonymous_7) +FN:24,(anonymous_8) +FN:35,(anonymous_9) +FNF:3 +FNH:0 +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:2,0 +DA:7,0 +DA:9,0 +DA:14,0 +DA:18,0 +DA:20,0 +DA:25,0 +DA:29,0 +DA:31,0 +DA:36,0 +DA:40,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/autocomplete/autocomplete.thunks.ts +FN:17,(anonymous_4) +FN:37,(anonymous_5) +FN:57,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:30,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:43,0 +DA:45,0 +DA:50,0 +DA:58,0 +DA:59,0 +DA:61,0 +DA:63,0 +DA:65,0 +LF:24 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:43,1,0,0 +BRDA:43,1,1,0 +BRDA:63,2,0,0 +BRDA:63,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/bioEntity/bioEntity.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:5,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/bioEntity/bioEntity.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/bioEntity/bioEntity.reducers.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:4,0 +DA:8,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/bioEntity/bioEntity.selectors.ts +FN:27,(anonymous_10) +FN:31,(anonymous_11) +FN:38,(anonymous_12) +FN:47,(anonymous_13) +FN:48,(anonymous_14) +FN:56,(anonymous_15) +FN:58,(anonymous_16) +FN:71,(anonymous_17) +FN:84,(anonymous_18) +FN:86,(anonymous_19) +FN:96,(anonymous_20) +FN:98,(anonymous_21) +FN:99,(anonymous_22) +FN:100,(anonymous_23) +FN:101,(anonymous_24) +FN:109,(anonymous_25) +FN:110,(anonymous_26) +FNF:17 +FNH:0 +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +DA:1,0 +DA:2,0 +DA:6,0 +DA:13,0 +DA:19,0 +DA:25,0 +DA:27,0 +DA:29,0 +DA:31,0 +DA:34,0 +DA:39,0 +DA:43,0 +DA:48,0 +DA:50,0 +DA:54,0 +DA:57,0 +DA:58,0 +DA:67,0 +DA:72,0 +DA:80,0 +DA:81,0 +DA:85,0 +DA:86,0 +DA:91,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:106,0 +DA:110,0 +LF:31 +LH:0 +BRDA:48,0,0,0 +BRDA:48,0,1,0 +BRDA:50,1,0,0 +BRDA:50,1,1,0 +BRDA:50,2,0,0 +BRDA:50,2,1,0 +BRDA:60,3,0,0 +BRDA:60,3,1,0 +BRDA:86,4,0,0 +BRDA:86,4,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/redux/bioEntity/bioEntity.slice.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:13,0 +DA:15,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/chemicals/chemicals.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/chemicals/chemicals.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/chemicals/chemicals.reducers.ts +FN:6,(anonymous_4) +FN:7,(anonymous_5) +FN:15,(anonymous_6) +FN:16,(anonymous_7) +FN:22,(anonymous_8) +FN:23,(anonymous_9) +FN:31,(anonymous_10) +FN:34,(anonymous_11) +FN:38,(anonymous_12) +FN:41,(anonymous_13) +FN:47,(anonymous_14) +FNF:11 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:42,0 +DA:47,0 +DA:48,0 +DA:49,0 +LF:25 +LH:0 +BRDA:17,0,0,0 +BRDA:24,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/chemicals/chemicals.selectors.ts +FN:10,(anonymous_11) +FN:12,(anonymous_12) +FN:14,(anonymous_13) +FN:15,(anonymous_14) +FN:21,(anonymous_15) +FN:23,(anonymous_16) +FN:30,(anonymous_17) +FN:32,(anonymous_18) +FN:35,(anonymous_19) +FN:37,(anonymous_20) +FN:37,(anonymous_21) +FN:46,(anonymous_22) +FN:47,(anonymous_23) +FN:54,(anonymous_24) +FN:56,(anonymous_25) +FN:58,(anonymous_26) +FN:58,(anonymous_27) +FN:61,(anonymous_28) +FN:68,(anonymous_29) +FN:75,(anonymous_30) +FN:76,(anonymous_31) +FN:77,(anonymous_32) +FN:79,(anonymous_33) +FN:82,(anonymous_34) +FN:83,(anonymous_35) +FN:94,(anonymous_36) +FN:99,(anonymous_37) +FN:104,(anonymous_38) +FN:104,(anonymous_39) +FNF:29 +FNH:0 +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +DA:1,0 +DA:2,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:22,0 +DA:23,0 +DA:27,0 +DA:31,0 +DA:33,0 +DA:35,0 +DA:37,0 +DA:43,0 +DA:47,0 +DA:51,0 +DA:55,0 +DA:56,0 +DA:58,0 +DA:61,0 +DA:65,0 +DA:69,0 +DA:70,0 +DA:73,0 +DA:75,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:82,0 +DA:83,0 +DA:92,0 +DA:94,0 +DA:97,0 +DA:100,0 +DA:101,0 +DA:104,0 +LF:40 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:33,2,0,0 +BRDA:33,2,1,0 +BRDA:35,3,0,0 +BRDA:35,3,1,0 +BRDA:47,4,0,0 +BRDA:47,4,1,0 +BRDA:55,5,0,0 +BRDA:55,5,1,0 +BRDA:56,6,0,0 +BRDA:56,6,1,0 +BRDA:69,7,0,0 +BRDA:74,8,0,0 +BRDA:74,8,1,0 +BRDA:77,9,0,0 +BRDA:77,9,1,0 +BRDA:100,10,0,0 +BRDA:100,11,0,0 +BRDA:100,11,1,0 +BRDA:104,12,0,0 +BRDA:104,12,1,0 +BRF:24 +BRH:0 +end_of_record +TN: +SF:src/redux/chemicals/chemicals.slice.ts +FN:21,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:2,0 +DA:7,0 +DA:9,0 +DA:15,0 +DA:22,0 +DA:23,0 +DA:27,0 +DA:29,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/chemicals/chemicals.thunks.ts +FN:18,(anonymous_3) +FN:36,(anonymous_4) +FN:38,(anonymous_5) +FN:45,(anonymous_6) +FN:49,(anonymous_7) +FN:51,(anonymous_8) +FN:54,(anonymous_9) +FNF:7 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:14,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:33,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:44,0 +DA:46,0 +DA:49,0 +DA:51,0 +DA:54,0 +DA:55,0 +DA:57,0 +LF:27 +LH:0 +BRDA:26,0,0,0 +BRDA:26,0,1,0 +BRDA:46,1,0,0 +BRDA:46,1,1,0 +BRDA:46,2,0,0 +BRDA:46,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/comment.constants.ts +FNF:0 +FNH:0 +DA:4,0 +DA:10,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/comment.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/comment.reducers.ts +FN:5,(anonymous_5) +FN:6,(anonymous_6) +FN:10,(anonymous_7) +FN:15,(anonymous_8) +FN:20,(anonymous_9) +FN:23,(anonymous_10) +FN:28,(anonymous_11) +FN:33,(anonymous_12) +FN:39,(anonymous_13) +FN:43,(anonymous_14) +FNF:10 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:39,0 +DA:40,0 +DA:43,0 +DA:44,0 +LF:23 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/comment.selectors.ts +FN:6,(anonymous_4) +FN:10,(anonymous_5) +FN:16,(anonymous_6) +FN:22,(anonymous_7) +FN:23,(anonymous_8) +FNF:5 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:13,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:22,0 +DA:24,0 +LF:12 +LH:0 +BRDA:17,0,0,0 +BRDA:21,1,0,0 +BRDA:21,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/comment.slice.ts +FN:17,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:8,0 +DA:10,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:25,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/comment.thunks.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/thunks/addComment.ts +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:21,0 +DA:23,0 +DA:25,0 +LF:13 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/comment/thunks/getComments.ts +FN:15,(anonymous_3) +FN:32,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:28,0 +DA:33,0 +DA:34,0 +DA:38,0 +DA:40,0 +DA:42,0 +LF:20 +LH:0 +BRDA:21,0,0,0 +BRDA:21,0,1,0 +BRDA:40,1,0,0 +BRDA:40,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.adapter.ts +FN:8,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:4,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:16,0 +DA:21,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:36,0 +LF:26 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.mock.ts +FNF:0 +FNH:0 +DA:2,0 +DA:6,0 +DA:9,0 +DA:24,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.reducers.ts +FN:5,(anonymous_3) +FN:8,(anonymous_4) +FN:11,(anonymous_5) +FN:17,(anonymous_6) +FN:23,(anonymous_7) +FN:26,(anonymous_8) +FN:29,(anonymous_9) +FN:33,(anonymous_10) +FNF:8 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:2,0 +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:17,0 +DA:18,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:34,0 +LF:19 +LH:0 +BRDA:12,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.selectors.ts +FN:33,(anonymous_25) +FN:34,(anonymous_26) +FN:35,(anonymous_27) +FN:41,(anonymous_28) +FN:46,(anonymous_29) +FN:51,(anonymous_30) +FN:56,(anonymous_31) +FN:61,(anonymous_32) +FN:66,(anonymous_33) +FN:71,(anonymous_34) +FN:76,(anonymous_35) +FN:81,(anonymous_36) +FN:84,(anonymous_37) +FN:86,(anonymous_38) +FN:87,(anonymous_39) +FN:92,(anonymous_40) +FN:97,(anonymous_41) +FN:101,(anonymous_42) +FN:104,(anonymous_43) +FN:111,(anonymous_44) +FN:123,(anonymous_45) +FN:128,(anonymous_46) +FN:130,(anonymous_47) +FN:137,(anonymous_48) +FN:148,(anonymous_49) +FN:153,(anonymous_50) +FN:158,(anonymous_51) +FN:162,(anonymous_52) +FN:166,(anonymous_53) +FN:171,(anonymous_54) +FN:175,(anonymous_55) +FN:179,(anonymous_56) +FNF:32 +FNH:0 +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +DA:2,0 +DA:3,0 +DA:4,0 +DA:29,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:37,0 +DA:39,0 +DA:41,0 +DA:44,0 +DA:46,0 +DA:49,0 +DA:51,0 +DA:54,0 +DA:56,0 +DA:59,0 +DA:61,0 +DA:64,0 +DA:66,0 +DA:69,0 +DA:71,0 +DA:74,0 +DA:76,0 +DA:79,0 +DA:81,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:87,0 +DA:90,0 +DA:92,0 +DA:95,0 +DA:98,0 +DA:102,0 +DA:104,0 +DA:109,0 +DA:112,0 +DA:121,0 +DA:123,0 +DA:126,0 +DA:129,0 +DA:130,0 +DA:135,0 +DA:138,0 +DA:146,0 +DA:148,0 +DA:151,0 +DA:153,0 +DA:156,0 +DA:158,0 +DA:160,0 +DA:162,0 +DA:164,0 +DA:166,0 +DA:169,0 +DA:171,0 +DA:173,0 +DA:175,0 +DA:177,0 +DA:179,0 +LF:61 +LH:0 +BRDA:99,0,0,0 +BRDA:99,0,1,0 +BRDA:130,1,0,0 +BRDA:130,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.slice.ts +FN:9,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:10,0 +DA:11,0 +DA:15,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/configuration/configuration.thunks.ts +FN:20,(anonymous_3) +FN:39,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:14,0 +DA:16,0 +DA:21,0 +DA:22,0 +DA:26,0 +DA:31,0 +DA:33,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:45,0 +DA:47,0 +LF:21 +LH:0 +BRDA:31,0,0,0 +BRDA:31,0,1,0 +BRDA:45,1,0,0 +BRDA:45,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/constant/constant.adapter.ts +FNF:0 +FNH:0 +DA:1,0 +DA:5,0 +DA:10,0 +DA:15,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/constant/constant.reducers.ts +FN:5,(anonymous_1) +FN:6,(anonymous_2) +FN:9,(anonymous_3) +FN:13,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/constant/constant.slice.ts +FN:9,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:10,0 +DA:14,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/constant/constant.thunks.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:16,0 +DA:18,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/contextMenu/contextMenu.constants.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/contextMenu/contextMenu.reducers.ts +FN:5,(anonymous_5) +FN:13,(anonymous_6) +FN:18,(anonymous_7) +FN:25,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:5,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:22,0 +DA:25,0 +DA:26,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/contextMenu/contextMenu.selector.ts +FN:4,(anonymous_3) +FN:8,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/contextMenu/contextMenu.slice.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:7,0 +DA:9,0 +DA:19,0 +DA:20,0 +DA:22,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/cookieBanner/cookieBanner.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/cookieBanner/cookieBanner.reducers.ts +FN:3,(anonymous_4) +FN:7,(anonymous_5) +FN:11,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:3,0 +DA:4,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:13,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/cookieBanner/cookieBanner.selector.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/cookieBanner/cookieBanner.slice.ts +FNF:0 +FNH:0 +DA:1,0 +DA:6,0 +DA:9,0 +DA:14,0 +DA:24,0 +DA:26,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drawer/drawer.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:30,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drawer/drawer.reducers.ts +FN:16,(anonymous_19) +FN:21,(anonymous_20) +FN:31,(anonymous_21) +FN:36,(anonymous_22) +FN:42,(anonymous_23) +FN:48,(anonymous_24) +FN:54,(anonymous_25) +FN:62,(anonymous_26) +FN:70,(anonymous_27) +FN:76,(anonymous_28) +FN:82,(anonymous_29) +FN:92,(anonymous_30) +FN:97,(anonymous_31) +FN:105,(anonymous_32) +FN:114,(anonymous_33) +FN:123,(anonymous_34) +FN:132,(anonymous_35) +FN:135,(anonymous_36) +FN:142,(anonymous_37) +FN:150,(anonymous_38) +FN:160,(anonymous_39) +FN:163,(anonymous_40) +FN:170,(anonymous_41) +FN:178,(anonymous_42) +FNF:24 +FNH:0 +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +DA:1,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:54,0 +DA:58,0 +DA:59,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:82,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:97,0 +DA:101,0 +DA:102,0 +DA:105,0 +DA:109,0 +DA:110,0 +DA:111,0 +DA:114,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:123,0 +DA:127,0 +DA:128,0 +DA:129,0 +DA:132,0 +DA:135,0 +DA:136,0 +DA:137,0 +DA:142,0 +DA:143,0 +DA:144,0 +DA:150,0 +DA:151,0 +DA:152,0 +DA:160,0 +DA:163,0 +DA:164,0 +DA:165,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:178,0 +DA:179,0 +DA:180,0 +LF:85 +LH:0 +BRDA:136,0,0,0 +BRDA:136,0,1,0 +BRDA:143,1,0,0 +BRDA:143,1,1,0 +BRDA:146,2,0,0 +BRDA:146,2,1,0 +BRDA:151,3,0,0 +BRDA:151,3,1,0 +BRDA:164,4,0,0 +BRDA:164,4,1,0 +BRDA:171,5,0,0 +BRDA:171,5,1,0 +BRDA:174,6,0,0 +BRDA:174,6,1,0 +BRDA:179,7,0,0 +BRDA:179,7,1,0 +BRF:16 +BRH:0 +end_of_record +TN: +SF:src/redux/drawer/drawer.selectors.ts +FN:7,(anonymous_23) +FN:9,(anonymous_24) +FN:13,(anonymous_25) +FN:18,(anonymous_26) +FN:23,(anonymous_27) +FN:28,(anonymous_28) +FN:33,(anonymous_29) +FN:38,(anonymous_30) +FN:43,(anonymous_31) +FN:48,(anonymous_32) +FN:53,(anonymous_33) +FN:59,(anonymous_34) +FN:68,(anonymous_35) +FN:78,(anonymous_36) +FN:84,(anonymous_37) +FN:87,(anonymous_38) +FN:95,(anonymous_39) +FN:97,(anonymous_40) +FN:113,(anonymous_41) +FN:119,(anonymous_42) +FN:124,(anonymous_43) +FN:129,(anonymous_44) +FN:134,(anonymous_45) +FN:139,(anonymous_46) +FN:142,(anonymous_47) +FN:146,(anonymous_48) +FNF:26 +FNH:0 +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:18,0 +DA:21,0 +DA:23,0 +DA:26,0 +DA:28,0 +DA:31,0 +DA:33,0 +DA:36,0 +DA:38,0 +DA:41,0 +DA:43,0 +DA:46,0 +DA:48,0 +DA:51,0 +DA:53,0 +DA:56,0 +DA:60,0 +DA:65,0 +DA:69,0 +DA:74,0 +DA:79,0 +DA:81,0 +DA:83,0 +DA:84,0 +DA:87,0 +DA:94,0 +DA:95,0 +DA:97,0 +DA:104,0 +DA:106,0 +DA:108,0 +DA:113,0 +DA:114,0 +DA:117,0 +DA:119,0 +DA:122,0 +DA:124,0 +DA:127,0 +DA:129,0 +DA:132,0 +DA:134,0 +DA:137,0 +DA:139,0 +DA:142,0 +DA:143,0 +DA:146,0 +DA:147,0 +DA:148,0 +DA:150,0 +LF:59 +LH:0 +BRDA:60,0,0,0 +BRDA:60,0,1,0 +BRDA:60,1,0,0 +BRDA:60,1,1,0 +BRDA:69,2,0,0 +BRDA:69,2,1,0 +BRDA:69,3,0,0 +BRDA:69,3,1,0 +BRDA:81,4,0,0 +BRDA:81,4,1,0 +BRDA:81,4,2,0 +BRDA:81,4,3,0 +BRDA:81,4,4,0 +BRDA:87,5,0,0 +BRDA:87,5,1,0 +BRDA:97,6,0,0 +BRDA:97,6,1,0 +BRDA:139,7,0,0 +BRDA:139,7,1,0 +BRDA:143,8,0,0 +BRDA:143,8,1,0 +BRDA:147,9,0,0 +BRF:22 +BRH:0 +end_of_record +TN: +SF:src/redux/drawer/drawer.slice.ts +FN:45,(anonymous_18) +FNF:1 +FNH:0 +FNDA:0,(anonymous_18) +DA:1,0 +DA:2,0 +DA:22,0 +DA:24,0 +DA:46,0 +DA:47,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:70,0 +LF:24 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drawer/drawer.thunks.ts +FN:18,(anonymous_3) +FN:23,(anonymous_4) +FN:29,(anonymous_5) +FN:32,(anonymous_6) +FN:39,(anonymous_7) +FN:43,(anonymous_8) +FN:56,(anonymous_9) +FN:61,(anonymous_10) +FN:67,(anonymous_11) +FN:72,(anonymous_12) +FN:82,(anonymous_13) +FN:86,(anonymous_14) +FNF:12 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:14,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:32,0 +DA:34,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:47,0 +DA:49,0 +DA:56,0 +DA:57,0 +DA:61,0 +DA:62,0 +DA:64,0 +DA:67,0 +DA:68,0 +DA:72,0 +DA:73,0 +DA:75,0 +DA:78,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:88,0 +DA:90,0 +DA:92,0 +LF:45 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drawer/drawerFixture.ts +FNF:0 +FNH:0 +DA:3,0 +DA:26,0 +DA:49,0 +DA:72,0 +DA:95,0 +DA:118,0 +DA:141,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drugs/drugs.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drugs/drugs.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drugs/drugs.reducers.ts +FN:6,(anonymous_4) +FN:7,(anonymous_5) +FN:15,(anonymous_6) +FN:16,(anonymous_7) +FN:22,(anonymous_8) +FN:23,(anonymous_9) +FN:31,(anonymous_10) +FN:32,(anonymous_11) +FN:36,(anonymous_12) +FN:39,(anonymous_13) +FN:45,(anonymous_14) +FNF:11 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:45,0 +DA:46,0 +DA:47,0 +LF:25 +LH:0 +BRDA:17,0,0,0 +BRDA:24,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/drugs/drugs.selectors.ts +FN:10,(anonymous_11) +FN:12,(anonymous_12) +FN:14,(anonymous_13) +FN:15,(anonymous_14) +FN:21,(anonymous_15) +FN:22,(anonymous_16) +FN:27,(anonymous_17) +FN:32,(anonymous_18) +FN:37,(anonymous_19) +FN:37,(anonymous_20) +FN:44,(anonymous_21) +FN:46,(anonymous_22) +FN:49,(anonymous_23) +FN:51,(anonymous_24) +FN:51,(anonymous_25) +FN:60,(anonymous_26) +FN:61,(anonymous_27) +FN:68,(anonymous_28) +FN:70,(anonymous_29) +FN:72,(anonymous_30) +FN:72,(anonymous_31) +FN:75,(anonymous_32) +FN:82,(anonymous_33) +FN:89,(anonymous_34) +FN:90,(anonymous_35) +FN:91,(anonymous_36) +FN:93,(anonymous_37) +FN:96,(anonymous_38) +FN:97,(anonymous_39) +FNF:29 +FNH:0 +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +DA:1,0 +DA:2,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:22,0 +DA:25,0 +DA:27,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:37,0 +DA:41,0 +DA:45,0 +DA:47,0 +DA:49,0 +DA:51,0 +DA:57,0 +DA:61,0 +DA:65,0 +DA:69,0 +DA:70,0 +DA:72,0 +DA:75,0 +DA:79,0 +DA:83,0 +DA:84,0 +DA:87,0 +DA:89,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:96,0 +DA:97,0 +LF:39 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRDA:33,1,0,0 +BRDA:33,2,0,0 +BRDA:33,2,1,0 +BRDA:37,3,0,0 +BRDA:37,3,1,0 +BRDA:45,4,0,0 +BRDA:45,4,1,0 +BRDA:47,5,0,0 +BRDA:47,5,1,0 +BRDA:49,6,0,0 +BRDA:49,6,1,0 +BRDA:61,7,0,0 +BRDA:61,7,1,0 +BRDA:69,8,0,0 +BRDA:69,8,1,0 +BRDA:70,9,0,0 +BRDA:70,9,1,0 +BRDA:83,10,0,0 +BRDA:88,11,0,0 +BRDA:88,11,1,0 +BRDA:91,12,0,0 +BRDA:91,12,1,0 +BRF:24 +BRH:0 +end_of_record +TN: +SF:src/redux/drugs/drugs.slice.ts +FN:17,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:5,0 +DA:11,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:25,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/drugs/drugs.thunks.ts +FN:15,(anonymous_3) +FN:33,(anonymous_4) +FN:35,(anonymous_5) +FN:42,(anonymous_6) +FN:46,(anonymous_7) +FN:48,(anonymous_8) +FN:51,(anonymous_9) +FNF:7 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:30,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:41,0 +DA:43,0 +DA:46,0 +DA:48,0 +DA:51,0 +DA:52,0 +DA:54,0 +LF:27 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:43,1,0,0 +BRDA:43,1,1,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/entityNumber/entityNumber.constants.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/entityNumber/entityNumber.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/entityNumber/entityNumber.reducers.ts +FN:8,(anonymous_3) +FN:12,(anonymous_4) +FN:20,(anonymous_5) +FNF:3 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:8,0 +DA:9,0 +DA:12,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +LF:10 +LH:0 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/entityNumber/entityNumber.selectors.ts +FN:4,(anonymous_4) +FN:8,(anonymous_5) +FN:12,(anonymous_6) +FN:13,(anonymous_7) +FNF:4 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:13,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/entityNumber/entityNumber.slice.ts +FN:15,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:6,0 +DA:8,0 +DA:18,0 +DA:20,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/export/export.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/export/export.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/export/export.reducers.ts +FN:5,(anonymous_3) +FN:6,(anonymous_4) +FN:9,(anonymous_5) +FN:12,(anonymous_6) +FN:17,(anonymous_7) +FN:18,(anonymous_8) +FN:21,(anonymous_9) +FN:24,(anonymous_10) +FNF:8 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +LF:15 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/export/export.slice.ts +FN:26,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:5,0 +DA:22,0 +DA:27,0 +DA:28,0 +DA:32,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/export/export.thunks.ts +FN:27,(anonymous_3) +FN:58,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:22,0 +DA:28,0 +DA:29,0 +DA:37,0 +DA:39,0 +DA:40,0 +DA:43,0 +DA:55,0 +DA:59,0 +DA:60,0 +DA:68,0 +DA:70,0 +DA:71,0 +DA:74,0 +LF:23 +LH:0 +BRDA:39,0,0,0 +BRDA:70,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/export/export.utils.ts +FN:3,(anonymous_4) +FN:13,(anonymous_5) +FNF:2 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +LF:23 +LH:0 +BRDA:24,0,0,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/glyphs/glyphs.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/glyphs/glyphs.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/glyphs/glyphs.reducers.ts +FN:5,(anonymous_1) +FN:6,(anonymous_2) +FN:9,(anonymous_3) +FN:13,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +LF:9 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/glyphs/glyphs.selectors.ts +FN:4,(anonymous_4) +FN:6,(anonymous_5) +FN:9,(anonymous_6) +FN:10,(anonymous_7) +FN:12,(anonymous_8) +FNF:5 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,0 +LF:9 +LH:0 +BRDA:11,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/glyphs/glyphs.slice.ts +FN:10,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:11,0 +DA:15,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/glyphs/glyphs.thunks.ts +FN:12,(anonymous_3) +FN:27,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:38,0 +LF:26 +LH:0 +BRDA:16,0,0,0 +BRDA:33,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/hooks/useAppDispatch.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/hooks/useAppSelector.ts +FNF:0 +FNH:0 +DA:1,0 +DA:6,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/layers.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/layers.mock.ts +FNF:0 +FNH:0 +DA:2,0 +DA:5,0 +DA:7,0 +DA:14,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/layers.reducers.ts +FN:19,(anonymous_21) +FN:20,(anonymous_22) +FN:28,(anonymous_23) +FN:38,(anonymous_24) +FN:48,(anonymous_25) +FN:49,(anonymous_26) +FN:77,(anonymous_27) +FN:88,(anonymous_28) +FN:94,(anonymous_29) +FN:95,(anonymous_30) +FN:110,(anonymous_31) +FN:111,(anonymous_32) +FN:126,(anonymous_33) +FN:140,(anonymous_34) +FN:152,(anonymous_35) +FN:158,(anonymous_36) +FN:170,(anonymous_37) +FN:176,(anonymous_38) +FN:191,(anonymous_39) +FN:207,(anonymous_40) +FN:223,(anonymous_41) +FN:239,(anonymous_42) +FN:255,(anonymous_43) +FN:271,(anonymous_44) +FN:287,(anonymous_45) +FN:299,(anonymous_46) +FN:311,(anonymous_47) +FN:327,(anonymous_48) +FNF:28 +FNH:0 +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +DA:8,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:62,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:77,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:86,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:94,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:106,0 +DA:110,0 +DA:111,0 +DA:112,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:122,0 +DA:126,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:133,0 +DA:135,0 +DA:136,0 +DA:140,0 +DA:144,0 +DA:145,0 +DA:146,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:158,0 +DA:162,0 +DA:163,0 +DA:164,0 +DA:166,0 +DA:167,0 +DA:168,0 +DA:170,0 +DA:171,0 +DA:172,0 +DA:176,0 +DA:180,0 +DA:181,0 +DA:182,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:188,0 +DA:191,0 +DA:195,0 +DA:196,0 +DA:197,0 +DA:198,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:204,0 +DA:207,0 +DA:211,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:216,0 +DA:217,0 +DA:218,0 +DA:220,0 +DA:223,0 +DA:227,0 +DA:228,0 +DA:229,0 +DA:230,0 +DA:232,0 +DA:233,0 +DA:234,0 +DA:236,0 +DA:239,0 +DA:243,0 +DA:244,0 +DA:245,0 +DA:246,0 +DA:248,0 +DA:249,0 +DA:250,0 +DA:252,0 +DA:255,0 +DA:259,0 +DA:260,0 +DA:261,0 +DA:262,0 +DA:264,0 +DA:265,0 +DA:266,0 +DA:268,0 +DA:271,0 +DA:275,0 +DA:276,0 +DA:277,0 +DA:278,0 +DA:280,0 +DA:281,0 +DA:282,0 +DA:284,0 +DA:287,0 +DA:291,0 +DA:292,0 +DA:293,0 +DA:294,0 +DA:296,0 +DA:299,0 +DA:303,0 +DA:304,0 +DA:305,0 +DA:306,0 +DA:308,0 +DA:311,0 +DA:315,0 +DA:316,0 +DA:317,0 +DA:318,0 +DA:320,0 +DA:321,0 +DA:322,0 +DA:324,0 +DA:327,0 +DA:331,0 +DA:332,0 +DA:333,0 +DA:334,0 +DA:336,0 +LF:186 +LH:0 +BRDA:22,0,0,0 +BRDA:22,0,1,0 +BRDA:30,1,0,0 +BRDA:30,1,1,0 +BRDA:31,2,0,0 +BRDA:31,2,1,0 +BRDA:40,3,0,0 +BRDA:40,3,1,0 +BRDA:53,4,0,0 +BRDA:53,5,0,0 +BRDA:53,5,1,0 +BRDA:57,6,0,0 +BRDA:71,7,0,0 +BRDA:83,8,0,0 +BRDA:89,9,0,0 +BRDA:99,10,0,0 +BRDA:99,11,0,0 +BRDA:99,11,1,0 +BRDA:103,12,0,0 +BRDA:115,13,0,0 +BRDA:115,14,0,0 +BRDA:115,14,1,0 +BRDA:119,15,0,0 +BRDA:132,16,0,0 +BRDA:135,17,0,0 +BRDA:145,18,0,0 +BRDA:149,19,0,0 +BRDA:153,20,0,0 +BRDA:163,21,0,0 +BRDA:167,22,0,0 +BRDA:171,23,0,0 +BRDA:181,24,0,0 +BRDA:185,25,0,0 +BRDA:197,26,0,0 +BRDA:201,27,0,0 +BRDA:213,28,0,0 +BRDA:217,29,0,0 +BRDA:229,30,0,0 +BRDA:233,31,0,0 +BRDA:245,32,0,0 +BRDA:249,33,0,0 +BRDA:261,34,0,0 +BRDA:265,35,0,0 +BRDA:277,36,0,0 +BRDA:281,37,0,0 +BRDA:293,38,0,0 +BRDA:305,39,0,0 +BRDA:317,40,0,0 +BRDA:321,41,0,0 +BRDA:333,42,0,0 +BRF:50 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/layers.selectors.ts +FN:7,(anonymous_16) +FN:12,(anonymous_17) +FN:17,(anonymous_18) +FN:22,(anonymous_19) +FN:26,(anonymous_20) +FN:27,(anonymous_21) +FN:32,(anonymous_22) +FN:37,(anonymous_23) +FN:42,(anonymous_24) +FN:47,(anonymous_25) +FN:57,(anonymous_26) +FN:58,(anonymous_27) +FN:63,(anonymous_28) +FN:74,(anonymous_29) +FN:75,(anonymous_30) +FN:80,(anonymous_31) +FN:91,(anonymous_32) +FN:92,(anonymous_33) +FN:97,(anonymous_34) +FN:108,(anonymous_35) +FN:109,(anonymous_36) +FN:114,(anonymous_37) +FN:124,(anonymous_38) +FN:125,(anonymous_39) +FN:129,(anonymous_40) +FN:133,(anonymous_41) +FN:134,(anonymous_42) +FN:147,(anonymous_43) +FN:148,(anonymous_44) +FN:152,(anonymous_45) +FN:156,(anonymous_46) +FN:157,(anonymous_47) +FNF:32 +FNH:0 +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +DA:2,0 +DA:3,0 +DA:4,0 +DA:7,0 +DA:9,0 +DA:12,0 +DA:15,0 +DA:17,0 +DA:20,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:32,0 +DA:35,0 +DA:37,0 +DA:40,0 +DA:42,0 +DA:45,0 +DA:48,0 +DA:49,0 +DA:51,0 +DA:55,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:68,0 +DA:72,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:85,0 +DA:89,0 +DA:92,0 +DA:93,0 +DA:94,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:102,0 +DA:106,0 +DA:109,0 +DA:110,0 +DA:111,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:119,0 +DA:123,0 +DA:124,0 +DA:126,0 +DA:127,0 +DA:129,0 +DA:130,0 +DA:131,0 +DA:133,0 +DA:134,0 +DA:136,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:142,0 +DA:146,0 +DA:147,0 +DA:149,0 +DA:150,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:156,0 +DA:157,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:162,0 +DA:163,0 +DA:165,0 +LF:89 +LH:0 +BRDA:17,0,0,0 +BRDA:17,0,1,0 +BRDA:22,1,0,0 +BRDA:22,1,1,0 +BRDA:37,2,0,0 +BRDA:37,2,1,0 +BRDA:42,3,0,0 +BRDA:42,3,1,0 +BRDA:48,4,0,0 +BRDA:48,5,0,0 +BRDA:48,5,1,0 +BRDA:59,6,0,0 +BRDA:64,7,0,0 +BRDA:64,8,0,0 +BRDA:64,8,1,0 +BRDA:76,9,0,0 +BRDA:81,10,0,0 +BRDA:81,11,0,0 +BRDA:81,11,1,0 +BRDA:93,12,0,0 +BRDA:98,13,0,0 +BRDA:98,14,0,0 +BRDA:98,14,1,0 +BRDA:110,15,0,0 +BRDA:115,16,0,0 +BRDA:115,17,0,0 +BRDA:115,17,1,0 +BRDA:126,18,0,0 +BRDA:126,19,0,0 +BRDA:126,19,1,0 +BRDA:126,19,2,0 +BRDA:130,20,0,0 +BRDA:133,21,0,0 +BRDA:134,22,0,0 +BRDA:134,22,1,0 +BRDA:134,23,0,0 +BRDA:134,23,1,0 +BRDA:149,24,0,0 +BRDA:149,25,0,0 +BRDA:149,25,1,0 +BRDA:149,25,2,0 +BRDA:153,26,0,0 +BRDA:156,27,0,0 +BRDA:157,28,0,0 +BRDA:157,28,1,0 +BRDA:157,29,0,0 +BRDA:157,29,1,0 +BRF:47 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/layers.slice.ts +FN:45,(anonymous_18) +FNF:1 +FNH:0 +FNDA:0,(anonymous_18) +DA:1,0 +DA:2,0 +DA:23,0 +DA:25,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:71,0 +LF:25 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/layers.thunks.ts +FN:38,(anonymous_20) +FN:55,(anonymous_21) +FN:63,(anonymous_22) +FN:82,(anonymous_23) +FN:91,(anonymous_24) +FN:96,(anonymous_25) +FN:97,(anonymous_26) +FN:98,(anonymous_27) +FN:115,(anonymous_28) +FN:134,(anonymous_29) +FN:156,(anonymous_30) +FN:173,(anonymous_31) +FN:199,(anonymous_32) +FN:236,(anonymous_33) +FN:264,(anonymous_34) +FN:285,(anonymous_35) +FN:311,(anonymous_36) +FN:328,(anonymous_37) +FN:358,(anonymous_38) +FN:412,(anonymous_39) +FN:447,(anonymous_40) +FN:476,(anonymous_41) +FN:493,(anonymous_42) +FN:516,(anonymous_43) +FNF:24 +FNH:0 +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:34,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:45,0 +DA:47,0 +DA:51,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:62,0 +DA:65,0 +DA:72,0 +DA:82,0 +DA:83,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:95,0 +DA:96,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:109,0 +DA:113,0 +DA:116,0 +DA:117,0 +DA:123,0 +DA:125,0 +DA:127,0 +DA:132,0 +DA:135,0 +DA:136,0 +DA:143,0 +DA:145,0 +DA:147,0 +DA:152,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:161,0 +DA:165,0 +DA:174,0 +DA:175,0 +DA:178,0 +DA:180,0 +DA:182,0 +DA:186,0 +DA:200,0 +DA:201,0 +DA:212,0 +DA:214,0 +DA:216,0 +DA:220,0 +DA:237,0 +DA:238,0 +DA:249,0 +DA:250,0 +DA:251,0 +DA:253,0 +DA:255,0 +DA:260,0 +DA:265,0 +DA:266,0 +DA:269,0 +DA:271,0 +DA:275,0 +DA:286,0 +DA:287,0 +DA:295,0 +DA:297,0 +DA:299,0 +DA:303,0 +DA:312,0 +DA:313,0 +DA:316,0 +DA:318,0 +DA:320,0 +DA:324,0 +DA:329,0 +DA:330,0 +DA:331,0 +DA:333,0 +DA:337,0 +DA:374,0 +DA:375,0 +DA:391,0 +DA:392,0 +DA:393,0 +DA:395,0 +DA:397,0 +DA:402,0 +DA:413,0 +DA:414,0 +DA:422,0 +DA:424,0 +DA:426,0 +DA:430,0 +DA:448,0 +DA:449,0 +DA:461,0 +DA:462,0 +DA:463,0 +DA:465,0 +DA:467,0 +DA:472,0 +DA:477,0 +DA:478,0 +DA:479,0 +DA:481,0 +DA:485,0 +DA:494,0 +DA:495,0 +DA:498,0 +DA:500,0 +DA:502,0 +DA:506,0 +DA:517,0 +DA:518,0 +DA:526,0 +DA:528,0 +DA:530,0 +LF:142 +LH:0 +BRDA:45,0,0,0 +BRDA:45,0,1,0 +BRDA:59,1,0,0 +BRDA:84,2,0,0 +BRDA:84,2,1,0 +BRDA:84,2,2,0 +BRDA:84,2,3,0 +BRDA:84,2,4,0 +BRDA:125,3,0,0 +BRDA:125,3,1,0 +BRDA:145,4,0,0 +BRDA:145,4,1,0 +BRDA:180,5,0,0 +BRDA:180,5,1,0 +BRDA:214,6,0,0 +BRDA:214,6,1,0 +BRDA:250,7,0,0 +BRDA:297,8,0,0 +BRDA:297,8,1,0 +BRDA:318,9,0,0 +BRDA:318,9,1,0 +BRDA:392,10,0,0 +BRDA:424,11,0,0 +BRDA:424,11,1,0 +BRDA:462,12,0,0 +BRDA:500,13,0,0 +BRDA:500,13,1,0 +BRDA:528,14,0,0 +BRDA:528,14,1,0 +BRF:29 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/utils/setLayerOval.ts +FN:4,setLayerOval +FNF:1 +FNH:0 +FNDA:0,setLayerOval +DA:4,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +LF:5 +LH:0 +BRDA:14,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/layers/utils/setLayerRect.ts +FN:4,setLayerRect +FNF:1 +FNH:0 +FNDA:0,setLayerRect +DA:4,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +LF:5 +LH:0 +BRDA:14,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/legend/legend.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:5,0 +DA:11,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/legend/legend.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/legend/legend.reducers.ts +FN:5,(anonymous_7) +FN:9,(anonymous_8) +FN:13,(anonymous_9) +FN:20,(anonymous_10) +FN:24,(anonymous_11) +FN:39,(anonymous_12) +FNF:6 +FNH:0 +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:3,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:24,0 +DA:33,0 +DA:39,0 +DA:43,0 +DA:44,0 +LF:14 +LH:0 +BRDA:43,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/legend/legend.selectors.ts +FN:8,(anonymous_8) +FN:10,(anonymous_9) +FN:12,(anonymous_10) +FN:17,(anonymous_11) +FN:19,(anonymous_12) +FN:32,(anonymous_13) +FN:33,(anonymous_14) +FN:34,(anonymous_15) +FN:46,(anonymous_16) +FN:49,(anonymous_17) +FN:50,(anonymous_18) +FNF:11 +FNH:0 +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:25,0 +DA:29,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:42,0 +DA:46,0 +DA:48,0 +DA:49,0 +DA:50,0 +LF:24 +LH:0 +BRDA:18,0,0,0 +BRDA:21,1,0,0 +BRDA:22,2,0,0 +BRDA:22,2,1,0 +BRDA:37,3,0,0 +BRDA:37,3,1,0 +BRDA:38,4,0,0 +BRDA:38,4,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/redux/legend/legend.slice.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:10,0 +DA:12,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:34,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:7,0 +DA:9,0 +DA:12,0 +DA:14,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:27,0 +DA:63,0 +DA:65,0 +DA:69,0 +DA:71,0 +DA:78,0 +DA:80,0 +DA:82,0 +DA:84,0 +LF:18 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.enums.ts +FN:2,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:7,0 +LF:2 +LH:0 +BRDA:2,0,0,0 +BRDA:2,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.fixtures.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:7,0 +DA:11,0 +DA:21,0 +DA:58,0 +DA:65,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.reducers.ts +FN:25,(anonymous_17) +FN:34,(anonymous_18) +FN:66,(anonymous_19) +FN:87,(anonymous_20) +FN:104,(anonymous_21) +FN:112,(anonymous_22) +FN:120,(anonymous_23) +FN:122,(anonymous_24) +FN:128,(anonymous_25) +FN:133,(anonymous_26) +FN:147,(anonymous_27) +FN:153,(anonymous_28) +FN:175,(anonymous_29) +FN:177,(anonymous_30) +FN:181,(anonymous_31) +FN:186,(anonymous_32) +FN:191,(anonymous_33) +FN:199,(anonymous_34) +FN:200,(anonymous_35) +FN:206,(anonymous_36) +FN:207,(anonymous_37) +FN:212,(anonymous_38) +FN:213,(anonymous_39) +FN:219,(anonymous_40) +FN:220,(anonymous_41) +FNF:25 +FNH:0 +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +DA:1,0 +DA:2,0 +DA:4,0 +DA:10,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:43,0 +DA:50,0 +DA:51,0 +DA:57,0 +DA:66,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:76,0 +DA:77,0 +DA:83,0 +DA:84,0 +DA:87,0 +DA:91,0 +DA:93,0 +DA:94,0 +DA:100,0 +DA:101,0 +DA:104,0 +DA:108,0 +DA:109,0 +DA:112,0 +DA:116,0 +DA:117,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:133,0 +DA:137,0 +DA:139,0 +DA:144,0 +DA:147,0 +DA:151,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:155,0 +DA:157,0 +DA:158,0 +DA:159,0 +DA:162,0 +DA:163,0 +DA:164,0 +DA:167,0 +DA:172,0 +DA:175,0 +DA:176,0 +DA:177,0 +DA:181,0 +DA:185,0 +DA:186,0 +DA:188,0 +DA:191,0 +DA:192,0 +DA:193,0 +DA:196,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:206,0 +DA:207,0 +DA:208,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:215,0 +DA:219,0 +DA:220,0 +DA:221,0 +LF:92 +LH:0 +BRDA:26,0,0,0 +BRDA:26,0,1,0 +BRDA:35,1,0,0 +BRDA:35,1,1,0 +BRDA:39,2,0,0 +BRDA:39,2,1,0 +BRDA:42,3,0,0 +BRDA:42,4,0,0 +BRDA:42,4,1,0 +BRDA:50,5,0,0 +BRDA:50,6,0,0 +BRDA:50,6,1,0 +BRDA:50,6,2,0 +BRDA:72,7,0,0 +BRDA:72,7,1,0 +BRDA:76,8,0,0 +BRDA:93,9,0,0 +BRDA:123,10,0,0 +BRDA:157,11,0,0 +BRDA:162,12,0,0 +BRDA:192,13,0,0 +BRF:21 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.selectors.ts +FN:4,(anonymous_13) +FN:6,(anonymous_14) +FN:8,(anonymous_15) +FN:10,(anonymous_16) +FN:12,(anonymous_17) +FN:14,(anonymous_18) +FN:17,(anonymous_19) +FN:21,(anonymous_20) +FN:22,(anonymous_21) +FN:23,(anonymous_22) +FN:28,(anonymous_23) +FN:33,(anonymous_24) +FN:36,(anonymous_25) +FN:38,(anonymous_26) +FNF:14 +FNH:0 +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:26,0 +DA:28,0 +DA:31,0 +DA:33,0 +DA:36,0 +DA:38,0 +LF:19 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.slice.ts +FN:39,(anonymous_14) +FNF:1 +FNH:0 +FNDA:0,(anonymous_14) +DA:1,0 +DA:2,0 +DA:20,0 +DA:22,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:62,0 +LF:22 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/map.thunks.ts +FN:42,(anonymous_11) +FN:56,(anonymous_12) +FN:62,(anonymous_13) +FN:72,(anonymous_14) +FN:114,(anonymous_15) +FN:138,(anonymous_16) +FN:164,(anonymous_17) +FN:178,(anonymous_18) +FN:192,(anonymous_19) +FN:205,(anonymous_20) +FNF:10 +FNH:0 +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:30,0 +DA:38,0 +DA:42,0 +DA:43,0 +DA:45,0 +DA:46,0 +DA:49,0 +DA:50,0 +DA:53,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:63,0 +DA:66,0 +DA:69,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:78,0 +DA:79,0 +DA:85,0 +DA:91,0 +DA:93,0 +DA:94,0 +DA:100,0 +DA:101,0 +DA:108,0 +DA:114,0 +DA:118,0 +DA:119,0 +DA:120,0 +DA:122,0 +DA:123,0 +DA:126,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:142,0 +DA:146,0 +DA:148,0 +DA:149,0 +DA:155,0 +DA:160,0 +DA:165,0 +DA:166,0 +DA:168,0 +DA:170,0 +DA:174,0 +DA:179,0 +DA:180,0 +DA:182,0 +DA:184,0 +DA:188,0 +DA:193,0 +DA:194,0 +DA:195,0 +DA:197,0 +DA:201,0 +DA:206,0 +DA:207,0 +DA:209,0 +DA:211,0 +LF:74 +LH:0 +BRDA:45,0,0,0 +BRDA:45,1,0,0 +BRDA:45,1,1,0 +BRDA:49,2,0,0 +BRDA:59,3,0,0 +BRDA:59,3,1,0 +BRDA:59,3,2,0 +BRDA:60,4,0,0 +BRDA:61,5,0,0 +BRDA:78,6,0,0 +BRDA:86,7,0,0 +BRDA:86,7,1,0 +BRDA:87,8,0,0 +BRDA:87,8,1,0 +BRDA:88,9,0,0 +BRDA:88,9,1,0 +BRDA:91,10,0,0 +BRDA:91,10,1,0 +BRDA:93,11,0,0 +BRDA:93,12,0,0 +BRDA:93,12,1,0 +BRDA:100,13,0,0 +BRDA:100,14,0,0 +BRDA:100,14,1,0 +BRDA:122,15,0,0 +BRDA:127,16,0,0 +BRDA:127,16,1,0 +BRDA:129,17,0,0 +BRDA:129,17,1,0 +BRDA:130,18,0,0 +BRDA:130,18,1,0 +BRDA:131,19,0,0 +BRDA:131,19,1,0 +BRDA:132,20,0,0 +BRDA:132,20,1,0 +BRDA:133,21,0,0 +BRDA:133,21,1,0 +BRDA:148,22,0,0 +BRDA:150,23,0,0 +BRDA:150,23,1,0 +BRDA:151,24,0,0 +BRDA:151,24,1,0 +BRF:42 +BRH:0 +end_of_record +TN: +SF:src/redux/map/middleware/checkIfIsMapUpdateActionValid.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/middleware/getModelIdFromAction.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +LF:5 +LH:0 +BRDA:5,0,0,0 +BRDA:5,0,1,0 +BRDA:6,1,0,0 +BRDA:6,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/map/middleware/getUpdatedModel.ts +FN:7,(anonymous_1) +FN:11,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/map/middleware/map.middleware.ts +FN:21,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:4,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:41,0 +DA:42,0 +DA:45,0 +LF:21 +LH:0 +BRDA:29,0,0,0 +BRDA:29,1,0,0 +BRDA:29,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/mapEditTools/mapEditTools.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/mapEditTools/mapEditTools.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/mapEditTools/mapEditTools.reducers.ts +FN:7,(anonymous_3) +FN:14,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:7,0 +DA:11,0 +DA:14,0 +DA:18,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/mapEditTools/mapEditTools.selectors.ts +FN:5,(anonymous_5) +FN:9,(anonymous_6) +FN:14,(anonymous_7) +FN:17,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:12,0 +DA:14,0 +DA:17,0 +DA:18,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/mapEditTools/mapEditTools.slice.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:6,0 +DA:8,0 +DA:17,0 +DA:19,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/markers/markers.constants.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/markers/markers.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/markers/markers.reducers.ts +FN:5,(anonymous_4) +FN:14,(anonymous_5) +FN:23,(anonymous_6) +FN:29,(anonymous_7) +FNF:4 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:5,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:18,0 +DA:20,0 +DA:23,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:31,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/markers/markers.selectors.ts +FN:7,(anonymous_9) +FN:9,(anonymous_10) +FN:14,(anonymous_11) +FN:14,(anonymous_12) +FN:17,(anonymous_13) +FN:18,(anonymous_14) +FN:23,(anonymous_15) +FN:25,(anonymous_16) +FN:26,(anonymous_17) +FN:31,(anonymous_18) +FN:32,(anonymous_19) +FN:37,(anonymous_20) +FN:42,(anonymous_21) +FNF:13 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:31,0 +DA:32,0 +DA:35,0 +DA:37,0 +DA:40,0 +DA:42,0 +LF:20 +LH:0 +BRDA:14,0,0,0 +BRDA:14,0,1,0 +BRDA:27,1,0,0 +BRDA:27,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/markers/markers.slice.ts +FN:17,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:7,0 +DA:9,0 +DA:20,0 +DA:21,0 +DA:23,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/markers/markers.utils.ts +FN:3,(anonymous_3) +FN:6,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +LF:4 +LH:0 +BRDA:4,0,0,0 +BRDA:4,0,1,0 +BRDA:4,0,2,0 +BRDA:4,0,3,0 +BRDA:8,1,0,0 +BRDA:8,1,1,0 +BRDA:8,1,2,0 +BRDA:8,1,3,0 +BRDA:8,1,4,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/redux/middlewares/error.middleware.ts +FN:14,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:34,0 +DA:35,0 +DA:40,0 +LF:20 +LH:0 +BRDA:18,0,0,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRDA:19,2,0,0 +BRDA:19,2,1,0 +BRDA:22,3,0,0 +BRDA:22,3,1,0 +BRDA:22,4,0,0 +BRDA:22,4,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/redux/modal/modal.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/modal/modal.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/modal/modal.reducers.ts +FN:11,(anonymous_25) +FN:18,(anonymous_26) +FN:23,(anonymous_27) +FN:28,(anonymous_28) +FN:40,(anonymous_29) +FN:52,(anonymous_30) +FN:58,(anonymous_31) +FN:64,(anonymous_32) +FN:70,(anonymous_33) +FN:82,(anonymous_34) +FN:88,(anonymous_35) +FN:96,(anonymous_36) +FN:105,(anonymous_37) +FN:111,(anonymous_38) +FN:121,(anonymous_39) +FN:131,(anonymous_40) +FN:137,(anonymous_41) +FN:143,(anonymous_42) +FN:157,(anonymous_43) +FN:167,(anonymous_44) +FN:173,(anonymous_45) +FN:183,(anonymous_46) +FN:189,(anonymous_47) +FN:199,(anonymous_48) +FN:205,(anonymous_49) +FNF:25 +FNH:0 +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:40,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:70,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:96,0 +DA:100,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:111,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:118,0 +DA:121,0 +DA:125,0 +DA:126,0 +DA:127,0 +DA:128,0 +DA:131,0 +DA:132,0 +DA:133,0 +DA:134,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:140,0 +DA:143,0 +DA:147,0 +DA:148,0 +DA:149,0 +DA:150,0 +DA:151,0 +DA:153,0 +DA:157,0 +DA:161,0 +DA:162,0 +DA:163,0 +DA:164,0 +DA:167,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:173,0 +DA:177,0 +DA:178,0 +DA:179,0 +DA:180,0 +DA:183,0 +DA:184,0 +DA:185,0 +DA:186,0 +DA:189,0 +DA:193,0 +DA:194,0 +DA:195,0 +DA:196,0 +DA:199,0 +DA:200,0 +DA:201,0 +DA:202,0 +DA:205,0 +DA:209,0 +DA:210,0 +DA:211,0 +DA:212,0 +LF:109 +LH:0 +BRDA:12,0,0,0 +BRDA:89,1,0,0 +BRDA:150,2,0,0 +BRDA:150,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/modal/modal.selector.ts +FN:5,(anonymous_13) +FN:7,(anonymous_14) +FN:11,(anonymous_15) +FN:16,(anonymous_16) +FN:21,(anonymous_17) +FN:26,(anonymous_18) +FN:31,(anonymous_19) +FN:36,(anonymous_20) +FN:41,(anonymous_21) +FN:46,(anonymous_22) +FN:51,(anonymous_23) +FN:56,(anonymous_24) +FNF:12 +FNH:0 +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:16,0 +DA:19,0 +DA:21,0 +DA:24,0 +DA:26,0 +DA:29,0 +DA:31,0 +DA:34,0 +DA:36,0 +DA:39,0 +DA:41,0 +DA:44,0 +DA:46,0 +DA:49,0 +DA:51,0 +DA:54,0 +DA:56,0 +LF:25 +LH:0 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRDA:36,2,0,0 +BRDA:36,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/modal/modal.slice.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:28,0 +DA:30,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:75,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:88,0 +LF:30 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/modelElements/modelElements.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +DA:7,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/modelElements/modelElements.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:19,0 +DA:24,0 +DA:30,0 +DA:38,0 +DA:40,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/modelElements/modelElements.reducers.ts +FN:15,(anonymous_7) +FN:18,(anonymous_8) +FN:26,(anonymous_9) +FN:36,(anonymous_10) +FN:46,(anonymous_11) +FN:49,(anonymous_12) +FN:57,(anonymous_13) +FN:59,(anonymous_14) +FN:62,(anonymous_15) +FN:69,(anonymous_16) +FN:71,(anonymous_17) +FN:79,(anonymous_18) +FN:82,(anonymous_19) +FN:86,(anonymous_20) +FN:89,(anonymous_21) +FN:94,(anonymous_22) +FN:112,(anonymous_23) +FN:116,(anonymous_24) +FN:132,(anonymous_25) +FNF:19 +FNH:0 +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +DA:6,0 +DA:11,0 +DA:12,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:41,0 +DA:46,0 +DA:49,0 +DA:50,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:61,0 +DA:62,0 +DA:66,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:73,0 +DA:74,0 +DA:79,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:86,0 +DA:87,0 +DA:89,0 +DA:90,0 +DA:94,0 +DA:98,0 +DA:112,0 +DA:116,0 +DA:117,0 +DA:129,0 +DA:132,0 +DA:133,0 +DA:134,0 +LF:52 +LH:0 +BRDA:20,0,0,0 +BRDA:20,0,1,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:29,2,0,0 +BRDA:29,2,1,0 +BRDA:38,3,0,0 +BRDA:38,3,1,0 +BRDA:61,4,0,0 +BRDA:73,5,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/redux/modelElements/modelElements.selector.ts +FN:20,(anonymous_28) +FN:25,(anonymous_29) +FN:31,(anonymous_30) +FN:35,(anonymous_31) +FN:36,(anonymous_32) +FN:41,(anonymous_33) +FN:46,(anonymous_34) +FN:46,(anonymous_35) +FN:51,(anonymous_36) +FN:56,(anonymous_37) +FN:56,(anonymous_38) +FN:62,(anonymous_39) +FN:64,(anonymous_40) +FN:69,(anonymous_41) +FN:79,(anonymous_42) +FN:80,(anonymous_43) +FN:86,(anonymous_44) +FN:88,(anonymous_45) +FN:91,(anonymous_46) +FN:102,(anonymous_47) +FN:103,(anonymous_48) +FN:109,(anonymous_49) +FN:114,(anonymous_50) +FN:119,(anonymous_51) +FN:119,(anonymous_52) +FN:125,(anonymous_53) +FN:127,(anonymous_54) +FN:129,(anonymous_55) +FN:130,(anonymous_56) +FN:137,(anonymous_57) +FN:142,(anonymous_58) +FN:150,(anonymous_59) +FN:152,(anonymous_60) +FN:155,(anonymous_61) +FN:157,(anonymous_62) +FN:158,(anonymous_63) +FN:164,(anonymous_64) +FN:169,(anonymous_65) +FN:174,(anonymous_66) +FN:180,(anonymous_67) +FN:182,(anonymous_68) +FN:183,(anonymous_69) +FN:189,(anonymous_70) +FN:190,(anonymous_71) +FN:197,(anonymous_72) +FN:198,(anonymous_73) +FN:201,(anonymous_74) +FN:202,(anonymous_75) +FN:211,(anonymous_76) +FN:212,(anonymous_77) +FN:214,(anonymous_78) +FN:226,(anonymous_79) +FN:234,(anonymous_80) +FN:235,(anonymous_81) +FN:241,(anonymous_82) +FN:244,(anonymous_83) +FNF:56 +FNH:0 +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +FNDA:0,(anonymous_48) +FNDA:0,(anonymous_49) +FNDA:0,(anonymous_50) +FNDA:0,(anonymous_51) +FNDA:0,(anonymous_52) +FNDA:0,(anonymous_53) +FNDA:0,(anonymous_54) +FNDA:0,(anonymous_55) +FNDA:0,(anonymous_56) +FNDA:0,(anonymous_57) +FNDA:0,(anonymous_58) +FNDA:0,(anonymous_59) +FNDA:0,(anonymous_60) +FNDA:0,(anonymous_61) +FNDA:0,(anonymous_62) +FNDA:0,(anonymous_63) +FNDA:0,(anonymous_64) +FNDA:0,(anonymous_65) +FNDA:0,(anonymous_66) +FNDA:0,(anonymous_67) +FNDA:0,(anonymous_68) +FNDA:0,(anonymous_69) +FNDA:0,(anonymous_70) +FNDA:0,(anonymous_71) +FNDA:0,(anonymous_72) +FNDA:0,(anonymous_73) +FNDA:0,(anonymous_74) +FNDA:0,(anonymous_75) +FNDA:0,(anonymous_76) +FNDA:0,(anonymous_77) +FNDA:0,(anonymous_78) +FNDA:0,(anonymous_79) +FNDA:0,(anonymous_80) +FNDA:0,(anonymous_81) +FNDA:0,(anonymous_82) +FNDA:0,(anonymous_83) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:23,0 +DA:25,0 +DA:28,0 +DA:31,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:39,0 +DA:41,0 +DA:44,0 +DA:46,0 +DA:49,0 +DA:51,0 +DA:54,0 +DA:56,0 +DA:59,0 +DA:62,0 +DA:65,0 +DA:66,0 +DA:68,0 +DA:70,0 +DA:76,0 +DA:80,0 +DA:84,0 +DA:87,0 +DA:88,0 +DA:89,0 +DA:91,0 +DA:95,0 +DA:99,0 +DA:103,0 +DA:107,0 +DA:109,0 +DA:112,0 +DA:114,0 +DA:117,0 +DA:119,0 +DA:122,0 +DA:126,0 +DA:127,0 +DA:129,0 +DA:130,0 +DA:134,0 +DA:141,0 +DA:142,0 +DA:146,0 +DA:151,0 +DA:153,0 +DA:155,0 +DA:157,0 +DA:158,0 +DA:162,0 +DA:164,0 +DA:167,0 +DA:169,0 +DA:172,0 +DA:174,0 +DA:177,0 +DA:181,0 +DA:182,0 +DA:183,0 +DA:187,0 +DA:190,0 +DA:194,0 +DA:198,0 +DA:199,0 +DA:201,0 +DA:202,0 +DA:204,0 +DA:208,0 +DA:212,0 +DA:213,0 +DA:214,0 +DA:217,0 +DA:225,0 +DA:226,0 +DA:231,0 +DA:235,0 +DA:238,0 +DA:242,0 +DA:243,0 +DA:245,0 +DA:250,0 +LF:94 +LH:0 +BRDA:36,0,0,0 +BRDA:36,0,1,0 +BRDA:51,1,0,0 +BRDA:51,1,1,0 +BRDA:56,2,0,0 +BRDA:56,2,1,0 +BRDA:65,3,0,0 +BRDA:69,4,0,0 +BRDA:69,4,1,0 +BRDA:70,5,0,0 +BRDA:70,5,1,0 +BRDA:90,6,0,0 +BRDA:90,6,1,0 +BRDA:119,7,0,0 +BRDA:119,7,1,0 +BRDA:127,8,0,0 +BRDA:127,8,1,0 +BRDA:153,9,0,0 +BRDA:153,9,1,0 +BRDA:155,10,0,0 +BRDA:155,10,1,0 +BRDA:174,11,0,0 +BRDA:174,11,1,0 +BRDA:199,12,0,0 +BRDA:199,12,1,0 +BRDA:212,13,0,0 +BRDA:212,13,1,0 +BRDA:213,14,0,0 +BRDA:213,14,1,0 +BRDA:242,15,0,0 +BRDA:245,16,0,0 +BRDA:245,16,1,0 +BRDA:245,16,2,0 +BRF:33 +BRH:0 +end_of_record +TN: +SF:src/redux/modelElements/modelElements.slice.ts +FN:20,(anonymous_6) +FNF:1 +FNH:0 +FNDA:0,(anonymous_6) +DA:1,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:27,0 +DA:28,0 +DA:30,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/modelElements/modelElements.thunks.ts +FN:27,(anonymous_4) +FN:45,(anonymous_5) +FN:54,(anonymous_6) +FN:71,(anonymous_7) +FN:73,(anonymous_8) +FN:84,(anonymous_9) +FN:86,(anonymous_10) +FN:87,(anonymous_11) +FN:89,(anonymous_12) +FNF:9 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:21,0 +DA:23,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:39,0 +DA:46,0 +DA:47,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:58,0 +DA:60,0 +DA:65,0 +DA:72,0 +DA:73,0 +DA:74,0 +DA:79,0 +DA:83,0 +DA:84,0 +DA:86,0 +DA:87,0 +DA:89,0 +DA:90,0 +DA:92,0 +DA:94,0 +LF:39 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRDA:45,1,0,0 +BRDA:53,2,0,0 +BRDA:53,3,0,0 +BRDA:53,3,1,0 +BRDA:58,4,0,0 +BRDA:58,4,1,0 +BRDA:84,5,0,0 +BRDA:84,5,1,0 +BRDA:87,6,0,0 +BRDA:87,6,1,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/redux/models/marker.mock.ts +FNF:0 +FNH:0 +DA:3,0 +DA:16,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/models/models.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/models/models.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +DA:10,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/models/models.reducers.ts +FN:6,(anonymous_1) +FN:7,(anonymous_2) +FN:10,(anonymous_3) +FN:14,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:15,0 +LF:9 +LH:0 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/models/models.selectors.ts +FN:8,(anonymous_15) +FN:10,(anonymous_16) +FN:15,(anonymous_17) +FN:15,(anonymous_18) +FN:18,(anonymous_19) +FN:19,(anonymous_20) +FN:22,(anonymous_21) +FN:23,(anonymous_22) +FN:26,(anonymous_23) +FN:27,(anonymous_24) +FN:32,(anonymous_25) +FN:35,(anonymous_26) +FN:38,(anonymous_27) +FN:43,(anonymous_28) +FN:47,(anonymous_29) +FN:48,(anonymous_30) +FN:48,(anonymous_31) +FN:54,(anonymous_32) +FN:56,(anonymous_33) +FN:60,(anonymous_34) +FN:64,(anonymous_35) +FNF:21 +FNH:0 +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:32,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:41,0 +DA:43,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:51,0 +DA:55,0 +DA:56,0 +DA:60,0 +DA:62,0 +DA:64,0 +LF:32 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRDA:48,3,0,0 +BRDA:48,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/redux/models/models.slice.ts +FN:15,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:5,0 +DA:11,0 +DA:16,0 +DA:20,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/models/models.thunks.ts +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +LF:13 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/newReactions/newReactions.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/newReactions/newReactions.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:6,0 +DA:8,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/newReactions/newReactions.reducers.ts +FN:7,(anonymous_1) +FN:10,(anonymous_2) +FN:18,(anonymous_3) +FN:28,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +LF:21 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRDA:21,2,0,0 +BRDA:21,2,1,0 +BRDA:30,3,0,0 +BRDA:30,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/redux/newReactions/newReactions.selectors.ts +FN:8,(anonymous_8) +FN:13,(anonymous_9) +FN:18,(anonymous_10) +FN:23,(anonymous_11) +FN:27,(anonymous_12) +FN:28,(anonymous_13) +FN:34,(anonymous_14) +FN:35,(anonymous_15) +FN:42,(anonymous_16) +FN:45,(anonymous_17) +FNF:10 +FNH:0 +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:13,0 +DA:16,0 +DA:18,0 +DA:21,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:31,0 +DA:35,0 +DA:39,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:51,0 +LF:22 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRDA:43,2,0,0 +BRDA:46,3,0,0 +BRDA:46,3,1,0 +BRDA:46,3,2,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/redux/newReactions/newReactions.slice.ts +FN:9,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:10,0 +DA:14,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/newReactions/newReactions.thunks.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:22,0 +DA:24,0 +LF:14 +LH:0 +BRDA:22,0,0,0 +BRDA:22,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.fixtures.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.reducers.ts +FN:5,(anonymous_1) +FN:6,(anonymous_2) +FN:9,(anonymous_3) +FN:16,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:16,0 +DA:17,0 +LF:11 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRDA:11,1,0,0 +BRDA:11,2,0,0 +BRDA:11,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.selectors.ts +FN:4,(anonymous_3) +FN:6,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.slice.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:5,0 +DA:12,0 +DA:17,0 +DA:21,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/oauth/oauth.thunks.ts +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +LF:13 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.mock.ts +FNF:0 +FNH:0 +DA:4,0 +DA:9,0 +DA:82,0 +DA:161,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.reducers.ts +FN:8,(anonymous_6) +FN:11,(anonymous_7) +FN:23,(anonymous_8) +FN:26,(anonymous_9) +FN:36,(anonymous_10) +FN:41,(anonymous_11) +FN:45,(anonymous_12) +FN:50,(anonymous_13) +FN:53,(anonymous_14) +FNF:9 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:2,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:18,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:36,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:45,0 +DA:49,0 +DA:50,0 +DA:53,0 +DA:57,0 +DA:58,0 +DA:59,0 +LF:24 +LH:0 +BRDA:12,0,0,0 +BRDA:14,1,0,0 +BRDA:58,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.selector.ts +FN:22,(anonymous_13) +FN:27,(anonymous_14) +FN:32,(anonymous_15) +FN:40,(anonymous_16) +FN:43,(anonymous_17) +FN:49,(anonymous_18) +FN:53,(anonymous_19) +FN:55,(anonymous_20) +FN:85,(anonymous_21) +FN:86,(anonymous_22) +FN:90,(anonymous_23) +FN:91,(anonymous_24) +FN:95,(anonymous_25) +FN:96,(anonymous_26) +FN:113,(anonymous_27) +FN:114,(anonymous_28) +FN:118,(anonymous_29) +FN:128,(anonymous_30) +FN:146,(anonymous_31) +FN:152,(anonymous_32) +FN:152,(anonymous_33) +FN:158,(anonymous_34) +FN:158,(anonymous_35) +FNF:23 +FNH:0 +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:18,0 +DA:20,0 +DA:22,0 +DA:25,0 +DA:27,0 +DA:30,0 +DA:32,0 +DA:35,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:73,0 +DA:80,0 +DA:84,0 +DA:85,0 +DA:86,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:94,0 +DA:95,0 +DA:97,0 +DA:98,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:105,0 +DA:109,0 +DA:114,0 +DA:115,0 +DA:118,0 +DA:120,0 +DA:124,0 +DA:129,0 +DA:134,0 +DA:140,0 +DA:144,0 +DA:146,0 +DA:149,0 +DA:152,0 +DA:155,0 +DA:158,0 +LF:59 +LH:0 +BRDA:44,0,0,0 +BRDA:50,1,0,0 +BRDA:52,2,0,0 +BRDA:54,3,0,0 +BRDA:98,4,0,0 +BRDA:99,5,0,0 +BRDA:99,5,1,0 +BRDA:99,6,0,0 +BRDA:99,6,1,0 +BRDA:101,7,0,0 +BRDA:101,8,0,0 +BRDA:101,8,1,0 +BRDA:118,9,0,0 +BRDA:118,9,1,0 +BRF:14 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.slice.ts +FN:24,(anonymous_6) +FNF:1 +FNH:0 +FNDA:0,(anonymous_6) +DA:1,0 +DA:8,0 +DA:11,0 +DA:16,0 +DA:25,0 +DA:26,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.thunk.ts +FN:31,(anonymous_4) +FN:61,(anonymous_5) +FN:66,(anonymous_6) +FN:86,(anonymous_7) +FN:90,(anonymous_8) +FNF:5 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:2,0 +DA:5,0 +DA:7,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:20,0 +DA:27,0 +DA:32,0 +DA:33,0 +DA:40,0 +DA:42,0 +DA:43,0 +DA:46,0 +DA:48,0 +DA:54,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:66,0 +DA:67,0 +DA:70,0 +DA:72,0 +DA:81,0 +DA:87,0 +DA:88,0 +DA:90,0 +DA:91,0 +DA:92,0 +DA:93,0 +DA:95,0 +DA:96,0 +DA:99,0 +DA:102,0 +LF:36 +LH:0 +BRDA:42,0,0,0 +BRDA:93,1,0,0 +BRDA:93,1,1,0 +BRDA:95,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayBioEntity/overlayBioEntity.utils.ts +FN:11,(anonymous_6) +FN:15,(anonymous_7) +FN:63,(anonymous_8) +FN:66,(anonymous_9) +FN:100,(anonymous_10) +FN:108,(anonymous_11) +FN:111,(anonymous_12) +FN:120,(anonymous_13) +FN:130,(anonymous_14) +FN:136,(anonymous_15) +FN:141,(anonymous_16) +FN:155,(anonymous_17) +FN:160,(anonymous_18) +FN:164,(anonymous_19) +FN:179,(anonymous_20) +FN:188,(anonymous_21) +FNF:16 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:15,0 +DA:23,0 +DA:24,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:61,0 +DA:62,0 +DA:63,0 +DA:64,0 +DA:65,0 +DA:66,0 +DA:82,0 +DA:85,0 +DA:100,0 +DA:101,0 +DA:102,0 +DA:104,0 +DA:108,0 +DA:111,0 +DA:118,0 +DA:120,0 +DA:121,0 +DA:122,0 +DA:123,0 +DA:124,0 +DA:127,0 +DA:130,0 +DA:131,0 +DA:136,0 +DA:139,0 +DA:141,0 +DA:143,0 +DA:147,0 +DA:155,0 +DA:159,0 +DA:160,0 +DA:161,0 +DA:164,0 +DA:165,0 +DA:166,0 +DA:169,0 +DA:170,0 +DA:173,0 +DA:179,0 +DA:184,0 +DA:188,0 +DA:189,0 +DA:190,0 +DA:192,0 +DA:194,0 +DA:197,0 +LF:58 +LH:0 +BRDA:23,0,0,0 +BRDA:42,1,0,0 +BRDA:61,2,0,0 +BRDA:101,3,0,0 +BRDA:147,4,0,0 +BRDA:147,4,1,0 +BRDA:166,5,0,0 +BRDA:166,6,0,0 +BRDA:166,6,1,0 +BRDA:169,7,0,0 +BRDA:190,8,0,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayGroup/ovelayGroup.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayGroup/overlayGroup.reducers.ts +FN:5,(anonymous_1) +FN:8,(anonymous_2) +FN:11,(anonymous_3) +FN:15,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayGroup/overlayGroup.selectors.ts +FN:6,(anonymous_3) +FN:8,(anonymous_4) +FN:17,(anonymous_5) +FN:18,(anonymous_6) +FN:18,(anonymous_7) +FNF:5 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:18,0 +LF:12 +LH:0 +BRDA:10,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayGroup/overlayGroup.slice.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:6,0 +DA:12,0 +DA:17,0 +DA:21,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlayGroup/overlayGroup.thunks.ts +FN:18,(anonymous_6) +FN:33,(anonymous_7) +FN:48,(anonymous_8) +FN:94,(anonymous_9) +FN:113,(anonymous_10) +FN:115,(anonymous_11) +FN:130,(anonymous_12) +FNF:7 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:27,0 +DA:32,0 +DA:33,0 +DA:36,0 +DA:46,0 +DA:53,0 +DA:54,0 +DA:65,0 +DA:66,0 +DA:67,0 +DA:73,0 +DA:75,0 +DA:77,0 +DA:78,0 +DA:79,0 +DA:81,0 +DA:87,0 +DA:95,0 +DA:96,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:103,0 +DA:105,0 +DA:110,0 +DA:114,0 +DA:115,0 +DA:116,0 +DA:117,0 +DA:124,0 +DA:127,0 +DA:129,0 +DA:130,0 +DA:133,0 +DA:135,0 +DA:137,0 +LF:51 +LH:0 +BRDA:32,0,0,0 +BRDA:32,0,1,0 +BRDA:66,1,0,0 +BRDA:66,1,1,0 +BRDA:77,2,0,0 +BRDA:77,2,1,0 +BRDA:77,3,0,0 +BRDA:77,3,1,0 +BRDA:116,4,0,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/redux/overlays/overlays.constants.ts +FNF:0 +FNH:0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlays/overlays.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:6,0 +DA:29,0 +DA:94,0 +DA:117,0 +DA:127,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlays/overlays.reducers.ts +FN:11,(anonymous_6) +FN:14,(anonymous_7) +FN:17,(anonymous_8) +FN:21,(anonymous_9) +FN:27,(anonymous_10) +FN:28,(anonymous_11) +FN:31,(anonymous_12) +FN:34,(anonymous_13) +FN:40,(anonymous_14) +FN:43,(anonymous_15) +FN:46,(anonymous_16) +FN:50,(anonymous_17) +FN:56,(anonymous_18) +FN:57,(anonymous_19) +FN:60,(anonymous_20) +FN:63,(anonymous_21) +FN:69,(anonymous_22) +FN:70,(anonymous_23) +FN:73,(anonymous_24) +FN:76,(anonymous_25) +FNF:20 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +DA:8,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:22,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:34,0 +DA:35,0 +DA:40,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:51,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:63,0 +DA:64,0 +DA:69,0 +DA:70,0 +DA:71,0 +DA:73,0 +DA:74,0 +DA:76,0 +DA:77,0 +LF:38 +LH:0 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/overlays/overlays.selectors.ts +FN:4,(anonymous_10) +FN:8,(anonymous_11) +FN:11,(anonymous_12) +FN:12,(anonymous_13) +FN:16,(anonymous_14) +FN:17,(anonymous_15) +FN:17,(anonymous_16) +FN:22,(anonymous_17) +FN:25,(anonymous_18) +FN:29,(anonymous_19) +FN:34,(anonymous_20) +FN:39,(anonymous_21) +FN:39,(anonymous_22) +FN:43,(anonymous_23) +FN:44,(anonymous_24) +FN:45,(anonymous_25) +FNF:16 +FNH:0 +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:22,0 +DA:25,0 +DA:27,0 +DA:29,0 +DA:32,0 +DA:34,0 +DA:37,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:45,0 +LF:22 +LH:0 +BRDA:8,0,0,0 +BRDA:8,0,1,0 +BRDA:34,1,0,0 +BRDA:34,1,1,0 +BRDA:39,2,0,0 +BRDA:39,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/overlays/overlays.slice.ts +FN:38,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:8,0 +DA:11,0 +DA:34,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:47,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/overlays/overlays.thunks.ts +FN:36,(anonymous_7) +FN:48,(anonymous_8) +FN:58,(anonymous_9) +FN:79,(anonymous_10) +FN:86,(anonymous_11) +FN:102,(anonymous_12) +FN:124,(anonymous_13) +FN:128,(anonymous_14) +FN:163,(anonymous_15) +FN:209,(anonymous_16) +FN:251,(anonymous_17) +FN:253,(anonymous_18) +FN:271,(anonymous_19) +FN:286,(anonymous_20) +FNF:14 +FNH:0 +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:37,0 +DA:38,0 +DA:42,0 +DA:47,0 +DA:48,0 +DA:51,0 +DA:56,0 +DA:59,0 +DA:60,0 +DA:61,0 +DA:62,0 +DA:64,0 +DA:74,0 +DA:79,0 +DA:80,0 +DA:81,0 +DA:84,0 +DA:86,0 +DA:88,0 +DA:90,0 +DA:102,0 +DA:103,0 +DA:108,0 +DA:116,0 +DA:117,0 +DA:124,0 +DA:125,0 +DA:126,0 +DA:128,0 +DA:129,0 +DA:130,0 +DA:133,0 +DA:135,0 +DA:144,0 +DA:145,0 +DA:147,0 +DA:148,0 +DA:151,0 +DA:163,0 +DA:171,0 +DA:182,0 +DA:190,0 +DA:192,0 +DA:194,0 +DA:207,0 +DA:214,0 +DA:215,0 +DA:220,0 +DA:225,0 +DA:234,0 +DA:236,0 +DA:238,0 +DA:239,0 +DA:240,0 +DA:242,0 +DA:248,0 +DA:252,0 +DA:253,0 +DA:254,0 +DA:268,0 +DA:270,0 +DA:271,0 +DA:274,0 +DA:276,0 +DA:278,0 +DA:283,0 +DA:287,0 +DA:288,0 +DA:292,0 +DA:293,0 +DA:294,0 +DA:296,0 +DA:298,0 +LF:88 +LH:0 +BRDA:47,0,0,0 +BRDA:47,0,1,0 +BRDA:62,1,0,0 +BRDA:80,2,0,0 +BRDA:88,3,0,0 +BRDA:88,3,1,0 +BRDA:117,4,0,0 +BRDA:117,4,1,0 +BRDA:129,5,0,0 +BRDA:194,6,0,0 +BRDA:194,6,1,0 +BRDA:238,7,0,0 +BRDA:238,7,1,0 +BRDA:238,8,0,0 +BRDA:238,8,1,0 +BRF:15 +BRH:0 +end_of_record +TN: +SF:src/redux/plugins/plugins.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/plugins/plugins.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +DA:9,0 +DA:15,0 +DA:20,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/plugins/plugins.reducers.ts +FN:10,(anonymous_7) +FN:12,(anonymous_8) +FN:16,(anonymous_9) +FN:17,(anonymous_10) +FN:23,(anonymous_11) +FN:33,(anonymous_12) +FN:38,(anonymous_13) +FN:39,(anonymous_14) +FN:42,(anonymous_15) +FN:46,(anonymous_16) +FN:52,(anonymous_17) +FN:56,(anonymous_18) +FN:60,(anonymous_19) +FNF:13 +FNH:0 +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +DA:2,0 +DA:3,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:33,0 +DA:34,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:47,0 +DA:52,0 +DA:53,0 +DA:56,0 +DA:57,0 +DA:60,0 +DA:64,0 +LF:33 +LH:0 +BRDA:19,0,0,0 +BRDA:24,1,0,0 +BRDA:28,2,0,0 +BRDA:43,3,0,0 +BRDA:43,3,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/redux/plugins/plugins.selectors.ts +FN:6,(anonymous_19) +FN:8,(anonymous_20) +FN:12,(anonymous_21) +FN:16,(anonymous_22) +FN:22,(anonymous_23) +FN:23,(anonymous_24) +FN:27,(anonymous_25) +FN:31,(anonymous_26) +FN:36,(anonymous_27) +FN:42,(anonymous_28) +FN:45,(anonymous_29) +FN:56,(anonymous_30) +FN:57,(anonymous_31) +FN:62,(anonymous_32) +FN:63,(anonymous_33) +FN:69,(anonymous_34) +FN:71,(anonymous_35) +FN:77,(anonymous_36) +FN:78,(anonymous_37) +FN:82,(anonymous_38) +FN:83,(anonymous_39) +FN:89,(anonymous_40) +FN:95,(anonymous_41) +FN:96,(anonymous_42) +FN:100,(anonymous_43) +FN:101,(anonymous_44) +FN:107,(anonymous_45) +FN:108,(anonymous_46) +FN:110,(anonymous_47) +FNF:29 +FNH:0 +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +FNDA:0,(anonymous_30) +FNDA:0,(anonymous_31) +FNDA:0,(anonymous_32) +FNDA:0,(anonymous_33) +FNDA:0,(anonymous_34) +FNDA:0,(anonymous_35) +FNDA:0,(anonymous_36) +FNDA:0,(anonymous_37) +FNDA:0,(anonymous_38) +FNDA:0,(anonymous_39) +FNDA:0,(anonymous_40) +FNDA:0,(anonymous_41) +FNDA:0,(anonymous_42) +FNDA:0,(anonymous_43) +FNDA:0,(anonymous_44) +FNDA:0,(anonymous_45) +FNDA:0,(anonymous_46) +FNDA:0,(anonymous_47) +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:23,0 +DA:27,0 +DA:29,0 +DA:31,0 +DA:34,0 +DA:36,0 +DA:39,0 +DA:43,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:52,0 +DA:56,0 +DA:57,0 +DA:60,0 +DA:63,0 +DA:67,0 +DA:70,0 +DA:71,0 +DA:76,0 +DA:77,0 +DA:78,0 +DA:81,0 +DA:82,0 +DA:84,0 +DA:87,0 +DA:89,0 +DA:92,0 +DA:96,0 +DA:99,0 +DA:100,0 +DA:101,0 +DA:104,0 +DA:108,0 +DA:110,0 +LF:47 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:47,1,0,0 +BRDA:63,2,0,0 +BRDA:63,2,1,0 +BRDA:70,3,0,0 +BRDA:70,3,1,0 +BRDA:71,4,0,0 +BRDA:71,4,1,0 +BRDA:84,5,0,0 +BRDA:84,5,1,0 +BRDA:84,5,2,0 +BRDA:110,6,0,0 +BRDA:110,6,1,0 +BRF:14 +BRH:0 +end_of_record +TN: +SF:src/redux/plugins/plugins.slice.ts +FN:22,(anonymous_6) +FNF:1 +FNH:0 +FNDA:0,(anonymous_6) +DA:1,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:23,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:30,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/plugins/plugins.thunks.ts +FN:35,(anonymous_5) +FN:95,(anonymous_6) +FN:129,(anonymous_7) +FN:133,(anonymous_8) +FNF:4 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:17,0 +DA:29,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:55,0 +DA:63,0 +DA:65,0 +DA:66,0 +DA:74,0 +DA:76,0 +DA:92,0 +DA:96,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:104,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:111,0 +DA:113,0 +DA:116,0 +DA:118,0 +DA:122,0 +DA:127,0 +DA:130,0 +DA:131,0 +DA:133,0 +DA:134,0 +DA:135,0 +DA:137,0 +DA:139,0 +LF:42 +LH:0 +BRDA:65,0,0,0 +BRDA:106,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/project/project.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/project/project.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:6,0 +DA:13,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/project/project.reducers.ts +FN:5,(anonymous_3) +FN:6,(anonymous_4) +FN:9,(anonymous_5) +FN:13,(anonymous_6) +FN:19,(anonymous_7) +FN:20,(anonymous_8) +FNF:6 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:19,0 +DA:20,0 +DA:21,0 +LF:12 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/project/project.selectors.ts +FN:7,(anonymous_15) +FN:9,(anonymous_16) +FN:13,(anonymous_17) +FN:19,(anonymous_18) +FN:20,(anonymous_19) +FN:25,(anonymous_20) +FN:30,(anonymous_21) +FN:35,(anonymous_22) +FN:40,(anonymous_23) +FN:45,(anonymous_24) +FN:48,(anonymous_25) +FN:52,(anonymous_26) +FN:58,(anonymous_27) +FN:61,(anonymous_28) +FN:63,(anonymous_29) +FNF:15 +FNH:0 +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +FNDA:0,(anonymous_27) +FNDA:0,(anonymous_28) +FNDA:0,(anonymous_29) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:20,0 +DA:23,0 +DA:25,0 +DA:28,0 +DA:30,0 +DA:33,0 +DA:35,0 +DA:38,0 +DA:40,0 +DA:43,0 +DA:45,0 +DA:48,0 +DA:49,0 +DA:52,0 +DA:53,0 +DA:56,0 +DA:58,0 +DA:61,0 +DA:63,0 +LF:28 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRDA:20,1,0,0 +BRDA:20,1,1,0 +BRDA:25,2,0,0 +BRDA:25,2,1,0 +BRDA:49,3,0,0 +BRDA:49,3,1,0 +BRDA:53,4,0,0 +BRDA:53,4,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/redux/project/project.slice.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:3,0 +DA:5,0 +DA:12,0 +DA:17,0 +DA:18,0 +DA:22,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/project/project.thunks.ts +FN:15,(anonymous_3) +FN:30,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:28,0 +DA:31,0 +DA:33,0 +LF:17 +LH:0 +BRDA:21,0,0,0 +BRDA:21,0,1,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/projects/projects.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/projects/projects.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/projects/projects.reducers.ts +FN:5,(anonymous_1) +FN:6,(anonymous_2) +FN:9,(anonymous_3) +FN:13,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +LF:9 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/projects/projects.selectors.ts +FN:4,(anonymous_3) +FN:5,(anonymous_4) +FNF:2 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/projects/projects.slice.ts +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:6,0 +DA:12,0 +DA:17,0 +DA:21,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/projects/projects.thunks.ts +FN:14,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:22,0 +LF:14 +LH:0 +BRDA:20,0,0,0 +BRDA:20,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/publications/publications.constatns.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/publications/publications.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +DA:14,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/publications/publications.reducers.ts +FN:5,(anonymous_5) +FN:8,(anonymous_6) +FN:11,(anonymous_7) +FN:15,(anonymous_8) +FN:21,(anonymous_9) +FN:29,(anonymous_10) +FN:36,(anonymous_11) +FNF:7 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:21,0 +DA:25,0 +DA:26,0 +DA:29,0 +DA:33,0 +DA:36,0 +DA:40,0 +LF:16 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/publications/publications.selectors.ts +FN:5,(anonymous_14) +FN:9,(anonymous_15) +FN:14,(anonymous_16) +FN:20,(anonymous_17) +FN:24,(anonymous_18) +FN:28,(anonymous_19) +FN:31,(anonymous_20) +FN:32,(anonymous_21) +FN:39,(anonymous_22) +FN:44,(anonymous_23) +FN:48,(anonymous_24) +FN:53,(anonymous_25) +FN:58,(anonymous_26) +FNF:13 +FNH:0 +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +FNDA:0,(anonymous_22) +FNDA:0,(anonymous_23) +FNDA:0,(anonymous_24) +FNDA:0,(anonymous_25) +FNDA:0,(anonymous_26) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:9,0 +DA:12,0 +DA:14,0 +DA:18,0 +DA:20,0 +DA:24,0 +DA:26,0 +DA:28,0 +DA:31,0 +DA:32,0 +DA:37,0 +DA:39,0 +DA:42,0 +DA:44,0 +DA:46,0 +DA:48,0 +DA:51,0 +DA:53,0 +DA:56,0 +DA:58,0 +LF:25 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/publications/publications.slice.ts +FN:27,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:1,0 +DA:8,0 +DA:10,0 +DA:19,0 +DA:28,0 +DA:32,0 +DA:33,0 +DA:35,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/publications/publications.thunks.ts +FN:17,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:28,0 +DA:30,0 +LF:14 +LH:0 +BRDA:28,0,0,0 +BRDA:28,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/isReactionElement.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:4,0 +LF:2 +LH:0 +BRDA:4,0,0,0 +BRDA:4,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/reactions.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:9,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/reactions.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/reactions.reducers.ts +FN:7,(anonymous_4) +FN:8,(anonymous_5) +FN:11,(anonymous_6) +FN:19,(anonymous_7) +FN:25,(anonymous_8) +FN:31,(anonymous_9) +FNF:6 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:3,0 +DA:4,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:31,0 +DA:35,0 +DA:36,0 +LF:20 +LH:0 +BRDA:13,0,0,0 +BRDA:15,1,0,0 +BRDA:15,1,1,0 +BRDA:15,2,0,0 +BRDA:15,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/reactions.selector.ts +FN:8,(anonymous_5) +FN:12,(anonymous_6) +FN:18,(anonymous_7) +FN:19,(anonymous_8) +FN:27,(anonymous_9) +FN:32,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:15,0 +DA:19,0 +DA:23,0 +DA:28,0 +DA:29,0 +DA:32,0 +LF:14 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRDA:28,1,0,0 +BRDA:28,2,0,0 +BRDA:28,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/reactions.slice.ts +FN:16,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:7,0 +DA:9,0 +DA:17,0 +DA:21,0 +DA:23,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/reactions/reactions.thunks.ts +FN:31,(anonymous_1) +FN:36,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:27,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:41,0 +DA:43,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:50,0 +DA:51,0 +DA:55,0 +DA:57,0 +LF:22 +LH:0 +BRDA:33,0,0,0 +BRDA:33,0,1,0 +BRDA:50,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/root/init.selectors.ts +FN:11,(anonymous_4) +FN:11,(anonymous_5) +FN:18,(anonymous_6) +FN:18,(anonymous_7) +FN:26,(anonymous_8) +FN:26,(anonymous_9) +FNF:6 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:11,0 +DA:14,0 +DA:18,0 +DA:21,0 +DA:26,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/root/init.thunks.ts +FN:56,(anonymous_2) +FN:82,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:52,0 +DA:57,0 +DA:61,0 +DA:74,0 +DA:75,0 +DA:78,0 +DA:81,0 +DA:82,0 +DA:83,0 +DA:84,0 +DA:85,0 +DA:87,0 +DA:88,0 +DA:90,0 +DA:94,0 +DA:97,0 +DA:98,0 +DA:105,0 +DA:107,0 +DA:108,0 +DA:109,0 +DA:114,0 +DA:120,0 +DA:123,0 +DA:126,0 +DA:129,0 +DA:132,0 +DA:133,0 +DA:134,0 +DA:137,0 +DA:138,0 +DA:139,0 +DA:145,0 +DA:148,0 +DA:149,0 +DA:151,0 +DA:152,0 +DA:154,0 +DA:155,0 +DA:158,0 +DA:159,0 +DA:160,0 +DA:162,0 +LF:73 +LH:0 +BRDA:81,0,0,0 +BRDA:81,1,0,0 +BRDA:81,1,1,0 +BRDA:84,2,0,0 +BRDA:85,3,0,0 +BRDA:85,3,1,0 +BRDA:87,4,0,0 +BRDA:97,5,0,0 +BRDA:107,6,0,0 +BRDA:137,7,0,0 +BRDA:151,8,0,0 +BRDA:154,9,0,0 +BRDA:158,10,0,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:src/redux/root/query.selectors.ts +FN:17,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:42,0 +LF:14 +LH:0 +BRDA:26,0,0,0 +BRDA:26,0,1,0 +BRDA:37,1,0,0 +BRDA:37,1,1,0 +BRDA:38,2,0,0 +BRDA:38,2,1,0 +BRDA:39,3,0,0 +BRDA:39,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/redux/root/root.fixtures.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:36,0 +DA:38,0 +LF:36 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/root/root.selectors.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.constants.ts +FNF:0 +FNH:0 +DA:3,0 +DA:9,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.reducers.ts +FN:7,(anonymous_4) +FN:8,(anonymous_5) +FN:13,(anonymous_6) +FN:16,(anonymous_7) +FN:22,(anonymous_8) +FN:26,(anonymous_9) +FNF:6 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +DA:2,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:22,0 +DA:23,0 +DA:26,0 +DA:27,0 +DA:28,0 +LF:16 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.selectors.ts +FN:6,(anonymous_6) +FN:8,(anonymous_7) +FN:10,(anonymous_8) +FN:14,(anonymous_9) +FN:17,(anonymous_10) +FNF:5 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:17,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.slice.ts +FN:16,(anonymous_5) +FNF:1 +FNH:0 +FNDA:0,(anonymous_5) +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:17,0 +DA:21,0 +DA:23,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.thunks.ts +FN:22,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:15,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:38,0 +DA:44,0 +DA:46,0 +LF:20 +LH:0 +BRDA:28,0,0,0 +BRDA:29,1,0,0 +BRDA:29,1,1,0 +BRDA:31,2,0,0 +BRDA:31,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/redux/search/search.thunks.utils.ts +FN:4,(anonymous_1) +FN:7,(anonymous_2) +FN:8,(anonymous_3) +FN:9,(anonymous_4) +FN:18,(anonymous_5) +FN:21,(anonymous_6) +FNF:6 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:28,0 +DA:33,0 +LF:14 +LH:0 +BRDA:7,0,0,0 +BRDA:7,0,1,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRDA:21,2,0,0 +BRDA:21,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/selectors/index.ts +FN:20,(anonymous_3) +FN:32,(anonymous_4) +FN:32,(anonymous_5) +FNF:3 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:20,0 +DA:23,0 +DA:32,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/shapes/shapes.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:3,0 +DA:5,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/shapes/shapes.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/shapes/shapes.reducers.ts +FN:5,(anonymous_4) +FN:6,(anonymous_5) +FN:9,(anonymous_6) +FN:13,(anonymous_7) +FN:18,(anonymous_8) +FN:19,(anonymous_9) +FN:22,(anonymous_10) +FN:26,(anonymous_11) +FN:31,(anonymous_12) +FN:32,(anonymous_13) +FN:35,(anonymous_14) +FN:39,(anonymous_15) +FNF:12 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:39,0 +DA:40,0 +LF:25 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:36,2,0,0 +BRDA:36,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/redux/shapes/shapes.selectors.ts +FN:4,(anonymous_8) +FN:8,(anonymous_9) +FN:13,(anonymous_10) +FN:18,(anonymous_11) +FN:23,(anonymous_12) +FN:28,(anonymous_13) +FN:33,(anonymous_14) +FNF:7 +FNH:0 +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:18,0 +DA:21,0 +DA:23,0 +DA:26,0 +DA:28,0 +DA:31,0 +DA:33,0 +LF:15 +LH:0 +BRDA:18,0,0,0 +BRDA:18,0,1,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/redux/shapes/shapes.slice.ts +FN:13,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:20,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/shapes/shapes.thunks.ts +FN:22,(anonymous_5) +FN:38,(anonymous_6) +FN:55,(anonymous_7) +FNF:3 +FNH:0 +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:31,0 +DA:36,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:46,0 +DA:48,0 +DA:53,0 +DA:56,0 +DA:57,0 +DA:58,0 +DA:60,0 +DA:61,0 +DA:63,0 +DA:65,0 +LF:35 +LH:0 +BRDA:26,0,0,0 +BRDA:43,1,0,0 +BRDA:60,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/statistics/statistics.constants.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/statistics/statistics.mock.ts +FNF:0 +FNH:0 +DA:1,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/statistics/statistics.reducers.ts +FN:5,(anonymous_1) +FN:8,(anonymous_2) +FN:11,(anonymous_3) +FN:15,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/statistics/statistics.selectors.ts +FN:4,(anonymous_4) +FN:6,(anonymous_5) +FN:10,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:10,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/statistics/statistics.slice.ts +FN:15,(anonymous_3) +FNF:1 +FNH:0 +FNDA:0,(anonymous_3) +DA:1,0 +DA:3,0 +DA:5,0 +DA:11,0 +DA:16,0 +DA:20,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/statistics/statistics.thunks.ts +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +LF:13 +LH:0 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/redux/user/user.mock.ts +FNF:0 +FNH:0 +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/user/user.reducers.ts +FN:5,(anonymous_4) +FN:7,(anonymous_5) +FN:10,(anonymous_6) +FN:18,(anonymous_7) +FN:24,(anonymous_8) +FN:26,(anonymous_9) +FN:29,(anonymous_10) +FN:37,(anonymous_11) +FN:44,(anonymous_12) +FN:46,(anonymous_13) +FN:49,(anonymous_14) +FN:57,(anonymous_15) +FNF:12 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +DA:2,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:20,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:38,0 +DA:39,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:50,0 +DA:51,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:58,0 +LF:33 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRDA:14,1,0,0 +BRDA:14,1,1,0 +BRDA:15,2,0,0 +BRDA:15,2,1,0 +BRDA:16,3,0,0 +BRDA:16,3,1,0 +BRDA:32,4,0,0 +BRDA:32,4,1,0 +BRDA:33,5,0,0 +BRDA:33,5,1,0 +BRDA:34,6,0,0 +BRDA:34,6,1,0 +BRDA:35,7,0,0 +BRDA:35,7,1,0 +BRF:16 +BRH:0 +end_of_record +TN: +SF:src/redux/user/user.selectors.ts +FN:7,(anonymous_9) +FN:9,(anonymous_10) +FN:10,(anonymous_11) +FN:11,(anonymous_12) +FN:12,(anonymous_13) +FN:15,(anonymous_14) +FN:20,(anonymous_15) +FN:27,(anonymous_16) +FNF:8 +FNH:0 +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:17,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:27,0 +LF:16 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRDA:21,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/redux/user/user.slice.ts +FN:19,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:5,0 +DA:15,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:26,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/redux/user/user.thunks.ts +FN:18,(anonymous_8) +FN:29,(anonymous_9) +FN:39,(anonymous_10) +FN:85,(anonymous_11) +FN:113,(anonymous_12) +FN:129,(anonymous_13) +FNF:6 +FNH:0 +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:34,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:46,0 +DA:47,0 +DA:49,0 +DA:50,0 +DA:52,0 +DA:53,0 +DA:55,0 +DA:56,0 +DA:58,0 +DA:61,0 +DA:69,0 +DA:71,0 +DA:72,0 +DA:73,0 +DA:77,0 +DA:80,0 +DA:85,0 +DA:86,0 +DA:90,0 +DA:94,0 +DA:96,0 +DA:97,0 +DA:99,0 +DA:100,0 +DA:102,0 +DA:110,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:119,0 +DA:120,0 +DA:122,0 +DA:126,0 +DA:130,0 +DA:131,0 +DA:143,0 +DA:145,0 +DA:147,0 +LF:65 +LH:0 +BRDA:19,0,0,0 +BRDA:22,1,0,0 +BRDA:49,2,0,0 +BRDA:55,3,0,0 +BRDA:55,3,1,0 +BRDA:55,4,0,0 +BRDA:55,4,1,0 +BRDA:71,5,0,0 +BRDA:72,6,0,0 +BRDA:99,7,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/redux/user/user.utils.ts +FN:3,(anonymous_3) +FN:4,(anonymous_4) +FN:7,(anonymous_5) +FN:14,(anonymous_6) +FNF:4 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:3,0 +DA:4,0 +DA:7,0 +DA:12,0 +DA:14,0 +LF:5 +LH:0 +BRDA:14,0,0,0 +BRDA:14,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/api/utils/axiosInstance.ts +FN:12,(anonymous_4) +FN:20,(anonymous_5) +FN:30,(anonymous_6) +FN:38,(anonymous_7) +FNF:4 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:2,0 +DA:4,0 +DA:8,0 +DA:12,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:27,0 +DA:30,0 +DA:34,0 +DA:35,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:45,0 +LF:20 +LH:0 +BRDA:22,0,0,0 +BRDA:40,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/api/utils/useApiQuery.ts +FN:12,(anonymous_2) +FN:22,(anonymous_3) +FN:34,(anonymous_4) +FNF:3 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:4,0 +DA:5,0 +DA:12,0 +DA:17,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:27,0 +DA:33,0 +DA:34,0 +DA:38,0 +LF:12 +LH:0 +BRDA:23,0,0,0 +BRDA:34,1,0,0 +BRDA:34,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/errorMessages.ts +FN:15,(anonymous_17) +FN:16,(anonymous_18) +FNF:2 +FNH:0 +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +LF:19 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/pluginsManager.ts +FN:52,(anonymous_2) +FN:62,(anonymous_3) +FN:66,(anonymous_4) +FN:75,(anonymous_5) +FN:132,(anonymous_6) +FN:147,(anonymous_7) +FN:161,(anonymous_8) +FN:166,(anonymous_9) +FN:173,(anonymous_10) +FN:223,(anonymous_11) +FN:234,(anonymous_12) +FN:239,(anonymous_13) +FNF:12 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:50,0 +DA:53,0 +DA:55,0 +DA:57,0 +DA:63,0 +DA:65,0 +DA:66,0 +DA:68,0 +DA:72,0 +DA:76,0 +DA:77,0 +DA:132,0 +DA:133,0 +DA:135,0 +DA:136,0 +DA:138,0 +DA:145,0 +DA:148,0 +DA:150,0 +DA:152,0 +DA:153,0 +DA:154,0 +DA:157,0 +DA:159,0 +DA:162,0 +DA:167,0 +DA:168,0 +DA:169,0 +DA:170,0 +DA:174,0 +DA:176,0 +DA:178,0 +DA:180,0 +DA:181,0 +DA:184,0 +DA:186,0 +DA:198,0 +DA:205,0 +DA:224,0 +DA:225,0 +DA:227,0 +DA:228,0 +DA:229,0 +DA:232,0 +DA:235,0 +DA:239,0 +LF:92 +LH:0 +BRDA:66,0,0,0 +BRDA:66,0,1,0 +BRDA:68,1,0,0 +BRDA:69,2,0,0 +BRDA:69,2,1,0 +BRDA:135,3,0,0 +BRDA:150,4,0,0 +BRDA:152,5,0,0 +BRDA:162,6,0,0 +BRDA:162,6,1,0 +BRDA:162,7,0,0 +BRDA:162,7,1,0 +BRDA:167,8,0,0 +BRDA:167,8,1,0 +BRDA:167,9,0,0 +BRDA:167,9,1,0 +BRDA:169,10,0,0 +BRDA:180,11,0,0 +BRDA:227,12,0,0 +BRF:19 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/pluginsManager.utils.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/addSingleMarker.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:15,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/clearAllElements.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:24,0 +DA:25,0 +LF:15 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRDA:20,2,0,0 +BRDA:24,3,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/getAllChemicals.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/getAllContent.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/getAllDrugs.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/getAllMarkers.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/getShownElements.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/index.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/removeAllMarkers.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/bioEntities/removeSingleMarker.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/interface/getOpenedPanel.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/interface/hidePanel.ts +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +LF:8 +LH:0 +BRDA:10,0,0,0 +BRDA:10,1,0,0 +BRDA:10,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/interface/openPanel.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/legend/removeLegend.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:13,0 +LF:9 +LH:0 +BRDA:9,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/legend/setLegend.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/getOpenMapId.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:12,0 +LF:8 +LH:0 +BRDA:8,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/mapManager.ts +FN:13,(anonymous_1) +FN:17,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:10,0 +DA:14,0 +DA:15,0 +DA:17,0 +LF:5 +LH:0 +BRDA:14,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/minervaDefine.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/openMap.ts +FN:12,(anonymous_1) +FN:16,(anonymous_2) +FN:21,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:31,0 +LF:20 +LH:0 +BRDA:19,0,0,0 +BRDA:23,1,0,0 +BRDA:23,1,1,0 +BRDA:29,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/data/getBounds.ts +FN:17,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:22,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:29,0 +DA:30,0 +DA:32,0 +LF:16 +LH:0 +BRDA:20,0,0,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRDA:34,2,0,0 +BRDA:34,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/fitBounds/fitBounds.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/fitBounds/fitBounds.ts +FN:16,(anonymous_1) +FN:34,(anonymous_2) +FN:44,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:34,0 +DA:36,0 +DA:38,0 +DA:44,0 +DA:45,0 +LF:16 +LH:0 +BRDA:19,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/fitBounds/fitBounds.utils.ts +FN:7,(anonymous_1) +FN:10,(anonymous_2) +FN:11,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +LF:9 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/fitBounds/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/models/getModels.ts +FN:7,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:12,0 +LF:8 +LH:0 +BRDA:12,0,0,0 +BRDA:12,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/getDataOverlays.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:4,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +LF:6 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/getVisibleDataOverlays.ts +FN:10,(anonymous_1) +FN:16,(anonymous_2) +FN:18,(anonymous_3) +FN:21,(anonymous_4) +FN:24,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:37,0 +DA:45,0 +LF:21 +LH:0 +BRDA:20,0,0,0 +BRDA:23,1,0,0 +BRDA:25,2,0,0 +BRDA:25,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/hideDataOverlay.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:23,0 +DA:25,0 +LF:18 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRDA:17,1,0,0 +BRDA:19,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/removeDataOverlay.ts +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:15,0 +DA:17,0 +LF:12 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRDA:15,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/addDataOverlay/addDataOverlay.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/addDataOverlay/addDataOverlay.ts +FN:22,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:22,0 +DA:30,0 +DA:31,0 +DA:33,0 +DA:35,0 +DA:37,0 +DA:39,0 +LF:14 +LH:0 +BRDA:33,0,0,0 +BRDA:35,1,0,0 +BRDA:42,2,0,0 +BRDA:42,2,1,0 +BRDA:43,3,0,0 +BRDA:43,3,1,0 +BRDA:46,4,0,0 +BRDA:46,4,1,0 +BRDA:47,5,0,0 +BRDA:47,5,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/addDataOverlay/addDataOverlay.utils.ts +FN:6,(anonymous_1) +FN:7,(anonymous_2) +FN:10,(anonymous_3) +FN:20,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:27,0 +LF:15 +LH:0 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRDA:21,1,0,0 +BRDA:24,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/addDataOverlay/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/showDataOverlay/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/showDataOverlay/showDataOverlay.ts +FN:13,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +LF:22 +LH:0 +BRDA:20,0,0,0 +BRDA:20,0,1,0 +BRDA:22,1,0,0 +BRDA:24,2,0,0 +BRDA:28,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/types/DataOverlay.ts +FN:25,(anonymous_1) +FN:38,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:4,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:39,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/overlays/types/DataOverlayEntry.ts +FN:14,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/position/getCenter.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/position/setCenter.ts +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/displaySearchDrawerWithSelectedDefaultTab.ts +FN:6,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:14,0 +LF:11 +LH:0 +BRDA:11,0,0,0 +BRDA:11,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/getPolygonPoints.ts +FN:10,(anonymous_1) +FN:12,(anonymous_2) +FN:13,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:21,0 +DA:32,0 +LF:13 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/getVisibleBioEntitiesPolygonCoordinates.ts +FN:10,(anonymous_1) +FN:22,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:28,0 +LF:14 +LH:0 +BRDA:24,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/searchByCoordinates.ts +FN:19,(anonymous_2) +FN:36,(anonymous_3) +FNF:2 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:25,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:52,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:56,0 +DA:57,0 +LF:38 +LH:0 +BRDA:42,0,0,0 +BRDA:43,1,0,0 +BRDA:54,2,0,0 +BRDA:54,2,1,0 +BRDA:56,3,0,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/searchByQuery.ts +FN:8,(anonymous_1) +FN:21,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:27,0 +LF:15 +LH:0 +BRDA:22,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/searchFitBounds.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:12,0 +DA:13,0 +LF:9 +LH:0 +BRDA:7,0,0,0 +BRDA:10,1,0,0 +BRDA:12,2,0,0 +BRDA:12,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/triggerSearch/triggerSearch.ts +FN:11,triggerSearch +FNF:1 +FNH:0 +FNDA:0,triggerSearch +DA:1,0 +DA:3,0 +DA:4,0 +DA:9,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:33,0 +LF:20 +LH:0 +BRDA:13,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRDA:17,2,0,0 +BRDA:23,3,0,0 +BRDA:23,3,1,0 +BRDA:24,4,0,0 +BRDA:24,4,1,0 +BRDA:26,5,0,0 +BRDA:26,5,1,0 +BRDA:27,6,0,0 +BRDA:27,7,0,0 +BRDA:27,7,1,0 +BRDA:27,7,2,0 +BRDA:30,8,0,0 +BRF:15 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/zoom/getZoom.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/map/zoom/setZoom.ts +FN:7,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:17,0 +DA:20,0 +LF:14 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/overviewImage/getCurrentOverviewImage.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/overviewImage/getOverviewImages.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/overviewImage/hideOverviewImageModal.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:13,0 +LF:9 +LH:0 +BRDA:9,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/overviewImage/selectOverviewImage.ts +FN:6,(anonymous_1) +FN:9,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:16,0 +LF:12 +LH:0 +BRDA:12,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/overviewImage/showOverviewImageModal.ts +FN:9,(anonymous_1) +FN:15,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:22,0 +LF:14 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRDA:18,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/pluginContextMenu/pluginsContextMenu.ts +FN:7,(anonymous_1) +FN:19,(anonymous_2) +FN:21,(anonymous_3) +FN:24,(anonymous_4) +FN:26,(anonymous_5) +FNF:5 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:3,0 +DA:5,0 +DA:8,0 +DA:9,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:25,0 +DA:26,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:33,0 +LF:15 +LH:0 +BRDA:21,0,0,0 +BRDA:21,0,1,0 +BRDA:26,1,0,0 +BRDA:26,1,1,0 +BRDA:28,2,0,0 +BRDA:28,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/pluginsEventBus/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/pluginsEventBus/pluginsEventBus.constants.ts +FN:28,(anonymous_4) +FNF:1 +FNH:0 +FNDA:0,(anonymous_4) +DA:1,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:34,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/pluginsEventBus/pluginsEventBus.ts +FN:38,dispatchEvent +FN:61,(anonymous_4) +FN:75,(anonymous_5) +FN:84,(anonymous_6) +FN:86,(anonymous_7) +FN:96,(anonymous_8) +FN:100,(anonymous_9) +FN:101,(anonymous_10) +FNF:8 +FNH:0 +FNDA:0,dispatchEvent +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:3,0 +DA:4,0 +DA:9,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:47,0 +DA:52,0 +DA:58,0 +DA:67,0 +DA:76,0 +DA:85,0 +DA:86,0 +DA:89,0 +DA:90,0 +DA:92,0 +DA:97,0 +DA:101,0 +LF:21 +LH:0 +BRDA:39,0,0,0 +BRDA:43,1,0,0 +BRDA:86,2,0,0 +BRDA:86,2,1,0 +BRDA:86,2,2,0 +BRDA:89,3,0,0 +BRDA:89,3,1,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/project/data/getApiUrls.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:8,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/project/data/getDisease.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:16,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/project/data/getName.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:16,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/project/data/getOrganism.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:16,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/project/data/getProjectId.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:16,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/services/pluginsManager/project/data/getVersion.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:14,0 +DA:16,0 +LF:9 +LH:0 +BRDA:12,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/Accordion.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:16,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/index.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItem/AccordionItem.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:12,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItem/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemButton/AccordionItemButton.component.tsx +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:16,0 +DA:24,0 +LF:6 +LH:0 +BRDA:18,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemButton/AccordionItemButton.utils.tsx +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:5,0 +DA:10,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemButton/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemHeading/AccordionItemHeading.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:7,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemHeading/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemPanel/AccordionItemPanel.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:9,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Accordion/AccordionItemPanel/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Autocomplete/Autocomplete.component.tsx +FN:20,(anonymous_2) +FN:28,(anonymous_3) +FN:34,(anonymous_4) +FN:39,(anonymous_5) +FN:44,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:20,0 +DA:28,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:38,0 +DA:39,0 +DA:44,0 +DA:45,0 +DA:61,0 +LF:13 +LH:0 +BRDA:22,0,0,0 +BRDA:23,1,0,0 +BRDA:24,2,0,0 +BRDA:26,3,0,0 +BRDA:35,4,0,0 +BRDA:39,5,0,0 +BRDA:39,5,1,0 +BRDA:45,6,0,0 +BRDA:45,6,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/shared/Autocomplete/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Button/Button.component.tsx +FN:44,(anonymous_1) +FN:53,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:16,0 +DA:44,0 +DA:53,0 +DA:54,0 +DA:56,0 +DA:58,0 +DA:84,0 +LF:9 +LH:0 +BRDA:45,0,0,0 +BRDA:46,1,0,0 +BRDA:47,2,0,0 +BRDA:48,3,0,0 +BRDA:49,4,0,0 +BRDA:50,5,0,0 +BRDA:54,6,0,0 +BRDA:56,7,0,0 +BRDA:68,8,0,0 +BRDA:68,8,1,0 +BRDA:74,9,0,0 +BRDA:76,10,0,0 +BRDA:76,10,1,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:src/shared/Button/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/ColorPicker/ColorTilePicker.component.tsx +FN:14,(anonymous_4) +FN:21,(anonymous_5) +FN:27,(anonymous_6) +FN:32,(anonymous_7) +FN:38,(anonymous_8) +FN:39,(anonymous_9) +FN:46,(anonymous_10) +FN:57,(anonymous_11) +FNF:8 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:14,0 +DA:20,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:57,0 +LF:23 +LH:0 +BRDA:17,0,0,0 +BRDA:18,1,0,0 +BRDA:21,2,0,0 +BRDA:21,2,1,0 +BRDA:33,3,0,0 +BRDA:33,4,0,0 +BRDA:33,4,1,0 +BRDA:40,5,0,0 +BRDA:40,6,0,0 +BRDA:40,6,1,0 +BRDA:64,7,0,0 +BRF:11 +BRH:0 +end_of_record +TN: +SF:src/shared/ColorPicker/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/DrawerHeading/DrawerHeading.component.tsx +FN:10,(anonymous_1) +FN:13,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:14,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/DrawerHeading/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/DrawerHeadingBackwardButton/DrawerHeadingBackwardButton.component.tsx +FN:11,(anonymous_1) +FN:17,(anonymous_2) +FN:21,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:11,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:21,0 +DA:22,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/DrawerHeadingBackwardButton/DrawerHeadingBackwardButton.constants.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/DrawerHeadingBackwardButton/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icon.component.tsx +FN:102,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:34,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:54,0 +DA:102,0 +DA:103,0 +DA:104,0 +DA:106,0 +DA:111,0 +LF:51 +LH:0 +BRDA:102,0,0,0 +BRDA:103,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/AdminIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ArrowIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/CenterIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ChevronDownIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ChevronLeftIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ChevronRightIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ChevronUpIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ClearIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/CloseIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/CrossedEyeIcon.tsx +FNF:0 +FNH:0 +DA:7,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/DotsIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/DownloadIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/EditIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ExportIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/EyeIcon.tsx +FNF:0 +FNH:0 +DA:7,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ImageIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/InfoIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/LayerArrowDownIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/LayerArrowUpIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/LayersIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/LegendIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/LocationIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/MagnifierZoomIn.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/MagnifierZoomOut.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ManageUserIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/MoveBackIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/MoveFrontIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/OvalIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/PadlockLockedIcon.tsx +FNF:0 +FNH:0 +DA:7,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/PadlockOpenIcon.tsx +FNF:0 +FNH:0 +DA:7,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/PageIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/PencilIcon.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:7,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/Pin.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/PluginIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/PlusIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/QuestionIcon.tsx +FNF:0 +FNH:0 +DA:7,0 +LF:1 +LH:0 +BRDA:7,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/RectangleIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ReloadIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ResizeImageIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/TextIcon.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:7,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/ThreeDotsIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/TrashIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Icon/Icons/UserIcon.tsx +FNF:0 +FNH:0 +DA:5,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/IconButton/IconButton.component.tsx +FN:14,(anonymous_1) +FN:19,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:19,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:73,0 +LF:10 +LH:0 +BRDA:15,0,0,0 +BRDA:20,1,0,0 +BRDA:21,2,0,0 +BRDA:23,3,0,0 +BRDA:26,4,0,0 +BRDA:51,5,0,0 +BRDA:51,5,1,0 +BRDA:59,6,0,0 +BRDA:59,6,1,0 +BRDA:62,7,0,0 +BRDA:62,7,1,0 +BRDA:64,8,0,0 +BRDA:64,8,1,0 +BRF:13 +BRH:0 +end_of_record +TN: +SF:src/shared/IconButton/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Input/Input.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:14,0 +DA:21,0 +DA:26,0 +DA:39,0 +LF:6 +LH:0 +BRDA:28,0,0,0 +BRDA:28,1,0,0 +BRDA:28,2,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/shared/Input/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/LinkButton/LinkButton.component.tsx +FN:16,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:16,0 +LF:3 +LH:0 +BRDA:17,0,0,0 +BRDA:18,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/shared/LinkButton/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/LoadingIndicator/LoadingIndicator.component.tsx +FNF:0 +FNH:0 +DA:6,0 +DA:7,0 +DA:9,0 +LF:3 +LH:0 +BRDA:10,0,0,0 +BRDA:11,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/shared/LoadingIndicator/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/OutsideClickWrapper/OutsideClickWrapper.component.tsx +FN:8,(anonymous_4) +FN:14,(anonymous_5) +FN:15,(anonymous_6) +FN:23,(anonymous_7) +FNF:4 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,0 +DA:8,0 +DA:12,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:21,0 +DA:23,0 +DA:24,0 +LF:10 +LH:0 +BRDA:16,0,0,0 +BRDA:16,1,0,0 +BRDA:16,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/shared/OutsideClickWrapper/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Select/Select.component.tsx +FN:15,(anonymous_2) +FN:23,(anonymous_3) +FN:35,(anonymous_4) +FN:40,(anonymous_5) +FN:78,(anonymous_6) +FNF:5 +FNH:0 +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:15,0 +DA:23,0 +DA:32,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:43,0 +DA:79,0 +LF:12 +LH:0 +BRDA:19,0,0,0 +BRDA:20,1,0,0 +BRDA:21,2,0,0 +BRDA:23,3,0,0 +BRDA:23,3,1,0 +BRDA:36,4,0,0 +BRDA:40,5,0,0 +BRDA:40,5,1,0 +BRDA:43,6,0,0 +BRDA:43,6,1,0 +BRDA:50,7,0,0 +BRDA:50,7,1,0 +BRDA:61,8,0,0 +BRDA:61,8,1,0 +BRDA:65,9,0,0 +BRDA:65,9,1,0 +BRDA:71,10,0,0 +BRDA:71,10,1,0 +BRDA:77,11,0,0 +BRDA:77,11,1,0 +BRDA:82,12,0,0 +BRDA:82,12,1,0 +BRDA:83,13,0,0 +BRDA:83,13,1,0 +BRF:24 +BRH:0 +end_of_record +TN: +SF:src/shared/Select/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Switch/Switch.component.tsx +FN:32,(anonymous_1) +FN:41,(anonymous_2) +FN:45,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:13,0 +DA:32,0 +DA:39,0 +DA:41,0 +DA:42,0 +DA:45,0 +DA:46,0 +DA:47,0 +DA:48,0 +DA:49,0 +DA:76,0 +LF:13 +LH:0 +BRDA:33,0,0,0 +BRDA:34,1,0,0 +BRDA:48,2,0,0 +BRDA:60,3,0,0 +BRDA:60,3,1,0 +BRDA:69,4,0,0 +BRDA:69,4,1,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/shared/Switch/index.tsx +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Textarea/Textarea.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:11,0 +DA:16,0 +LF:4 +LH:0 +BRDA:17,0,0,0 +BRDA:18,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/shared/Textarea/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Toast/Toast.component.tsx +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:10,0 +DA:16,0 +DA:22,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/shared/Toast/index.ts +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/types/models.ts +FNF:0 +FNH:0 +DA:54,0 +DA:57,0 +DA:58,0 +DA:65,0 +DA:87,0 +DA:97,0 +DA:111,0 +LF:7 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/assertNever.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/createStoreInstanceUsingSliceReducer.ts +FN:22,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:22,0 +DA:26,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/injectMatomoTracking.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:17,0 +LF:11 +LH:0 +BRDA:4,0,0,0 +BRDA:4,1,0,0 +BRDA:4,1,1,0 +BRDA:8,2,0,0 +BRDA:8,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/utils/mockNetworkResponse.ts +FN:5,(anonymous_4) +FN:10,(anonymous_5) +FNF:2 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:10,0 +DA:11,0 +DA:12,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/parseQueryToTypes.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +LF:1 +LH:0 +BRDA:6,0,0,0 +BRDA:6,0,1,0 +BRDA:7,1,0,0 +BRDA:7,1,1,0 +BRDA:8,2,0,0 +BRDA:8,2,1,0 +BRDA:10,3,0,0 +BRDA:10,3,1,0 +BRDA:11,4,0,0 +BRDA:11,4,1,0 +BRDA:12,5,0,0 +BRDA:12,5,1,0 +BRF:12 +BRH:0 +end_of_record +TN: +SF:src/utils/setLoginForOldMinerva.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +LF:4 +LH:0 +BRDA:3,0,0,0 +BRDA:3,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/showToast.tsx +FN:12,(anonymous_1) +FN:14,(anonymous_2) +FN:14,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:4,0 +DA:12,0 +DA:13,0 +DA:14,0 +LF:6 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/useDebouncedValue.ts +FN:3,useDebouncedValue +FN:6,(anonymous_2) +FN:7,(anonymous_3) +FN:9,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,useDebouncedValue +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:14,0 +LF:8 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/validateDataUsingZodSchema.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:5,0 +DA:6,0 +DA:8,0 +DA:11,0 +DA:13,0 +DA:16,0 +LF:6 +LH:0 +BRDA:8,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/array/arrayToDict.ts +FN:1,arrayToDict +FN:7,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,arrayToDict +FNDA:0,(anonymous_2) +DA:1,0 +DA:6,0 +DA:8,0 +DA:9,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/array/arrayToKeyValue.ts +FN:1,arrayToKeyValue +FN:6,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,arrayToKeyValue +FNDA:0,(anonymous_2) +DA:1,0 +DA:5,0 +DA:7,0 +DA:8,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/array/getUniqueArray.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/array/groupBy.ts +FN:2,(anonymous_1) +FN:7,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:6,0 +DA:8,0 +DA:9,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/bioEntity/getTypeBySBOTerm.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:7,0 +DA:9,0 +DA:11,0 +DA:13,0 +DA:15,0 +DA:20,0 +DA:22,0 +DA:24,0 +DA:26,0 +DA:29,0 +DA:31,0 +DA:33,0 +DA:35,0 +DA:38,0 +DA:40,0 +DA:43,0 +LF:19 +LH:0 +BRDA:2,0,0,0 +BRDA:2,0,1,0 +BRDA:2,0,2,0 +BRDA:2,0,3,0 +BRDA:2,0,4,0 +BRDA:2,0,5,0 +BRDA:2,0,6,0 +BRDA:2,0,7,0 +BRDA:2,0,8,0 +BRDA:2,0,9,0 +BRDA:2,0,10,0 +BRDA:2,0,11,0 +BRDA:2,0,12,0 +BRDA:2,0,13,0 +BRDA:2,0,14,0 +BRDA:2,0,15,0 +BRDA:2,0,16,0 +BRDA:2,0,17,0 +BRDA:2,0,18,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRDA:33,1,2,0 +BRDA:33,1,3,0 +BRF:23 +BRH:0 +end_of_record +TN: +SF:src/utils/bioEntity/mapReactionToModelElement.ts +FN:3,mapReactionToModelElement +FNF:1 +FNH:0 +FNDA:0,mapReactionToModelElement +DA:3,0 +DA:4,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/canvas/getCanvas.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/canvas/getFontSizeToFit.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:9,0 +DA:10,0 +LF:4 +LH:0 +BRDA:10,0,0,0 +BRDA:10,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/context/mapInstanceContext.tsx +FN:12,(anonymous_4) +FN:15,(anonymous_5) +FN:22,(anonymous_6) +FN:29,(anonymous_7) +FN:39,(anonymous_8) +FNF:5 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,0 +DA:3,0 +DA:10,0 +DA:15,0 +DA:22,0 +DA:26,0 +DA:28,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:38,0 +DA:39,0 +LF:12 +LH:0 +BRDA:30,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/addAlphaToHexString.ts +FN:10,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:19,0 +LF:13 +LH:0 +BRDA:10,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/convertDecimalToHex.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +LF:9 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/getHexStringColorFromRGBIntWithAlpha.ts +FN:9,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:9,0 +DA:13,0 +DA:14,0 +DA:15,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/getHexTricolorGradientColorWithAlpha.ts +FN:15,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:15,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:37,0 +DA:38,0 +DA:40,0 +LF:15 +LH:0 +BRDA:26,0,0,0 +BRDA:26,1,0,0 +BRDA:26,1,1,0 +BRDA:26,1,2,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/hexToRgb.ts +FN:2,(anonymous_3) +FN:4,(anonymous_4) +FN:15,(anonymous_5) +FNF:3 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:10,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:24,0 +LF:13 +LH:0 +BRDA:7,0,0,0 +BRDA:7,0,1,0 +BRDA:20,1,0,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/hexToRgbIntAlpha.ts +FN:4,hexToRgbIntAlpha +FNF:1 +FNH:0 +FNDA:0,hexToRgbIntAlpha +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:21,0 +LF:12 +LH:0 +BRDA:7,0,0,0 +BRDA:7,1,0,0 +BRDA:7,1,1,0 +BRDA:16,2,0,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/utils/convert/rgbToHex.ts +FN:6,(anonymous_1) +FN:17,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:22,0 +LF:8 +LH:0 +BRDA:7,0,0,0 +BRDA:7,0,1,0 +BRDA:7,0,2,0 +BRDA:7,0,3,0 +BRDA:7,0,4,0 +BRDA:7,0,5,0 +BRDA:7,0,6,0 +BRDA:7,0,7,0 +BRDA:7,0,8,0 +BRDA:18,1,0,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/errorReporting.ts +FN:15,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:15,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:31,0 +DA:32,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:43,0 +DA:44,0 +DA:45,0 +DA:46,0 +DA:53,0 +DA:54,0 +DA:58,0 +DA:63,0 +LF:28 +LH:0 +BRDA:20,0,0,0 +BRDA:21,1,0,0 +BRDA:21,1,1,0 +BRDA:27,2,0,0 +BRDA:31,3,0,0 +BRDA:36,4,0,0 +BRDA:41,5,0,0 +BRDA:41,5,1,0 +BRDA:44,6,0,0 +BRDA:44,7,0,0 +BRDA:44,7,1,0 +BRDA:46,8,0,0 +BRDA:47,9,0,0 +BRDA:47,9,1,0 +BRDA:47,9,2,0 +BRDA:47,9,3,0 +BRDA:47,9,4,0 +BRF:17 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/getError.ts +FN:13,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:13,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:20,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/getErrorCode.ts +FN:7,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:18,0 +DA:22,0 +DA:24,0 +DA:26,0 +LF:16 +LH:0 +BRDA:8,0,0,0 +BRDA:11,1,0,0 +BRDA:12,2,0,0 +BRDA:12,2,1,0 +BRDA:14,3,0,0 +BRDA:17,4,0,0 +BRDA:17,5,0,0 +BRDA:17,5,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/getErrorName.ts +FN:4,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:11,0 +LF:8 +LH:0 +BRDA:5,0,0,0 +BRDA:8,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/getErrorStack.ts +FN:4,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +LF:10 +LH:0 +BRDA:6,0,0,0 +BRDA:6,0,1,0 +BRDA:8,1,0,0 +BRDA:8,1,1,0 +BRDA:9,2,0,0 +BRDA:12,3,0,0 +BRDA:12,3,1,0 +BRF:7 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/getErrorUrl.ts +FN:3,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:15,0 +LF:10 +LH:0 +BRDA:4,0,0,0 +BRDA:5,1,0,0 +BRDA:5,1,1,0 +BRDA:6,2,0,0 +BRDA:9,3,0,0 +BRDA:10,4,0,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/utils/error-report/sendErrorReport.ts +FN:8,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:14,0 +DA:15,0 +LF:10 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/getErrorMessage/getErrorMessage.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/getErrorMessage/getErrorMessage.test.utils.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:5,0 +DA:6,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/getErrorMessage/getErrorMessage.ts +FN:11,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +DA:3,0 +DA:11,0 +DA:14,0 +DA:16,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:28,0 +LF:13 +LH:0 +BRDA:14,0,0,0 +BRDA:14,0,1,0 +BRDA:14,0,2,0 +BRDA:14,0,3,0 +BRDA:28,1,0,0 +BRDA:28,1,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/utils/getErrorMessage/getErrorMessage.utils.ts +FN:7,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:12,0 +DA:13,0 +LF:6 +LH:0 +BRDA:8,0,0,0 +BRDA:13,1,0,0 +BRDA:13,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/utils/getErrorMessage/index.ts FNF:0 FNH:0 -DA:1,1 -DA:5,1 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/initialize/useInitializeStore.ts +FN:17,(anonymous_1) +FN:22,(anonymous_2) +FN:24,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:28,0 +LF:17 +LH:0 +BRDA:22,0,0,0 +BRDA:22,0,1,0 +BRDA:25,1,0,0 +BRDA:25,2,0,0 +BRDA:25,2,1,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/utils/lerp/interpolateThreeColors.ts +FN:24,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:24,0 +DA:30,0 +DA:32,0 +DA:41,0 +DA:44,0 +LF:9 +LH:0 +BRDA:32,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/lerp/lerpRGBColor.ts +FN:13,(anonymous_1) +FN:20,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:13,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:27,0 +LF:6 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/map/getPointOffset.ts +FN:14,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:11,0 +DA:12,0 +DA:14,0 +DA:16,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:22,0 +DA:27,0 +DA:32,0 +LF:11 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/map/getUpdatedMapData.ts +FN:17,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:7,0 +DA:15,0 +DA:17,0 +DA:22,0 +DA:28,0 +DA:30,0 +LF:8 +LH:0 +BRDA:23,0,0,0 +BRDA:23,0,1,0 +BRDA:24,1,0,0 +BRDA:24,1,1,0 +BRDA:25,2,0,0 +BRDA:25,2,1,0 +BRDA:28,3,0,0 +BRDA:28,3,1,0 +BRDA:32,4,0,0 +BRDA:32,4,1,0 +BRF:10 +BRH:0 +end_of_record +TN: +SF:src/utils/map/latLngToPoint.ts +FN:16,(anonymous_1) +FN:31,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:16,0 +DA:21,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:36,0 +LF:16 +LH:0 +BRDA:19,0,0,0 +BRDA:33,1,0,0 +BRDA:33,1,1,0 +BRF:3 +BRH:0 +end_of_record +TN: +SF:src/utils/map/pointToLatLng.ts +FN:10,(anonymous_1) +FN:22,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:2,0 +DA:5,0 +DA:6,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:27,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:34,0 +LF:20 +LH:0 +BRDA:13,0,0,0 +BRDA:24,1,0,0 +BRDA:24,2,0,0 +BRDA:24,2,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/utils/map/usePointToProjection.ts +FN:14,(anonymous_1) +FN:18,(anonymous_2) +FN:21,(anonymous_3) +FN:22,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:14,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:29,0 +LF:15 +LH:0 +BRDA:24,0,0,0 +BRDA:24,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/map/useSetBounds.ts +FN:23,(anonymous_3) +FN:40,(anonymous_4) +FN:44,(anonymous_5) +FNF:3 +FNH:0 +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,0 +DA:2,0 +DA:3,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:18,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:28,0 +DA:30,0 +DA:36,0 +DA:37,0 +DA:40,0 +DA:41,0 +DA:42,0 +DA:44,0 +DA:45,0 +DA:47,0 +LF:22 +LH:0 +BRDA:24,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/number/boundNumber.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +LF:3 +LH:0 +BRDA:2,0,0,0 +BRDA:2,0,1,0 +BRDA:3,1,0,0 +BRDA:3,1,1,0 +BRF:4 +BRH:0 +end_of_record +TN: +SF:src/utils/number/degreesToRadians.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/number/numberToInt.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:9,0 +LF:5 +LH:0 +BRDA:5,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/number/radiansToDegrees.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/number/roundToTwoDigits.ts +FN:2,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/object/getPointMerged.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:3,0 +LF:1 +LH:0 +BRDA:4,0,0,0 +BRDA:4,0,1,0 +BRDA:5,1,0,0 +BRDA:5,1,1,0 +BRDA:6,2,0,0 +BRDA:6,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:src/utils/object/getTruthyObjectOrUndefined.ts +FN:3,(anonymous_1) +FN:6,(anonymous_2) +FN:9,(anonymous_3) +FN:14,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:14,0 +DA:15,0 +DA:17,0 +LF:8 +LH:0 +BRDA:7,0,0,0 +BRDA:7,0,1,0 +BRDA:7,0,2,0 +BRDA:10,1,0,0 +BRDA:10,1,1,0 +BRDA:10,2,0,0 +BRDA:10,2,1,0 +BRDA:17,3,0,0 +BRDA:17,3,1,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:src/utils/overlays/getOverlayReactionCoords.ts +FN:4,(anonymous_1) +FN:5,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +DA:4,0 +DA:5,0 +DA:6,0 +DA:8,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/overlays/overlaysElementsTypeGuards.ts +FN:9,(anonymous_4) +FN:12,(anonymous_5) +FN:16,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:17,0 +LF:6 +LH:0 +BRDA:13,0,0,0 +BRDA:13,0,1,0 +BRDA:17,1,0,0 +BRDA:17,1,1,0 +BRDA:17,1,2,0 +BRF:5 +BRH:0 +end_of_record +TN: +SF:src/utils/plugins/getPluginHashWithoutPrefix.ts +FN:5,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:2,0 +DA:3,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:12,0 +LF:8 +LH:0 +BRDA:6,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/plugins/isPluginHashWithPrefix.ts +FN:3,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:3,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/point/isPointValid.ts +FN:4,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:4,0 +DA:5,0 +DA:6,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/promise/runInSequence.ts +FN:5,(anonymous_1) +FN:19,(anonymous_2) +FN:27,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:3,0 +DA:5,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:13,0 +DA:16,0 +DA:19,0 +DA:23,0 +DA:24,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:31,0 +LF:14 +LH:0 +BRDA:21,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/query-manager/useReduxBusQueryManager.ts +FN:7,(anonymous_1) +FN:13,(anonymous_2) +FN:30,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:12,0 +DA:15,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:35,0 +LF:15 +LH:0 +BRDA:31,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/reaction/ReactionTypeEnum.ts +FN:1,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:1,0 +DA:30,0 LF:2 -LH:2 +LH:0 +BRDA:1,0,0,0 +BRDA:1,0,1,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/testing/actWait.ts +FN:6,(anonymous_1) +FN:8,(anonymous_2) +FN:9,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:2,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +LF:6 +LH:0 +BRDA:6,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/testing/getReduxStoreActionsListener.tsx +FN:18,(anonymous_2) +FNF:1 +FNH:0 +FNDA:0,(anonymous_2) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:18,0 +DA:21,0 +DA:29,0 +LF:7 +LH:0 +BRDA:19,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:src/utils/testing/getReduxWrapperUsingSliceReducer.tsx +FN:20,(anonymous_1) +FNF:1 +FNH:0 +FNDA:0,(anonymous_1) +DA:2,0 +DA:6,0 +DA:20,0 +DA:24,0 +DA:30,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:src/utils/testing/getReduxWrapperWithStore.tsx +FN:25,(anonymous_0) +FN:27,(anonymous_1) +FN:40,(anonymous_3) +FN:47,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,(anonymous_0) +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:25,0 +DA:27,0 +DA:40,0 +DA:44,0 +DA:47,0 +DA:58,0 +LF:11 +LH:0 +BRDA:41,0,0,0 +BRDA:42,1,0,0 +BRF:2 +BRH:0 +end_of_record +TN: +SF:src/utils/websocket-entity-updates/webSocketEntityUpdates.constants.ts +FNF:0 +FNH:0 +DA:1,0 +DA:7,0 +DA:11,0 +LF:3 +LH:0 BRF:0 BRH:0 end_of_record +TN: +SF:src/utils/websocket-entity-updates/webSocketEntityUpdatesProvider.tsx +FN:25,(anonymous_6) +FN:34,(anonymous_7) +FN:37,(anonymous_8) +FN:53,(anonymous_9) +FN:66,(anonymous_10) +FN:77,(anonymous_11) +FN:88,(anonymous_12) +FNF:7 +FNH:0 +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:19,0 +DA:22,0 +DA:23,0 +DA:25,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:34,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:45,0 +DA:48,0 +DA:53,0 +DA:54,0 +DA:55,0 +DA:57,0 +DA:58,0 +DA:61,0 +DA:62,0 +DA:66,0 +DA:67,0 +DA:68,0 +DA:71,0 +DA:72,0 +DA:76,0 +DA:77,0 +DA:88,0 +DA:89,0 +DA:90,0 +DA:91,0 +DA:95,0 +LF:40 +LH:0 +BRDA:40,0,0,0 +BRDA:41,1,0,0 +BRDA:41,1,1,0 +BRDA:41,1,2,0 +BRDA:54,2,0,0 +BRDA:57,3,0,0 +BRDA:57,3,1,0 +BRDA:57,4,0,0 +BRDA:57,4,1,0 +BRDA:61,5,0,0 +BRDA:67,6,0,0 +BRDA:71,7,0,0 +BRDA:71,8,0,0 +BRDA:71,8,1,0 +BRDA:90,9,0,0 +BRF:15 +BRH:0 +end_of_record diff --git a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.test.tsx index 91d4fb0e..4cbc98ed 100644 --- a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.test.tsx @@ -16,11 +16,31 @@ import { layerOvalsFixture } from '@/models/fixtures/layerOvalsFixture'; import { layerLinesFixture } from '@/models/fixtures/layerLinesFixture'; import { act } from 'react-dom/test-utils'; import { layerImagesFixture } from '@/models/fixtures/layerImagesFixture'; +import { LAYERS_STATE_INITIAL_LAYER_MOCK } from '@/redux/layers/layers.mock'; +import * as appDispatch from '@/redux/hooks/useAppDispatch'; import { LayerFactoryModal } from './LayerFactoryModal.component'; +jest.mock('../../../../utils/showToast'); +jest.mock('../../../../redux/hooks/useAppDispatch'); + +const dispatchMock = jest.fn(() => { + return { + unwrap: jest.fn().mockResolvedValue(layerFixture), + }; +}); +jest.spyOn(appDispatch, 'useAppDispatch').mockReturnValue(dispatchMock); + const mockedAxiosNewClient = mockNetworkNewAPIResponse(); -const renderComponent = (initialStoreState: InitialStoreState = {}): { store: StoreType } => { +const renderComponent = ( + initialStoreState: InitialStoreState = { + layers: { + 0: { + ...LAYERS_STATE_INITIAL_LAYER_MOCK, + }, + }, + }, +): { store: StoreType } => { const { Wrapper, store } = getReduxWrapperWithStore(initialStoreState); return ( @@ -57,9 +77,11 @@ describe('LayerFactoryModal - component', () => { expect(nameInput.value).toBe('test layer'); }); - it('should fetch layers when the form is successfully submitted', async () => { + it('should fetch layer when the form is successfully submitted', async () => { mockedAxiosNewClient.onPost(apiPath.storeLayer(0)).reply(HttpStatusCode.Ok, layerFixture); - mockedAxiosNewClient.onGet(apiPath.getLayers(0)).reply(HttpStatusCode.Ok, layersFixture); + mockedAxiosNewClient + .onGet(apiPath.getLayer(0, layerFixture.id)) + .reply(HttpStatusCode.Ok, layerFixture); mockedAxiosNewClient .onGet(apiPath.getLayerTexts(0, layersFixture.content[0].id)) .reply(HttpStatusCode.Ok, layerTextsFixture); @@ -76,7 +98,7 @@ describe('LayerFactoryModal - component', () => { .onGet(apiPath.getLayerImages(0, layersFixture.content[0].id)) .reply(HttpStatusCode.Ok, layerImagesFixture); - const { store } = renderComponent(); + renderComponent(); const nameInput: HTMLInputElement = screen.getByTestId('layer-factory-name'); const submitButton = screen.getByTestId('submit'); @@ -85,7 +107,7 @@ describe('LayerFactoryModal - component', () => { submitButton.click(); }); await waitFor(() => { - expect(store.getState().layers[0].loading).toBe('succeeded'); + expect(dispatchMock).toHaveBeenCalledTimes(3); }); }); }); diff --git a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx index 31c052b8..d6b7dc31 100644 --- a/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx @@ -1,4 +1,3 @@ -import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { Button } from '@/shared/Button'; import { Input } from '@/shared/Input'; import React, { useEffect, useMemo, useState } from 'react'; @@ -9,17 +8,13 @@ import { closeModal } from '@/redux/modal/modal.slice'; import { showToast } from '@/utils/showToast'; import { Switch } from '@/shared/Switch'; import { LayerStoreInterface, LayerUpdateInterface } from '@/redux/layers/layers.types'; -import { - addLayerForModel, - getLayer, - getLayersForModel, - updateLayer, -} from '@/redux/layers/layers.thunks'; +import { addLayerForModel, getLayer, updateLayer } from '@/redux/layers/layers.thunks'; import { SerializedError } from '@reduxjs/toolkit'; import { layerFactoryStateSelector } from '@/redux/modal/modal.selector'; import './LayerFactoryModal.styles.css'; import { LoadingIndicator } from '@/shared/LoadingIndicator'; import { maxLayerZIndexAboveDiagramSelector } from '@/redux/layers/layers.selectors'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; export const LayerFactoryModal: React.FC = () => { const dispatch = useAppDispatch(); @@ -66,6 +61,7 @@ export const LayerFactoryModal: React.FC = () => { const handleSubmit = async (event: React.FormEvent<HTMLFormElement>): Promise<void> => { try { + let layerId = layerFactoryState.id; event.preventDefault(); if (layerFactoryState.id) { const payload = { @@ -78,14 +74,19 @@ export const LayerFactoryModal: React.FC = () => { message: 'The layer has been successfully updated.', }); } else { - await dispatch(addLayerForModel(data)).unwrap(); + const layer = await dispatch(addLayerForModel(data)).unwrap(); + if (layer) { + layerId = layer.id; + } showToast({ type: 'success', message: 'A new layer has been successfully added.', }); } dispatch(closeModal()); - dispatch(getLayersForModel(currentModelId)); + if (layerId) { + dispatch(getLayer({ modelId: currentModelId, layerId })); + } } catch (error) { const typedError = error as SerializedError; showToast({ diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index 1e85c51d..966ce7ed 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -22,7 +22,9 @@ export const LayersDrawer = (): JSX.Element => { }; const sortedLayers = useMemo(() => { - return [...layersForCurrentModel].sort((layerA, layerB) => layerB.details.z - layerA.details.z); + return [...Object.values(layersForCurrentModel)].sort( + (layerA, layerB) => layerB.details.z - layerA.details.z, + ); }, [layersForCurrentModel]); const negativeZLayers = useMemo( diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx index dff5df38..be3043a3 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx @@ -13,7 +13,7 @@ import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { openLayerFactoryModal } from '@/redux/modal/modal.slice'; import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; import { useState, JSX, useMemo } from 'react'; -import { getLayersForModel, removeLayer, updateLayer } from '@/redux/layers/layers.thunks'; +import { getLayer, removeLayer, updateLayer } from '@/redux/layers/layers.thunks'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; import { LayersDrawerLayerActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component'; @@ -90,7 +90,6 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX message: 'The layer has been successfully removed.', }); setIsModalOpen(false); - dispatch(getLayersForModel(currentModelId)); } catch (error) { const typedError = error as SerializedError; showToast({ @@ -124,7 +123,7 @@ export const LayersDrawerLayer = ({ layerDetails }: LayersDrawerLayerProps): JSX zIndex, }), ); - await dispatch(getLayersForModel(currentModelId)); + await dispatch(getLayer({ modelId: currentModelId, layerId: layerDetails.id })); } catch (error) { const typedError = error as SerializedError; showToast({ diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index e1373c9d..8d96d72f 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -25,7 +25,7 @@ import { layerUpdateRect, layerUpdateText, } from '@/redux/layers/layers.slice'; -import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; +import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; import { LayerImage, LayerRect, LayerText } from '@/types/models'; diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.test.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.test.ts deleted file mode 100644 index a23de57b..00000000 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -/* eslint-disable no-magic-numbers */ -import { getReduxWrapperWithStore } from '@/utils/testing/getReduxWrapperWithStore'; -import { renderHook } from '@testing-library/react'; -import VectorLayer from 'ol/layer/Vector'; -import { initialMapStateFixture } from '@/redux/map/map.fixtures'; -import { Map } from 'ol'; -import { useOlMapAdditionalLayers } from '@/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers'; - -describe('useOlMapAdditionalLayers - util', () => { - it('should return VectorLayer', () => { - const { Wrapper } = getReduxWrapperWithStore({ - map: initialMapStateFixture, - }); - - const dummyElement = document.createElement('div'); - const mapInstance = new Map({ target: dummyElement }); - const { result } = renderHook(() => useOlMapAdditionalLayers(mapInstance), { - wrapper: Wrapper, - }); - - expect(result.current).toBeInstanceOf(Array<VectorLayer>); - }); -}); diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index e3477c83..524145b4 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -2,7 +2,7 @@ import { Collection, Feature } from 'ol'; import VectorLayer from 'ol/layer/Vector'; import VectorSource, { VectorSourceEvent } from 'ol/source/Vector'; -import { useEffect, useMemo, useRef, useState } from 'react'; +import { useEffect, useMemo, useRef } from 'react'; import { useSelector } from 'react-redux'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; @@ -22,7 +22,6 @@ import Layer from '@/components/Map/MapViewer/utils/shapes/layer/Layer'; import { arrowTypesSelector, lineTypesSelector } from '@/redux/shapes/shapes.selectors'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; import { mapDataSizeSelector } from '@/redux/map/map.selectors'; -import { LayerState } from '@/redux/layers/layers.types'; import { mapEditToolsActiveActionSelector, mapEditToolsLayerObjectSelector, @@ -45,11 +44,7 @@ import processMessage from '@/components/Map/MapViewer/utils/websocket/processMe import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; import getDrawOvalInteraction from '@/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction'; -export const useOlMapAdditionalLayers = ( - mapInstance: MapInstance, -): Array< - VectorLayer<VectorSource<Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>>> -> => { +export const useOlMapAdditionalLayers = (mapInstance: MapInstance): void => { const activeAction = useAppSelector(mapEditToolsActiveActionSelector); const dispatch = useAppDispatch(); const mapSize = useSelector(mapDataSizeSelector); @@ -59,17 +54,31 @@ export const useOlMapAdditionalLayers = ( const layersLoading = useAppSelector(layersLoadingSelector); const layersVisibilityForCurrentModel = useAppSelector(layersVisibilityForCurrentModelSelector); const activeLayers = useAppSelector(layersActiveLayersSelector); + const prevActiveLayersRef = useRef<number[]>([]); const drawLayer = useAppSelector(layersDrawLayerSelector); const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); const mapEditToolsLayerObject = useAppSelector(mapEditToolsLayerObjectSelector); - const [layersState, setLayersState] = useState<Array<LayerState>>([]); - const [layersLoadingState, setLayersLoadingState] = useState(false); - const lineTypes = useSelector(lineTypesSelector); const arrowTypes = useSelector(arrowTypesSelector); const pointToProjection = usePointToProjection(); + const vectorLayersRef = useRef( + new Map< + number, + VectorLayer<VectorSource<Feature<Polygon> | Feature<LineString> | Feature<MultiPolygon>>> + >(), + ); + const featuresToTransformRef = useRef<Collection<Feature<Geometry>>>(new Collection()); + + const getLayerFeatures = (vectorLayer: VectorLayer): Feature<Geometry>[] => { + const features: Array<Feature<Geometry>> = []; + features.push(...vectorLayer.get('imagesFeatures')); + features.push(...vectorLayer.get('rectsFeatures')); + features.push(...vectorLayer.get('textsFeatures')); + return features; + }; + const { lastJsonMessage } = useWebSocketEntityUpdatesContext(); useEffect(() => { @@ -143,46 +152,41 @@ export const useOlMapAdditionalLayers = ( } }, [currentModelId, dispatch, layersLoading]); - const vectorLayers = useMemo(() => { - return layersState.map(layer => { - const additionalLayer = new Layer({ - zIndex: layer.details.z, - texts: layer.texts, - rects: layer.rects, - ovals: layer.ovals, - lines: layer.lines, - images: layer.images, - visible: layer.details.visible, - layerId: layer.details.id, - lineTypes, - arrowTypes, - mapInstance, - mapSize, - pointToProjection, - }); - return additionalLayer.vectorLayer; - }); - }, [layersState, lineTypes, arrowTypes, mapInstance, mapSize, pointToProjection]); - useEffect(() => { - if (layersLoading === 'pending') { - setLayersLoadingState(true); - } else if (layersLoading === 'succeeded' && layersLoadingState) { - setLayersLoadingState(false); - setLayersState(layersForCurrentModel); - } - }, [layersForCurrentModel, layersLoading, layersLoadingState]); - - const featuresToSelect = useMemo(() => { - const features: Array<Feature<Geometry>> = []; - const activeVectorLayers = vectorLayers.filter(layer => activeLayers.includes(layer.get('id'))); - activeVectorLayers.forEach(vectorLayer => { - features.push(...vectorLayer.get('imagesFeatures')); - features.push(...vectorLayer.get('rectsFeatures')); - features.push(...vectorLayer.get('textsFeatures')); + Object.values(layersForCurrentModel).forEach(layerState => { + const { id: layerId } = layerState.details; + if (!vectorLayersRef.current.has(layerId)) { + const additionalLayer = new Layer({ + zIndex: layerState.details.z, + texts: layerState.texts, + rects: layerState.rects, + ovals: layerState.ovals, + lines: layerState.lines, + images: layerState.images, + visible: layerState.details.visible, + layerId, + lineTypes, + arrowTypes, + mapInstance, + mapSize, + pointToProjection, + }); + const { vectorLayer } = additionalLayer; + if (!layerState.details.locked) { + const features = getLayerFeatures(vectorLayer); + featuresToTransformRef.current.extend(features); + } + vectorLayersRef.current.set(layerId, vectorLayer); + mapInstance?.addLayer(vectorLayer); + } + vectorLayersRef.current.forEach((vectorLayer, id) => { + if (!layersForCurrentModel[id]) { + mapInstance?.removeLayer(vectorLayer); + vectorLayersRef.current.delete(id); + } + }); }); - return new Collection(features); - }, [activeLayers, vectorLayers]); + }, [arrowTypes, layersForCurrentModel, lineTypes, mapInstance, mapSize, pointToProjection]); const transformInteraction = useMemo(() => { if (!dispatch || !currentModelId) { @@ -192,10 +196,10 @@ export const useOlMapAdditionalLayers = ( dispatch, mapSize, currentModelId, - featuresToSelect, + featuresToTransformRef.current, restrictionExtent, ); - }, [dispatch, currentModelId, mapSize, featuresToSelect, restrictionExtent]); + }, [dispatch, currentModelId, mapSize, restrictionExtent]); const transformRef = useRef(transformInteraction); useEffect(() => { @@ -203,13 +207,13 @@ export const useOlMapAdditionalLayers = ( }, [transformInteraction]); useEffect(() => { - vectorLayers.forEach(layer => { + vectorLayersRef.current.forEach(layer => { const layerId = layer.get('id'); if (layerId && layersVisibilityForCurrentModel[layerId] !== undefined) { layer.setVisible(layersVisibilityForCurrentModel[layerId]); } }); - }, [layersVisibilityForCurrentModel, vectorLayers]); + }, [layersVisibilityForCurrentModel]); useEffect(() => { const selectedFeature = transformInteraction?.getFeatures().item(0); @@ -232,10 +236,7 @@ export const useOlMapAdditionalLayers = ( (!transformFeatures.getLength() || transformFeatures.item(0).getId() !== mapEditToolsLayerObject.id) ) { - const layer = vectorLayers.find(vectorLayer => { - const layerId = vectorLayer.get('id'); - return layerId === mapEditToolsLayerObject.layer; - }); + const layer = vectorLayersRef.current.get(mapEditToolsLayerObject.layer); if (!layer) { return; } @@ -249,10 +250,10 @@ export const useOlMapAdditionalLayers = ( } transformRef.current.setSelection(new Collection<Feature>([feature])); } - }, [mapEditToolsLayerObject, vectorLayers]); + }, [mapEditToolsLayerObject]); useEffect(() => { - const activeVectorLayers = vectorLayers.filter(layer => { + const activeVectorLayers = [...vectorLayersRef.current.values()].filter(layer => { const layerId = layer.get('id'); return activeLayers.includes(layerId); }); @@ -265,7 +266,7 @@ export const useOlMapAdditionalLayers = ( const addFeatureHandler = (event: VectorSourceEvent): void => { const newFeature = event.feature; if (newFeature) { - featuresToSelect.push(newFeature); + featuresToTransformRef.current.push(newFeature); } }; @@ -282,7 +283,35 @@ export const useOlMapAdditionalLayers = ( source?.un('addfeature', addFeatureHandler); }); }; - }, [activeLayers, featuresToSelect, transformInteraction, vectorLayers]); + }, [activeLayers, transformInteraction]); + + // update transform features after change active layers (lock) + useEffect(() => { + const prevActiveLayers = prevActiveLayersRef.current; + + if (prevActiveLayers.length > activeLayers.length) { + const removedLayers = prevActiveLayers.filter(layer => !activeLayers.includes(layer)); + removedLayers.forEach(layer => { + const removedLayer = vectorLayersRef.current.get(layer); + if (removedLayer) { + const features = getLayerFeatures(removedLayer); + features.forEach((feature: Feature) => { + featuresToTransformRef.current.remove(feature); + }); + } + }); + } else if (prevActiveLayers.length < activeLayers.length) { + const addedLayers = activeLayers.filter(layer => !prevActiveLayers.includes(layer)); + addedLayers.forEach(layer => { + const addedLayer = vectorLayersRef.current.get(layer); + if (addedLayer) { + const features = getLayerFeatures(addedLayer); + featuresToTransformRef.current.extend(features); + } + }); + } + prevActiveLayersRef.current = activeLayers; + }, [activeLayers]); useEffect(() => { if ( @@ -388,6 +417,4 @@ export const useOlMapAdditionalLayers = ( mapInstance, hasPrivilegeToWriteProject, ]); - - return vectorLayers; }; diff --git a/src/components/Map/MapViewer/utils/config/useOlMapLayers.ts b/src/components/Map/MapViewer/utils/config/useOlMapLayers.ts index ed7dc2ff..cb314787 100644 --- a/src/components/Map/MapViewer/utils/config/useOlMapLayers.ts +++ b/src/components/Map/MapViewer/utils/config/useOlMapLayers.ts @@ -15,20 +15,13 @@ interface UseOlMapLayersInput { export const useOlMapLayers = ({ mapInstance }: UseOlMapLayersInput): MapConfig['layers'] => { const processLayer = useOlMapProcessLayer({ mapInstance }); - const additionalLayers = useOlMapAdditionalLayers(mapInstance); + useOlMapAdditionalLayers(mapInstance); const mapCardLayer = useOlMapCardLayer(); const pinsLayer = useOlMapPinsLayer(); const reactionsLayer = useOlMapReactionsLayer(); const commentsLayer = useOlMapCommentsLayer(); return useMemo(() => { - return [ - mapCardLayer, - processLayer, - pinsLayer, - reactionsLayer, - commentsLayer, - ...additionalLayers, - ]; - }, [mapCardLayer, processLayer, pinsLayer, reactionsLayer, commentsLayer, additionalLayers]); + return [mapCardLayer, processLayer, pinsLayer, reactionsLayer, commentsLayer]; + }, [mapCardLayer, processLayer, pinsLayer, reactionsLayer, commentsLayer]); }; diff --git a/src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.test.ts b/src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.test.ts deleted file mode 100644 index 89787b42..00000000 --- a/src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.test.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* eslint-disable no-magic-numbers */ -import VectorSource from 'ol/source/Vector'; -import VectorLayer from 'ol/layer/Vector'; -import { Feature } from 'ol'; -import Map from 'ol/Map'; -import removeElementFromLayer from './removeElementFromLayer'; - -jest.mock('ol/source/Vector'); - -describe('removeElementFromLayer', () => { - let mockMapInstance: Map; - let mockLayer: VectorLayer; - let mockSource: VectorSource; - let mockFeature: Feature; - - beforeEach(() => { - mockFeature = new Feature(); - mockFeature.setId(123); - - mockSource = new VectorSource(); - jest.spyOn(mockSource, 'getFeatureById').mockImplementation(id => { - if (id === 123) { - return mockFeature; - } - return null; - }); - jest.spyOn(mockSource, 'removeFeature').mockImplementation(() => {}); - - mockLayer = new VectorLayer(); - jest.spyOn(mockLayer, 'get').mockImplementation(key => { - if (key === 'id') { - return 1; - } - return undefined; - }); - jest.spyOn(mockLayer, 'getSource').mockImplementation(() => mockSource); - - const dummyElement = document.createElement('div'); - mockMapInstance = new Map({ target: dummyElement }); - jest.spyOn(mockMapInstance, 'getAllLayers').mockImplementation(() => [mockLayer]); - }); - - it('should remove the feature from the layer when feature exists', () => { - removeElementFromLayer({ - mapInstance: mockMapInstance, - layerId: 1, - featureId: 123, - }); - - expect(mockSource.getFeatureById).toHaveBeenCalledWith(123); - - expect(mockSource.removeFeature).toHaveBeenCalledWith(mockFeature); - }); - - it('should not call removeFeature when feature does not exist', () => { - removeElementFromLayer({ - mapInstance: mockMapInstance, - layerId: 1, - featureId: 999, - }); - - expect(mockSource.getFeatureById).toHaveBeenCalledWith(999); - - expect(mockSource.removeFeature).not.toHaveBeenCalled(); - }); - - it('should not call removeFeature when layerId does not match', () => { - removeElementFromLayer({ - mapInstance: mockMapInstance, - layerId: 2, - featureId: 123, - }); - - expect(mockSource.getFeatureById).not.toHaveBeenCalled(); - - expect(mockSource.removeFeature).not.toHaveBeenCalled(); - }); -}); diff --git a/src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.ts b/src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.ts deleted file mode 100644 index f76b0ccd..00000000 --- a/src/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { MapInstance } from '@/types/map'; -import VectorSource from 'ol/source/Vector'; - -export default function removeElementFromLayer({ - mapInstance, - layerId, - featureId, -}: { - mapInstance: MapInstance; - layerId: number; - featureId: number; -}): void { - mapInstance?.getAllLayers().forEach(layer => { - if (layer.get('id') === layerId) { - const source = layer.getSource(); - if (source instanceof VectorSource) { - const feature = source.getFeatureById(featureId); - if (feature) { - source.removeFeature(feature); - } - } - } - }); -} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer.ts new file mode 100644 index 00000000..c48f4404 --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer.ts @@ -0,0 +1,15 @@ +import { MapInstance } from '@/types/map'; + +export default function removeLayer({ + mapInstance, + layerId, +}: { + mapInstance: MapInstance; + layerId: number; +}): void { + mapInstance?.getAllLayers().forEach(layer => { + if (layer.get('id') === layerId) { + mapInstance?.removeLayer(layer); + } + }); +} diff --git a/src/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer.ts new file mode 100644 index 00000000..22ddcb71 --- /dev/null +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer.ts @@ -0,0 +1,16 @@ +import { MapInstance } from '@/types/map'; +import { Layer } from '@/types/models'; + +export default function updateLayer({ + mapInstance, + updatedLayer, +}: { + mapInstance: MapInstance; + updatedLayer: Layer; +}): void { + mapInstance?.getAllLayers().forEach(layer => { + if (layer.get('id') === updatedLayer.id) { + layer.setZIndex(updatedLayer.z); + } + }); +} diff --git a/src/components/Map/MapViewer/utils/websocket/processLayer.ts b/src/components/Map/MapViewer/utils/websocket/processLayer.ts new file mode 100644 index 00000000..5d6ad615 --- /dev/null +++ b/src/components/Map/MapViewer/utils/websocket/processLayer.ts @@ -0,0 +1,43 @@ +import { WebSocketEntityUpdateInterface } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.types'; +import { store } from '@/redux/store'; +import { ENTITY_OPERATION_TYPES } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.constants'; +import { getLayer } from '@/redux/layers/layers.thunks'; +import updateLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer'; +import { MapInstance } from '@/types/map'; +import { layerDelete } from '@/redux/layers/layers.slice'; +import removeLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer'; + +export default async function processLayer({ + data, + mapInstance, +}: { + data: WebSocketEntityUpdateInterface; + mapInstance: MapInstance; +}): Promise<void> { + const { dispatch } = store; + if ( + data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED || + data.type === ENTITY_OPERATION_TYPES.ENTITY_UPDATED + ) { + const updatedLayer = await dispatch( + getLayer({ + modelId: data.mapId, + layerId: data.entityId, + }), + ).unwrap(); + if (!updatedLayer) { + return; + } + if (data.type === ENTITY_OPERATION_TYPES.ENTITY_UPDATED) { + updateLayer({ mapInstance, updatedLayer }); + } + } else if (data.type === ENTITY_OPERATION_TYPES.ENTITY_DELETED) { + dispatch( + layerDelete({ + modelId: data.mapId, + layerId: data.entityId, + }), + ); + removeLayer({ mapInstance, layerId: data.entityId }); + } +} diff --git a/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts b/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts index 6fd6ec3a..e978cf5d 100644 --- a/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts +++ b/src/components/Map/MapViewer/utils/websocket/processLayerImage.ts @@ -6,7 +6,7 @@ import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/u import { MapInstance } from '@/types/map'; import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; import { layerDeleteImage } from '@/redux/layers/layers.slice'; -import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; +import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer'; export default async function processLayerImage({ data, diff --git a/src/components/Map/MapViewer/utils/websocket/processLayerText.ts b/src/components/Map/MapViewer/utils/websocket/processLayerText.ts index e1740c97..4b4c2f67 100644 --- a/src/components/Map/MapViewer/utils/websocket/processLayerText.ts +++ b/src/components/Map/MapViewer/utils/websocket/processLayerText.ts @@ -5,7 +5,7 @@ import { getLayerText } from '@/redux/layers/layers.thunks'; import { MapInstance } from '@/types/map'; import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; import { layerDeleteText } from '@/redux/layers/layers.slice'; -import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/elements/removeElementFromLayer'; +import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer'; import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; export default async function processLayerText({ diff --git a/src/components/Map/MapViewer/utils/websocket/processMessage.ts b/src/components/Map/MapViewer/utils/websocket/processMessage.ts index d09c41b3..334c0ca7 100644 --- a/src/components/Map/MapViewer/utils/websocket/processMessage.ts +++ b/src/components/Map/MapViewer/utils/websocket/processMessage.ts @@ -4,6 +4,7 @@ import { MapInstance } from '@/types/map'; import { ENTITY_TYPES } from '@/utils/websocket-entity-updates/webSocketEntityUpdates.constants'; import processLayerText from '@/components/Map/MapViewer/utils/websocket/processLayerText'; import processLayerOval from '@/components/Map/MapViewer/utils/websocket/processLayerOval'; +import processLayer from '@/components/Map/MapViewer/utils/websocket/processLayer'; export default async function processMessage({ jsonMessage, @@ -20,6 +21,8 @@ export default async function processMessage({ await processLayerText({ data: jsonMessage, mapInstance }); } else if (jsonMessage.entityType === ENTITY_TYPES.LAYER_OVAL) { await processLayerOval({ data: jsonMessage, mapInstance }); + } else if (jsonMessage.entityType === ENTITY_TYPES.LAYER) { + await processLayer({ data: jsonMessage, mapInstance }); } } catch { throw new Error(`Process websocket message error`); diff --git a/src/hooks/usePrevious.tsx b/src/hooks/usePrevious.tsx index a5233144..00437aa4 100644 --- a/src/hooks/usePrevious.tsx +++ b/src/hooks/usePrevious.tsx @@ -5,7 +5,7 @@ export default function usePrevious<T>(state: T): T | undefined { useEffect(() => { ref.current = state; - }); + }, [state]); return ref.current; } diff --git a/src/redux/layers/layers.mock.ts b/src/redux/layers/layers.mock.ts index e949602b..c46346c8 100644 --- a/src/redux/layers/layers.mock.ts +++ b/src/redux/layers/layers.mock.ts @@ -4,8 +4,8 @@ import { FetchDataState } from '@/types/fetchDataState'; export const LAYERS_STATE_INITIAL_MOCK: LayersState = {}; -export const LAYER_STATE_DEFAULT_DATA = { - layers: [], +export const LAYER_STATE_DEFAULT_DATA: LayersVisibilitiesState = { + layers: {}, layersVisibility: {}, activeLayers: [], drawLayer: null, diff --git a/src/redux/layers/layers.reducers.test.ts b/src/redux/layers/layers.reducers.test.ts index 52229f5e..d72e8c4f 100644 --- a/src/redux/layers/layers.reducers.test.ts +++ b/src/redux/layers/layers.reducers.test.ts @@ -42,8 +42,8 @@ const layersState: LayersState = { layersVisibility: { [layerFixture.id]: true, }, - layers: [ - { + layers: { + [layerFixture.id]: { details: layerFixture, texts: {}, rects: {}, @@ -51,7 +51,7 @@ const layersState: LayersState = { lines: [], images: {}, }, - ], + }, activeLayers, drawLayer: null, }, @@ -98,8 +98,8 @@ describe('layers reducer', () => { expect(data).toEqual({ activeLayers, drawLayer: null, - layers: [ - { + layers: { + [layersFixture.content[0].id]: { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, @@ -107,7 +107,7 @@ describe('layers reducer', () => { lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, }, - ], + }, layersVisibility: { [layersFixture.content[0].id]: layersFixture.content[0].visible, }, @@ -129,7 +129,7 @@ describe('layers reducer', () => { expect(data).toEqual({ activeLayers: [], drawLayer: null, - layers: [], + layers: {}, layersVisibility: {}, }); }); @@ -164,8 +164,8 @@ describe('layers reducer', () => { expect(dataPromiseFulfilled).toEqual({ activeLayers, drawLayer: null, - layers: [ - { + layers: { + [layersFixture.content[0].id]: { details: layersFixture.content[0], texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, @@ -173,7 +173,7 @@ describe('layers reducer', () => { lines: layerLinesFixture.content, images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, }, - ], + }, layersVisibility: { [layersFixture.content[0].id]: layersFixture.content[0].visible, }, @@ -223,9 +223,9 @@ describe('layers reducer', () => { layersStore.dispatch( layerAddImage({ modelId: 1, layerId: layerFixture.id, layerImage: layerImageFixture }), ); - expect(layersStore.getState().layers[1].data?.layers[0].images[layerImageFixture.id]).toEqual( - layerImageFixture, - ); + expect( + layersStore.getState().layers[1].data?.layers[layerFixture.id].images[layerImageFixture.id], + ).toEqual(layerImageFixture); }); it('should handle layerUpdateImageReducer', () => { @@ -235,9 +235,9 @@ describe('layers reducer', () => { layersStore.dispatch( layerUpdateImage({ modelId: 1, layerId: layerFixture.id, layerImage: layerImageFixture }), ); - expect(layersStore.getState().layers[1].data?.layers[0].images[layerImageFixture.id]).toEqual( - layerImageFixture, - ); + expect( + layersStore.getState().layers[1].data?.layers[layerFixture.id].images[layerImageFixture.id], + ).toEqual(layerImageFixture); }); it('should handle layerDeleteImageReducer', () => { @@ -248,7 +248,7 @@ describe('layers reducer', () => { layerDeleteImage({ modelId: 1, layerId: layerFixture.id, imageId: layerImageFixture.id }), ); expect( - layersStore.getState().layers[1].data?.layers[0].images[layerImageFixture.id], + layersStore.getState().layers[1].data?.layers[layerFixture.id].images[layerImageFixture.id], ).toBeUndefined(); }); @@ -259,8 +259,8 @@ describe('layers reducer', () => { layersStore.dispatch( layerAddText({ modelId: 1, layerId: layerFixture.id, layerText: layerTextFixture }), ); - expect(layersStore.getState().layers[1].data?.layers[0].texts[layerTextFixture.id]).toEqual( - layerTextFixture, - ); + expect( + layersStore.getState().layers[1].data?.layers[layerFixture.id].texts[layerTextFixture.id], + ).toEqual(layerTextFixture); }); }); diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index 1ded2929..c28e00ce 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -1,6 +1,11 @@ /* eslint-disable no-magic-numbers */ import { ActionReducerMapBuilder, PayloadAction } from '@reduxjs/toolkit'; -import { getLayerImage, getLayersForModel, getLayerText } from '@/redux/layers/layers.thunks'; +import { + getLayer, + getLayerImage, + getLayersForModel, + getLayerText, +} from '@/redux/layers/layers.thunks'; import { LayersState } from '@/redux/layers/layers.types'; import { LAYER_STATE_DEFAULT_DATA, @@ -40,6 +45,55 @@ export const getLayersForModelReducer = (builder: ActionReducerMapBuilder<Layers }); }; +export const getLayerReducer = (builder: ActionReducerMapBuilder<LayersState>): void => { + builder.addCase(getLayer.fulfilled, (state, action) => { + const { modelId, layerId } = action.meta.arg; + if (!state[modelId]) { + return; + } + const { data } = state[modelId]; + const updatedLayerDetails = action.payload; + if (!data || !updatedLayerDetails) { + return; + } + const layer = data.layers[layerId]; + if (layer) { + layer.details = updatedLayerDetails; + return; + } + + data.layers[layerId] = { + details: updatedLayerDetails, + texts: {}, + images: {}, + ovals: {}, + rects: {}, + lines: [], + }; + data.layersVisibility[layerId] = updatedLayerDetails.visible; + if (!updatedLayerDetails.locked) { + data.activeLayers.push(updatedLayerDetails.id); + } + }); +}; + +export const layerDeleteReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number }>, +): void => { + const { modelId, layerId } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + delete data.layersVisibility[layerId]; + delete data.layers[layerId]; + const activeLayerIndex = data.activeLayers.findIndex(activeLayerId => activeLayerId === layerId); + if (activeLayerIndex > -1) { + data.activeLayers.splice(activeLayerIndex, 1); + } +}; + export const getLayerImageReducer = (builder: ActionReducerMapBuilder<LayersState>): void => { builder.addCase(getLayerImage.fulfilled, (state, action) => { const { modelId, layerId } = action.meta.arg; @@ -48,7 +102,7 @@ export const getLayerImageReducer = (builder: ActionReducerMapBuilder<LayersStat if (!data || !layerImage) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -64,7 +118,7 @@ export const getLayerTextReducer = (builder: ActionReducerMapBuilder<LayersState if (!data || !layerText) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -146,7 +200,7 @@ export const layerAddImageReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -162,7 +216,7 @@ export const layerUpdateImageReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -178,7 +232,7 @@ export const layerDeleteImageReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -194,7 +248,7 @@ export const layerAddTextReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -210,7 +264,7 @@ export const layerUpdateTextReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -226,7 +280,7 @@ export const layerDeleteTextReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } @@ -266,7 +320,7 @@ export const layerDeleteRectReducer = ( if (!data) { return; } - const layer = data.layers.find(layerState => layerState.details.id === layerId); + const layer = data.layers[layerId]; if (!layer) { return; } diff --git a/src/redux/layers/layers.selectors.ts b/src/redux/layers/layers.selectors.ts index 8faf2a71..45b91bd9 100644 --- a/src/redux/layers/layers.selectors.ts +++ b/src/redux/layers/layers.selectors.ts @@ -24,7 +24,7 @@ export const layersDrawLayerSelector = createSelector( export const layerByIdSelector = createSelector( [layersStateForCurrentModelSelector, (_state, layerId: number): number => layerId], - (state, layerId) => state?.data?.layers.find(layer => layer.details.id === layerId), + (state, layerId) => state?.data?.layers[layerId], ); export const layersLoadingSelector = createSelector( @@ -39,11 +39,21 @@ export const layersVisibilityForCurrentModelSelector = createSelector( export const layersForCurrentModelSelector = createSelector( layersStateForCurrentModelSelector, - state => state?.data?.layers || [], + state => state?.data?.layers || {}, +); + +export const layersArrayForCurrentModelSelector = createSelector( + layersStateForCurrentModelSelector, + state => { + if (state && state.data) { + return Object.values(state.data.layers); + } + return []; + }, ); export const maxLayerZIndexAboveDiagramSelector = createSelector( - layersForCurrentModelSelector, + layersArrayForCurrentModelSelector, layers => { const layersAboveDiagram = layers.filter(layer => layer.details.z > 0); if (layersAboveDiagram.length === 0) { @@ -60,7 +70,7 @@ export const maxLayerZIndexAboveDiagramSelector = createSelector( ); export const maxLayerZIndexBelowDiagramSelector = createSelector( - layersForCurrentModelSelector, + layersArrayForCurrentModelSelector, layers => { const layerBelowDiagram = layers.filter(layer => layer.details.z < 0); if (layerBelowDiagram.length === 0) { @@ -77,7 +87,7 @@ export const maxLayerZIndexBelowDiagramSelector = createSelector( ); export const minLayerZIndexAboveDiagramSelector = createSelector( - layersForCurrentModelSelector, + layersArrayForCurrentModelSelector, layers => { const layersAboveDiagram = layers.filter(layer => layer.details.z > 0); if (layersAboveDiagram.length === 0) { @@ -94,7 +104,7 @@ export const minLayerZIndexAboveDiagramSelector = createSelector( ); export const minLayerZIndexBelowDiagramSelector = createSelector( - layersForCurrentModelSelector, + layersArrayForCurrentModelSelector, layers => { const layerBelowDiagram = layers.filter(layer => layer.details.z < 0); if (layerBelowDiagram.length === 0) { @@ -111,7 +121,7 @@ export const minLayerZIndexBelowDiagramSelector = createSelector( ); export const maxObjectZIndexForLayerSelector = createSelector( - [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], + [layersArrayForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], (layers, layerId) => { if (!layers || layers.length === 0 || !layerId) { return 0; @@ -134,7 +144,7 @@ export const maxObjectZIndexForLayerSelector = createSelector( ); export const minObjectZIndexForLayerSelector = createSelector( - [layersForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], + [layersArrayForCurrentModelSelector, (_state, layerId: number | null): number | null => layerId], (layers, layerId) => { if (!layers || layers.length === 0 || !layerId) { return 0; diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index 554865f1..19375020 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -18,12 +18,15 @@ import { layerUpdateRectReducer, layerDeleteRectReducer, layerAddOvalReducer, + getLayerReducer, + layerDeleteReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ name: 'layers', initialState: LAYERS_STATE_INITIAL_MOCK, reducers: { + layerDelete: layerDeleteReducer, setLayerVisibility: setLayerVisibilityReducer, setLayerToInactive: setLayerToInactiveReducer, setLayerToActive: setLayerToActiveReducer, @@ -43,10 +46,12 @@ export const layersSlice = createSlice({ getLayersForModelReducer(builder); getLayerImageReducer(builder); getLayerTextReducer(builder); + getLayerReducer(builder); }, }); export const { + layerDelete, setLayerVisibility, setLayerToInactive, setLayerToActive, diff --git a/src/redux/layers/layers.thunks.test.ts b/src/redux/layers/layers.thunks.test.ts index 3cde16a5..3894b5a6 100644 --- a/src/redux/layers/layers.thunks.test.ts +++ b/src/redux/layers/layers.thunks.test.ts @@ -64,16 +64,24 @@ describe('layers thunks', () => { expect(payload).toEqual({ activeLayers, drawLayer: null, - layers: [ - { + layers: { + [layersFixture.content[0].id]: { details: layersFixture.content[0], - texts: { [layerTextsFixture.content[0].id]: layerTextsFixture.content[0] }, - rects: { [layerRectsFixture.content[0].id]: layerRectsFixture.content[0] }, - ovals: { [layerOvalsFixture.content[0].id]: layerOvalsFixture.content[0] }, + texts: { + [layerTextsFixture.content[0].id]: layerTextsFixture.content[0], + }, + rects: { + [layerRectsFixture.content[0].id]: layerRectsFixture.content[0], + }, + ovals: { + [layerOvalsFixture.content[0].id]: layerOvalsFixture.content[0], + }, lines: layerLinesFixture.content, - images: { [layerImagesFixture.content[0].id]: layerImagesFixture.content[0] }, + images: { + [layerImagesFixture.content[0].id]: layerImagesFixture.content[0], + }, }, - ], + }, layersVisibility: { [layersFixture.content[0].id]: layersFixture.content[0].visible, }, diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index 77e96278..ee499b38 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -10,6 +10,7 @@ import { axiosInstanceNewAPI } from '@/services/api/utils/axiosInstance'; import { layerSchema } from '@/models/layerSchema'; import { LAYERS_FETCHING_ERROR_PREFIX } from '@/redux/layers/layers.constants'; import { + LayerState, LayerStoreInterface, LayersVisibilitiesState, LayerUpdateInterface, @@ -93,8 +94,12 @@ export const getLayersForModel = createAsyncThunk< const activeLayers = layers .filter(layer => !layer.details.locked) .map(layer => layer.details.id); + const layersDict = layers.reduce((acc: { [key: string]: LayerState }, layer) => { + acc[layer.details.id] = layer; + return acc; + }, {}); return { - layers, + layers: layersDict, layersVisibility, activeLayers, drawLayer: null, @@ -114,7 +119,6 @@ export const addLayerForModel = createAsyncThunk<Layer | null, LayerStoreInterfa locked, z: zIndex, }); - const isDataValid = validateDataUsingZodSchema(data, layerSchema); return isDataValid ? data : null; diff --git a/src/redux/layers/layers.types.ts b/src/redux/layers/layers.types.ts index 815a69c5..fef1836e 100644 --- a/src/redux/layers/layers.types.ts +++ b/src/redux/layers/layers.types.ts @@ -27,13 +27,17 @@ export type LayerState = { images: { [key: string]: LayerImage }; }; +export type LayersDictState = { + [key: number]: LayerState; +}; + export type LayerVisibilityState = { [key: number]: boolean; }; export type LayersVisibilitiesState = { layersVisibility: LayerVisibilityState; - layers: LayerState[]; + layers: LayersDictState; activeLayers: Array<number>; drawLayer: number | null; }; diff --git a/src/redux/layers/utils/setLayerOval.ts b/src/redux/layers/utils/setLayerOval.ts index af6bde00..362914b0 100644 --- a/src/redux/layers/utils/setLayerOval.ts +++ b/src/redux/layers/utils/setLayerOval.ts @@ -1,5 +1,5 @@ import { LayerOval } from '@/types/models'; -import { LayerState } from '@/redux/layers/layers.types'; +import { LayersDictState } from '@/redux/layers/layers.types'; export default function setLayerOval({ layerId, @@ -7,10 +7,10 @@ export default function setLayerOval({ layerOval, }: { layerId: number; - layers: LayerState[]; + layers: LayersDictState; layerOval: LayerOval; }): void { - const layer = layers.find(layerState => layerState.details.id === layerId); + const layer = layers[layerId]; if (!layer) { return; } diff --git a/src/redux/layers/utils/setLayerRect.ts b/src/redux/layers/utils/setLayerRect.ts index a0b9abbb..93dcc87b 100644 --- a/src/redux/layers/utils/setLayerRect.ts +++ b/src/redux/layers/utils/setLayerRect.ts @@ -1,5 +1,5 @@ import { LayerRect } from '@/types/models'; -import { LayerState } from '@/redux/layers/layers.types'; +import { LayersDictState } from '@/redux/layers/layers.types'; export default function setLayerRect({ layerId, @@ -7,10 +7,10 @@ export default function setLayerRect({ layerRect, }: { layerId: number; - layers: LayerState[]; + layers: LayersDictState; layerRect: LayerRect; }): void { - const layer = layers.find(layerState => layerState.details.id === layerId); + const layer = layers[layerId]; if (!layer) { return; } -- GitLab From cbb7d634c17b12b648b20f619777b9d2356d343b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Thu, 20 Feb 2025 15:40:43 +0100 Subject: [PATCH 14/15] fix: revert coverage changes --- coverage/lcov-report/index.html | 4665 +---- coverage/lcov.info | 30852 +----------------------------- 2 files changed, 109 insertions(+), 35408 deletions(-) diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html index 618a0553..e14d1ce6 100644 --- a/coverage/lcov-report/index.html +++ b/coverage/lcov-report/index.html @@ -3,4569 +3,114 @@ <html lang="en"> <head> - <title>Code coverage report for All files</title> - <meta charset="utf-8" /> - <link rel="stylesheet" href="prettify.css" /> - <link rel="stylesheet" href="base.css" /> - <link rel="shortcut icon" type="image/x-icon" href="favicon.png" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <style type='text/css'> - .coverage-summary .sorter { - background-image: url(sort-arrow-sprite.png); - } - </style> + <title>Code coverage report for All files</title> + <meta charset="utf-8" /> + <link rel="stylesheet" href="prettify.css" /> + <link rel="stylesheet" href="base.css" /> + <link rel="shortcut icon" type="image/x-icon" href="favicon.png" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <style type='text/css'> + .coverage-summary .sorter { + background-image: url(sort-arrow-sprite.png); + } + </style> </head> - + <body> <div class='wrapper'> - <div class='pad1'> - <h1>All files</h1> - <div class='clearfix'> - - <div class='fl pad1y space-right2'> - <span class="strong">0% </span> - <span class="quiet">Statements</span> - <span class='fraction'>0/15245</span> - </div> - - - <div class='fl pad1y space-right2'> - <span class="strong">0% </span> - <span class="quiet">Branches</span> - <span class='fraction'>0/2901</span> - </div> - - - <div class='fl pad1y space-right2'> - <span class="strong">0% </span> - <span class="quiet">Functions</span> - <span class='fraction'>0/2607</span> - </div> - - - <div class='fl pad1y space-right2'> - <span class="strong">0% </span> - <span class="quiet">Lines</span> - <span class='fraction'>0/13110</span> - </div> - - - </div> - <p class="quiet"> - Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block. - </p> - <template id="filterTemplate"> - <div class="quiet"> - Filter: - <input oninput="onInput()" type="search" id="fileSearch"> - </div> - </template> - </div> - <div class='status-line low'></div> - <div class="pad1"> -<table class="coverage-summary"> -<thead> -<tr> - <th data-col="file" data-fmt="html" data-html="true" class="file">File</th> - <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th> - <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th> - <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th> - <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th> - <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th> - <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th> - <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th> - <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th> - <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th> -</tr> -</thead> -<tbody><tr> - <td class="file low" data-value="components/AppWrapper"><a href="components/AppWrapper/index.html">components/AppWrapper</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea"><a href="components/FunctionalArea/index.html">components/FunctionalArea</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/ContextMenu"><a href="components/FunctionalArea/ContextMenu/index.html">components/FunctionalArea/ContextMenu</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="42" class="abs low">0/42</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/CookieBanner"><a href="components/FunctionalArea/CookieBanner/index.html">components/FunctionalArea/CookieBanner</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="58" class="abs low">0/58</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="52" class="abs low">0/52</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/MapNavigation"><a href="components/FunctionalArea/MapNavigation/index.html">components/FunctionalArea/MapNavigation</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="48" class="abs low">0/48</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="43" class="abs low">0/43</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal"><a href="components/FunctionalArea/Modal/index.html">components/FunctionalArea/Modal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="43" class="abs low">0/43</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/AccessDeniedModal"><a href="components/FunctionalArea/Modal/AccessDeniedModal/index.html">components/FunctionalArea/Modal/AccessDeniedModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="31" class="abs low">0/31</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/AddCommentModal"><a href="components/FunctionalArea/Modal/AddCommentModal/index.html">components/FunctionalArea/Modal/AddCommentModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayGroupModal"><a href="components/FunctionalArea/Modal/EditOverlayGroupModal/index.html">components/FunctionalArea/Modal/EditOverlayGroupModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayGroupModal/hooks"><a href="components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/index.html">components/FunctionalArea/Modal/EditOverlayGroupModal/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="35" class="abs low">0/35</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayModal"><a href="components/FunctionalArea/Modal/EditOverlayModal/index.html">components/FunctionalArea/Modal/EditOverlayModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/EditOverlayModal/hooks"><a href="components/FunctionalArea/Modal/EditOverlayModal/hooks/index.html">components/FunctionalArea/Modal/EditOverlayModal/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="46" class="abs low">0/46</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="43" class="abs low">0/43</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/ErrorReportModal"><a href="components/FunctionalArea/Modal/ErrorReportModal/index.html">components/FunctionalArea/Modal/ErrorReportModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="45" class="abs low">0/45</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LayerFactoryModal"><a href="components/FunctionalArea/Modal/LayerFactoryModal/index.html">components/FunctionalArea/Modal/LayerFactoryModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="60" class="abs low">0/60</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="57" class="abs low">0/57</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LayerImageObjectModal"><a href="components/FunctionalArea/Modal/LayerImageObjectModal/index.html">components/FunctionalArea/Modal/LayerImageObjectModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="137" class="abs low">0/137</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="130" class="abs low">0/130</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LayerOvalFactoryModal"><a href="components/FunctionalArea/Modal/LayerOvalFactoryModal/index.html">components/FunctionalArea/Modal/LayerOvalFactoryModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="53" class="abs low">0/53</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="49" class="abs low">0/49</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LayerRectFactoryModal"><a href="components/FunctionalArea/Modal/LayerRectFactoryModal/index.html">components/FunctionalArea/Modal/LayerRectFactoryModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="99" class="abs low">0/99</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="93" class="abs low">0/93</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LayerTextFactoryModal"><a href="components/FunctionalArea/Modal/LayerTextFactoryModal/index.html">components/FunctionalArea/Modal/LayerTextFactoryModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="120" class="abs low">0/120</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="108" class="abs low">0/108</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LicenseModal"><a href="components/FunctionalArea/Modal/LicenseModal/index.html">components/FunctionalArea/Modal/LicenseModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LoggedInMenuModal"><a href="components/FunctionalArea/Modal/LoggedInMenuModal/index.html">components/FunctionalArea/Modal/LoggedInMenuModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/LoginModal"><a href="components/FunctionalArea/Modal/LoginModal/index.html">components/FunctionalArea/Modal/LoginModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/ModalLayout"><a href="components/FunctionalArea/Modal/ModalLayout/index.html">components/FunctionalArea/Modal/ModalLayout</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/MolArtModal"><a href="components/FunctionalArea/Modal/MolArtModal/index.html">components/FunctionalArea/Modal/MolArtModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/OverviewImagesModal"><a href="components/FunctionalArea/Modal/OverviewImagesModal/index.html">components/FunctionalArea/Modal/OverviewImagesModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/OverviewImagesModal/utils"><a href="components/FunctionalArea/Modal/OverviewImagesModal/utils/index.html">components/FunctionalArea/Modal/OverviewImagesModal/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="141" class="abs low">0/141</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="127" class="abs low">0/127</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal"><a href="components/FunctionalArea/Modal/PublicationsModal/index.html">components/FunctionalArea/Modal/PublicationsModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="78" class="abs low">0/78</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="71" class="abs low">0/71</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="27" class="abs low">0/27</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="59" class="abs low">0/59</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="57" class="abs low">0/57</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="42" class="abs low">0/42</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="39" class="abs low">0/39</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader"><a href="components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader/index.html">components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/PublicationsModal/utils"><a href="components/FunctionalArea/Modal/PublicationsModal/utils/index.html">components/FunctionalArea/Modal/PublicationsModal/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/QuestionModal"><a href="components/FunctionalArea/Modal/QuestionModal/index.html">components/FunctionalArea/Modal/QuestionModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/Modal/ToSModal"><a href="components/FunctionalArea/Modal/ToSModal/index.html">components/FunctionalArea/Modal/ToSModal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/NavBar"><a href="components/FunctionalArea/NavBar/index.html">components/FunctionalArea/NavBar</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="44" class="abs low">0/44</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="42" class="abs low">0/42</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar"><a href="components/FunctionalArea/TopBar/index.html">components/FunctionalArea/TopBar</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar/ClearAnchorsButton"><a href="components/FunctionalArea/TopBar/ClearAnchorsButton/index.html">components/FunctionalArea/TopBar/ClearAnchorsButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar/SearchBar"><a href="components/FunctionalArea/TopBar/SearchBar/index.html">components/FunctionalArea/TopBar/SearchBar</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="97" class="abs low">0/97</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="91" class="abs low">0/91</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar/User"><a href="components/FunctionalArea/TopBar/User/index.html">components/FunctionalArea/TopBar/User</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar/User/AuthenticatedUser"><a href="components/FunctionalArea/TopBar/User/AuthenticatedUser/index.html">components/FunctionalArea/TopBar/User/AuthenticatedUser</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar/User/UnauthenticatedUser"><a href="components/FunctionalArea/TopBar/User/UnauthenticatedUser/index.html">components/FunctionalArea/TopBar/User/UnauthenticatedUser</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="components/FunctionalArea/TopBar/User/hooks"><a href="components/FunctionalArea/TopBar/User/hooks/index.html">components/FunctionalArea/TopBar/User/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="35" class="abs low">0/35</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map"><a href="components/Map/index.html">components/Map</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer"><a href="components/Map/Drawer/index.html">components/Map/Drawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="35" class="abs low">0/35</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer"><a href="components/Map/Drawer/AvailablePluginsDrawer/index.html">components/Map/Drawer/AvailablePluginsDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="70" class="abs low">0/70</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="64" class="abs low">0/64</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks"><a href="components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks/index.html">components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="37" class="abs low">0/37</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins"><a href="components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins/index.html">components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins"><a href="components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins/index.html">components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins"><a href="components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins/index.html">components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer"><a href="components/Map/Drawer/BioEntityDrawer/index.html">components/Map/Drawer/BioEntityDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="44" class="abs low">0/44</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="43" class="abs low">0/43</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/AnnotationItem"><a href="components/Map/Drawer/BioEntityDrawer/AnnotationItem/index.html">components/Map/Drawer/BioEntityDrawer/AnnotationItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/AssociatedSubmap"><a href="components/Map/Drawer/BioEntityDrawer/AssociatedSubmap/index.html">components/Map/Drawer/BioEntityDrawer/AssociatedSubmap</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/ChemicalsList"><a href="components/Map/Drawer/BioEntityDrawer/ChemicalsList/index.html">components/Map/Drawer/BioEntityDrawer/ChemicalsList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/Comments"><a href="components/Map/Drawer/BioEntityDrawer/Comments/index.html">components/Map/Drawer/BioEntityDrawer/Comments</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/DrugsList"><a href="components/Map/Drawer/BioEntityDrawer/DrugsList/index.html">components/Map/Drawer/BioEntityDrawer/DrugsList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/ModificationResidueItem"><a href="components/Map/Drawer/BioEntityDrawer/ModificationResidueItem/index.html">components/Map/Drawer/BioEntityDrawer/ModificationResidueItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/BioEntityDrawer/OverlayData/utils"><a href="components/Map/Drawer/BioEntityDrawer/OverlayData/utils/index.html">components/Map/Drawer/BioEntityDrawer/OverlayData/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/CommentDrawer"><a href="components/Map/Drawer/CommentDrawer/index.html">components/Map/Drawer/CommentDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer"><a href="components/Map/Drawer/ExportDrawer/index.html">components/Map/Drawer/ExportDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CheckboxFilter"><a href="components/Map/Drawer/ExportDrawer/CheckboxFilter/index.html">components/Map/Drawer/ExportDrawer/CheckboxFilter</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput"><a href="components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput/index.html">components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CollapsibleSection"><a href="components/Map/Drawer/ExportDrawer/CollapsibleSection/index.html">components/Map/Drawer/ExportDrawer/CollapsibleSection</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/CurrentView"><a href="components/Map/Drawer/ExportDrawer/CurrentView/index.html">components/Map/Drawer/ExportDrawer/CurrentView</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/Elements"><a href="components/Map/Drawer/ExportDrawer/Elements/index.html">components/Map/Drawer/ExportDrawer/Elements</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/index.html">components/Map/Drawer/ExportDrawer/ExportCompound</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="92" class="abs low">0/92</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="83" class="abs low">0/83</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/Annotations"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/Annotations</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="37" class="abs low">0/37</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="77" class="abs low">0/77</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="71" class="abs low">0/71</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/Submap"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/Submap/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/Submap</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/ExportCompound/utils"><a href="components/Map/Drawer/ExportDrawer/ExportCompound/utils/index.html">components/Map/Drawer/ExportDrawer/ExportCompound/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="65" class="abs low">0/65</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="55" class="abs low">0/55</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/Graphics"><a href="components/Map/Drawer/ExportDrawer/Graphics/index.html">components/Map/Drawer/ExportDrawer/Graphics</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/Network"><a href="components/Map/Drawer/ExportDrawer/Network/index.html">components/Map/Drawer/ExportDrawer/Network</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/TabButton"><a href="components/Map/Drawer/ExportDrawer/TabButton/index.html">components/Map/Drawer/ExportDrawer/TabButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ExportDrawer/TabNavigator"><a href="components/Map/Drawer/ExportDrawer/TabNavigator/index.html">components/Map/Drawer/ExportDrawer/TabNavigator</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/LayersDrawer"><a href="components/Map/Drawer/LayersDrawer/index.html">components/Map/Drawer/LayersDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="379" class="abs low">0/379</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="89" class="abs low">0/89</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="104" class="abs low">0/104</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="360" class="abs low">0/360</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlayGroupDrawer"><a href="components/Map/Drawer/OverlayGroupDrawer/index.html">components/Map/Drawer/OverlayGroupDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlayGroupDrawer/hooks"><a href="components/Map/Drawer/OverlayGroupDrawer/hooks/index.html">components/Map/Drawer/OverlayGroupDrawer/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer"><a href="components/Map/Drawer/OverlaysDrawer/index.html">components/Map/Drawer/OverlaysDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/GeneralOverlays"><a href="components/Map/Drawer/OverlaysDrawer/GeneralOverlays/index.html">components/Map/Drawer/OverlaysDrawer/GeneralOverlays</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem"><a href="components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem/index.html">components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/OverlaysLegends"><a href="components/Map/Drawer/OverlaysDrawer/OverlaysLegends/index.html">components/Map/Drawer/OverlaysDrawer/OverlaysLegends</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend"><a href="components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend/index.html">components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="39" class="abs low">0/39</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="64" class="abs low">0/64</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="61" class="abs low">0/61</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks"><a href="components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks/index.html">components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="31" class="abs low">0/31</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/OverlaysDrawer/hooks"><a href="components/Map/Drawer/OverlaysDrawer/hooks/index.html">components/Map/Drawer/OverlaysDrawer/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="42" class="abs low">0/42</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="36" class="abs low">0/36</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ProjectInfoDrawer"><a href="components/Map/Drawer/ProjectInfoDrawer/index.html">components/Map/Drawer/ProjectInfoDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ReactionDrawer"><a href="components/Map/Drawer/ReactionDrawer/index.html">components/Map/Drawer/ReactionDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList"><a href="components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList/index.html">components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper"><a href="components/Map/Drawer/SearchDrawerWrapper/index.html">components/Map/Drawer/SearchDrawerWrapper</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList"><a href="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/index.html">components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList"><a href="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/index.html">components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem"><a href="components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/index.html">components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="39" class="abs low">0/39</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="36" class="abs low">0/36</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion"><a href="components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion/index.html">components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="55" class="abs low">0/55</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="50" class="abs low">0/50</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils"><a href="components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils/index.html">components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader"><a href="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/index.html">components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch"><a href="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch/index.html">components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs"><a href="components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs/index.html">components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer"><a href="components/Map/Drawer/SubmapsDrawer/index.html">components/Map/Drawer/SubmapsDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer/SubmapItem"><a href="components/Map/Drawer/SubmapsDrawer/SubmapItem/index.html">components/Map/Drawer/SubmapsDrawer/SubmapItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap"><a href="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.html">components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="27" class="abs low">0/27</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils"><a href="components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/index.html">components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Legend"><a href="components/Map/Legend/index.html">components/Map/Legend</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Legend/LegendHeader"><a href="components/Map/Legend/LegendHeader/index.html">components/Map/Legend/LegendHeader</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Legend/LegendImages"><a href="components/Map/Legend/LegendImages/index.html">components/Map/Legend/LegendImages</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Legend/LegendTabs"><a href="components/Map/Legend/LegendTabs/index.html">components/Map/Legend/LegendTabs</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/Legend/LegendTabs/LegendTab"><a href="components/Map/Legend/LegendTabs/LegendTab/index.html">components/Map/Legend/LegendTabs/LegendTab</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapAdditionalActions"><a href="components/Map/MapAdditionalActions/index.html">components/Map/MapAdditionalActions</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapAdditionalActions/utils"><a href="components/Map/MapAdditionalActions/utils/index.html">components/Map/MapAdditionalActions/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="57" class="abs low">0/57</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="51" class="abs low">0/51</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapAdditionalLogos"><a href="components/Map/MapAdditionalLogos/index.html">components/Map/MapAdditionalLogos</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapBackgroundSwitch"><a href="components/Map/MapBackgroundSwitch/index.html">components/Map/MapBackgroundSwitch</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapLoader"><a href="components/Map/MapLoader/index.html">components/Map/MapLoader</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer"><a href="components/Map/MapViewer/index.html">components/Map/MapViewer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils"><a href="components/Map/MapViewer/utils/index.html">components/Map/MapViewer/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="27" class="abs low">0/27</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config"><a href="components/Map/MapViewer/utils/config/index.html">components/Map/MapViewer/utils/config</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="112" class="abs low">0/112</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="100" class="abs low">0/100</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/additionalLayers"><a href="components/Map/MapViewer/utils/config/additionalLayers/index.html">components/Map/MapViewer/utils/config/additionalLayers</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="207" class="abs low">0/207</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="72" class="abs low">0/72</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="42" class="abs low">0/42</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="204" class="abs low">0/204</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/commentsLayer"><a href="components/Map/MapViewer/utils/config/commentsLayer/index.html">components/Map/MapViewer/utils/config/commentsLayer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="36" class="abs low">0/36</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/mapCardLayer"><a href="components/Map/MapViewer/utils/config/mapCardLayer/index.html">components/Map/MapViewer/utils/config/mapCardLayer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/overlaysLayer"><a href="components/Map/MapViewer/utils/config/overlaysLayer/index.html">components/Map/MapViewer/utils/config/overlaysLayer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="205" class="abs low">0/205</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="56" class="abs low">0/56</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="40" class="abs low">0/40</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="187" class="abs low">0/187</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/pinsLayer"><a href="components/Map/MapViewer/utils/config/pinsLayer/index.html">components/Map/MapViewer/utils/config/pinsLayer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="172" class="abs low">0/172</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="37" class="abs low">0/37</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="153" class="abs low">0/153</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/processLayer"><a href="components/Map/MapViewer/utils/config/processLayer/index.html">components/Map/MapViewer/utils/config/processLayer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="151" class="abs low">0/151</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="145" class="abs low">0/145</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/config/reactionsLayer"><a href="components/Map/MapViewer/utils/config/reactionsLayer/index.html">components/Map/MapViewer/utils/config/reactionsLayer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="59" class="abs low">0/59</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="55" class="abs low">0/55</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/listeners"><a href="components/Map/MapViewer/utils/listeners/index.html">components/Map/MapViewer/utils/listeners</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="93" class="abs low">0/93</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="87" class="abs low">0/87</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mapSingleClick"><a href="components/Map/MapViewer/utils/listeners/mapSingleClick/index.html">components/Map/MapViewer/utils/listeners/mapSingleClick</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mouseClick"><a href="components/Map/MapViewer/utils/listeners/mouseClick/index.html">components/Map/MapViewer/utils/listeners/mouseClick</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="69" class="abs low">0/69</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="65" class="abs low">0/65</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick"><a href="components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/index.html">components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="94" class="abs low">0/94</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="90" class="abs low">0/90</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick"><a href="components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick/index.html">components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="46" class="abs low">0/46</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/listeners/pinIconClick"><a href="components/Map/MapViewer/utils/listeners/pinIconClick/index.html">components/Map/MapViewer/utils/listeners/pinIconClick</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/coords"><a href="components/Map/MapViewer/utils/shapes/coords/index.html">components/Map/MapViewer/utils/shapes/coords</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="133" class="abs low">0/133</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="39" class="abs low">0/39</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="131" class="abs low">0/131</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/elements"><a href="components/Map/MapViewer/utils/shapes/elements/index.html">components/Map/MapViewer/utils/shapes/elements</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="417" class="abs low">0/417</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="164" class="abs low">0/164</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="40" class="abs low">0/40</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="416" class="abs low">0/416</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/elements/Glyph"><a href="components/Map/MapViewer/utils/shapes/elements/Glyph/index.html">components/Map/MapViewer/utils/shapes/elements/Glyph</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="127" class="abs low">0/127</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="127" class="abs low">0/127</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer"><a href="components/Map/MapViewer/utils/shapes/layer/index.html">components/Map/MapViewer/utils/shapes/layer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="143" class="abs low">0/143</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="25" class="abs low">0/25</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="142" class="abs low">0/142</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer/elements"><a href="components/Map/MapViewer/utils/shapes/layer/elements/index.html">components/Map/MapViewer/utils/shapes/layer/elements</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="254" class="abs low">0/254</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="254" class="abs low">0/254</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer/interaction"><a href="components/Map/MapViewer/utils/shapes/layer/interaction/index.html">components/Map/MapViewer/utils/shapes/layer/interaction</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="131" class="abs low">0/131</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="41" class="abs low">0/41</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="130" class="abs low">0/130</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/layer/utils"><a href="components/Map/MapViewer/utils/shapes/layer/utils/index.html">components/Map/MapViewer/utils/shapes/layer/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/overlay"><a href="components/Map/MapViewer/utils/shapes/overlay/index.html">components/Map/MapViewer/utils/shapes/overlay</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="127" class="abs low">0/127</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="40" class="abs low">0/40</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="126" class="abs low">0/126</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/reaction"><a href="components/Map/MapViewer/utils/shapes/reaction/index.html">components/Map/MapViewer/utils/shapes/reaction</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="160" class="abs low">0/160</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="35" class="abs low">0/35</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="160" class="abs low">0/160</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/style"><a href="components/Map/MapViewer/utils/shapes/style/index.html">components/Map/MapViewer/utils/shapes/style</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="60" class="abs low">0/60</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="59" class="abs low">0/59</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/shapes/text"><a href="components/Map/MapViewer/utils/shapes/text/index.html">components/Map/MapViewer/utils/shapes/text</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="54" class="abs low">0/54</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="53" class="abs low">0/53</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/MapViewer/utils/websocket"><a href="components/Map/MapViewer/utils/websocket/index.html">components/Map/MapViewer/utils/websocket</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="87" class="abs low">0/87</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="85" class="abs low">0/85</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer"><a href="components/Map/PluginsDrawer/index.html">components/Map/PluginsDrawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginContent"><a href="components/Map/PluginsDrawer/PluginContent/index.html">components/Map/PluginsDrawer/PluginContent</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginContent/utils"><a href="components/Map/PluginsDrawer/PluginContent/utils/index.html">components/Map/PluginsDrawer/PluginContent/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader"><a href="components/Map/PluginsDrawer/PluginsHeader/index.html">components/Map/PluginsDrawer/PluginsHeader</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo"><a href="components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/index.html">components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton"><a href="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/index.html">components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement"><a href="components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement/index.html">components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginsTabs"><a href="components/Map/PluginsDrawer/PluginsTabs/index.html">components/Map/PluginsDrawer/PluginsTabs</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab"><a href="components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab/index.html">components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - </tr> - -<tr> - <td class="file low" data-value="components/SPA"><a href="components/SPA/index.html">components/SPA</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - </tr> - -<tr> - <td class="file low" data-value="constants"><a href="constants/index.html">constants</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="179" class="abs low">0/179</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="99" class="abs low">0/99</td> - </tr> - -<tr> - <td class="file low" data-value="hooks"><a href="hooks/index.html">hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="31" class="abs low">0/31</td> - </tr> - -<tr> - <td class="file low" data-value="models"><a href="models/index.html">models</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="376" class="abs low">0/376</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="272" class="abs low">0/272</td> - </tr> - -<tr> - <td class="file low" data-value="models/fixtures"><a href="models/fixtures/index.html">models/fixtures</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="265" class="abs low">0/265</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="212" class="abs low">0/212</td> - </tr> - -<tr> - <td class="file low" data-value="models/generators"><a href="models/generators/index.html">models/generators</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="43" class="abs low">0/43</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="37" class="abs low">0/37</td> - </tr> - -<tr> - <td class="file low" data-value="models/mocks"><a href="models/mocks/index.html">models/mocks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="46" class="abs low">0/46</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - </tr> - -<tr> - <td class="file low" data-value="redux"><a href="redux/index.html">redux</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="134" class="abs low">0/134</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="83" class="abs low">0/83</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="130" class="abs low">0/130</td> - </tr> - -<tr> - <td class="file low" data-value="redux/autocomplete"><a href="redux/autocomplete/index.html">redux/autocomplete</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="86" class="abs low">0/86</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="70" class="abs low">0/70</td> - </tr> - -<tr> - <td class="file low" data-value="redux/bioEntity"><a href="redux/bioEntity/index.html">redux/bioEntity</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="60" class="abs low">0/60</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="42" class="abs low">0/42</td> - </tr> - -<tr> - <td class="file low" data-value="redux/chemicals"><a href="redux/chemicals/index.html">redux/chemicals</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="136" class="abs low">0/136</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="48" class="abs low">0/48</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="104" class="abs low">0/104</td> - </tr> - -<tr> - <td class="file low" data-value="redux/comment"><a href="redux/comment/index.html">redux/comment</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="64" class="abs low">0/64</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="49" class="abs low">0/49</td> - </tr> - -<tr> - <td class="file low" data-value="redux/comment/thunks"><a href="redux/comment/thunks/index.html">redux/comment/thunks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="36" class="abs low">0/36</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - </tr> - -<tr> - <td class="file low" data-value="redux/configuration"><a href="redux/configuration/index.html">redux/configuration</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="208" class="abs low">0/208</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="44" class="abs low">0/44</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="145" class="abs low">0/145</td> - </tr> - -<tr> - <td class="file low" data-value="redux/constant"><a href="redux/constant/index.html">redux/constant</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="33" class="abs low">0/33</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - </tr> - -<tr> - <td class="file low" data-value="redux/contextMenu"><a href="redux/contextMenu/index.html">redux/contextMenu</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="redux/cookieBanner"><a href="redux/cookieBanner/index.html">redux/cookieBanner</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="27" class="abs low">0/27</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - </tr> - -<tr> - <td class="file low" data-value="redux/drawer"><a href="redux/drawer/index.html">redux/drawer</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="283" class="abs low">0/283</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="63" class="abs low">0/63</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="225" class="abs low">0/225</td> - </tr> - -<tr> - <td class="file low" data-value="redux/drugs"><a href="redux/drugs/index.html">redux/drugs</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="136" class="abs low">0/136</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="48" class="abs low">0/48</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="103" class="abs low">0/103</td> - </tr> - -<tr> - <td class="file low" data-value="redux/entityNumber"><a href="redux/entityNumber/index.html">redux/entityNumber</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - </tr> - -<tr> - <td class="file low" data-value="redux/export"><a href="redux/export/index.html">redux/export</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="81" class="abs low">0/81</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="71" class="abs low">0/71</td> - </tr> - -<tr> - <td class="file low" data-value="redux/glyphs"><a href="redux/glyphs/index.html">redux/glyphs</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="66" class="abs low">0/66</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="53" class="abs low">0/53</td> - </tr> - -<tr> - <td class="file low" data-value="redux/hooks"><a href="redux/hooks/index.html">redux/hooks</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="redux/layers"><a href="redux/layers/index.html">redux/layers</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="517" class="abs low">0/517</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="126" class="abs low">0/126</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="85" class="abs low">0/85</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="447" class="abs low">0/447</td> - </tr> - -<tr> - <td class="file low" data-value="redux/layers/utils"><a href="redux/layers/utils/index.html">redux/layers/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="redux/legend"><a href="redux/legend/index.html">redux/legend</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="79" class="abs low">0/79</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="55" class="abs low">0/55</td> - </tr> - -<tr> - <td class="file low" data-value="redux/map"><a href="redux/map/index.html">redux/map</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="308" class="abs low">0/308</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="65" class="abs low">0/65</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="51" class="abs low">0/51</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="236" class="abs low">0/236</td> - </tr> - -<tr> - <td class="file low" data-value="redux/map/middleware"><a href="redux/map/middleware/index.html">redux/map/middleware</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="44" class="abs low">0/44</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - </tr> - -<tr> - <td class="file low" data-value="redux/mapEditTools"><a href="redux/mapEditTools/index.html">redux/mapEditTools</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - </tr> - -<tr> - <td class="file low" data-value="redux/markers"><a href="redux/markers/index.html">redux/markers</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="68" class="abs low">0/68</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="44" class="abs low">0/44</td> - </tr> - -<tr> - <td class="file low" data-value="redux/middlewares"><a href="redux/middlewares/index.html">redux/middlewares</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - </tr> - -<tr> - <td class="file low" data-value="redux/modal"><a href="redux/modal/index.html">redux/modal</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="209" class="abs low">0/209</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="37" class="abs low">0/37</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="168" class="abs low">0/168</td> - </tr> - -<tr> - <td class="file low" data-value="redux/modelElements"><a href="redux/modelElements/index.html">redux/modelElements</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="266" class="abs low">0/266</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="55" class="abs low">0/55</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="85" class="abs low">0/85</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="209" class="abs low">0/209</td> - </tr> - -<tr> - <td class="file low" data-value="redux/models"><a href="redux/models/index.html">redux/models</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="99" class="abs low">0/99</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="27" class="abs low">0/27</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="66" class="abs low">0/66</td> - </tr> - -<tr> - <td class="file low" data-value="redux/newReactions"><a href="redux/newReactions/index.html">redux/newReactions</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="83" class="abs low">0/83</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="67" class="abs low">0/67</td> - </tr> - -<tr> - <td class="file low" data-value="redux/oauth"><a href="redux/oauth/index.html">redux/oauth</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="49" class="abs low">0/49</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="39" class="abs low">0/39</td> - </tr> - -<tr> - <td class="file low" data-value="redux/overlayBioEntity"><a href="redux/overlayBioEntity/index.html">redux/overlayBioEntity</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="237" class="abs low">0/237</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="54" class="abs low">0/54</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="196" class="abs low">0/196</td> - </tr> - -<tr> - <td class="file low" data-value="redux/overlayGroup"><a href="redux/overlayGroup/index.html">redux/overlayGroup</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="91" class="abs low">0/91</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="80" class="abs low">0/80</td> - </tr> - -<tr> - <td class="file low" data-value="redux/overlays"><a href="redux/overlays/index.html">redux/overlays</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="216" class="abs low">0/216</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="51" class="abs low">0/51</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="174" class="abs low">0/174</td> - </tr> - -<tr> - <td class="file low" data-value="redux/plugins"><a href="redux/plugins/index.html">redux/plugins</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="190" class="abs low">0/190</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="141" class="abs low">0/141</td> - </tr> - -<tr> - <td class="file low" data-value="redux/project"><a href="redux/project/index.html">redux/project</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="96" class="abs low">0/96</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="69" class="abs low">0/69</td> - </tr> - -<tr> - <td class="file low" data-value="redux/projects"><a href="redux/projects/index.html">redux/projects</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="45" class="abs low">0/45</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="36" class="abs low">0/36</td> - </tr> - -<tr> - <td class="file low" data-value="redux/publications"><a href="redux/publications/index.html">redux/publications</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="95" class="abs low">0/95</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="67" class="abs low">0/67</td> - </tr> - -<tr> - <td class="file low" data-value="redux/reactions"><a href="redux/reactions/index.html">redux/reactions</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="90" class="abs low">0/90</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="69" class="abs low">0/69</td> - </tr> - -<tr> - <td class="file low" data-value="redux/root"><a href="redux/root/index.html">redux/root</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="147" class="abs low">0/147</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="135" class="abs low">0/135</td> - </tr> - -<tr> - <td class="file low" data-value="redux/search"><a href="redux/search/index.html">redux/search</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="92" class="abs low">0/92</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="69" class="abs low">0/69</td> - </tr> - -<tr> - <td class="file low" data-value="redux/selectors"><a href="redux/selectors/index.html">redux/selectors</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="redux/shapes"><a href="redux/shapes/index.html">redux/shapes</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="108" class="abs low">0/108</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="88" class="abs low">0/88</td> - </tr> - -<tr> - <td class="file low" data-value="redux/statistics"><a href="redux/statistics/index.html">redux/statistics</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="48" class="abs low">0/48</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="37" class="abs low">0/37</td> - </tr> - -<tr> - <td class="file low" data-value="redux/user"><a href="redux/user/index.html">redux/user</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="156" class="abs low">0/156</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="31" class="abs low">0/31</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="31" class="abs low">0/31</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="128" class="abs low">0/128</td> - </tr> - -<tr> - <td class="file low" data-value="services/api/utils"><a href="services/api/utils/index.html">services/api/utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="35" class="abs low">0/35</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager"><a href="services/pluginsManager/index.html">services/pluginsManager</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="134" class="abs low">0/134</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="113" class="abs low">0/113</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/bioEntities"><a href="services/pluginsManager/bioEntities/index.html">services/pluginsManager/bioEntities</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="91" class="abs low">0/91</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="81" class="abs low">0/81</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/interface"><a href="services/pluginsManager/interface/index.html">services/pluginsManager/interface</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/legend"><a href="services/pluginsManager/legend/index.html">services/pluginsManager/legend</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map"><a href="services/pluginsManager/map/index.html">services/pluginsManager/map</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="44" class="abs low">0/44</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="36" class="abs low">0/36</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/data"><a href="services/pluginsManager/map/data/index.html">services/pluginsManager/map/data</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/fitBounds"><a href="services/pluginsManager/map/fitBounds/index.html">services/pluginsManager/map/fitBounds</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="30" class="abs low">0/30</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/models"><a href="services/pluginsManager/map/models/index.html">services/pluginsManager/map/models</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/overlays"><a href="services/pluginsManager/map/overlays/index.html">services/pluginsManager/map/overlays</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="64" class="abs low">0/64</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="57" class="abs low">0/57</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/overlays/addDataOverlay"><a href="services/pluginsManager/map/overlays/addDataOverlay/index.html">services/pluginsManager/map/overlays/addDataOverlay</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="39" class="abs low">0/39</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="32" class="abs low">0/32</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/overlays/showDataOverlay"><a href="services/pluginsManager/map/overlays/showDataOverlay/index.html">services/pluginsManager/map/overlays/showDataOverlay</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/overlays/types"><a href="services/pluginsManager/map/overlays/types/index.html">services/pluginsManager/map/overlays/types</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="18" class="abs low">0/18</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/position"><a href="services/pluginsManager/map/position/index.html">services/pluginsManager/map/position</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/triggerSearch"><a href="services/pluginsManager/map/triggerSearch/index.html">services/pluginsManager/map/triggerSearch</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="133" class="abs low">0/133</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="121" class="abs low">0/121</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/map/zoom"><a href="services/pluginsManager/map/zoom/index.html">services/pluginsManager/map/zoom</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/overviewImage"><a href="services/pluginsManager/overviewImage/index.html">services/pluginsManager/overviewImage</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="54" class="abs low">0/54</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/pluginContextMenu"><a href="services/pluginsManager/pluginContextMenu/index.html">services/pluginsManager/pluginContextMenu</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/pluginsEventBus"><a href="services/pluginsManager/pluginsEventBus/index.html">services/pluginsManager/pluginsEventBus</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="27" class="abs low">0/27</td> - </tr> - -<tr> - <td class="file low" data-value="services/pluginsManager/project/data"><a href="services/pluginsManager/project/data/index.html">services/pluginsManager/project/data</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="59" class="abs low">0/59</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Accordion"><a href="shared/Accordion/index.html">shared/Accordion</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Accordion/AccordionItem"><a href="shared/Accordion/AccordionItem/index.html">shared/Accordion/AccordionItem</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Accordion/AccordionItemButton"><a href="shared/Accordion/AccordionItemButton/index.html">shared/Accordion/AccordionItemButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Accordion/AccordionItemHeading"><a href="shared/Accordion/AccordionItemHeading/index.html">shared/Accordion/AccordionItemHeading</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Accordion/AccordionItemPanel"><a href="shared/Accordion/AccordionItemPanel/index.html">shared/Accordion/AccordionItemPanel</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Autocomplete"><a href="shared/Autocomplete/index.html">shared/Autocomplete</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Button"><a href="shared/Button/index.html">shared/Button</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="shared/ColorPicker"><a href="shared/ColorPicker/index.html">shared/ColorPicker</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="26" class="abs low">0/26</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - </tr> - -<tr> - <td class="file low" data-value="shared/DrawerHeading"><a href="shared/DrawerHeading/index.html">shared/DrawerHeading</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="shared/DrawerHeadingBackwardButton"><a href="shared/DrawerHeadingBackwardButton/index.html">shared/DrawerHeadingBackwardButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Icon"><a href="shared/Icon/index.html">shared/Icon</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="54" class="abs low">0/54</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="52" class="abs low">0/52</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Icon/Icons"><a href="shared/Icon/Icons/index.html">shared/Icon/Icons</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="47" class="abs low">0/47</td> - </tr> - -<tr> - <td class="file low" data-value="shared/IconButton"><a href="shared/IconButton/index.html">shared/IconButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Input"><a href="shared/Input/index.html">shared/Input</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="8" class="abs low">0/8</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="shared/LinkButton"><a href="shared/LinkButton/index.html">shared/LinkButton</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="shared/LoadingIndicator"><a href="shared/LoadingIndicator/index.html">shared/LoadingIndicator</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="shared/OutsideClickWrapper"><a href="shared/OutsideClickWrapper/index.html">shared/OutsideClickWrapper</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Select"><a href="shared/Select/index.html">shared/Select</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="24" class="abs low">0/24</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Switch"><a href="shared/Switch/index.html">shared/Switch</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Textarea"><a href="shared/Textarea/index.html">shared/Textarea</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - </tr> - -<tr> - <td class="file low" data-value="shared/Toast"><a href="shared/Toast/index.html">shared/Toast</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="6" class="abs low">0/6</td> - </tr> - -<tr> - <td class="file low" data-value="types"><a href="types/index.html">types</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - </tr> - -<tr> - <td class="file low" data-value="utils"><a href="utils/index.html">utils</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="61" class="abs low">0/61</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="49" class="abs low">0/49</td> - </tr> - -<tr> - <td class="file low" data-value="utils/array"><a href="utils/array/index.html">utils/array</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - </tr> - -<tr> - <td class="file low" data-value="utils/bioEntity"><a href="utils/bioEntity/index.html">utils/bioEntity</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="23" class="abs low">0/23</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="21" class="abs low">0/21</td> - </tr> - -<tr> - <td class="file low" data-value="utils/canvas"><a href="utils/canvas/index.html">utils/canvas</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="utils/context"><a href="utils/context/index.html">utils/context</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - </tr> - -<tr> - <td class="file low" data-value="utils/convert"><a href="utils/convert/index.html">utils/convert</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="83" class="abs low">0/83</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="76" class="abs low">0/76</td> - </tr> - -<tr> - <td class="file low" data-value="utils/error-report"><a href="utils/error-report/index.html">utils/error-report</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="99" class="abs low">0/99</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="40" class="abs low">0/40</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="92" class="abs low">0/92</td> - </tr> - -<tr> - <td class="file low" data-value="utils/getErrorMessage"><a href="utils/getErrorMessage/index.html">utils/getErrorMessage</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="38" class="abs low">0/38</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="28" class="abs low">0/28</td> - </tr> - -<tr> - <td class="file low" data-value="utils/initialize"><a href="utils/initialize/index.html">utils/initialize</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="19" class="abs low">0/19</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - </tr> - -<tr> - <td class="file low" data-value="utils/lerp"><a href="utils/lerp/index.html">utils/lerp</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="17" class="abs low">0/17</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="utils/map"><a href="utils/map/index.html">utils/map</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="100" class="abs low">0/100</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="20" class="abs low">0/20</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="92" class="abs low">0/92</td> - </tr> - -<tr> - <td class="file low" data-value="utils/number"><a href="utils/number/index.html">utils/number</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="22" class="abs low">0/22</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="utils/object"><a href="utils/object/index.html">utils/object</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="12" class="abs low">0/12</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - </tr> - -<tr> - <td class="file low" data-value="utils/overlays"><a href="utils/overlays/index.html">utils/overlays</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="10" class="abs low">0/10</td> - </tr> - -<tr> - <td class="file low" data-value="utils/plugins"><a href="utils/plugins/index.html">utils/plugins</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="13" class="abs low">0/13</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="11" class="abs low">0/11</td> - </tr> - -<tr> - <td class="file low" data-value="utils/point"><a href="utils/point/index.html">utils/point</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="5" class="abs low">0/5</td> - <td data-value="100" class="pct high">100%</td> - <td data-value="0" class="abs high">0/0</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - </tr> - -<tr> - <td class="file low" data-value="utils/promise"><a href="utils/promise/index.html">utils/promise</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="14" class="abs low">0/14</td> - </tr> - -<tr> - <td class="file low" data-value="utils/query-manager"><a href="utils/query-manager/index.html">utils/query-manager</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="16" class="abs low">0/16</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="3" class="abs low">0/3</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - </tr> - -<tr> - <td class="file low" data-value="utils/reaction"><a href="utils/reaction/index.html">utils/reaction</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="1" class="abs low">0/1</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="2" class="abs low">0/2</td> - </tr> - -<tr> - <td class="file low" data-value="utils/testing"><a href="utils/testing/index.html">utils/testing</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="34" class="abs low">0/34</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="4" class="abs low">0/4</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="9" class="abs low">0/9</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="29" class="abs low">0/29</td> - </tr> - -<tr> - <td class="file low" data-value="utils/websocket-entity-updates"><a href="utils/websocket-entity-updates/index.html">utils/websocket-entity-updates</a></td> - <td data-value="0" class="pic low"> - <div class="chart"><div class="cover-fill" style="width: 0%"></div><div class="cover-empty" style="width: 100%"></div></div> - </td> - <td data-value="0" class="pct low">0%</td> - <td data-value="48" class="abs low">0/48</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="15" class="abs low">0/15</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="7" class="abs low">0/7</td> - <td data-value="0" class="pct low">0%</td> - <td data-value="43" class="abs low">0/43</td> - </tr> - -</tbody> -</table> + <div class='pad1'> + <h1>All files</h1> + <div class='clearfix'> + + <div class='fl pad1y space-right2'> + <span class="strong">100% </span> + <span class="quiet">Statements</span> + <span class='fraction'>3/3</span> + </div> + + + <div class='fl pad1y space-right2'> + <span class="strong">100% </span> + <span class="quiet">Branches</span> + <span class='fraction'>0/0</span> + </div> + + + <div class='fl pad1y space-right2'> + <span class="strong">100% </span> + <span class="quiet">Functions</span> + <span class='fraction'>0/0</span> + </div> + + + <div class='fl pad1y space-right2'> + <span class="strong">100% </span> + <span class="quiet">Lines</span> + <span class='fraction'>2/2</span> + </div> + + + </div> + <p class="quiet"> + Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block. + </p> + <template id="filterTemplate"> + <div class="quiet"> + Filter: + <input oninput="onInput()" type="search" id="fileSearch"> + </div> + </template> + </div> + <div class='status-line high'></div> + <div class="pad1"> + <table class="coverage-summary"> + <thead> + <tr> + <th data-col="file" data-fmt="html" data-html="true" class="file">File</th> + <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th> + <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th> + <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th> + <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th> + <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th> + <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th> + <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th> + <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th> + <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th> + </tr> + </thead> + <tbody><tr> + <td class="file high" data-value="ExampleDomain.component.tsx"><a href="ExampleDomain.component.tsx.html">ExampleDomain.component.tsx</a></td> + <td data-value="100" class="pic high"> + <div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div> + </td> + <td data-value="100" class="pct high">100%</td> + <td data-value="3" class="abs high">3/3</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="0" class="abs high">0/0</td> + <td data-value="100" class="pct high">100%</td> + <td data-value="2" class="abs high">2/2</td> + </tr> + + </tbody> + </table> + </div> + <div class='push'></div><!-- for sticky footer --> +</div><!-- /wrapper --> +<div class='footer quiet pad2 space-top1 center small'> + Code coverage generated by + <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> + at 2023-09-19T12:58:25.625Z </div> - <div class='push'></div><!-- for sticky footer --> - </div><!-- /wrapper --> - <div class='footer quiet pad2 space-top1 center small'> - Code coverage generated by - <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a> - at 2025-02-20T13:47:12.787Z - </div> - <script src="prettify.js"></script> - <script> - window.onload = function () { - prettyPrint(); - }; - </script> - <script src="sorter.js"></script> - <script src="block-navigation.js"></script> - </body> +<script src="prettify.js"></script> +<script> + window.onload = function () { + prettyPrint(); + }; +</script> +<script src="sorter.js"></script> +<script src="block-navigation.js"></script> +</body> </html> \ No newline at end of file diff --git a/coverage/lcov.info b/coverage/lcov.info index 89ecdac3..8b6abf1c 100644 --- a/coverage/lcov.info +++ b/coverage/lcov.info @@ -1,30855 +1,11 @@ TN: -SF:src/components/AppWrapper/AppWrapper.component.tsx -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:13,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/AppWrapper/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/FunctionalArea.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/ContextMenu/ContextMenu.component.tsx -FN:19,(anonymous_2) -FN:27,(anonymous_3) -FN:29,(anonymous_4) -FN:33,(anonymous_5) -FN:37,(anonymous_6) -FN:44,(anonymous_7) -FN:51,(anonymous_8) -FN:57,(anonymous_9) -FN:106,(anonymous_10) -FNF:9 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:49,0 -DA:51,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:107,0 -LF:39 -LH:0 -BRDA:30,0,0,0 -BRDA:30,0,1,0 -BRDA:38,1,0,0 -BRDA:49,2,0,0 -BRDA:49,2,1,0 -BRDA:64,3,0,0 -BRDA:64,3,1,0 -BRDA:76,4,0,0 -BRDA:76,4,1,0 -BRDA:87,5,0,0 -BRDA:87,5,1,0 -BRDA:104,6,0,0 -BRDA:104,6,1,0 -BRDA:113,7,0,0 -BRDA:113,7,1,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/ContextMenu/ContextMenu.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/ContextMenu/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/CookieBanner/CookieBanner.component.tsx -FN:28,(anonymous_5) -FN:36,(anonymous_6) -FN:66,(anonymous_7) -FN:87,(anonymous_8) -FN:115,(anonymous_9) -FNF:5 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:21,0 -DA:23,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:52,0 -DA:54,0 -DA:55,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:78,0 -DA:80,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:91,0 -DA:95,0 -DA:96,0 -LF:47 -LH:0 -BRDA:39,0,0,0 -BRDA:39,0,1,0 -BRDA:39,0,2,0 -BRDA:43,1,0,0 -BRDA:43,1,1,0 -BRDA:54,2,0,0 -BRDA:59,3,0,0 -BRDA:59,3,1,0 -BRDA:73,4,0,0 -BRDA:73,4,1,0 -BRDA:88,5,0,0 -BRDA:88,5,1,0 -BRDA:95,6,0,0 -BRDA:95,7,0,0 -BRDA:95,7,1,0 -BRDA:104,8,0,0 -BRF:16 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/CookieBanner/CookieBanner.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/CookieBanner/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/MapNavigation/MapNavigation.component.tsx -FN:17,(anonymous_1) -FN:21,(anonymous_2) -FN:23,(anonymous_3) -FN:24,(anonymous_4) -FN:28,(anonymous_5) -FN:45,(anonymous_6) -FN:53,(anonymous_7) -FN:65,(anonymous_8) -FN:73,(anonymous_9) -FN:79,(anonymous_10) -FN:90,(anonymous_11) -FNF:11 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:66,0 -DA:73,0 -DA:79,0 -DA:90,0 -LF:42 -LH:0 -BRDA:30,0,0,0 -BRDA:30,0,1,0 -BRDA:47,1,0,0 -BRDA:54,2,0,0 -BRDA:54,2,1,0 -BRDA:70,3,0,0 -BRDA:70,3,1,0 -BRDA:72,4,0,0 -BRDA:72,4,1,0 -BRDA:77,5,0,0 -BRDA:92,6,0,0 -BRDA:92,6,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/MapNavigation/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/Modal.component.tsx -FN:28,(anonymous_5) -FN:28,(anonymous_6) -FN:28,(anonymous_7) -FN:32,(anonymous_9) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_9) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:32,0 -DA:33,0 -LF:25 -LH:0 -BRDA:37,0,0,0 -BRDA:37,0,1,0 -BRDA:42,1,0,0 -BRDA:42,1,1,0 -BRDA:47,2,0,0 -BRDA:47,2,1,0 -BRDA:52,3,0,0 -BRDA:52,3,1,0 -BRDA:57,4,0,0 -BRDA:57,4,1,0 -BRDA:62,5,0,0 -BRDA:62,5,1,0 -BRDA:62,5,2,0 -BRDA:63,6,0,0 -BRDA:63,6,1,0 -BRDA:68,7,0,0 -BRDA:68,7,1,0 -BRDA:73,8,0,0 -BRDA:73,8,1,0 -BRDA:78,9,0,0 -BRDA:78,9,1,0 -BRDA:83,10,0,0 -BRDA:83,10,1,0 -BRDA:88,11,0,0 -BRDA:88,11,1,0 -BRDA:93,12,0,0 -BRDA:93,12,1,0 -BRDA:98,13,0,0 -BRDA:98,13,1,0 -BRDA:103,14,0,0 -BRDA:103,14,1,0 -BRDA:108,15,0,0 -BRDA:108,15,1,0 -BRDA:113,16,0,0 -BRDA:113,16,1,0 -BRDA:118,17,0,0 -BRDA:118,17,1,0 -BRDA:123,18,0,0 -BRDA:123,18,1,0 -BRDA:128,19,0,0 -BRDA:128,19,1,0 -BRDA:133,20,0,0 -BRDA:133,20,1,0 -BRF:43 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/AccessDeniedModal/AccessDeniedModal.component.tsx -FN:12,(anonymous_2) -FN:25,(anonymous_3) -FN:30,(anonymous_4) -FN:36,(anonymous_5) -FN:41,(anonymous_6) -FN:69,(anonymous_7) -FNF:6 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:41,0 -DA:42,0 -DA:70,0 -LF:31 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:47,1,0,0 -BRDA:65,2,0,0 -BRDA:83,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/AddCommentModal/AddCommentModal.component.tsx -FN:13,(anonymous_2) -FN:24,(anonymous_3) -FN:26,(anonymous_4) -FN:29,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -LF:23 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/EditOverlayGroupModal/EditOverlayGroupModal.component.tsx -FN:6,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:15,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/EditOverlayGroupModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/useEditOverlayGroup.ts -FN:31,(anonymous_4) -FN:38,(anonymous_5) -FN:42,(anonymous_6) -FN:46,(anonymous_7) -FN:50,(anonymous_8) -FN:55,(anonymous_9) -FN:71,(anonymous_10) -FN:75,(anonymous_11) -FN:79,(anonymous_12) -FNF:9 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:13,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:55,0 -DA:60,0 -DA:71,0 -DA:72,0 -DA:75,0 -DA:76,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:87,0 -DA:89,0 -DA:92,0 -LF:35 -LH:0 -BRDA:51,0,0,0 -BRDA:51,1,0,0 -BRDA:51,1,1,0 -BRDA:51,1,2,0 -BRDA:80,2,0,0 -BRDA:80,3,0,0 -BRDA:80,3,1,0 -BRDA:80,3,2,0 -BRDA:84,4,0,0 -BRDA:84,4,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.tsx -FN:8,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:20,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/EditOverlayModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.ts -FN:38,(anonymous_4) -FN:46,(anonymous_5) -FN:49,(anonymous_6) -FN:53,(anonymous_7) -FN:57,(anonymous_8) -FN:60,(anonymous_9) -FN:64,(anonymous_10) -FN:69,(anonymous_11) -FN:87,(anonymous_12) -FN:91,(anonymous_13) -FN:95,(anonymous_14) -FNF:11 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:49,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:69,0 -DA:75,0 -DA:87,0 -DA:88,0 -DA:91,0 -DA:92,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:104,0 -DA:105,0 -DA:107,0 -DA:110,0 -LF:43 -LH:0 -BRDA:65,0,0,0 -BRDA:65,1,0,0 -BRDA:65,1,1,0 -BRDA:96,2,0,0 -BRDA:96,3,0,0 -BRDA:96,3,1,0 -BRDA:96,3,2,0 -BRDA:99,4,0,0 -BRDA:99,4,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/ErrorReportModal/ErroReportModal.component.tsx -FN:12,(anonymous_2) -FN:16,getValue -FN:46,(anonymous_4) -FN:49,(anonymous_5) -FN:69,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,getValue -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:54,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:65,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -LF:44 -LH:0 -BRDA:17,0,0,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRDA:50,2,0,0 -BRDA:51,3,0,0 -BRDA:51,3,1,0 -BRDA:52,4,0,0 -BRDA:52,4,1,0 -BRDA:56,5,0,0 -BRDA:57,6,0,0 -BRDA:57,6,1,0 -BRDA:59,7,0,0 -BRDA:60,8,0,0 -BRDA:60,8,1,0 -BRDA:62,9,0,0 -BRDA:63,10,0,0 -BRDA:63,10,1,0 -BRF:17 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/ErrorReportModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerFactoryModal/LayerFactoryModal.component.tsx -FN:19,(anonymous_4) -FN:34,(anonymous_5) -FN:35,(anonymous_6) -FN:50,(anonymous_7) -FN:58,(anonymous_8) -FN:59,(anonymous_9) -FN:62,(anonymous_10) -FN:118,(anonymous_11) -FN:133,(anonymous_12) -FN:145,(anonymous_13) -FNF:10 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:46,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:54,0 -DA:58,0 -DA:59,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:71,0 -DA:72,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:81,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:93,0 -DA:94,0 -DA:95,0 -DA:119,0 -DA:133,0 -DA:145,0 -LF:56 -LH:0 -BRDA:37,0,0,0 -BRDA:51,1,0,0 -BRDA:51,1,1,0 -BRDA:66,2,0,0 -BRDA:66,2,1,0 -BRDA:78,3,0,0 -BRDA:88,4,0,0 -BRDA:97,5,0,0 -BRDA:97,5,1,0 -BRDA:104,6,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerFactoryModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.tsx -FN:19,(anonymous_5) -FN:33,(anonymous_6) -FNF:2 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:48,0 -DA:56,0 -DA:57,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:67,0 -DA:69,0 -DA:70,0 -DA:75,0 -LF:45 -LH:0 -BRDA:23,0,0,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRDA:34,3,0,0 -BRDA:41,4,0,0 -BRDA:43,5,0,0 -BRDA:56,6,0,0 -BRDA:72,7,0,0 -BRDA:72,7,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx -FN:23,(anonymous_5) -FN:28,(anonymous_6) -FN:35,(anonymous_7) -FNF:3 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:49,0 -DA:61,0 -DA:62,0 -DA:66,0 -DA:68,0 -DA:71,0 -DA:77,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:90,0 -LF:49 -LH:0 -BRDA:36,0,0,0 -BRDA:36,1,0,0 -BRDA:36,1,1,0 -BRDA:42,2,0,0 -BRDA:44,3,0,0 -BRDA:61,4,0,0 -BRDA:87,5,0,0 -BRDA:87,5,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectForm.component.tsx -FN:24,(anonymous_5) -FN:34,(anonymous_6) -FN:36,(anonymous_7) -FN:46,(anonymous_8) -FN:57,(anonymous_9) -FNF:5 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:24,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:63,0 -LF:34 -LH:0 -BRDA:37,0,0,0 -BRDA:40,1,0,0 -BRDA:47,2,0,0 -BRDA:47,2,1,0 -BRDA:49,3,0,0 -BRDA:52,4,0,0 -BRDA:58,5,0,0 -BRDA:58,5,1,0 -BRDA:60,6,0,0 -BRDA:68,7,0,0 -BRDA:99,8,0,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerImageObjectModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx -FN:27,(anonymous_5) -FN:31,(anonymous_6) -FN:40,(anonymous_7) -FN:85,(anonymous_8) -FN:86,(anonymous_9) -FNF:5 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:44,0 -DA:45,0 -DA:54,0 -DA:55,0 -DA:59,0 -DA:61,0 -DA:62,0 -DA:68,0 -DA:72,0 -DA:73,0 -DA:75,0 -DA:76,0 -DA:81,0 -DA:85,0 -DA:86,0 -LF:45 -LH:0 -BRDA:41,0,0,0 -BRDA:41,1,0,0 -BRDA:41,1,1,0 -BRDA:54,2,0,0 -BRDA:78,3,0,0 -BRDA:78,3,1,0 -BRDA:91,4,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component.tsx -FN:12,(anonymous_2) -FN:18,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:12,0 -DA:18,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component.tsx -FN:22,(anonymous_5) -FN:38,(anonymous_6) -FN:85,(anonymous_7) -FN:86,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:58,0 -DA:59,0 -DA:63,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:73,0 -DA:75,0 -DA:76,0 -DA:81,0 -DA:85,0 -DA:86,0 -LF:43 -LH:0 -BRDA:28,0,0,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:28,2,0,0 -BRDA:28,2,1,0 -BRDA:39,3,0,0 -BRDA:58,4,0,0 -BRDA:78,5,0,0 -BRDA:78,5,1,0 -BRDA:91,6,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx -FN:27,(anonymous_5) -FN:31,(anonymous_6) -FN:41,(anonymous_7) -FN:86,(anonymous_8) -FN:87,(anonymous_9) -FNF:5 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:46,0 -DA:55,0 -DA:56,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:69,0 -DA:73,0 -DA:74,0 -DA:76,0 -DA:77,0 -DA:82,0 -DA:86,0 -DA:87,0 -LF:45 -LH:0 -BRDA:42,0,0,0 -BRDA:42,1,0,0 -BRDA:42,1,1,0 -BRDA:55,2,0,0 -BRDA:79,3,0,0 -BRDA:79,3,1,0 -BRDA:92,4,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectForm.component.tsx -FN:12,(anonymous_2) -FN:19,(anonymous_3) -FN:26,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:12,0 -DA:19,0 -DA:26,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextEditFactoryModal.component.tsx -FN:22,(anonymous_5) -FN:42,(anonymous_6) -FN:87,(anonymous_7) -FN:88,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:71,0 -DA:75,0 -DA:77,0 -DA:78,0 -DA:83,0 -DA:87,0 -DA:88,0 -LF:41 -LH:0 -BRDA:28,0,0,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:43,2,0,0 -BRDA:66,3,0,0 -BRDA:80,4,0,0 -BRDA:80,4,1,0 -BRDA:93,5,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.constants.ts -FNF:0 -FNH:0 -DA:5,0 -DA:7,0 -DA:13,0 -DA:19,0 -DA:20,0 -DA:21,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx -FN:32,(anonymous_5) -FN:37,(anonymous_6) -FN:50,(anonymous_7) -FN:95,(anonymous_8) -FN:96,(anonymous_9) -FNF:5 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:54,0 -DA:55,0 -DA:64,0 -DA:65,0 -DA:69,0 -DA:71,0 -DA:72,0 -DA:78,0 -DA:82,0 -DA:83,0 -DA:85,0 -DA:86,0 -DA:91,0 -DA:95,0 -DA:96,0 -LF:46 -LH:0 -BRDA:51,0,0,0 -BRDA:51,1,0,0 -BRDA:51,1,1,0 -BRDA:64,2,0,0 -BRDA:88,3,0,0 -BRDA:88,3,1,0 -BRDA:101,4,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextForm.component.tsx -FN:20,(anonymous_2) -FN:21,(anonymous_3) -FN:38,(anonymous_4) -FN:47,(anonymous_5) -FN:56,(anonymous_6) -FN:63,(anonymous_7) -FN:70,(anonymous_8) -FN:76,(anonymous_9) -FNF:8 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:38,0 -DA:47,0 -DA:56,0 -DA:63,0 -DA:70,0 -DA:76,0 -LF:15 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LicenseModal/LicenseModal.component.tsx -FN:5,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -LF:8 -LH:0 -BRDA:9,0,0,0 -BRDA:10,1,0,0 -BRDA:10,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LicenseModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LoggedInMenuModal/LoggedInMenuModal.component.tsx -FN:7,(anonymous_2) -FN:10,(anonymous_3) -FN:14,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:14,0 -DA:15,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LoggedInMenuModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LoginModal/LoginModal.component.tsx -FN:15,(anonymous_2) -FN:25,(anonymous_3) -FN:27,(anonymous_4) -FN:30,(anonymous_5) -FN:34,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -LF:29 -LH:0 -BRDA:72,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/LoginModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -LF:12 -LH:0 -BRDA:30,0,0,0 -BRDA:30,0,1,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRDA:32,2,0,0 -BRDA:32,2,1,0 -BRDA:33,3,0,0 -BRDA:33,3,1,0 -BRDA:34,4,0,0 -BRDA:34,4,1,0 -BRDA:35,5,0,0 -BRDA:35,5,1,0 -BRDA:36,6,0,0 -BRDA:36,6,1,0 -BRDA:37,7,0,0 -BRDA:37,7,1,0 -BRDA:38,8,0,0 -BRDA:38,8,1,0 -BRDA:40,9,0,0 -BRDA:40,9,1,0 -BRDA:42,10,0,0 -BRDA:42,10,1,0 -BRDA:44,11,0,0 -BRDA:44,11,1,0 -BRDA:50,12,0,0 -BRDA:50,12,1,0 -BRDA:55,13,0,0 -BRDA:55,13,1,0 -BRDA:61,14,0,0 -BRDA:61,14,1,0 -BRDA:65,15,0,0 -BRDA:65,15,1,0 -BRF:32 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/ModalLayout/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/MolArtModal/MolArtModal.component.tsx -FN:13,(anonymous_4) -FN:17,(anonymous_5) -FN:36,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:42,0 -LF:22 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/MolArtModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImagesModal.component.tsx -FN:6,(anonymous_4) -FN:12,(anonymous_5) -FN:19,(anonymous_6) -FN:20,(anonymous_7) -FN:27,(anonymous_8) -FN:42,(anonymous_9) -FNF:6 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:44,0 -LF:20 -LH:0 -BRDA:13,0,0,0 -BRDA:21,1,0,0 -BRDA:30,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/OverviewImagesModal.constants.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/getFinalImageSize.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:8,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -LF:10 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRDA:25,2,0,0 -BRDA:25,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/getOverviewImageLinkSize.ts -FN:6,(anonymous_1) -FN:19,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:4,0 -DA:6,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -LF:11 -LH:0 -BRDA:15,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImage.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:3,0 -DA:4,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkActions.ts -FN:23,(anonymous_1) -FN:30,(anonymous_2) -FN:31,(anonymous_3) -FN:33,(anonymous_4) -FN:34,(anonymous_5) -FN:36,(anonymous_6) -FN:37,(anonymous_7) -FN:39,(anonymous_8) -FN:55,(anonymous_9) -FN:69,(anonymous_10) -FN:81,(anonymous_11) -FN:91,(anonymous_12) -FN:100,(anonymous_13) -FNF:13 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:52,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:88,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:97,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:105,0 -DA:106,0 -DA:109,0 -DA:110,0 -DA:113,0 -DA:114,0 -DA:117,0 -DA:120,0 -LF:69 -LH:0 -BRDA:43,0,0,0 -BRDA:47,1,0,0 -BRDA:72,2,0,0 -BRDA:93,3,0,0 -BRDA:105,4,0,0 -BRDA:109,5,0,0 -BRDA:113,6,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageLinkElements.tsx -FN:12,(anonymous_1) -FN:20,(anonymous_2) -FN:23,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:23,0 -LF:11 -LH:0 -BRDA:18,0,0,0 -BRDA:18,1,0,0 -BRDA:18,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageSize.ts -FN:15,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:15,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:27,0 -LF:9 -LH:0 -BRDA:20,0,0,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/OverviewImagesModal/utils/useOverviewImageUrl.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:15,0 -LF:9 -LH:0 -BRDA:11,0,0,0 -BRDA:11,1,0,0 -BRDA:11,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModal.tsx -FN:15,(anonymous_1) -FN:20,(anonymous_2) -FN:21,(anonymous_3) -FN:33,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:35,0 -LF:20 -LH:0 -BRDA:27,0,0,0 -BRDA:27,0,1,0 -BRDA:30,1,0,0 -BRDA:30,1,1,0 -BRDA:34,2,0,0 -BRDA:42,3,0,0 -BRDA:42,3,1,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/PublicationsModalLayout.component.tsx -FN:18,(anonymous_2) -FN:23,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -LF:18 -LH:0 -BRDA:41,0,0,0 -BRDA:41,0,1,0 -BRDA:44,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/PublicationsModalLayout.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/getBasePublications.ts -FN:15,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:21,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:33,0 -LF:16 -LH:0 -BRDA:26,0,0,0 -BRDA:26,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/getStandarizedPublications.ts -FN:13,(anonymous_1) -FN:18,(anonymous_2) -FN:18,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:3,0 -DA:4,0 -DA:11,0 -DA:13,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:24,0 -DA:29,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/mapBasePublicationToStandarized.ts -FN:12,(anonymous_1) -FN:19,(anonymous_2) -FN:20,(anonymous_3) -FN:22,(anonymous_4) -FN:23,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:3,0 -DA:4,0 -DA:10,0 -DA:12,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -LF:13 -LH:0 -BRDA:29,0,0,0 -BRDA:29,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/mapStandarizedPublicationsToCSVString.ts -FN:3,(anonymous_1) -FN:7,(anonymous_2) -FN:9,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:3,0 -DA:6,0 -DA:8,0 -DA:9,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsModalLayout/utils/useDownloadPublicationsAsCSVFile.ts -FN:26,(anonymous_1) -FN:33,(anonymous_2) -FN:38,(anonymous_3) -FN:52,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:38,0 -DA:40,0 -DA:44,0 -DA:49,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:61,0 -LF:29 -LH:0 -BRDA:35,0,0,0 -BRDA:35,0,1,0 -BRDA:40,1,0,0 -BRDA:40,1,1,0 -BRDA:40,2,0,0 -BRDA:40,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/PublicationsSearch.component.tsx -FN:19,(anonymous_2) -FN:28,(anonymous_3) -FN:32,(anonymous_4) -FN:47,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:47,0 -DA:48,0 -DA:49,0 -LF:26 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsSearch/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/PublicationsTable.component.tsx -FN:45,(anonymous_1) -FN:50,(anonymous_3) -FN:55,(anonymous_5) -FN:57,(anonymous_6) -FN:60,(anonymous_7) -FN:65,(anonymous_9) -FN:71,(anonymous_11) -FN:74,(anonymous_12) -FN:86,(anonymous_13) -FN:88,(anonymous_14) -FN:97,(anonymous_15) -FN:112,(anonymous_16) -FN:131,(anonymous_17) -FN:155,(anonymous_18) -FN:157,(anonymous_19) -FN:171,(anonymous_20) -FN:173,(anonymous_21) -FN:194,(anonymous_22) -FN:201,(anonymous_23) -FN:213,(anonymous_24) -FN:221,(anonymous_25) -FNF:21 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -DA:1,0 -DA:2,0 -DA:3,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:42,0 -DA:44,0 -DA:45,0 -DA:50,0 -DA:55,0 -DA:57,0 -DA:60,0 -DA:65,0 -DA:71,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:81,0 -DA:86,0 -DA:88,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:108,0 -DA:109,0 -DA:110,0 -DA:112,0 -DA:116,0 -DA:118,0 -DA:132,0 -DA:134,0 -DA:138,0 -DA:156,0 -DA:158,0 -DA:172,0 -DA:174,0 -DA:194,0 -DA:201,0 -DA:213,0 -DA:221,0 -LF:56 -LH:0 -BRDA:101,0,0,0 -BRDA:101,0,1,0 -BRDA:101,1,0,0 -BRDA:101,1,1,0 -BRDA:170,2,0,0 -BRDA:170,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/PublicationsTable.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementsOnMapCell.component.tsx -FN:9,(anonymous_1) -FN:12,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:9,0 -DA:13,0 -LF:4 -LH:0 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink/ElementLink.component.tsx -FN:23,(anonymous_1) -FN:31,(anonymous_2) -FN:32,(anonymous_3) -FN:34,(anonymous_4) -FN:46,(anonymous_5) -FN:59,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -LF:38 -LH:0 -BRDA:36,0,0,0 -BRDA:36,0,1,0 -BRDA:47,1,0,0 -BRDA:47,1,1,0 -BRDA:53,2,0,0 -BRDA:71,3,0,0 -BRDA:71,3,1,0 -BRDA:72,4,0,0 -BRDA:72,4,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/ElementsOnMapCell/ElementLink/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/FilterBySubmapHeader/FilterBySubmapHeader.component.tsx -FN:16,(anonymous_1) -FN:23,(anonymous_2) -FN:52,(anonymous_3) -FN:79,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:49,0 -DA:52,0 -DA:80,0 -LF:23 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRDA:63,1,0,0 -BRDA:63,1,1,0 -BRDA:67,2,0,0 -BRDA:67,2,1,0 -BRDA:74,3,0,0 -BRDA:74,3,1,0 -BRDA:78,4,0,0 -BRDA:78,4,1,0 -BRDA:85,5,0,0 -BRDA:85,5,1,0 -BRDA:86,6,0,0 -BRDA:86,6,1,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader/SortByHeader.component.tsx -FN:19,(anonymous_1) -FN:26,(anonymous_2) -FN:49,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:36,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -LF:22 -LH:0 -BRDA:27,0,0,0 -BRDA:27,0,1,0 -BRDA:50,1,0,0 -BRDA:50,1,1,0 -BRDA:63,2,0,0 -BRDA:66,3,0,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/PublicationsTable/SortByHeader/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/PublicationsModal/utils/fetchElementData.ts -FN:11,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:33,0 -DA:39,0 -LF:17 -LH:0 -BRDA:24,0,0,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/QuestionModal/QustionModal.component.tsx -FN:14,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:14,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:56,0 -LF:12 -LH:0 -BRDA:20,0,0,0 -BRDA:24,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/Modal/ToSModal/ToSModal.component.tsx -FN:11,(anonymous_2) -FN:17,(anonymous_3) -FN:29,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:29,0 -DA:30,0 -DA:31,0 -LF:23 -LH:0 -BRDA:18,0,0,0 -BRDA:23,1,0,0 -BRDA:23,2,0,0 -BRDA:23,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/NavBar/NavBar.component.tsx -FN:15,(anonymous_2) -FN:20,(anonymous_3) -FN:28,(anonymous_4) -FN:40,(anonymous_5) -FN:48,(anonymous_6) -FN:56,(anonymous_7) -FNF:6 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:28,0 -DA:29,0 -DA:33,0 -DA:35,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:44,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:52,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:64,0 -DA:65,0 -DA:67,0 -DA:69,0 -DA:71,0 -LF:41 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:21,1,0,0 -BRDA:21,1,1,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRDA:30,3,0,0 -BRDA:30,3,1,0 -BRDA:41,4,0,0 -BRDA:41,4,1,0 -BRDA:41,5,0,0 -BRDA:41,5,1,0 -BRDA:49,6,0,0 -BRDA:49,6,1,0 -BRDA:49,7,0,0 -BRDA:49,7,1,0 -BRDA:57,8,0,0 -BRDA:57,8,1,0 -BRDA:65,9,0,0 -BRDA:65,9,1,0 -BRDA:69,10,0,0 -BRDA:69,10,1,0 -BRF:22 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/NavBar/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/TopBar.component.tsx -FN:18,(anonymous_1) -FN:25,(anonymous_2) -FN:29,(anonymous_3) -FN:33,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:34,0 -LF:23 -LH:0 -BRDA:61,0,0,0 -BRDA:71,1,0,0 -BRDA:71,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/ClearAnchorsButton/ClearAnchorsButton.component.tsx -FN:15,(anonymous_2) -FN:19,(anonymous_3) -FN:26,(anonymous_4) -FN:39,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:26,0 -DA:28,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:41,0 -LF:29 -LH:0 -BRDA:20,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/ClearAnchorsButton/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/SearchBar/SearchBar.component.tsx -FN:36,(anonymous_2) -FN:50,(anonymous_3) -FN:57,(anonymous_4) -FN:63,(anonymous_5) -FN:71,(anonymous_6) -FN:79,(anonymous_7) -FN:90,(anonymous_8) -FN:98,(anonymous_9) -FN:101,(anonymous_10) -FN:103,(anonymous_11) -FN:110,(anonymous_12) -FN:114,(anonymous_13) -FN:122,(anonymous_14) -FN:127,(anonymous_15) -FN:133,(anonymous_16) -FN:148,(anonymous_17) -FN:150,(anonymous_18) -FN:153,(anonymous_19) -FNF:18 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -DA:5,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:67,0 -DA:71,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:79,0 -DA:80,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:90,0 -DA:91,0 -DA:93,0 -DA:96,0 -DA:99,0 -DA:101,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:109,0 -DA:110,0 -DA:114,0 -DA:122,0 -DA:123,0 -DA:127,0 -DA:128,0 -DA:133,0 -DA:134,0 -DA:137,0 -DA:148,0 -DA:150,0 -DA:151,0 -DA:153,0 -DA:154,0 -DA:157,0 -LF:81 -LH:0 -BRDA:52,0,0,0 -BRDA:58,1,0,0 -BRDA:58,2,0,0 -BRDA:58,2,1,0 -BRDA:64,3,0,0 -BRDA:64,3,1,0 -BRDA:82,4,0,0 -BRDA:91,5,0,0 -BRDA:106,6,0,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/SearchBar/SearchBar.utils.ts -FN:5,(anonymous_3) -FN:8,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/SearchBar/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/User.component.tsx -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -LF:6 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/User.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:6,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/AuthenticatedUser/AuthenticatedUser.component.tsx -FN:11,(anonymous_1) -FN:45,(anonymous_2) -FN:51,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:46,0 -DA:51,0 -LF:19 -LH:0 -BRDA:22,0,0,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRDA:22,1,2,0 -BRDA:40,2,0,0 -BRDA:40,2,1,0 -BRDA:44,3,0,0 -BRDA:44,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/AuthenticatedUser/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/UnauthenticatedUser/UnauthenticatedUser.component.tsx -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/UnauthenticatedUser/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/FunctionalArea/TopBar/User/hooks/useUserActions.ts -FN:20,(anonymous_1) -FN:24,(anonymous_2) -FN:30,(anonymous_3) -FN:34,(anonymous_4) -FN:39,(anonymous_5) -FN:43,(anonymous_6) -FN:47,(anonymous_7) -FNF:7 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:43,0 -DA:44,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:57,0 -DA:59,0 -DA:63,0 -LF:34 -LH:0 -BRDA:25,0,0,0 -BRDA:25,0,1,0 -BRDA:25,1,0,0 -BRDA:25,1,1,0 -BRDA:31,2,0,0 -BRDA:31,2,1,0 -BRDA:31,3,0,0 -BRDA:31,3,1,0 -BRDA:48,4,0,0 -BRDA:48,4,1,0 -BRDA:48,4,2,0 -BRDA:48,4,3,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Map.component.tsx -FN:11,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/Drawer.component.tsx -FN:17,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -LF:17 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:28,1,2,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRDA:29,2,2,0 -BRDA:30,3,0,0 -BRDA:30,3,1,0 -BRDA:30,3,2,0 -BRDA:31,4,0,0 -BRDA:31,4,1,0 -BRDA:31,4,2,0 -BRDA:32,5,0,0 -BRDA:32,5,1,0 -BRDA:32,5,2,0 -BRDA:33,6,0,0 -BRDA:33,6,1,0 -BRDA:33,6,2,0 -BRDA:34,7,0,0 -BRDA:34,7,1,0 -BRDA:34,7,2,0 -BRDA:35,8,0,0 -BRDA:35,8,1,0 -BRDA:35,8,2,0 -BRDA:36,9,0,0 -BRDA:36,9,1,0 -BRDA:36,9,2,0 -BRDA:37,10,0,0 -BRDA:37,10,1,0 -BRDA:37,10,2,0 -BRDA:38,11,0,0 -BRDA:38,11,1,0 -BRDA:38,11,2,0 -BRF:35 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/Drawer.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/AvailablePluginsDrawer.component.tsx -FN:7,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/AvailablePluginsDrawer.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/LoadPlugin.component.tsx -FN:12,(anonymous_1) -FN:18,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:19,0 -DA:20,0 -LF:9 -LH:0 -BRDA:19,0,0,0 -BRDA:37,1,0,0 -BRDA:37,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPlugin/hooks/useLoadPlugin.ts -FN:36,(anonymous_2) -FN:41,(anonymous_3) -FN:42,(anonymous_4) -FN:43,(anonymous_5) -FN:44,(anonymous_6) -FN:49,(anonymous_7) -FN:50,(anonymous_8) -FN:57,(anonymous_9) -FN:99,(anonymous_10) -FN:107,(anonymous_11) -FN:121,(anonymous_12) -FN:130,(anonymous_13) -FNF:12 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:36,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:67,0 -DA:70,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:90,0 -DA:94,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:104,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:112,0 -DA:114,0 -DA:116,0 -DA:118,0 -DA:121,0 -DA:122,0 -DA:124,0 -DA:126,0 -DA:127,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:134,0 -DA:138,0 -LF:64 -LH:0 -BRDA:52,0,0,0 -BRDA:74,1,0,0 -BRDA:79,2,0,0 -BRDA:79,2,1,0 -BRDA:81,3,0,0 -BRDA:84,4,0,0 -BRDA:84,4,1,0 -BRDA:100,5,0,0 -BRDA:131,6,0,0 -BRDA:131,6,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/LoadPluginFromUrl.component.tsx -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/LoadPluginFromUrl/hooks/useLoadPluginFromUrl.ts -FN:21,(anonymous_2) -FN:26,(anonymous_3) -FN:30,(anonymous_4) -FN:74,(anonymous_5) -FN:80,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:38,0 -DA:42,0 -DA:43,0 -DA:47,0 -DA:50,0 -DA:55,0 -DA:58,0 -DA:60,0 -DA:62,0 -DA:64,0 -DA:65,0 -DA:70,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:80,0 -DA:81,0 -DA:84,0 -LF:37 -LH:0 -BRDA:26,0,0,0 -BRDA:26,0,1,0 -BRDA:26,0,2,0 -BRDA:38,1,0,0 -BRDA:39,2,0,0 -BRDA:39,2,1,0 -BRDA:75,3,0,0 -BRDA:75,4,0,0 -BRDA:75,4,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins/PrivateActivePlugins.component.tsx -FN:5,(anonymous_1) -FN:7,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/PrivateActivePlugins/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins/PublicActivePlugins.component.tsx -FN:5,(anonymous_1) -FN:7,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicActivePlugins/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins/PublicPlugins.component.tsx -FN:6,(anonymous_2) -FN:8,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/AvailablePluginsDrawer/PublicPlugins/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/BioEntityDrawer.component.tsx -FN:31,(anonymous_2) -FN:40,(anonymous_3) -FN:50,(anonymous_4) -FN:54,(anonymous_5) -FN:64,(anonymous_6) -FN:103,(anonymous_7) -FN:126,(anonymous_8) -FNF:7 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:47,0 -DA:50,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:64,0 -DA:65,0 -DA:67,0 -DA:104,0 -DA:126,0 -LF:43 -LH:0 -BRDA:36,0,0,0 -BRDA:36,0,1,0 -BRDA:41,1,0,0 -BRDA:41,1,1,0 -BRDA:41,2,0,0 -BRDA:41,2,1,0 -BRDA:41,2,2,0 -BRDA:57,3,0,0 -BRDA:63,4,0,0 -BRDA:63,4,1,0 -BRDA:64,5,0,0 -BRDA:64,5,1,0 -BRDA:81,6,0,0 -BRDA:81,6,1,0 -BRDA:83,7,0,0 -BRDA:88,8,0,0 -BRDA:98,9,0,0 -BRDA:101,10,0,0 -BRDA:110,11,0,0 -BRDA:124,12,0,0 -BRDA:125,13,0,0 -BRDA:125,13,1,0 -BRF:22 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/AnnotationItem/AnnotationItem.component.tsx -FNF:0 -FNH:0 -DA:2,0 -DA:6,0 -LF:2 -LH:0 -BRDA:8,0,0,0 -BRDA:8,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/AnnotationItem/AnnotationItemList.component.tsx -FN:10,(anonymous_2) -FN:19,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:4,0 -DA:10,0 -DA:11,0 -DA:20,0 -LF:6 -LH:0 -BRDA:15,0,0,0 -BRDA:18,1,0,0 -BRDA:18,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/AnnotationItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/AssociatedSubmap/AssociatedSubmap.component.tsx -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:13,0 -DA:14,0 -LF:9 -LH:0 -BRDA:13,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/AssociatedSubmap/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/ChemicalsList/ChemicalsList.component.tsx -FN:7,(anonymous_1) -FN:18,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:19,0 -LF:12 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRDA:12,1,0,0 -BRDA:21,2,0,0 -BRDA:21,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/ChemicalsList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/Comments/CommentItem.component.tsx -FN:8,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:2,0 -DA:8,0 -DA:9,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/DrugsList/DrugsList.component.tsx -FN:7,(anonymous_1) -FN:18,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:19,0 -LF:12 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRDA:12,1,0,0 -BRDA:21,2,0,0 -BRDA:21,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/DrugsList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/ModificationResidueItem/ModificationResidueItem.component.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRDA:11,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/ModificationResidueItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayData.component.tsx -FN:16,(anonymous_1) -FN:23,(anonymous_2) -FN:31,(anonymous_3) -FN:39,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:16,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:32,0 -DA:40,0 -LF:18 -LH:0 -BRDA:16,0,0,0 -BRDA:17,1,0,0 -BRDA:18,2,0,0 -BRDA:25,3,0,0 -BRDA:48,4,0,0 -BRDA:48,4,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes/GroupedOverlayAxes.components.tsx -FN:13,(anonymous_1) -FN:15,(anonymous_2) -FN:16,(anonymous_3) -FN:28,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:29,0 -LF:11 -LH:0 -BRDA:18,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/GroupedOverlayAxes/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/OverlayAxis.component.tsx -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FN:18,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -LF:11 -LH:0 -BRDA:26,0,0,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:43,2,0,0 -BRDA:43,2,1,0 -BRDA:44,3,0,0 -BRDA:44,3,1,0 -BRDA:45,4,0,0 -BRDA:45,4,1,0 -BRDA:53,5,0,0 -BRDA:53,5,1,0 -BRDA:60,6,0,0 -BRDA:67,7,0,0 -BRDA:67,7,1,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable/GeneVariantsTable.component.tsx -FN:9,(anonymous_1) -FN:19,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:9,0 -DA:20,0 -DA:21,0 -DA:23,0 -LF:6 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/GeneVariantsTable/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/OverlayAxis/utils/getOverlayAxisProps.ts -FN:26,(anonymous_1) -FN:36,(anonymous_2) -FN:44,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:41,0 -DA:44,0 -DA:45,0 -LF:17 -LH:0 -BRDA:27,0,0,0 -BRDA:27,0,1,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRDA:37,2,0,0 -BRDA:41,3,0,0 -BRDA:41,3,1,0 -BRDA:57,4,0,0 -BRDA:57,4,1,0 -BRDA:58,5,0,0 -BRDA:58,5,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/utils/getAxesSortedByValue.ts -FN:4,(anonymous_1) -FN:5,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:4,0 -DA:5,0 -LF:3 -LH:0 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRDA:5,1,0,0 -BRDA:5,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/utils/getUniqueAxes.ts -FN:7,(anonymous_1) -FN:8,(anonymous_2) -FN:9,(anonymous_3) -FN:12,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:19,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/BioEntityDrawer/OverlayData/utils/useOverlaysAxes.ts -FN:15,(anonymous_1) -FN:27,(anonymous_2) -FN:28,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:27,0 -DA:28,0 -DA:30,0 -LF:12 -LH:0 -BRDA:15,0,0,0 -BRDA:16,1,0,0 -BRDA:32,2,0,0 -BRDA:32,2,1,0 -BRDA:32,2,2,0 -BRDA:32,3,0,0 -BRDA:32,3,1,0 -BRDA:33,4,0,0 -BRDA:33,4,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/CommentDrawer/CommentDrawer.component.tsx -FN:9,(anonymous_1) -FN:14,(anonymous_2) -FN:25,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:26,0 -LF:14 -LH:0 -BRDA:16,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/CommentDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.tsx -FN:11,(anonymous_1) -FN:14,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -LF:12 -LH:0 -BRDA:22,0,0,0 -BRDA:22,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:24,2,0,0 -BRDA:24,2,1,0 -BRDA:25,3,0,0 -BRDA:25,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportDrawer.component.utils.tsx -FN:3,(anonymous_1) -FN:6,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,0 -DA:4,0 -DA:6,0 -LF:3 -LH:0 -BRDA:4,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/CheckboxFilter.component.tsx -FN:18,(anonymous_5) -FN:30,(anonymous_6) -FN:31,(anonymous_7) -FN:39,(anonymous_8) -FN:45,(anonymous_9) -FN:46,(anonymous_10) -FN:47,(anonymous_11) -FN:54,(anonymous_12) -FN:59,(anonymous_13) -FN:96,(anonymous_14) -FNF:10 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:18,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:59,0 -DA:60,0 -DA:97,0 -LF:29 -LH:0 -BRDA:20,0,0,0 -BRDA:23,1,0,0 -BRDA:24,2,0,0 -BRDA:46,3,0,0 -BRDA:46,3,1,0 -BRDA:65,4,0,0 -BRDA:89,5,0,0 -BRDA:89,5,1,0 -BRDA:93,6,0,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput/OptionInput.component.tsx -FN:12,(anonymous_1) -FN:19,(anonymous_2) -FN:21,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:12,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:30,0 -LF:10 -LH:0 -BRDA:14,0,0,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRDA:22,1,2,0 -BRDA:40,2,0,0 -BRDA:40,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CheckboxFilter/OptionInput/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CollapsibleSection/CollapsibleSection.component.tsx -FN:18,(anonymous_1) -FN:24,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:8,0 -DA:18,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -LF:7 -LH:0 -BRDA:27,0,0,0 -BRDA:27,1,0,0 -BRDA:27,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CollapsibleSection/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CurrentView/CurrentView.component.tsx -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/CurrentView/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/Elements/Elements.component.tsx -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/Elements/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.component.tsx -FN:38,(anonymous_1) -FN:57,(anonymous_2) -FN:68,(anonymous_3) -FN:80,(anonymous_4) -FN:82,(anonymous_5) -FN:88,(anonymous_6) -FN:97,(anonymous_7) -FN:102,(anonymous_8) -FN:112,(anonymous_9) -FN:131,(anonymous_10) -FNF:10 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:65,0 -DA:68,0 -DA:69,0 -DA:77,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:88,0 -DA:92,0 -DA:93,0 -DA:97,0 -DA:98,0 -DA:102,0 -DA:106,0 -DA:107,0 -DA:111,0 -DA:112,0 -DA:130,0 -DA:131,0 -DA:156,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:165,0 -LF:71 -LH:0 -BRDA:92,0,0,0 -BRDA:106,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.constant.ts -FN:51,(anonymous_6) -FN:52,(anonymous_7) -FN:53,(anonymous_8) -FN:54,(anonymous_9) -FN:55,(anonymous_10) -FN:56,(anonymous_11) -FN:57,(anonymous_12) -FN:58,(anonymous_13) -FN:59,(anonymous_14) -FN:60,(anonymous_15) -FNF:10 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -DA:2,0 -DA:4,0 -DA:9,0 -DA:14,0 -DA:37,0 -DA:50,0 -DA:57,0 -DA:58,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExportCompound.context.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.component.tsx -FN:19,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -LF:17 -LH:0 -BRDA:30,0,0,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRDA:31,1,2,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/Annotations.utils.ts -FN:16,(anonymous_1) -FN:20,(anonymous_2) -FN:28,(anonymous_3) -FN:29,(anonymous_4) -FN:32,(anonymous_5) -FN:47,(anonymous_6) -FN:50,(anonymous_7) -FNF:7 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:3,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:23,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:37,0 -DA:40,0 -DA:44,0 -DA:46,0 -DA:48,0 -DA:50,0 -LF:14 -LH:0 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:37,1,0,0 -BRDA:37,2,0,0 -BRDA:37,2,1,0 -BRDA:40,3,0,0 -BRDA:40,3,1,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Annotations/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView/DownloadCurrentView.component.tsx -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadCurrentView/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadElements/DownloadElements.tsx -FN:7,(anonymous_2) -FN:11,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -LF:12 -LH:0 -BRDA:20,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics/DownloadGraphics.component.tsx -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadGraphics/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/DownloadNetwork/DownloadNetwork.tsx -FN:7,(anonymous_2) -FN:11,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -LF:12 -LH:0 -BRDA:20,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/ExcludedCompartmentPathways.component.tsx -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -LF:15 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRDA:19,0,2,0 -BRDA:23,1,0,0 -BRDA:24,2,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ExcludedCompartmentPathways/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat/ImageFormat.component.tsx -FN:13,(anonymous_1) -FN:21,(anonymous_2) -FN:22,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:27,0 -DA:28,0 -DA:34,0 -LF:19 -LH:0 -BRDA:28,0,0,0 -BRDA:29,1,0,0 -BRDA:29,1,1,0 -BRDA:29,1,2,0 -BRDA:29,1,3,0 -BRDA:39,2,0,0 -BRDA:40,3,0,0 -BRDA:40,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageFormat/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/ImageSize.component.tsx -FN:4,(anonymous_1) -FN:18,(anonymous_2) -FN:31,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:19,0 -DA:31,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/ImageSize.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:11,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useExportGraphicsSelectedModel.ts -FN:8,(anonymous_1) -FN:17,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:17,0 -LF:12 -LH:0 -BRDA:13,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useImageSize.ts -FN:17,(anonymous_1) -FN:27,(anonymous_2) -FN:46,(anonymous_3) -FN:58,(anonymous_4) -FN:67,(anonymous_5) -FN:76,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:53,0 -DA:58,0 -DA:59,0 -DA:64,0 -DA:67,0 -DA:68,0 -DA:73,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:81,0 -DA:84,0 -LF:36 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRDA:77,2,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useModelAspectRatios.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:12,0 -LF:5 -LH:0 -BRDA:8,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/ImageSize/utils/useScreenAspectRatios.ts -FN:5,(anonymous_3) -FN:20,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -LF:18 -LH:0 -BRDA:7,0,0,0 -BRDA:22,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways/IncludedCompartmentPathways.component.tsx -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -LF:14 -LH:0 -BRDA:22,0,0,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:23,1,2,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/IncludedCompartmentPathways/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Submap/Submap.component.tsx -FN:10,(anonymous_1) -FN:17,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:22,0 -DA:23,0 -DA:29,0 -LF:17 -LH:0 -BRDA:23,0,0,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRDA:24,1,2,0 -BRDA:24,1,3,0 -BRDA:34,2,0,0 -BRDA:35,3,0,0 -BRDA:35,3,1,0 -BRDA:35,3,2,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/Submap/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/extractAndParseNumberIdFromCompartment.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:9,0 -LF:5 -LH:0 -BRDA:7,0,0,0 -BRDA:7,1,0,0 -BRDA:7,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getCompartmentPathwaysCheckboxElements.ts -FN:10,(anonymous_1) -FN:16,(anonymous_2) -FN:24,(anonymous_3) -FN:29,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:10,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:22,0 -DA:24,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:34,0 -LF:11 -LH:0 -BRDA:17,0,0,0 -BRDA:30,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getDownloadElementsBodyRequest.ts -FN:20,(anonymous_1) -FN:29,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:20,0 -DA:26,0 -DA:29,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getExportContextWithReduxWrapper.tsx -FN:23,(anonymous_1) -FN:29,(anonymous_2) -FN:37,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:4,0 -DA:5,0 -DA:6,0 -DA:23,0 -DA:27,0 -DA:29,0 -DA:37,0 -DA:45,0 -LF:8 -LH:0 -BRDA:31,0,0,0 -BRDA:31,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getGraphicsDownloadUrl.ts -FN:12,(anonymous_1) -FN:20,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:12,0 -DA:19,0 -DA:20,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:39,0 -LF:15 -LH:0 -BRDA:20,0,0,0 -BRDA:20,0,1,0 -BRDA:24,1,0,0 -BRDA:31,2,0,0 -BRDA:33,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getModelExportZoom.ts -FN:12,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:21,0 -LF:8 -LH:0 -BRDA:14,0,0,0 -BRDA:14,1,0,0 -BRDA:14,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/ExportCompound/utils/getNetworkBodyRequest.ts -FN:20,(anonymous_1) -FN:29,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:20,0 -DA:26,0 -DA:29,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/Graphics/Graphics.component.tsx -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/Graphics/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/Network/Network.component.tsx -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/Network/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/TabButton/TabButton.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:9,0 -LF:2 -LH:0 -BRDA:14,0,0,0 -BRDA:14,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/TabButton/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/TabNavigator/TabNavigator.component.tsx -FN:12,(anonymous_2) -FN:15,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:10,0 -DA:13,0 -DA:15,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/TabNavigator/TabNavigator.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ExportDrawer/TabNavigator/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayerDrawerLayerContextMenu.component.tsx -FN:14,(anonymous_4) -FN:26,(anonymous_5) -FN:30,(anonymous_6) -FN:31,(anonymous_7) -FN:41,(anonymous_8) -FN:57,(anonymous_9) -FN:61,(anonymous_10) -FN:65,(anonymous_11) -FN:69,(anonymous_12) -FN:73,(anonymous_13) -FN:77,(anonymous_14) -FNF:11 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:1,0 -DA:2,0 -DA:3,0 -DA:14,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:58,0 -DA:59,0 -DA:62,0 -DA:63,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:71,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:79,0 -LF:30 -LH:0 -BRDA:32,0,0,0 -BRDA:32,1,0,0 -BRDA:32,1,1,0 -BRDA:35,2,0,0 -BRDA:35,3,0,0 -BRDA:35,3,1,0 -BRDA:54,4,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx -FN:22,(anonymous_4) -FN:36,(anonymous_5) -FN:40,(anonymous_6) -FN:44,(anonymous_7) -FN:45,(anonymous_8) -FN:52,(anonymous_9) -FNF:6 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:22,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:52,0 -LF:21 -LH:0 -BRDA:41,0,0,0 -BRDA:41,0,1,0 -BRDA:41,0,2,0 -BRDA:46,1,0,0 -BRDA:60,2,0,0 -BRDA:60,2,1,0 -BRDA:69,3,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayerDrawerTextItem.component.tsx -FN:22,(anonymous_4) -FN:36,(anonymous_5) -FN:40,(anonymous_6) -FN:44,(anonymous_7) -FN:45,(anonymous_8) -FN:52,(anonymous_9) -FNF:6 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:22,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:52,0 -LF:21 -LH:0 -BRDA:41,0,0,0 -BRDA:41,0,1,0 -BRDA:41,0,2,0 -BRDA:46,1,0,0 -BRDA:60,2,0,0 -BRDA:60,2,1,0 -BRDA:69,3,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx -FN:13,(anonymous_1) -FN:20,(anonymous_2) -FN:24,(anonymous_3) -FN:26,(anonymous_4) -FN:31,(anonymous_5) -FN:31,(anonymous_6) -FN:35,(anonymous_7) -FN:35,(anonymous_8) -FN:39,(anonymous_9) -FN:93,(anonymous_10) -FN:103,(anonymous_11) -FNF:11 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:44,0 -DA:47,0 -DA:48,0 -DA:51,0 -DA:52,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:64,0 -DA:65,0 -DA:94,0 -DA:104,0 -LF:41 -LH:0 -BRDA:40,0,0,0 -BRDA:40,1,0,0 -BRDA:40,1,1,0 -BRDA:44,2,0,0 -BRDA:44,2,1,0 -BRDA:44,2,2,0 -BRDA:47,3,0,0 -BRDA:57,4,0,0 -BRDA:64,5,0,0 -BRDA:79,6,0,0 -BRDA:87,7,0,0 -BRDA:97,8,0,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerImageItem.component.tsx -FN:23,(anonymous_4) -FN:35,(anonymous_5) -FN:38,(anonymous_6) -FN:42,(anonymous_7) -FN:46,(anonymous_8) -FN:47,(anonymous_9) -FN:54,(anonymous_10) -FNF:7 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:23,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:54,0 -LF:23 -LH:0 -BRDA:43,0,0,0 -BRDA:43,0,1,0 -BRDA:43,0,2,0 -BRDA:48,1,0,0 -BRDA:62,2,0,0 -BRDA:62,2,1,0 -BRDA:69,3,0,0 -BRDA:69,3,1,0 -BRDA:73,4,0,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerLayer.component.tsx -FN:35,(anonymous_2) -FN:46,(anonymous_3) -FN:50,(anonymous_4) -FN:54,(anonymous_5) -FN:58,(anonymous_6) -FN:63,(anonymous_7) -FN:68,(anonymous_8) -FN:73,(anonymous_9) -FN:78,(anonymous_10) -FN:82,(anonymous_11) -FN:102,(anonymous_12) -FN:106,(anonymous_13) -FN:114,(anonymous_14) -FN:136,(anonymous_15) -FN:145,(anonymous_16) -FN:154,(anonymous_17) -FN:159,(anonymous_18) -FN:181,(anonymous_19) -FNF:18 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -DA:2,0 -DA:3,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:79,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:92,0 -DA:94,0 -DA:95,0 -DA:102,0 -DA:103,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:126,0 -DA:128,0 -DA:129,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:145,0 -DA:146,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:154,0 -DA:155,0 -DA:156,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:182,0 -LF:84 -LH:0 -BRDA:83,0,0,0 -BRDA:97,1,0,0 -BRDA:97,1,1,0 -BRDA:107,2,0,0 -BRDA:107,2,1,0 -BRDA:131,3,0,0 -BRDA:131,3,1,0 -BRDA:137,4,0,0 -BRDA:137,4,1,0 -BRDA:139,5,0,0 -BRDA:146,6,0,0 -BRDA:146,6,1,0 -BRDA:149,7,0,0 -BRDA:175,8,0,0 -BRDA:175,8,1,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerActions.component.tsx -FN:26,(anonymous_1) -FN:59,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:26,0 -DA:43,0 -DA:59,0 -LF:7 -LH:0 -BRDA:48,0,0,0 -BRDA:48,0,1,0 -BRDA:53,1,0,0 -BRDA:56,2,0,0 -BRDA:56,2,1,0 -BRDA:61,3,0,0 -BRDA:75,4,0,0 -BRDA:83,5,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerLayerContextMenuItems.component.tsx -FN:17,(anonymous_4) -FN:28,(anonymous_5) -FNF:2 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:13,0 -DA:28,0 -DA:101,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx -FN:12,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:12,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx -FN:73,(anonymous_2) -FN:79,(anonymous_3) -FN:80,(anonymous_4) -FN:81,(anonymous_5) -FN:94,(anonymous_6) -FN:105,(anonymous_7) -FN:109,(anonymous_8) -FN:180,(anonymous_9) -FN:208,(anonymous_10) -FN:212,(anonymous_11) -FN:216,(anonymous_12) -FN:244,(anonymous_13) -FN:248,(anonymous_14) -FN:252,(anonymous_15) -FN:286,(anonymous_16) -FN:290,(anonymous_17) -FN:294,(anonymous_18) -FN:305,(anonymous_19) -FN:309,(anonymous_20) -FN:313,(anonymous_21) -FN:333,(anonymous_22) -FN:337,(anonymous_23) -FN:338,(anonymous_24) -FN:339,(anonymous_25) -FN:340,(anonymous_26) -FN:341,(anonymous_27) -FN:346,(anonymous_28) -FN:350,(anonymous_29) -FN:351,(anonymous_30) -FN:352,(anonymous_31) -FN:353,(anonymous_32) -FN:354,(anonymous_33) -FN:359,(anonymous_34) -FN:363,(anonymous_35) -FN:364,(anonymous_36) -FN:365,(anonymous_37) -FN:366,(anonymous_38) -FN:367,(anonymous_39) -FN:372,(anonymous_40) -FNF:39 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -DA:2,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:19,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:55,0 -DA:73,0 -DA:78,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:86,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:101,0 -DA:105,0 -DA:106,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:123,0 -DA:130,0 -DA:131,0 -DA:138,0 -DA:146,0 -DA:153,0 -DA:161,0 -DA:166,0 -DA:170,0 -DA:172,0 -DA:173,0 -DA:180,0 -DA:187,0 -DA:195,0 -DA:196,0 -DA:203,0 -DA:204,0 -DA:208,0 -DA:209,0 -DA:212,0 -DA:213,0 -DA:216,0 -DA:223,0 -DA:231,0 -DA:232,0 -DA:239,0 -DA:240,0 -DA:244,0 -DA:245,0 -DA:248,0 -DA:249,0 -DA:252,0 -DA:259,0 -DA:273,0 -DA:274,0 -DA:281,0 -DA:282,0 -DA:286,0 -DA:287,0 -DA:290,0 -DA:291,0 -DA:294,0 -DA:295,0 -DA:296,0 -DA:297,0 -DA:301,0 -DA:305,0 -DA:306,0 -DA:309,0 -DA:310,0 -DA:313,0 -DA:314,0 -DA:317,0 -DA:318,0 -DA:334,0 -DA:337,0 -DA:338,0 -DA:339,0 -DA:340,0 -DA:341,0 -DA:347,0 -DA:350,0 -DA:351,0 -DA:352,0 -DA:353,0 -DA:354,0 -DA:360,0 -DA:363,0 -DA:364,0 -DA:365,0 -DA:366,0 -DA:367,0 -DA:373,0 -LF:122 -LH:0 -BRDA:96,0,0,0 -BRDA:96,0,1,0 -BRDA:98,1,0,0 -BRDA:98,1,1,0 -BRDA:110,2,0,0 -BRDA:110,3,0,0 -BRDA:110,3,1,0 -BRDA:115,4,0,0 -BRDA:115,4,1,0 -BRDA:130,5,0,0 -BRDA:130,5,1,0 -BRDA:175,6,0,0 -BRDA:175,6,1,0 -BRDA:195,7,0,0 -BRDA:231,8,0,0 -BRDA:273,9,0,0 -BRDA:295,10,0,0 -BRDA:295,11,0,0 -BRDA:295,11,1,0 -BRDA:317,12,0,0 -BRDA:322,13,0,0 -BRDA:322,13,1,0 -BRDA:328,14,0,0 -BRDA:328,14,1,0 -BRF:24 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx -FN:9,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:9,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/LayersDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlayGroupDrawer/OverlaysGroupDrawer.component.tsx -FN:8,(anonymous_1) -FN:10,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:14,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlayGroupDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlayGroupDrawer/hooks/useOverlayGroupForm.ts -FN:13,(anonymous_1) -FN:19,(anonymous_2) -FN:22,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:32,0 -DA:35,0 -LF:16 -LH:0 -BRDA:23,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysDrawer.component.tsx -FN:10,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -LF:10 -LH:0 -BRDA:15,0,0,0 -BRDA:25,1,0,0 -BRDA:25,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/GeneralOverlays.component.tsx -FN:9,(anonymous_2) -FN:30,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:31,0 -LF:12 -LH:0 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:26,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem/OverlayListItem.component.tsx -FN:11,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:11,0 -DA:13,0 -LF:6 -LH:0 -BRDA:24,0,0,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRDA:33,2,0,0 -BRDA:33,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/GeneralOverlays/OverlayListItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaysLegends.component.tsx -FN:5,(anonymous_1) -FN:10,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:11,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend/OverlaySingleLegend.component.tsx -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:9,0 -DA:10,0 -DA:11,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/OverlaysLegends/OverlaySingleLegend/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/UserOverlayForm.component.tsx -FN:14,(anonymous_1) -FN:36,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:34,0 -DA:36,0 -DA:37,0 -LF:16 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/UserOverlayForm.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:5,0 -DA:16,0 -DA:22,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/UserOverlayForm.utils.ts -FN:10,(anonymous_1) -FN:17,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:7,0 -DA:8,0 -DA:10,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -LF:12 -LH:0 -BRDA:21,0,0,0 -BRDA:21,1,0,0 -BRDA:21,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload/FileUpload.component.tsx -FN:13,(anonymous_2) -FN:23,(anonymous_3) -FN:30,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:4,0 -DA:13,0 -DA:19,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -LF:15 -LH:0 -BRDA:27,0,0,0 -BRDA:31,1,0,0 -BRDA:49,2,0,0 -BRDA:49,2,1,0 -BRDA:51,3,0,0 -BRDA:51,3,1,0 -BRDA:51,3,2,0 -BRDA:53,4,0,0 -BRDA:53,4,1,0 -BRDA:58,5,0,0 -BRDA:58,5,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/FileUpload/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/OverlayGroupSelector.component.tsx -FN:15,(anonymous_1) -FN:21,(anonymous_2) -FN:38,(anonymous_3) -FN:67,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:4,0 -DA:5,0 -DA:15,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:34,0 -DA:38,0 -DA:68,0 -LF:10 -LH:0 -BRDA:22,0,0,0 -BRDA:45,1,0,0 -BRDA:45,1,1,0 -BRDA:56,2,0,0 -BRDA:56,2,1,0 -BRDA:63,3,0,0 -BRDA:63,3,1,0 -BRDA:66,4,0,0 -BRDA:66,4,1,0 -BRDA:71,5,0,0 -BRDA:71,5,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/OverlaySelector.component.tsx -FN:15,(anonymous_1) -FN:21,(anonymous_2) -FN:38,(anonymous_3) -FN:67,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:4,0 -DA:5,0 -DA:15,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:34,0 -DA:38,0 -DA:68,0 -LF:10 -LH:0 -BRDA:22,0,0,0 -BRDA:45,1,0,0 -BRDA:45,1,1,0 -BRDA:56,2,0,0 -BRDA:56,2,1,0 -BRDA:63,3,0,0 -BRDA:63,3,1,0 -BRDA:66,4,0,0 -BRDA:66,4,1,0 -BRDA:71,5,0,0 -BRDA:71,5,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/OverlaySelector/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlayForm/hooks/useUserOverlayForm.ts -FN:35,(anonymous_1) -FN:50,(anonymous_2) -FN:54,(anonymous_3) -FN:58,(anonymous_4) -FN:62,(anonymous_5) -FN:66,(anonymous_6) -FN:70,(anonymous_7) -FN:74,(anonymous_8) -FN:83,(anonymous_9) -FN:94,(anonymous_10) -FN:100,(anonymous_11) -FNF:11 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:58,0 -DA:59,0 -DA:62,0 -DA:63,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:71,0 -DA:74,0 -DA:75,0 -DA:77,0 -DA:78,0 -DA:80,0 -DA:81,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:87,0 -DA:90,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:100,0 -DA:101,0 -DA:103,0 -DA:104,0 -DA:107,0 -DA:109,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:125,0 -DA:128,0 -LF:61 -LH:0 -BRDA:75,0,0,0 -BRDA:75,0,1,0 -BRDA:75,0,2,0 -BRDA:75,0,3,0 -BRDA:84,1,0,0 -BRDA:103,2,0,0 -BRDA:107,3,0,0 -BRDA:107,4,0,0 -BRDA:107,4,1,0 -BRDA:107,4,2,0 -BRDA:112,5,0,0 -BRDA:112,5,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlays.component.tsx -FN:15,(anonymous_2) -FN:24,(anonymous_3) -FN:27,(anonymous_4) -FN:55,(anonymous_5) -FN:60,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:56,0 -DA:60,0 -LF:22 -LH:0 -BRDA:33,0,0,0 -BRDA:35,1,0,0 -BRDA:35,1,1,0 -BRDA:44,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlaysGroup.component.tsx -FN:27,(anonymous_2) -FN:53,(anonymous_3) -FN:84,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:27,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:85,0 -LF:21 -LH:0 -BRDA:41,0,0,0 -BRDA:41,0,1,0 -BRDA:54,1,0,0 -BRDA:68,2,0,0 -BRDA:81,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlaysGroup.utils.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:4,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:18,0 -LF:7 -LH:0 -BRDA:12,0,0,0 -BRDA:12,1,0,0 -BRDA:12,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayListItem.component.tsx -FN:19,(anonymous_2) -FN:36,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:19,0 -DA:25,0 -DA:26,0 -DA:36,0 -LF:13 -LH:0 -BRDA:39,0,0,0 -BRDA:39,0,1,0 -BRDA:42,1,0,0 -BRDA:46,2,0,0 -BRDA:54,3,0,0 -BRDA:63,4,0,0 -BRDA:63,4,1,0 -BRDA:63,5,0,0 -BRDA:63,5,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/UserOverlayActions.component.tsx -FN:13,(anonymous_4) -FN:14,(anonymous_5) -FN:38,(anonymous_6) -FN:44,(anonymous_7) -FNF:4 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:19,0 -DA:39,0 -DA:44,0 -LF:12 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:37,1,0,0 -BRDA:37,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/UserOverlayActions.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayActions/hooks/useUserOverlayActions.ts -FN:12,(anonymous_1) -FN:15,(anonymous_2) -FN:19,(anonymous_3) -FN:23,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:36,0 -LF:19 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRDA:24,0,2,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/UserOverlayInfo/UserOverlayInfo.component.tsx -FN:11,(anonymous_4) -FN:12,(anonymous_5) -FNF:2 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:3,0 -DA:4,0 -DA:11,0 -DA:12,0 -LF:5 -LH:0 -BRDA:18,0,0,0 -BRDA:25,1,0,0 -BRDA:25,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/UserOverlayListItem/hooks/useDragAndDrop.ts -FN:21,(anonymous_1) -FN:31,(anonymous_2) -FN:38,(anonymous_3) -FN:46,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:5,0 -DA:21,0 -DA:28,0 -DA:31,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:44,0 -DA:47,0 -DA:51,0 -LF:12 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/UserOverlays/UserOverlaysGroup/hooks/useUserOverlays.ts -FN:17,(anonymous_1) -FN:26,(anonymous_2) -FN:32,(anonymous_3) -FN:38,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:17,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:38,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:46,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:60,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:68,0 -LF:31 -LH:0 -BRDA:27,0,0,0 -BRDA:43,1,0,0 -BRDA:45,2,0,0 -BRDA:60,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/OverlaysDrawer/hooks/useOverlay.ts -FN:27,(anonymous_2) -FN:29,(anonymous_3) -FN:30,(anonymous_4) -FN:31,(anonymous_5) -FN:32,(anonymous_6) -FN:35,(anonymous_7) -FN:37,(anonymous_8) -FN:49,(anonymous_9) -FN:64,(anonymous_10) -FNF:9 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,0 -DA:2,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:58,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:68,0 -LF:36 -LH:0 -BRDA:38,0,0,0 -BRDA:38,0,1,0 -BRDA:40,1,0,0 -BRDA:42,2,0,0 -BRDA:42,2,1,0 -BRDA:50,3,0,0 -BRDA:50,3,1,0 -BRDA:53,4,0,0 -BRDA:53,4,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ProjectInfoDrawer/ProjectInfoDrawer.component.tsx -FN:21,(anonymous_1) -FN:40,(anonymous_2) -FN:44,(anonymous_3) -FN:48,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:48,0 -DA:49,0 -LF:31 -LH:0 -BRDA:35,0,0,0 -BRDA:36,1,0,0 -BRDA:36,1,1,0 -BRDA:79,2,0,0 -BRDA:92,3,0,0 -BRDA:105,4,0,0 -BRDA:122,5,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ProjectInfoDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ReactionDrawer/ReactionDrawer.component.tsx -FN:14,(anonymous_2) -FN:53,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:24,0 -DA:53,0 -LF:17 -LH:0 -BRDA:18,0,0,0 -BRDA:40,1,0,0 -BRDA:51,2,0,0 -BRDA:52,3,0,0 -BRDA:52,3,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ReactionDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList/ConnectedBioEntitiesList.component.tsx -FN:10,(anonymous_2) -FN:23,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:24,0 -LF:12 -LH:0 -BRDA:15,0,0,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/ReactionDrawer/ConnectedBioEntitiesList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerWrapper.component.tsx -FN:14,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -LF:14 -LH:0 -BRDA:27,0,0,0 -BRDA:27,0,1,0 -BRDA:29,1,0,0 -BRDA:29,1,1,0 -BRDA:35,2,0,0 -BRDA:35,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesResultsList.component.tsx -FN:9,(anonymous_1) -FN:14,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -LF:13 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsList.component.tsx -FN:9,(anonymous_1) -FN:13,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,0 -DA:9,0 -DA:14,0 -LF:3 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:14,1,0,0 -BRDA:14,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/BioEntitiesPinsListItem.component.tsx -FN:31,(anonymous_2) -FN:37,(anonymous_3) -FN:45,(anonymous_4) -FN:59,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:31,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:50,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:66,0 -LF:33 -LH:0 -BRDA:38,0,0,0 -BRDA:38,0,1,0 -BRDA:46,1,0,0 -BRDA:74,2,0,0 -BRDA:74,2,1,0 -BRDA:80,3,0,0 -BRDA:80,3,1,0 -BRDA:89,4,0,0 -BRDA:97,5,0,0 -BRDA:105,6,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/BioEntitiesPinsListItem.utils.ts -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:6,0 -DA:9,0 -LF:2 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/BioEntitiesResultsList/BioEntitiesPinsList/BioEntitiesPinsListItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/GroupedSearchResults.component.tsx -FN:8,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:8,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesAccordion.component.tsx -FN:18,(anonymous_1) -FN:25,(anonymous_2) -FN:38,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:10,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:39,0 -LF:16 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:34,1,0,0 -BRDA:34,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem/BioEntitiesSubmapItem.component.tsx -FN:19,(anonymous_1) -FN:29,(anonymous_2) -FN:30,(anonymous_3) -FN:32,(anonymous_4) -FN:44,(anonymous_5) -FN:50,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:19,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:48,0 -DA:49,0 -DA:50,0 -LF:28 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:38,1,0,0 -BRDA:49,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/BioEntitiesAccordion/BioEntitiesSubmapItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion/ChemicalsAccordion.component.tsx -FN:13,(anonymous_1) -FN:24,(anonymous_2) -FN:29,(anonymous_3) -FN:31,(anonymous_4) -FN:32,(anonymous_5) -FN:36,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:35,0 -DA:36,0 -DA:37,0 -LF:25 -LH:0 -BRDA:31,0,0,0 -BRDA:31,0,1,0 -BRDA:46,1,0,0 -BRDA:46,1,1,0 -BRDA:49,2,0,0 -BRDA:49,2,1,0 -BRDA:50,3,0,0 -BRDA:50,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/ChemicalsAccordion/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion/DrugsAccordion.component.tsx -FN:13,(anonymous_1) -FN:25,(anonymous_2) -FN:30,(anonymous_3) -FN:32,(anonymous_4) -FN:33,(anonymous_5) -FN:36,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:37,0 -LF:25 -LH:0 -BRDA:32,0,0,0 -BRDA:32,0,1,0 -BRDA:46,1,0,0 -BRDA:46,1,1,0 -BRDA:49,2,0,0 -BRDA:49,2,1,0 -BRDA:50,3,0,0 -BRDA:50,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/GroupedSearchResults/DrugsAccordion/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/ResultsList.component.tsx -FN:9,(anonymous_1) -FN:14,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -LF:13 -LH:0 -BRDA:23,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/ResultsList.component.utils.tsx -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -LF:5 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails/AccordionsDetails.component.tsx -FN:19,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:7,0 -DA:13,0 -DA:19,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/AccordionsDetails/AccordionsDetails.utils.tsx -FN:3,(anonymous_5) -FN:6,(anonymous_6) -FN:13,(anonymous_7) -FN:16,(anonymous_8) -FN:25,(anonymous_9) -FN:28,(anonymous_10) -FN:37,(anonymous_11) -FN:40,(anonymous_12) -FN:46,(anonymous_13) -FNF:9 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:22,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:34,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:54,0 -LF:25 -LH:0 -BRDA:17,0,0,0 -BRDA:29,1,0,0 -BRDA:38,2,0,0 -BRDA:40,3,0,0 -BRDA:40,3,1,0 -BRDA:44,4,0,0 -BRDA:47,5,0,0 -BRDA:47,5,1,0 -BRDA:47,6,0,0 -BRDA:47,6,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsList.component.tsx -FN:14,(anonymous_1) -FN:26,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:20,0 -DA:27,0 -DA:41,0 -DA:43,0 -DA:45,0 -DA:47,0 -LF:15 -LH:0 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:17,0,2,0 -BRDA:17,0,3,0 -BRDA:17,0,4,0 -BRDA:17,0,5,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/PinsListItem.component.tsx -FN:24,(anonymous_1) -FN:42,(anonymous_2) -FN:43,(anonymous_3) -FN:45,(anonymous_4) -FN:57,(anonymous_5) -FN:93,(anonymous_6) -FN:113,(anonymous_7) -FN:131,(anonymous_8) -FN:134,(anonymous_9) -FNF:9 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:14,0 -DA:24,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:49,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:66,0 -DA:94,0 -DA:114,0 -DA:132,0 -DA:134,0 -LF:36 -LH:0 -BRDA:46,0,0,0 -BRDA:46,0,1,0 -BRDA:51,1,0,0 -BRDA:58,2,0,0 -BRDA:92,3,0,0 -BRDA:92,3,1,0 -BRDA:101,4,0,0 -BRDA:101,4,1,0 -BRDA:118,5,0,0 -BRDA:118,5,1,0 -BRDA:128,6,0,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/PinsListItem.component.utils.ts -FN:6,(anonymous_3) -FN:18,(anonymous_4) -FN:22,(anonymous_5) -FN:25,(anonymous_6) -FN:29,(anonymous_7) -FN:33,(anonymous_8) -FNF:6 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:4,0 -DA:6,0 -DA:7,0 -DA:15,0 -DA:18,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:36,0 -DA:39,0 -LF:13 -LH:0 -BRDA:25,0,0,0 -BRDA:25,0,1,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/PinsListItem/hooks/useVisiblePinsPolygonCoordinates.ts -FN:12,(anonymous_1) -FN:18,(anonymous_2) -FN:18,(anonymous_3) -FN:22,(anonymous_4) -FN:23,(anonymous_5) -FN:24,(anonymous_6) -FN:45,(anonymous_7) -FN:45,(anonymous_8) -FNF:8 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:41,0 -DA:44,0 -DA:45,0 -DA:49,0 -DA:50,0 -DA:53,0 -LF:25 -LH:0 -BRDA:49,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/ResultsList/PinsList/utils/getTargetElementsUniqueSorted.ts -FN:8,(anonymous_1) -FN:12,(anonymous_2) -FN:14,(anonymous_3) -FN:15,(anonymous_4) -FN:22,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:8,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/SearchDrawerHeader.component.tsx -FN:7,(anonymous_1) -FN:10,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch/PerfectMatchSwitch.component.tsx -FN:10,(anonymous_1) -FN:15,(anonymous_2) -FN:19,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -LF:17 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerHeader/PerfectMatchSwitch/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs/SearchDrawerTabs.component.tsx -FN:9,(anonymous_1) -FN:14,(anonymous_2) -FN:16,(anonymous_3) -FN:28,(anonymous_4) -FN:36,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:29,0 -DA:36,0 -LF:18 -LH:0 -BRDA:20,0,0,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRDA:34,2,0,0 -BRDA:34,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SearchDrawerWrapper/SearchDrawerTabs/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/SubmapsDrawer.tsx -FN:11,(anonymous_1) -FN:17,(anonymous_2) -FN:18,(anonymous_3) -FN:20,(anonymous_4) -FN:36,(anonymous_5) -FN:41,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:37,0 -DA:41,0 -LF:24 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:26,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/SubmapItem.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:10,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.component.tsx -FN:17,(anonymous_2) -FN:28,(anonymous_3) -FN:29,(anonymous_4) -FN:32,(anonymous_5) -FN:67,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:68,0 -LF:24 -LH:0 -BRDA:48,0,0,0 -BRDA:57,1,0,0 -BRDA:62,2,0,0 -BRDA:62,2,1,0 -BRDA:66,3,0,0 -BRDA:66,3,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/DownloadSubmap.constants.ts -FNF:0 -FNH:0 -DA:6,0 -DA:8,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Drawer/SubmapsDrawer/SubmapItem/DownloadSubmap/utils/useGetSubmapDownloadUrl.ts -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FN:19,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:26,0 -DA:29,0 -LF:13 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRDA:22,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/Legend.component.tsx -FN:11,(anonymous_4) -FN:15,(anonymous_5) -FNF:2 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -LF:14 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/Legend.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendHeader/LegendHeader.component.tsx -FN:7,(anonymous_3) -FN:10,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendHeader/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendImages/LegendImages.component.tsx -FN:5,(anonymous_1) -FN:13,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:14,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendImages/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendTabs/LegendTabs.component.tsx -FN:6,(anonymous_2) -FN:11,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:12,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendTabs/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendTabs/LegendTab/LegendTab.component.tsx -FN:11,(anonymous_2) -FN:13,(anonymous_3) -FN:15,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -LF:12 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/Legend/LegendTabs/LegendTab/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalActions/MapAdditionalActions.component.tsx -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalActions/MappAdditionalActions.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalActions/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalActions/utils/useAdditionalActions.ts -FN:17,(anonymous_1) -FN:22,(anonymous_2) -FN:24,(anonymous_3) -FN:44,(anonymous_4) -FN:51,(anonymous_5) -FN:52,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:37,0 -DA:40,0 -DA:43,0 -DA:45,0 -DA:50,0 -DA:51,0 -DA:52,0 -LF:28 -LH:0 -BRDA:25,0,0,0 -BRDA:29,1,0,0 -BRDA:32,2,0,0 -BRDA:32,2,1,0 -BRDA:33,3,0,0 -BRDA:33,3,1,0 -BRDA:34,4,0,0 -BRDA:34,4,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalActions/utils/useVisibleBioEntitiesPolygonCoordinates.ts -FN:11,(anonymous_1) -FN:15,(anonymous_2) -FN:16,(anonymous_3) -FN:17,(anonymous_4) -FN:40,(anonymous_5) -FN:40,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:48,0 -LF:23 -LH:0 -BRDA:44,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalLogos/MapAdditionalLogos.component.tsx -FN:14,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -LF:11 -LH:0 -BRDA:25,0,0,0 -BRDA:37,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapAdditionalLogos/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapBackgroundSwitch/MapBackgroundSwitch.component.tsx -FN:9,(anonymous_1) -FN:13,(anonymous_2) -FN:19,(anonymous_3) -FN:26,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:20,0 -DA:26,0 -LF:13 -LH:0 -BRDA:22,0,0,0 -BRDA:22,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapLoader/MapLoader.component.tsx -FN:7,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -LF:8 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:13,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/MapViewer.component.tsx -FN:11,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -LF:10 -LH:0 -BRDA:22,0,0,0 -BRDA:22,0,1,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/MapViewer.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:5,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:29,0 -DA:34,0 -DA:39,0 -DA:46,0 -DA:55,0 -DA:63,0 -DA:195,0 -DA:205,0 -LF:17 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/useOlMap.ts -FN:21,(anonymous_5) -FN:30,(anonymous_6) -FN:49,(anonymous_7) -FN:58,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:36,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:55,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:65,0 -LF:27 -LH:0 -BRDA:21,0,0,0 -BRDA:32,1,0,0 -BRDA:32,2,0,0 -BRDA:32,2,1,0 -BRDA:45,3,0,0 -BRDA:45,3,1,0 -BRDA:50,4,0,0 -BRDA:59,5,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/getCanvasIcon.ts -FN:18,(anonymous_6) -FN:27,(anonymous_7) -FN:40,(anonymous_8) -FN:45,(anonymous_9) -FN:63,(anonymous_10) -FNF:5 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:18,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:32,0 -DA:34,0 -DA:36,0 -DA:40,0 -DA:45,0 -DA:49,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:63,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:78,0 -LF:39 -LH:0 -BRDA:28,0,0,0 -BRDA:28,0,1,0 -BRDA:28,0,2,0 -BRDA:28,0,3,0 -BRDA:57,1,0,0 -BRDA:57,1,1,0 -BRDA:68,2,0,0 -BRDA:74,3,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/getCanvasMultiIcon.ts -FN:5,(anonymous_1) -FN:13,(anonymous_2) -FN:24,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:24,0 -DA:26,0 -LF:12 -LH:0 -BRDA:20,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/getMapTileUrl.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:10,0 -DA:11,0 -DA:14,0 -LF:5 -LH:0 -BRDA:10,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/useOlMapLayers.ts -FN:16,(anonymous_1) -FN:24,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -LF:16 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/useOlMapView.ts -FN:16,(anonymous_1) -FN:21,(anonymous_2) -FN:40,(anonymous_3) -FN:55,(anonymous_4) -FN:71,(anonymous_5) -FN:73,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:27,0 -DA:32,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:46,0 -DA:48,0 -DA:54,0 -DA:55,0 -DA:71,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:81,0 -LF:28 -LH:0 -BRDA:62,0,0,0 -BRDA:62,0,1,0 -BRDA:62,1,0,0 -BRDA:62,1,1,0 -BRDA:74,2,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts -FN:47,(anonymous_2) -FN:74,(anonymous_3) -FN:84,(anonymous_4) -FN:92,(anonymous_5) -FN:103,(anonymous_6) -FN:115,(anonymous_7) -FN:127,(anonymous_8) -FN:134,(anonymous_9) -FN:146,(anonymous_10) -FN:155,(anonymous_11) -FN:156,(anonymous_12) -FN:182,(anonymous_13) -FN:191,(anonymous_14) -FN:205,(anonymous_15) -FN:209,(anonymous_16) -FN:210,(anonymous_17) -FN:218,(anonymous_18) -FN:229,(anonymous_19) -FN:255,(anonymous_20) -FN:256,(anonymous_21) -FN:261,(anonymous_22) -FN:263,(anonymous_23) -FN:266,(anonymous_24) -FN:273,(anonymous_25) -FN:279,(anonymous_26) -FN:280,(anonymous_27) -FN:289,(anonymous_28) -FN:293,(anonymous_29) -FN:294,(anonymous_30) -FN:298,(anonymous_31) -FN:304,(anonymous_32) -FN:305,(anonymous_33) -FN:316,(anonymous_34) -FN:323,(anonymous_35) -FN:326,(anonymous_36) -FN:339,(anonymous_37) -FN:357,(anonymous_38) -FN:358,(anonymous_39) -FN:362,(anonymous_40) -FN:367,(anonymous_41) -FN:385,(anonymous_42) -FN:403,(anonymous_43) -FNF:42 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:16,0 -DA:17,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:35,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:66,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:89,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:95,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:107,0 -DA:115,0 -DA:116,0 -DA:117,0 -DA:119,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:131,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:138,0 -DA:146,0 -DA:147,0 -DA:148,0 -DA:150,0 -DA:151,0 -DA:155,0 -DA:156,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:179,0 -DA:180,0 -DA:182,0 -DA:183,0 -DA:184,0 -DA:185,0 -DA:191,0 -DA:192,0 -DA:193,0 -DA:195,0 -DA:203,0 -DA:205,0 -DA:206,0 -DA:209,0 -DA:210,0 -DA:211,0 -DA:212,0 -DA:213,0 -DA:218,0 -DA:219,0 -DA:220,0 -DA:221,0 -DA:223,0 -DA:224,0 -DA:229,0 -DA:230,0 -DA:231,0 -DA:233,0 -DA:234,0 -DA:239,0 -DA:240,0 -DA:241,0 -DA:243,0 -DA:244,0 -DA:245,0 -DA:247,0 -DA:248,0 -DA:249,0 -DA:251,0 -DA:255,0 -DA:256,0 -DA:257,0 -DA:258,0 -DA:260,0 -DA:261,0 -DA:263,0 -DA:264,0 -DA:266,0 -DA:267,0 -DA:268,0 -DA:269,0 -DA:273,0 -DA:274,0 -DA:275,0 -DA:276,0 -DA:279,0 -DA:280,0 -DA:281,0 -DA:282,0 -DA:283,0 -DA:289,0 -DA:290,0 -DA:292,0 -DA:293,0 -DA:294,0 -DA:295,0 -DA:296,0 -DA:297,0 -DA:298,0 -DA:299,0 -DA:303,0 -DA:304,0 -DA:305,0 -DA:306,0 -DA:307,0 -DA:308,0 -DA:309,0 -DA:313,0 -DA:316,0 -DA:317,0 -DA:323,0 -DA:325,0 -DA:326,0 -DA:327,0 -DA:328,0 -DA:339,0 -DA:340,0 -DA:341,0 -DA:343,0 -DA:344,0 -DA:345,0 -DA:347,0 -DA:357,0 -DA:358,0 -DA:359,0 -DA:361,0 -DA:362,0 -DA:363,0 -DA:367,0 -DA:368,0 -DA:369,0 -DA:371,0 -DA:372,0 -DA:373,0 -DA:375,0 -DA:385,0 -DA:386,0 -DA:387,0 -DA:389,0 -DA:390,0 -DA:391,0 -DA:393,0 -DA:403,0 -DA:404,0 -DA:405,0 -DA:407,0 -DA:408,0 -DA:409,0 -DA:411,0 -LF:204 -LH:0 -BRDA:85,0,0,0 -BRDA:85,1,0,0 -BRDA:85,1,1,0 -BRDA:104,2,0,0 -BRDA:104,3,0,0 -BRDA:104,3,1,0 -BRDA:116,4,0,0 -BRDA:116,5,0,0 -BRDA:116,5,1,0 -BRDA:128,6,0,0 -BRDA:128,7,0,0 -BRDA:128,7,1,0 -BRDA:135,8,0,0 -BRDA:135,9,0,0 -BRDA:135,9,1,0 -BRDA:147,10,0,0 -BRDA:150,11,0,0 -BRDA:158,12,0,0 -BRDA:175,13,0,0 -BRDA:183,14,0,0 -BRDA:192,15,0,0 -BRDA:192,16,0,0 -BRDA:192,16,1,0 -BRDA:212,17,0,0 -BRDA:212,18,0,0 -BRDA:212,18,1,0 -BRDA:220,19,0,0 -BRDA:223,20,0,0 -BRDA:230,21,0,0 -BRDA:234,22,0,0 -BRDA:235,23,0,0 -BRDA:235,23,1,0 -BRDA:235,23,2,0 -BRDA:240,24,0,0 -BRDA:244,25,0,0 -BRDA:248,26,0,0 -BRDA:260,27,0,0 -BRDA:268,28,0,0 -BRDA:292,29,0,0 -BRDA:292,29,1,0 -BRDA:296,30,0,0 -BRDA:303,31,0,0 -BRDA:307,32,0,0 -BRDA:317,33,0,0 -BRDA:318,34,0,0 -BRDA:318,34,1,0 -BRDA:318,34,2,0 -BRDA:318,34,3,0 -BRDA:340,35,0,0 -BRDA:340,36,0,0 -BRDA:340,36,1,0 -BRDA:344,37,0,0 -BRDA:344,38,0,0 -BRDA:344,38,1,0 -BRDA:368,39,0,0 -BRDA:368,40,0,0 -BRDA:368,40,1,0 -BRDA:372,41,0,0 -BRDA:372,42,0,0 -BRDA:372,42,1,0 -BRDA:386,43,0,0 -BRDA:386,44,0,0 -BRDA:386,44,1,0 -BRDA:390,45,0,0 -BRDA:390,46,0,0 -BRDA:390,46,1,0 -BRDA:404,47,0,0 -BRDA:404,48,0,0 -BRDA:404,48,1,0 -BRDA:408,49,0,0 -BRDA:408,50,0,0 -BRDA:408,50,1,0 -BRF:72 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/commentsLayer/getCommentsFeatures.ts -FN:9,(anonymous_3) -FN:46,(anonymous_4) -FN:54,(anonymous_5) -FNF:3 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:4,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:36,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:54,0 -DA:55,0 -LF:13 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/commentsLayer/useOlMapCommentsLayer.ts -FN:16,(anonymous_2) -FN:22,(anonymous_3) -FN:31,(anonymous_4) -FN:37,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:31,0 -DA:32,0 -DA:37,0 -DA:38,0 -DA:42,0 -DA:43,0 -LF:20 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/mapCardLayer/useOlMapCardLayer.ts -FN:13,(anonymous_2) -FN:17,(anonymous_3) -FN:29,(anonymous_4) -FN:33,(anonymous_5) -FN:39,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:39,0 -DA:40,0 -DA:49,0 -DA:50,0 -LF:24 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createFeatureFromExtent.ts -FN:7,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:11,0 -DA:13,0 -LF:7 -LH:0 -BRDA:16,0,0,0 -BRDA:16,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayGeometryFeature.ts -FN:7,(anonymous_1) -FN:13,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:13,0 -DA:18,0 -DA:19,0 -DA:20,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlayLineFeature.ts -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:5,0 -DA:6,0 -DA:13,0 -DA:17,0 -DA:19,0 -DA:21,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/createOverlaySubmapLinkRectangleFeature.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:5,0 -DA:6,0 -DA:8,0 -DA:13,0 -DA:14,0 -DA:15,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlayLineFeatureStyle.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getOverlaySubmapLinkRectangleFeatureStyle.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:4,0 -DA:5,0 -LF:3 -LH:0 -BRDA:6,0,0,0 -BRDA:6,0,1,0 -BRDA:7,1,0,0 -BRDA:7,1,1,0 -BRDA:8,2,0,0 -BRDA:8,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getPolygonLatitudeCoordinates.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:16,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/getSubmapLinkRectangle.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:4,0 -DA:11,0 -DA:12,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:25,0 -LF:8 -LH:0 -BRDA:11,0,0,0 -BRDA:19,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/groupSubmapLinksRectanglesById.ts -FN:4,(anonymous_1) -FN:10,(anonymous_2) -FN:18,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:4,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:29,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:40,0 -DA:44,0 -LF:19 -LH:0 -BRDA:14,0,0,0 -BRDA:19,1,0,0 -BRDA:19,1,1,0 -BRDA:21,2,0,0 -BRDA:21,2,1,0 -BRDA:23,3,0,0 -BRDA:23,3,1,0 -BRDA:25,4,0,0 -BRDA:25,4,1,0 -BRDA:25,4,2,0 -BRDA:29,5,0,0 -BRDA:29,6,0,0 -BRDA:29,6,1,0 -BRDA:34,7,0,0 -BRDA:34,7,1,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/parseSurfaceMarkersToBioEntityRender.ts -FN:6,(anonymous_1) -FN:9,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:4,0 -DA:6,0 -DA:9,0 -LF:4 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useBioEntitiesWithSubmapLinks.ts -FN:18,(anonymous_1) -FN:22,(anonymous_2) -FN:22,(anonymous_3) -FN:26,(anonymous_4) -FN:26,(anonymous_5) -FN:31,(anonymous_6) -FN:32,(anonymous_7) -FN:47,(anonymous_8) -FN:59,(anonymous_9) -FN:63,(anonymous_10) -FN:83,(anonymous_11) -FN:87,(anonymous_12) -FNF:12 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:25,0 -DA:26,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:40,0 -DA:46,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:67,0 -DA:77,0 -DA:82,0 -DA:83,0 -DA:86,0 -DA:87,0 -DA:91,0 -LF:38 -LH:0 -BRDA:36,0,0,0 -BRDA:40,1,0,0 -BRDA:40,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useGetOverlayColor.ts -FN:29,(anonymous_1) -FN:38,(anonymous_2) -FN:50,(anonymous_3) -FN:56,(anonymous_4) -FN:67,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:39,0 -DA:49,0 -DA:51,0 -DA:55,0 -DA:56,0 -DA:66,0 -DA:68,0 -DA:69,0 -DA:71,0 -DA:72,0 -DA:74,0 -DA:79,0 -LF:28 -LH:0 -BRDA:29,0,0,0 -BRDA:30,1,0,0 -BRDA:30,1,1,0 -BRDA:31,2,0,0 -BRDA:31,2,1,0 -BRDA:32,3,0,0 -BRDA:32,3,1,0 -BRDA:33,4,0,0 -BRDA:33,4,1,0 -BRDA:35,5,0,0 -BRDA:35,5,1,0 -BRDA:35,5,2,0 -BRDA:68,6,0,0 -BRDA:69,7,0,0 -BRDA:69,7,1,0 -BRDA:71,8,0,0 -BRF:16 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useOlMapOverlaysLayer.ts -FN:23,(anonymous_2) -FN:26,(anonymous_3) -FN:32,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:32,0 -DA:33,0 -DA:36,0 -DA:37,0 -LF:13 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/overlaysLayer/useOverlayFeatures.ts -FN:19,(anonymous_1) -FN:29,(anonymous_2) -FN:30,(anonymous_3) -FN:46,(anonymous_4) -FN:47,(anonymous_5) -FN:58,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:45,0 -DA:47,0 -DA:53,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:65,0 -DA:66,0 -DA:76,0 -DA:77,0 -DA:87,0 -DA:101,0 -LF:37 -LH:0 -BRDA:38,0,0,0 -BRDA:38,0,1,0 -BRDA:58,1,0,0 -BRDA:58,1,1,0 -BRDA:63,2,0,0 -BRDA:63,2,1,0 -BRDA:65,3,0,0 -BRDA:71,4,0,0 -BRDA:71,4,1,0 -BRDA:76,5,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getBioEntitiesFeatures.ts -FN:7,(anonymous_1) -FN:19,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:5,0 -DA:7,0 -DA:19,0 -DA:20,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMarkerSingleFeature.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:16,0 -DA:17,0 -DA:22,0 -DA:23,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMarkersFeatures.ts -FN:6,(anonymous_1) -FN:14,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:4,0 -DA:6,0 -DA:14,0 -DA:15,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getModelElementSingleFeature.ts -FN:12,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:26,0 -DA:30,0 -DA:34,0 -DA:35,0 -DA:41,0 -DA:42,0 -LF:12 -LH:0 -BRDA:26,0,0,0 -BRDA:26,0,1,0 -BRDA:30,1,0,0 -BRDA:30,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinCanvasArgs.ts -FN:17,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:17,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:27,0 -DA:29,0 -DA:33,0 -LF:12 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:27,1,0,0 -BRDA:27,1,1,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinSingleFeature.ts -FN:10,(anonymous_1) -FN:23,(anonymous_2) -FN:33,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:27,0 -DA:33,0 -DA:34,0 -DA:40,0 -DA:42,0 -DA:43,0 -LF:14 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinStyle.ts -FN:12,(anonymous_2) -FN:13,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:21,0 -DA:23,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinsBioEntitiesIds.ts -FN:3,(anonymous_1) -FN:5,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,0 -DA:5,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinsFeatures.ts -FN:7,(anonymous_1) -FN:19,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:5,0 -DA:7,0 -DA:19,0 -DA:20,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getMultipinsModelElements.ts -FN:13,(anonymous_1) -FN:20,(anonymous_2) -FN:32,(anonymous_3) -FN:33,(anonymous_4) -FN:37,(anonymous_5) -FN:37,(anonymous_6) -FN:38,(anonymous_7) -FN:41,(anonymous_8) -FN:43,(anonymous_9) -FN:44,(anonymous_10) -FN:55,(anonymous_11) -FNF:11 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:1,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:20,0 -DA:24,0 -DA:26,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:41,0 -DA:42,0 -DA:44,0 -DA:48,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -LF:24 -LH:0 -BRDA:28,0,0,0 -BRDA:28,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getPinFeature.ts -FN:11,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:22,0 -DA:24,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:37,0 -DA:43,0 -LF:15 -LH:0 -BRDA:25,0,0,0 -BRDA:25,0,1,0 -BRDA:26,1,0,0 -BRDA:26,1,1,0 -BRDA:31,2,0,0 -BRDA:31,2,1,0 -BRDA:34,3,0,0 -BRDA:34,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/getPinStyle.ts -FN:7,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:16,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/pinsLayer/useOlMapPinsLayer.ts -FN:23,(anonymous_2) -FN:30,(anonymous_3) -FN:38,(anonymous_4) -FN:43,(anonymous_5) -FN:46,(anonymous_6) -FN:71,(anonymous_7) -FN:73,(anonymous_8) -FN:78,(anonymous_9) -FNF:8 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:42,0 -DA:44,0 -DA:46,0 -DA:71,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:79,0 -DA:83,0 -DA:84,0 -LF:36 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/processLayer/processModelElements.ts -FN:18,processModelElements -FN:35,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,processModelElements -FNDA:0,(anonymous_3) -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:49,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:93,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:141,0 -LF:27 -LH:0 -BRDA:36,0,0,0 -BRDA:53,1,0,0 -BRDA:86,2,0,0 -BRDA:86,2,1,0 -BRDA:88,3,0,0 -BRDA:88,3,1,0 -BRDA:90,4,0,0 -BRDA:96,5,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/processLayer/useOlMapProcessLayer.ts -FN:53,(anonymous_2) -FN:70,(anonymous_3) -FN:86,(anonymous_4) -FN:87,(anonymous_5) -FN:89,(anonymous_6) -FN:90,(anonymous_7) -FN:110,(anonymous_8) -FN:114,(anonymous_9) -FN:118,(anonymous_10) -FN:124,(anonymous_11) -FN:136,(anonymous_12) -FN:138,(anonymous_13) -FN:140,(anonymous_14) -FN:144,(anonymous_15) -FN:145,(anonymous_16) -FN:148,(anonymous_17) -FN:152,(anonymous_18) -FN:168,(anonymous_19) -FN:172,(anonymous_20) -FN:188,(anonymous_21) -FN:192,(anonymous_22) -FN:227,(anonymous_23) -FN:259,(anonymous_24) -FN:261,(anonymous_25) -FN:270,(anonymous_26) -FN:275,(anonymous_27) -FNF:26 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:12,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:24,0 -DA:25,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:93,0 -DA:94,0 -DA:98,0 -DA:108,0 -DA:110,0 -DA:112,0 -DA:114,0 -DA:115,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:124,0 -DA:125,0 -DA:126,0 -DA:128,0 -DA:129,0 -DA:131,0 -DA:132,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:140,0 -DA:141,0 -DA:144,0 -DA:145,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:152,0 -DA:153,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:172,0 -DA:173,0 -DA:188,0 -DA:189,0 -DA:190,0 -DA:192,0 -DA:193,0 -DA:194,0 -DA:195,0 -DA:197,0 -DA:212,0 -DA:227,0 -DA:228,0 -DA:229,0 -DA:231,0 -DA:259,0 -DA:260,0 -DA:261,0 -DA:262,0 -DA:270,0 -DA:271,0 -DA:272,0 -DA:275,0 -DA:276,0 -DA:282,0 -DA:283,0 -LF:118 -LH:0 -BRDA:88,0,0,0 -BRDA:88,1,0,0 -BRDA:88,1,1,0 -BRDA:88,1,2,0 -BRDA:119,2,0,0 -BRDA:125,3,0,0 -BRDA:128,4,0,0 -BRDA:131,5,0,0 -BRDA:149,6,0,0 -BRDA:169,7,0,0 -BRDA:189,8,0,0 -BRDA:189,9,0,0 -BRDA:189,9,1,0 -BRDA:193,10,0,0 -BRDA:193,10,1,0 -BRDA:194,11,0,0 -BRDA:228,12,0,0 -BRDA:228,13,0,0 -BRDA:228,13,1,0 -BRDA:228,13,2,0 -BRF:20 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/reactionsLayer/getLineFeature.ts -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:4,0 -DA:6,0 -DA:10,0 -DA:12,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/reactionsLayer/getReactionLineSegments.ts -FN:3,getReactionLineSegments -FN:6,(anonymous_2) -FN:9,(anonymous_3) -FN:12,(anonymous_4) -FN:15,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,getReactionLineSegments -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:18,0 -LF:12 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/config/reactionsLayer/useOlMapReactionsLayer.ts -FN:22,(anonymous_2) -FN:24,(anonymous_3) -FN:26,(anonymous_4) -FN:34,(anonymous_5) -FN:41,(anonymous_6) -FN:41,(anonymous_7) -FN:46,(anonymous_8) -FN:47,(anonymous_9) -FN:56,(anonymous_10) -FN:58,(anonymous_11) -FN:64,(anonymous_12) -FNF:11 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:2,0 -DA:3,0 -DA:4,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:56,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:73,0 -DA:74,0 -LF:38 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/onMapPositionChange.ts -FN:10,(anonymous_1) -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/onPointerMove.ts -FN:5,(anonymous_1) -FN:10,(anonymous_2) -FN:16,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:5,0 -DA:6,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:25,0 -DA:26,0 -DA:27,0 -LF:16 -LH:0 -BRDA:6,0,0,0 -BRDA:6,0,1,0 -BRDA:6,0,2,0 -BRDA:11,1,0,0 -BRDA:18,2,0,0 -BRDA:26,3,0,0 -BRDA:27,4,0,0 -BRDA:27,4,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/useOlMapListeners.ts -FN:30,(anonymous_1) -FN:38,(anonymous_2) -FN:84,(anonymous_3) -FN:86,(anonymous_4) -FN:89,(anonymous_5) -FN:94,(anonymous_6) -FN:97,(anonymous_7) -FN:100,(anonymous_8) -FN:105,(anonymous_9) -FN:110,(anonymous_10) -FN:113,(anonymous_11) -FN:118,(anonymous_12) -FN:133,(anonymous_13) -FNF:13 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:48,0 -DA:50,0 -DA:56,0 -DA:70,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:94,0 -DA:97,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:105,0 -DA:106,0 -DA:110,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:118,0 -DA:119,0 -DA:121,0 -DA:122,0 -DA:124,0 -DA:130,0 -DA:133,0 -LF:61 -LH:0 -BRDA:63,0,0,0 -BRDA:63,0,1,0 -BRDA:75,1,0,0 -BRDA:75,1,1,0 -BRDA:90,2,0,0 -BRDA:101,3,0,0 -BRDA:101,4,0,0 -BRDA:101,4,1,0 -BRDA:101,4,2,0 -BRDA:114,5,0,0 -BRDA:114,6,0,0 -BRDA:114,6,1,0 -BRDA:114,6,2,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mapSingleClick/handleOpenImmediateLink.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -LF:8 -LH:0 -BRDA:6,0,0,0 -BRDA:8,1,0,0 -BRDA:8,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/clickHandleReaction.ts -FN:15,(anonymous_2) -FN:16,(anonymous_3) -FN:19,(anonymous_4) -FN:24,(anonymous_5) -FN:25,(anonymous_6) -FN:40,(anonymous_7) -FN:43,(anonymous_8) -FNF:7 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:34,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:51,0 -DA:52,0 -LF:34 -LH:0 -BRDA:15,0,0,0 -BRDA:20,1,0,0 -BRDA:28,2,0,0 -BRDA:51,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/getFeatureAtCoordinate.ts -FN:8,isFeatureFilledCompartment -FN:12,isFeatureNotCompartment -FN:19,getFeatureAtCoordinate -FN:36,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,isFeatureFilledCompartment -FNDA:0,isFeatureNotCompartment -FNDA:0,getFeatureAtCoordinate -FNDA:0,(anonymous_4) -DA:5,0 -DA:6,0 -DA:9,0 -DA:13,0 -DA:19,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:38,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:51,0 -LF:15 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRDA:14,1,0,0 -BRDA:14,1,1,0 -BRDA:22,2,0,0 -BRDA:30,3,0,0 -BRDA:38,4,0,0 -BRDA:39,5,0,0 -BRDA:39,5,1,0 -BRDA:39,5,2,0 -BRDA:39,5,3,0 -BRDA:39,5,4,0 -BRDA:39,5,5,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/getModelElementsIdsFromReaction.ts -FN:3,getModelElementsIdsFromReaction -FN:5,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,getModelElementsIdsFromReaction -FNDA:0,(anonymous_2) -DA:3,0 -DA:4,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/handleDataReset.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -LF:13 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/handleFeaturesClick.ts -FN:17,(anonymous_1) -FN:22,(anonymous_2) -FN:23,(anonymous_3) -FN:25,(anonymous_4) -FN:31,(anonymous_5) -FN:49,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:7,0 -DA:9,0 -DA:17,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:44,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:54,0 -LF:29 -LH:0 -BRDA:28,0,0,0 -BRDA:28,0,1,0 -BRDA:30,1,0,0 -BRDA:32,2,0,0 -BRDA:32,2,1,0 -BRDA:34,3,0,0 -BRDA:34,3,1,0 -BRDA:36,4,0,0 -BRDA:36,4,1,0 -BRDA:38,5,0,0 -BRDA:38,5,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/leftClickHandleAlias.ts -FN:14,(anonymous_1) -FN:15,(anonymous_2) -FN:18,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:42,0 -DA:45,0 -DA:46,0 -LF:25 -LH:0 -BRDA:14,0,0,0 -BRDA:21,1,0,0 -BRDA:45,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseLeftClick/onMapLeftClick.ts -FN:21,(anonymous_2) -FN:30,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:30,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:47,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -LF:36 -LH:0 -BRDA:40,0,0,0 -BRDA:42,1,0,0 -BRDA:49,2,0,0 -BRDA:50,3,0,0 -BRDA:61,4,0,0 -BRDA:61,4,1,0 -BRDA:63,5,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick/onMapRightClick.ts -FN:20,(anonymous_2) -FN:21,(anonymous_3) -FN:30,(anonymous_4) -FN:35,(anonymous_5) -FN:56,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:49,0 -DA:50,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:62,0 -LF:37 -LH:0 -BRDA:31,0,0,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRDA:32,2,0,0 -BRDA:34,3,0,0 -BRDA:36,4,0,0 -BRDA:36,4,1,0 -BRDA:36,4,2,0 -BRDA:36,4,3,0 -BRDA:49,5,0,0 -BRDA:55,6,0,0 -BRDA:55,6,1,0 -BRDA:57,7,0,0 -BRDA:61,8,0,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/mouseClick/mouseRightClick/rightClickHandleAlias.ts -FN:9,(anonymous_1) -FN:10,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/listeners/pinIconClick/useHandlePinIconClick.ts -FN:13,(anonymous_2) -FN:19,(anonymous_3) -FN:33,(anonymous_4) -FN:36,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:41,0 -LF:24 -LH:0 -BRDA:24,0,0,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRDA:24,1,2,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/findLargestExtent.ts -FN:3,findLargestExtent -FN:7,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,findLargestExtent -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:15,0 -LF:10 -LH:0 -BRDA:9,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getBezierCurve.ts -FN:4,getBezierCurve -FNF:1 -FNH:0 -FNDA:0,getBezierCurve -DA:4,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:23,0 -DA:29,0 -DA:34,0 -DA:36,0 -DA:38,0 -LF:9 -LH:0 -BRDA:9,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getBoundingBoxFromExtent.ts -FN:8,getBoundingBoxFromExtent -FNF:1 -FNH:0 -FNDA:0,getBoundingBoxFromExtent -DA:3,0 -DA:4,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:17,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getCenter.ts -FN:4,getCenter -FN:10,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,getCenter -FNDA:0,(anonymous_2) -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:25,0 -DA:26,0 -DA:28,0 -LF:17 -LH:0 -BRDA:11,0,0,0 -BRDA:14,1,0,0 -BRDA:17,2,0,0 -BRDA:20,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getCoordsX.ts -FN:2,getCoordsX -FNF:1 -FNH:0 -FNDA:0,getCoordsX -DA:2,0 -DA:10,0 -LF:2 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getCoordsY.ts -FN:2,getCoordsY -FNF:1 -FNH:0 -FNDA:0,getCoordsY -DA:2,0 -DA:10,0 -LF:2 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getCurveCoords.ts -FN:7,getCurveCoords -FNF:1 -FNH:0 -FNDA:0,getCurveCoords -DA:3,0 -DA:4,0 -DA:7,0 -DA:22,0 -DA:26,0 -DA:30,0 -DA:34,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getDividedExtents.ts -FN:4,getDividedExtents -FN:14,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,getDividedExtents -FNDA:0,(anonymous_2) -DA:4,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:42,0 -LF:26 -LH:0 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:17,0,2,0 -BRDA:17,0,3,0 -BRDA:18,1,0,0 -BRDA:18,1,1,0 -BRDA:19,2,0,0 -BRDA:19,3,0,0 -BRDA:19,3,1,0 -BRDA:19,3,2,0 -BRDA:19,3,3,0 -BRDA:22,4,0,0 -BRDA:26,5,0,0 -BRDA:30,6,0,0 -BRDA:34,7,0,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords.ts -FN:8,getEllipseCoords -FNF:1 -FNH:0 -FNDA:0,getEllipseCoords -DA:2,0 -DA:3,0 -DA:8,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:40,0 -DA:49,0 -DA:50,0 -DA:54,0 -DA:62,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:71,0 -DA:74,0 -DA:76,0 -LF:23 -LH:0 -BRDA:16,0,0,0 -BRDA:31,1,0,0 -BRDA:49,2,0,0 -BRDA:53,3,0,0 -BRDA:53,3,1,0 -BRDA:57,4,0,0 -BRDA:57,4,1,0 -BRDA:68,5,0,0 -BRDA:68,5,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getLineSegments.ts -FN:6,getLineSegments -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,getLineSegments -FNDA:0,(anonymous_2) -DA:6,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:18,0 -LF:5 -LH:0 -BRDA:12,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getPolygonCoords.ts -FN:10,getPolygonCoords -FN:26,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,getPolygonCoords -FNDA:0,(anonymous_3) -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:36,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:54,0 -LF:18 -LH:0 -BRDA:27,0,0,0 -BRDA:51,1,0,0 -BRDA:51,2,0,0 -BRDA:51,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/coords/getRotation.ts -FN:4,getRotation -FNF:1 -FNH:0 -FNDA:0,getRotation -DA:4,0 -DA:5,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/BaseMultiPolygon.ts -FN:134,(anonymous_2) -FN:198,(anonymous_3) -FN:226,(anonymous_4) -FN:230,(anonymous_5) -FN:266,(anonymous_6) -FN:279,(anonymous_7) -FN:283,(anonymous_8) -FN:297,(anonymous_9) -FN:310,(anonymous_10) -FN:336,(anonymous_11) -FN:374,(anonymous_12) -FNF:11 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:2,0 -DA:4,0 -DA:5,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:58,0 -DA:103,0 -DA:105,0 -DA:107,0 -DA:109,0 -DA:115,0 -DA:127,0 -DA:164,0 -DA:165,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:183,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:187,0 -DA:188,0 -DA:189,0 -DA:190,0 -DA:192,0 -DA:193,0 -DA:199,0 -DA:200,0 -DA:210,0 -DA:211,0 -DA:212,0 -DA:219,0 -DA:220,0 -DA:221,0 -DA:222,0 -DA:227,0 -DA:231,0 -DA:232,0 -DA:235,0 -DA:236,0 -DA:237,0 -DA:239,0 -DA:240,0 -DA:243,0 -DA:244,0 -DA:246,0 -DA:253,0 -DA:254,0 -DA:262,0 -DA:263,0 -DA:267,0 -DA:273,0 -DA:275,0 -DA:281,0 -DA:283,0 -DA:284,0 -DA:285,0 -DA:286,0 -DA:289,0 -DA:290,0 -DA:292,0 -DA:294,0 -DA:298,0 -DA:303,0 -DA:308,0 -DA:310,0 -DA:311,0 -DA:312,0 -DA:313,0 -DA:314,0 -DA:317,0 -DA:321,0 -DA:324,0 -DA:325,0 -DA:326,0 -DA:328,0 -DA:329,0 -DA:331,0 -DA:333,0 -DA:341,0 -DA:342,0 -DA:351,0 -DA:352,0 -DA:353,0 -DA:355,0 -DA:356,0 -DA:359,0 -DA:360,0 -DA:371,0 -DA:375,0 -DA:376,0 -DA:378,0 -DA:379,0 -DA:381,0 -DA:382,0 -DA:383,0 -DA:384,0 -DA:386,0 -DA:387,0 -DA:391,0 -DA:392,0 -DA:394,0 -LF:123 -LH:0 -BRDA:193,0,0,0 -BRDA:193,0,1,0 -BRDA:199,1,0,0 -BRDA:231,2,0,0 -BRDA:239,3,0,0 -BRDA:239,4,0,0 -BRDA:239,4,1,0 -BRDA:267,5,0,0 -BRDA:267,5,1,0 -BRDA:268,6,0,0 -BRDA:268,6,1,0 -BRDA:268,6,2,0 -BRDA:268,6,3,0 -BRDA:285,7,0,0 -BRDA:289,8,0,0 -BRDA:298,9,0,0 -BRDA:299,10,0,0 -BRDA:299,10,1,0 -BRDA:299,10,2,0 -BRDA:312,11,0,0 -BRDA:317,12,0,0 -BRDA:318,13,0,0 -BRDA:318,13,1,0 -BRDA:325,14,0,0 -BRDA:325,15,0,0 -BRDA:325,15,1,0 -BRDA:328,16,0,0 -BRDA:355,17,0,0 -BRDA:359,18,0,0 -BRDA:359,19,0,0 -BRDA:359,19,1,0 -BRDA:359,19,2,0 -BRDA:375,20,0,0 -BRDA:381,21,0,0 -BRDA:381,22,0,0 -BRDA:381,22,1,0 -BRDA:383,23,0,0 -BRDA:386,24,0,0 -BRF:38 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/Compartment.ts -FN:66,(anonymous_2) -FN:140,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:5,0 -DA:6,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:98,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:141,0 -DA:142,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:158,0 -DA:160,0 -DA:161,0 -DA:163,0 -DA:164,0 -DA:166,0 -DA:168,0 -DA:169,0 -DA:176,0 -DA:178,0 -DA:179,0 -DA:181,0 -DA:182,0 -DA:184,0 -DA:186,0 -DA:187,0 -DA:197,0 -LF:41 -LH:0 -BRDA:152,0,0,0 -BRDA:152,0,1,0 -BRDA:163,1,0,0 -BRDA:163,1,1,0 -BRDA:181,2,0,0 -BRDA:181,2,1,0 -BRDA:191,3,0,0 -BRDA:191,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/CompartmentCircle.ts -FN:51,(anonymous_2) -FN:117,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:10,0 -DA:14,0 -DA:15,0 -DA:50,0 -DA:83,0 -DA:118,0 -DA:128,0 -LF:7 -LH:0 -BRDA:62,0,0,0 -BRDA:63,1,0,0 -BRDA:64,2,0,0 -BRDA:65,3,0,0 -BRDA:66,4,0,0 -BRDA:67,5,0,0 -BRDA:68,6,0,0 -BRDA:69,7,0,0 -BRDA:74,8,0,0 -BRDA:75,9,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/CompartmentPathway.ts -FN:58,(anonymous_2) -FN:125,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:10,0 -DA:11,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:53,0 -DA:88,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:126,0 -DA:135,0 -DA:136,0 -DA:141,0 -DA:148,0 -DA:157,0 -LF:21 -LH:0 -BRDA:69,0,0,0 -BRDA:70,1,0,0 -BRDA:71,2,0,0 -BRDA:72,3,0,0 -BRDA:73,4,0,0 -BRDA:74,5,0,0 -BRDA:79,6,0,0 -BRDA:80,7,0,0 -BRDA:152,8,0,0 -BRDA:152,8,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/CompartmentSquare.ts -FN:50,(anonymous_2) -FN:116,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:9,0 -DA:13,0 -DA:14,0 -DA:49,0 -DA:82,0 -DA:117,0 -DA:125,0 -LF:7 -LH:0 -BRDA:61,0,0,0 -BRDA:62,1,0,0 -BRDA:63,2,0,0 -BRDA:64,3,0,0 -BRDA:65,4,0,0 -BRDA:66,5,0,0 -BRDA:67,6,0,0 -BRDA:68,7,0,0 -BRDA:73,8,0,0 -BRDA:74,9,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/MapElement.ts -FN:99,(anonymous_2) -FN:185,(anonymous_3) -FN:200,(anonymous_4) -FN:213,(anonymous_5) -FN:214,(anonymous_6) -FN:268,(anonymous_7) -FN:269,(anonymous_8) -FN:296,(anonymous_9) -FN:297,(anonymous_10) -FN:334,(anonymous_11) -FN:335,(anonymous_12) -FN:344,(anonymous_13) -FNF:12 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:2,0 -DA:4,0 -DA:14,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:74,0 -DA:91,0 -DA:93,0 -DA:95,0 -DA:139,0 -DA:169,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:186,0 -DA:187,0 -DA:190,0 -DA:191,0 -DA:192,0 -DA:193,0 -DA:194,0 -DA:196,0 -DA:198,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:205,0 -DA:206,0 -DA:207,0 -DA:209,0 -DA:214,0 -DA:215,0 -DA:224,0 -DA:225,0 -DA:226,0 -DA:232,0 -DA:233,0 -DA:234,0 -DA:237,0 -DA:240,0 -DA:241,0 -DA:251,0 -DA:254,0 -DA:255,0 -DA:262,0 -DA:263,0 -DA:264,0 -DA:269,0 -DA:270,0 -DA:278,0 -DA:279,0 -DA:285,0 -DA:291,0 -DA:292,0 -DA:297,0 -DA:298,0 -DA:306,0 -DA:307,0 -DA:315,0 -DA:320,0 -DA:321,0 -DA:322,0 -DA:327,0 -DA:329,0 -DA:330,0 -DA:335,0 -DA:336,0 -DA:337,0 -DA:339,0 -DA:344,0 -DA:346,0 -DA:347,0 -DA:355,0 -DA:356,0 -DA:362,0 -DA:368,0 -DA:369,0 -LF:96 -LH:0 -BRDA:111,0,0,0 -BRDA:112,1,0,0 -BRDA:113,2,0,0 -BRDA:114,3,0,0 -BRDA:116,4,0,0 -BRDA:117,5,0,0 -BRDA:122,6,0,0 -BRDA:123,7,0,0 -BRDA:124,8,0,0 -BRDA:129,9,0,0 -BRDA:130,10,0,0 -BRDA:131,11,0,0 -BRDA:132,12,0,0 -BRDA:133,13,0,0 -BRDA:186,14,0,0 -BRDA:187,15,0,0 -BRDA:187,15,1,0 -BRDA:193,16,0,0 -BRDA:201,17,0,0 -BRDA:206,18,0,0 -BRDA:222,19,0,0 -BRDA:222,19,1,0 -BRDA:237,20,0,0 -BRDA:237,20,1,0 -BRDA:240,21,0,0 -BRDA:310,22,0,0 -BRDA:310,22,1,0 -BRDA:321,23,0,0 -BRDA:336,24,0,0 -BRDA:344,25,0,0 -BRDA:344,25,1,0 -BRF:31 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/getArrowFeature.ts -FN:15,getArrowFeature -FN:42,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,getArrowFeature -FNDA:0,(anonymous_3) -DA:3,0 -DA:4,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:51,0 -DA:58,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:69,0 -DA:74,0 -DA:75,0 -LF:23 -LH:0 -BRDA:37,0,0,0 -BRDA:55,1,0,0 -BRDA:55,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon.ts -FN:4,getBoundingBoxPolygon -FNF:1 -FNH:0 -FNDA:0,getBoundingBoxPolygon -DA:1,0 -DA:4,0 -DA:17,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/getShapePolygon.ts -FN:10,getShapePolygon -FN:45,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,getShapePolygon -FNDA:0,(anonymous_3) -DA:2,0 -DA:4,0 -DA:5,0 -DA:8,0 -DA:10,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:46,0 -DA:48,0 -DA:51,0 -DA:53,0 -LF:17 -LH:0 -BRDA:28,0,0,0 -BRDA:28,0,1,0 -BRDA:30,1,0,0 -BRDA:42,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/handleSemanticView.ts -FN:14,handleSemanticView -FN:59,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,handleSemanticView -FNDA:0,(anonymous_3) -DA:4,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:53,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:79,0 -DA:86,0 -DA:87,0 -DA:91,0 -DA:93,0 -DA:97,0 -DA:98,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:112,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:119,0 -LF:58 -LH:0 -BRDA:32,0,0,0 -BRDA:43,1,0,0 -BRDA:44,2,0,0 -BRDA:44,2,1,0 -BRDA:44,2,2,0 -BRDA:50,3,0,0 -BRDA:50,4,0,0 -BRDA:50,4,1,0 -BRDA:56,5,0,0 -BRDA:63,6,0,0 -BRDA:64,7,0,0 -BRDA:64,7,1,0 -BRDA:64,7,2,0 -BRDA:64,7,3,0 -BRDA:64,7,4,0 -BRDA:73,8,0,0 -BRDA:79,9,0,0 -BRDA:80,10,0,0 -BRDA:80,10,1,0 -BRDA:80,10,2,0 -BRDA:80,10,3,0 -BRDA:80,10,4,0 -BRDA:86,11,0,0 -BRDA:91,12,0,0 -BRDA:91,12,1,0 -BRDA:97,13,0,0 -BRDA:97,14,0,0 -BRDA:97,14,1,0 -BRDA:100,15,0,0 -BRDA:102,16,0,0 -BRDA:102,17,0,0 -BRDA:102,17,1,0 -BRDA:106,18,0,0 -BRDA:108,19,0,0 -BRDA:108,20,0,0 -BRDA:108,20,1,0 -BRDA:112,21,0,0 -BRDA:114,22,0,0 -BRDA:114,23,0,0 -BRDA:114,23,1,0 -BRF:40 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/isFeatureInCompartment.ts -FN:4,isFeatureInCompartment -FNF:1 -FNH:0 -FNDA:0,isFeatureInCompartment -DA:4,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -LF:10 -LH:0 -BRDA:11,0,0,0 -BRDA:14,1,0,0 -BRDA:14,2,0,0 -BRDA:14,2,1,0 -BRDA:18,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/isFeatureInPathway.ts -FN:4,isFeatureInPathway -FNF:1 -FNH:0 -FNDA:0,isFeatureInPathway -DA:4,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -LF:10 -LH:0 -BRDA:11,0,0,0 -BRDA:14,1,0,0 -BRDA:14,2,0,0 -BRDA:14,2,1,0 -BRDA:18,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/elements/Glyph/Glyph.ts -FN:84,(anonymous_2) -FN:130,(anonymous_3) -FN:151,(anonymous_4) -FN:174,(anonymous_5) -FN:186,(anonymous_6) -FN:193,(anonymous_7) -FN:208,(anonymous_8) -FN:222,(anonymous_9) -FN:229,(anonymous_10) -FN:234,(anonymous_11) -FN:255,(anonymous_12) -FNF:11 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:3,0 -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:35,0 -DA:38,0 -DA:40,0 -DA:42,0 -DA:44,0 -DA:46,0 -DA:66,0 -DA:70,0 -DA:72,0 -DA:74,0 -DA:76,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:115,0 -DA:123,0 -DA:125,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:138,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:148,0 -DA:152,0 -DA:159,0 -DA:164,0 -DA:175,0 -DA:182,0 -DA:183,0 -DA:187,0 -DA:188,0 -DA:189,0 -DA:190,0 -DA:194,0 -DA:195,0 -DA:196,0 -DA:197,0 -DA:198,0 -DA:199,0 -DA:200,0 -DA:202,0 -DA:203,0 -DA:204,0 -DA:205,0 -DA:209,0 -DA:210,0 -DA:211,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:215,0 -DA:217,0 -DA:218,0 -DA:223,0 -DA:224,0 -DA:225,0 -DA:230,0 -DA:231,0 -DA:233,0 -DA:234,0 -DA:235,0 -DA:236,0 -DA:237,0 -DA:238,0 -DA:239,0 -DA:240,0 -DA:241,0 -DA:242,0 -DA:250,0 -DA:252,0 -DA:256,0 -DA:257,0 -DA:258,0 -DA:259,0 -DA:261,0 -DA:262,0 -DA:263,0 -DA:264,0 -DA:265,0 -DA:266,0 -DA:267,0 -DA:268,0 -DA:271,0 -DA:273,0 -DA:274,0 -DA:275,0 -DA:276,0 -DA:278,0 -DA:279,0 -DA:280,0 -DA:281,0 -DA:282,0 -DA:284,0 -LF:127 -LH:0 -BRDA:112,0,0,0 -BRDA:112,0,1,0 -BRDA:134,1,0,0 -BRDA:138,2,0,0 -BRDA:138,2,1,0 -BRDA:213,3,0,0 -BRDA:213,3,1,0 -BRDA:224,4,0,0 -BRDA:224,5,0,0 -BRDA:224,5,1,0 -BRDA:230,6,0,0 -BRDA:262,7,0,0 -BRDA:262,7,1,0 -BRDA:262,8,0,0 -BRDA:262,8,1,0 -BRDA:264,9,0,0 -BRDA:273,10,0,0 -BRDA:278,11,0,0 -BRF:18 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/Layer.ts -FN:81,(anonymous_2) -FN:145,(anonymous_3) -FN:146,(anonymous_4) -FN:177,(anonymous_5) -FN:178,(anonymous_6) -FN:183,(anonymous_7) -FN:207,(anonymous_8) -FN:208,(anonymous_9) -FN:213,(anonymous_10) -FN:241,(anonymous_11) -FN:248,(anonymous_12) -FN:250,(anonymous_13) -FN:149,(anonymous_14) -FN:172,(anonymous_15) -FN:202,(anonymous_16) -FN:232,(anonymous_17) -FN:340,(anonymous_18) -FN:341,(anonymous_19) -FN:346,(anonymous_20) -FN:355,(anonymous_21) -FN:372,(anonymous_22) -FN:395,(anonymous_23) -FNF:22 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:24,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:52,0 -DA:96,0 -DA:97,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:111,0 -DA:112,0 -DA:114,0 -DA:115,0 -DA:117,0 -DA:118,0 -DA:120,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:126,0 -DA:133,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:142,0 -DA:145,0 -DA:146,0 -DA:150,0 -DA:169,0 -DA:173,0 -DA:174,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:183,0 -DA:184,0 -DA:199,0 -DA:203,0 -DA:204,0 -DA:207,0 -DA:208,0 -DA:209,0 -DA:213,0 -DA:214,0 -DA:229,0 -DA:233,0 -DA:234,0 -DA:235,0 -DA:236,0 -DA:238,0 -DA:241,0 -DA:245,0 -DA:246,0 -DA:248,0 -DA:249,0 -DA:251,0 -DA:252,0 -DA:257,0 -DA:261,0 -DA:262,0 -DA:263,0 -DA:267,0 -DA:268,0 -DA:269,0 -DA:271,0 -DA:282,0 -DA:283,0 -DA:284,0 -DA:285,0 -DA:286,0 -DA:290,0 -DA:291,0 -DA:292,0 -DA:296,0 -DA:297,0 -DA:298,0 -DA:300,0 -DA:311,0 -DA:312,0 -DA:313,0 -DA:314,0 -DA:318,0 -DA:320,0 -DA:321,0 -DA:328,0 -DA:334,0 -DA:335,0 -DA:337,0 -DA:341,0 -DA:342,0 -DA:347,0 -DA:348,0 -DA:349,0 -DA:350,0 -DA:352,0 -DA:356,0 -DA:369,0 -DA:373,0 -DA:374,0 -DA:375,0 -DA:376,0 -DA:377,0 -DA:378,0 -DA:381,0 -DA:383,0 -DA:385,0 -DA:386,0 -DA:389,0 -DA:390,0 -DA:391,0 -DA:392,0 -DA:393,0 -DA:395,0 -DA:396,0 -DA:397,0 -DA:398,0 -DA:400,0 -DA:403,0 -LF:142 -LH:0 -BRDA:251,0,0,0 -BRDA:261,1,0,0 -BRDA:282,2,0,0 -BRDA:290,3,0,0 -BRDA:311,4,0,0 -BRDA:320,5,0,0 -BRDA:320,5,1,0 -BRDA:235,6,0,0 -BRDA:235,7,0,0 -BRDA:235,7,1,0 -BRDA:349,8,0,0 -BRDA:349,9,0,0 -BRDA:349,9,1,0 -BRDA:377,10,0,0 -BRDA:377,11,0,0 -BRDA:377,11,1,0 -BRDA:385,12,0,0 -BRDA:385,13,0,0 -BRDA:385,13,1,0 -BRDA:390,14,0,0 -BRDA:390,14,1,0 -BRDA:392,15,0,0 -BRDA:397,16,0,0 -BRDA:397,17,0,0 -BRDA:397,17,1,0 -BRF:25 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerImage.ts -FN:29,(anonymous_2) -FN:60,(anonymous_3) -FN:83,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:26,0 -DA:42,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:67,0 -DA:68,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:84,0 -LF:18 -LH:0 -BRDA:76,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts -FN:73,(anonymous_2) -FN:121,(anonymous_3) -FN:136,(anonymous_4) -FN:148,(anonymous_5) -FN:154,(anonymous_6) -FN:168,(anonymous_7) -FN:183,(anonymous_8) -FN:190,(anonymous_9) -FNF:8 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:3,0 -DA:4,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:20,0 -DA:38,0 -DA:59,0 -DA:61,0 -DA:63,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:106,0 -DA:108,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:122,0 -DA:137,0 -DA:145,0 -DA:149,0 -DA:150,0 -DA:151,0 -DA:155,0 -DA:159,0 -DA:169,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:191,0 -DA:192,0 -LF:61 -LH:0 -BRDA:102,0,0,0 -BRDA:102,0,1,0 -BRDA:185,1,0,0 -BRDA:185,2,0,0 -BRDA:185,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerRect.ts -FN:74,(anonymous_2) -FN:128,(anonymous_3) -FN:143,(anonymous_4) -FN:166,(anonymous_5) -FN:178,(anonymous_6) -FN:193,(anonymous_7) -FN:208,(anonymous_8) -FN:215,(anonymous_9) -FNF:8 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:3,0 -DA:4,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:39,0 -DA:60,0 -DA:62,0 -DA:64,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:103,0 -DA:105,0 -DA:113,0 -DA:115,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:125,0 -DA:129,0 -DA:150,0 -DA:151,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:167,0 -DA:174,0 -DA:175,0 -DA:179,0 -DA:183,0 -DA:190,0 -DA:194,0 -DA:195,0 -DA:196,0 -DA:197,0 -DA:198,0 -DA:199,0 -DA:200,0 -DA:201,0 -DA:203,0 -DA:204,0 -DA:205,0 -DA:209,0 -DA:210,0 -DA:211,0 -DA:216,0 -DA:217,0 -LF:70 -LH:0 -BRDA:103,0,0,0 -BRDA:103,0,1,0 -BRDA:159,1,0,0 -BRDA:210,2,0,0 -BRDA:210,3,0,0 -BRDA:210,3,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/elements/LayerText.ts -FN:97,(anonymous_2) -FN:158,(anonymous_3) -FN:179,(anonymous_4) -FN:198,(anonymous_5) -FN:221,(anonymous_6) -FN:234,(anonymous_7) -FN:256,(anonymous_8) -FN:275,(anonymous_9) -FN:282,(anonymous_10) -FNF:9 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:3,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:52,0 -DA:81,0 -DA:83,0 -DA:85,0 -DA:87,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:134,0 -DA:144,0 -DA:146,0 -DA:154,0 -DA:156,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:163,0 -DA:166,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:180,0 -DA:205,0 -DA:206,0 -DA:214,0 -DA:215,0 -DA:216,0 -DA:217,0 -DA:222,0 -DA:229,0 -DA:230,0 -DA:231,0 -DA:235,0 -DA:239,0 -DA:246,0 -DA:253,0 -DA:257,0 -DA:258,0 -DA:259,0 -DA:260,0 -DA:261,0 -DA:262,0 -DA:263,0 -DA:264,0 -DA:265,0 -DA:266,0 -DA:267,0 -DA:268,0 -DA:270,0 -DA:271,0 -DA:272,0 -DA:276,0 -DA:277,0 -DA:278,0 -DA:283,0 -DA:284,0 -DA:285,0 -DA:286,0 -DA:288,0 -DA:289,0 -DA:290,0 -DA:291,0 -DA:292,0 -DA:293,0 -DA:303,0 -DA:306,0 -DA:307,0 -DA:309,0 -LF:105 -LH:0 -BRDA:160,0,0,0 -BRDA:162,1,0,0 -BRDA:214,2,0,0 -BRDA:277,3,0,0 -BRDA:277,4,0,0 -BRDA:277,4,1,0 -BRDA:285,5,0,0 -BRDA:289,6,0,0 -BRDA:289,7,0,0 -BRDA:289,7,1,0 -BRDA:291,8,0,0 -BRDA:306,9,0,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawBoundingBoxInteraction.ts -FN:13,getDrawBoundingBoxInteraction -FN:22,(anonymous_3) -FN:31,(anonymous_4) -FN:70,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,getDrawBoundingBoxInteraction -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:4,0 -DA:8,0 -DA:13,0 -DA:19,0 -DA:23,0 -DA:24,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:43,0 -DA:47,0 -DA:51,0 -DA:56,0 -DA:64,0 -DA:66,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:74,0 -DA:76,0 -DA:77,0 -DA:80,0 -DA:83,0 -LF:27 -LH:0 -BRDA:25,0,0,0 -BRDA:25,0,1,0 -BRDA:25,0,2,0 -BRDA:25,0,3,0 -BRDA:32,1,0,0 -BRDA:32,1,1,0 -BRDA:33,2,0,0 -BRDA:33,3,0,0 -BRDA:33,3,1,0 -BRDA:76,4,0,0 -BRDA:76,5,0,0 -BRDA:76,5,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/interaction/getDrawOvalInteraction.ts -FN:13,getDrawOvalInteraction -FN:21,(anonymous_3) -FN:30,(anonymous_4) -FN:68,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,getDrawOvalInteraction -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:4,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:18,0 -DA:22,0 -DA:23,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:42,0 -DA:46,0 -DA:50,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:62,0 -DA:64,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:72,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:81,0 -LF:31 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRDA:24,0,2,0 -BRDA:24,0,3,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRDA:32,2,0,0 -BRDA:32,3,0,0 -BRDA:32,3,1,0 -BRDA:74,4,0,0 -BRDA:74,5,0,0 -BRDA:74,5,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts -FN:14,getTransformInteraction -FN:32,(anonymous_6) -FN:63,(anonymous_7) -FN:80,(anonymous_8) -FN:95,(anonymous_9) -FN:110,(anonymous_10) -FNF:6 -FNH:0 -FNDA:0,getTransformInteraction -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:21,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:47,0 -DA:52,0 -DA:53,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:69,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:80,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:110,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:119,0 -DA:121,0 -DA:122,0 -DA:128,0 -LF:72 -LH:0 -BRDA:36,0,0,0 -BRDA:55,1,0,0 -BRDA:55,2,0,0 -BRDA:55,2,1,0 -BRDA:68,3,0,0 -BRDA:82,4,0,0 -BRDA:90,5,0,0 -BRDA:90,6,0,0 -BRDA:90,6,1,0 -BRDA:98,7,0,0 -BRDA:103,8,0,0 -BRDA:103,9,0,0 -BRDA:103,9,1,0 -BRDA:116,10,0,0 -BRDA:116,11,0,0 -BRDA:116,11,1,0 -BRDA:121,12,0,0 -BRF:17 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer.ts -FN:4,drawElementOnLayer -FN:15,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,drawElementOnLayer -FNDA:0,(anonymous_2) -DA:4,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -LF:6 -LH:0 -BRDA:16,0,0,0 -BRDA:18,1,0,0 -BRDA:18,2,0,0 -BRDA:18,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer.ts -FN:4,removeElementFromLayer -FN:13,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,removeElementFromLayer -FNDA:0,(anonymous_3) -DA:2,0 -DA:4,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -LF:9 -LH:0 -BRDA:14,0,0,0 -BRDA:16,1,0,0 -BRDA:18,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/utils/removeLayer.ts -FN:3,removeLayer -FN:10,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,removeLayer -FNDA:0,(anonymous_2) -DA:3,0 -DA:10,0 -DA:11,0 -DA:12,0 -LF:4 -LH:0 -BRDA:11,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts -FN:5,updateElement -FN:10,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,updateElement -FNDA:0,(anonymous_3) -DA:1,0 -DA:5,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -LF:11 -LH:0 -BRDA:11,0,0,0 -BRDA:13,1,0,0 -BRDA:16,2,0,0 -BRDA:16,3,0,0 -BRDA:16,3,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/layer/utils/updateLayer.ts -FN:4,updateLayer -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,updateLayer -FNDA:0,(anonymous_2) -DA:4,0 -DA:11,0 -DA:12,0 -DA:13,0 -LF:4 -LH:0 -BRDA:12,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/LineOverlay.ts -FN:29,(anonymous_2) -FN:37,(anonymous_3) -FN:59,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:18,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:38,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:50,0 -DA:55,0 -DA:56,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:67,0 -DA:68,0 -DA:70,0 -DA:71,0 -DA:73,0 -LF:27 -LH:0 -BRDA:63,0,0,0 -BRDA:63,1,0,0 -BRDA:63,1,1,0 -BRDA:70,2,0,0 -BRDA:70,3,0,0 -BRDA:70,3,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/MarkerOverlay.ts -FN:29,(anonymous_2) -FN:42,(anonymous_3) -FN:67,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:4,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:18,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:43,0 -DA:44,0 -DA:52,0 -DA:58,0 -DA:63,0 -DA:64,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:75,0 -DA:76,0 -DA:78,0 -DA:79,0 -DA:81,0 -LF:26 -LH:0 -BRDA:54,0,0,0 -BRDA:54,0,1,0 -BRDA:71,1,0,0 -BRDA:71,2,0,0 -BRDA:71,2,1,0 -BRDA:78,3,0,0 -BRDA:78,4,0,0 -BRDA:78,4,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/areOverlayOrdersNotEqual.ts -FN:4,areOverlayOrdersNotEqual -FNF:1 -FNH:0 -FNDA:0,areOverlayOrdersNotEqual -DA:4,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:26,0 -DA:30,0 -LF:11 -LH:0 -BRDA:8,0,0,0 -BRDA:12,1,0,0 -BRDA:20,2,0,0 -BRDA:21,3,0,0 -BRDA:21,3,1,0 -BRDA:21,3,2,0 -BRDA:21,3,3,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/calculateOverlayDimensions.ts -FN:4,calculateOverlayDimensions -FNF:1 -FNH:0 -FNDA:0,calculateOverlayDimensions -DA:4,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -LF:8 -LH:0 -BRDA:14,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/findMatchingSubmapLinkRectangle.ts -FN:3,findMatchingSubmapLinkRectangle -FN:7,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,findMatchingSubmapLinkRectangle -FNDA:0,(anonymous_2) -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:17,0 -LF:7 -LH:0 -BRDA:8,0,0,0 -BRDA:8,0,1,0 -BRDA:9,1,0,0 -BRDA:9,1,1,0 -BRDA:11,2,0,0 -BRDA:11,2,1,0 -BRDA:13,3,0,0 -BRDA:13,3,1,0 -BRDA:13,3,2,0 -BRDA:17,4,0,0 -BRDA:17,4,1,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/getOverlays.ts -FN:6,getOverlays -FN:12,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,getOverlays -FNDA:0,(anonymous_3) -DA:3,0 -DA:4,0 -DA:6,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:25,0 -LF:12 -LH:0 -BRDA:14,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/groupOverlayEntities.ts -FN:5,groupOverlayEntities -FN:10,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,groupOverlayEntities -FNDA:0,(anonymous_3) -DA:3,0 -DA:5,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:23,0 -DA:24,0 -DA:29,0 -DA:33,0 -LF:13 -LH:0 -BRDA:11,0,0,0 -BRDA:14,1,0,0 -BRDA:23,2,0,0 -BRDA:23,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/processOverlayGroupedElements.ts -FN:8,processOverlayGroupedElements -FN:13,(anonymous_3) -FN:19,(anonymous_4) -FN:23,(anonymous_5) -FNF:4 -FNH:0 -FNDA:0,processOverlayGroupedElements -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:5,0 -DA:6,0 -DA:8,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:24,0 -DA:31,0 -DA:33,0 -LF:13 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/overlay/sortElementOverlayByColor.ts -FN:5,sortElementOverlayByColor -FN:9,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,sortElementOverlayByColor -FNDA:0,(anonymous_2) -DA:5,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:18,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:15,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/reaction/Reaction.ts -FN:79,(anonymous_2) -FN:113,(anonymous_3) -FN:121,(anonymous_4) -FN:126,(anonymous_5) -FN:145,(anonymous_6) -FN:230,(anonymous_7) -FN:240,(anonymous_8) -FN:286,(anonymous_9) -FN:349,(anonymous_10) -FN:350,(anonymous_11) -FN:364,(anonymous_12) -FN:381,(anonymous_13) -FN:392,(anonymous_14) -FN:418,(anonymous_15) -FNF:14 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:13,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:46,0 -DA:71,0 -DA:73,0 -DA:75,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:105,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:114,0 -DA:115,0 -DA:117,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:133,0 -DA:135,0 -DA:142,0 -DA:149,0 -DA:150,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:173,0 -DA:174,0 -DA:175,0 -DA:176,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:186,0 -DA:187,0 -DA:188,0 -DA:189,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:203,0 -DA:207,0 -DA:209,0 -DA:210,0 -DA:217,0 -DA:225,0 -DA:227,0 -DA:231,0 -DA:232,0 -DA:233,0 -DA:234,0 -DA:238,0 -DA:239,0 -DA:240,0 -DA:241,0 -DA:249,0 -DA:256,0 -DA:263,0 -DA:270,0 -DA:271,0 -DA:273,0 -DA:282,0 -DA:283,0 -DA:287,0 -DA:291,0 -DA:292,0 -DA:293,0 -DA:297,0 -DA:298,0 -DA:303,0 -DA:308,0 -DA:315,0 -DA:322,0 -DA:323,0 -DA:324,0 -DA:331,0 -DA:332,0 -DA:335,0 -DA:345,0 -DA:346,0 -DA:350,0 -DA:351,0 -DA:352,0 -DA:353,0 -DA:355,0 -DA:356,0 -DA:357,0 -DA:358,0 -DA:360,0 -DA:365,0 -DA:366,0 -DA:368,0 -DA:369,0 -DA:372,0 -DA:373,0 -DA:374,0 -DA:377,0 -DA:378,0 -DA:381,0 -DA:382,0 -DA:383,0 -DA:384,0 -DA:386,0 -DA:389,0 -DA:396,0 -DA:397,0 -DA:399,0 -DA:400,0 -DA:403,0 -DA:404,0 -DA:405,0 -DA:408,0 -DA:409,0 -DA:412,0 -DA:413,0 -DA:414,0 -DA:415,0 -DA:416,0 -DA:418,0 -DA:419,0 -DA:420,0 -DA:421,0 -DA:423,0 -DA:426,0 -LF:160 -LH:0 -BRDA:108,0,0,0 -BRDA:108,0,1,0 -BRDA:152,1,0,0 -BRDA:173,2,0,0 -BRDA:180,3,0,0 -BRDA:200,4,0,0 -BRDA:209,5,0,0 -BRDA:209,5,1,0 -BRDA:291,6,0,0 -BRDA:291,6,1,0 -BRDA:322,7,0,0 -BRDA:331,8,0,0 -BRDA:352,9,0,0 -BRDA:357,10,0,0 -BRDA:357,11,0,0 -BRDA:357,11,1,0 -BRDA:360,12,0,0 -BRDA:360,12,1,0 -BRDA:365,13,0,0 -BRDA:368,14,0,0 -BRDA:377,15,0,0 -BRDA:377,16,0,0 -BRDA:377,16,1,0 -BRDA:383,17,0,0 -BRDA:383,18,0,0 -BRDA:383,18,1,0 -BRDA:396,19,0,0 -BRDA:399,20,0,0 -BRDA:408,21,0,0 -BRDA:413,22,0,0 -BRDA:413,22,1,0 -BRDA:415,23,0,0 -BRDA:420,24,0,0 -BRDA:420,25,0,0 -BRDA:420,25,1,0 -BRF:35 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/getCoverStyles.ts -FN:13,getCoverStyles -FNF:1 -FNH:0 -FNDA:0,getCoverStyles -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:13,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:51,0 -DA:52,0 -DA:54,0 -DA:61,0 -DA:62,0 -DA:65,0 -LF:27 -LH:0 -BRDA:33,0,0,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRDA:39,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/getFill.ts -FN:4,getFill -FNF:1 -FNH:0 -FNDA:0,getFill -DA:2,0 -DA:4,0 -DA:5,0 -LF:3 -LH:0 -BRDA:4,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/getScaledElementStyle.ts -FN:6,getScaledElementStyle -FNF:1 -FNH:0 -FNDA:0,getScaledElementStyle -DA:4,0 -DA:6,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -LF:6 -LH:0 -BRDA:11,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/getScaledStrokeStyle.ts -FN:4,getScaledStrokeStyle -FN:9,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,getScaledStrokeStyle -FNDA:0,(anonymous_2) -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -LF:8 -LH:0 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRDA:8,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/getStroke.ts -FN:4,getStroke -FNF:1 -FNH:0 -FNDA:0,getStroke -DA:2,0 -DA:4,0 -DA:15,0 -LF:3 -LH:0 -BRDA:5,0,0,0 -BRDA:6,1,0,0 -BRDA:7,2,0,0 -BRDA:8,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/getStyle.ts -FN:10,getStyle -FNF:1 -FNH:0 -FNDA:0,getStyle -DA:2,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:25,0 -LF:7 -LH:0 -BRDA:12,0,0,0 -BRDA:13,1,0,0 -BRDA:14,2,0,0 -BRDA:15,3,0,0 -BRDA:16,4,0,0 -BRDA:28,5,0,0 -BRDA:28,5,1,0 -BRDA:32,6,0,0 -BRDA:32,6,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/style/rgbToHex.ts -FN:5,rgbToHex -FNF:1 -FNH:0 -FNDA:0,rgbToHex -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -LF:5 -LH:0 -BRDA:6,0,0,0 -BRDA:6,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/text/getTextCoords.ts -FN:6,getTextCoords -FNF:1 -FNH:0 -FNDA:0,getTextCoords -DA:6,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:49,0 -LF:18 -LH:0 -BRDA:15,0,0,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRDA:35,2,0,0 -BRDA:40,3,0,0 -BRDA:40,3,1,0 -BRDA:42,4,0,0 -BRDA:46,5,0,0 -BRDA:46,6,0,0 -BRDA:46,6,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/text/getTextStyle.ts -FN:5,getTextStyle -FNF:1 -FNH:0 -FNDA:0,getTextStyle -DA:1,0 -DA:2,0 -DA:5,0 -DA:20,0 -LF:4 -LH:0 -BRDA:11,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/shapes/text/getWrappedTextWithFontSize.ts -FN:2,getWrappedTextWithFontSize -FN:32,(anonymous_2) -FN:48,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,getWrappedTextWithFontSize -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:15,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:56,0 -DA:57,0 -DA:58,0 -LF:31 -LH:0 -BRDA:6,0,0,0 -BRDA:7,1,0,0 -BRDA:21,2,0,0 -BRDA:33,3,0,0 -BRDA:33,3,1,0 -BRDA:36,4,0,0 -BRDA:36,4,1,0 -BRDA:36,5,0,0 -BRDA:36,5,1,0 -BRDA:43,6,0,0 -BRDA:51,7,0,0 -BRDA:51,8,0,0 -BRDA:51,8,1,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/websocket/processLayer.ts -FN:10,processLayer -FNF:1 -FNH:0 -FNDA:0,processLayer -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:17,0 -DA:18,0 -DA:22,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:41,0 -LF:17 -LH:0 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRDA:19,1,0,0 -BRDA:19,1,1,0 -BRDA:28,2,0,0 -BRDA:31,3,0,0 -BRDA:34,4,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/websocket/processLayerImage.ts -FN:11,processLayerImage -FNF:1 -FNH:0 -FNDA:0,processLayerImage -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:51,0 -LF:19 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRDA:30,2,0,0 -BRDA:33,3,0,0 -BRDA:33,3,1,0 -BRDA:43,4,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/websocket/processLayerOval.ts -FN:8,processLayerOval -FNF:1 -FNH:0 -FNDA:0,processLayerOval -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -LF:12 -LH:0 -BRDA:16,0,0,0 -BRDA:24,1,0,0 -BRDA:27,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/websocket/processLayerText.ts -FN:11,processLayerText -FNF:1 -FNH:0 -FNDA:0,processLayerText -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:51,0 -LF:19 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRDA:30,2,0,0 -BRDA:33,3,0,0 -BRDA:33,3,1,0 -BRDA:43,4,0,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/websocket/processMessage.ts -FN:9,processMessage -FNF:1 -FNH:0 -FNDA:0,processMessage -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:28,0 -LF:16 -LH:0 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRDA:22,2,0,0 -BRDA:22,2,1,0 -BRDA:24,3,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/components/Map/MapViewer/utils/websocket/websocket.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:8,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsDrawer.component.tsx -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -LF:9 -LH:0 -BRDA:16,0,0,0 -BRDA:16,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsDrawer.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginContent/PluginContent.component.tsx -FN:6,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginContent/PluginContent.constants.ts -FN:9,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:3,0 -DA:9,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginContent/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginContent/utils/getPluginContentStyle.ts -FN:7,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:12,0 -LF:5 -LH:0 -BRDA:8,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginsHeader.component.tsx -FN:10,(anonymous_1) -FN:14,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -LF:13 -LH:0 -BRDA:25,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/PluginHeaderInfo.component.tsx -FN:13,(anonymous_1) -FN:19,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:20,0 -DA:21,0 -LF:11 -LH:0 -BRDA:20,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/PluginHeaderInfo.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginHeaderInfo/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/PluginOpenButton.component.tsx -FN:9,(anonymous_1) -FN:29,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:30,0 -LF:10 -LH:0 -BRDA:18,0,0,0 -BRDA:25,1,0,0 -BRDA:25,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement/LoadPluginElement.component.tsx -FN:14,(anonymous_1) -FN:21,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:22,0 -DA:23,0 -DA:28,0 -LF:11 -LH:0 -BRDA:22,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsHeader/PluginOpenButton/LoadPluginElement/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsTabs/PluginsTabs.component.tsx -FN:8,(anonymous_1) -FN:12,(anonymous_2) -FN:17,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:18,0 -LF:12 -LH:0 -BRDA:30,0,0,0 -BRDA:30,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsTabs/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab/PluginSingleTab.component.tsx -FN:15,(anonymous_1) -FN:23,(anonymous_2) -FN:29,(anonymous_3) -FN:41,(anonymous_4) -FN:45,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:41,0 -DA:45,0 -LF:18 -LH:0 -BRDA:24,0,0,0 -BRDA:38,1,0,0 -BRDA:38,1,1,0 -BRDA:40,2,0,0 -BRDA:40,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/components/Map/PluginsDrawer/PluginsTabs/PluginSingleTab/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/SPA/MinervaSPA.component.tsx -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FN:20,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:20,0 -LF:16 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/components/SPA/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/canvas.ts -FNF:0 -FNH:0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:15,0 -DA:22,0 -DA:27,0 -DA:29,0 -DA:31,0 -DA:33,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/common.ts -FN:19,(anonymous_19) -FNF:1 -FNH:0 -FNDA:0,(anonymous_19) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:26,0 -DA:28,0 -LF:18 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/dividers.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/errors.ts -FN:8,(anonymous_5) -FN:10,(anonymous_6) -FNF:2 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:3,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:14,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/features.ts -FNF:0 -FNH:0 -DA:1,0 -DA:13,0 -DA:19,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/fetchData.ts -FNF:0 -FNH:0 -DA:2,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/font.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:10,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/hexColors.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/index.ts -FNF:0 -FNH:0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -LF:12 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRDA:10,1,0,0 -BRDA:10,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/constants/index.utils.ts -FN:3,(anonymous_3) -FN:11,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:18,0 -LF:10 -LH:0 -BRDA:5,0,0,0 -BRDA:5,1,0,0 -BRDA:5,1,1,0 -BRDA:5,1,2,0 -BRDA:12,2,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/constants/map.ts -FNF:0 -FNH:0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:22,0 -DA:29,0 -LF:14 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/mocks.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/plugins.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/project.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/searchDrawer.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/time.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/constants/user.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/hooks/useOpenSubmaps.ts -FN:19,(anonymous_1) -FN:28,(anonymous_2) -FN:29,(anonymous_3) -FN:32,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:19,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:38,0 -DA:40,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:49,0 -LF:25 -LH:0 -BRDA:30,0,0,0 -BRDA:30,0,1,0 -BRDA:30,0,2,0 -BRDA:33,1,0,0 -BRDA:37,2,0,0 -BRDA:37,2,1,0 -BRDA:43,3,0,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/hooks/usePrevious.tsx -FN:3,usePrevious -FN:6,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,usePrevious -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:10,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/arrowSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/arrowTypeSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/articleSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/authorSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/autocompleteSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/bioEntityContentSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/bioEntityResponseSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/bioEntitySchema.ts -FN:33,(anonymous_1) -FN:37,(anonymous_2) -FN:66,(anonymous_3) -FN:70,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:33,0 -DA:37,0 -DA:66,0 -DA:70,0 -LF:16 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:37,1,0,0 -BRDA:37,1,1,0 -BRDA:66,2,0,0 -BRDA:66,2,1,0 -BRDA:70,3,0,0 -BRDA:70,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/models/bioShapeSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/chemicalSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/colorSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/commentSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:8,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/configurationOptionSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/configurationSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:9,0 -DA:19,0 -DA:25,0 -DA:27,0 -DA:33,0 -DA:43,0 -DA:45,0 -DA:61,0 -DA:70,0 -DA:72,0 -DA:74,0 -DA:79,0 -LF:14 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/drugSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/elementSearchResult.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/exportSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/geneVariant.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/glyphSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/idSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/javaStacktraceSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/layerImageSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/layerLineSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/layerOvalSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/layerRectSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/layerSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/layerTextSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/licenseSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/lineSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/lineTypeSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/loginSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mapOverlaySchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:17,0 -DA:25,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mapPoint.ts -FNF:0 -FNH:0 -DA:1,0 -DA:5,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/markerSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:10,0 -DA:19,0 -DA:24,0 -DA:29,0 -DA:34,0 -DA:39,0 -DA:41,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/modelElementModificationSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/modelElementSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/modelSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:34,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/modificationResiduesSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/newReactionSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/oauthSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/operatorSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/organism.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overlayBioEntitySchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:11,0 -DA:16,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overlayGroupSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overlayLeftBioEntitySchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overlayLeftReactionSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overlayRightBioEntitySchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overviewImageLink.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:11,0 -DA:21,0 -DA:29,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/overviewImageView.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/pageableSchema.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:5,0 -DA:6,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/pluginSchema.ts -FNF:0 -FNH:0 -DA:2,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/pointSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/positionSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/projectSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/publicationElementSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/publicationsSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/reactionProduct.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/referenceSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/segmentSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/sessionValidSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/shapeEllipseSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/shapePolygonSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/shapeRelAbsBezierPointSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/shapeRelAbsSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/shapeSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/statisticsSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/structuralStateSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/submapConnection.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/submodelSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/targetElementLeanResponseSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/targetElementSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/targetParticipantSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/targetSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/targetSearchNameResult.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/userPrivilegesSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/userSchema.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/arrowTypesFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/bioEntityContentsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:13,0 -DA:15,0 -DA:23,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/bioShapesFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/chemicalsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/commentFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/commentsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/configurationFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/drugFixtures.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:12,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/elementSearchResultFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/glyphsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/javaStacktraceFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerImageFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerImagesFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerLinesFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerOvalFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerOvalsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerRectFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerRectsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerTextFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layerTextsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/layersFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/lineTypesFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/loginFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/modelElementFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/modelElementsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/modelsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:13,0 -DA:18,0 -DA:23,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/newReactionFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/newReactionsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/oauthFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/overlayBioEntityFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:9,0 -DA:11,0 -DA:16,0 -DA:20,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/overlayGroupsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/overlaysFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:9,0 -DA:11,0 -DA:16,0 -DA:21,0 -DA:25,0 -DA:29,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/pluginFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/projectFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:19,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/projectsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/publicationElementFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/referenceFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/sessionFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/shapesFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/statisticsFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/fixtures/userFixture.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/generators/diseaseGenerator.ts -FN:9,(anonymous_1) -FN:13,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:11,0 -DA:14,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/generators/diseaseNameGenerator.ts -FN:8,(anonymous_1) -FN:9,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/generators/modelIdGenerator.ts -FN:10,(anonymous_1) -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:4,0 -DA:7,0 -DA:10,0 -DA:11,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/generators/organismGenerator.ts -FN:10,(anonymous_1) -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:10,0 -DA:12,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/generators/organismNameGenerator.ts -FN:8,(anonymous_1) -FN:9,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/generators/topOverviewImageGenerator.ts -FN:10,(anonymous_1) -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:10,0 -DA:12,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/configurationFormatsMock.ts -FNF:0 -FNH:0 -DA:3,0 -DA:10,0 -DA:33,0 -DA:35,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/configurationOptionMock.ts -FNF:0 -FNH:0 -DA:10,0 -DA:12,0 -DA:22,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/elementSearchResultMock.ts -FNF:0 -FNH:0 -DA:3,0 -DA:9,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/geneVariantsMock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/modelsMock.ts -FNF:0 -FNH:0 -DA:2,0 -DA:4,0 -DA:408,0 -DA:462,0 -DA:480,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/overviewImageMocks.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -DA:12,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/pluginsMock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/publicationsResponseMock.ts -FNF:0 -FNH:0 -DA:2,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/models/mocks/referencesMock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -DA:91,0 -DA:178,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/apiPath.ts -FN:5,(anonymous_1) -FN:10,(anonymous_2) -FN:14,(anonymous_3) -FN:22,(anonymous_4) -FN:27,(anonymous_5) -FN:29,(anonymous_6) -FN:31,(anonymous_7) -FN:33,(anonymous_8) -FN:34,(anonymous_9) -FN:36,(anonymous_10) -FN:37,(anonymous_11) -FN:38,(anonymous_12) -FN:39,(anonymous_13) -FN:40,(anonymous_14) -FN:42,(anonymous_15) -FN:44,(anonymous_16) -FN:46,(anonymous_17) -FN:48,(anonymous_18) -FN:50,(anonymous_19) -FN:52,(anonymous_20) -FN:54,(anonymous_21) -FN:56,(anonymous_22) -FN:58,(anonymous_23) -FN:60,(anonymous_24) -FN:61,(anonymous_25) -FN:63,(anonymous_26) -FN:65,(anonymous_27) -FN:67,(anonymous_28) -FN:69,(anonymous_29) -FN:71,(anonymous_30) -FN:73,(anonymous_31) -FN:75,(anonymous_32) -FN:77,(anonymous_33) -FN:79,(anonymous_34) -FN:81,(anonymous_35) -FN:83,(anonymous_36) -FN:85,(anonymous_37) -FN:86,(anonymous_38) -FN:87,(anonymous_39) -FN:89,(anonymous_40) -FN:91,(anonymous_41) -FN:93,(anonymous_42) -FN:97,(anonymous_43) -FN:98,(anonymous_44) -FN:99,(anonymous_45) -FN:100,(anonymous_46) -FN:101,(anonymous_47) -FN:102,(anonymous_48) -FN:103,(anonymous_49) -FN:105,(anonymous_50) -FN:106,(anonymous_51) -FN:107,(anonymous_52) -FN:108,(anonymous_53) -FN:109,(anonymous_54) -FN:111,(anonymous_55) -FN:121,(anonymous_56) -FN:122,(anonymous_57) -FN:123,(anonymous_58) -FN:125,(anonymous_59) -FN:127,(anonymous_60) -FN:128,(anonymous_61) -FN:129,(anonymous_62) -FN:130,(anonymous_63) -FN:134,(anonymous_64) -FN:135,(anonymous_65) -FN:136,(anonymous_66) -FN:137,(anonymous_67) -FN:138,(anonymous_68) -FN:139,(anonymous_69) -FN:140,(anonymous_70) -FN:141,(anonymous_71) -FN:142,(anonymous_72) -FN:143,(anonymous_73) -FN:144,(anonymous_74) -FN:145,(anonymous_75) -FN:148,(anonymous_76) -FN:150,(anonymous_77) -FN:151,(anonymous_78) -FN:152,(anonymous_79) -FN:153,(anonymous_80) -FN:154,(anonymous_81) -FN:156,(anonymous_82) -FNF:82 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:0,(anonymous_53) -FNDA:0,(anonymous_54) -FNDA:0,(anonymous_55) -FNDA:0,(anonymous_56) -FNDA:0,(anonymous_57) -FNDA:0,(anonymous_58) -FNDA:0,(anonymous_59) -FNDA:0,(anonymous_60) -FNDA:0,(anonymous_61) -FNDA:0,(anonymous_62) -FNDA:0,(anonymous_63) -FNDA:0,(anonymous_64) -FNDA:0,(anonymous_65) -FNDA:0,(anonymous_66) -FNDA:0,(anonymous_67) -FNDA:0,(anonymous_68) -FNDA:0,(anonymous_69) -FNDA:0,(anonymous_70) -FNDA:0,(anonymous_71) -FNDA:0,(anonymous_72) -FNDA:0,(anonymous_73) -FNDA:0,(anonymous_74) -FNDA:0,(anonymous_75) -FNDA:0,(anonymous_76) -FNDA:0,(anonymous_77) -FNDA:0,(anonymous_78) -FNDA:0,(anonymous_79) -FNDA:0,(anonymous_80) -FNDA:0,(anonymous_81) -FNDA:0,(anonymous_82) -DA:1,0 -DA:5,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:21,0 -DA:26,0 -DA:28,0 -DA:30,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:43,0 -DA:45,0 -DA:47,0 -DA:49,0 -DA:51,0 -DA:53,0 -DA:55,0 -DA:57,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:64,0 -DA:66,0 -DA:68,0 -DA:70,0 -DA:72,0 -DA:74,0 -DA:76,0 -DA:78,0 -DA:80,0 -DA:82,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:88,0 -DA:90,0 -DA:92,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:118,0 -DA:121,0 -DA:122,0 -DA:124,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:131,0 -DA:134,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:141,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:146,0 -DA:149,0 -DA:150,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:155,0 -DA:157,0 -LF:88 -LH:0 -BRDA:130,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/store.ts -FN:95,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:31,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:90,0 -DA:92,0 -DA:95,0 -LF:42 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/autocomplete/autocomplete.constants.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/autocomplete/autocomplete.reducers.ts -FN:9,(anonymous_4) -FN:12,(anonymous_5) -FN:15,(anonymous_6) -FN:19,(anonymous_7) -FN:25,(anonymous_8) -FN:28,(anonymous_9) -FN:31,(anonymous_10) -FN:35,(anonymous_11) -FN:41,(anonymous_12) -FN:44,(anonymous_13) -FN:47,(anonymous_14) -FN:51,(anonymous_15) -FNF:12 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -DA:7,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:41,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:51,0 -DA:52,0 -LF:25 -LH:0 -BRDA:16,0,0,0 -BRDA:16,0,1,0 -BRDA:32,1,0,0 -BRDA:32,1,1,0 -BRDA:48,2,0,0 -BRDA:48,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/autocomplete/autocomplete.selectors.ts -FN:6,(anonymous_4) -FN:11,(anonymous_5) -FN:16,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:16,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/autocomplete/autocomplete.slice.ts -FN:13,(anonymous_7) -FN:24,(anonymous_8) -FN:35,(anonymous_9) -FNF:3 -FNH:0 -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:2,0 -DA:7,0 -DA:9,0 -DA:14,0 -DA:18,0 -DA:20,0 -DA:25,0 -DA:29,0 -DA:31,0 -DA:36,0 -DA:40,0 -LF:12 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/autocomplete/autocomplete.thunks.ts -FN:17,(anonymous_4) -FN:37,(anonymous_5) -FN:57,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:30,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:43,0 -DA:45,0 -DA:50,0 -DA:58,0 -DA:59,0 -DA:61,0 -DA:63,0 -DA:65,0 -LF:24 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:43,1,0,0 -BRDA:43,1,1,0 -BRDA:63,2,0,0 -BRDA:63,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/bioEntity/bioEntity.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:5,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/bioEntity/bioEntity.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/bioEntity/bioEntity.reducers.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:4,0 -DA:8,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/bioEntity/bioEntity.selectors.ts -FN:27,(anonymous_10) -FN:31,(anonymous_11) -FN:38,(anonymous_12) -FN:47,(anonymous_13) -FN:48,(anonymous_14) -FN:56,(anonymous_15) -FN:58,(anonymous_16) -FN:71,(anonymous_17) -FN:84,(anonymous_18) -FN:86,(anonymous_19) -FN:96,(anonymous_20) -FN:98,(anonymous_21) -FN:99,(anonymous_22) -FN:100,(anonymous_23) -FN:101,(anonymous_24) -FN:109,(anonymous_25) -FN:110,(anonymous_26) -FNF:17 -FNH:0 -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -DA:1,0 -DA:2,0 -DA:6,0 -DA:13,0 -DA:19,0 -DA:25,0 -DA:27,0 -DA:29,0 -DA:31,0 -DA:34,0 -DA:39,0 -DA:43,0 -DA:48,0 -DA:50,0 -DA:54,0 -DA:57,0 -DA:58,0 -DA:67,0 -DA:72,0 -DA:80,0 -DA:81,0 -DA:85,0 -DA:86,0 -DA:91,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:106,0 -DA:110,0 -LF:31 -LH:0 -BRDA:48,0,0,0 -BRDA:48,0,1,0 -BRDA:50,1,0,0 -BRDA:50,1,1,0 -BRDA:50,2,0,0 -BRDA:50,2,1,0 -BRDA:60,3,0,0 -BRDA:60,3,1,0 -BRDA:86,4,0,0 -BRDA:86,4,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/redux/bioEntity/bioEntity.slice.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:13,0 -DA:15,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/chemicals/chemicals.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/chemicals/chemicals.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/chemicals/chemicals.reducers.ts -FN:6,(anonymous_4) -FN:7,(anonymous_5) -FN:15,(anonymous_6) -FN:16,(anonymous_7) -FN:22,(anonymous_8) -FN:23,(anonymous_9) -FN:31,(anonymous_10) -FN:34,(anonymous_11) -FN:38,(anonymous_12) -FN:41,(anonymous_13) -FN:47,(anonymous_14) -FNF:11 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:1,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:42,0 -DA:47,0 -DA:48,0 -DA:49,0 -LF:25 -LH:0 -BRDA:17,0,0,0 -BRDA:24,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/chemicals/chemicals.selectors.ts -FN:10,(anonymous_11) -FN:12,(anonymous_12) -FN:14,(anonymous_13) -FN:15,(anonymous_14) -FN:21,(anonymous_15) -FN:23,(anonymous_16) -FN:30,(anonymous_17) -FN:32,(anonymous_18) -FN:35,(anonymous_19) -FN:37,(anonymous_20) -FN:37,(anonymous_21) -FN:46,(anonymous_22) -FN:47,(anonymous_23) -FN:54,(anonymous_24) -FN:56,(anonymous_25) -FN:58,(anonymous_26) -FN:58,(anonymous_27) -FN:61,(anonymous_28) -FN:68,(anonymous_29) -FN:75,(anonymous_30) -FN:76,(anonymous_31) -FN:77,(anonymous_32) -FN:79,(anonymous_33) -FN:82,(anonymous_34) -FN:83,(anonymous_35) -FN:94,(anonymous_36) -FN:99,(anonymous_37) -FN:104,(anonymous_38) -FN:104,(anonymous_39) -FNF:29 -FNH:0 -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -DA:1,0 -DA:2,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:22,0 -DA:23,0 -DA:27,0 -DA:31,0 -DA:33,0 -DA:35,0 -DA:37,0 -DA:43,0 -DA:47,0 -DA:51,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:61,0 -DA:65,0 -DA:69,0 -DA:70,0 -DA:73,0 -DA:75,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:82,0 -DA:83,0 -DA:92,0 -DA:94,0 -DA:97,0 -DA:100,0 -DA:101,0 -DA:104,0 -LF:40 -LH:0 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRDA:33,2,0,0 -BRDA:33,2,1,0 -BRDA:35,3,0,0 -BRDA:35,3,1,0 -BRDA:47,4,0,0 -BRDA:47,4,1,0 -BRDA:55,5,0,0 -BRDA:55,5,1,0 -BRDA:56,6,0,0 -BRDA:56,6,1,0 -BRDA:69,7,0,0 -BRDA:74,8,0,0 -BRDA:74,8,1,0 -BRDA:77,9,0,0 -BRDA:77,9,1,0 -BRDA:100,10,0,0 -BRDA:100,11,0,0 -BRDA:100,11,1,0 -BRDA:104,12,0,0 -BRDA:104,12,1,0 -BRF:24 -BRH:0 -end_of_record -TN: -SF:src/redux/chemicals/chemicals.slice.ts -FN:21,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:2,0 -DA:7,0 -DA:9,0 -DA:15,0 -DA:22,0 -DA:23,0 -DA:27,0 -DA:29,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/chemicals/chemicals.thunks.ts -FN:18,(anonymous_3) -FN:36,(anonymous_4) -FN:38,(anonymous_5) -FN:45,(anonymous_6) -FN:49,(anonymous_7) -FN:51,(anonymous_8) -FN:54,(anonymous_9) -FNF:7 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:2,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:14,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:33,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:44,0 -DA:46,0 -DA:49,0 -DA:51,0 -DA:54,0 -DA:55,0 -DA:57,0 -LF:27 -LH:0 -BRDA:26,0,0,0 -BRDA:26,0,1,0 -BRDA:46,1,0,0 -BRDA:46,1,1,0 -BRDA:46,2,0,0 -BRDA:46,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/comment.constants.ts -FNF:0 -FNH:0 -DA:4,0 -DA:10,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/comment.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/comment.reducers.ts -FN:5,(anonymous_5) -FN:6,(anonymous_6) -FN:10,(anonymous_7) -FN:15,(anonymous_8) -FN:20,(anonymous_9) -FN:23,(anonymous_10) -FN:28,(anonymous_11) -FN:33,(anonymous_12) -FN:39,(anonymous_13) -FN:43,(anonymous_14) -FNF:10 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:39,0 -DA:40,0 -DA:43,0 -DA:44,0 -LF:23 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/comment.selectors.ts -FN:6,(anonymous_4) -FN:10,(anonymous_5) -FN:16,(anonymous_6) -FN:22,(anonymous_7) -FN:23,(anonymous_8) -FNF:5 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:13,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:22,0 -DA:24,0 -LF:12 -LH:0 -BRDA:17,0,0,0 -BRDA:21,1,0,0 -BRDA:21,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/comment.slice.ts -FN:17,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:8,0 -DA:10,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:25,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/comment.thunks.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/thunks/addComment.ts -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:21,0 -DA:23,0 -DA:25,0 -LF:13 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/comment/thunks/getComments.ts -FN:15,(anonymous_3) -FN:32,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:28,0 -DA:33,0 -DA:34,0 -DA:38,0 -DA:40,0 -DA:42,0 -LF:20 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:40,1,0,0 -BRDA:40,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.adapter.ts -FN:8,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:4,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:16,0 -DA:21,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:36,0 -LF:26 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.mock.ts -FNF:0 -FNH:0 -DA:2,0 -DA:6,0 -DA:9,0 -DA:24,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.reducers.ts -FN:5,(anonymous_3) -FN:8,(anonymous_4) -FN:11,(anonymous_5) -FN:17,(anonymous_6) -FN:23,(anonymous_7) -FN:26,(anonymous_8) -FN:29,(anonymous_9) -FN:33,(anonymous_10) -FNF:8 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:2,0 -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:34,0 -LF:19 -LH:0 -BRDA:12,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.selectors.ts -FN:33,(anonymous_25) -FN:34,(anonymous_26) -FN:35,(anonymous_27) -FN:41,(anonymous_28) -FN:46,(anonymous_29) -FN:51,(anonymous_30) -FN:56,(anonymous_31) -FN:61,(anonymous_32) -FN:66,(anonymous_33) -FN:71,(anonymous_34) -FN:76,(anonymous_35) -FN:81,(anonymous_36) -FN:84,(anonymous_37) -FN:86,(anonymous_38) -FN:87,(anonymous_39) -FN:92,(anonymous_40) -FN:97,(anonymous_41) -FN:101,(anonymous_42) -FN:104,(anonymous_43) -FN:111,(anonymous_44) -FN:123,(anonymous_45) -FN:128,(anonymous_46) -FN:130,(anonymous_47) -FN:137,(anonymous_48) -FN:148,(anonymous_49) -FN:153,(anonymous_50) -FN:158,(anonymous_51) -FN:162,(anonymous_52) -FN:166,(anonymous_53) -FN:171,(anonymous_54) -FN:175,(anonymous_55) -FN:179,(anonymous_56) -FNF:32 -FNH:0 -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:0,(anonymous_53) -FNDA:0,(anonymous_54) -FNDA:0,(anonymous_55) -FNDA:0,(anonymous_56) -DA:2,0 -DA:3,0 -DA:4,0 -DA:29,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:37,0 -DA:39,0 -DA:41,0 -DA:44,0 -DA:46,0 -DA:49,0 -DA:51,0 -DA:54,0 -DA:56,0 -DA:59,0 -DA:61,0 -DA:64,0 -DA:66,0 -DA:69,0 -DA:71,0 -DA:74,0 -DA:76,0 -DA:79,0 -DA:81,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:87,0 -DA:90,0 -DA:92,0 -DA:95,0 -DA:98,0 -DA:102,0 -DA:104,0 -DA:109,0 -DA:112,0 -DA:121,0 -DA:123,0 -DA:126,0 -DA:129,0 -DA:130,0 -DA:135,0 -DA:138,0 -DA:146,0 -DA:148,0 -DA:151,0 -DA:153,0 -DA:156,0 -DA:158,0 -DA:160,0 -DA:162,0 -DA:164,0 -DA:166,0 -DA:169,0 -DA:171,0 -DA:173,0 -DA:175,0 -DA:177,0 -DA:179,0 -LF:61 -LH:0 -BRDA:99,0,0,0 -BRDA:99,0,1,0 -BRDA:130,1,0,0 -BRDA:130,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.slice.ts -FN:9,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:10,0 -DA:11,0 -DA:15,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/configuration/configuration.thunks.ts -FN:20,(anonymous_3) -FN:39,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:14,0 -DA:16,0 -DA:21,0 -DA:22,0 -DA:26,0 -DA:31,0 -DA:33,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:45,0 -DA:47,0 -LF:21 -LH:0 -BRDA:31,0,0,0 -BRDA:31,0,1,0 -BRDA:45,1,0,0 -BRDA:45,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/constant/constant.adapter.ts -FNF:0 -FNH:0 -DA:1,0 -DA:5,0 -DA:10,0 -DA:15,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/constant/constant.reducers.ts -FN:5,(anonymous_1) -FN:6,(anonymous_2) -FN:9,(anonymous_3) -FN:13,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/constant/constant.slice.ts -FN:9,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:10,0 -DA:14,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/constant/constant.thunks.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:16,0 -DA:18,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/contextMenu/contextMenu.constants.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/contextMenu/contextMenu.reducers.ts -FN:5,(anonymous_5) -FN:13,(anonymous_6) -FN:18,(anonymous_7) -FN:25,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:5,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:22,0 -DA:25,0 -DA:26,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/contextMenu/contextMenu.selector.ts -FN:4,(anonymous_3) -FN:8,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/contextMenu/contextMenu.slice.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:7,0 -DA:9,0 -DA:19,0 -DA:20,0 -DA:22,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/cookieBanner/cookieBanner.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/cookieBanner/cookieBanner.reducers.ts -FN:3,(anonymous_4) -FN:7,(anonymous_5) -FN:11,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:3,0 -DA:4,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:13,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/cookieBanner/cookieBanner.selector.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/cookieBanner/cookieBanner.slice.ts -FNF:0 -FNH:0 -DA:1,0 -DA:6,0 -DA:9,0 -DA:14,0 -DA:24,0 -DA:26,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drawer/drawer.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:30,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drawer/drawer.reducers.ts -FN:16,(anonymous_19) -FN:21,(anonymous_20) -FN:31,(anonymous_21) -FN:36,(anonymous_22) -FN:42,(anonymous_23) -FN:48,(anonymous_24) -FN:54,(anonymous_25) -FN:62,(anonymous_26) -FN:70,(anonymous_27) -FN:76,(anonymous_28) -FN:82,(anonymous_29) -FN:92,(anonymous_30) -FN:97,(anonymous_31) -FN:105,(anonymous_32) -FN:114,(anonymous_33) -FN:123,(anonymous_34) -FN:132,(anonymous_35) -FN:135,(anonymous_36) -FN:142,(anonymous_37) -FN:150,(anonymous_38) -FN:160,(anonymous_39) -FN:163,(anonymous_40) -FN:170,(anonymous_41) -FN:178,(anonymous_42) -FNF:24 -FNH:0 -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -DA:1,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:54,0 -DA:58,0 -DA:59,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:82,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:97,0 -DA:101,0 -DA:102,0 -DA:105,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:114,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:123,0 -DA:127,0 -DA:128,0 -DA:129,0 -DA:132,0 -DA:135,0 -DA:136,0 -DA:137,0 -DA:142,0 -DA:143,0 -DA:144,0 -DA:150,0 -DA:151,0 -DA:152,0 -DA:160,0 -DA:163,0 -DA:164,0 -DA:165,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:178,0 -DA:179,0 -DA:180,0 -LF:85 -LH:0 -BRDA:136,0,0,0 -BRDA:136,0,1,0 -BRDA:143,1,0,0 -BRDA:143,1,1,0 -BRDA:146,2,0,0 -BRDA:146,2,1,0 -BRDA:151,3,0,0 -BRDA:151,3,1,0 -BRDA:164,4,0,0 -BRDA:164,4,1,0 -BRDA:171,5,0,0 -BRDA:171,5,1,0 -BRDA:174,6,0,0 -BRDA:174,6,1,0 -BRDA:179,7,0,0 -BRDA:179,7,1,0 -BRF:16 -BRH:0 -end_of_record -TN: -SF:src/redux/drawer/drawer.selectors.ts -FN:7,(anonymous_23) -FN:9,(anonymous_24) -FN:13,(anonymous_25) -FN:18,(anonymous_26) -FN:23,(anonymous_27) -FN:28,(anonymous_28) -FN:33,(anonymous_29) -FN:38,(anonymous_30) -FN:43,(anonymous_31) -FN:48,(anonymous_32) -FN:53,(anonymous_33) -FN:59,(anonymous_34) -FN:68,(anonymous_35) -FN:78,(anonymous_36) -FN:84,(anonymous_37) -FN:87,(anonymous_38) -FN:95,(anonymous_39) -FN:97,(anonymous_40) -FN:113,(anonymous_41) -FN:119,(anonymous_42) -FN:124,(anonymous_43) -FN:129,(anonymous_44) -FN:134,(anonymous_45) -FN:139,(anonymous_46) -FN:142,(anonymous_47) -FN:146,(anonymous_48) -FNF:26 -FNH:0 -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:18,0 -DA:21,0 -DA:23,0 -DA:26,0 -DA:28,0 -DA:31,0 -DA:33,0 -DA:36,0 -DA:38,0 -DA:41,0 -DA:43,0 -DA:46,0 -DA:48,0 -DA:51,0 -DA:53,0 -DA:56,0 -DA:60,0 -DA:65,0 -DA:69,0 -DA:74,0 -DA:79,0 -DA:81,0 -DA:83,0 -DA:84,0 -DA:87,0 -DA:94,0 -DA:95,0 -DA:97,0 -DA:104,0 -DA:106,0 -DA:108,0 -DA:113,0 -DA:114,0 -DA:117,0 -DA:119,0 -DA:122,0 -DA:124,0 -DA:127,0 -DA:129,0 -DA:132,0 -DA:134,0 -DA:137,0 -DA:139,0 -DA:142,0 -DA:143,0 -DA:146,0 -DA:147,0 -DA:148,0 -DA:150,0 -LF:59 -LH:0 -BRDA:60,0,0,0 -BRDA:60,0,1,0 -BRDA:60,1,0,0 -BRDA:60,1,1,0 -BRDA:69,2,0,0 -BRDA:69,2,1,0 -BRDA:69,3,0,0 -BRDA:69,3,1,0 -BRDA:81,4,0,0 -BRDA:81,4,1,0 -BRDA:81,4,2,0 -BRDA:81,4,3,0 -BRDA:81,4,4,0 -BRDA:87,5,0,0 -BRDA:87,5,1,0 -BRDA:97,6,0,0 -BRDA:97,6,1,0 -BRDA:139,7,0,0 -BRDA:139,7,1,0 -BRDA:143,8,0,0 -BRDA:143,8,1,0 -BRDA:147,9,0,0 -BRF:22 -BRH:0 -end_of_record -TN: -SF:src/redux/drawer/drawer.slice.ts -FN:45,(anonymous_18) -FNF:1 -FNH:0 -FNDA:0,(anonymous_18) -DA:1,0 -DA:2,0 -DA:22,0 -DA:24,0 -DA:46,0 -DA:47,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:70,0 -LF:24 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drawer/drawer.thunks.ts -FN:18,(anonymous_3) -FN:23,(anonymous_4) -FN:29,(anonymous_5) -FN:32,(anonymous_6) -FN:39,(anonymous_7) -FN:43,(anonymous_8) -FN:56,(anonymous_9) -FN:61,(anonymous_10) -FN:67,(anonymous_11) -FN:72,(anonymous_12) -FN:82,(anonymous_13) -FN:86,(anonymous_14) -FNF:12 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:14,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:32,0 -DA:34,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:47,0 -DA:49,0 -DA:56,0 -DA:57,0 -DA:61,0 -DA:62,0 -DA:64,0 -DA:67,0 -DA:68,0 -DA:72,0 -DA:73,0 -DA:75,0 -DA:78,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:88,0 -DA:90,0 -DA:92,0 -LF:45 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drawer/drawerFixture.ts -FNF:0 -FNH:0 -DA:3,0 -DA:26,0 -DA:49,0 -DA:72,0 -DA:95,0 -DA:118,0 -DA:141,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drugs/drugs.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drugs/drugs.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drugs/drugs.reducers.ts -FN:6,(anonymous_4) -FN:7,(anonymous_5) -FN:15,(anonymous_6) -FN:16,(anonymous_7) -FN:22,(anonymous_8) -FN:23,(anonymous_9) -FN:31,(anonymous_10) -FN:32,(anonymous_11) -FN:36,(anonymous_12) -FN:39,(anonymous_13) -FN:45,(anonymous_14) -FNF:11 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:1,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:45,0 -DA:46,0 -DA:47,0 -LF:25 -LH:0 -BRDA:17,0,0,0 -BRDA:24,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/drugs/drugs.selectors.ts -FN:10,(anonymous_11) -FN:12,(anonymous_12) -FN:14,(anonymous_13) -FN:15,(anonymous_14) -FN:21,(anonymous_15) -FN:22,(anonymous_16) -FN:27,(anonymous_17) -FN:32,(anonymous_18) -FN:37,(anonymous_19) -FN:37,(anonymous_20) -FN:44,(anonymous_21) -FN:46,(anonymous_22) -FN:49,(anonymous_23) -FN:51,(anonymous_24) -FN:51,(anonymous_25) -FN:60,(anonymous_26) -FN:61,(anonymous_27) -FN:68,(anonymous_28) -FN:70,(anonymous_29) -FN:72,(anonymous_30) -FN:72,(anonymous_31) -FN:75,(anonymous_32) -FN:82,(anonymous_33) -FN:89,(anonymous_34) -FN:90,(anonymous_35) -FN:91,(anonymous_36) -FN:93,(anonymous_37) -FN:96,(anonymous_38) -FN:97,(anonymous_39) -FNF:29 -FNH:0 -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -DA:1,0 -DA:2,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:22,0 -DA:25,0 -DA:27,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:37,0 -DA:41,0 -DA:45,0 -DA:47,0 -DA:49,0 -DA:51,0 -DA:57,0 -DA:61,0 -DA:65,0 -DA:69,0 -DA:70,0 -DA:72,0 -DA:75,0 -DA:79,0 -DA:83,0 -DA:84,0 -DA:87,0 -DA:89,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:96,0 -DA:97,0 -LF:39 -LH:0 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRDA:33,1,0,0 -BRDA:33,2,0,0 -BRDA:33,2,1,0 -BRDA:37,3,0,0 -BRDA:37,3,1,0 -BRDA:45,4,0,0 -BRDA:45,4,1,0 -BRDA:47,5,0,0 -BRDA:47,5,1,0 -BRDA:49,6,0,0 -BRDA:49,6,1,0 -BRDA:61,7,0,0 -BRDA:61,7,1,0 -BRDA:69,8,0,0 -BRDA:69,8,1,0 -BRDA:70,9,0,0 -BRDA:70,9,1,0 -BRDA:83,10,0,0 -BRDA:88,11,0,0 -BRDA:88,11,1,0 -BRDA:91,12,0,0 -BRDA:91,12,1,0 -BRF:24 -BRH:0 -end_of_record -TN: -SF:src/redux/drugs/drugs.slice.ts -FN:17,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:5,0 -DA:11,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:25,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/drugs/drugs.thunks.ts -FN:15,(anonymous_3) -FN:33,(anonymous_4) -FN:35,(anonymous_5) -FN:42,(anonymous_6) -FN:46,(anonymous_7) -FN:48,(anonymous_8) -FN:51,(anonymous_9) -FNF:7 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:2,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:30,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:41,0 -DA:43,0 -DA:46,0 -DA:48,0 -DA:51,0 -DA:52,0 -DA:54,0 -LF:27 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:43,1,0,0 -BRDA:43,1,1,0 -BRDA:43,2,0,0 -BRDA:43,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/entityNumber/entityNumber.constants.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/entityNumber/entityNumber.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/entityNumber/entityNumber.reducers.ts -FN:8,(anonymous_3) -FN:12,(anonymous_4) -FN:20,(anonymous_5) -FNF:3 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -LF:10 -LH:0 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/entityNumber/entityNumber.selectors.ts -FN:4,(anonymous_4) -FN:8,(anonymous_5) -FN:12,(anonymous_6) -FN:13,(anonymous_7) -FNF:4 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:13,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/entityNumber/entityNumber.slice.ts -FN:15,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:6,0 -DA:8,0 -DA:18,0 -DA:20,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/export/export.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/export/export.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/export/export.reducers.ts -FN:5,(anonymous_3) -FN:6,(anonymous_4) -FN:9,(anonymous_5) -FN:12,(anonymous_6) -FN:17,(anonymous_7) -FN:18,(anonymous_8) -FN:21,(anonymous_9) -FN:24,(anonymous_10) -FNF:8 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -LF:15 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/export/export.slice.ts -FN:26,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:5,0 -DA:22,0 -DA:27,0 -DA:28,0 -DA:32,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/export/export.thunks.ts -FN:27,(anonymous_3) -FN:58,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:22,0 -DA:28,0 -DA:29,0 -DA:37,0 -DA:39,0 -DA:40,0 -DA:43,0 -DA:55,0 -DA:59,0 -DA:60,0 -DA:68,0 -DA:70,0 -DA:71,0 -DA:74,0 -LF:23 -LH:0 -BRDA:39,0,0,0 -BRDA:70,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/export/export.utils.ts -FN:3,(anonymous_4) -FN:13,(anonymous_5) -FNF:2 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -LF:23 -LH:0 -BRDA:24,0,0,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/glyphs/glyphs.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/glyphs/glyphs.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/glyphs/glyphs.reducers.ts -FN:5,(anonymous_1) -FN:6,(anonymous_2) -FN:9,(anonymous_3) -FN:13,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -LF:9 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/glyphs/glyphs.selectors.ts -FN:4,(anonymous_4) -FN:6,(anonymous_5) -FN:9,(anonymous_6) -FN:10,(anonymous_7) -FN:12,(anonymous_8) -FNF:5 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:14,0 -LF:9 -LH:0 -BRDA:11,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/glyphs/glyphs.slice.ts -FN:10,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:11,0 -DA:15,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/glyphs/glyphs.thunks.ts -FN:12,(anonymous_3) -FN:27,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:38,0 -LF:26 -LH:0 -BRDA:16,0,0,0 -BRDA:33,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/hooks/useAppDispatch.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/hooks/useAppSelector.ts -FNF:0 -FNH:0 -DA:1,0 -DA:6,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/layers.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/layers.mock.ts -FNF:0 -FNH:0 -DA:2,0 -DA:5,0 -DA:7,0 -DA:14,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/layers.reducers.ts -FN:19,(anonymous_21) -FN:20,(anonymous_22) -FN:28,(anonymous_23) -FN:38,(anonymous_24) -FN:48,(anonymous_25) -FN:49,(anonymous_26) -FN:77,(anonymous_27) -FN:88,(anonymous_28) -FN:94,(anonymous_29) -FN:95,(anonymous_30) -FN:110,(anonymous_31) -FN:111,(anonymous_32) -FN:126,(anonymous_33) -FN:140,(anonymous_34) -FN:152,(anonymous_35) -FN:158,(anonymous_36) -FN:170,(anonymous_37) -FN:176,(anonymous_38) -FN:191,(anonymous_39) -FN:207,(anonymous_40) -FN:223,(anonymous_41) -FN:239,(anonymous_42) -FN:255,(anonymous_43) -FN:271,(anonymous_44) -FN:287,(anonymous_45) -FN:299,(anonymous_46) -FN:311,(anonymous_47) -FN:327,(anonymous_48) -FNF:28 -FNH:0 -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -DA:8,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:62,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:77,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:94,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:106,0 -DA:110,0 -DA:111,0 -DA:112,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:122,0 -DA:126,0 -DA:130,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:135,0 -DA:136,0 -DA:140,0 -DA:144,0 -DA:145,0 -DA:146,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:158,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:166,0 -DA:167,0 -DA:168,0 -DA:170,0 -DA:171,0 -DA:172,0 -DA:176,0 -DA:180,0 -DA:181,0 -DA:182,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:188,0 -DA:191,0 -DA:195,0 -DA:196,0 -DA:197,0 -DA:198,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:204,0 -DA:207,0 -DA:211,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:216,0 -DA:217,0 -DA:218,0 -DA:220,0 -DA:223,0 -DA:227,0 -DA:228,0 -DA:229,0 -DA:230,0 -DA:232,0 -DA:233,0 -DA:234,0 -DA:236,0 -DA:239,0 -DA:243,0 -DA:244,0 -DA:245,0 -DA:246,0 -DA:248,0 -DA:249,0 -DA:250,0 -DA:252,0 -DA:255,0 -DA:259,0 -DA:260,0 -DA:261,0 -DA:262,0 -DA:264,0 -DA:265,0 -DA:266,0 -DA:268,0 -DA:271,0 -DA:275,0 -DA:276,0 -DA:277,0 -DA:278,0 -DA:280,0 -DA:281,0 -DA:282,0 -DA:284,0 -DA:287,0 -DA:291,0 -DA:292,0 -DA:293,0 -DA:294,0 -DA:296,0 -DA:299,0 -DA:303,0 -DA:304,0 -DA:305,0 -DA:306,0 -DA:308,0 -DA:311,0 -DA:315,0 -DA:316,0 -DA:317,0 -DA:318,0 -DA:320,0 -DA:321,0 -DA:322,0 -DA:324,0 -DA:327,0 -DA:331,0 -DA:332,0 -DA:333,0 -DA:334,0 -DA:336,0 -LF:186 -LH:0 -BRDA:22,0,0,0 -BRDA:22,0,1,0 -BRDA:30,1,0,0 -BRDA:30,1,1,0 -BRDA:31,2,0,0 -BRDA:31,2,1,0 -BRDA:40,3,0,0 -BRDA:40,3,1,0 -BRDA:53,4,0,0 -BRDA:53,5,0,0 -BRDA:53,5,1,0 -BRDA:57,6,0,0 -BRDA:71,7,0,0 -BRDA:83,8,0,0 -BRDA:89,9,0,0 -BRDA:99,10,0,0 -BRDA:99,11,0,0 -BRDA:99,11,1,0 -BRDA:103,12,0,0 -BRDA:115,13,0,0 -BRDA:115,14,0,0 -BRDA:115,14,1,0 -BRDA:119,15,0,0 -BRDA:132,16,0,0 -BRDA:135,17,0,0 -BRDA:145,18,0,0 -BRDA:149,19,0,0 -BRDA:153,20,0,0 -BRDA:163,21,0,0 -BRDA:167,22,0,0 -BRDA:171,23,0,0 -BRDA:181,24,0,0 -BRDA:185,25,0,0 -BRDA:197,26,0,0 -BRDA:201,27,0,0 -BRDA:213,28,0,0 -BRDA:217,29,0,0 -BRDA:229,30,0,0 -BRDA:233,31,0,0 -BRDA:245,32,0,0 -BRDA:249,33,0,0 -BRDA:261,34,0,0 -BRDA:265,35,0,0 -BRDA:277,36,0,0 -BRDA:281,37,0,0 -BRDA:293,38,0,0 -BRDA:305,39,0,0 -BRDA:317,40,0,0 -BRDA:321,41,0,0 -BRDA:333,42,0,0 -BRF:50 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/layers.selectors.ts -FN:7,(anonymous_16) -FN:12,(anonymous_17) -FN:17,(anonymous_18) -FN:22,(anonymous_19) -FN:26,(anonymous_20) -FN:27,(anonymous_21) -FN:32,(anonymous_22) -FN:37,(anonymous_23) -FN:42,(anonymous_24) -FN:47,(anonymous_25) -FN:57,(anonymous_26) -FN:58,(anonymous_27) -FN:63,(anonymous_28) -FN:74,(anonymous_29) -FN:75,(anonymous_30) -FN:80,(anonymous_31) -FN:91,(anonymous_32) -FN:92,(anonymous_33) -FN:97,(anonymous_34) -FN:108,(anonymous_35) -FN:109,(anonymous_36) -FN:114,(anonymous_37) -FN:124,(anonymous_38) -FN:125,(anonymous_39) -FN:129,(anonymous_40) -FN:133,(anonymous_41) -FN:134,(anonymous_42) -FN:147,(anonymous_43) -FN:148,(anonymous_44) -FN:152,(anonymous_45) -FN:156,(anonymous_46) -FN:157,(anonymous_47) -FNF:32 -FNH:0 -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -DA:2,0 -DA:3,0 -DA:4,0 -DA:7,0 -DA:9,0 -DA:12,0 -DA:15,0 -DA:17,0 -DA:20,0 -DA:22,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:32,0 -DA:35,0 -DA:37,0 -DA:40,0 -DA:42,0 -DA:45,0 -DA:48,0 -DA:49,0 -DA:51,0 -DA:55,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:68,0 -DA:72,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:85,0 -DA:89,0 -DA:92,0 -DA:93,0 -DA:94,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:102,0 -DA:106,0 -DA:109,0 -DA:110,0 -DA:111,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:119,0 -DA:123,0 -DA:124,0 -DA:126,0 -DA:127,0 -DA:129,0 -DA:130,0 -DA:131,0 -DA:133,0 -DA:134,0 -DA:136,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:142,0 -DA:146,0 -DA:147,0 -DA:149,0 -DA:150,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:156,0 -DA:157,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:162,0 -DA:163,0 -DA:165,0 -LF:89 -LH:0 -BRDA:17,0,0,0 -BRDA:17,0,1,0 -BRDA:22,1,0,0 -BRDA:22,1,1,0 -BRDA:37,2,0,0 -BRDA:37,2,1,0 -BRDA:42,3,0,0 -BRDA:42,3,1,0 -BRDA:48,4,0,0 -BRDA:48,5,0,0 -BRDA:48,5,1,0 -BRDA:59,6,0,0 -BRDA:64,7,0,0 -BRDA:64,8,0,0 -BRDA:64,8,1,0 -BRDA:76,9,0,0 -BRDA:81,10,0,0 -BRDA:81,11,0,0 -BRDA:81,11,1,0 -BRDA:93,12,0,0 -BRDA:98,13,0,0 -BRDA:98,14,0,0 -BRDA:98,14,1,0 -BRDA:110,15,0,0 -BRDA:115,16,0,0 -BRDA:115,17,0,0 -BRDA:115,17,1,0 -BRDA:126,18,0,0 -BRDA:126,19,0,0 -BRDA:126,19,1,0 -BRDA:126,19,2,0 -BRDA:130,20,0,0 -BRDA:133,21,0,0 -BRDA:134,22,0,0 -BRDA:134,22,1,0 -BRDA:134,23,0,0 -BRDA:134,23,1,0 -BRDA:149,24,0,0 -BRDA:149,25,0,0 -BRDA:149,25,1,0 -BRDA:149,25,2,0 -BRDA:153,26,0,0 -BRDA:156,27,0,0 -BRDA:157,28,0,0 -BRDA:157,28,1,0 -BRDA:157,29,0,0 -BRDA:157,29,1,0 -BRF:47 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/layers.slice.ts -FN:45,(anonymous_18) -FNF:1 -FNH:0 -FNDA:0,(anonymous_18) -DA:1,0 -DA:2,0 -DA:23,0 -DA:25,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:71,0 -LF:25 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/layers.thunks.ts -FN:38,(anonymous_20) -FN:55,(anonymous_21) -FN:63,(anonymous_22) -FN:82,(anonymous_23) -FN:91,(anonymous_24) -FN:96,(anonymous_25) -FN:97,(anonymous_26) -FN:98,(anonymous_27) -FN:115,(anonymous_28) -FN:134,(anonymous_29) -FN:156,(anonymous_30) -FN:173,(anonymous_31) -FN:199,(anonymous_32) -FN:236,(anonymous_33) -FN:264,(anonymous_34) -FN:285,(anonymous_35) -FN:311,(anonymous_36) -FN:328,(anonymous_37) -FN:358,(anonymous_38) -FN:412,(anonymous_39) -FN:447,(anonymous_40) -FN:476,(anonymous_41) -FN:493,(anonymous_42) -FN:516,(anonymous_43) -FNF:24 -FNH:0 -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:34,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:45,0 -DA:47,0 -DA:51,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -DA:65,0 -DA:72,0 -DA:82,0 -DA:83,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:95,0 -DA:96,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:109,0 -DA:113,0 -DA:116,0 -DA:117,0 -DA:123,0 -DA:125,0 -DA:127,0 -DA:132,0 -DA:135,0 -DA:136,0 -DA:143,0 -DA:145,0 -DA:147,0 -DA:152,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:161,0 -DA:165,0 -DA:174,0 -DA:175,0 -DA:178,0 -DA:180,0 -DA:182,0 -DA:186,0 -DA:200,0 -DA:201,0 -DA:212,0 -DA:214,0 -DA:216,0 -DA:220,0 -DA:237,0 -DA:238,0 -DA:249,0 -DA:250,0 -DA:251,0 -DA:253,0 -DA:255,0 -DA:260,0 -DA:265,0 -DA:266,0 -DA:269,0 -DA:271,0 -DA:275,0 -DA:286,0 -DA:287,0 -DA:295,0 -DA:297,0 -DA:299,0 -DA:303,0 -DA:312,0 -DA:313,0 -DA:316,0 -DA:318,0 -DA:320,0 -DA:324,0 -DA:329,0 -DA:330,0 -DA:331,0 -DA:333,0 -DA:337,0 -DA:374,0 -DA:375,0 -DA:391,0 -DA:392,0 -DA:393,0 -DA:395,0 -DA:397,0 -DA:402,0 -DA:413,0 -DA:414,0 -DA:422,0 -DA:424,0 -DA:426,0 -DA:430,0 -DA:448,0 -DA:449,0 -DA:461,0 -DA:462,0 -DA:463,0 -DA:465,0 -DA:467,0 -DA:472,0 -DA:477,0 -DA:478,0 -DA:479,0 -DA:481,0 -DA:485,0 -DA:494,0 -DA:495,0 -DA:498,0 -DA:500,0 -DA:502,0 -DA:506,0 -DA:517,0 -DA:518,0 -DA:526,0 -DA:528,0 -DA:530,0 -LF:142 -LH:0 -BRDA:45,0,0,0 -BRDA:45,0,1,0 -BRDA:59,1,0,0 -BRDA:84,2,0,0 -BRDA:84,2,1,0 -BRDA:84,2,2,0 -BRDA:84,2,3,0 -BRDA:84,2,4,0 -BRDA:125,3,0,0 -BRDA:125,3,1,0 -BRDA:145,4,0,0 -BRDA:145,4,1,0 -BRDA:180,5,0,0 -BRDA:180,5,1,0 -BRDA:214,6,0,0 -BRDA:214,6,1,0 -BRDA:250,7,0,0 -BRDA:297,8,0,0 -BRDA:297,8,1,0 -BRDA:318,9,0,0 -BRDA:318,9,1,0 -BRDA:392,10,0,0 -BRDA:424,11,0,0 -BRDA:424,11,1,0 -BRDA:462,12,0,0 -BRDA:500,13,0,0 -BRDA:500,13,1,0 -BRDA:528,14,0,0 -BRDA:528,14,1,0 -BRF:29 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/utils/setLayerOval.ts -FN:4,setLayerOval -FNF:1 -FNH:0 -FNDA:0,setLayerOval -DA:4,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -LF:5 -LH:0 -BRDA:14,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/layers/utils/setLayerRect.ts -FN:4,setLayerRect -FNF:1 -FNH:0 -FNDA:0,setLayerRect -DA:4,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -LF:5 -LH:0 -BRDA:14,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/legend/legend.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:5,0 -DA:11,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/legend/legend.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/legend/legend.reducers.ts -FN:5,(anonymous_7) -FN:9,(anonymous_8) -FN:13,(anonymous_9) -FN:20,(anonymous_10) -FN:24,(anonymous_11) -FN:39,(anonymous_12) -FNF:6 -FNH:0 -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:3,0 -DA:5,0 -DA:6,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:24,0 -DA:33,0 -DA:39,0 -DA:43,0 -DA:44,0 -LF:14 -LH:0 -BRDA:43,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/legend/legend.selectors.ts -FN:8,(anonymous_8) -FN:10,(anonymous_9) -FN:12,(anonymous_10) -FN:17,(anonymous_11) -FN:19,(anonymous_12) -FN:32,(anonymous_13) -FN:33,(anonymous_14) -FN:34,(anonymous_15) -FN:46,(anonymous_16) -FN:49,(anonymous_17) -FN:50,(anonymous_18) -FNF:11 -FNH:0 -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:25,0 -DA:29,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:42,0 -DA:46,0 -DA:48,0 -DA:49,0 -DA:50,0 -LF:24 -LH:0 -BRDA:18,0,0,0 -BRDA:21,1,0,0 -BRDA:22,2,0,0 -BRDA:22,2,1,0 -BRDA:37,3,0,0 -BRDA:37,3,1,0 -BRDA:38,4,0,0 -BRDA:38,4,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/redux/legend/legend.slice.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:10,0 -DA:12,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -LF:12 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:7,0 -DA:9,0 -DA:12,0 -DA:14,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:27,0 -DA:63,0 -DA:65,0 -DA:69,0 -DA:71,0 -DA:78,0 -DA:80,0 -DA:82,0 -DA:84,0 -LF:18 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.enums.ts -FN:2,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:7,0 -LF:2 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.fixtures.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:7,0 -DA:11,0 -DA:21,0 -DA:58,0 -DA:65,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.reducers.ts -FN:25,(anonymous_17) -FN:34,(anonymous_18) -FN:66,(anonymous_19) -FN:87,(anonymous_20) -FN:104,(anonymous_21) -FN:112,(anonymous_22) -FN:120,(anonymous_23) -FN:122,(anonymous_24) -FN:128,(anonymous_25) -FN:133,(anonymous_26) -FN:147,(anonymous_27) -FN:153,(anonymous_28) -FN:175,(anonymous_29) -FN:177,(anonymous_30) -FN:181,(anonymous_31) -FN:186,(anonymous_32) -FN:191,(anonymous_33) -FN:199,(anonymous_34) -FN:200,(anonymous_35) -FN:206,(anonymous_36) -FN:207,(anonymous_37) -FN:212,(anonymous_38) -FN:213,(anonymous_39) -FN:219,(anonymous_40) -FN:220,(anonymous_41) -FNF:25 -FNH:0 -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -DA:1,0 -DA:2,0 -DA:4,0 -DA:10,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:50,0 -DA:51,0 -DA:57,0 -DA:66,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:76,0 -DA:77,0 -DA:83,0 -DA:84,0 -DA:87,0 -DA:91,0 -DA:93,0 -DA:94,0 -DA:100,0 -DA:101,0 -DA:104,0 -DA:108,0 -DA:109,0 -DA:112,0 -DA:116,0 -DA:117,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:133,0 -DA:137,0 -DA:139,0 -DA:144,0 -DA:147,0 -DA:151,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:155,0 -DA:157,0 -DA:158,0 -DA:159,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:167,0 -DA:172,0 -DA:175,0 -DA:176,0 -DA:177,0 -DA:181,0 -DA:185,0 -DA:186,0 -DA:188,0 -DA:191,0 -DA:192,0 -DA:193,0 -DA:196,0 -DA:199,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:206,0 -DA:207,0 -DA:208,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:215,0 -DA:219,0 -DA:220,0 -DA:221,0 -LF:92 -LH:0 -BRDA:26,0,0,0 -BRDA:26,0,1,0 -BRDA:35,1,0,0 -BRDA:35,1,1,0 -BRDA:39,2,0,0 -BRDA:39,2,1,0 -BRDA:42,3,0,0 -BRDA:42,4,0,0 -BRDA:42,4,1,0 -BRDA:50,5,0,0 -BRDA:50,6,0,0 -BRDA:50,6,1,0 -BRDA:50,6,2,0 -BRDA:72,7,0,0 -BRDA:72,7,1,0 -BRDA:76,8,0,0 -BRDA:93,9,0,0 -BRDA:123,10,0,0 -BRDA:157,11,0,0 -BRDA:162,12,0,0 -BRDA:192,13,0,0 -BRF:21 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.selectors.ts -FN:4,(anonymous_13) -FN:6,(anonymous_14) -FN:8,(anonymous_15) -FN:10,(anonymous_16) -FN:12,(anonymous_17) -FN:14,(anonymous_18) -FN:17,(anonymous_19) -FN:21,(anonymous_20) -FN:22,(anonymous_21) -FN:23,(anonymous_22) -FN:28,(anonymous_23) -FN:33,(anonymous_24) -FN:36,(anonymous_25) -FN:38,(anonymous_26) -FNF:14 -FNH:0 -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:26,0 -DA:28,0 -DA:31,0 -DA:33,0 -DA:36,0 -DA:38,0 -LF:19 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.slice.ts -FN:39,(anonymous_14) -FNF:1 -FNH:0 -FNDA:0,(anonymous_14) -DA:1,0 -DA:2,0 -DA:20,0 -DA:22,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:62,0 -LF:22 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/map.thunks.ts -FN:42,(anonymous_11) -FN:56,(anonymous_12) -FN:62,(anonymous_13) -FN:72,(anonymous_14) -FN:114,(anonymous_15) -FN:138,(anonymous_16) -FN:164,(anonymous_17) -FN:178,(anonymous_18) -FN:192,(anonymous_19) -FN:205,(anonymous_20) -FNF:10 -FNH:0 -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:30,0 -DA:38,0 -DA:42,0 -DA:43,0 -DA:45,0 -DA:46,0 -DA:49,0 -DA:50,0 -DA:53,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:66,0 -DA:69,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:78,0 -DA:79,0 -DA:85,0 -DA:91,0 -DA:93,0 -DA:94,0 -DA:100,0 -DA:101,0 -DA:108,0 -DA:114,0 -DA:118,0 -DA:119,0 -DA:120,0 -DA:122,0 -DA:123,0 -DA:126,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:142,0 -DA:146,0 -DA:148,0 -DA:149,0 -DA:155,0 -DA:160,0 -DA:165,0 -DA:166,0 -DA:168,0 -DA:170,0 -DA:174,0 -DA:179,0 -DA:180,0 -DA:182,0 -DA:184,0 -DA:188,0 -DA:193,0 -DA:194,0 -DA:195,0 -DA:197,0 -DA:201,0 -DA:206,0 -DA:207,0 -DA:209,0 -DA:211,0 -LF:74 -LH:0 -BRDA:45,0,0,0 -BRDA:45,1,0,0 -BRDA:45,1,1,0 -BRDA:49,2,0,0 -BRDA:59,3,0,0 -BRDA:59,3,1,0 -BRDA:59,3,2,0 -BRDA:60,4,0,0 -BRDA:61,5,0,0 -BRDA:78,6,0,0 -BRDA:86,7,0,0 -BRDA:86,7,1,0 -BRDA:87,8,0,0 -BRDA:87,8,1,0 -BRDA:88,9,0,0 -BRDA:88,9,1,0 -BRDA:91,10,0,0 -BRDA:91,10,1,0 -BRDA:93,11,0,0 -BRDA:93,12,0,0 -BRDA:93,12,1,0 -BRDA:100,13,0,0 -BRDA:100,14,0,0 -BRDA:100,14,1,0 -BRDA:122,15,0,0 -BRDA:127,16,0,0 -BRDA:127,16,1,0 -BRDA:129,17,0,0 -BRDA:129,17,1,0 -BRDA:130,18,0,0 -BRDA:130,18,1,0 -BRDA:131,19,0,0 -BRDA:131,19,1,0 -BRDA:132,20,0,0 -BRDA:132,20,1,0 -BRDA:133,21,0,0 -BRDA:133,21,1,0 -BRDA:148,22,0,0 -BRDA:150,23,0,0 -BRDA:150,23,1,0 -BRDA:151,24,0,0 -BRDA:151,24,1,0 -BRF:42 -BRH:0 -end_of_record -TN: -SF:src/redux/map/middleware/checkIfIsMapUpdateActionValid.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/middleware/getModelIdFromAction.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -LF:5 -LH:0 -BRDA:5,0,0,0 -BRDA:5,0,1,0 -BRDA:6,1,0,0 -BRDA:6,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/map/middleware/getUpdatedModel.ts -FN:7,(anonymous_1) -FN:11,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/map/middleware/map.middleware.ts -FN:21,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:4,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:41,0 -DA:42,0 -DA:45,0 -LF:21 -LH:0 -BRDA:29,0,0,0 -BRDA:29,1,0,0 -BRDA:29,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/mapEditTools/mapEditTools.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/mapEditTools/mapEditTools.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/mapEditTools/mapEditTools.reducers.ts -FN:7,(anonymous_3) -FN:14,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:7,0 -DA:11,0 -DA:14,0 -DA:18,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/mapEditTools/mapEditTools.selectors.ts -FN:5,(anonymous_5) -FN:9,(anonymous_6) -FN:14,(anonymous_7) -FN:17,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:12,0 -DA:14,0 -DA:17,0 -DA:18,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/mapEditTools/mapEditTools.slice.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:6,0 -DA:8,0 -DA:17,0 -DA:19,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/markers/markers.constants.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/markers/markers.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/markers/markers.reducers.ts -FN:5,(anonymous_4) -FN:14,(anonymous_5) -FN:23,(anonymous_6) -FN:29,(anonymous_7) -FNF:4 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:5,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/markers/markers.selectors.ts -FN:7,(anonymous_9) -FN:9,(anonymous_10) -FN:14,(anonymous_11) -FN:14,(anonymous_12) -FN:17,(anonymous_13) -FN:18,(anonymous_14) -FN:23,(anonymous_15) -FN:25,(anonymous_16) -FN:26,(anonymous_17) -FN:31,(anonymous_18) -FN:32,(anonymous_19) -FN:37,(anonymous_20) -FN:42,(anonymous_21) -FNF:13 -FNH:0 -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:31,0 -DA:32,0 -DA:35,0 -DA:37,0 -DA:40,0 -DA:42,0 -LF:20 -LH:0 -BRDA:14,0,0,0 -BRDA:14,0,1,0 -BRDA:27,1,0,0 -BRDA:27,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/markers/markers.slice.ts -FN:17,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:7,0 -DA:9,0 -DA:20,0 -DA:21,0 -DA:23,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/markers/markers.utils.ts -FN:3,(anonymous_3) -FN:6,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -LF:4 -LH:0 -BRDA:4,0,0,0 -BRDA:4,0,1,0 -BRDA:4,0,2,0 -BRDA:4,0,3,0 -BRDA:8,1,0,0 -BRDA:8,1,1,0 -BRDA:8,1,2,0 -BRDA:8,1,3,0 -BRDA:8,1,4,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/redux/middlewares/error.middleware.ts -FN:14,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:34,0 -DA:35,0 -DA:40,0 -LF:20 -LH:0 -BRDA:18,0,0,0 -BRDA:18,1,0,0 -BRDA:18,1,1,0 -BRDA:19,2,0,0 -BRDA:19,2,1,0 -BRDA:22,3,0,0 -BRDA:22,3,1,0 -BRDA:22,4,0,0 -BRDA:22,4,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/redux/modal/modal.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/modal/modal.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/modal/modal.reducers.ts -FN:11,(anonymous_25) -FN:18,(anonymous_26) -FN:23,(anonymous_27) -FN:28,(anonymous_28) -FN:40,(anonymous_29) -FN:52,(anonymous_30) -FN:58,(anonymous_31) -FN:64,(anonymous_32) -FN:70,(anonymous_33) -FN:82,(anonymous_34) -FN:88,(anonymous_35) -FN:96,(anonymous_36) -FN:105,(anonymous_37) -FN:111,(anonymous_38) -FN:121,(anonymous_39) -FN:131,(anonymous_40) -FN:137,(anonymous_41) -FN:143,(anonymous_42) -FN:157,(anonymous_43) -FN:167,(anonymous_44) -FN:173,(anonymous_45) -FN:183,(anonymous_46) -FN:189,(anonymous_47) -FN:199,(anonymous_48) -FN:205,(anonymous_49) -FNF:25 -FNH:0 -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:40,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:58,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:96,0 -DA:100,0 -DA:105,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:111,0 -DA:115,0 -DA:116,0 -DA:117,0 -DA:118,0 -DA:121,0 -DA:125,0 -DA:126,0 -DA:127,0 -DA:128,0 -DA:131,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:140,0 -DA:143,0 -DA:147,0 -DA:148,0 -DA:149,0 -DA:150,0 -DA:151,0 -DA:153,0 -DA:157,0 -DA:161,0 -DA:162,0 -DA:163,0 -DA:164,0 -DA:167,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:173,0 -DA:177,0 -DA:178,0 -DA:179,0 -DA:180,0 -DA:183,0 -DA:184,0 -DA:185,0 -DA:186,0 -DA:189,0 -DA:193,0 -DA:194,0 -DA:195,0 -DA:196,0 -DA:199,0 -DA:200,0 -DA:201,0 -DA:202,0 -DA:205,0 -DA:209,0 -DA:210,0 -DA:211,0 -DA:212,0 -LF:109 -LH:0 -BRDA:12,0,0,0 -BRDA:89,1,0,0 -BRDA:150,2,0,0 -BRDA:150,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/modal/modal.selector.ts -FN:5,(anonymous_13) -FN:7,(anonymous_14) -FN:11,(anonymous_15) -FN:16,(anonymous_16) -FN:21,(anonymous_17) -FN:26,(anonymous_18) -FN:31,(anonymous_19) -FN:36,(anonymous_20) -FN:41,(anonymous_21) -FN:46,(anonymous_22) -FN:51,(anonymous_23) -FN:56,(anonymous_24) -FNF:12 -FNH:0 -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:16,0 -DA:19,0 -DA:21,0 -DA:24,0 -DA:26,0 -DA:29,0 -DA:31,0 -DA:34,0 -DA:36,0 -DA:39,0 -DA:41,0 -DA:44,0 -DA:46,0 -DA:49,0 -DA:51,0 -DA:54,0 -DA:56,0 -LF:25 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRDA:36,2,0,0 -BRDA:36,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/modal/modal.slice.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:28,0 -DA:30,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:75,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:88,0 -LF:30 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/modelElements/modelElements.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -DA:7,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/modelElements/modelElements.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:19,0 -DA:24,0 -DA:30,0 -DA:38,0 -DA:40,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/modelElements/modelElements.reducers.ts -FN:15,(anonymous_7) -FN:18,(anonymous_8) -FN:26,(anonymous_9) -FN:36,(anonymous_10) -FN:46,(anonymous_11) -FN:49,(anonymous_12) -FN:57,(anonymous_13) -FN:59,(anonymous_14) -FN:62,(anonymous_15) -FN:69,(anonymous_16) -FN:71,(anonymous_17) -FN:79,(anonymous_18) -FN:82,(anonymous_19) -FN:86,(anonymous_20) -FN:89,(anonymous_21) -FN:94,(anonymous_22) -FN:112,(anonymous_23) -FN:116,(anonymous_24) -FN:132,(anonymous_25) -FNF:19 -FNH:0 -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -DA:6,0 -DA:11,0 -DA:12,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:41,0 -DA:46,0 -DA:49,0 -DA:50,0 -DA:57,0 -DA:58,0 -DA:59,0 -DA:61,0 -DA:62,0 -DA:66,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:73,0 -DA:74,0 -DA:79,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:89,0 -DA:90,0 -DA:94,0 -DA:98,0 -DA:112,0 -DA:116,0 -DA:117,0 -DA:129,0 -DA:132,0 -DA:133,0 -DA:134,0 -LF:52 -LH:0 -BRDA:20,0,0,0 -BRDA:20,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:29,2,0,0 -BRDA:29,2,1,0 -BRDA:38,3,0,0 -BRDA:38,3,1,0 -BRDA:61,4,0,0 -BRDA:73,5,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/redux/modelElements/modelElements.selector.ts -FN:20,(anonymous_28) -FN:25,(anonymous_29) -FN:31,(anonymous_30) -FN:35,(anonymous_31) -FN:36,(anonymous_32) -FN:41,(anonymous_33) -FN:46,(anonymous_34) -FN:46,(anonymous_35) -FN:51,(anonymous_36) -FN:56,(anonymous_37) -FN:56,(anonymous_38) -FN:62,(anonymous_39) -FN:64,(anonymous_40) -FN:69,(anonymous_41) -FN:79,(anonymous_42) -FN:80,(anonymous_43) -FN:86,(anonymous_44) -FN:88,(anonymous_45) -FN:91,(anonymous_46) -FN:102,(anonymous_47) -FN:103,(anonymous_48) -FN:109,(anonymous_49) -FN:114,(anonymous_50) -FN:119,(anonymous_51) -FN:119,(anonymous_52) -FN:125,(anonymous_53) -FN:127,(anonymous_54) -FN:129,(anonymous_55) -FN:130,(anonymous_56) -FN:137,(anonymous_57) -FN:142,(anonymous_58) -FN:150,(anonymous_59) -FN:152,(anonymous_60) -FN:155,(anonymous_61) -FN:157,(anonymous_62) -FN:158,(anonymous_63) -FN:164,(anonymous_64) -FN:169,(anonymous_65) -FN:174,(anonymous_66) -FN:180,(anonymous_67) -FN:182,(anonymous_68) -FN:183,(anonymous_69) -FN:189,(anonymous_70) -FN:190,(anonymous_71) -FN:197,(anonymous_72) -FN:198,(anonymous_73) -FN:201,(anonymous_74) -FN:202,(anonymous_75) -FN:211,(anonymous_76) -FN:212,(anonymous_77) -FN:214,(anonymous_78) -FN:226,(anonymous_79) -FN:234,(anonymous_80) -FN:235,(anonymous_81) -FN:241,(anonymous_82) -FN:244,(anonymous_83) -FNF:56 -FNH:0 -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -FNDA:0,(anonymous_48) -FNDA:0,(anonymous_49) -FNDA:0,(anonymous_50) -FNDA:0,(anonymous_51) -FNDA:0,(anonymous_52) -FNDA:0,(anonymous_53) -FNDA:0,(anonymous_54) -FNDA:0,(anonymous_55) -FNDA:0,(anonymous_56) -FNDA:0,(anonymous_57) -FNDA:0,(anonymous_58) -FNDA:0,(anonymous_59) -FNDA:0,(anonymous_60) -FNDA:0,(anonymous_61) -FNDA:0,(anonymous_62) -FNDA:0,(anonymous_63) -FNDA:0,(anonymous_64) -FNDA:0,(anonymous_65) -FNDA:0,(anonymous_66) -FNDA:0,(anonymous_67) -FNDA:0,(anonymous_68) -FNDA:0,(anonymous_69) -FNDA:0,(anonymous_70) -FNDA:0,(anonymous_71) -FNDA:0,(anonymous_72) -FNDA:0,(anonymous_73) -FNDA:0,(anonymous_74) -FNDA:0,(anonymous_75) -FNDA:0,(anonymous_76) -FNDA:0,(anonymous_77) -FNDA:0,(anonymous_78) -FNDA:0,(anonymous_79) -FNDA:0,(anonymous_80) -FNDA:0,(anonymous_81) -FNDA:0,(anonymous_82) -FNDA:0,(anonymous_83) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:25,0 -DA:28,0 -DA:31,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:39,0 -DA:41,0 -DA:44,0 -DA:46,0 -DA:49,0 -DA:51,0 -DA:54,0 -DA:56,0 -DA:59,0 -DA:62,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:70,0 -DA:76,0 -DA:80,0 -DA:84,0 -DA:87,0 -DA:88,0 -DA:89,0 -DA:91,0 -DA:95,0 -DA:99,0 -DA:103,0 -DA:107,0 -DA:109,0 -DA:112,0 -DA:114,0 -DA:117,0 -DA:119,0 -DA:122,0 -DA:126,0 -DA:127,0 -DA:129,0 -DA:130,0 -DA:134,0 -DA:141,0 -DA:142,0 -DA:146,0 -DA:151,0 -DA:153,0 -DA:155,0 -DA:157,0 -DA:158,0 -DA:162,0 -DA:164,0 -DA:167,0 -DA:169,0 -DA:172,0 -DA:174,0 -DA:177,0 -DA:181,0 -DA:182,0 -DA:183,0 -DA:187,0 -DA:190,0 -DA:194,0 -DA:198,0 -DA:199,0 -DA:201,0 -DA:202,0 -DA:204,0 -DA:208,0 -DA:212,0 -DA:213,0 -DA:214,0 -DA:217,0 -DA:225,0 -DA:226,0 -DA:231,0 -DA:235,0 -DA:238,0 -DA:242,0 -DA:243,0 -DA:245,0 -DA:250,0 -LF:94 -LH:0 -BRDA:36,0,0,0 -BRDA:36,0,1,0 -BRDA:51,1,0,0 -BRDA:51,1,1,0 -BRDA:56,2,0,0 -BRDA:56,2,1,0 -BRDA:65,3,0,0 -BRDA:69,4,0,0 -BRDA:69,4,1,0 -BRDA:70,5,0,0 -BRDA:70,5,1,0 -BRDA:90,6,0,0 -BRDA:90,6,1,0 -BRDA:119,7,0,0 -BRDA:119,7,1,0 -BRDA:127,8,0,0 -BRDA:127,8,1,0 -BRDA:153,9,0,0 -BRDA:153,9,1,0 -BRDA:155,10,0,0 -BRDA:155,10,1,0 -BRDA:174,11,0,0 -BRDA:174,11,1,0 -BRDA:199,12,0,0 -BRDA:199,12,1,0 -BRDA:212,13,0,0 -BRDA:212,13,1,0 -BRDA:213,14,0,0 -BRDA:213,14,1,0 -BRDA:242,15,0,0 -BRDA:245,16,0,0 -BRDA:245,16,1,0 -BRDA:245,16,2,0 -BRF:33 -BRH:0 -end_of_record -TN: -SF:src/redux/modelElements/modelElements.slice.ts -FN:20,(anonymous_6) -FNF:1 -FNH:0 -FNDA:0,(anonymous_6) -DA:1,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:27,0 -DA:28,0 -DA:30,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/modelElements/modelElements.thunks.ts -FN:27,(anonymous_4) -FN:45,(anonymous_5) -FN:54,(anonymous_6) -FN:71,(anonymous_7) -FN:73,(anonymous_8) -FN:84,(anonymous_9) -FN:86,(anonymous_10) -FN:87,(anonymous_11) -FN:89,(anonymous_12) -FNF:9 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:21,0 -DA:23,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:39,0 -DA:46,0 -DA:47,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:58,0 -DA:60,0 -DA:65,0 -DA:72,0 -DA:73,0 -DA:74,0 -DA:79,0 -DA:83,0 -DA:84,0 -DA:86,0 -DA:87,0 -DA:89,0 -DA:90,0 -DA:92,0 -DA:94,0 -LF:39 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:45,1,0,0 -BRDA:53,2,0,0 -BRDA:53,3,0,0 -BRDA:53,3,1,0 -BRDA:58,4,0,0 -BRDA:58,4,1,0 -BRDA:84,5,0,0 -BRDA:84,5,1,0 -BRDA:87,6,0,0 -BRDA:87,6,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/redux/models/marker.mock.ts -FNF:0 -FNH:0 -DA:3,0 -DA:16,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/models/models.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/models/models.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -DA:10,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/models/models.reducers.ts -FN:6,(anonymous_1) -FN:7,(anonymous_2) -FN:10,(anonymous_3) -FN:14,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:15,0 -LF:9 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/models/models.selectors.ts -FN:8,(anonymous_15) -FN:10,(anonymous_16) -FN:15,(anonymous_17) -FN:15,(anonymous_18) -FN:18,(anonymous_19) -FN:19,(anonymous_20) -FN:22,(anonymous_21) -FN:23,(anonymous_22) -FN:26,(anonymous_23) -FN:27,(anonymous_24) -FN:32,(anonymous_25) -FN:35,(anonymous_26) -FN:38,(anonymous_27) -FN:43,(anonymous_28) -FN:47,(anonymous_29) -FN:48,(anonymous_30) -FN:48,(anonymous_31) -FN:54,(anonymous_32) -FN:56,(anonymous_33) -FN:60,(anonymous_34) -FN:64,(anonymous_35) -FNF:21 -FNH:0 -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:32,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:41,0 -DA:43,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:51,0 -DA:55,0 -DA:56,0 -DA:60,0 -DA:62,0 -DA:64,0 -LF:32 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRDA:32,1,0,0 -BRDA:32,1,1,0 -BRDA:43,2,0,0 -BRDA:43,2,1,0 -BRDA:48,3,0,0 -BRDA:48,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/redux/models/models.slice.ts -FN:15,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:5,0 -DA:11,0 -DA:16,0 -DA:20,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/models/models.thunks.ts -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:21,0 -LF:13 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/newReactions/newReactions.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/newReactions/newReactions.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:6,0 -DA:8,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/newReactions/newReactions.reducers.ts -FN:7,(anonymous_1) -FN:10,(anonymous_2) -FN:18,(anonymous_3) -FN:28,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -LF:21 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRDA:21,2,0,0 -BRDA:21,2,1,0 -BRDA:30,3,0,0 -BRDA:30,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/redux/newReactions/newReactions.selectors.ts -FN:8,(anonymous_8) -FN:13,(anonymous_9) -FN:18,(anonymous_10) -FN:23,(anonymous_11) -FN:27,(anonymous_12) -FN:28,(anonymous_13) -FN:34,(anonymous_14) -FN:35,(anonymous_15) -FN:42,(anonymous_16) -FN:45,(anonymous_17) -FNF:10 -FNH:0 -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:13,0 -DA:16,0 -DA:18,0 -DA:21,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:31,0 -DA:35,0 -DA:39,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:51,0 -LF:22 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRDA:43,2,0,0 -BRDA:46,3,0,0 -BRDA:46,3,1,0 -BRDA:46,3,2,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/redux/newReactions/newReactions.slice.ts -FN:9,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:10,0 -DA:14,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/newReactions/newReactions.thunks.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:22,0 -DA:24,0 -LF:14 -LH:0 -BRDA:22,0,0,0 -BRDA:22,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.fixtures.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.reducers.ts -FN:5,(anonymous_1) -FN:6,(anonymous_2) -FN:9,(anonymous_3) -FN:16,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:17,0 -LF:11 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRDA:11,1,0,0 -BRDA:11,2,0,0 -BRDA:11,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.selectors.ts -FN:4,(anonymous_3) -FN:6,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.slice.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:5,0 -DA:12,0 -DA:17,0 -DA:21,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/oauth/oauth.thunks.ts -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:21,0 -LF:13 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.mock.ts -FNF:0 -FNH:0 -DA:4,0 -DA:9,0 -DA:82,0 -DA:161,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.reducers.ts -FN:8,(anonymous_6) -FN:11,(anonymous_7) -FN:23,(anonymous_8) -FN:26,(anonymous_9) -FN:36,(anonymous_10) -FN:41,(anonymous_11) -FN:45,(anonymous_12) -FN:50,(anonymous_13) -FN:53,(anonymous_14) -FNF:9 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:2,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:18,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:36,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:45,0 -DA:49,0 -DA:50,0 -DA:53,0 -DA:57,0 -DA:58,0 -DA:59,0 -LF:24 -LH:0 -BRDA:12,0,0,0 -BRDA:14,1,0,0 -BRDA:58,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.selector.ts -FN:22,(anonymous_13) -FN:27,(anonymous_14) -FN:32,(anonymous_15) -FN:40,(anonymous_16) -FN:43,(anonymous_17) -FN:49,(anonymous_18) -FN:53,(anonymous_19) -FN:55,(anonymous_20) -FN:85,(anonymous_21) -FN:86,(anonymous_22) -FN:90,(anonymous_23) -FN:91,(anonymous_24) -FN:95,(anonymous_25) -FN:96,(anonymous_26) -FN:113,(anonymous_27) -FN:114,(anonymous_28) -FN:118,(anonymous_29) -FN:128,(anonymous_30) -FN:146,(anonymous_31) -FN:152,(anonymous_32) -FN:152,(anonymous_33) -FN:158,(anonymous_34) -FN:158,(anonymous_35) -FNF:23 -FNH:0 -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:25,0 -DA:27,0 -DA:30,0 -DA:32,0 -DA:35,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:73,0 -DA:80,0 -DA:84,0 -DA:85,0 -DA:86,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:94,0 -DA:95,0 -DA:97,0 -DA:98,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:105,0 -DA:109,0 -DA:114,0 -DA:115,0 -DA:118,0 -DA:120,0 -DA:124,0 -DA:129,0 -DA:134,0 -DA:140,0 -DA:144,0 -DA:146,0 -DA:149,0 -DA:152,0 -DA:155,0 -DA:158,0 -LF:59 -LH:0 -BRDA:44,0,0,0 -BRDA:50,1,0,0 -BRDA:52,2,0,0 -BRDA:54,3,0,0 -BRDA:98,4,0,0 -BRDA:99,5,0,0 -BRDA:99,5,1,0 -BRDA:99,6,0,0 -BRDA:99,6,1,0 -BRDA:101,7,0,0 -BRDA:101,8,0,0 -BRDA:101,8,1,0 -BRDA:118,9,0,0 -BRDA:118,9,1,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.slice.ts -FN:24,(anonymous_6) -FNF:1 -FNH:0 -FNDA:0,(anonymous_6) -DA:1,0 -DA:8,0 -DA:11,0 -DA:16,0 -DA:25,0 -DA:26,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.thunk.ts -FN:31,(anonymous_4) -FN:61,(anonymous_5) -FN:66,(anonymous_6) -FN:86,(anonymous_7) -FN:90,(anonymous_8) -FNF:5 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:2,0 -DA:5,0 -DA:7,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:20,0 -DA:27,0 -DA:32,0 -DA:33,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:46,0 -DA:48,0 -DA:54,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:66,0 -DA:67,0 -DA:70,0 -DA:72,0 -DA:81,0 -DA:87,0 -DA:88,0 -DA:90,0 -DA:91,0 -DA:92,0 -DA:93,0 -DA:95,0 -DA:96,0 -DA:99,0 -DA:102,0 -LF:36 -LH:0 -BRDA:42,0,0,0 -BRDA:93,1,0,0 -BRDA:93,1,1,0 -BRDA:95,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayBioEntity/overlayBioEntity.utils.ts -FN:11,(anonymous_6) -FN:15,(anonymous_7) -FN:63,(anonymous_8) -FN:66,(anonymous_9) -FN:100,(anonymous_10) -FN:108,(anonymous_11) -FN:111,(anonymous_12) -FN:120,(anonymous_13) -FN:130,(anonymous_14) -FN:136,(anonymous_15) -FN:141,(anonymous_16) -FN:155,(anonymous_17) -FN:160,(anonymous_18) -FN:164,(anonymous_19) -FN:179,(anonymous_20) -FN:188,(anonymous_21) -FNF:16 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -DA:2,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:15,0 -DA:23,0 -DA:24,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:61,0 -DA:62,0 -DA:63,0 -DA:64,0 -DA:65,0 -DA:66,0 -DA:82,0 -DA:85,0 -DA:100,0 -DA:101,0 -DA:102,0 -DA:104,0 -DA:108,0 -DA:111,0 -DA:118,0 -DA:120,0 -DA:121,0 -DA:122,0 -DA:123,0 -DA:124,0 -DA:127,0 -DA:130,0 -DA:131,0 -DA:136,0 -DA:139,0 -DA:141,0 -DA:143,0 -DA:147,0 -DA:155,0 -DA:159,0 -DA:160,0 -DA:161,0 -DA:164,0 -DA:165,0 -DA:166,0 -DA:169,0 -DA:170,0 -DA:173,0 -DA:179,0 -DA:184,0 -DA:188,0 -DA:189,0 -DA:190,0 -DA:192,0 -DA:194,0 -DA:197,0 -LF:58 -LH:0 -BRDA:23,0,0,0 -BRDA:42,1,0,0 -BRDA:61,2,0,0 -BRDA:101,3,0,0 -BRDA:147,4,0,0 -BRDA:147,4,1,0 -BRDA:166,5,0,0 -BRDA:166,6,0,0 -BRDA:166,6,1,0 -BRDA:169,7,0,0 -BRDA:190,8,0,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayGroup/ovelayGroup.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayGroup/overlayGroup.reducers.ts -FN:5,(anonymous_1) -FN:8,(anonymous_2) -FN:11,(anonymous_3) -FN:15,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayGroup/overlayGroup.selectors.ts -FN:6,(anonymous_3) -FN:8,(anonymous_4) -FN:17,(anonymous_5) -FN:18,(anonymous_6) -FN:18,(anonymous_7) -FNF:5 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:18,0 -LF:12 -LH:0 -BRDA:10,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayGroup/overlayGroup.slice.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:6,0 -DA:12,0 -DA:17,0 -DA:21,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlayGroup/overlayGroup.thunks.ts -FN:18,(anonymous_6) -FN:33,(anonymous_7) -FN:48,(anonymous_8) -FN:94,(anonymous_9) -FN:113,(anonymous_10) -FN:115,(anonymous_11) -FN:130,(anonymous_12) -FNF:7 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:27,0 -DA:32,0 -DA:33,0 -DA:36,0 -DA:46,0 -DA:53,0 -DA:54,0 -DA:65,0 -DA:66,0 -DA:67,0 -DA:73,0 -DA:75,0 -DA:77,0 -DA:78,0 -DA:79,0 -DA:81,0 -DA:87,0 -DA:95,0 -DA:96,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:103,0 -DA:105,0 -DA:110,0 -DA:114,0 -DA:115,0 -DA:116,0 -DA:117,0 -DA:124,0 -DA:127,0 -DA:129,0 -DA:130,0 -DA:133,0 -DA:135,0 -DA:137,0 -LF:51 -LH:0 -BRDA:32,0,0,0 -BRDA:32,0,1,0 -BRDA:66,1,0,0 -BRDA:66,1,1,0 -BRDA:77,2,0,0 -BRDA:77,2,1,0 -BRDA:77,3,0,0 -BRDA:77,3,1,0 -BRDA:116,4,0,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/redux/overlays/overlays.constants.ts -FNF:0 -FNH:0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlays/overlays.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:6,0 -DA:29,0 -DA:94,0 -DA:117,0 -DA:127,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlays/overlays.reducers.ts -FN:11,(anonymous_6) -FN:14,(anonymous_7) -FN:17,(anonymous_8) -FN:21,(anonymous_9) -FN:27,(anonymous_10) -FN:28,(anonymous_11) -FN:31,(anonymous_12) -FN:34,(anonymous_13) -FN:40,(anonymous_14) -FN:43,(anonymous_15) -FN:46,(anonymous_16) -FN:50,(anonymous_17) -FN:56,(anonymous_18) -FN:57,(anonymous_19) -FN:60,(anonymous_20) -FN:63,(anonymous_21) -FN:69,(anonymous_22) -FN:70,(anonymous_23) -FN:73,(anonymous_24) -FN:76,(anonymous_25) -FNF:20 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -DA:8,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:22,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:34,0 -DA:35,0 -DA:40,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:51,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:64,0 -DA:69,0 -DA:70,0 -DA:71,0 -DA:73,0 -DA:74,0 -DA:76,0 -DA:77,0 -LF:38 -LH:0 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/overlays/overlays.selectors.ts -FN:4,(anonymous_10) -FN:8,(anonymous_11) -FN:11,(anonymous_12) -FN:12,(anonymous_13) -FN:16,(anonymous_14) -FN:17,(anonymous_15) -FN:17,(anonymous_16) -FN:22,(anonymous_17) -FN:25,(anonymous_18) -FN:29,(anonymous_19) -FN:34,(anonymous_20) -FN:39,(anonymous_21) -FN:39,(anonymous_22) -FN:43,(anonymous_23) -FN:44,(anonymous_24) -FN:45,(anonymous_25) -FNF:16 -FNH:0 -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:22,0 -DA:25,0 -DA:27,0 -DA:29,0 -DA:32,0 -DA:34,0 -DA:37,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:45,0 -LF:22 -LH:0 -BRDA:8,0,0,0 -BRDA:8,0,1,0 -BRDA:34,1,0,0 -BRDA:34,1,1,0 -BRDA:39,2,0,0 -BRDA:39,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/overlays/overlays.slice.ts -FN:38,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:8,0 -DA:11,0 -DA:34,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:47,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/overlays/overlays.thunks.ts -FN:36,(anonymous_7) -FN:48,(anonymous_8) -FN:58,(anonymous_9) -FN:79,(anonymous_10) -FN:86,(anonymous_11) -FN:102,(anonymous_12) -FN:124,(anonymous_13) -FN:128,(anonymous_14) -FN:163,(anonymous_15) -FN:209,(anonymous_16) -FN:251,(anonymous_17) -FN:253,(anonymous_18) -FN:271,(anonymous_19) -FN:286,(anonymous_20) -FNF:14 -FNH:0 -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:37,0 -DA:38,0 -DA:42,0 -DA:47,0 -DA:48,0 -DA:51,0 -DA:56,0 -DA:59,0 -DA:60,0 -DA:61,0 -DA:62,0 -DA:64,0 -DA:74,0 -DA:79,0 -DA:80,0 -DA:81,0 -DA:84,0 -DA:86,0 -DA:88,0 -DA:90,0 -DA:102,0 -DA:103,0 -DA:108,0 -DA:116,0 -DA:117,0 -DA:124,0 -DA:125,0 -DA:126,0 -DA:128,0 -DA:129,0 -DA:130,0 -DA:133,0 -DA:135,0 -DA:144,0 -DA:145,0 -DA:147,0 -DA:148,0 -DA:151,0 -DA:163,0 -DA:171,0 -DA:182,0 -DA:190,0 -DA:192,0 -DA:194,0 -DA:207,0 -DA:214,0 -DA:215,0 -DA:220,0 -DA:225,0 -DA:234,0 -DA:236,0 -DA:238,0 -DA:239,0 -DA:240,0 -DA:242,0 -DA:248,0 -DA:252,0 -DA:253,0 -DA:254,0 -DA:268,0 -DA:270,0 -DA:271,0 -DA:274,0 -DA:276,0 -DA:278,0 -DA:283,0 -DA:287,0 -DA:288,0 -DA:292,0 -DA:293,0 -DA:294,0 -DA:296,0 -DA:298,0 -LF:88 -LH:0 -BRDA:47,0,0,0 -BRDA:47,0,1,0 -BRDA:62,1,0,0 -BRDA:80,2,0,0 -BRDA:88,3,0,0 -BRDA:88,3,1,0 -BRDA:117,4,0,0 -BRDA:117,4,1,0 -BRDA:129,5,0,0 -BRDA:194,6,0,0 -BRDA:194,6,1,0 -BRDA:238,7,0,0 -BRDA:238,7,1,0 -BRDA:238,8,0,0 -BRDA:238,8,1,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:src/redux/plugins/plugins.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/plugins/plugins.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -DA:9,0 -DA:15,0 -DA:20,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/plugins/plugins.reducers.ts -FN:10,(anonymous_7) -FN:12,(anonymous_8) -FN:16,(anonymous_9) -FN:17,(anonymous_10) -FN:23,(anonymous_11) -FN:33,(anonymous_12) -FN:38,(anonymous_13) -FN:39,(anonymous_14) -FN:42,(anonymous_15) -FN:46,(anonymous_16) -FN:52,(anonymous_17) -FN:56,(anonymous_18) -FN:60,(anonymous_19) -FNF:13 -FNH:0 -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -DA:2,0 -DA:3,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:33,0 -DA:34,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:47,0 -DA:52,0 -DA:53,0 -DA:56,0 -DA:57,0 -DA:60,0 -DA:64,0 -LF:33 -LH:0 -BRDA:19,0,0,0 -BRDA:24,1,0,0 -BRDA:28,2,0,0 -BRDA:43,3,0,0 -BRDA:43,3,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/redux/plugins/plugins.selectors.ts -FN:6,(anonymous_19) -FN:8,(anonymous_20) -FN:12,(anonymous_21) -FN:16,(anonymous_22) -FN:22,(anonymous_23) -FN:23,(anonymous_24) -FN:27,(anonymous_25) -FN:31,(anonymous_26) -FN:36,(anonymous_27) -FN:42,(anonymous_28) -FN:45,(anonymous_29) -FN:56,(anonymous_30) -FN:57,(anonymous_31) -FN:62,(anonymous_32) -FN:63,(anonymous_33) -FN:69,(anonymous_34) -FN:71,(anonymous_35) -FN:77,(anonymous_36) -FN:78,(anonymous_37) -FN:82,(anonymous_38) -FN:83,(anonymous_39) -FN:89,(anonymous_40) -FN:95,(anonymous_41) -FN:96,(anonymous_42) -FN:100,(anonymous_43) -FN:101,(anonymous_44) -FN:107,(anonymous_45) -FN:108,(anonymous_46) -FN:110,(anonymous_47) -FNF:29 -FNH:0 -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -FNDA:0,(anonymous_30) -FNDA:0,(anonymous_31) -FNDA:0,(anonymous_32) -FNDA:0,(anonymous_33) -FNDA:0,(anonymous_34) -FNDA:0,(anonymous_35) -FNDA:0,(anonymous_36) -FNDA:0,(anonymous_37) -FNDA:0,(anonymous_38) -FNDA:0,(anonymous_39) -FNDA:0,(anonymous_40) -FNDA:0,(anonymous_41) -FNDA:0,(anonymous_42) -FNDA:0,(anonymous_43) -FNDA:0,(anonymous_44) -FNDA:0,(anonymous_45) -FNDA:0,(anonymous_46) -FNDA:0,(anonymous_47) -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:23,0 -DA:27,0 -DA:29,0 -DA:31,0 -DA:34,0 -DA:36,0 -DA:39,0 -DA:43,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:52,0 -DA:56,0 -DA:57,0 -DA:60,0 -DA:63,0 -DA:67,0 -DA:70,0 -DA:71,0 -DA:76,0 -DA:77,0 -DA:78,0 -DA:81,0 -DA:82,0 -DA:84,0 -DA:87,0 -DA:89,0 -DA:92,0 -DA:96,0 -DA:99,0 -DA:100,0 -DA:101,0 -DA:104,0 -DA:108,0 -DA:110,0 -LF:47 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:47,1,0,0 -BRDA:63,2,0,0 -BRDA:63,2,1,0 -BRDA:70,3,0,0 -BRDA:70,3,1,0 -BRDA:71,4,0,0 -BRDA:71,4,1,0 -BRDA:84,5,0,0 -BRDA:84,5,1,0 -BRDA:84,5,2,0 -BRDA:110,6,0,0 -BRDA:110,6,1,0 -BRF:14 -BRH:0 -end_of_record -TN: -SF:src/redux/plugins/plugins.slice.ts -FN:22,(anonymous_6) -FNF:1 -FNH:0 -FNDA:0,(anonymous_6) -DA:1,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:23,0 -DA:24,0 -DA:28,0 -DA:29,0 -DA:30,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/plugins/plugins.thunks.ts -FN:35,(anonymous_5) -FN:95,(anonymous_6) -FN:129,(anonymous_7) -FN:133,(anonymous_8) -FNF:4 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:17,0 -DA:29,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:55,0 -DA:63,0 -DA:65,0 -DA:66,0 -DA:74,0 -DA:76,0 -DA:92,0 -DA:96,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:104,0 -DA:106,0 -DA:107,0 -DA:108,0 -DA:110,0 -DA:111,0 -DA:113,0 -DA:116,0 -DA:118,0 -DA:122,0 -DA:127,0 -DA:130,0 -DA:131,0 -DA:133,0 -DA:134,0 -DA:135,0 -DA:137,0 -DA:139,0 -LF:42 -LH:0 -BRDA:65,0,0,0 -BRDA:106,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/project/project.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/project/project.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:6,0 -DA:13,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/project/project.reducers.ts -FN:5,(anonymous_3) -FN:6,(anonymous_4) -FN:9,(anonymous_5) -FN:13,(anonymous_6) -FN:19,(anonymous_7) -FN:20,(anonymous_8) -FNF:6 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:19,0 -DA:20,0 -DA:21,0 -LF:12 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/project/project.selectors.ts -FN:7,(anonymous_15) -FN:9,(anonymous_16) -FN:13,(anonymous_17) -FN:19,(anonymous_18) -FN:20,(anonymous_19) -FN:25,(anonymous_20) -FN:30,(anonymous_21) -FN:35,(anonymous_22) -FN:40,(anonymous_23) -FN:45,(anonymous_24) -FN:48,(anonymous_25) -FN:52,(anonymous_26) -FN:58,(anonymous_27) -FN:61,(anonymous_28) -FN:63,(anonymous_29) -FNF:15 -FNH:0 -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -FNDA:0,(anonymous_27) -FNDA:0,(anonymous_28) -FNDA:0,(anonymous_29) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:20,0 -DA:23,0 -DA:25,0 -DA:28,0 -DA:30,0 -DA:33,0 -DA:35,0 -DA:38,0 -DA:40,0 -DA:43,0 -DA:45,0 -DA:48,0 -DA:49,0 -DA:52,0 -DA:53,0 -DA:56,0 -DA:58,0 -DA:61,0 -DA:63,0 -LF:28 -LH:0 -BRDA:13,0,0,0 -BRDA:13,0,1,0 -BRDA:20,1,0,0 -BRDA:20,1,1,0 -BRDA:25,2,0,0 -BRDA:25,2,1,0 -BRDA:49,3,0,0 -BRDA:49,3,1,0 -BRDA:53,4,0,0 -BRDA:53,4,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/redux/project/project.slice.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:3,0 -DA:5,0 -DA:12,0 -DA:17,0 -DA:18,0 -DA:22,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/project/project.thunks.ts -FN:15,(anonymous_3) -FN:30,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:28,0 -DA:31,0 -DA:33,0 -LF:17 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:31,1,0,0 -BRDA:31,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/projects/projects.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/projects/projects.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/projects/projects.reducers.ts -FN:5,(anonymous_1) -FN:6,(anonymous_2) -FN:9,(anonymous_3) -FN:13,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -LF:9 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/projects/projects.selectors.ts -FN:4,(anonymous_3) -FN:5,(anonymous_4) -FNF:2 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/projects/projects.slice.ts -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:6,0 -DA:12,0 -DA:17,0 -DA:21,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/projects/projects.thunks.ts -FN:14,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:22,0 -LF:14 -LH:0 -BRDA:20,0,0,0 -BRDA:20,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/publications/publications.constatns.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/publications/publications.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -DA:14,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/publications/publications.reducers.ts -FN:5,(anonymous_5) -FN:8,(anonymous_6) -FN:11,(anonymous_7) -FN:15,(anonymous_8) -FN:21,(anonymous_9) -FN:29,(anonymous_10) -FN:36,(anonymous_11) -FNF:7 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:21,0 -DA:25,0 -DA:26,0 -DA:29,0 -DA:33,0 -DA:36,0 -DA:40,0 -LF:16 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/publications/publications.selectors.ts -FN:5,(anonymous_14) -FN:9,(anonymous_15) -FN:14,(anonymous_16) -FN:20,(anonymous_17) -FN:24,(anonymous_18) -FN:28,(anonymous_19) -FN:31,(anonymous_20) -FN:32,(anonymous_21) -FN:39,(anonymous_22) -FN:44,(anonymous_23) -FN:48,(anonymous_24) -FN:53,(anonymous_25) -FN:58,(anonymous_26) -FNF:13 -FNH:0 -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -FNDA:0,(anonymous_19) -FNDA:0,(anonymous_20) -FNDA:0,(anonymous_21) -FNDA:0,(anonymous_22) -FNDA:0,(anonymous_23) -FNDA:0,(anonymous_24) -FNDA:0,(anonymous_25) -FNDA:0,(anonymous_26) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:9,0 -DA:12,0 -DA:14,0 -DA:18,0 -DA:20,0 -DA:24,0 -DA:26,0 -DA:28,0 -DA:31,0 -DA:32,0 -DA:37,0 -DA:39,0 -DA:42,0 -DA:44,0 -DA:46,0 -DA:48,0 -DA:51,0 -DA:53,0 -DA:56,0 -DA:58,0 -LF:25 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/publications/publications.slice.ts -FN:27,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:1,0 -DA:8,0 -DA:10,0 -DA:19,0 -DA:28,0 -DA:32,0 -DA:33,0 -DA:35,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/publications/publications.thunks.ts -FN:17,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:28,0 -DA:30,0 -LF:14 -LH:0 -BRDA:28,0,0,0 -BRDA:28,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/isReactionElement.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:4,0 -LF:2 -LH:0 -BRDA:4,0,0,0 -BRDA:4,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/reactions.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:9,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/reactions.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/reactions.reducers.ts -FN:7,(anonymous_4) -FN:8,(anonymous_5) -FN:11,(anonymous_6) -FN:19,(anonymous_7) -FN:25,(anonymous_8) -FN:31,(anonymous_9) -FNF:6 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:3,0 -DA:4,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:31,0 -DA:35,0 -DA:36,0 -LF:20 -LH:0 -BRDA:13,0,0,0 -BRDA:15,1,0,0 -BRDA:15,1,1,0 -BRDA:15,2,0,0 -BRDA:15,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/reactions.selector.ts -FN:8,(anonymous_5) -FN:12,(anonymous_6) -FN:18,(anonymous_7) -FN:19,(anonymous_8) -FN:27,(anonymous_9) -FN:32,(anonymous_10) -FNF:6 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:19,0 -DA:23,0 -DA:28,0 -DA:29,0 -DA:32,0 -LF:14 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRDA:28,1,0,0 -BRDA:28,2,0,0 -BRDA:28,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/reactions.slice.ts -FN:16,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:7,0 -DA:9,0 -DA:17,0 -DA:21,0 -DA:23,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/reactions/reactions.thunks.ts -FN:31,(anonymous_1) -FN:36,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:27,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:41,0 -DA:43,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:50,0 -DA:51,0 -DA:55,0 -DA:57,0 -LF:22 -LH:0 -BRDA:33,0,0,0 -BRDA:33,0,1,0 -BRDA:50,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/root/init.selectors.ts -FN:11,(anonymous_4) -FN:11,(anonymous_5) -FN:18,(anonymous_6) -FN:18,(anonymous_7) -FN:26,(anonymous_8) -FN:26,(anonymous_9) -FNF:6 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:11,0 -DA:14,0 -DA:18,0 -DA:21,0 -DA:26,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/root/init.thunks.ts -FN:56,(anonymous_2) -FN:82,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:52,0 -DA:57,0 -DA:61,0 -DA:74,0 -DA:75,0 -DA:78,0 -DA:81,0 -DA:82,0 -DA:83,0 -DA:84,0 -DA:85,0 -DA:87,0 -DA:88,0 -DA:90,0 -DA:94,0 -DA:97,0 -DA:98,0 -DA:105,0 -DA:107,0 -DA:108,0 -DA:109,0 -DA:114,0 -DA:120,0 -DA:123,0 -DA:126,0 -DA:129,0 -DA:132,0 -DA:133,0 -DA:134,0 -DA:137,0 -DA:138,0 -DA:139,0 -DA:145,0 -DA:148,0 -DA:149,0 -DA:151,0 -DA:152,0 -DA:154,0 -DA:155,0 -DA:158,0 -DA:159,0 -DA:160,0 -DA:162,0 -LF:73 -LH:0 -BRDA:81,0,0,0 -BRDA:81,1,0,0 -BRDA:81,1,1,0 -BRDA:84,2,0,0 -BRDA:85,3,0,0 -BRDA:85,3,1,0 -BRDA:87,4,0,0 -BRDA:97,5,0,0 -BRDA:107,6,0,0 -BRDA:137,7,0,0 -BRDA:151,8,0,0 -BRDA:154,9,0,0 -BRDA:158,10,0,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:src/redux/root/query.selectors.ts -FN:17,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:42,0 -LF:14 -LH:0 -BRDA:26,0,0,0 -BRDA:26,0,1,0 -BRDA:37,1,0,0 -BRDA:37,1,1,0 -BRDA:38,2,0,0 -BRDA:38,2,1,0 -BRDA:39,3,0,0 -BRDA:39,3,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/redux/root/root.fixtures.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:36,0 -DA:38,0 -LF:36 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/root/root.selectors.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.constants.ts -FNF:0 -FNH:0 -DA:3,0 -DA:9,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.reducers.ts -FN:7,(anonymous_4) -FN:8,(anonymous_5) -FN:13,(anonymous_6) -FN:16,(anonymous_7) -FN:22,(anonymous_8) -FN:26,(anonymous_9) -FNF:6 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -DA:2,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:22,0 -DA:23,0 -DA:26,0 -DA:27,0 -DA:28,0 -LF:16 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.selectors.ts -FN:6,(anonymous_6) -FN:8,(anonymous_7) -FN:10,(anonymous_8) -FN:14,(anonymous_9) -FN:17,(anonymous_10) -FNF:5 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:17,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.slice.ts -FN:16,(anonymous_5) -FNF:1 -FNH:0 -FNDA:0,(anonymous_5) -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:17,0 -DA:21,0 -DA:23,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.thunks.ts -FN:22,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:15,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:38,0 -DA:44,0 -DA:46,0 -LF:20 -LH:0 -BRDA:28,0,0,0 -BRDA:29,1,0,0 -BRDA:29,1,1,0 -BRDA:31,2,0,0 -BRDA:31,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/redux/search/search.thunks.utils.ts -FN:4,(anonymous_1) -FN:7,(anonymous_2) -FN:8,(anonymous_3) -FN:9,(anonymous_4) -FN:18,(anonymous_5) -FN:21,(anonymous_6) -FNF:6 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:28,0 -DA:33,0 -LF:14 -LH:0 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRDA:18,1,0,0 -BRDA:18,1,1,0 -BRDA:21,2,0,0 -BRDA:21,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/selectors/index.ts -FN:20,(anonymous_3) -FN:32,(anonymous_4) -FN:32,(anonymous_5) -FNF:3 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:20,0 -DA:23,0 -DA:32,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/shapes/shapes.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:3,0 -DA:5,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/shapes/shapes.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/shapes/shapes.reducers.ts -FN:5,(anonymous_4) -FN:6,(anonymous_5) -FN:9,(anonymous_6) -FN:13,(anonymous_7) -FN:18,(anonymous_8) -FN:19,(anonymous_9) -FN:22,(anonymous_10) -FN:26,(anonymous_11) -FN:31,(anonymous_12) -FN:32,(anonymous_13) -FN:35,(anonymous_14) -FN:39,(anonymous_15) -FNF:12 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:39,0 -DA:40,0 -LF:25 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:36,2,0,0 -BRDA:36,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/redux/shapes/shapes.selectors.ts -FN:4,(anonymous_8) -FN:8,(anonymous_9) -FN:13,(anonymous_10) -FN:18,(anonymous_11) -FN:23,(anonymous_12) -FN:28,(anonymous_13) -FN:33,(anonymous_14) -FNF:7 -FNH:0 -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:18,0 -DA:21,0 -DA:23,0 -DA:26,0 -DA:28,0 -DA:31,0 -DA:33,0 -LF:15 -LH:0 -BRDA:18,0,0,0 -BRDA:18,0,1,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/redux/shapes/shapes.slice.ts -FN:13,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:20,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/shapes/shapes.thunks.ts -FN:22,(anonymous_5) -FN:38,(anonymous_6) -FN:55,(anonymous_7) -FNF:3 -FNH:0 -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:31,0 -DA:36,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:46,0 -DA:48,0 -DA:53,0 -DA:56,0 -DA:57,0 -DA:58,0 -DA:60,0 -DA:61,0 -DA:63,0 -DA:65,0 -LF:35 -LH:0 -BRDA:26,0,0,0 -BRDA:43,1,0,0 -BRDA:60,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/statistics/statistics.constants.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/statistics/statistics.mock.ts -FNF:0 -FNH:0 -DA:1,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/statistics/statistics.reducers.ts -FN:5,(anonymous_1) -FN:8,(anonymous_2) -FN:11,(anonymous_3) -FN:15,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/statistics/statistics.selectors.ts -FN:4,(anonymous_4) -FN:6,(anonymous_5) -FN:10,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:10,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/statistics/statistics.slice.ts -FN:15,(anonymous_3) -FNF:1 -FNH:0 -FNDA:0,(anonymous_3) -DA:1,0 -DA:3,0 -DA:5,0 -DA:11,0 -DA:16,0 -DA:20,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/statistics/statistics.thunks.ts -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:21,0 -LF:13 -LH:0 -BRDA:19,0,0,0 -BRDA:19,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/redux/user/user.mock.ts -FNF:0 -FNH:0 -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/user/user.reducers.ts -FN:5,(anonymous_4) -FN:7,(anonymous_5) -FN:10,(anonymous_6) -FN:18,(anonymous_7) -FN:24,(anonymous_8) -FN:26,(anonymous_9) -FN:29,(anonymous_10) -FN:37,(anonymous_11) -FN:44,(anonymous_12) -FN:46,(anonymous_13) -FN:49,(anonymous_14) -FN:57,(anonymous_15) -FNF:12 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -DA:2,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:20,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:38,0 -DA:39,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:50,0 -DA:51,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:58,0 -LF:33 -LH:0 -BRDA:13,0,0,0 -BRDA:13,0,1,0 -BRDA:14,1,0,0 -BRDA:14,1,1,0 -BRDA:15,2,0,0 -BRDA:15,2,1,0 -BRDA:16,3,0,0 -BRDA:16,3,1,0 -BRDA:32,4,0,0 -BRDA:32,4,1,0 -BRDA:33,5,0,0 -BRDA:33,5,1,0 -BRDA:34,6,0,0 -BRDA:34,6,1,0 -BRDA:35,7,0,0 -BRDA:35,7,1,0 -BRF:16 -BRH:0 -end_of_record -TN: -SF:src/redux/user/user.selectors.ts -FN:7,(anonymous_9) -FN:9,(anonymous_10) -FN:10,(anonymous_11) -FN:11,(anonymous_12) -FN:12,(anonymous_13) -FN:15,(anonymous_14) -FN:20,(anonymous_15) -FN:27,(anonymous_16) -FNF:8 -FNH:0 -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -FNDA:0,(anonymous_14) -FNDA:0,(anonymous_15) -FNDA:0,(anonymous_16) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:17,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:27,0 -LF:16 -LH:0 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRDA:21,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/redux/user/user.slice.ts -FN:19,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:5,0 -DA:15,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:26,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/redux/user/user.thunks.ts -FN:18,(anonymous_8) -FN:29,(anonymous_9) -FN:39,(anonymous_10) -FN:85,(anonymous_11) -FN:113,(anonymous_12) -FN:129,(anonymous_13) -FNF:6 -FNH:0 -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:34,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:46,0 -DA:47,0 -DA:49,0 -DA:50,0 -DA:52,0 -DA:53,0 -DA:55,0 -DA:56,0 -DA:58,0 -DA:61,0 -DA:69,0 -DA:71,0 -DA:72,0 -DA:73,0 -DA:77,0 -DA:80,0 -DA:85,0 -DA:86,0 -DA:90,0 -DA:94,0 -DA:96,0 -DA:97,0 -DA:99,0 -DA:100,0 -DA:102,0 -DA:110,0 -DA:113,0 -DA:114,0 -DA:115,0 -DA:119,0 -DA:120,0 -DA:122,0 -DA:126,0 -DA:130,0 -DA:131,0 -DA:143,0 -DA:145,0 -DA:147,0 -LF:65 -LH:0 -BRDA:19,0,0,0 -BRDA:22,1,0,0 -BRDA:49,2,0,0 -BRDA:55,3,0,0 -BRDA:55,3,1,0 -BRDA:55,4,0,0 -BRDA:55,4,1,0 -BRDA:71,5,0,0 -BRDA:72,6,0,0 -BRDA:99,7,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/redux/user/user.utils.ts -FN:3,(anonymous_3) -FN:4,(anonymous_4) -FN:7,(anonymous_5) -FN:14,(anonymous_6) -FNF:4 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:3,0 -DA:4,0 -DA:7,0 -DA:12,0 -DA:14,0 -LF:5 -LH:0 -BRDA:14,0,0,0 -BRDA:14,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/api/utils/axiosInstance.ts -FN:12,(anonymous_4) -FN:20,(anonymous_5) -FN:30,(anonymous_6) -FN:38,(anonymous_7) -FNF:4 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:2,0 -DA:4,0 -DA:8,0 -DA:12,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:27,0 -DA:30,0 -DA:34,0 -DA:35,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:42,0 -DA:45,0 -LF:20 -LH:0 -BRDA:22,0,0,0 -BRDA:40,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/api/utils/useApiQuery.ts -FN:12,(anonymous_2) -FN:22,(anonymous_3) -FN:34,(anonymous_4) -FNF:3 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:4,0 -DA:5,0 -DA:12,0 -DA:17,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:27,0 -DA:33,0 -DA:34,0 -DA:38,0 -LF:12 -LH:0 -BRDA:23,0,0,0 -BRDA:34,1,0,0 -BRDA:34,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/errorMessages.ts -FN:15,(anonymous_17) -FN:16,(anonymous_18) -FNF:2 -FNH:0 -FNDA:0,(anonymous_17) -FNDA:0,(anonymous_18) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -LF:19 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/pluginsManager.ts -FN:52,(anonymous_2) -FN:62,(anonymous_3) -FN:66,(anonymous_4) -FN:75,(anonymous_5) -FN:132,(anonymous_6) -FN:147,(anonymous_7) -FN:161,(anonymous_8) -FN:166,(anonymous_9) -FN:173,(anonymous_10) -FN:223,(anonymous_11) -FN:234,(anonymous_12) -FN:239,(anonymous_13) -FNF:12 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -FNDA:0,(anonymous_13) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:50,0 -DA:53,0 -DA:55,0 -DA:57,0 -DA:63,0 -DA:65,0 -DA:66,0 -DA:68,0 -DA:72,0 -DA:76,0 -DA:77,0 -DA:132,0 -DA:133,0 -DA:135,0 -DA:136,0 -DA:138,0 -DA:145,0 -DA:148,0 -DA:150,0 -DA:152,0 -DA:153,0 -DA:154,0 -DA:157,0 -DA:159,0 -DA:162,0 -DA:167,0 -DA:168,0 -DA:169,0 -DA:170,0 -DA:174,0 -DA:176,0 -DA:178,0 -DA:180,0 -DA:181,0 -DA:184,0 -DA:186,0 -DA:198,0 -DA:205,0 -DA:224,0 -DA:225,0 -DA:227,0 -DA:228,0 -DA:229,0 -DA:232,0 -DA:235,0 -DA:239,0 -LF:92 -LH:0 -BRDA:66,0,0,0 -BRDA:66,0,1,0 -BRDA:68,1,0,0 -BRDA:69,2,0,0 -BRDA:69,2,1,0 -BRDA:135,3,0,0 -BRDA:150,4,0,0 -BRDA:152,5,0,0 -BRDA:162,6,0,0 -BRDA:162,6,1,0 -BRDA:162,7,0,0 -BRDA:162,7,1,0 -BRDA:167,8,0,0 -BRDA:167,8,1,0 -BRDA:167,9,0,0 -BRDA:167,9,1,0 -BRDA:169,10,0,0 -BRDA:180,11,0,0 -BRDA:227,12,0,0 -BRF:19 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/pluginsManager.utils.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/addSingleMarker.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:15,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/clearAllElements.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:24,0 -DA:25,0 -LF:15 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRDA:20,2,0,0 -BRDA:24,3,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/getAllChemicals.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/getAllContent.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/getAllDrugs.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRDA:9,0,0,0 -BRDA:9,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/getAllMarkers.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/getShownElements.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -LF:12 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/index.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/removeAllMarkers.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/bioEntities/removeSingleMarker.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/interface/getOpenedPanel.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/interface/hidePanel.ts -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -LF:8 -LH:0 -BRDA:10,0,0,0 -BRDA:10,1,0,0 -BRDA:10,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/interface/openPanel.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/legend/removeLegend.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:13,0 -LF:9 -LH:0 -BRDA:9,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/legend/setLegend.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/getOpenMapId.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:12,0 -LF:8 -LH:0 -BRDA:8,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/mapManager.ts -FN:13,(anonymous_1) -FN:17,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:10,0 -DA:14,0 -DA:15,0 -DA:17,0 -LF:5 -LH:0 -BRDA:14,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/minervaDefine.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/openMap.ts -FN:12,(anonymous_1) -FN:16,(anonymous_2) -FN:21,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:29,0 -DA:30,0 -DA:31,0 -LF:20 -LH:0 -BRDA:19,0,0,0 -BRDA:23,1,0,0 -BRDA:23,1,1,0 -BRDA:29,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/data/getBounds.ts -FN:17,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:29,0 -DA:30,0 -DA:32,0 -LF:16 -LH:0 -BRDA:20,0,0,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRDA:34,2,0,0 -BRDA:34,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/fitBounds/fitBounds.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/fitBounds/fitBounds.ts -FN:16,(anonymous_1) -FN:34,(anonymous_2) -FN:44,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:21,0 -DA:23,0 -DA:34,0 -DA:36,0 -DA:38,0 -DA:44,0 -DA:45,0 -LF:16 -LH:0 -BRDA:19,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/fitBounds/fitBounds.utils.ts -FN:7,(anonymous_1) -FN:10,(anonymous_2) -FN:11,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -LF:9 -LH:0 -BRDA:13,0,0,0 -BRDA:13,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/fitBounds/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/models/getModels.ts -FN:7,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -LF:8 -LH:0 -BRDA:12,0,0,0 -BRDA:12,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/getDataOverlays.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:4,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -LF:6 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/getVisibleDataOverlays.ts -FN:10,(anonymous_1) -FN:16,(anonymous_2) -FN:18,(anonymous_3) -FN:21,(anonymous_4) -FN:24,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:37,0 -DA:45,0 -LF:21 -LH:0 -BRDA:20,0,0,0 -BRDA:23,1,0,0 -BRDA:25,2,0,0 -BRDA:25,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/hideDataOverlay.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:23,0 -DA:25,0 -LF:18 -LH:0 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRDA:17,1,0,0 -BRDA:19,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/removeDataOverlay.ts -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:15,0 -DA:17,0 -LF:12 -LH:0 -BRDA:13,0,0,0 -BRDA:13,0,1,0 -BRDA:15,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/addDataOverlay/addDataOverlay.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/addDataOverlay/addDataOverlay.ts -FN:22,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:22,0 -DA:30,0 -DA:31,0 -DA:33,0 -DA:35,0 -DA:37,0 -DA:39,0 -LF:14 -LH:0 -BRDA:33,0,0,0 -BRDA:35,1,0,0 -BRDA:42,2,0,0 -BRDA:42,2,1,0 -BRDA:43,3,0,0 -BRDA:43,3,1,0 -BRDA:46,4,0,0 -BRDA:46,4,1,0 -BRDA:47,5,0,0 -BRDA:47,5,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/addDataOverlay/addDataOverlay.utils.ts -FN:6,(anonymous_1) -FN:7,(anonymous_2) -FN:10,(anonymous_3) -FN:20,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:27,0 -LF:15 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRDA:21,1,0,0 -BRDA:24,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/addDataOverlay/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/showDataOverlay/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/showDataOverlay/showDataOverlay.ts -FN:13,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -LF:22 -LH:0 -BRDA:20,0,0,0 -BRDA:20,0,1,0 -BRDA:22,1,0,0 -BRDA:24,2,0,0 -BRDA:28,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/types/DataOverlay.ts -FN:25,(anonymous_1) -FN:38,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:4,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:39,0 -LF:12 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/overlays/types/DataOverlayEntry.ts -FN:14,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/position/getCenter.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/position/setCenter.ts -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/displaySearchDrawerWithSelectedDefaultTab.ts -FN:6,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:14,0 -LF:11 -LH:0 -BRDA:11,0,0,0 -BRDA:11,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/getPolygonPoints.ts -FN:10,(anonymous_1) -FN:12,(anonymous_2) -FN:13,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:21,0 -DA:32,0 -LF:13 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/getVisibleBioEntitiesPolygonCoordinates.ts -FN:10,(anonymous_1) -FN:22,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:28,0 -LF:14 -LH:0 -BRDA:24,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/searchByCoordinates.ts -FN:19,(anonymous_2) -FN:36,(anonymous_3) -FNF:2 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:25,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:52,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:56,0 -DA:57,0 -LF:38 -LH:0 -BRDA:42,0,0,0 -BRDA:43,1,0,0 -BRDA:54,2,0,0 -BRDA:54,2,1,0 -BRDA:56,3,0,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/searchByQuery.ts -FN:8,(anonymous_1) -FN:21,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:27,0 -LF:15 -LH:0 -BRDA:22,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/searchFitBounds.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:12,0 -DA:13,0 -LF:9 -LH:0 -BRDA:7,0,0,0 -BRDA:10,1,0,0 -BRDA:12,2,0,0 -BRDA:12,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/triggerSearch/triggerSearch.ts -FN:11,triggerSearch -FNF:1 -FNH:0 -FNDA:0,triggerSearch -DA:1,0 -DA:3,0 -DA:4,0 -DA:9,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:33,0 -LF:20 -LH:0 -BRDA:13,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRDA:17,2,0,0 -BRDA:23,3,0,0 -BRDA:23,3,1,0 -BRDA:24,4,0,0 -BRDA:24,4,1,0 -BRDA:26,5,0,0 -BRDA:26,5,1,0 -BRDA:27,6,0,0 -BRDA:27,7,0,0 -BRDA:27,7,1,0 -BRDA:27,7,2,0 -BRDA:30,8,0,0 -BRF:15 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/zoom/getZoom.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/map/zoom/setZoom.ts -FN:7,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:17,0 -DA:20,0 -LF:14 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/overviewImage/getCurrentOverviewImage.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/overviewImage/getOverviewImages.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/overviewImage/hideOverviewImageModal.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:13,0 -LF:9 -LH:0 -BRDA:9,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/overviewImage/selectOverviewImage.ts -FN:6,(anonymous_1) -FN:9,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:16,0 -LF:12 -LH:0 -BRDA:12,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/overviewImage/showOverviewImageModal.ts -FN:9,(anonymous_1) -FN:15,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:22,0 -LF:14 -LH:0 -BRDA:13,0,0,0 -BRDA:13,0,1,0 -BRDA:18,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/pluginContextMenu/pluginsContextMenu.ts -FN:7,(anonymous_1) -FN:19,(anonymous_2) -FN:21,(anonymous_3) -FN:24,(anonymous_4) -FN:26,(anonymous_5) -FNF:5 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:3,0 -DA:5,0 -DA:8,0 -DA:9,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:25,0 -DA:26,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:33,0 -LF:15 -LH:0 -BRDA:21,0,0,0 -BRDA:21,0,1,0 -BRDA:26,1,0,0 -BRDA:26,1,1,0 -BRDA:28,2,0,0 -BRDA:28,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/pluginsEventBus/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/pluginsEventBus/pluginsEventBus.constants.ts -FN:28,(anonymous_4) -FNF:1 -FNH:0 -FNDA:0,(anonymous_4) -DA:1,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:34,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/pluginsEventBus/pluginsEventBus.ts -FN:38,dispatchEvent -FN:61,(anonymous_4) -FN:75,(anonymous_5) -FN:84,(anonymous_6) -FN:86,(anonymous_7) -FN:96,(anonymous_8) -FN:100,(anonymous_9) -FN:101,(anonymous_10) -FNF:8 -FNH:0 -FNDA:0,dispatchEvent -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -DA:3,0 -DA:4,0 -DA:9,0 -DA:38,0 -DA:39,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:47,0 -DA:52,0 -DA:58,0 -DA:67,0 -DA:76,0 -DA:85,0 -DA:86,0 -DA:89,0 -DA:90,0 -DA:92,0 -DA:97,0 -DA:101,0 -LF:21 -LH:0 -BRDA:39,0,0,0 -BRDA:43,1,0,0 -BRDA:86,2,0,0 -BRDA:86,2,1,0 -BRDA:86,2,2,0 -BRDA:89,3,0,0 -BRDA:89,3,1,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/project/data/getApiUrls.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:8,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/project/data/getDisease.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:16,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/project/data/getName.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:16,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/project/data/getOrganism.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:16,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/project/data/getProjectId.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:16,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/services/pluginsManager/project/data/getVersion.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:14,0 -DA:16,0 -LF:9 -LH:0 -BRDA:12,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/Accordion.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:16,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/index.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItem/AccordionItem.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:12,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItem/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemButton/AccordionItemButton.component.tsx -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:16,0 -DA:24,0 -LF:6 -LH:0 -BRDA:18,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemButton/AccordionItemButton.utils.tsx -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:5,0 -DA:10,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemButton/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemHeading/AccordionItemHeading.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:7,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemHeading/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemPanel/AccordionItemPanel.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:9,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Accordion/AccordionItemPanel/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Autocomplete/Autocomplete.component.tsx -FN:20,(anonymous_2) -FN:28,(anonymous_3) -FN:34,(anonymous_4) -FN:39,(anonymous_5) -FN:44,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:20,0 -DA:28,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:38,0 -DA:39,0 -DA:44,0 -DA:45,0 -DA:61,0 -LF:13 -LH:0 -BRDA:22,0,0,0 -BRDA:23,1,0,0 -BRDA:24,2,0,0 -BRDA:26,3,0,0 -BRDA:35,4,0,0 -BRDA:39,5,0,0 -BRDA:39,5,1,0 -BRDA:45,6,0,0 -BRDA:45,6,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/shared/Autocomplete/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Button/Button.component.tsx -FN:44,(anonymous_1) -FN:53,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:16,0 -DA:44,0 -DA:53,0 -DA:54,0 -DA:56,0 -DA:58,0 -DA:84,0 -LF:9 -LH:0 -BRDA:45,0,0,0 -BRDA:46,1,0,0 -BRDA:47,2,0,0 -BRDA:48,3,0,0 -BRDA:49,4,0,0 -BRDA:50,5,0,0 -BRDA:54,6,0,0 -BRDA:56,7,0,0 -BRDA:68,8,0,0 -BRDA:68,8,1,0 -BRDA:74,9,0,0 -BRDA:76,10,0,0 -BRDA:76,10,1,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:src/shared/Button/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/ColorPicker/ColorTilePicker.component.tsx -FN:14,(anonymous_4) -FN:21,(anonymous_5) -FN:27,(anonymous_6) -FN:32,(anonymous_7) -FN:38,(anonymous_8) -FN:39,(anonymous_9) -FN:46,(anonymous_10) -FN:57,(anonymous_11) -FNF:8 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:14,0 -DA:20,0 -DA:21,0 -DA:23,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:57,0 -LF:23 -LH:0 -BRDA:17,0,0,0 -BRDA:18,1,0,0 -BRDA:21,2,0,0 -BRDA:21,2,1,0 -BRDA:33,3,0,0 -BRDA:33,4,0,0 -BRDA:33,4,1,0 -BRDA:40,5,0,0 -BRDA:40,6,0,0 -BRDA:40,6,1,0 -BRDA:64,7,0,0 -BRF:11 -BRH:0 -end_of_record -TN: -SF:src/shared/ColorPicker/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/DrawerHeading/DrawerHeading.component.tsx -FN:10,(anonymous_1) -FN:13,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:14,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/DrawerHeading/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/DrawerHeadingBackwardButton/DrawerHeadingBackwardButton.component.tsx -FN:11,(anonymous_1) -FN:17,(anonymous_2) -FN:21,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:11,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:21,0 -DA:22,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/DrawerHeadingBackwardButton/DrawerHeadingBackwardButton.constants.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/DrawerHeadingBackwardButton/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icon.component.tsx -FN:102,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:34,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:54,0 -DA:102,0 -DA:103,0 -DA:104,0 -DA:106,0 -DA:111,0 -LF:51 -LH:0 -BRDA:102,0,0,0 -BRDA:103,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/AdminIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ArrowDoubleDownIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ArrowDoubleUpIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ArrowIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/CenterIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ChevronDownIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ChevronLeftIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ChevronRightIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ChevronUpIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ClearIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/CloseIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/CrossedEyeIcon.tsx -FNF:0 -FNH:0 -DA:7,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/DotsIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/DownloadIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/EditIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ExportIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/EyeIcon.tsx -FNF:0 -FNH:0 -DA:7,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ImageIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/InfoIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/LayerArrowDownIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/LayerArrowUpIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/LayersIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/LegendIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/LocationIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/MagnifierZoomIn.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/MagnifierZoomOut.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ManageUserIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/MoveBackIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/MoveFrontIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/OvalIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/PadlockLockedIcon.tsx -FNF:0 -FNH:0 -DA:7,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/PadlockOpenIcon.tsx -FNF:0 -FNH:0 -DA:7,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/PageIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/PencilIcon.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:7,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/Pin.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/PluginIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/PlusIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/QuestionIcon.tsx -FNF:0 -FNH:0 -DA:7,0 -LF:1 -LH:0 -BRDA:7,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/RectangleIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ReloadIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ResizeImageIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/TextIcon.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:7,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/ThreeDotsIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/TrashIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Icon/Icons/UserIcon.tsx -FNF:0 -FNH:0 -DA:5,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/IconButton/IconButton.component.tsx -FN:14,(anonymous_1) -FN:19,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:19,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:73,0 -LF:10 -LH:0 -BRDA:15,0,0,0 -BRDA:20,1,0,0 -BRDA:21,2,0,0 -BRDA:23,3,0,0 -BRDA:26,4,0,0 -BRDA:51,5,0,0 -BRDA:51,5,1,0 -BRDA:59,6,0,0 -BRDA:59,6,1,0 -BRDA:62,7,0,0 -BRDA:62,7,1,0 -BRDA:64,8,0,0 -BRDA:64,8,1,0 -BRF:13 -BRH:0 -end_of_record -TN: -SF:src/shared/IconButton/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Input/Input.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:14,0 -DA:21,0 -DA:26,0 -DA:39,0 -LF:6 -LH:0 -BRDA:28,0,0,0 -BRDA:28,1,0,0 -BRDA:28,2,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/shared/Input/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/LinkButton/LinkButton.component.tsx -FN:16,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:16,0 -LF:3 -LH:0 -BRDA:17,0,0,0 -BRDA:18,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/shared/LinkButton/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/LoadingIndicator/LoadingIndicator.component.tsx -FNF:0 -FNH:0 -DA:6,0 -DA:7,0 -DA:9,0 -LF:3 -LH:0 -BRDA:10,0,0,0 -BRDA:11,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/shared/LoadingIndicator/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/OutsideClickWrapper/OutsideClickWrapper.component.tsx -FN:8,(anonymous_4) -FN:14,(anonymous_5) -FN:15,(anonymous_6) -FN:23,(anonymous_7) -FNF:4 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -DA:1,0 -DA:8,0 -DA:12,0 -DA:14,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:21,0 -DA:23,0 -DA:24,0 -LF:10 -LH:0 -BRDA:16,0,0,0 -BRDA:16,1,0,0 -BRDA:16,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/shared/OutsideClickWrapper/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Select/Select.component.tsx -FN:15,(anonymous_2) -FN:23,(anonymous_3) -FN:35,(anonymous_4) -FN:40,(anonymous_5) -FN:78,(anonymous_6) -FNF:5 -FNH:0 -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:15,0 -DA:23,0 -DA:32,0 -DA:36,0 -DA:37,0 -DA:40,0 -DA:43,0 -DA:79,0 -LF:12 -LH:0 -BRDA:19,0,0,0 -BRDA:20,1,0,0 -BRDA:21,2,0,0 -BRDA:23,3,0,0 -BRDA:23,3,1,0 -BRDA:36,4,0,0 -BRDA:40,5,0,0 -BRDA:40,5,1,0 -BRDA:43,6,0,0 -BRDA:43,6,1,0 -BRDA:50,7,0,0 -BRDA:50,7,1,0 -BRDA:61,8,0,0 -BRDA:61,8,1,0 -BRDA:65,9,0,0 -BRDA:65,9,1,0 -BRDA:71,10,0,0 -BRDA:71,10,1,0 -BRDA:77,11,0,0 -BRDA:77,11,1,0 -BRDA:82,12,0,0 -BRDA:82,12,1,0 -BRDA:83,13,0,0 -BRDA:83,13,1,0 -BRF:24 -BRH:0 -end_of_record -TN: -SF:src/shared/Select/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Switch/Switch.component.tsx -FN:32,(anonymous_1) -FN:41,(anonymous_2) -FN:45,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:13,0 -DA:32,0 -DA:39,0 -DA:41,0 -DA:42,0 -DA:45,0 -DA:46,0 -DA:47,0 -DA:48,0 -DA:49,0 -DA:76,0 -LF:13 -LH:0 -BRDA:33,0,0,0 -BRDA:34,1,0,0 -BRDA:48,2,0,0 -BRDA:60,3,0,0 -BRDA:60,3,1,0 -BRDA:69,4,0,0 -BRDA:69,4,1,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/shared/Switch/index.tsx -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Textarea/Textarea.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:11,0 -DA:16,0 -LF:4 -LH:0 -BRDA:17,0,0,0 -BRDA:18,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/shared/Textarea/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Toast/Toast.component.tsx -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:10,0 -DA:16,0 -DA:22,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/shared/Toast/index.ts -FNF:0 -FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/types/models.ts -FNF:0 -FNH:0 -DA:54,0 -DA:57,0 -DA:58,0 -DA:65,0 -DA:87,0 -DA:97,0 -DA:111,0 -LF:7 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/assertNever.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/createStoreInstanceUsingSliceReducer.ts -FN:22,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:22,0 -DA:26,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/injectMatomoTracking.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:17,0 -LF:11 -LH:0 -BRDA:4,0,0,0 -BRDA:4,1,0,0 -BRDA:4,1,1,0 -BRDA:8,2,0,0 -BRDA:8,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/utils/mockNetworkResponse.ts -FN:5,(anonymous_4) -FN:10,(anonymous_5) -FNF:2 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:10,0 -DA:11,0 -DA:12,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/parseQueryToTypes.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -LF:1 -LH:0 -BRDA:6,0,0,0 -BRDA:6,0,1,0 -BRDA:7,1,0,0 -BRDA:7,1,1,0 -BRDA:8,2,0,0 -BRDA:8,2,1,0 -BRDA:10,3,0,0 -BRDA:10,3,1,0 -BRDA:11,4,0,0 -BRDA:11,4,1,0 -BRDA:12,5,0,0 -BRDA:12,5,1,0 -BRF:12 -BRH:0 -end_of_record -TN: -SF:src/utils/setLoginForOldMinerva.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -LF:4 -LH:0 -BRDA:3,0,0,0 -BRDA:3,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/showToast.tsx -FN:12,(anonymous_1) -FN:14,(anonymous_2) -FN:14,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:4,0 -DA:12,0 -DA:13,0 -DA:14,0 -LF:6 -LH:0 -BRDA:15,0,0,0 -BRDA:15,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/useDebouncedValue.ts -FN:3,useDebouncedValue -FN:6,(anonymous_2) -FN:7,(anonymous_3) -FN:9,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,useDebouncedValue -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:14,0 -LF:8 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/validateDataUsingZodSchema.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:5,0 -DA:6,0 -DA:8,0 -DA:11,0 -DA:13,0 -DA:16,0 -LF:6 -LH:0 -BRDA:8,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/array/arrayToDict.ts -FN:1,arrayToDict -FN:7,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,arrayToDict -FNDA:0,(anonymous_2) -DA:1,0 -DA:6,0 -DA:8,0 -DA:9,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/array/arrayToKeyValue.ts -FN:1,arrayToKeyValue -FN:6,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,arrayToKeyValue -FNDA:0,(anonymous_2) -DA:1,0 -DA:5,0 -DA:7,0 -DA:8,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/array/getUniqueArray.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/array/groupBy.ts -FN:2,(anonymous_1) -FN:7,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:6,0 -DA:8,0 -DA:9,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/bioEntity/getTypeBySBOTerm.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:7,0 -DA:9,0 -DA:11,0 -DA:13,0 -DA:15,0 -DA:20,0 -DA:22,0 -DA:24,0 -DA:26,0 -DA:29,0 -DA:31,0 -DA:33,0 -DA:35,0 -DA:38,0 -DA:40,0 -DA:43,0 -LF:19 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:2,0,2,0 -BRDA:2,0,3,0 -BRDA:2,0,4,0 -BRDA:2,0,5,0 -BRDA:2,0,6,0 -BRDA:2,0,7,0 -BRDA:2,0,8,0 -BRDA:2,0,9,0 -BRDA:2,0,10,0 -BRDA:2,0,11,0 -BRDA:2,0,12,0 -BRDA:2,0,13,0 -BRDA:2,0,14,0 -BRDA:2,0,15,0 -BRDA:2,0,16,0 -BRDA:2,0,17,0 -BRDA:2,0,18,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRDA:33,1,2,0 -BRDA:33,1,3,0 -BRF:23 -BRH:0 -end_of_record -TN: -SF:src/utils/bioEntity/mapReactionToModelElement.ts -FN:3,mapReactionToModelElement -FNF:1 -FNH:0 -FNDA:0,mapReactionToModelElement -DA:3,0 -DA:4,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/canvas/getCanvas.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/canvas/getFontSizeToFit.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:9,0 -DA:10,0 -LF:4 -LH:0 -BRDA:10,0,0,0 -BRDA:10,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/context/mapInstanceContext.tsx -FN:12,(anonymous_4) -FN:15,(anonymous_5) -FN:22,(anonymous_6) -FN:29,(anonymous_7) -FN:39,(anonymous_8) -FNF:5 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -DA:1,0 -DA:3,0 -DA:10,0 -DA:15,0 -DA:22,0 -DA:26,0 -DA:28,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:38,0 -DA:39,0 -LF:12 -LH:0 -BRDA:30,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/addAlphaToHexString.ts -FN:10,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:19,0 -LF:13 -LH:0 -BRDA:10,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/convertDecimalToHex.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -LF:9 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/getHexStringColorFromRGBIntWithAlpha.ts -FN:9,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:9,0 -DA:13,0 -DA:14,0 -DA:15,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/getHexTricolorGradientColorWithAlpha.ts -FN:15,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:15,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:30,0 -DA:37,0 -DA:38,0 -DA:40,0 -LF:15 -LH:0 -BRDA:26,0,0,0 -BRDA:26,1,0,0 -BRDA:26,1,1,0 -BRDA:26,1,2,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/hexToRgb.ts -FN:2,(anonymous_3) -FN:4,(anonymous_4) -FN:15,(anonymous_5) -FNF:3 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:10,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:24,0 -LF:13 -LH:0 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRDA:20,1,0,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/hexToRgbIntAlpha.ts -FN:4,hexToRgbIntAlpha -FNF:1 -FNH:0 -FNDA:0,hexToRgbIntAlpha -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:15,0 -DA:16,0 -DA:17,0 -DA:20,0 -DA:21,0 -LF:12 -LH:0 -BRDA:7,0,0,0 -BRDA:7,1,0,0 -BRDA:7,1,1,0 -BRDA:16,2,0,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/utils/convert/rgbToHex.ts -FN:6,(anonymous_1) -FN:17,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:3,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:22,0 -LF:8 -LH:0 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRDA:7,0,2,0 -BRDA:7,0,3,0 -BRDA:7,0,4,0 -BRDA:7,0,5,0 -BRDA:7,0,6,0 -BRDA:7,0,7,0 -BRDA:7,0,8,0 -BRDA:18,1,0,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/errorReporting.ts -FN:15,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:31,0 -DA:32,0 -DA:35,0 -DA:36,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:43,0 -DA:44,0 -DA:45,0 -DA:46,0 -DA:53,0 -DA:54,0 -DA:58,0 -DA:63,0 -LF:28 -LH:0 -BRDA:20,0,0,0 -BRDA:21,1,0,0 -BRDA:21,1,1,0 -BRDA:27,2,0,0 -BRDA:31,3,0,0 -BRDA:36,4,0,0 -BRDA:41,5,0,0 -BRDA:41,5,1,0 -BRDA:44,6,0,0 -BRDA:44,7,0,0 -BRDA:44,7,1,0 -BRDA:46,8,0,0 -BRDA:47,9,0,0 -BRDA:47,9,1,0 -BRDA:47,9,2,0 -BRDA:47,9,3,0 -BRDA:47,9,4,0 -BRF:17 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/getError.ts -FN:13,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:13,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:18,0 -DA:20,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/getErrorCode.ts -FN:7,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:12,0 -DA:13,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:18,0 -DA:22,0 -DA:24,0 -DA:26,0 -LF:16 -LH:0 -BRDA:8,0,0,0 -BRDA:11,1,0,0 -BRDA:12,2,0,0 -BRDA:12,2,1,0 -BRDA:14,3,0,0 -BRDA:17,4,0,0 -BRDA:17,5,0,0 -BRDA:17,5,1,0 -BRF:8 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/getErrorName.ts -FN:4,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:11,0 -LF:8 -LH:0 -BRDA:5,0,0,0 -BRDA:8,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/getErrorStack.ts -FN:4,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -LF:10 -LH:0 -BRDA:6,0,0,0 -BRDA:6,0,1,0 -BRDA:8,1,0,0 -BRDA:8,1,1,0 -BRDA:9,2,0,0 -BRDA:12,3,0,0 -BRDA:12,3,1,0 -BRF:7 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/getErrorUrl.ts -FN:3,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:15,0 -LF:10 -LH:0 -BRDA:4,0,0,0 -BRDA:5,1,0,0 -BRDA:5,1,1,0 -BRDA:6,2,0,0 -BRDA:9,3,0,0 -BRDA:10,4,0,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/utils/error-report/sendErrorReport.ts -FN:8,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:11,0 -DA:14,0 -DA:15,0 -LF:10 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/getErrorMessage/getErrorMessage.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/getErrorMessage/getErrorMessage.test.utils.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:5,0 -DA:6,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/getErrorMessage/getErrorMessage.ts -FN:11,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:1,0 -DA:2,0 -DA:3,0 -DA:11,0 -DA:14,0 -DA:16,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:28,0 -LF:13 -LH:0 -BRDA:14,0,0,0 -BRDA:14,0,1,0 -BRDA:14,0,2,0 -BRDA:14,0,3,0 -BRDA:28,1,0,0 -BRDA:28,1,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/utils/getErrorMessage/getErrorMessage.utils.ts -FN:7,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:12,0 -DA:13,0 -LF:6 -LH:0 -BRDA:8,0,0,0 -BRDA:13,1,0,0 -BRDA:13,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/utils/getErrorMessage/index.ts +SF:src/components/[DomainName]/ExampleDomain.component.tsx FNF:0 FNH:0 -DA:1,0 -LF:1 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/initialize/useInitializeStore.ts -FN:17,(anonymous_1) -FN:22,(anonymous_2) -FN:24,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:17,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:25,0 -DA:26,0 -DA:28,0 -LF:17 -LH:0 -BRDA:22,0,0,0 -BRDA:22,0,1,0 -BRDA:25,1,0,0 -BRDA:25,2,0,0 -BRDA:25,2,1,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/utils/lerp/interpolateThreeColors.ts -FN:24,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:24,0 -DA:30,0 -DA:32,0 -DA:41,0 -DA:44,0 -LF:9 -LH:0 -BRDA:32,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/lerp/lerpRGBColor.ts -FN:13,(anonymous_1) -FN:20,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:13,0 -DA:18,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:27,0 -LF:6 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/map/getPointOffset.ts -FN:14,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:11,0 -DA:12,0 -DA:14,0 -DA:16,0 -DA:18,0 -DA:19,0 -DA:20,0 -DA:22,0 -DA:27,0 -DA:32,0 -LF:11 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/map/getUpdatedMapData.ts -FN:17,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:7,0 -DA:15,0 -DA:17,0 -DA:22,0 -DA:28,0 -DA:30,0 -LF:8 -LH:0 -BRDA:23,0,0,0 -BRDA:23,0,1,0 -BRDA:24,1,0,0 -BRDA:24,1,1,0 -BRDA:25,2,0,0 -BRDA:25,2,1,0 -BRDA:28,3,0,0 -BRDA:28,3,1,0 -BRDA:32,4,0,0 -BRDA:32,4,1,0 -BRF:10 -BRH:0 -end_of_record -TN: -SF:src/utils/map/latLngToPoint.ts -FN:16,(anonymous_1) -FN:31,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:16,0 -DA:21,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:31,0 -DA:32,0 -DA:33,0 -DA:36,0 -LF:16 -LH:0 -BRDA:19,0,0,0 -BRDA:33,1,0,0 -BRDA:33,1,1,0 -BRF:3 -BRH:0 -end_of_record -TN: -SF:src/utils/map/pointToLatLng.ts -FN:10,(anonymous_1) -FN:22,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:2,0 -DA:5,0 -DA:6,0 -DA:8,0 -DA:10,0 -DA:11,0 -DA:13,0 -DA:16,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:27,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:34,0 -LF:20 -LH:0 -BRDA:13,0,0,0 -BRDA:24,1,0,0 -BRDA:24,2,0,0 -BRDA:24,2,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/utils/map/usePointToProjection.ts -FN:14,(anonymous_1) -FN:18,(anonymous_2) -FN:21,(anonymous_3) -FN:22,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:8,0 -DA:14,0 -DA:15,0 -DA:17,0 -DA:19,0 -DA:20,0 -DA:21,0 -DA:22,0 -DA:24,0 -DA:29,0 -LF:15 -LH:0 -BRDA:24,0,0,0 -BRDA:24,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/map/useSetBounds.ts -FN:23,(anonymous_3) -FN:40,(anonymous_4) -FN:44,(anonymous_5) -FNF:3 -FNH:0 -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -DA:1,0 -DA:2,0 -DA:3,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:18,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:24,0 -DA:25,0 -DA:28,0 -DA:30,0 -DA:36,0 -DA:37,0 -DA:40,0 -DA:41,0 -DA:42,0 -DA:44,0 -DA:45,0 -DA:47,0 -LF:22 -LH:0 -BRDA:24,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/number/boundNumber.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -LF:3 -LH:0 -BRDA:2,0,0,0 -BRDA:2,0,1,0 -BRDA:3,1,0,0 -BRDA:3,1,1,0 -BRF:4 -BRH:0 -end_of_record -TN: -SF:src/utils/number/degreesToRadians.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/number/numberToInt.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:9,0 -LF:5 -LH:0 -BRDA:5,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/number/radiansToDegrees.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/number/roundToTwoDigits.ts -FN:2,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -LF:2 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/object/getPointMerged.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:3,0 -LF:1 -LH:0 -BRDA:4,0,0,0 -BRDA:4,0,1,0 -BRDA:5,1,0,0 -BRDA:5,1,1,0 -BRDA:6,2,0,0 -BRDA:6,2,1,0 -BRF:6 -BRH:0 -end_of_record -TN: -SF:src/utils/object/getTruthyObjectOrUndefined.ts -FN:3,(anonymous_1) -FN:6,(anonymous_2) -FN:9,(anonymous_3) -FN:14,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:3,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -DA:14,0 -DA:15,0 -DA:17,0 -LF:8 -LH:0 -BRDA:7,0,0,0 -BRDA:7,0,1,0 -BRDA:7,0,2,0 -BRDA:10,1,0,0 -BRDA:10,1,1,0 -BRDA:10,2,0,0 -BRDA:10,2,1,0 -BRDA:17,3,0,0 -BRDA:17,3,1,0 -BRF:9 -BRH:0 -end_of_record -TN: -SF:src/utils/overlays/getOverlayReactionCoords.ts -FN:4,(anonymous_1) -FN:5,(anonymous_2) -FNF:2 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -DA:4,0 -DA:5,0 -DA:6,0 -DA:8,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/overlays/overlaysElementsTypeGuards.ts -FN:9,(anonymous_4) -FN:12,(anonymous_5) -FN:16,(anonymous_6) -FNF:3 -FNH:0 -FNDA:0,(anonymous_4) -FNDA:0,(anonymous_5) -FNDA:0,(anonymous_6) -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:17,0 -LF:6 -LH:0 -BRDA:13,0,0,0 -BRDA:13,0,1,0 -BRDA:17,1,0,0 -BRDA:17,1,1,0 -BRDA:17,1,2,0 -BRF:5 -BRH:0 -end_of_record -TN: -SF:src/utils/plugins/getPluginHashWithoutPrefix.ts -FN:5,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:2,0 -DA:3,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:12,0 -LF:8 -LH:0 -BRDA:6,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/plugins/isPluginHashWithPrefix.ts -FN:3,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:3,0 -DA:4,0 -LF:3 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/point/isPointValid.ts -FN:4,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:4,0 -DA:5,0 -DA:6,0 -LF:4 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/promise/runInSequence.ts -FN:5,(anonymous_1) -FN:19,(anonymous_2) -FN:27,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:3,0 -DA:5,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:13,0 -DA:16,0 -DA:19,0 -DA:23,0 -DA:24,0 -DA:26,0 -DA:27,0 -DA:28,0 -DA:31,0 -LF:14 -LH:0 -BRDA:21,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/query-manager/useReduxBusQueryManager.ts -FN:7,(anonymous_1) -FN:13,(anonymous_2) -FN:30,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:7,0 -DA:8,0 -DA:9,0 -DA:10,0 -DA:12,0 -DA:15,0 -DA:30,0 -DA:31,0 -DA:32,0 -DA:35,0 -LF:15 -LH:0 -BRDA:31,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/reaction/ReactionTypeEnum.ts -FN:1,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:1,0 -DA:30,0 +DA:1,1 +DA:5,1 LF:2 -LH:0 -BRDA:1,0,0,0 -BRDA:1,0,1,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/testing/actWait.ts -FN:6,(anonymous_1) -FN:8,(anonymous_2) -FN:9,(anonymous_3) -FNF:3 -FNH:0 -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_2) -FNDA:0,(anonymous_3) -DA:2,0 -DA:4,0 -DA:6,0 -DA:7,0 -DA:9,0 -DA:10,0 -LF:6 -LH:0 -BRDA:6,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/testing/getReduxStoreActionsListener.tsx -FN:18,(anonymous_2) -FNF:1 -FNH:0 -FNDA:0,(anonymous_2) -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:18,0 -DA:21,0 -DA:29,0 -LF:7 -LH:0 -BRDA:19,0,0,0 -BRF:1 -BRH:0 -end_of_record -TN: -SF:src/utils/testing/getReduxWrapperUsingSliceReducer.tsx -FN:20,(anonymous_1) -FNF:1 -FNH:0 -FNDA:0,(anonymous_1) -DA:2,0 -DA:6,0 -DA:20,0 -DA:24,0 -DA:30,0 -LF:5 -LH:0 -BRF:0 -BRH:0 -end_of_record -TN: -SF:src/utils/testing/getReduxWrapperWithStore.tsx -FN:25,(anonymous_0) -FN:27,(anonymous_1) -FN:40,(anonymous_3) -FN:47,(anonymous_4) -FNF:4 -FNH:0 -FNDA:0,(anonymous_0) -FNDA:0,(anonymous_1) -FNDA:0,(anonymous_3) -FNDA:0,(anonymous_4) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:25,0 -DA:27,0 -DA:40,0 -DA:44,0 -DA:47,0 -DA:58,0 -LF:11 -LH:0 -BRDA:41,0,0,0 -BRDA:42,1,0,0 -BRF:2 -BRH:0 -end_of_record -TN: -SF:src/utils/websocket-entity-updates/webSocketEntityUpdates.constants.ts -FNF:0 -FNH:0 -DA:1,0 -DA:7,0 -DA:11,0 -LF:3 -LH:0 +LH:2 BRF:0 BRH:0 end_of_record -TN: -SF:src/utils/websocket-entity-updates/webSocketEntityUpdatesProvider.tsx -FN:25,(anonymous_6) -FN:34,(anonymous_7) -FN:37,(anonymous_8) -FN:53,(anonymous_9) -FN:66,(anonymous_10) -FN:77,(anonymous_11) -FN:88,(anonymous_12) -FNF:7 -FNH:0 -FNDA:0,(anonymous_6) -FNDA:0,(anonymous_7) -FNDA:0,(anonymous_8) -FNDA:0,(anonymous_9) -FNDA:0,(anonymous_10) -FNDA:0,(anonymous_11) -FNDA:0,(anonymous_12) -DA:1,0 -DA:2,0 -DA:3,0 -DA:4,0 -DA:5,0 -DA:6,0 -DA:7,0 -DA:19,0 -DA:22,0 -DA:23,0 -DA:25,0 -DA:28,0 -DA:29,0 -DA:30,0 -DA:31,0 -DA:34,0 -DA:38,0 -DA:39,0 -DA:40,0 -DA:45,0 -DA:48,0 -DA:53,0 -DA:54,0 -DA:55,0 -DA:57,0 -DA:58,0 -DA:61,0 -DA:62,0 -DA:66,0 -DA:67,0 -DA:68,0 -DA:71,0 -DA:72,0 -DA:76,0 -DA:77,0 -DA:88,0 -DA:89,0 -DA:90,0 -DA:91,0 -DA:95,0 -LF:40 -LH:0 -BRDA:40,0,0,0 -BRDA:41,1,0,0 -BRDA:41,1,1,0 -BRDA:41,1,2,0 -BRDA:54,2,0,0 -BRDA:57,3,0,0 -BRDA:57,3,1,0 -BRDA:57,4,0,0 -BRDA:57,4,1,0 -BRDA:61,5,0,0 -BRDA:67,6,0,0 -BRDA:71,7,0,0 -BRDA:71,8,0,0 -BRDA:71,8,1,0 -BRDA:90,9,0,0 -BRF:15 -BRH:0 -end_of_record -- GitLab From 14347325fa5142a3abc721ad72a53ee04948d492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mi=C5=82osz=20Grocholewski?= <m.grocholewski@atcomp.pl> Date: Mon, 24 Feb 2025 08:41:44 +0100 Subject: [PATCH 15/15] feat(layer-ovals): add oval deletion/editing functionality --- .../EditOverlayGroupModal.component.test.tsx | 35 ++---- .../hooks/useEditOverlayGroup.test.ts | 25 +---- .../EditOverlayModal.component.test.tsx | 35 ++---- .../hooks/useEditOverlay.test.ts | 25 +---- ...eObjectEditFactoryModal.component.test.tsx | 5 +- ...ImageObjectFactoryModal.component.test.tsx | 5 +- ...LayerImageObjectFactoryModal.component.tsx | 14 +-- .../LayerOvalEditFactoryModal.component.tsx | 105 ++++++++++++++++++ .../LayerOvalFactoryModal.component.test.tsx | 5 +- .../LayerOvalFactoryModal.component.tsx | 8 +- .../LayerRectFactoryModal.component.test.tsx | 5 +- .../LayerRectFactoryModal.component.tsx | 8 +- .../LayerTextFactoryModal.component.test.tsx | 5 +- .../LayerTextFactoryModal.component.tsx | 8 +- .../FunctionalArea/Modal/Modal.component.tsx | 6 + .../ModalLayout/ModalLayout.component.tsx | 12 +- .../LayerDrawerRectItem.component.tsx | 6 +- .../LayersDrawer/LayersDrawer.component.tsx | 3 +- .../LayersDrawerObjectActions.component.tsx | 15 ++- .../LayersDrawerObjectsList.component.tsx | 102 +++++++++++++++-- .../LayersDrawerOvalItem.component.tsx | 61 +++++++++- .../useOlMapAdditionalLayers.ts | 3 +- .../Map/MapViewer/utils/shapes/layer/Layer.ts | 4 +- .../utils/shapes/layer/elements/LayerOval.ts | 67 +++++++++-- .../interaction/getTransformInteraction.ts | 40 ++++++- .../utils/shapes/layer/utils/updateElement.ts | 4 +- .../utils/websocket/processLayerOval.ts | 19 +++- src/redux/apiPath.ts | 4 + src/redux/layers/layers.reducers.ts | 28 +++++ src/redux/layers/layers.slice.ts | 6 + src/redux/layers/layers.thunks.ts | 50 +++++++++ .../mapEditTools/mapEditTools.reducers.ts | 4 +- src/redux/mapEditTools/mapEditTools.types.ts | 4 +- src/redux/modal/modal.constants.ts | 5 +- src/redux/modal/modal.mock.ts | 5 +- src/redux/modal/modal.reducers.ts | 14 ++- src/redux/modal/modal.selector.ts | 19 +--- src/redux/modal/modal.slice.ts | 3 + src/redux/modal/modal.types.ts | 5 +- src/types/modal.ts | 3 +- 40 files changed, 568 insertions(+), 212 deletions(-) create mode 100644 src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalEditFactoryModal.component.tsx diff --git a/src/components/FunctionalArea/Modal/EditOverlayGroupModal/EditOverlayGroupModal.component.test.tsx b/src/components/FunctionalArea/Modal/EditOverlayGroupModal/EditOverlayGroupModal.component.test.tsx index 1f019a39..c96ff7ee 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayGroupModal/EditOverlayGroupModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/EditOverlayGroupModal/EditOverlayGroupModal.component.test.tsx @@ -54,10 +54,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -78,10 +75,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -115,10 +109,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -164,10 +155,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -207,10 +195,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -256,10 +241,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -291,10 +273,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/useEditOverlayGroup.test.ts b/src/components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/useEditOverlayGroup.test.ts index ba24d62a..8f627f2c 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/useEditOverlayGroup.test.ts +++ b/src/components/FunctionalArea/Modal/EditOverlayGroupModal/hooks/useEditOverlayGroup.test.ts @@ -29,10 +29,7 @@ describe('useEditOverlayGroup', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -72,10 +69,7 @@ describe('useEditOverlayGroup', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -118,10 +112,7 @@ describe('useEditOverlayGroup', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -160,10 +151,7 @@ describe('useEditOverlayGroup', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -203,10 +191,7 @@ describe('useEditOverlayGroup', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx b/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx index 496e23d5..484ce41b 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/EditOverlayModal/EditOverlayModal.component.test.tsx @@ -56,10 +56,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -80,10 +77,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -117,10 +111,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -159,10 +150,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -202,10 +190,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -251,10 +236,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, overlays: OVERLAYS_INITIAL_STATE_MOCK, }); @@ -284,10 +266,7 @@ describe('EditOverlayModal - component', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts b/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts index d0c802fd..a0f6504a 100644 --- a/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts +++ b/src/components/FunctionalArea/Modal/EditOverlayModal/hooks/useEditOverlay.test.ts @@ -28,10 +28,7 @@ describe('useEditOverlay', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -71,10 +68,7 @@ describe('useEditOverlay', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -117,10 +111,7 @@ describe('useEditOverlay', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -160,10 +151,7 @@ describe('useEditOverlay', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); @@ -203,10 +191,7 @@ describe('useEditOverlay', () => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }, }); diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx index d4c3ae43..7bfed87c 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectEditFactoryModal.component.test.tsx @@ -58,15 +58,12 @@ const renderComponent = ( overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: { + layerObjectFactoryState: { x: 1, y: 1, width: 1, height: 1, }, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx index 0fef5ff5..b14ea618 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.test.tsx @@ -52,15 +52,12 @@ const renderComponent = (): { store: StoreType } => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: { + layerObjectFactoryState: { x: 1, y: 1, width: 1, height: 1, }, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx index ec495659..040d2984 100644 --- a/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerImageObjectModal/LayerImageObjectFactoryModal.component.tsx @@ -1,7 +1,7 @@ /* eslint-disable no-magic-numbers */ import React, { useState } from 'react'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; -import { layerImageObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; +import { layerObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { @@ -23,7 +23,7 @@ import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.s export const LayerImageObjectFactoryModal: React.FC = () => { const currentModelId = useAppSelector(currentModelIdSelector); const drawLayer = useAppSelector(layersDrawLayerSelector); - const layerImageObjectFactoryState = useAppSelector(layerImageObjectFactoryStateSelector); + const layerObjectFactoryState = useAppSelector(layerObjectFactoryStateSelector); const dispatch = useAppDispatch(); const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const { mapInstance } = useMapInstance(); @@ -33,7 +33,7 @@ export const LayerImageObjectFactoryModal: React.FC = () => { const [isSending, setIsSending] = useState<boolean>(false); const handleSubmit = async (): Promise<void> => { - if (!layerImageObjectFactoryState || !drawLayer) { + if (!layerObjectFactoryState || !drawLayer) { return; } setIsSending(true); @@ -50,11 +50,11 @@ export const LayerImageObjectFactoryModal: React.FC = () => { addLayerImageObject({ modelId: currentModelId, layerId: drawLayer, - x: layerImageObjectFactoryState.x, - y: layerImageObjectFactoryState.y, + x: layerObjectFactoryState.x, + y: layerObjectFactoryState.y, z: maxZIndex + 1, - width: layerImageObjectFactoryState.width, - height: layerImageObjectFactoryState.height, + width: layerObjectFactoryState.width, + height: layerObjectFactoryState.height, glyph: glyphId, }), ).unwrap(); diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalEditFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalEditFactoryModal.component.tsx new file mode 100644 index 00000000..bc360609 --- /dev/null +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalEditFactoryModal.component.tsx @@ -0,0 +1,105 @@ +/* eslint-disable no-magic-numbers */ +import React, { useState } from 'react'; +import './LayerOvalFactoryModal.styles.css'; +import { LoadingIndicator } from '@/shared/LoadingIndicator'; +import { Button } from '@/shared/Button'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { currentModelIdSelector } from '@/redux/models/models.selectors'; +import { Color } from '@/types/models'; +import { showToast } from '@/utils/showToast'; +import { closeModal } from '@/redux/modal/modal.slice'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { SerializedError } from '@reduxjs/toolkit'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { useMapInstance } from '@/utils/context/mapInstanceContext'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; +import { LayerOvalFactoryForm } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactory.types'; +import { LayerOvalForm } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalForm.component'; +import { updateLayerOval } from '@/redux/layers/layers.thunks'; +import { layerUpdateOval } from '@/redux/layers/layers.slice'; + +export const LayerOvalEditFactoryModal: React.FC = () => { + const layerObject = useAppSelector(mapEditToolsLayerObjectSelector); + const currentModelId = useAppSelector(currentModelIdSelector); + const dispatch = useAppDispatch(); + const { mapInstance } = useMapInstance(); + + if (!layerObject || !('color' in layerObject && 'borderColor' in layerObject)) { + throw new Error('Invalid layer oval object'); + } + + const [isSending, setIsSending] = useState<boolean>(false); + const [data, setData] = useState<LayerOvalFactoryForm>({ + color: layerObject.color, + }); + + const handleSubmit = async (): Promise<void> => { + if (!layerObject) { + return; + } + try { + const layerOval = await dispatch( + updateLayerOval({ + modelId: currentModelId, + layerId: layerObject.layer, + id: layerObject.id, + x: layerObject.x, + y: layerObject.y, + z: layerObject.z, + width: layerObject.width, + height: layerObject.height, + color: data.color, + }), + ).unwrap(); + + if (!layerOval) { + showToast({ + type: 'error', + message: 'An error occurred while editing the oval.', + }); + return; + } + + dispatch(layerUpdateOval({ modelId: currentModelId, layerId: layerOval.layer, layerOval })); + dispatch(mapEditToolsSetLayerObject(layerOval)); + updateElement(mapInstance, layerOval.layer, layerOval); + showToast({ + type: 'success', + message: 'The oval has been successfully updated.', + }); + dispatch(closeModal()); + } catch (error) { + const typedError = error as SerializedError; + showToast({ + type: 'error', + message: typedError.message || 'An error occurred while editing the oval.', + }); + } finally { + setIsSending(false); + } + }; + + const changeValues = (value: string | number | Color, key: string): void => { + setData(prevData => ({ ...prevData, [key]: value })); + }; + + return ( + <div className="relative flex w-[300px] flex-col gap-4 rounded-b-lg border border-t-[#E1E0E6] bg-white p-[24px]"> + {isSending && ( + <div className="c-layer-oval-factory-modal-loader"> + <LoadingIndicator width={44} height={44} /> + </div> + )} + <LayerOvalForm onChange={changeValues} data={data} /> + <hr /> + <Button + type="button" + onClick={handleSubmit} + className="justify-center self-end justify-self-end text-base font-medium" + > + Submit + </Button> + </div> + ); +}; diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx index 3e3d0960..3fdb2ca2 100644 --- a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.test.tsx @@ -52,10 +52,7 @@ const renderComponent = (): { store: StoreType } => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: { + layerObjectFactoryState: { x: 1, y: 1, width: 1, diff --git a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx index 9031ee4d..fb281163 100644 --- a/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component.tsx @@ -13,7 +13,7 @@ import { } from '@/redux/layers/layers.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { Color } from '@/types/models'; -import { layerOvalFactoryStateSelector } from '@/redux/modal/modal.selector'; +import { layerObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { addLayerOval } from '@/redux/layers/layers.thunks'; import { showToast } from '@/utils/showToast'; import { layerAddOval } from '@/redux/layers/layers.slice'; @@ -27,7 +27,7 @@ import { useMapInstance } from '@/utils/context/mapInstanceContext'; export const LayerOvalFactoryModal: React.FC = () => { const drawLayer = useAppSelector(layersDrawLayerSelector); const currentModelId = useAppSelector(currentModelIdSelector); - const layerOvalFactoryState = useAppSelector(layerOvalFactoryStateSelector); + const layerObjectFactoryState = useAppSelector(layerObjectFactoryStateSelector); const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const dispatch = useAppDispatch(); const { mapInstance } = useMapInstance(); @@ -38,7 +38,7 @@ export const LayerOvalFactoryModal: React.FC = () => { }); const handleSubmit = async (): Promise<void> => { - if (!layerOvalFactoryState || !drawLayer) { + if (!layerObjectFactoryState || !drawLayer) { return; } try { @@ -46,7 +46,7 @@ export const LayerOvalFactoryModal: React.FC = () => { addLayerOval({ modelId: currentModelId, layerId: drawLayer, - boundingBox: layerOvalFactoryState, + boundingBox: layerObjectFactoryState, ovalData: data, z: maxZIndex + 1, }), diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx index 770755d8..2e14dc50 100644 --- a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.test.tsx @@ -52,15 +52,12 @@ const renderComponent = (): { store: StoreType } => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerRectFactoryState: { + layerObjectFactoryState: { x: 1, y: 1, width: 1, height: 1, }, - layerTextFactoryState: undefined, - layerOvalFactoryState: undefined, }, models: { ...MODELS_DATA_MOCK_WITH_MAIN_MAP, diff --git a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx index cbdfb230..df43b969 100644 --- a/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component.tsx @@ -13,7 +13,7 @@ import { } from '@/redux/layers/layers.selectors'; import { currentModelIdSelector } from '@/redux/models/models.selectors'; import { Color } from '@/types/models'; -import { layerRectFactoryStateSelector } from '@/redux/modal/modal.selector'; +import { layerObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { addLayerRect } from '@/redux/layers/layers.thunks'; import { showToast } from '@/utils/showToast'; import { layerAddRect } from '@/redux/layers/layers.slice'; @@ -27,7 +27,7 @@ import { useMapInstance } from '@/utils/context/mapInstanceContext'; export const LayerRectFactoryModal: React.FC = () => { const drawLayer = useAppSelector(layersDrawLayerSelector); const currentModelId = useAppSelector(currentModelIdSelector); - const layerRectFactoryState = useAppSelector(layerRectFactoryStateSelector); + const layerObjectFactoryState = useAppSelector(layerObjectFactoryStateSelector); const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const dispatch = useAppDispatch(); const { mapInstance } = useMapInstance(); @@ -39,7 +39,7 @@ export const LayerRectFactoryModal: React.FC = () => { }); const handleSubmit = async (): Promise<void> => { - if (!layerRectFactoryState || !drawLayer) { + if (!layerObjectFactoryState || !drawLayer) { return; } try { @@ -47,7 +47,7 @@ export const LayerRectFactoryModal: React.FC = () => { addLayerRect({ modelId: currentModelId, layerId: drawLayer, - boundingBox: layerRectFactoryState, + boundingBox: layerObjectFactoryState, rectData: data, z: maxZIndex + 1, }), diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx index 0cea2734..a88c47d4 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.test.tsx @@ -57,10 +57,7 @@ const renderComponent = (): { store: StoreType } => { overviewImagesState: {}, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, - layerTextFactoryState: { + layerObjectFactoryState: { x: 1, y: 1, width: 1, diff --git a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx index b1446156..d6112daf 100644 --- a/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx +++ b/src/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactoryModal.component.tsx @@ -12,7 +12,7 @@ import { import { LayerTextFactoryForm } from '@/components/FunctionalArea/Modal/LayerTextFactoryModal/LayerTextFactory.types'; import { Color } from '@/types/models'; import { useAppSelector } from '@/redux/hooks/useAppSelector'; -import { layerTextFactoryStateSelector } from '@/redux/modal/modal.selector'; +import { layerObjectFactoryStateSelector } from '@/redux/modal/modal.selector'; import { layersDrawLayerSelector, maxObjectZIndexForLayerSelector, @@ -32,7 +32,7 @@ import { mapEditToolsSetActiveAction } from '@/redux/mapEditTools/mapEditTools.s export const LayerTextFactoryModal: React.FC = () => { const drawLayer = useAppSelector(layersDrawLayerSelector); const currentModelId = useAppSelector(currentModelIdSelector); - const layerTextFactoryState = useAppSelector(layerTextFactoryStateSelector); + const layerObjectFactoryState = useAppSelector(layerObjectFactoryStateSelector); const dispatch = useAppDispatch(); const maxZIndex = useAppSelector(state => maxObjectZIndexForLayerSelector(state, drawLayer)); const { mapInstance } = useMapInstance(); @@ -48,7 +48,7 @@ export const LayerTextFactoryModal: React.FC = () => { }); const handleSubmit = async (): Promise<void> => { - if (!layerTextFactoryState || !drawLayer) { + if (!layerObjectFactoryState || !drawLayer) { return; } try { @@ -56,7 +56,7 @@ export const LayerTextFactoryModal: React.FC = () => { addLayerText({ modelId: currentModelId, layerId: drawLayer, - boundingBox: layerTextFactoryState, + boundingBox: layerObjectFactoryState, textData: data, z: maxZIndex + 1, }), diff --git a/src/components/FunctionalArea/Modal/Modal.component.tsx b/src/components/FunctionalArea/Modal/Modal.component.tsx index 47b95467..38a01414 100644 --- a/src/components/FunctionalArea/Modal/Modal.component.tsx +++ b/src/components/FunctionalArea/Modal/Modal.component.tsx @@ -15,6 +15,7 @@ import { LayerTextEditFactoryModal } from '@/components/FunctionalArea/Modal/Lay import { LayerRectFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectFactoryModal.component'; import { LayerRectEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerRectFactoryModal/LayerRectEditFactoryModal.component'; import { LayerOvalFactoryModal } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalFactoryModal.component'; +import { LayerOvalEditFactoryModal } from '@/components/FunctionalArea/Modal/LayerOvalFactoryModal/LayerOvalEditFactoryModal.component'; import { EditOverlayModal } from './EditOverlayModal'; import { LoginModal } from './LoginModal'; import { ErrorReportModal } from './ErrorReportModal'; @@ -135,6 +136,11 @@ export const Modal = (): React.ReactNode => { <LayerOvalFactoryModal /> </ModalLayout> )} + {isOpen && modalName === 'layer-oval-edit-factory' && ( + <ModalLayout> + <LayerOvalEditFactoryModal /> + </ModalLayout> + )} </> ); }; diff --git a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx index aa3c1465..41ceda61 100644 --- a/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx +++ b/src/components/FunctionalArea/Modal/ModalLayout/ModalLayout.component.tsx @@ -34,7 +34,8 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { modalName === 'add-comment' && 'h-auto w-[400px]', modalName === 'error-report' && 'h-auto w-[800px]', modalName === 'layer-factory' && 'h-auto w-[400px]', - modalName === 'layer-oval-factory' && 'h-auto w-[300px] overflow-visible', + ['layer-oval-factory', 'layer-oval-edit-factory'].includes(modalName) && + 'h-auto w-[300px] overflow-visible', ['layer-rect-factory', 'layer-rect-edit-factory'].includes(modalName) && 'h-auto w-[400px] overflow-visible', ['layer-text-factory', 'layer-text-edit-factory'].includes(modalName) && @@ -47,9 +48,12 @@ export const ModalLayout = ({ children }: ModalLayoutProps): JSX.Element => { <div className={twMerge( 'flex items-center justify-between bg-white p-[24px] text-xl', - ['layer-rect-factory', 'layer-rect-edit-factory', 'layer-oval-factory'].includes( - modalName, - ) && 'rounded-t-lg', + [ + 'layer-rect-factory', + 'layer-rect-edit-factory', + 'layer-oval-factory', + 'layer-oval-edit-factory', + ].includes(modalName) && 'rounded-t-lg', )} > {(modalName === 'error-report' || modalName === 'access-denied') && ( diff --git a/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx index c36031e5..86af53e2 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayerDrawerRectItem.component.tsx @@ -30,12 +30,12 @@ export const LayersDrawerRectItem = ({ isLayerActive, }: LayersDrawerRectItemProps): JSX.Element | null => { const dispatch = useAppDispatch(); - const activeLayerImage = useAppSelector(mapEditToolsLayerObjectSelector); + const activeLayerObject = useAppSelector(mapEditToolsLayerObjectSelector); const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); const showActions = useMemo(() => { - return activeLayerImage?.id === layerRect.id; - }, [activeLayerImage?.id, layerRect.id]); + return activeLayerObject?.id === layerRect.id; + }, [activeLayerObject?.id, layerRect.id]); const canSelectItem = useMemo(() => { return isLayerVisible && isLayerActive && hasPrivilegeToWriteProject; diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx index 966ce7ed..6ae1ccf1 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawer.component.tsx @@ -43,7 +43,8 @@ export const LayersDrawer = (): JSX.Element => { const layerObjectElement = document.getElementById(`layer-image-item-${mapEditToolsLayerObject.id}`) || document.getElementById(`layer-text-item-${mapEditToolsLayerObject.id}`) || - document.getElementById(`layer-rect-item-${mapEditToolsLayerObject.id}`); + document.getElementById(`layer-rect-item-${mapEditToolsLayerObject.id}`) || + document.getElementById(`layer-oval-item-${mapEditToolsLayerObject.id}`); if (!layerObjectElement) { return; } diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx index a97189ea..83c0441f 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component.tsx @@ -1,4 +1,4 @@ -import { JSX } from 'react'; +import { JSX, useEffect } from 'react'; import { IconButton } from '@/shared/IconButton'; interface LayersDrawerObjectActionsProps { @@ -16,6 +16,19 @@ export const LayersDrawerObjectActions = ({ centerObject, editObject, }: LayersDrawerObjectActionsProps): JSX.Element | null => { + useEffect(() => { + const handleKeyDown = (event: KeyboardEvent): void => { + if (event.key === 'Delete') { + removeObject(); + } + }; + + window.addEventListener('keydown', handleKeyDown); + return () => { + window.removeEventListener('keydown', handleKeyDown); + }; + }, [removeObject]); + return ( <div className="flex shrink-0 gap-2"> <IconButton diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx index 8d96d72f..c5386ec4 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerObjectsList.component.tsx @@ -11,24 +11,28 @@ import { LayersDrawerTextItem } from '@/components/Map/Drawer/LayersDrawer/Layer import QuestionModal from '@/components/FunctionalArea/Modal/QuestionModal/QustionModal.component'; import { removeLayerImage, + removeLayerOval, removeLayerRect, removeLayerText, updateLayerImageObject, + updateLayerOval, updateLayerRect, updateLayerText, } from '@/redux/layers/layers.thunks'; import { layerDeleteImage, + layerDeleteOval, layerDeleteRect, layerDeleteText, layerUpdateImage, + layerUpdateOval, layerUpdateRect, layerUpdateText, } from '@/redux/layers/layers.slice'; import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer'; import { showToast } from '@/utils/showToast'; import { SerializedError } from '@reduxjs/toolkit'; -import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import { LayerImage, LayerOval, LayerRect, LayerText } from '@/types/models'; import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; import { useMapInstance } from '@/utils/context/mapInstanceContext'; import { mapModelIdSelector } from '@/redux/map/map.selectors'; @@ -40,6 +44,7 @@ import { usePointToProjection } from '@/utils/map/usePointToProjection'; import { Coordinate } from 'ol/coordinate'; import { openLayerImageObjectEditFactoryModal, + openLayerOvalEditFactoryModal, openLayerRectEditFactoryModal, openLayerTextEditFactoryModal, } from '@/redux/modal/modal.slice'; @@ -68,6 +73,11 @@ const removeObjectConfig = { successMessage: 'The layer rectangle has been successfully removed.', errorMessage: 'An error occurred while removing the layer rectangle.', }, + oval: { + question: 'Are you sure you want to remove the oval?', + successMessage: 'The layer oval has been successfully removed.', + errorMessage: 'An error occurred while removing the layer oval.', + }, }; export const LayersDrawerObjectsList = ({ @@ -80,25 +90,27 @@ export const LayersDrawerObjectsList = ({ const minZIndex = useAppSelector(state => minObjectZIndexForLayerSelector(state, layerId)); const layer = useAppSelector(state => layerByIdSelector(state, layerId)); const mapEditToolsLayerImageObject = useAppSelector(mapEditToolsLayerObjectSelector); - const [removeModalState, setRemoveModalState] = useState<undefined | 'text' | 'image' | 'rect'>( - undefined, - ); + const [removeModalState, setRemoveModalState] = useState< + undefined | 'text' | 'image' | 'rect' | 'oval' + >(undefined); const [layerObjectToRemove, setLayerObjectToRemove] = useState< - LayerImage | LayerText | LayerRect | null + LayerImage | LayerText | LayerRect | LayerOval | null >(null); const dispatch = useAppDispatch(); const setBounds = useSetBounds(); const pointToProjection = usePointToProjection(); const { mapInstance } = useMapInstance(); - const removeObject = (layerObject: LayerImage | LayerText | LayerRect): void => { + const removeObject = (layerObject: LayerImage | LayerText | LayerRect | LayerOval): void => { setLayerObjectToRemove(layerObject); if ('glyph' in layerObject) { setRemoveModalState('image'); } else if ('notes' in layerObject) { setRemoveModalState('text'); - } else { + } else if ('fillColor' in layerObject && 'borderColor' in layerObject) { setRemoveModalState('rect'); + } else { + setRemoveModalState('oval'); } }; @@ -142,7 +154,7 @@ export const LayersDrawerObjectsList = ({ imageId: layerObjectToRemove.id, }), ); - } else { + } else if (removeModalState === 'rect') { await dispatch( removeLayerRect({ modelId: currentModelId, @@ -157,6 +169,21 @@ export const LayersDrawerObjectsList = ({ rectId: layerObjectToRemove.id, }), ); + } else { + await dispatch( + removeLayerOval({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + ovalId: layerObjectToRemove.id, + }), + ).unwrap(); + dispatch( + layerDeleteOval({ + modelId: currentModelId, + layerId: layerObjectToRemove.layer, + ovalId: layerObjectToRemove.id, + }), + ); } removeElementFromLayer({ mapInstance, @@ -291,7 +318,48 @@ export const LayersDrawerObjectsList = ({ await updateRectZIndex({ zIndex: minZIndex - 1, layerRect }); }; - const centerObject = (layerObject: LayerImage | LayerText | LayerRect): void => { + const updateOvalZIndex = async ({ + zIndex, + layerOval, + }: { + zIndex: number; + layerOval: LayerOval; + }): Promise<void> => { + const newLayerOval = await dispatch( + updateLayerOval({ + modelId: currentModelId, + layerId: layerOval.layer, + id: layerOval.id, + x: layerOval.x, + y: layerOval.y, + z: zIndex, + width: layerOval.width, + height: layerOval.height, + color: layerOval.color, + }), + ).unwrap(); + if (newLayerOval) { + dispatch( + layerUpdateOval({ + modelId: currentModelId, + layerId: newLayerOval.layer, + layerOval: newLayerOval, + }), + ); + dispatch(mapEditToolsSetLayerObject(newLayerOval)); + updateElement(mapInstance, newLayerOval.layer, newLayerOval); + } + }; + + const moveOvalToFront = async (layerOval: LayerOval): Promise<void> => { + await updateOvalZIndex({ zIndex: maxZIndex + 1, layerOval }); + }; + + const moveOvalToBack = async (layerOval: LayerOval): Promise<void> => { + await updateOvalZIndex({ zIndex: minZIndex - 1, layerOval }); + }; + + const centerObject = (layerObject: LayerImage | LayerText | LayerRect | LayerOval): void => { if (mapEditToolsLayerImageObject && mapEditToolsLayerImageObject.id === layerObject.id) { const point1 = pointToProjection({ x: layerObject.x, y: layerObject.y }); const point2 = pointToProjection({ @@ -314,6 +382,10 @@ export const LayersDrawerObjectsList = ({ dispatch(openLayerRectEditFactoryModal()); }; + const editOval = (): void => { + dispatch(openLayerOvalEditFactoryModal()); + }; + if (!layer) { return null; } @@ -370,7 +442,17 @@ export const LayersDrawerObjectsList = ({ /> ))} {Object.values(layer.ovals).map(layerOval => ( - <LayersDrawerOvalItem layerOval={layerOval} key={layerOval.id} /> + <LayersDrawerOvalItem + layerOval={layerOval} + key={layerOval.id} + moveToFront={() => moveOvalToFront(layerOval)} + moveToBack={() => moveOvalToBack(layerOval)} + removeObject={() => removeObject(layerOval)} + centerObject={() => centerObject(layerOval)} + editObject={() => editOval()} + isLayerVisible={isLayerVisible} + isLayerActive={isLayerActive} + /> ))} </div> ); diff --git a/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx b/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx index 5a4176fa..a1f2e368 100644 --- a/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx +++ b/src/components/Map/Drawer/LayersDrawer/LayersDrawerOvalItem.component.tsx @@ -1,23 +1,80 @@ -import React, { JSX } from 'react'; +import React, { JSX, useMemo } from 'react'; import { LayerOval } from '@/types/models'; import { Icon } from '@/shared/Icon'; +import { useAppDispatch } from '@/redux/hooks/useAppDispatch'; +import { useAppSelector } from '@/redux/hooks/useAppSelector'; +import { mapEditToolsLayerObjectSelector } from '@/redux/mapEditTools/mapEditTools.selectors'; +import { hasPrivilegeToWriteProjectSelector } from '@/redux/user/user.selectors'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import { LayersDrawerObjectActions } from '@/components/Map/Drawer/LayersDrawer/LayersDrawerObjectActions.component'; interface LayersDrawerOvalItemProps { layerOval: LayerOval; + moveToFront: () => void; + moveToBack: () => void; + removeObject: () => void; + centerObject: () => void; + editObject: () => void; + isLayerVisible: boolean; + isLayerActive: boolean; } export const LayersDrawerOvalItem = ({ layerOval, + moveToFront, + moveToBack, + removeObject, + centerObject, + editObject, + isLayerVisible, + isLayerActive, }: LayersDrawerOvalItemProps): JSX.Element | null => { + const dispatch = useAppDispatch(); + const activeLayerObject = useAppSelector(mapEditToolsLayerObjectSelector); + const hasPrivilegeToWriteProject = useAppSelector(hasPrivilegeToWriteProjectSelector); + + const showActions = useMemo(() => { + return activeLayerObject?.id === layerOval.id; + }, [activeLayerObject?.id, layerOval.id]); + + const canSelectItem = useMemo(() => { + return isLayerVisible && isLayerActive && hasPrivilegeToWriteProject; + }, [isLayerVisible, isLayerActive, hasPrivilegeToWriteProject]); + + const selectItem = useMemo(() => { + return (): void => { + if (canSelectItem) { + dispatch(mapEditToolsSetLayerObject(layerOval)); + } + }; + }, [canSelectItem, dispatch, layerOval]); + + const handleKeyPress = (): void => {}; + return ( <div className="flex min-h-[24px] items-center justify-between gap-2" id={`layer-oval-item-${layerOval.id}`} > - <div className="flex gap-2"> + <div + className={`flex gap-2 ${canSelectItem ? 'cursor-pointer' : 'cursor-default'}`} + onClick={selectItem} + tabIndex={0} + onKeyDown={handleKeyPress} + role="button" + > <Icon name="oval" className="shrink-0" /> <span className="truncate">oval - {layerOval.id}</span> </div> + {showActions && ( + <LayersDrawerObjectActions + moveToFront={moveToFront} + moveToBack={moveToBack} + removeObject={removeObject} + centerObject={centerObject} + editObject={editObject} + /> + )} </div> ); }; diff --git a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts index 524145b4..cd5d7072 100644 --- a/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts +++ b/src/components/Map/MapViewer/utils/config/additionalLayers/useOlMapAdditionalLayers.ts @@ -76,6 +76,7 @@ export const useOlMapAdditionalLayers = (mapInstance: MapInstance): void => { features.push(...vectorLayer.get('imagesFeatures')); features.push(...vectorLayer.get('rectsFeatures')); features.push(...vectorLayer.get('textsFeatures')); + features.push(...vectorLayer.get('ovalsFeatures')); return features; }; @@ -199,7 +200,7 @@ export const useOlMapAdditionalLayers = (mapInstance: MapInstance): void => { featuresToTransformRef.current, restrictionExtent, ); - }, [dispatch, currentModelId, mapSize, restrictionExtent]); + }, [dispatch, currentModelId, mapSize, restrictionExtent, pointToProjection]); const transformRef = useRef(transformInteraction); useEffect(() => { diff --git a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts index 64972ab5..77075f32 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/Layer.ts @@ -116,7 +116,8 @@ export default class Layer { const imagesFeatures = this.getImagesFeatures(); this.vectorSource.addFeatures(imagesFeatures); - this.vectorSource.addFeatures(this.getOvalsFeatures()); + const ovalsFeatures = this.getOvalsFeatures(); + this.vectorSource.addFeatures(ovalsFeatures); const { linesFeatures, arrowsFeatures } = this.getLinesFeatures(); this.vectorSource.addFeatures(linesFeatures); @@ -135,6 +136,7 @@ export default class Layer { this.vectorLayer.set('imagesFeatures', imagesFeatures); this.vectorLayer.set('textsFeatures', textsFeatures); this.vectorLayer.set('rectsFeatures', rectsFeatures); + this.vectorLayer.set('ovalsFeatures', ovalsFeatures); this.vectorLayer.set('drawImage', this.drawImage.bind(this)); this.vectorLayer.set('drawText', this.drawText.bind(this)); this.vectorLayer.set('drawOval', this.drawOval.bind(this)); diff --git a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts index a9ba0467..c9fe373d 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/elements/LayerOval.ts @@ -18,6 +18,12 @@ import { LAYER_ELEMENT_TYPES, TRANSPARENT_COLOR, } from '@/components/Map/MapViewer/MapViewer.constants'; +import { BoundingBox } from '@/components/Map/MapViewer/MapViewer.types'; +import { store } from '@/redux/store'; +import { updateLayerOval } from '@/redux/layers/layers.thunks'; +import { layerUpdateOval } from '@/redux/layers/layers.slice'; +import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; +import getBoundingBoxPolygon from '@/components/Map/MapViewer/utils/shapes/elements/getBoundingBoxPolygon'; export interface LayerOvalProps { elementId: number; @@ -58,7 +64,9 @@ export default class LayerOval { style: Style = new Style(); - polygon: Polygon = new Polygon([]); + ovalPolygon: Polygon = new Polygon([]); + + boundingBoxPolygon: Polygon = new Polygon([]); strokeStyle: Stroke = new Stroke(); @@ -106,15 +114,17 @@ export default class LayerOval { this.setStyles(); this.feature = new Feature({ - geometry: this.polygon, + geometry: this.boundingBoxPolygon, layer, elementType: LAYER_ELEMENT_TYPES.OVAL, }); this.feature.setId(this.elementId); this.feature.set('getObjectData', this.getData.bind(this)); this.feature.set('setCoordinates', this.setCoordinates.bind(this)); + this.feature.set('setOvalCoordinates', this.setOvalCoordinates.bind(this)); this.feature.set('refreshPolygon', this.refreshPolygon.bind(this)); this.feature.set('updateElement', this.updateElement.bind(this)); + this.feature.set('save', this.save.bind(this)); this.feature.setStyle(this.getStyle.bind(this)); } @@ -133,6 +143,29 @@ export default class LayerOval { }; } + private async save({ + modelId, + boundingBox, + }: { + modelId: number; + boundingBox: BoundingBox; + }): Promise<void> { + const { dispatch } = store; + const layerOval = await dispatch( + updateLayerOval({ + modelId, + layerId: this.layer, + ...this.getData(), + ...boundingBox, + }), + ).unwrap(); + if (layerOval) { + dispatch(layerUpdateOval({ modelId, layerId: layerOval.layer, layerOval })); + dispatch(mapEditToolsSetLayerObject(layerOval)); + this.updateElement(layerOval); + } + } + private drawPolygon(): void { const coords = getEllipseCoords({ x: this.x + this.width / 2, @@ -140,14 +173,21 @@ export default class LayerOval { height: this.height, width: this.width, pointToProjection: this.pointToProjection, - points: 30, + points: 60, + }); + this.ovalPolygon = new Polygon([coords]); + this.boundingBoxPolygon = getBoundingBoxPolygon({ + x: this.x, + y: this.y, + width: this.width, + height: this.height, + pointToProjection: this.pointToProjection, }); - this.polygon = new Polygon([coords]); } private refreshPolygon(): void { this.drawPolygon(); - this.feature.setGeometry(this.polygon); + this.feature.setGeometry(this.boundingBoxPolygon); this.feature.changed(); } @@ -157,7 +197,7 @@ export default class LayerOval { width: this.lineWidth, }); this.style = getStyle({ - geometry: this.polygon, + geometry: this.ovalPolygon, borderColor: this.borderColor, fillColor: TRANSPARENT_COLOR, lineWidth: this.lineWidth, @@ -181,13 +221,20 @@ export default class LayerOval { } private setCoordinates(coords: Coordinate[][]): void { - const geometry = this.style.getGeometry(); - if (geometry && geometry instanceof Polygon) { - geometry.setCoordinates(coords); + const boundingBoxGeometry = this.feature.getGeometry(); + if (boundingBoxGeometry) { + boundingBoxGeometry.setCoordinates(coords); + } + } + + private setOvalCoordinates(ellipseCoords: Coordinate[][]): void { + const ovalGeometry = this.style.getGeometry(); + if (ovalGeometry && ovalGeometry instanceof Polygon) { + ovalGeometry.setCoordinates(ellipseCoords); } } - protected getStyle(_: FeatureLike, resolution: number): Style | Array<Style> | void { + protected getStyle(feature: FeatureLike, resolution: number): Style | Array<Style> | void { const scale = this.minResolution / resolution; return getScaledElementStyle(this.style, this.strokeStyle, scale); } diff --git a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts index c1c8565c..7c55f39c 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/interaction/getTransformInteraction.ts @@ -10,6 +10,8 @@ import { MapSize } from '@/redux/map/map.types'; import { Extent } from 'ol/extent'; import { mapEditToolsSetLayerObject } from '@/redux/mapEditTools/mapEditTools.slice'; import { openDrawer } from '@/redux/drawer/drawer.slice'; +import { LAYER_ELEMENT_TYPES } from '@/components/Map/MapViewer/MapViewer.constants'; +import getEllipseCoords from '@/components/Map/MapViewer/utils/shapes/coords/getEllipseCoords'; export default function getTransformInteraction( dispatch: AppDispatch, @@ -22,7 +24,7 @@ export default function getTransformInteraction( features: featuresCollection, scale: true, rotate: false, - stretch: false, + stretch: true, keepRectangle: true, translate: true, translateBBox: true, @@ -44,10 +46,18 @@ export default function getTransformInteraction( restrictionExtent[2] - width, Math.max(restrictionExtent[0], minX), ); + const correctedMaxX = Math.min( + restrictionExtent[2], + Math.max(restrictionExtent[0] + width, maxX), + ); const correctedMinY = Math.min( restrictionExtent[3] - height, Math.max(restrictionExtent[1], minY), ); + const correctedMaxY = Math.min( + restrictionExtent[3], + Math.max(restrictionExtent[1] + height, maxY), + ); const dx = correctedMinX - minX; const dy = correctedMinY - minY; @@ -57,6 +67,19 @@ export default function getTransformInteraction( geometry.changed(); transform.setSelection(new Collection([feature])); } + if (feature.get('elementType') === LAYER_ELEMENT_TYPES.OVAL) { + const setOvalCoordinates = feature.get('setOvalCoordinates'); + const ellipseCoords = getEllipseCoords({ + x: (correctedMinX + correctedMaxX) / 2, + y: (correctedMinY + correctedMaxY) / 2, + height, + width, + points: 20, + }); + if (setOvalCoordinates instanceof Function) { + setOvalCoordinates([ellipseCoords]); + } + } } }); @@ -64,11 +87,9 @@ export default function getTransformInteraction( const transformEvent = event as unknown as { feature: Feature }; const { feature } = transformEvent; const geometry = feature.getGeometry(); - if (!geometry) { return; } - const extent = geometry.getExtent(); const [minX, minY, maxX, maxY] = extent; const newMinX = Math.max(minX, restrictionExtent[0]); @@ -79,6 +100,19 @@ export default function getTransformInteraction( const hasChanged = newExtent.some((value, index) => value !== extent[index]); + if (feature.get('elementType') === LAYER_ELEMENT_TYPES.OVAL) { + const setOvalCoordinates = feature.get('setOvalCoordinates'); + const ellipseCoords = getEllipseCoords({ + x: (newMinX + newMaxX) / 2, + y: (newMinY + newMaxY) / 2, + height: Math.abs(newMaxY - newMinY), + width: Math.abs(newMaxX - newMinX), + points: 30, + }); + if (setOvalCoordinates instanceof Function) { + setOvalCoordinates([ellipseCoords]); + } + } if (hasChanged) { const newGeometry = fromExtent(newExtent); newGeometry.scale(1, -1); diff --git a/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts index 4318381d..0e8e010c 100644 --- a/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts +++ b/src/components/Map/MapViewer/utils/shapes/layer/utils/updateElement.ts @@ -1,11 +1,11 @@ import VectorSource from 'ol/source/Vector'; -import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import { LayerImage, LayerOval, LayerRect, LayerText } from '@/types/models'; import { MapInstance } from '@/types/map'; export default function updateElement( mapInstance: MapInstance, layerId: number, - layerObject: LayerImage | LayerText | LayerRect, + layerObject: LayerImage | LayerText | LayerRect | LayerOval, ): void { mapInstance?.getAllLayers().forEach(layer => { if (layer.get('id') === layerId) { diff --git a/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts b/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts index 0f3a7fd1..a589b07b 100644 --- a/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts +++ b/src/components/Map/MapViewer/utils/websocket/processLayerOval.ts @@ -4,6 +4,9 @@ import { ENTITY_OPERATION_TYPES } from '@/utils/websocket-entity-updates/webSock import { getLayerOval } from '@/redux/layers/layers.thunks'; import { MapInstance } from '@/types/map'; import drawElementOnLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/drawElementOnLayer'; +import { layerDeleteOval } from '@/redux/layers/layers.slice'; +import removeElementFromLayer from '@/components/Map/MapViewer/utils/shapes/layer/utils/removeElementFromLayer'; +import updateElement from '@/components/Map/MapViewer/utils/shapes/layer/utils/updateElement'; export default async function processLayerOval({ data, @@ -13,7 +16,10 @@ export default async function processLayerOval({ mapInstance: MapInstance; }): Promise<void> { const { dispatch } = store; - if (data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED) { + if ( + data.type === ENTITY_OPERATION_TYPES.ENTITY_CREATED || + data.type === ENTITY_OPERATION_TYPES.ENTITY_UPDATED + ) { const resultOval = await dispatch( getLayerOval({ modelId: data.mapId, @@ -31,6 +37,17 @@ export default async function processLayerOval({ object: resultOval, drawFunctionKey: 'drawOval', }); + } else { + updateElement(mapInstance, data.layerId, resultOval); } + } else if (data.type === ENTITY_OPERATION_TYPES.ENTITY_DELETED) { + dispatch( + layerDeleteOval({ + modelId: data.mapId, + layerId: data.layerId, + ovalId: data.entityId, + }), + ); + removeElementFromLayer({ mapInstance, layerId: data.layerId, featureId: data.entityId }); } } diff --git a/src/redux/apiPath.ts b/src/redux/apiPath.ts index 895d61e3..b5e25cb2 100644 --- a/src/redux/apiPath.ts +++ b/src/redux/apiPath.ts @@ -53,6 +53,10 @@ export const apiPath = { `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/${ovalId}`, addLayerOval: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/`, + updateLayerOval: (modelId: number, layerId: number, ovalId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/${ovalId}`, + removeLayerOval: (modelId: number, layerId: number, ovalId: number | string): string => + `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/ovals/${ovalId}`, getLayerLines: (modelId: number, layerId: number): string => `projects/${PROJECT_ID}/maps/${modelId}/layers/${layerId}/lines/`, getLayerImages: (modelId: number, layerId: number): string => diff --git a/src/redux/layers/layers.reducers.ts b/src/redux/layers/layers.reducers.ts index c28e00ce..e8ba229c 100644 --- a/src/redux/layers/layers.reducers.ts +++ b/src/redux/layers/layers.reducers.ts @@ -338,3 +338,31 @@ export const layerAddOvalReducer = ( } setLayerOval({ layerId, layers: data.layers, layerOval }); }; + +export const layerUpdateOvalReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; layerOval: LayerOval }>, +): void => { + const { modelId, layerId, layerOval } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + setLayerOval({ layerId, layers: data.layers, layerOval }); +}; + +export const layerDeleteOvalReducer = ( + state: LayersState, + action: PayloadAction<{ modelId: number; layerId: number; ovalId: number }>, +): void => { + const { modelId, layerId, ovalId } = action.payload; + const { data } = state[modelId]; + if (!data) { + return; + } + const layer = data.layers[layerId]; + if (!layer) { + return; + } + delete layer.ovals[ovalId]; +}; diff --git a/src/redux/layers/layers.slice.ts b/src/redux/layers/layers.slice.ts index 19375020..243b6ab7 100644 --- a/src/redux/layers/layers.slice.ts +++ b/src/redux/layers/layers.slice.ts @@ -20,6 +20,8 @@ import { layerAddOvalReducer, getLayerReducer, layerDeleteReducer, + layerUpdateOvalReducer, + layerDeleteOvalReducer, } from '@/redux/layers/layers.reducers'; export const layersSlice = createSlice({ @@ -41,6 +43,8 @@ export const layersSlice = createSlice({ layerUpdateRect: layerUpdateRectReducer, layerDeleteRect: layerDeleteRectReducer, layerAddOval: layerAddOvalReducer, + layerUpdateOval: layerUpdateOvalReducer, + layerDeleteOval: layerDeleteOvalReducer, }, extraReducers: builder => { getLayersForModelReducer(builder); @@ -66,6 +70,8 @@ export const { layerUpdateRect, layerDeleteRect, layerAddOval, + layerUpdateOval, + layerDeleteOval, } = layersSlice.actions; export default layersSlice.reducer; diff --git a/src/redux/layers/layers.thunks.ts b/src/redux/layers/layers.thunks.ts index ee499b38..82620656 100644 --- a/src/redux/layers/layers.thunks.ts +++ b/src/redux/layers/layers.thunks.ts @@ -529,3 +529,53 @@ export const addLayerOval = createAsyncThunk< return Promise.reject(getError({ error })); } }); + +export const updateLayerOval = createAsyncThunk< + LayerOval | null, + { + modelId: number; + layerId: number; + id: number; + x: number; + y: number; + z: number; + width: number; + height: number; + color: Color; + }, + ThunkConfig +>('layers/updateLayerOval', async ({ modelId, layerId, id, x, y, z, width, height, color }) => { + try { + const { data } = await axiosInstanceNewAPI.put<LayerOval>( + apiPath.updateLayerOval(modelId, layerId, id), + { + x, + y, + z, + width, + height, + color, + }, + ); + const isDataValid = validateDataUsingZodSchema(data, layerOvalSchema); + if (isDataValid) { + return data; + } + return null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); + +export const removeLayerOval = createAsyncThunk< + null, + { modelId: number; layerId: number; ovalId: number }, + ThunkConfig +>('layers/removeLayerOval', async ({ modelId, layerId, ovalId }) => { + try { + await axiosInstanceNewAPI.delete<void>(apiPath.removeLayerOval(modelId, layerId, ovalId)); + return null; + } catch (error) { + return Promise.reject(getError({ error })); + } +}); diff --git a/src/redux/mapEditTools/mapEditTools.reducers.ts b/src/redux/mapEditTools/mapEditTools.reducers.ts index b8519608..98c871a5 100644 --- a/src/redux/mapEditTools/mapEditTools.reducers.ts +++ b/src/redux/mapEditTools/mapEditTools.reducers.ts @@ -2,7 +2,7 @@ import { PayloadAction } from '@reduxjs/toolkit'; import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; import { MapEditToolsState } from '@/redux/mapEditTools/mapEditTools.types'; -import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import { LayerImage, LayerOval, LayerRect, LayerText } from '@/types/models'; export const mapEditToolsSetActiveActionReducer = ( state: MapEditToolsState, @@ -13,7 +13,7 @@ export const mapEditToolsSetActiveActionReducer = ( export const mapEditToolsSetLayerObjectReducer = ( state: MapEditToolsState, - action: PayloadAction<LayerImage | LayerText | LayerRect | null>, + action: PayloadAction<LayerImage | LayerText | LayerRect | LayerOval | null>, ): void => { state.layerObject = action.payload; }; diff --git a/src/redux/mapEditTools/mapEditTools.types.ts b/src/redux/mapEditTools/mapEditTools.types.ts index b9a012c8..50f2b0f4 100644 --- a/src/redux/mapEditTools/mapEditTools.types.ts +++ b/src/redux/mapEditTools/mapEditTools.types.ts @@ -1,7 +1,7 @@ import { MAP_EDIT_ACTIONS } from '@/redux/mapEditTools/mapEditTools.constants'; -import { LayerImage, LayerRect, LayerText } from '@/types/models'; +import { LayerImage, LayerOval, LayerRect, LayerText } from '@/types/models'; export type MapEditToolsState = { activeAction: keyof typeof MAP_EDIT_ACTIONS | null; - layerObject: LayerImage | LayerText | LayerRect | null; + layerObject: LayerImage | LayerText | LayerRect | LayerOval | null; }; diff --git a/src/redux/modal/modal.constants.ts b/src/redux/modal/modal.constants.ts index 0d595380..e1bd16d6 100644 --- a/src/redux/modal/modal.constants.ts +++ b/src/redux/modal/modal.constants.ts @@ -15,8 +15,5 @@ export const MODAL_INITIAL_STATE: ModalState = { editOverlayGroupState: null, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }; diff --git a/src/redux/modal/modal.mock.ts b/src/redux/modal/modal.mock.ts index f2cfc3e2..26872d50 100644 --- a/src/redux/modal/modal.mock.ts +++ b/src/redux/modal/modal.mock.ts @@ -15,8 +15,5 @@ export const MODAL_INITIAL_STATE_MOCK: ModalState = { editOverlayGroupState: null, errorReportState: {}, layerFactoryState: { id: undefined }, - layerImageObjectFactoryState: undefined, - layerTextFactoryState: undefined, - layerRectFactoryState: undefined, - layerOvalFactoryState: undefined, + layerObjectFactoryState: undefined, }; diff --git a/src/redux/modal/modal.reducers.ts b/src/redux/modal/modal.reducers.ts index b3e114e2..0dda3081 100644 --- a/src/redux/modal/modal.reducers.ts +++ b/src/redux/modal/modal.reducers.ts @@ -158,7 +158,7 @@ export const openLayerImageObjectFactoryModalReducer = ( state: ModalState, action: PayloadAction<BoundingBox>, ): void => { - state.layerImageObjectFactoryState = action.payload; + state.layerObjectFactoryState = action.payload; state.isOpen = true; state.modalName = 'layer-image-object-factory'; state.modalTitle = 'Select glyph or upload file'; @@ -174,7 +174,7 @@ export const openLayerTextFactoryModalReducer = ( state: ModalState, action: PayloadAction<BoundingBox>, ): void => { - state.layerTextFactoryState = action.payload; + state.layerObjectFactoryState = action.payload; state.modalName = 'layer-text-factory'; state.modalTitle = 'Add text'; state.isOpen = true; @@ -190,7 +190,7 @@ export const openLayerRectFactoryModalReducer = ( state: ModalState, action: PayloadAction<BoundingBox>, ): void => { - state.layerRectFactoryState = action.payload; + state.layerObjectFactoryState = action.payload; state.modalName = 'layer-rect-factory'; state.modalTitle = 'Add rectangle'; state.isOpen = true; @@ -206,8 +206,14 @@ export const openLayerOvalFactoryModalReducer = ( state: ModalState, action: PayloadAction<BoundingBox>, ): void => { - state.layerOvalFactoryState = action.payload; + state.layerObjectFactoryState = action.payload; state.modalName = 'layer-oval-factory'; state.modalTitle = 'Add oval'; state.isOpen = true; }; + +export const openLayerOvalEditFactoryModalReducer = (state: ModalState): void => { + state.isOpen = true; + state.modalName = 'layer-oval-edit-factory'; + state.modalTitle = 'Edit oval'; +}; diff --git a/src/redux/modal/modal.selector.ts b/src/redux/modal/modal.selector.ts index 1bd5e7e4..7c522419 100644 --- a/src/redux/modal/modal.selector.ts +++ b/src/redux/modal/modal.selector.ts @@ -36,22 +36,7 @@ export const currentErrorDataSelector = createSelector( modal => modal?.errorReportState.errorData || undefined, ); -export const layerImageObjectFactoryStateSelector = createSelector( +export const layerObjectFactoryStateSelector = createSelector( modalSelector, - modal => modal.layerImageObjectFactoryState, -); - -export const layerTextFactoryStateSelector = createSelector( - modalSelector, - modal => modal.layerTextFactoryState, -); - -export const layerRectFactoryStateSelector = createSelector( - modalSelector, - modal => modal.layerRectFactoryState, -); - -export const layerOvalFactoryStateSelector = createSelector( - modalSelector, - modal => modal.layerOvalFactoryState, + modal => modal.layerObjectFactoryState, ); diff --git a/src/redux/modal/modal.slice.ts b/src/redux/modal/modal.slice.ts index 7485f549..1618ce0d 100644 --- a/src/redux/modal/modal.slice.ts +++ b/src/redux/modal/modal.slice.ts @@ -25,6 +25,7 @@ import { openLayerRectEditFactoryModalReducer, openLayerOvalFactoryModalReducer, openEditOverlayGroupModalReducer, + openLayerOvalEditFactoryModalReducer, } from './modal.reducers'; const modalSlice = createSlice({ @@ -55,6 +56,7 @@ const modalSlice = createSlice({ openLayerRectFactoryModal: openLayerRectFactoryModalReducer, openLayerRectEditFactoryModal: openLayerRectEditFactoryModalReducer, openLayerOvalFactoryModal: openLayerOvalFactoryModalReducer, + openLayerOvalEditFactoryModal: openLayerOvalEditFactoryModalReducer, }, }); @@ -83,6 +85,7 @@ export const { openLayerRectFactoryModal, openLayerRectEditFactoryModal, openLayerOvalFactoryModal, + openLayerOvalEditFactoryModal, } = modalSlice.actions; export default modalSlice.reducer; diff --git a/src/redux/modal/modal.types.ts b/src/redux/modal/modal.types.ts index 811dc988..a558bfab 100644 --- a/src/redux/modal/modal.types.ts +++ b/src/redux/modal/modal.types.ts @@ -35,10 +35,7 @@ export interface ModalState { editOverlayState: EditOverlayState; editOverlayGroupState: EditOverlayGroupState; layerFactoryState: LayerFactoryState; - layerImageObjectFactoryState: LayerObjectFactoryBoundingBoxState; - layerTextFactoryState: LayerObjectFactoryBoundingBoxState; - layerRectFactoryState: LayerObjectFactoryBoundingBoxState; - layerOvalFactoryState: LayerObjectFactoryBoundingBoxState; + layerObjectFactoryState: LayerObjectFactoryBoundingBoxState; } export type OpenEditOverlayModalPayload = MapOverlay; diff --git a/src/types/modal.ts b/src/types/modal.ts index 7e95a59c..5efc9564 100644 --- a/src/types/modal.ts +++ b/src/types/modal.ts @@ -20,4 +20,5 @@ export type ModalName = | 'layer-text-edit-factory' | 'layer-rect-factory' | 'layer-rect-edit-factory' - | 'layer-oval-factory'; + | 'layer-oval-factory' + | 'layer-oval-edit-factory'; -- GitLab