mirror of
https://github.com/wanderer-industries/wanderer
synced 2025-12-03 14:32:36 +00:00
* feat(Map): Add widget for comments. Refactor design of Signatures widget. Refactor a lot of code. Add Transition component in ui-kit. Sync versions of react. --------- Co-authored-by: Dmitry Popov <dmitriypopovsamara@gmail.com> Co-authored-by: achichenkov <aleksei.chichenkov@telleqt.ai>
68 lines
3.4 KiB
TypeScript
68 lines
3.4 KiB
TypeScript
import Topbar from '@/hooks/Mapper/components/topbar/Topbar.tsx';
|
|
import { MapInterface } from '@/hooks/Mapper/components/mapInterface/MapInterface.tsx';
|
|
import Layout from '@/hooks/Mapper/components/layout/Layout.tsx';
|
|
import { MapWrapper } from '@/hooks/Mapper/components/mapWrapper/MapWrapper.tsx';
|
|
import { useMapRootState } from '@/hooks/Mapper/mapRootProvider';
|
|
import { useCallback, useState } from 'react';
|
|
import { OnTheMap, RightBar } from '@/hooks/Mapper/components/mapRootContent/components';
|
|
import { MapContextMenu } from '@/hooks/Mapper/components/mapRootContent/components/MapContextMenu/MapContextMenu.tsx';
|
|
import { useSkipContextMenu } from '@/hooks/Mapper/hooks/useSkipContextMenu';
|
|
import { MapSettings } from '@/hooks/Mapper/components/mapRootContent/components/MapSettings';
|
|
import { CharacterActivity } from '@/hooks/Mapper/components/mapRootContent/components/CharacterActivity';
|
|
import { TrackAndFollow } from '@/hooks/Mapper/components/mapRootContent/components/TrackAndFollow/TrackAndFollow';
|
|
import { useCharacterActivityHandlers } from './hooks/useCharacterActivityHandlers';
|
|
import { useTrackAndFollowHandlers } from './hooks/useTrackAndFollowHandlers';
|
|
|
|
export interface MapRootContentProps {}
|
|
|
|
// eslint-disable-next-line no-empty-pattern
|
|
export const MapRootContent = ({}: MapRootContentProps) => {
|
|
const { interfaceSettings, data } = useMapRootState();
|
|
const { isShowMenu } = interfaceSettings;
|
|
const { showCharacterActivity, showTrackAndFollow } = data;
|
|
const { handleHideCharacterActivity } = useCharacterActivityHandlers();
|
|
const { handleHideTracking } = useTrackAndFollowHandlers();
|
|
|
|
const themeClass = `${interfaceSettings.theme ?? 'default'}-theme`;
|
|
|
|
const [showOnTheMap, setShowOnTheMap] = useState(false);
|
|
const [showMapSettings, setShowMapSettings] = useState(false);
|
|
const mapInterface = <MapInterface />;
|
|
|
|
const handleShowOnTheMap = useCallback(() => setShowOnTheMap(true), []);
|
|
const handleShowMapSettings = useCallback(() => setShowMapSettings(true), []);
|
|
|
|
useSkipContextMenu();
|
|
|
|
return (
|
|
<div className={themeClass}>
|
|
<Layout map={<MapWrapper />}>
|
|
{!isShowMenu ? (
|
|
<div className="absolute top-0 left-14 w-[calc(100%-3.5rem)] h-[calc(100%-3.5rem)] pointer-events-none">
|
|
<div className="absolute top-0 left-0 w-[calc(100%-3.5rem)] h-full pointer-events-none">
|
|
<Topbar />
|
|
{mapInterface}
|
|
</div>
|
|
<div className="absolute top-0 right-0 w-14 h-[calc(100%+3.5rem)] pointer-events-auto">
|
|
<RightBar onShowOnTheMap={handleShowOnTheMap} onShowMapSettings={handleShowMapSettings} />
|
|
</div>
|
|
</div>
|
|
) : (
|
|
<div className="absolute top-0 left-14 w-[calc(100%-3.5rem)] h-[calc(100%-3.5rem)] pointer-events-none">
|
|
<Topbar>
|
|
<MapContextMenu onShowOnTheMap={handleShowOnTheMap} onShowMapSettings={handleShowMapSettings} />
|
|
</Topbar>
|
|
{mapInterface}
|
|
</div>
|
|
)}
|
|
<OnTheMap show={showOnTheMap} onHide={() => setShowOnTheMap(false)} />
|
|
{showMapSettings && <MapSettings visible={showMapSettings} onHide={() => setShowMapSettings(false)} />}
|
|
{showCharacterActivity && (
|
|
<CharacterActivity visible={showCharacterActivity} onHide={handleHideCharacterActivity} />
|
|
)}
|
|
{showTrackAndFollow && <TrackAndFollow visible={showTrackAndFollow} onHide={handleHideTracking} />}
|
|
</Layout>
|
|
</div>
|
|
);
|
|
};
|