in modules/core/src/lib/deck.js [143:222]
constructor(props) {
props = Object.assign({}, defaultProps, props);
this.props = {};
this.width = 0; // "read-only", auto-updated from canvas
this.height = 0; // "read-only", auto-updated from canvas
// Maps view descriptors to vieports, rebuilds when width/height/viewState/views change
this.viewManager = null;
this.layerManager = null;
this.effectManager = null;
this.deckRenderer = null;
this.deckPicker = null;
this._needsRedraw = true;
this._pickRequest = {};
// Pick and store the object under the pointer on `pointerdown`.
// This object is reused for subsequent `onClick` and `onDrag*` callbacks.
this._lastPointerDownInfo = null;
this.viewState = null; // Internal view state if no callback is supplied
this.interactiveState = {
isDragging: false // Whether the cursor is down
};
// Bind methods
this._onEvent = this._onEvent.bind(this);
this._onPointerDown = this._onPointerDown.bind(this);
this._onPointerMove = this._onPointerMove.bind(this);
this._pickAndCallback = this._pickAndCallback.bind(this);
this._onRendererInitialized = this._onRendererInitialized.bind(this);
this._onRenderFrame = this._onRenderFrame.bind(this);
this._onViewStateChange = this._onViewStateChange.bind(this);
this._onInteractiveStateChange = this._onInteractiveStateChange.bind(this);
if (props.viewState && props.initialViewState) {
log.warn(
'View state tracking is disabled. Use either `initialViewState` for auto update or `viewState` for manual update.'
)();
}
if (getBrowser() === 'IE') {
log.warn('IE 11 support will be deprecated in v8.0')();
}
if (!props.gl) {
// Note: LayerManager creation deferred until gl context available
if (typeof document !== 'undefined') {
this.canvas = this._createCanvas(props);
}
}
this.animationLoop = this._createAnimationLoop(props);
this.stats = new Stats({id: 'deck.gl'});
this.metrics = {
fps: 0,
setPropsTime: 0,
updateAttributesTime: 0,
framesRedrawn: 0,
pickTime: 0,
pickCount: 0,
gpuTime: 0,
gpuTimePerFrame: 0,
cpuTime: 0,
cpuTimePerFrame: 0,
bufferMemory: 0,
textureMemory: 0,
renderbufferMemory: 0,
gpuMemory: 0
};
this._metricsCounter = 0;
this.setProps(props);
// UNSAFE/experimental prop: only set at initialization to avoid performance hit
if (props._typedArrayManagerProps) {
typedArrayManager.setProps(props._typedArrayManagerProps);
}
this.animationLoop.start();
}