UNPKG

webgl-3d-viewer

Version:

A WebGL ThreeJS STL viewer implementation written in ES6

95 lines (70 loc) 2.99 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var ModelControls = (function () { function ModelControls(container) { var onData = arguments.length <= 1 || arguments[1] === undefined ? function () {} : arguments[1]; _classCallCheck(this, ModelControls); this.container = container; this._onData = onData; this._addListener(); } _createClass(ModelControls, [{ key: '_addListener', value: function _addListener() { var _this = this; this._dropListener = function (evt) { _this._onDrop(evt); }; this._dragOverListener = function (evt) { return evt.preventDefault(); }; var container = this.container; container.addEventListener('drop', this._dropListener, false); // for Firefox container.addEventListener('dragover', this._dragOverListener, false); } }, { key: '_removeListener', value: function _removeListener() { var container = this.container; container.removeEventListener('drop', this._dropListener, false); container.removeEventListener('dragover', this._dragOverListener, false); } }, { key: '_onDrop', value: function _onDrop() { var _this2 = this; var evt = arguments.length <= 0 || arguments[0] === undefined ? { dataTransfer: { files: [] } } : arguments[0]; evt.stopPropagation(); // Stops some browsers from redirecting. evt.preventDefault(); var files = evt.dataTransfer.files; var onLoaded = function onLoaded(evt) { _this2._onData(evt.srcElement.result); }; for (var i = 0; i < files.length; i++) { var f = files[i]; // Read the File objects in this FileList. // console.log(f.name + " - " + f.type) if (/.*\.stl$/i.test(f.name)) { var reader = new FileReader(); // Closure to capture the file information. reader.onloadend = onLoaded; reader.readAsArrayBuffer(f); } } } }, { key: 'destroy', value: function destroy() { this._removeListener(); this._onData = null; } }]); return ModelControls; })(); exports['default'] = ModelControls; module.exports = exports['default'];