import * as THREE from "three"; import { DrawableList, DxfViewer } from "@pattern-x/gemini-viewer-threejs"; import type { Drawable } from "@pattern-x/gemini-viewer-threejs"; import type { BimViewer } from "../core/BimViewer"; import { ImageMarker } from "./ImageMarker"; import { OverviewMap } from "./OverviewMap"; import { Coordinates2D } from "../constants"; export interface OverviewMapPanelConfig { containerId: string; bimViewer: BimViewer; transformMatrix?: number[]; enabled?: boolean; radius?: number; size?: { width: number; height: number; }; } export interface UpdateOverviewMapConfig { isLoadingSubsizeImage?: boolean; image?: string; min?: Coordinates2D; max?: Coordinates2D; imageWidth?: number; imageHeight?: number; height?: number; depth?: number; } export declare class OverviewMapPanel extends DxfViewer { tolerance: number; cameraDirMarker?: ImageMarker; cameraMarker?: ImageMarker; enabled?: boolean; protected radius?: number; protected size?: { width: number; height: number; }; protected bimViewer: BimViewer; protected enableOverlayRenderer: boolean; protected drawableList: DrawableList; protected transformMatrix: THREE.Matrix4; protected animationId?: number; protected animationFinished: boolean; protected lastAnimationParam?: { position: THREE.Vector3; direction: THREE.Vector3; }; /** * @internal */ protected overviewMapDrawable?: OverviewMap; protected imgBBox?: THREE.Box3; protected handlePostRender?: () => void; protected resizeObserver?: ResizeObserver; private translateStart; private rotateStart; private isMarkerRotating; private isMarkerTranslating; private isUpdateWhenPawnMove; private timeout?; private wheelEventHandle?; private initialZoom?; private cameraZoom?; private boundaries?; constructor(cfg: OverviewMapPanelConfig); private initResize; private handleControlsUpdate; /******* create ground plane for pick ********/ protected initGroundPlane(bbox: THREE.Box3): void; /*****************************************************/ private getDrawableByEvent; protected initMaxAndMinZoom(): void; /******* camera marker hover event ********/ private handlePointerMove; private initHoverEvent; /*****************************************************/ /******* camera marker control event ********/ private handleCameraMarkerChange; private handleCameraPointerDown; private handleCameraPointerMove; private dblClickHandle; private handleCameraPointerUp; private initCameraMarkerControlEvent; /*****************************************************/ /******* when ue camera move,update camera marker position and direction ********/ private handleCameraPawnMove; protected updateTransform(): void; /************** create camera marker ****************/ createImageElement(src: string): Promise; protected createCameraMarker(position: THREE.Vector3, dir: THREE.Vector3): Promise; protected initCameraMarker(): Promise; /*****************************************************/ /************** capture overviewMap and create overviewMap ****************/ protected getOverviewMapImage(cfg: UpdateOverviewMapConfig, enableZoomToBBox?: boolean): Promise; /*****************************************************/ private removePostRenderEvent; initCameraPawnMoveEvent(): void; updateOverviewMap(cfg: UpdateOverviewMapConfig): Promise; zoomToBBox(bbox: THREE.Box3): void; addMarker(marker: Drawable): void; getMarker(id: string): Drawable | undefined; removeMarker(marker: Drawable): void; dollyIn(zoomDelta?: number): void; dollOut(zoomDelta?: number): void; goToHomeView(): void; lookToPath(): void; screenShot(): Promise; registerBoundaries(boundries: { id: string; name: string; points: Coordinates2D[]; }[]): void; isPointInBoundary: (position: Coordinates2D) => undefined; destroy(): void; }