UNPKG

@zxh19890103/wik

Version:

The world-class JavaScript library for building large-scale digital warehouse both on 2D and 3D.

118 lines (117 loc) 3.69 kB
import * as glMatrix from 'gl-matrix'; import { PolylineLatLngs } from '../interfaces'; import { WithLayerID } from '../interfaces'; import { ReactiveLayerRenderEffect } from './effects'; import { WithClickCancel } from './ClickCancel'; import { IList } from '../model'; import { WithParent } from '../interfaces'; import { WithRef } from '../interfaces'; import { WithLayerState } from '../interfaces'; import { WithSnapshotAbstract } from './Snapshot'; export interface ReactiveLayerSnapshot { id: string; parent: string; angle: number; position: L.LatLng; scale: L.LatLngLiteral; latlngs: PolylineLatLngs; state: any; } export interface ReactiveLayer extends WithSnapshotAbstract<ReactiveLayerSnapshot>, WithClickCancel, WithLayerID, WithLayerState<unknown>, WithParent<IList<ReactiveLayer>>, WithRef { readonly $$isReactive: true; /** * If you want to disable matrix transformation. * * which means it is an object exsiting in the root system without any sub-system. */ readonly disableMatrix: boolean; /** * container object */ $$parent: IList<ReactiveLayer>; /** * reactive layer in which this layer is. */ $$system: ReactiveLayer; /** * systems which are all in this. */ $$subSystems: ReactiveLayer[]; /** * 图形的顶点坐标 */ latlngs: PolylineLatLngs; /** * 控制图形的旋转角度 */ angle: number; /** * the start angle. */ anglePhase: number; /** * 控制图形的位置 */ position: L.LatLng; /** * 控制图形的缩放 */ scale: L.LatLngLiteral; addChild(...children: ReactiveLayer[]): void; removeChild(...children: ReactiveLayer[]): void; isChild(): boolean; traverse<T = ReactiveLayer>(every: (item: T) => void): void; setPosition(latlng: L.LatLngExpression): void; setPosition(lat: number, lng: number): void; setLat(lat: number): void; setLng(lng: number): void; setAngle(deg: number): void; setScale(s: number): void; setScale(sOnLat: number, sOnLng: number): void; setLocalLatLngs(latlngs: PolylineLatLngs): void; setLocalBounds(latlngBounds: L.LatLngBoundsExpression): void; translate(dLat: number, dLng: number): void; translateLat(dLat: number): void; translateLng(dLng: number): void; rotate(dDeg: number): void; scales(dLat: number): void; scales(dLat: number, dLng: number): void; onInit?(): void; /** * any of position/angle/scale/shape/size changes */ onTransform?(snapshot: any): void; /** * latlngs changes */ onShapeUpdate?(previousLatlngs: PolylineLatLngs): void; /** * angle changes */ onRotate?(previousAngle: number): void; /** * position changes */ onTranslate?(previousPosition: L.LatLng): void; /** * scale changes */ onScale?(previousScale: L.LatLngLiteral): void; onLayerUpdate?(snapshot: any): void; onLayerStateUpdate?(previousState: unknown): void; onRender?(effect: ReactiveLayerRenderEffect): void; afterRender?(effect: ReactiveLayerRenderEffect): void; worldMatrix: glMatrix.mat3; isMatrixNeedsUpdate: boolean; updateMatrix(): void; updateWorldMatrix(): void; localToWorld(latlng: L.LatLngExpression): L.LatLng; worldToLocal(latlngExpr: L.LatLngExpression): L.LatLng; /** * IF you want trigger render after this set call, set IfRender TRUE. * * !Warn: ifRender will be reset to FALSE after rendered; */ ifRender: boolean; requestRenderCall(effect: ReactiveLayerRenderEffect): void; }