UNPKG

windowmanager

Version:

A framework to manage multiple dockable, HTML windows

1,603 lines (1,337 loc) 314 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("windowmanager", [], factory); else if(typeof exports === 'object') exports["windowmanager"] = factory(); else root["windowmanager"] = factory(); })(this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(1); /***/ }, /* 1 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _global = __webpack_require__(2); var _global2 = _interopRequireDefault(_global); __webpack_require__(68); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // Make windowmanager global: if (typeof global !== 'undefined' && global) { global.windowmanager = _global2.default; } if (typeof window !== 'undefined' && window) { window.windowmanager = _global2.default; } exports.default = _global2.default; module.exports = exports['default']; /***/ }, /* 2 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _index = __webpack_require__(3); var _index2 = __webpack_require__(59); var _index3 = _interopRequireDefault(_index2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /* global VERSION */ var windowmanagerEventNames = ['window-create', 'window-close']; /** * A global variable exposed on windows to access the windowmanager-related API. * @namespace * @extends EventHandler * @property {String} version - version of windowmanager * @property {Object} runtime - contains runtime-specific info * @property {String} runtime.name - name of runtime (ie. Chrome, IE, OpenFin, Electron, ect) * @property {String} runtime.version * @property {Boolean} runtime.isBrowser - is this running in a browser * @property {Boolean} runtime.isElectron - is this running in Electron * @property {Boolean} runtime.isOpenFin - is this running in OpenFin * @property {Boolean} runtime.isDesktop - is this a desktop OS * @property {Boolean} runtime.isMobile - is this a mobile OS * @property {Boolean} runtime.isMain - is this the main/startup window (Electron doesn't have one atm) * @property {Window} Window * @property {geometry} geometry * @property {messagebus} messagebus - message bus for application */ var windowmanager = new _index.EventHandler(windowmanagerEventNames); windowmanager.version = ("0.12.2"); // runtime is set in the respective runtime windowmanager.runtime = { name: undefined, version: undefined, isBrowser: false, isElectron: false, isOpenFin: false, isDesktop: false, isMobile: false, isMain: false }; // Credit: http://stackoverflow.com/a/11381730 if (typeof navigator !== 'undefined') { /* eslint-disable max-len */ windowmanager.runtime.isMobile = function (a) { return (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4)) ); }(navigator.userAgent || navigator.vendor || window.opera); /* eslint-enable max-len */ windowmanager.runtime.isDesktop = !windowmanager.isMobile; } // Add geometry to global: windowmanager.geometry = _index3.default; // messagebus is set in the respective runtime exports.default = windowmanager; module.exports = exports['default']; /***/ }, /* 3 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _EventHandler = __webpack_require__(4); var _EventHandler2 = _interopRequireDefault(_EventHandler); var _SyncCallback = __webpack_require__(58); var _SyncCallback2 = _interopRequireDefault(_SyncCallback); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var genUIDE7 = function () { var lut = []; for (var i = 0; i < 256; i += 1) { lut[i] = (i < 16 ? '0' : '') + i.toString(16); } return function () { var d0 = Math.random() * 0xffffffff | 0; var d1 = Math.random() * 0xffffffff | 0; var d2 = Math.random() * 0xffffffff | 0; var d3 = Math.random() * 0xffffffff | 0; return lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff] + '-' + lut[d1 & 0xff] + lut[d1 >> 8 & 0xff] + '-' + lut[d1 >> 16 & 0x0f | 0x40] + lut[d1 >> 24 & 0xff] + '-' + lut[d2 & 0x3f | 0x80] + lut[d2 >> 8 & 0xff] + '-' + lut[d2 >> 16 & 0xff] + lut[d2 >> 24 & 0xff] + lut[d3 & 0xff] + lut[d3 >> 8 & 0xff] + lut[d3 >> 16 & 0xff] + lut[d3 >> 24 & 0xff]; }; }(); function getUniqueWindowName() { return 'window' + genUIDE7() + new Date().getTime(); }; exports.default = { getUniqueWindowName: getUniqueWindowName, EventHandler: _EventHandler2.default, SyncCallback: _SyncCallback2.default }; module.exports = exports['default']; /***/ }, /* 4 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _getIterator2 = __webpack_require__(5); var _getIterator3 = _interopRequireDefault(_getIterator2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // TODO: Use class, rather than prototype. /** * An EventHandler * @constructor * @alias EventHandler * @param {String[]} [acceptedEventHandlers=[]] - String of allowed events. */ function EventHandler() { var acceptedEventHandlers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; this._eventListeners = {}; this._eventPipes = []; // TODO: Look into making these special properties that can't be deleted? var _iteratorNormalCompletion = true; var _didIteratorError = false; var _iteratorError = undefined; try { for (var _iterator = (0, _getIterator3.default)(acceptedEventHandlers), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { var acceptedEventHandler = _step.value; this._eventListeners[acceptedEventHandler] = []; } } catch (err) { _didIteratorError = true; _iteratorError = err; } finally { try { if (!_iteratorNormalCompletion && _iterator.return) { _iterator.return(); } } finally { if (_didIteratorError) { throw _iteratorError; } } } } /** * @method * @param {String} * @param {callback} */ EventHandler.prototype.on = function (eventNames, eventListener) { eventNames = eventNames.toLowerCase().split(' '); var _iteratorNormalCompletion2 = true; var _didIteratorError2 = false; var _iteratorError2 = undefined; try { for (var _iterator2 = (0, _getIterator3.default)(eventNames), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { var eventName = _step2.value; // Check if this event can be subscribed to via this function: if (this._eventListeners[eventName] === undefined) { continue; } // Check if eventListener is a function: if (!eventListener || typeof eventListener.constructor !== 'function') { throw new Error('on requires argument \'eventListener\' of type Function'); } // Check if eventListener is already added: if (this._eventListeners[eventName].indexOf(eventListener) >= 0) { continue; } // Add event listener: this._eventListeners[eventName].push(eventListener); } } catch (err) { _didIteratorError2 = true; _iteratorError2 = err; } finally { try { if (!_iteratorNormalCompletion2 && _iterator2.return) { _iterator2.return(); } } finally { if (_didIteratorError2) { throw _iteratorError2; } } } }; /** * @method * @param {String} * @param {callback} */ EventHandler.prototype.once = function (eventName, eventListener) { function onceListener() { this.off(eventName, onceListener); eventListener.apply(this, arguments); } this.on(eventName, onceListener); }; /** * @method * @param {String} * @param {callback} */ EventHandler.prototype.off = function (eventNames, eventListener) { eventNames = eventNames.toLowerCase().split(' '); var _iteratorNormalCompletion3 = true; var _didIteratorError3 = false; var _iteratorError3 = undefined; try { for (var _iterator3 = (0, _getIterator3.default)(eventNames), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { var eventName = _step3.value; // If event listeners don't exist, bail: if (this._eventListeners[eventName] === undefined) { return; } // Check if eventListener is a function: if (!eventListener || typeof eventListener.constructor !== 'function') { throw new Error('off requires argument \'eventListener\' of type Function'); } // Remove event listener, if exists: var index = this._eventListeners[eventName].indexOf(eventListener); if (index >= 0) { this._eventListeners[eventName].splice(index, 1); } } } catch (err) { _didIteratorError3 = true; _iteratorError3 = err; } finally { try { if (!_iteratorNormalCompletion3 && _iterator3.return) { _iterator3.return(); } } finally { if (_didIteratorError3) { throw _iteratorError3; } } } }; /** * @method * @param {String} */ EventHandler.prototype.clearEvent = function (eventNames) { eventNames = eventNames.toLowerCase(); var _iteratorNormalCompletion4 = true; var _didIteratorError4 = false; var _iteratorError4 = undefined; try { for (var _iterator4 = (0, _getIterator3.default)(eventNames), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { var eventName = _step4.value; // If event listeners don't exist, bail: if (this._eventListeners[eventName] === undefined) { return; } this._eventListeners[eventName] = []; } } catch (err) { _didIteratorError4 = true; _iteratorError4 = err; } finally { try { if (!_iteratorNormalCompletion4 && _iterator4.return) { _iterator4.return(); } } finally { if (_didIteratorError4) { throw _iteratorError4; } } } }; /** * @method * @param {String} * @param {...*} args - Arguments to pass to listeners * @returns {Boolean} true if all handlers return true, else false */ EventHandler.prototype.emit = function (eventName) { for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } eventName = eventName.toLowerCase(); // If event listeners don't exist, bail: if (this._eventListeners[eventName] === undefined) { return false; } var returnVal = true; var _iteratorNormalCompletion5 = true; var _didIteratorError5 = false; var _iteratorError5 = undefined; try { for (var _iterator5 = (0, _getIterator3.default)(this._eventListeners[eventName]), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { var eventListener = _step5.value; // Call listener with the 'this' context as the current window: returnVal = returnVal && eventListener.apply(this, args) !== false; } } catch (err) { _didIteratorError5 = true; _iteratorError5 = err; } finally { try { if (!_iteratorNormalCompletion5 && _iterator5.return) { _iterator5.return(); } } finally { if (_didIteratorError5) { throw _iteratorError5; } } } var _iteratorNormalCompletion6 = true; var _didIteratorError6 = false; var _iteratorError6 = undefined; try { for (var _iterator6 = (0, _getIterator3.default)(this._eventPipes), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) { var eventHandler = _step6.value; // Call handler with the 'this' context as the current window: returnVal = returnVal && eventHandler.emit.apply(eventHandler, arguments) !== false; } } catch (err) { _didIteratorError6 = true; _iteratorError6 = err; } finally { try { if (!_iteratorNormalCompletion6 && _iterator6.return) { _iterator6.return(); } } finally { if (_didIteratorError6) { throw _iteratorError6; } } } return returnVal; }; /** * @method * @param {EventHandler} */ EventHandler.prototype.addPipe = function (eventHandler) { // Check if eventHandler is a EventHandler: if (!eventHandler || !eventHandler.emit) { throw new Error('addPipe requires argument \'eventHandler\' of type EventHandler'); } // Check if eventHandler is already added: if (this._eventPipes.indexOf(eventHandler) >= 0) { return; } // Add event handler: this._eventPipes.push(eventHandler); }; /** * @method * @param {EventHandler} */ EventHandler.prototype.removePipe = function (eventHandler) { // Check if eventHandler is a EventHandler: if (!eventHandler || !eventHandler.emit) { throw new Error('removePipe requires argument \'eventHandler\' of type EventHandler'); } // Check if eventHandler is already added: if (this._eventPipes.indexOf(eventHandler) >= 0) { return; } // Remove eventHandler, if exists: var index = this._eventPipes.indexOf(eventHandler); if (index >= 0) { this._eventPipes.splice(index, 1); } }; exports.default = EventHandler; module.exports = exports['default']; /***/ }, /* 5 */ /***/ function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(6), __esModule: true }; /***/ }, /* 6 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(7); __webpack_require__(53); module.exports = __webpack_require__(55); /***/ }, /* 7 */ /***/ function(module, exports, __webpack_require__) { __webpack_require__(8); var global = __webpack_require__(19) , hide = __webpack_require__(23) , Iterators = __webpack_require__(11) , TO_STRING_TAG = __webpack_require__(50)('toStringTag'); for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ var NAME = collections[i] , Collection = global[NAME] , proto = Collection && Collection.prototype; if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); Iterators[NAME] = Iterators.Array; } /***/ }, /* 8 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var addToUnscopables = __webpack_require__(9) , step = __webpack_require__(10) , Iterators = __webpack_require__(11) , toIObject = __webpack_require__(12); // 22.1.3.4 Array.prototype.entries() // 22.1.3.13 Array.prototype.keys() // 22.1.3.29 Array.prototype.values() // 22.1.3.30 Array.prototype[@@iterator]() module.exports = __webpack_require__(16)(Array, 'Array', function(iterated, kind){ this._t = toIObject(iterated); // target this._i = 0; // next index this._k = kind; // kind // 22.1.5.2.1 %ArrayIteratorPrototype%.next() }, function(){ var O = this._t , kind = this._k , index = this._i++; if(!O || index >= O.length){ this._t = undefined; return step(1); } if(kind == 'keys' )return step(0, index); if(kind == 'values')return step(0, O[index]); return step(0, [index, O[index]]); }, 'values'); // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) Iterators.Arguments = Iterators.Array; addToUnscopables('keys'); addToUnscopables('values'); addToUnscopables('entries'); /***/ }, /* 9 */ /***/ function(module, exports) { module.exports = function(){ /* empty */ }; /***/ }, /* 10 */ /***/ function(module, exports) { module.exports = function(done, value){ return {value: value, done: !!done}; }; /***/ }, /* 11 */ /***/ function(module, exports) { module.exports = {}; /***/ }, /* 12 */ /***/ function(module, exports, __webpack_require__) { // to indexed object, toObject with fallback for non-array-like ES3 strings var IObject = __webpack_require__(13) , defined = __webpack_require__(15); module.exports = function(it){ return IObject(defined(it)); }; /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { // fallback for non-array-like ES3 and non-enumerable old V8 strings var cof = __webpack_require__(14); module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ return cof(it) == 'String' ? it.split('') : Object(it); }; /***/ }, /* 14 */ /***/ function(module, exports) { var toString = {}.toString; module.exports = function(it){ return toString.call(it).slice(8, -1); }; /***/ }, /* 15 */ /***/ function(module, exports) { // 7.2.1 RequireObjectCoercible(argument) module.exports = function(it){ if(it == undefined)throw TypeError("Can't call method on " + it); return it; }; /***/ }, /* 16 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var LIBRARY = __webpack_require__(17) , $export = __webpack_require__(18) , redefine = __webpack_require__(33) , hide = __webpack_require__(23) , has = __webpack_require__(34) , Iterators = __webpack_require__(11) , $iterCreate = __webpack_require__(35) , setToStringTag = __webpack_require__(49) , getPrototypeOf = __webpack_require__(51) , ITERATOR = __webpack_require__(50)('iterator') , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` , FF_ITERATOR = '@@iterator' , KEYS = 'keys' , VALUES = 'values'; var returnThis = function(){ return this; }; module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ $iterCreate(Constructor, NAME, next); var getMethod = function(kind){ if(!BUGGY && kind in proto)return proto[kind]; switch(kind){ case KEYS: return function keys(){ return new Constructor(this, kind); }; case VALUES: return function values(){ return new Constructor(this, kind); }; } return function entries(){ return new Constructor(this, kind); }; }; var TAG = NAME + ' Iterator' , DEF_VALUES = DEFAULT == VALUES , VALUES_BUG = false , proto = Base.prototype , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] , $default = $native || getMethod(DEFAULT) , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined , $anyNative = NAME == 'Array' ? proto.entries || $native : $native , methods, key, IteratorPrototype; // Fix native if($anyNative){ IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); if(IteratorPrototype !== Object.prototype){ // Set @@toStringTag to native iterators setToStringTag(IteratorPrototype, TAG, true); // fix for some old engines if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); } } // fix Array#{values, @@iterator}.name in V8 / FF if(DEF_VALUES && $native && $native.name !== VALUES){ VALUES_BUG = true; $default = function values(){ return $native.call(this); }; } // Define iterator if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ hide(proto, ITERATOR, $default); } // Plug for library Iterators[NAME] = $default; Iterators[TAG] = returnThis; if(DEFAULT){ methods = { values: DEF_VALUES ? $default : getMethod(VALUES), keys: IS_SET ? $default : getMethod(KEYS), entries: $entries }; if(FORCED)for(key in methods){ if(!(key in proto))redefine(proto, key, methods[key]); } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); } return methods; }; /***/ }, /* 17 */ /***/ function(module, exports) { module.exports = true; /***/ }, /* 18 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(19) , core = __webpack_require__(20) , ctx = __webpack_require__(21) , hide = __webpack_require__(23) , PROTOTYPE = 'prototype'; var $export = function(type, name, source){ var IS_FORCED = type & $export.F , IS_GLOBAL = type & $export.G , IS_STATIC = type & $export.S , IS_PROTO = type & $export.P , IS_BIND = type & $export.B , IS_WRAP = type & $export.W , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) , expProto = exports[PROTOTYPE] , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] , key, own, out; if(IS_GLOBAL)source = name; for(key in source){ // contains in native own = !IS_FORCED && target && target[key] !== undefined; if(own && key in exports)continue; // export native or passed out = own ? target[key] : source[key]; // prevent global pollution for namespaces exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] // bind timers to global for call from export context : IS_BIND && own ? ctx(out, global) // wrap global constructors for prevent change them in library : IS_WRAP && target[key] == out ? (function(C){ var F = function(a, b, c){ if(this instanceof C){ switch(arguments.length){ case 0: return new C; case 1: return new C(a); case 2: return new C(a, b); } return new C(a, b, c); } return C.apply(this, arguments); }; F[PROTOTYPE] = C[PROTOTYPE]; return F; // make static versions for prototype methods })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; // export proto methods to core.%CONSTRUCTOR%.methods.%NAME% if(IS_PROTO){ (exports.virtual || (exports.virtual = {}))[key] = out; // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME% if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out); } } }; // type bitmap $export.F = 1; // forced $export.G = 2; // global $export.S = 4; // static $export.P = 8; // proto $export.B = 16; // bind $export.W = 32; // wrap $export.U = 64; // safe $export.R = 128; // real proto method for `library` module.exports = $export; /***/ }, /* 19 */ /***/ function(module, exports) { // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 var global = module.exports = typeof window != 'undefined' && window.Math == Math ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef /***/ }, /* 20 */ /***/ function(module, exports) { var core = module.exports = {version: '2.4.0'}; if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef /***/ }, /* 21 */ /***/ function(module, exports, __webpack_require__) { // optional / simple context binding var aFunction = __webpack_require__(22); module.exports = function(fn, that, length){ aFunction(fn); if(that === undefined)return fn; switch(length){ case 1: return function(a){ return fn.call(that, a); }; case 2: return function(a, b){ return fn.call(that, a, b); }; case 3: return function(a, b, c){ return fn.call(that, a, b, c); }; } return function(/* ...args */){ return fn.apply(that, arguments); }; }; /***/ }, /* 22 */ /***/ function(module, exports) { module.exports = function(it){ if(typeof it != 'function')throw TypeError(it + ' is not a function!'); return it; }; /***/ }, /* 23 */ /***/ function(module, exports, __webpack_require__) { var dP = __webpack_require__(24) , createDesc = __webpack_require__(32); module.exports = __webpack_require__(28) ? function(object, key, value){ return dP.f(object, key, createDesc(1, value)); } : function(object, key, value){ object[key] = value; return object; }; /***/ }, /* 24 */ /***/ function(module, exports, __webpack_require__) { var anObject = __webpack_require__(25) , IE8_DOM_DEFINE = __webpack_require__(27) , toPrimitive = __webpack_require__(31) , dP = Object.defineProperty; exports.f = __webpack_require__(28) ? Object.defineProperty : function defineProperty(O, P, Attributes){ anObject(O); P = toPrimitive(P, true); anObject(Attributes); if(IE8_DOM_DEFINE)try { return dP(O, P, Attributes); } catch(e){ /* empty */ } if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); if('value' in Attributes)O[P] = Attributes.value; return O; }; /***/ }, /* 25 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(26); module.exports = function(it){ if(!isObject(it))throw TypeError(it + ' is not an object!'); return it; }; /***/ }, /* 26 */ /***/ function(module, exports) { module.exports = function(it){ return typeof it === 'object' ? it !== null : typeof it === 'function'; }; /***/ }, /* 27 */ /***/ function(module, exports, __webpack_require__) { module.exports = !__webpack_require__(28) && !__webpack_require__(29)(function(){ return Object.defineProperty(__webpack_require__(30)('div'), 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 28 */ /***/ function(module, exports, __webpack_require__) { // Thank's IE8 for his funny defineProperty module.exports = !__webpack_require__(29)(function(){ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; }); /***/ }, /* 29 */ /***/ function(module, exports) { module.exports = function(exec){ try { return !!exec(); } catch(e){ return true; } }; /***/ }, /* 30 */ /***/ function(module, exports, __webpack_require__) { var isObject = __webpack_require__(26) , document = __webpack_require__(19).document // in old IE typeof document.createElement is 'object' , is = isObject(document) && isObject(document.createElement); module.exports = function(it){ return is ? document.createElement(it) : {}; }; /***/ }, /* 31 */ /***/ function(module, exports, __webpack_require__) { // 7.1.1 ToPrimitive(input [, PreferredType]) var isObject = __webpack_require__(26); // instead of the ES6 spec version, we didn't implement @@toPrimitive case // and the second argument - flag - preferred type is a string module.exports = function(it, S){ if(!isObject(it))return it; var fn, val; if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; throw TypeError("Can't convert object to primitive value"); }; /***/ }, /* 32 */ /***/ function(module, exports) { module.exports = function(bitmap, value){ return { enumerable : !(bitmap & 1), configurable: !(bitmap & 2), writable : !(bitmap & 4), value : value }; }; /***/ }, /* 33 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(23); /***/ }, /* 34 */ /***/ function(module, exports) { var hasOwnProperty = {}.hasOwnProperty; module.exports = function(it, key){ return hasOwnProperty.call(it, key); }; /***/ }, /* 35 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var create = __webpack_require__(36) , descriptor = __webpack_require__(32) , setToStringTag = __webpack_require__(49) , IteratorPrototype = {}; // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() __webpack_require__(23)(IteratorPrototype, __webpack_require__(50)('iterator'), function(){ return this; }); module.exports = function(Constructor, NAME, next){ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); setToStringTag(Constructor, NAME + ' Iterator'); }; /***/ }, /* 36 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) var anObject = __webpack_require__(25) , dPs = __webpack_require__(37) , enumBugKeys = __webpack_require__(47) , IE_PROTO = __webpack_require__(44)('IE_PROTO') , Empty = function(){ /* empty */ } , PROTOTYPE = 'prototype'; // Create object with fake `null` prototype: use iframe Object with cleared prototype var createDict = function(){ // Thrash, waste and sodomy: IE GC bug var iframe = __webpack_require__(30)('iframe') , i = enumBugKeys.length , lt = '<' , gt = '>' , iframeDocument; iframe.style.display = 'none'; __webpack_require__(48).appendChild(iframe); iframe.src = 'javascript:'; // eslint-disable-line no-script-url // createDict = iframe.contentWindow.Object; // html.removeChild(iframe); iframeDocument = iframe.contentWindow.document; iframeDocument.open(); iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); iframeDocument.close(); createDict = iframeDocument.F; while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; return createDict(); }; module.exports = Object.create || function create(O, Properties){ var result; if(O !== null){ Empty[PROTOTYPE] = anObject(O); result = new Empty; Empty[PROTOTYPE] = null; // add "__proto__" for Object.getPrototypeOf polyfill result[IE_PROTO] = O; } else result = createDict(); return Properties === undefined ? result : dPs(result, Properties); }; /***/ }, /* 37 */ /***/ function(module, exports, __webpack_require__) { var dP = __webpack_require__(24) , anObject = __webpack_require__(25) , getKeys = __webpack_require__(38); module.exports = __webpack_require__(28) ? Object.defineProperties : function defineProperties(O, Properties){ anObject(O); var keys = getKeys(Properties) , length = keys.length , i = 0 , P; while(length > i)dP.f(O, P = keys[i++], Properties[P]); return O; }; /***/ }, /* 38 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.14 / 15.2.3.14 Object.keys(O) var $keys = __webpack_require__(39) , enumBugKeys = __webpack_require__(47); module.exports = Object.keys || function keys(O){ return $keys(O, enumBugKeys); }; /***/ }, /* 39 */ /***/ function(module, exports, __webpack_require__) { var has = __webpack_require__(34) , toIObject = __webpack_require__(12) , arrayIndexOf = __webpack_require__(40)(false) , IE_PROTO = __webpack_require__(44)('IE_PROTO'); module.exports = function(object, names){ var O = toIObject(object) , i = 0 , result = [] , key; for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); // Don't enum bug & hidden keys while(names.length > i)if(has(O, key = names[i++])){ ~arrayIndexOf(result, key) || result.push(key); } return result; }; /***/ }, /* 40 */ /***/ function(module, exports, __webpack_require__) { // false -> Array#indexOf // true -> Array#includes var toIObject = __webpack_require__(12) , toLength = __webpack_require__(41) , toIndex = __webpack_require__(43); module.exports = function(IS_INCLUDES){ return function($this, el, fromIndex){ var O = toIObject($this) , length = toLength(O.length) , index = toIndex(fromIndex, length) , value; // Array#includes uses SameValueZero equality algorithm if(IS_INCLUDES && el != el)while(length > index){ value = O[index++]; if(value != value)return true; // Array#toIndex ignores holes, Array#includes - not } else for(;length > index; index++)if(IS_INCLUDES || index in O){ if(O[index] === el)return IS_INCLUDES || index || 0; } return !IS_INCLUDES && -1; }; }; /***/ }, /* 41 */ /***/ function(module, exports, __webpack_require__) { // 7.1.15 ToLength var toInteger = __webpack_require__(42) , min = Math.min; module.exports = function(it){ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 }; /***/ }, /* 42 */ /***/ function(module, exports) { // 7.1.4 ToInteger var ceil = Math.ceil , floor = Math.floor; module.exports = function(it){ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); }; /***/ }, /* 43 */ /***/ function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(42) , max = Math.max , min = Math.min; module.exports = function(index, length){ index = toInteger(index); return index < 0 ? max(index + length, 0) : min(index, length); }; /***/ }, /* 44 */ /***/ function(module, exports, __webpack_require__) { var shared = __webpack_require__(45)('keys') , uid = __webpack_require__(46); module.exports = function(key){ return shared[key] || (shared[key] = uid(key)); }; /***/ }, /* 45 */ /***/ function(module, exports, __webpack_require__) { var global = __webpack_require__(19) , SHARED = '__core-js_shared__' , store = global[SHARED] || (global[SHARED] = {}); module.exports = function(key){ return store[key] || (store[key] = {}); }; /***/ }, /* 46 */ /***/ function(module, exports) { var id = 0 , px = Math.random(); module.exports = function(key){ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); }; /***/ }, /* 47 */ /***/ function(module, exports) { // IE 8- don't enum bug keys module.exports = ( 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' ).split(','); /***/ }, /* 48 */ /***/ function(module, exports, __webpack_require__) { module.exports = __webpack_require__(19).document && document.documentElement; /***/ }, /* 49 */ /***/ function(module, exports, __webpack_require__) { var def = __webpack_require__(24).f , has = __webpack_require__(34) , TAG = __webpack_require__(50)('toStringTag'); module.exports = function(it, tag, stat){ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); }; /***/ }, /* 50 */ /***/ function(module, exports, __webpack_require__) { var store = __webpack_require__(45)('wks') , uid = __webpack_require__(46) , Symbol = __webpack_require__(19).Symbol , USE_SYMBOL = typeof Symbol == 'function'; var $exports = module.exports = function(name){ return store[name] || (store[name] = USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); }; $exports.store = store; /***/ }, /* 51 */ /***/ function(module, exports, __webpack_require__) { // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) var has = __webpack_require__(34) , toObject = __webpack_require__(52) , IE_PROTO = __webpack_require__(44)('IE_PROTO') , ObjectProto = Object.prototype; module.exports = Object.getPrototypeOf || function(O){ O = toObject(O); if(has(O, IE_PROTO))return O[IE_PROTO]; if(typeof O.constructor == 'function' && O instanceof O.constructor){ return O.constructor.prototype; } return O instanceof Object ? ObjectProto : null; }; /***/ }, /* 52 */ /***/ function(module, exports, __webpack_require__) { // 7.1.13 ToObject(argument) var defined = __webpack_require__(15); module.exports = function(it){ return Object(defined(it)); }; /***/ }, /* 53 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; var $at = __webpack_require__(54)(true); // 21.1.3.27 String.prototype[@@iterator]() __webpack_require__(16)(String, 'String', function(iterated){ this._t = String(iterated); // target this._i = 0; // next index // 21.1.5.2.1 %StringIteratorPrototype%.next() }, function(){ var O = this._t , index = this._i , point; if(index >= O.length)return {value: undefined, done: true}; point = $at(O, index); this._i += point.length; return {value: point, done: false}; }); /***/ }, /* 54 */ /***/ function(module, exports, __webpack_require__) { var toInteger = __webpack_require__(42) , defined = __webpack_require__(15); // true -> String#at // false -> String#codePointAt module.exports = function(TO_STRING){ return function(that, pos){ var s = String(defined(that)) , i = toInteger(pos) , l = s.length , a, b; if(i < 0 || i >= l)return TO_STRING ? '' : undefined; a = s.charCodeAt(i); return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff ? TO_STRING ? s.charAt(i) : a : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; }; }; /***/ }, /* 55 */ /***/ function(module, exports, __webpack_require__) { var anObject = __webpack_require__(25) , get = __webpack_require__(56); module.exports = __webpack_require__(20).getIterator = function(it){ var iterFn = get(it); if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!'); return anObject(iterFn.call(it)); }; /***/ }, /* 56 */ /***/ function(module, exports, __webpack_require__) { var classof = __webpack_require__(57) , ITERATOR = __webpack_require__(50)('iterator') , Iterators = __webpack_require__(11); module.exports = __webpack_require__(20).getIteratorMethod = function(it){ if(it != undefined)return it[ITERATOR] || it['@@iterator'] || Iterators[classof(it)]; }; /***/ }, /* 57 */ /***/ function(module, exports, __webpack_require__) { // getting tag from 19.1.3.6 Object.prototype.toString() var cof = __webpack_require__(14) , TAG = __webpack_require__(50)('toStringTag') // ES3 wrong here , ARG = cof(function(){ return arguments; }()) == 'Arguments'; // fallback for IE11 Script Access Denied error var tryGet = function(it, key){ try { return it[key]; } catch(e){ /* empty */ } }; module.exports = function(it){ var O, T, B; return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T // builtinTag case : ARG ? cof(O) // ES3 arguments fallback : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; }; /***/ }, /* 58 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function SyncCallback(callback) { if (!(this instanceof SyncCallback)) { return new SyncCallback(callback); } this.callback = callback; this.count = 0; } SyncCallback.prototype.ref = function (callback) { var thisRef = this; this.count += 1; return function () { if (callback) { callback.apply(undefined, arguments); } thisRef._deref(); }; }; SyncCallback.prototype._deref = function () { this.count -= 1; if (this.count <= 0) { this.callback(); } }; exports.default = SyncCallback; module.exports = exports["default"]; /***/ }, /* 59 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _Vector = __webpack_require__(60); var _Vector2 = _interopRequireDefault(_Vector); var _BoundingBox = __webpack_require__(66); var _BoundingBox2 = _interopRequireDefault(_BoundingBox); var _CollisionMesh = __webpack_require__(67); var _CollisionMesh2 = _interopRequireDefault(_CollisionMesh); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * A library to handler geometry calculations. * @namespace * @alias geometry * @property {BoundingBox} * @property {CollisionMesh} * @property {Position} * @property {Size} * @property {Vector} */ exports.default = { BoundingBox: _BoundingBox2.default, CollisionMesh: _CollisionMesh2.default, /** * A Position object. Alias of {@link Vector}. * @class * @alias Position * @see {@link Vector} for further information. */ Position: _Vector2.default, /** * A Size object. Alias of {@link Vector}. * @class * @alias Size * @see {@link Vector} for further information. */ Size: _Vector2.default, Vector: _Vector2.default }; // TODO: Rewrite in class form, so can make use of get/set, and private. // TODO: Add asVector, asBoundingBox, asCollisionMesh to all classes (as a get), // to easily coerce types! // TODO: Rewrite the classes to have more simplified functions (don't have complex // functions that have very specific purposes). // TODO: Add proper argument checking! Not all methods have checks! module.exports = exports['default']; /***/ }, /* 60 */ /***/ function(module, exports, __webpack_require__) { 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _classCallCheck2 = __webpack_require__(61); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = __webpack_require__(62); var _createClass3 = _interopRequireDefault(_createClass2); var _BoundingBox = __webpack_require__(66); var _BoundingBox2 = _interopRequireDefault(_BoundingBox); var _CollisionMesh = __webpack_require__(67); var _CollisionMesh2 = _interopRequireDefault(_CollisionMesh); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * A Vector class. */ var Vector = function () { /** * @param {Number} left - The position of the vector's x-axis. * @param {Number} top - The position of the vector's y-axis. * @returns {Vector} An instance of Vector */ function Vector(left, top) { (0, _classCallCheck3.default)(this, Vector); var obj = left; if (obj && obj.constructor !== Number) { // new Vector(obj) this.left = obj.left; this.top = obj.top; } else { // new Vector(left, top) this.left = left; this.top = top; } } /** * Clone the current vector to a new object. * @returns {Vector} A clone of this instance */ (0, _createClass3.default)(Vector, [{ key: 'clone', value: function clone() { return new Vector(this); } /** * Checks if any property on `this` is NaN. * @returns {Boolean} */ }, { key: 'isNaN', value: function (_isNaN) { function isNaN() { return _isNaN.apply(this, arguments); } isNaN.toString = function () { return _isNaN.toString(); }; return isNaN; }(function () { return isNaN(this.left) || isNaN(this.top); }) /** * Resolve this object down to a {@link Vector} instance. * Since this instance is already a vector, it returns itself. * @returns {Vector} self */ }, { key: 'getVector', value: function getVector() { // We have this method, so any prototype in this script will return their position, // and if they are one it will return itself. // This simplifies code, and prevents having to do a ton of checks. return this; } /** * Returns a BoundingBox instance version of this vector similar to:<br> * ```javascript * new BoundingBox(Vector.left, Vector.top, Vector.left, Vector.top) * ``` * @returns {BoundingBox} */ }, { key: 'getBoundingBox', value: function getBoundingBox() { // We have this method, so any prototype in this script will return their position, // and if they are one it will return itself. // This simplifies code, and prevents having to do a ton of checks. return new _BoundingBox2.default(this.left, this.top, this.left, this.top); } /** * Returns a {@link CollisionMesh} instance version of this vector similar to:<br> * ```javascript * new CollisionMesh(Vector.getBoundingBox()) * ``` * @returns {CollisionMesh}