UNPKG

glance-dom

Version:
123 lines (91 loc) 3.22 kB
'use strict'; var _fs = require('fs'); var _fs2 = _interopRequireDefault(_fs); var _glanceParser = require('glance-parser'); var _glanceParser2 = _interopRequireDefault(_glanceParser); var _defaultOptions = require('./processor/default-options'); var _defaultOptions2 = _interopRequireDefault(_defaultOptions); var _version = require('./version'); var _version2 = _interopRequireDefault(_version); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function CreateGlanceDOM() { var _this = this; this.addedExtensions = []; this.loadGlanceDOM = function () { var glanceDOMScript = _fs2.default.readFileSync(__dirname + '/../../dist/glance-dom.js', 'utf-8'); return _this.execute(function (script, extensions) { try { window.localStorage.setItem('glanceDOM', script); } catch (e) {} eval(script); extensions.forEach(glanceDOM.addExtension); }, glanceDOMScript, _this.addedExtensions); }; this.ensureGlanceDOMLoadedAndExecute = function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } if (!_this.execute) throw Error('Please provide an execute function using setExecute'); var glanceLoaded = _this.execute(function (extensions) { if (typeof glanceDOM === 'function') return true; try { if (!!eval(window.localStorage.getItem('glanceDOM'))) { extensions.forEach(glanceDOM.addExtension); return true; } } catch (e) {} return false; }, _this.addedExtensions); if (glanceLoaded.then) { return glanceLoaded.then(function (loaded) { var promise = loaded ? Promise.resolve() : _this.loadGlanceDOM(); return promise.then(function () { return _this.execute.apply(_this.execute, args); }); }); } else { if (!glanceLoaded) { _this.loadGlanceDOM(); } return _this.execute.apply(_this.execute, args); } }; this.selector = function (reference) { var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return _this.ensureGlanceDOMLoadedAndExecute(function (reference, config) { return glanceDOM(reference, config); }, reference, config); }; this.selector.parser = _glanceParser2.default; this.selector.defaultOptions = _defaultOptions2.default; this.selector.setDefaultOptions = function (options) { return _this.ensureGlanceDOMLoadedAndExecute(function (options) { return glanceDOM.setDefaultOptions(options); }, options); }; this.selector.getConfig = function () { return _this.ensureGlanceDOMLoadedAndExecute(function () { return glanceDOM.getConfig(); }); }; this.selector.setExecute = function (execute) { _this.execute = execute; }; this.selector.addExtension = function (extension) { _this.addedExtensions.push(extension); }; this.selector.addLabel = function (label, value) { var labels = {}; labels[label] = value; _this.addedExtensions.push({ labels: labels }); }; Object.defineProperty(this.selector, 'version', { get: function get() { return _version2.default; } }); return this.selector; } var Glance = new CreateGlanceDOM(); Glance.default = Glance; module.exports = Glance;