Skip to content
Snippets Groups Projects
Commit 31ee8bff authored by Adrian Orłów's avatar Adrian Orłów
Browse files

feat: add rfc pr changes

parent 0a5c464c
No related branches found
No related tags found
2 merge requests!223reset the pin numbers before search results are fetch (so the results will be...,!77feat: add overview image interactive layer
Pipeline #83464 passed
/* eslint-disable @next/next/no-img-element */
import * as React from 'react';
import { useCallback, useState } from 'react';
import { useCallback, useLayoutEffect, useState } from 'react';
import { useOverviewImage } from './utils/useOverviewImage';
export const OverviewImagesModal: React.FC = () => {
const [containerRect, setContainerRect] = useState<DOMRect>();
const { imageUrl, size, linkConfigs } = useOverviewImage({ containerRect });
const { width, height } = size;
const [containerNode, setContainerNode] = useState<HTMLDivElement | null>(null);
const handleRect = useCallback((node: HTMLDivElement | null) => {
if (!node) {
return;
const handleContainerRef = useCallback((node: HTMLDivElement | null) => {
if (node !== null) {
setContainerRect(node.getBoundingClientRect());
setContainerNode(node);
}
setContainerRect(node.getBoundingClientRect());
}, []);
useLayoutEffect(() => {
const updateContainerSize = (): void => {
if (containerNode !== null) {
setContainerRect(containerNode.getBoundingClientRect());
}
};
window.addEventListener('resize', updateContainerSize);
return () => window.removeEventListener('resize', updateContainerSize);
}, [containerNode]);
if (!imageUrl) {
return null;
}
......@@ -24,7 +35,7 @@ export const OverviewImagesModal: React.FC = () => {
<div
data-testid="overview-images-modal"
className="flex h-full w-full items-center justify-center bg-white"
ref={handleRect}
ref={handleContainerRef}
>
<div className="relative" style={{ width, height }}>
<img alt="overview" className="block h-full w-full" src={imageUrl} />
......
......@@ -6,7 +6,7 @@ export const modalSelector = createSelector(rootSelector, state => state.modal);
export const isModalOpenSelector = createSelector(modalSelector, state => state.isOpen);
export const currentOverviewImageId = createSelector(
export const currentOverviewImageIdSelector = createSelector(
modalSelector,
modal => modal?.overviewImagesState.imageId || OVERVIEW_IMAGE_ID_DEFAULT,
);
import { OverviewImageView } from '@/types/models';
import { createSelector } from '@reduxjs/toolkit';
import { OVERVIEW_IMAGE_ID_DEFAULT } from '../map/map.constants';
import { currentOverviewImageId } from '../modal/modal.selector';
import { currentOverviewImageIdSelector } from '../modal/modal.selector';
import { rootSelector } from '../root/root.selectors';
export const projectSelector = createSelector(rootSelector, state => state.project);
......@@ -15,7 +15,7 @@ export const projectDefaultOverviewImageIdSelector = createSelector(
export const currentOverviewImageSelector = createSelector(
projectDataSelector,
currentOverviewImageId,
currentOverviewImageIdSelector,
(projectData, imageId): OverviewImageView | undefined =>
(projectData?.overviewImageViews || []).find(
overviewImage => overviewImage.idObject === imageId,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment