@realsee/dnalogel
Version:
88 lines (87 loc) • 5.01 kB
TypeScript
import type { Five } from '@realsee/five';
import { CSS3DRender } from './utils/three/CSS3DRender';
import type { AnyPosition } from './utils';
export declare const PLUGIN_NAME: string;
export interface Create3DDomContainerParamsType {
points: AnyPosition[];
config?: {
ratio?: number;
/** @deprecated dpr renamed as devicePixelRatio */
dpr?: number;
devicePixelRatio?: number;
autoRender?: boolean;
container?: HTMLElement;
pointerEvents?: 'none' | 'auto';
wrapperStyle?: Partial<CSSStyleDeclaration>;
} & ({
mode?: 'front';
} | {
mode: 'behind';
behindFiveContainer?: HTMLElement;
});
}
export default class Controller extends CSS3DRender {
five: Five;
behindFiveContainer?: Element;
frontFiveContainer?: Element;
readonly VERSION = "v2.0.1";
readonly staticPrefix: string;
private created3DElementResults;
constructor(five: Five);
/** @deprecated disposeAll() renamed as dispose() */
disposeAll(): void;
setState(...params: Parameters<InstanceType<typeof CSS3DRender>['setState']>): void;
/**
* @description 根据传入的四个点位创建一个 3d dom容器,可以通过ReactDom.render()的方式将react组件放到容器中
* @param { Vector3Position[] } points 矩形四个点坐标
* @param config 均为可选值
* @config_document `config` 均为可选值
* | key | type | defaultValue | comment |
* | - | - | - | - |
* | `ratio` | *`number`* | `0.00216` | 1px对应多少米,默认为 0.00216,即1px对应2.16mm |
* | ~~`dpr`~~ | ~~*`number`*~~ | ~~`undefined`~~ | ~~**已改名**,请使用~~ `devicePixelRatio` |
* | `devicePixelRatio` | *`number`* | `1` | 设备的物理像素分辨率与CSS像素分辨率的比值 |
* | `container` | *`HTMLElement`* | `undefined` | 自定义 return 中的 `container`
* | `pointerEvents` | *`'none'\|'auto'`* | `'none'` | container 的 css属性:`pointer-events` 的值 |
* | `autoRender` | *`boolean`* | `true` | 是否自动渲染,通常为true |
* | `mode` | *`'front'\|'behind'`* | `front` | 两种模式:|
* | | | | `front` 模式:DOM 处于 five Canvas 上方,所以无法模拟遮挡效果,需要手动检测是否可见去设置显隐 |
* | | | | `behind` 模式:DOM 处于 five Canvas 下方,可以模拟真实的遮挡效果,但是 DOM 必须是非透明的 |
* | `behindFiveContainer` | *`HTMLElement`* | `undefined` | 如果 mode 为 `behind`,需要传入容器,并确保此容器位five下方,且中间无其他不透明的dom元素遮挡 |
*
* @return
* ```typescript
* {
* id: string, // id
* container: HTMLDIVElement // dom容器
* dispose: () => void // 销毁
* css3DObject: CSS3DObject // THREE.CSS3DObject 实例
* render?: () => void // 渲染函数,当 config.autoRender = true || undefined 时为 undefined
* setVisible: (visible: boolean) => void // 设置显隐, 同 setVisibleById(id, visible)
* show: () => void // 同 setVisible(true)
* hide: () => void // 同 setVisible(false)
* setEnabled: (enabled: boolean) => void // 添加/移除 container, 同 setEnabledById(id, enabled)
* enable: () => void // 同 setEnabled(true)
* disable: () => void // 同 setEnabled(false)
* } | void
* ```
*/
create3DDomContainer: (points: Create3DDomContainerParamsType['points'], config?: Create3DDomContainerParamsType['config']) => {
render: () => void;
id: string;
container: HTMLElement;
css3DObject: import("./utils/three/CSS3DObject").CSS3DObjectPlus<HTMLElement>;
show: () => void;
hide: () => void;
setVisible: (visible: boolean) => void;
enable: () => void;
disable: () => void;
setEnabled: (enabled: boolean) => void;
dispose: () => boolean;
appendToElement: (element: Element) => import("./utils/three/CSS3DRenderer").ICSS3DRenderer;
};
appendToFrontFiveContainer(container: Element): void;
appendToBehindFiveContainer(container: Element): void;
getBehindFiveElement(): Element;
clear(): void;
}