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.
64 lines • 2.98 kB
TypeScript
import type { ISerializedConfig, IViewerEvent, ThreeViewer } from './ThreeViewer';
import { IViewerEventTypes } from './ThreeViewer';
import { EventDispatcher } from 'three';
import { PartialRecord, SerializationMetaType } from '../utils';
import { IViewerPlugin, IViewerPluginAsync } from './IViewerPlugin';
import { UiObjectConfig } from 'uiconfig.js';
export interface AViewerPluginEventMap {
serialize: {
data: ISerializedConfig;
};
deserialize: {
data: ISerializedConfig;
meta?: SerializationMetaType;
};
}
/**
* Base Class for Viewer Plugins
* @category Viewer
*/
export declare abstract class AViewerPlugin<TE extends AViewerPluginEventMap = AViewerPluginEventMap, TViewer extends ThreeViewer = ThreeViewer, IsSync extends boolean = boolean> extends EventDispatcher<TE & AViewerPluginEventMap> implements IViewerPlugin<TViewer, IsSync> {
['constructor']: typeof AViewerPlugin;
static readonly PluginType: string;
static readonly OldPluginType?: string;
protected _dirty: boolean;
uiConfig?: UiObjectConfig;
protected _viewer?: TViewer;
abstract enabled: boolean;
abstract onAdded(viewer: TViewer): IsSync extends false ? Promise<void> : void;
abstract onRemove(viewer: TViewer): IsSync extends false ? Promise<void> : void;
dispose(): void;
toJSON(meta?: SerializationMetaType): ISerializedConfig;
fromJSON(data: ISerializedConfig, meta?: SerializationMetaType): this | null | Promise<this | null>;
protected _storeKey(prefix?: string): string;
exportState(): ISerializedConfig | Record<string, never>;
importState(state: any): Promise<void>;
protected _viewerListeners: PartialRecord<IViewerEventTypes, (e: IViewerEvent) => void>;
protected _onViewerEvent: (e: IViewerEvent) => IViewerEvent;
private _disabledBy;
disable: (key: any, setDirty?: boolean) => void;
enable: (key: any, setDirty?: boolean) => void;
isDisabled: () => boolean;
setDirty?(...args: any[]): any;
get dirty(): boolean;
set dirty(value: boolean);
}
/**
* Base Class for Sync Viewer Plugins
* @category Viewer
*/
export declare abstract class AViewerPluginSync<TE extends AViewerPluginEventMap = AViewerPluginEventMap, TViewer extends ThreeViewer = ThreeViewer> extends AViewerPlugin<TE, TViewer, true> {
['constructor']: (typeof AViewerPluginSync) & (typeof AViewerPlugin);
onAdded(viewer: TViewer): void;
onRemove(viewer: TViewer): void;
}
/**
* Base Class for Async Viewer Plugins
* @category Viewer
*/
export declare abstract class AViewerPluginAsync<TE extends AViewerPluginEventMap = AViewerPluginEventMap, TViewer extends ThreeViewer = ThreeViewer> extends AViewerPlugin<TE, TViewer, false> implements IViewerPluginAsync<TViewer> {
['constructor']: (typeof AViewerPluginAsync) & (typeof AViewerPlugin);
onAdded(viewer: TViewer): Promise<void>;
onRemove(viewer: TViewer): Promise<void>;
}
//# sourceMappingURL=AViewerPlugin.d.ts.map