@speckle/viewer
Version:
A 3d viewer for Speckle, based on threejs.
75 lines (74 loc) • 3.19 kB
TypeScript
import EventEmitter from './EventEmitter.js';
import { Clock } from 'three';
import { Assets } from './Assets.js';
import { type Optional } from '../helpers/typeHelper.js';
import { type IViewer, type SpeckleView, type SunLightConfiguration, UpdateFlags, ViewerEvent, type ViewerParams, type ViewerEventPayload } from '../IViewer.js';
import { World } from './World.js';
import { WorldTree } from './tree/WorldTree.js';
import SpeckleRenderer from './SpeckleRenderer.js';
import { type PropertyInfo, PropertyManager } from './filtering/PropertyManager.js';
import type { Query, QueryArgsResultMap } from './queries/Query.js';
import { type Utils } from './Utils.js';
import { Extension } from './extensions/Extension.js';
import Input from './input/Input.js';
import { Loader } from './loaders/Loader.js';
import { type Constructor } from 'type-fest';
import Stats from './three/stats.js';
export declare class Viewer extends EventEmitter implements IViewer {
/** Container and optional stats element */
protected container: HTMLElement;
protected stats: Optional<ReturnType<typeof Stats>>;
/** Viewer params used at init time */
protected startupParams: ViewerParams;
/** Viewer components */
protected tree: WorldTree;
protected world: World;
static readonly theAssets: Assets;
speckleRenderer: SpeckleRenderer;
protected propertyManager: PropertyManager;
/** Misc members */
protected inProgressOperations: number;
protected clock: Clock;
protected loaders: {
[id: string]: Loader;
};
protected extensions: {
[id: string]: Extension;
};
/** various utils/helpers */
protected utils: Utils | undefined;
/** Gets the World object. Currently it's used for info mostly */
get World(): World;
get Utils(): Utils;
get input(): Input;
private getConstructorChain;
createExtension<T extends Extension>(type: Constructor<T>): T;
getExtension<T extends Extension>(type: Constructor<T>): T;
hasExtension<T extends Extension>(type: Constructor<T>): boolean;
private getExtensionInternal;
constructor(container: HTMLElement, params?: ViewerParams);
getContainer(): HTMLElement;
getRenderer(): SpeckleRenderer;
resize(): void;
requestRender(flags?: UpdateFlags): void;
protected frame(): void;
protected update(): void;
protected render(): void;
init(): Promise<void>;
on<T extends ViewerEvent>(eventType: T, listener: (arg: ViewerEventPayload[T]) => void): void;
getObjectProperties(resourceURL?: string | null, bypassCache?: boolean): Promise<PropertyInfo[]>;
getDataTree(): void;
getWorldTree(): WorldTree;
query<T extends Query>(query: T): QueryArgsResultMap[T['operation']] | null;
setLightConfiguration(config: SunLightConfiguration): void;
getViews(): SpeckleView[];
screenshot(): Promise<string>;
/**
* OBJECT LOADING/UNLOADING
*/
loadObject(loader: Loader, zoomToObject?: boolean): Promise<void>;
cancelLoad(resource: string, unload?: boolean): Promise<void>;
unloadObject(resource: string): Promise<void>;
unloadAll(): Promise<void>;
dispose(): void;
}