in packages/miew/src/Miew.js [264:365]
Miew.prototype.init = function () {
const container = this._container;
const elem = utils.createElement('div', { class: 'miew-canvas' });
_setContainerContents(container, elem);
this._container = elem;
const frag = document.createDocumentFragment();
frag.appendChild(this._msgMode = createElement(
'div',
{ class: 'mode-message overlay' },
createElement('p', {}, 'COMPONENT EDIT MODE'),
));
frag.appendChild(this._msgAtomInfo = createElement(
'div',
{ class: 'atom-info overlay' },
createElement('p', {}, ''),
));
container.appendChild(frag);
if (this._gfx !== null) { // block double init
return true;
}
const self = this;
this._showMessage('Viewer is being initialized...');
try {
this._initGfx();
this._initListeners();
this._spinner = new Spinner({
lines: 13,
length: 28,
width: 14,
radius: 42,
color: '#fff',
zIndex: 700,
});
const target = getTopWindow();
target.addEventListener('keydown', (event) => {
self._onKeyDown(event);
});
target.addEventListener('keyup', (event) => {
self._onKeyUp(event);
});
this._objectControls = new ObjectControls(
this._gfx.root,
this._gfx.pivot,
this._gfx.camera,
this._gfx.renderer.domElement,
() => self._getAltObj(),
);
this._objectControls.addEventListener('change', (e) => {
if (settings.now.shadow.on) {
self._updateShadowCamera();
}
// route rotate, zoom, translate and translatePivot events to the external API
switch (e.action) {
case 'rotate':
self.dispatchEvent({ type: 'rotate', quaternion: e.quaternion });
break;
case 'zoom':
self.dispatchEvent({ type: 'zoom', factor: e.factor });
break;
default:
self.dispatchEvent({ type: e.action });
}
self.dispatchEvent({ type: 'transform' });
self._needRender = true;
});
const gfx = this._gfx;
this._picker = new Picker(gfx.root, gfx.camera, gfx.renderer.domElement);
this._picker.addEventListener('newpick', (event) => {
self._onPick(event);
});
this._picker.addEventListener('dblclick', (event) => {
self.center(event);
});
} catch (error) {
if (error.name === 'TypeError' && error.message === 'Cannot read property \'getExtension\' of null') {
this._showMessage('Could not create WebGL context.');
} else if (error.message.search(/webgl/i) > 1) {
this._showMessage(error.message);
} else {
this._showMessage('Viewer initialization failed.');
throw error;
}
return false;
}
// automatically load default file
const file = this._opts && this._opts.load;
if (file) {
const type = this._opts && this._opts.type;
this.load(file, { fileType: type, keepRepsInfo: true });
}
return true;
};