threepipe
Version:
A modern 3D viewer framework built on top of three.js, written in TypeScript, designed to make creating high-quality, modular, and extensible 3D experiences on the web simple and enjoyable.
33 lines • 1.66 kB
TypeScript
import { IUiConfigContainer, UiConfigContainer } from 'uiconfig.js';
import { Class, IDisposable, IJSONSerializable } from 'ts-browser-helpers';
import { SerializationMetaType } from '../utils';
import { ISerializedConfig, ThreeViewer } from './ThreeViewer';
/**
* Interface for Viewer Plugins
* @category Viewer
*/
export interface IViewerPlugin<TViewer extends ThreeViewer = ThreeViewer, IsSync extends boolean = boolean> extends IUiConfigContainer, Partial<IJSONSerializable<ISerializedConfig, SerializationMetaType>>, IDisposable, Partial<UiConfigContainer> {
constructor: {
PluginType: string;
PluginTags?: string[];
OldPluginType?: string;
};
dependencies?: Class<IViewerPlugin<TViewer, IsSync>>[];
onAdded(viewer: TViewer): IsSync extends false ? Promise<void> : void;
onRemove(viewer: TViewer): IsSync extends false ? Promise<void> : void;
dirty?: boolean;
serializeWithViewer?: boolean | undefined;
storeState?: (prefix?: string, storage?: Storage, data?: any) => void;
loadState?: (prefix?: string, storage?: Storage) => Promise<void>;
}
export interface IViewerPluginSync<TViewer extends ThreeViewer = ThreeViewer> extends IViewerPlugin<TViewer, true> {
onAdded(viewer: TViewer): void;
onRemove(viewer: TViewer): void;
dependencies?: Class<IViewerPluginSync>[];
}
export interface IViewerPluginAsync<TViewer extends ThreeViewer = ThreeViewer> extends IViewerPlugin<TViewer, false> {
onAdded(viewer: TViewer): Promise<void>;
onRemove(viewer: TViewer): Promise<void>;
dependencies?: Class<IViewerPlugin>[];
}
//# sourceMappingURL=../src/viewer/IViewerPlugin.d.ts.map