import { WebGLRendererParameters, Renderer, Object3D, WebGLRenderer, Scene, Camera, Intersection } from 'three'; import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'; interface ConfigOptions { controlType?: "trackball" | "orbit" | "fly" rendererConfig?: WebGLRendererParameters extraRenderers?: Renderer[] waitForLoadComplete?: boolean } type Accessor = Out | string | ((obj: In) => Out) type Obj3DAccessor = Accessor type Coords = { x: number; y: number; z: number } type Obj3DCompFn = (a: Object3D, b: Object3D) => number // type Intersection = interface ThreeRenderObjectsGenericInstance { (element: HTMLElement): ChainableInstance resetProps(): ChainableInstance // Data input objects(): Object3D[] objects(objs: Object3D[]): ChainableInstance // Container layout width(): number width(width: number): ChainableInstance height(): number height(height: number): ChainableInstance skyRadius(): number skyRadius(glUnits: number): ChainableInstance backgroundColor(): string backgroundColor(color: string): ChainableInstance backgroundImageUrl(): string | null backgroundImageUrl(url: string | null): ChainableInstance onBackgroundImageLoaded(callback: () => void): ChainableInstance showNavInfo(): boolean showNavInfo(enabled: boolean): ChainableInstance // Render control tick(): ChainableInstance cameraPosition(): Coords cameraPosition( position: Partial, lookAt?: Coords, transitionMs?: number ): ChainableInstance zoomToFit( durationMs?: number, padding?: number, objFilter?: (obj: Object3D) => boolean ): ChainableInstance fitToBbox( bbox: { x: [number, number]; y: [number, number]; z: [number, number] }, durationMs?: number, padding?: number ): ChainableInstance postProcessingComposer(): EffectComposer renderer(): WebGLRenderer scene(): Scene camera(): Camera controls(): object // Interaction onClick( callback: ( obj: object | null, intersection: Intersection, event: MouseEvent ) => void ): ChainableInstance onRightClick( callback: ( obj: object | null, intersection: Intersection, event: MouseEvent ) => void ): ChainableInstance onHover( callback: ( obj: object | null, intersection: Intersection, previousObj: object | null ) => void ): ChainableInstance hoverOrderComparator(): Obj3DCompFn hoverOrderComparator(compFn: Obj3DCompFn): ChainableInstance hoverFilter(): (obj: Object3D) => boolean hoverFilter(filterFn: (obj: Object3D) => boolean): ChainableInstance lineHoverPrecision(): number lineHoverPrecision(precision: number): ChainableInstance tooltipContent(): Obj3DAccessor tooltipContent(contentAccessor: Obj3DAccessor): ChainableInstance enablePointerInteraction(): boolean enablePointerInteraction(enable: boolean): ChainableInstance hoverDuringDrag(): boolean hoverDuringDrag(enabled: boolean): ChainableInstance clickAfterDrag(): boolean clickAfterDrag(enabled: boolean): ChainableInstance getPointerPos(): { x: number; y: number } // Utility getBbox(objFilter?: (obj: Object3D) => boolean): { x: [number, number] y: [number, number] z: [number, number] } getScreenCoords(x: number, y: number, z: number): { x: number; y: number } getSceneCoords( x: number, y: number, distance: number ): { x: number; y: number; z: number } intersectingObjects(x: number, y: number): Intersection[] } type ThreeRenderObjectsInstance = ThreeRenderObjectsGenericInstance declare function ThreeRenderObjects( configOptions?: ConfigOptions ): ThreeRenderObjectsInstance export { ConfigOptions, ThreeRenderObjectsGenericInstance, ThreeRenderObjectsInstance, ThreeRenderObjects as default };