/
node.ts
40 lines (34 loc) · 1.27 KB
/
node.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Polyfill for loaders
import '@loaders.gl/polyfills';
// Polyfill with JSDOM
import {JSDOM} from 'jsdom';
const dom = new JSDOM('<!DOCTYPE html>');
// These globals are required by @jupyter-widgets/base
const _global: any = globalThis;
/** global setTimeout, clearTimeout */
_global.window = dom.window;
_global.navigator = dom.window.navigator;
_global.document = dom.window.document;
_global.Element = dom.window.Element;
_global.__JSDOM__ = true;
_global.HTMLCanvasElement = dom.window.HTMLCanvasElement;
_global.HTMLVideoElement = dom.window.HTMLVideoElement;
_global.requestAnimationFrame = cb => setTimeout(cb, 0);
_global.cancelAnimationFrame = t => clearTimeout(t);
import {gl} from '@deck.gl/test-utils';
import {mockCanvasApi} from './utils/mock-canvas-api';
// Mock Canvas/Context2D calls
mockCanvasApi(dom.window.HTMLCanvasElement);
// Create a dummy canvas for the headless gl context
const canvas = globalThis.document.createElement('canvas');
canvas.width = gl.drawingBufferWidth;
canvas.height = gl.drawingBufferHeight;
// Deck class uses client width/height to calculate viewport sizes
Object.defineProperty(canvas, 'clientWidth', {
value: canvas.width
});
Object.defineProperty(canvas, 'clientHeight', {
value: canvas.height
});
gl.canvas = canvas;
import './modules';