UNPKG

webgl-3d-viewer

Version:

A WebGL ThreeJS STL viewer implementation written in ES6

123 lines (94 loc) 4.42 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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } var _lodashStringTemplate = require('lodash/string/template'); var _lodashStringTemplate2 = _interopRequireDefault(_lodashStringTemplate); var _lodashObjectMerge = require('lodash/object/merge'); var _lodashObjectMerge2 = _interopRequireDefault(_lodashObjectMerge); var _lodashCollectionEach = require('lodash/collection/each'); var _lodashCollectionEach2 = _interopRequireDefault(_lodashCollectionEach); var ProgressBar = (function () { function ProgressBar(domElm) { var config = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; _classCallCheck(this, ProgressBar); this._container = domElm; this._progressElm = null; this._defaultConfig = { visibility: 'hidden', progress: 0, unit: '%', text: 'Preview ', progressText: 'Preview' }; this.template = (0, _lodashStringTemplate2['default'])('\n <div class="viewer__progress-bar viewer__progress-bar--<%- visibility %>">\n <div class="viewer__progress-bar__container">\n <% if(progress > 0) { %>\n <span class="viewer__progress-bar__text"><%- text %></span>\n <span class="viewer__progress-bar__count"><%- progress %></span>\n <span class="viewer__progress-bar__unit"><%- unit %></span>\n <% } else { %>\n <span class="viewer__progress-bar__text"><%- progressText %></span>\n <% } %>\n </div>\n </div>\n '.trim()); this._config = (0, _lodashObjectMerge2['default'])({}, this._defaultConfig, config); this._updateProgress(); } _createClass(ProgressBar, [{ key: 'show', value: function show() { this._config.visibility = 'visible'; if (this._progressElm.classList) { this._progressElm.classList.remove('viewer__progress-bar--hidden'); this._progressElm.classList.add('viewer__progress-bar--visible'); } else { this._updateProgress(); } } }, { key: 'hide', value: function hide() { this._config.visibility = 'hidden'; if (this._progressElm.classList) { this._progressElm.classList.add('viewer__progress-bar--hidden'); this._progressElm.classList.remove('viewer__progress-bar--visible'); } else { this._updateProgress(); } } }, { key: '_updateProgress', value: function _updateProgress() { var elm = this.template(this._config); var domNodes = this._container.getElementsByClassName('viewer__progress-bar'); if (domNodes.length > 0) { (0, _lodashCollectionEach2['default'])(domNodes, function (node) { if (node) { node.remove(); } }); this._progressElm = null; } var el = document.createElement('div'); el.innerHTML = elm; this._container.appendChild(el.childNodes[0]); this._progressElm = elm; } }, { key: 'destroy', value: function destroy() { var domElms = this._container.getElementsByClassName('viewer__progress-bar'); (0, _lodashCollectionEach2['default'])(domElms, function (node) { node.remove(); }); } }, { key: 'progress', set: function set(progress) { if (progress) { this._config.progress = parseInt(progress, 10); this._updateProgress(); } }, get: function get() { return this._config.progress; } }]); return ProgressBar; })(); exports['default'] = ProgressBar; module.exports = exports['default'];