/
standalone.js
68 lines (56 loc) · 1.99 KB
/
standalone.js
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
const msgpack = require('msgpack-lite');
const fflate = require('fflate');
const TFEdit = require('./transferFunctionEditor');
const serialize = require('./core/lib/helpers/serialize');
const K3D = require('./core/Core');
const ThreeJsProvider = require('./providers/threejs/provider');
const MsgpackCodec = msgpack.createCodec({ preset: true });
window.Float16Array = require('./core/lib/helpers/float16Array');
MsgpackCodec.addExtPacker(0x20, Float16Array, (val) => val);
MsgpackCodec.addExtUnpacker(0x20, (val) => Float16Array(val.buffer));
require('katex/dist/katex.min.css');
require('lil-gui/dist/lil-gui.css');
function msgpackDecode(data) {
return msgpack.decode(data, { codec: MsgpackCodec });
}
function CreateK3DAndLoadBinarySnapshot(data, targetDOMNode) {
return new Promise((resolve, reject) => {
let K3DInstance;
fflate.unzlib(new Uint8Array(data), (err, decompressData) => {
if (!err) {
data = decompressData;
}
data = msgpackDecode(data);
try {
K3DInstance = new K3D(
ThreeJsProvider,
targetDOMNode,
data.plot,
);
} catch (e) {
console.log(e);
return reject(e);
}
K3DInstance.setSnapshot(data).then(() => {
setTimeout(() => {
if (data.plot.camera.length > 0) {
K3DInstance.setCamera(data.plot.camera);
K3DInstance.render();
}
}, 10);
resolve(K3DInstance);
});
});
});
}
module.exports = {
K3D,
msgpackDecode,
serialize,
CreateK3DAndLoadBinarySnapshot,
TransferFunctionEditor: TFEdit.transferFunctionEditor,
TransferFunctionModel: TFEdit.transferFunctionModel,
TransferFunctionView: TFEdit.transferFunctionView,
ThreeJsProvider,
version: require('./version').version,
};