├── .gitignore ├── LICENSE ├── README.md ├── build ├── matter-collision-events.js └── matter-collision-events.min.js ├── docs ├── examples │ ├── base.js │ └── basic.js ├── index.html └── lib │ ├── matter-collision-events.js │ ├── matter-tools.demo.js │ ├── matter-tools.demo.min.js │ └── matter.min.js ├── package.json ├── src └── entry.js ├── webpack.config.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | 33 | # Optional npm cache directory 34 | .npm 35 | 36 | # Optional REPL history 37 | .node_repl_history 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 David Xu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # matter-collision-events 2 | 3 | matter-collision-events is a [Matter.js](https://github.com/liabru/matter-js) plugin that adds per-body collision events. 4 | 5 | ## Installing 6 | 7 | `npm install matter-collision-events` 8 | 9 | ## Usage 10 | 11 | Refer to [the official guide on using plugins](https://github.com/liabru/matter-js/wiki/Using-plugins) for step-by-step instructions. `matter-collision-events` can be included in the browser or imported via modules. 12 | 13 | You can call `Matter.use('matter-collision-events')` to install the plugin itself for usage. 14 | 15 | This plugin triggers three new events on Matter.Body: 16 | 17 | 1. `onCollide` 18 | 2. `onCollideEnd` 19 | 3. `onCollideActive` 20 | 21 | These events correspond to the Matter.js events `collisionStart`, `collisionActive`, and `collisionEnd`, respectively. You can listen to these events via [`Matter.Events`](http://brm.io/matter-js/docs/classes/Events.html#method_on). 22 | 23 | This plugin also extends Matter.Body with three convenience functions: 24 | 25 | 1. `Matter.Body.onCollide(callback)` 26 | 2. `Matter.Body.onCollideEnd(callback)` 27 | 3. `Matter.Body.onCollideActive(callback)` 28 | 29 | You can register event callbacks by providing a function of type `( pair: `[`Matter.Pair`](http://brm.io/matter-js/docs/classes/Pair.html)`) => void`: 30 | 31 | Example usage can be found under the `docs` folder, which contains [a basic example of its usage](/docs/examples/basic.js). 32 | 33 | ## Demo 34 | 35 | [View the demo here.](https://dxu.github.io/matter-collision-events) 36 | 37 | ## License 38 | 39 | MIT 40 | -------------------------------------------------------------------------------- /build/matter-collision-events.js: -------------------------------------------------------------------------------- 1 | (function webpackUniversalModuleDefinition(root, factory) { 2 | if(typeof exports === 'object' && typeof module === 'object') 3 | module.exports = factory(require("matter-js")); 4 | else if(typeof define === 'function' && define.amd) 5 | define(["matter-js"], factory); 6 | else if(typeof exports === 'object') 7 | exports["MatterCollisionEvents"] = factory(require("matter-js")); 8 | else 9 | root["MatterCollisionEvents"] = factory(root["Matter"]); 10 | })(this, function(__WEBPACK_EXTERNAL_MODULE_0__) { 11 | return /******/ (function(modules) { // webpackBootstrap 12 | /******/ // The module cache 13 | /******/ var installedModules = {}; 14 | 15 | /******/ // The require function 16 | /******/ function __webpack_require__(moduleId) { 17 | 18 | /******/ // Check if module is in cache 19 | /******/ if(installedModules[moduleId]) 20 | /******/ return installedModules[moduleId].exports; 21 | 22 | /******/ // Create a new module (and put it into the cache) 23 | /******/ var module = installedModules[moduleId] = { 24 | /******/ i: moduleId, 25 | /******/ l: false, 26 | /******/ exports: {} 27 | /******/ }; 28 | 29 | /******/ // Execute the module function 30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 31 | 32 | /******/ // Flag the module as loaded 33 | /******/ module.l = true; 34 | 35 | /******/ // Return the exports of the module 36 | /******/ return module.exports; 37 | /******/ } 38 | 39 | 40 | /******/ // expose the modules object (__webpack_modules__) 41 | /******/ __webpack_require__.m = modules; 42 | 43 | /******/ // expose the module cache 44 | /******/ __webpack_require__.c = installedModules; 45 | 46 | /******/ // identity function for calling harmony imports with the correct context 47 | /******/ __webpack_require__.i = function(value) { return value; }; 48 | 49 | /******/ // define getter function for harmony exports 50 | /******/ __webpack_require__.d = function(exports, name, getter) { 51 | /******/ if(!__webpack_require__.o(exports, name)) { 52 | /******/ Object.defineProperty(exports, name, { 53 | /******/ configurable: false, 54 | /******/ enumerable: true, 55 | /******/ get: getter 56 | /******/ }); 57 | /******/ } 58 | /******/ }; 59 | 60 | /******/ // getDefaultExport function for compatibility with non-harmony modules 61 | /******/ __webpack_require__.n = function(module) { 62 | /******/ var getter = module && module.__esModule ? 63 | /******/ function getDefault() { return module['default']; } : 64 | /******/ function getModuleExports() { return module; }; 65 | /******/ __webpack_require__.d(getter, 'a', getter); 66 | /******/ return getter; 67 | /******/ }; 68 | 69 | /******/ // Object.prototype.hasOwnProperty.call 70 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 71 | 72 | /******/ // __webpack_public_path__ 73 | /******/ __webpack_require__.p = ""; 74 | 75 | /******/ // Load entry module and return exports 76 | /******/ return __webpack_require__(__webpack_require__.s = 1); 77 | /******/ }) 78 | /************************************************************************/ 79 | /******/ ([ 80 | /* 0 */ 81 | /***/ (function(module, exports) { 82 | 83 | module.exports = __WEBPACK_EXTERNAL_MODULE_0__; 84 | 85 | /***/ }), 86 | /* 1 */ 87 | /***/ (function(module, exports, __webpack_require__) { 88 | 89 | var Matter = __webpack_require__(0); 90 | var MatterCollisionEvents = { 91 | name: 'matter-collision-events', 92 | version: '0.1.5', 93 | for: 'matter-js@^0.12.0', 94 | install: function(matter) { 95 | // add the onCollide, onCollideEnd, and onCollideActive callback handlers 96 | // to the native Matter.Body created 97 | var create = matter.Body.create; 98 | matter.Body.create = function() { 99 | var body = create.apply(null, arguments); 100 | body.onCollide = function(cb) { body._mceOC = cb; } 101 | body.onCollideEnd = function(cb) { body._mceOCE = cb; } 102 | body.onCollideActive = function(cb) { body._mceOCA = cb; } 103 | return body; 104 | } 105 | matter.after('Engine.create', function() { 106 | matter.Events.on(this, 'collisionStart', function(event) { 107 | event.pairs.map(function(pair) { 108 | matter.Events.trigger(pair.bodyA, 'onCollide', { pair : pair }); 109 | matter.Events.trigger(pair.bodyB, 'onCollide', { pair : pair }); 110 | pair.bodyA._mceOC && 111 | pair.bodyA._mceOC(pair) 112 | pair.bodyB._mceOC && 113 | pair.bodyB._mceOC(pair) 114 | }); 115 | }); 116 | 117 | matter.Events.on(this, 'collisionActive', function(event) { 118 | event.pairs.map(function(pair) { 119 | matter.Events.trigger( 120 | pair.bodyA, 121 | 'onCollideActive', 122 | { pair: pair } 123 | ); 124 | matter.Events.trigger( 125 | pair.bodyB, 126 | 'onCollideActive', 127 | { pair: pair } 128 | ); 129 | pair.bodyA._mceOCA && 130 | pair.bodyA._mceOCA(pair) 131 | pair.bodyB._mceOCA && 132 | pair.bodyB._mceOCA(pair) 133 | }); 134 | }); 135 | 136 | matter.Events.on(this, 'collisionEnd', function(event) { 137 | event.pairs.map(function(pair) { 138 | matter.Events.trigger(pair.bodyA, 'onCollideEnd', { pair : pair }); 139 | matter.Events.trigger(pair.bodyB, 'onCollideEnd', { pair : pair }); 140 | pair.bodyA._mceOCE && 141 | pair.bodyA._mceOCE(pair) 142 | pair.bodyB._mceOCE && 143 | pair.bodyB._mceOCE(pair) 144 | }); 145 | }); 146 | }); 147 | }, 148 | }; 149 | 150 | Matter.Plugin.register(MatterCollisionEvents); 151 | 152 | module.exports.MatterCollisionEvents = MatterCollisionEvents; 153 | 154 | 155 | /***/ }) 156 | /******/ ]); 157 | }); -------------------------------------------------------------------------------- /build/matter-collision-events.min.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("matter-js")):"function"==typeof define&&define.amd?define(["matter-js"],t):"object"==typeof exports?exports.MatterCollisionEvents=t(require("matter-js")):e.MatterCollisionEvents=t(e.Matter)}(this,function(e){return function(e){function t(o){if(n[o])return n[o].exports;var r=n[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,o){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:o})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(t,n){t.exports=e},function(e,t,n){var o=n(0),r={name:"matter-collision-events",version:"0.1.5",for:"matter-js@^0.12.0",install:function(e){var t=e.Body.create;e.Body.create=function(){var e=t.apply(null,arguments);return e.onCollide=function(t){e._mceOC=t},e.onCollideEnd=function(t){e._mceOCE=t},e.onCollideActive=function(t){e._mceOCA=t},e},e.after("Engine.create",function(){e.Events.on(this,"collisionStart",function(t){t.pairs.map(function(t){e.Events.trigger(t.bodyA,"onCollide",{pair:t}),e.Events.trigger(t.bodyB,"onCollide",{pair:t}),t.bodyA._mceOC&&t.bodyA._mceOC(t),t.bodyB._mceOC&&t.bodyB._mceOC(t)})}),e.Events.on(this,"collisionActive",function(t){t.pairs.map(function(t){e.Events.trigger(t.bodyA,"onCollideActive",{pair:t}),e.Events.trigger(t.bodyB,"onCollideActive",{pair:t}),t.bodyA._mceOCA&&t.bodyA._mceOCA(t),t.bodyB._mceOCA&&t.bodyB._mceOCA(t)})}),e.Events.on(this,"collisionEnd",function(t){t.pairs.map(function(t){e.Events.trigger(t.bodyA,"onCollideEnd",{pair:t}),e.Events.trigger(t.bodyB,"onCollideEnd",{pair:t}),t.bodyA._mceOCE&&t.bodyA._mceOCE(t),t.bodyB._mceOCE&&t.bodyB._mceOCE(t)})})})}};o.Plugin.register(r),e.exports.MatterCollisionEvents=r}])}); -------------------------------------------------------------------------------- /docs/examples/base.js: -------------------------------------------------------------------------------- 1 | function generateExample(bodies) { 2 | return function() { 3 | console.log('hello') 4 | var Engine = Matter.Engine, 5 | Render = Matter.Render, 6 | Runner = Matter.Runner, 7 | World = Matter.World, 8 | Bodies = Matter.Bodies; 9 | 10 | const engine = Matter.Engine.create(); 11 | 12 | var render = Render.create({ 13 | element: document.body, 14 | engine: engine, 15 | options: { 16 | width: window.innerWidth, 17 | height: window.innerHeight, 18 | showVelocity: true, 19 | wireframes: false, 20 | }, 21 | }); 22 | 23 | World.add(engine.world, bodies); 24 | 25 | // run the engine 26 | Engine.run(engine); 27 | Engine.update(engine); 28 | Render.run(render); 29 | 30 | // create runner 31 | var runner = Runner.create(); 32 | Runner.run(runner, engine); 33 | 34 | return { 35 | engine: engine, 36 | runner: runner, 37 | render: render, 38 | canvas: render.canvas, 39 | stop: function() { 40 | Matter.render.stop(render); 41 | Matter.render.stop(runner); 42 | }, 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /docs/examples/basic.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var colors = ['#006BA6', '#0496FF', '#FFBC42', '#D81159', '#8F2D56']; 3 | var Bodies = Matter.Bodies; 4 | Matter.use('matter-collision-events'); 5 | 6 | var boxA = Bodies.rectangle(400, 200, 80, 80, { 7 | velocity: { 8 | x: 12, 9 | y: 10, 10 | } 11 | }); 12 | 13 | var boxB = Bodies.rectangle(450, 50, 80, 80); 14 | 15 | boxA.render.fillStyle = colors[Math.floor(Math.random() * colors.length)]; 16 | boxB.render.fillStyle = colors[Math.floor(Math.random() * colors.length)]; 17 | 18 | boxB.onCollide(function(pair) { 19 | console.log('BoxB got hit!', pair); 20 | pair.bodyA.render.fillStyle = colors[Math.floor(Math.random() * colors.length)]; 21 | pair.bodyB.render.fillStyle = colors[Math.floor(Math.random() * colors.length)]; 22 | }); 23 | 24 | var ground = Bodies.rectangle(400, 610, 810, 60, { isStatic: true }); 25 | 26 | window.basicBodies = [boxA, boxB, ground]; 27 | })() 28 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Matter Collision Events Demo 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /docs/lib/matter-collision-events.js: -------------------------------------------------------------------------------- 1 | (function webpackUniversalModuleDefinition(root, factory) { 2 | if(typeof exports === 'object' && typeof module === 'object') 3 | module.exports = factory(require("matter-js")); 4 | else if(typeof define === 'function' && define.amd) 5 | define(["matter-js"], factory); 6 | else if(typeof exports === 'object') 7 | exports["MatterCollisionEvents"] = factory(require("matter-js")); 8 | else 9 | root["MatterCollisionEvents"] = factory(root["Matter"]); 10 | })(this, function(__WEBPACK_EXTERNAL_MODULE_0__) { 11 | return /******/ (function(modules) { // webpackBootstrap 12 | /******/ // The module cache 13 | /******/ var installedModules = {}; 14 | 15 | /******/ // The require function 16 | /******/ function __webpack_require__(moduleId) { 17 | 18 | /******/ // Check if module is in cache 19 | /******/ if(installedModules[moduleId]) 20 | /******/ return installedModules[moduleId].exports; 21 | 22 | /******/ // Create a new module (and put it into the cache) 23 | /******/ var module = installedModules[moduleId] = { 24 | /******/ i: moduleId, 25 | /******/ l: false, 26 | /******/ exports: {} 27 | /******/ }; 28 | 29 | /******/ // Execute the module function 30 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 31 | 32 | /******/ // Flag the module as loaded 33 | /******/ module.l = true; 34 | 35 | /******/ // Return the exports of the module 36 | /******/ return module.exports; 37 | /******/ } 38 | 39 | 40 | /******/ // expose the modules object (__webpack_modules__) 41 | /******/ __webpack_require__.m = modules; 42 | 43 | /******/ // expose the module cache 44 | /******/ __webpack_require__.c = installedModules; 45 | 46 | /******/ // identity function for calling harmony imports with the correct context 47 | /******/ __webpack_require__.i = function(value) { return value; }; 48 | 49 | /******/ // define getter function for harmony exports 50 | /******/ __webpack_require__.d = function(exports, name, getter) { 51 | /******/ if(!__webpack_require__.o(exports, name)) { 52 | /******/ Object.defineProperty(exports, name, { 53 | /******/ configurable: false, 54 | /******/ enumerable: true, 55 | /******/ get: getter 56 | /******/ }); 57 | /******/ } 58 | /******/ }; 59 | 60 | /******/ // getDefaultExport function for compatibility with non-harmony modules 61 | /******/ __webpack_require__.n = function(module) { 62 | /******/ var getter = module && module.__esModule ? 63 | /******/ function getDefault() { return module['default']; } : 64 | /******/ function getModuleExports() { return module; }; 65 | /******/ __webpack_require__.d(getter, 'a', getter); 66 | /******/ return getter; 67 | /******/ }; 68 | 69 | /******/ // Object.prototype.hasOwnProperty.call 70 | /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 71 | 72 | /******/ // __webpack_public_path__ 73 | /******/ __webpack_require__.p = ""; 74 | 75 | /******/ // Load entry module and return exports 76 | /******/ return __webpack_require__(__webpack_require__.s = 1); 77 | /******/ }) 78 | /************************************************************************/ 79 | /******/ ([ 80 | /* 0 */ 81 | /***/ (function(module, exports) { 82 | 83 | module.exports = __WEBPACK_EXTERNAL_MODULE_0__; 84 | 85 | /***/ }), 86 | /* 1 */ 87 | /***/ (function(module, exports, __webpack_require__) { 88 | 89 | var Matter = __webpack_require__(0); 90 | var MatterCollisionEvents = { 91 | name: 'matter-collision-events', 92 | version: '0.1.5', 93 | for: 'matter-js@^0.12.0', 94 | install: function(matter) { 95 | // add the onCollide, onCollideEnd, and onCollideActive callback handlers 96 | // to the native Matter.Body created 97 | var create = matter.Body.create; 98 | matter.Body.create = function() { 99 | var body = create.apply(null, arguments); 100 | body.onCollide = function(cb) { body._mceOC = cb; } 101 | body.onCollideEnd = function(cb) { body._mceOCE = cb; } 102 | body.onCollideActive = function(cb) { body._mceOCA = cb; } 103 | return body; 104 | } 105 | matter.after('Engine.create', function() { 106 | matter.Events.on(this, 'collisionStart', function(event) { 107 | event.pairs.map(function(pair) { 108 | matter.Events.trigger(pair.bodyA, 'onCollide', { pair : pair }); 109 | matter.Events.trigger(pair.bodyB, 'onCollide', { pair : pair }); 110 | pair.bodyA._mceOC && 111 | pair.bodyA._mceOC(pair) 112 | pair.bodyB._mceOC && 113 | pair.bodyB._mceOC(pair) 114 | }); 115 | }); 116 | 117 | matter.Events.on(this, 'collisionActive', function(event) { 118 | event.pairs.map(function(pair) { 119 | matter.Events.trigger( 120 | pair.bodyA, 121 | 'onCollideActive', 122 | { pair: pair } 123 | ); 124 | matter.Events.trigger( 125 | pair.bodyB, 126 | 'onCollideActive', 127 | { pair: pair } 128 | ); 129 | pair.bodyA._mceOCA && 130 | pair.bodyA._mceOCA(pair) 131 | pair.bodyB._mceOCA && 132 | pair.bodyB._mceOCA(pair) 133 | }); 134 | }); 135 | 136 | matter.Events.on(this, 'collisionEnd', function(event) { 137 | event.pairs.map(function(pair) { 138 | matter.Events.trigger(pair.bodyA, 'onCollideEnd', { pair : pair }); 139 | matter.Events.trigger(pair.bodyB, 'onCollideEnd', { pair : pair }); 140 | pair.bodyA._mceOCE && 141 | pair.bodyA._mceOCE(pair) 142 | pair.bodyB._mceOCE && 143 | pair.bodyB._mceOCE(pair) 144 | }); 145 | }); 146 | }); 147 | }, 148 | }; 149 | 150 | Matter.Plugin.register(MatterCollisionEvents); 151 | 152 | module.exports.MatterCollisionEvents = MatterCollisionEvents; 153 | 154 | 155 | /***/ }) 156 | /******/ ]); 157 | }); -------------------------------------------------------------------------------- /docs/lib/matter-tools.demo.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * matter-tools 0.10.0 by Liam Brummitt 2017-02-04 3 | * https://github.com/liabru/matter-tools 4 | * License MIT 5 | */ 6 | (function webpackUniversalModuleDefinition(root, factory) { 7 | if(typeof exports === 'object' && typeof module === 'object') 8 | module.exports = factory(require("Matter"), require("MatterTools")); 9 | else if(typeof define === 'function' && define.amd) 10 | define(["Matter", "MatterTools"], factory); 11 | else if(typeof exports === 'object') 12 | exports["Demo"] = factory(require("Matter"), require("MatterTools")); 13 | else 14 | root["MatterTools"] = root["MatterTools"] || {}, root["MatterTools"]["Demo"] = factory(root["Matter"], root["MatterTools"]); 15 | })(this, function(__WEBPACK_EXTERNAL_MODULE_1__, __WEBPACK_EXTERNAL_MODULE_2__) { 16 | return /******/ (function(modules) { // webpackBootstrap 17 | /******/ // The module cache 18 | /******/ var installedModules = {}; 19 | 20 | /******/ // The require function 21 | /******/ function __webpack_require__(moduleId) { 22 | 23 | /******/ // Check if module is in cache 24 | /******/ if(installedModules[moduleId]) 25 | /******/ return installedModules[moduleId].exports; 26 | 27 | /******/ // Create a new module (and put it into the cache) 28 | /******/ var module = installedModules[moduleId] = { 29 | /******/ exports: {}, 30 | /******/ id: moduleId, 31 | /******/ loaded: false 32 | /******/ }; 33 | 34 | /******/ // Execute the module function 35 | /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 36 | 37 | /******/ // Flag the module as loaded 38 | /******/ module.loaded = true; 39 | 40 | /******/ // Return the exports of the module 41 | /******/ return module.exports; 42 | /******/ } 43 | 44 | 45 | /******/ // expose the modules object (__webpack_modules__) 46 | /******/ __webpack_require__.m = modules; 47 | 48 | /******/ // expose the module cache 49 | /******/ __webpack_require__.c = installedModules; 50 | 51 | /******/ // __webpack_public_path__ 52 | /******/ __webpack_require__.p = "/demo/lib"; 53 | 54 | /******/ // Load entry module and return exports 55 | /******/ return __webpack_require__(0); 56 | /******/ }) 57 | /************************************************************************/ 58 | /******/ ([ 59 | /* 0 */ 60 | /***/ function(module, exports, __webpack_require__) { 61 | 62 | "use strict"; 63 | 64 | /** 65 | * A tool for for running and testing example scenes. 66 | * @module Demo 67 | */ 68 | 69 | var Matter = __webpack_require__(1); 70 | var Common = Matter.Common; 71 | var Demo = module.exports = {}; 72 | var Gui = __webpack_require__(2).Gui; 73 | var Inspector = __webpack_require__(2).Inspector; 74 | var ToolsCommon = __webpack_require__(3); 75 | 76 | Demo._isIOS = window.navigator && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 77 | 78 | Demo._matterLink = 'http://brm.io/matter-js/'; 79 | 80 | /** 81 | * Creates a new demo instance. 82 | * See example for options and usage. 83 | * @function Demo.create 84 | * @param {} options 85 | */ 86 | Demo.create = function (options) { 87 | var demo = Object.assign({ 88 | example: { 89 | instance: null 90 | }, 91 | examples: [], 92 | resetOnOrientation: false, 93 | preventZoom: false, 94 | inline: false, 95 | startExample: true, 96 | appendTo: document.body, 97 | toolbar: { 98 | title: null, 99 | url: null, 100 | reset: true, 101 | source: false, 102 | inspector: false, 103 | tools: false, 104 | fullscreen: true, 105 | exampleSelect: false 106 | }, 107 | tools: { 108 | inspector: null, 109 | gui: null 110 | }, 111 | dom: {} 112 | }, options || {}); 113 | 114 | if (demo.examples.length > 1 && options.toolbar.exampleSelect !== false) { 115 | demo.toolbar.exampleSelect = true; 116 | } 117 | 118 | if (Demo._isIOS) { 119 | demo.toolbar.fullscreen = false; 120 | } 121 | 122 | if (!Gui) { 123 | demo.toolbar.tools = false; 124 | demo.tools.gui = false; 125 | } 126 | 127 | if (!Inspector) { 128 | demo.toolbar.inspector = false; 129 | demo.tools.inspector = false; 130 | } 131 | 132 | demo.dom = Demo._createDom(demo); 133 | Demo._bindDom(demo); 134 | 135 | if (demo.inline) { 136 | demo.dom.root.classList.add('matter-demo-inline'); 137 | } 138 | 139 | if (demo.appendTo) { 140 | demo.appendTo.appendChild(demo.dom.root); 141 | } 142 | 143 | if (demo.startExample) { 144 | Demo.start(demo, demo.startExample); 145 | } 146 | 147 | return demo; 148 | }; 149 | 150 | /** 151 | * Starts a new demo instance by running the first or given example. 152 | * See example for options and usage. 153 | * @function Demo.start 154 | * @param {demo} demo 155 | * @param {string} [initalExampleId] example to start (defaults to first) 156 | */ 157 | Demo.start = function (demo, initalExampleId) { 158 | initalExampleId = typeof initalExampleId === 'string' ? initalExampleId : demo.examples[0].id; 159 | 160 | if (window.location.hash.length > 0) { 161 | initalExampleId = window.location.hash.slice(1); 162 | } 163 | 164 | Demo.setExampleById(demo, initalExampleId); 165 | }; 166 | 167 | /** 168 | * Stops the currently running example in the demo. 169 | * This requires that the `example.init` function returned 170 | * an object specifiying a `stop` function. 171 | * @function Demo.stop 172 | * @param {demo} demo 173 | */ 174 | Demo.stop = function (demo) { 175 | if (demo.example && demo.example.instance) { 176 | demo.example.instance.stop(); 177 | } 178 | }; 179 | 180 | /** 181 | * Stops and restarts the currently running example. 182 | * @function Demo.reset 183 | * @param {demo} demo 184 | */ 185 | Demo.reset = function (demo) { 186 | Common._nextId = 0; 187 | Common._seed = 0; 188 | 189 | Demo.setExample(demo, demo.example); 190 | }; 191 | 192 | /** 193 | * Starts the given example by its id. 194 | * Any running example will be stopped. 195 | * @function Demo.setExampleById 196 | * @param {demo} demo 197 | * @param {string} exampleId 198 | */ 199 | Demo.setExampleById = function (demo, exampleId) { 200 | var example = demo.examples.filter(function (example) { 201 | return example.id === exampleId; 202 | })[0]; 203 | 204 | Demo.setExample(demo, example); 205 | }; 206 | 207 | /** 208 | * Starts the given example. 209 | * Any running example will be stopped. 210 | * @function Demo.setExample 211 | * @param {demo} demo 212 | * @param {example} example 213 | */ 214 | Demo.setExample = function (demo, example) { 215 | if (example) { 216 | var instance = demo.example.instance; 217 | 218 | if (instance) { 219 | instance.stop(); 220 | 221 | if (instance.canvas) { 222 | instance.canvas.parentElement.removeChild(instance.canvas); 223 | } 224 | } 225 | 226 | window.location.hash = example.id; 227 | 228 | demo.example.instance = null; 229 | demo.example = example; 230 | 231 | demo.example.instance = instance = example.init(demo); 232 | 233 | if (!instance.canvas && instance.render) { 234 | instance.canvas = instance.render.canvas; 235 | } 236 | 237 | if (instance.canvas) { 238 | demo.dom.header.style.maxWidth = instance.canvas.width + 'px'; 239 | demo.dom.root.appendChild(instance.canvas); 240 | } 241 | 242 | demo.dom.exampleSelect.value = example.id; 243 | demo.dom.buttonSource.href = example.sourceLink || demo.url || '#'; 244 | 245 | setTimeout(function () { 246 | if (demo.tools.inspector) { 247 | Demo.setInspector(demo, true); 248 | } 249 | 250 | if (demo.tools.gui) { 251 | Demo.setGui(demo, true); 252 | } 253 | }, 500); 254 | } else { 255 | Demo.setExample(demo, demo.examples[0]); 256 | } 257 | }; 258 | 259 | /** 260 | * Enables or disables the inspector tool. 261 | * If `enabled` a new `Inspector` instance will be created and the old one destroyed. 262 | * @function Demo.setInspector 263 | * @param {demo} demo 264 | * @param {bool} enabled 265 | */ 266 | Demo.setInspector = function (demo, enabled) { 267 | if (!enabled) { 268 | Demo._destroyTools(demo, true, false); 269 | demo.dom.root.classList.toggle('matter-inspect-active', false); 270 | return; 271 | } 272 | 273 | var instance = demo.example.instance; 274 | 275 | Demo._destroyTools(demo, true, false); 276 | demo.dom.root.classList.toggle('matter-inspect-active', true); 277 | 278 | demo.tools.inspector = Inspector.create(instance.engine, instance.render); 279 | }; 280 | 281 | /** 282 | * Enables or disables the Gui tool. 283 | * If `enabled` a new `Gui` instance will be created and the old one destroyed. 284 | * @function Demo.setGui 285 | * @param {demo} demo 286 | * @param {bool} enabled 287 | */ 288 | Demo.setGui = function (demo, enabled) { 289 | if (!enabled) { 290 | Demo._destroyTools(demo, false, true); 291 | demo.dom.root.classList.toggle('matter-gui-active', false); 292 | return; 293 | } 294 | 295 | var instance = demo.example.instance; 296 | 297 | Demo._destroyTools(demo, false, true); 298 | demo.dom.root.classList.toggle('matter-gui-active', true); 299 | 300 | demo.tools.gui = Gui.create(instance.engine, instance.runner, instance.render); 301 | }; 302 | 303 | Demo._destroyTools = function (demo, destroyInspector, destroyGui) { 304 | var inspector = demo.tools.inspector, 305 | gui = demo.tools.gui; 306 | 307 | if (destroyInspector && inspector && inspector !== true) { 308 | Inspector.destroy(inspector); 309 | demo.tools.inspector = null; 310 | } 311 | 312 | if (destroyGui && gui && gui !== true) { 313 | Gui.destroy(gui); 314 | demo.tools.gui = null; 315 | } 316 | }; 317 | 318 | Demo._toggleFullscreen = function (demo) { 319 | var fullscreenElement = document.fullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement; 320 | 321 | if (!fullscreenElement) { 322 | fullscreenElement = demo.dom.root; 323 | 324 | if (fullscreenElement.requestFullscreen) { 325 | fullscreenElement.requestFullscreen(); 326 | } else if (fullscreenElement.mozRequestFullScreen) { 327 | fullscreenElement.mozRequestFullScreen(); 328 | } else if (fullscreenElement.webkitRequestFullscreen) { 329 | fullscreenElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); 330 | } 331 | } else { 332 | if (document.exitFullscreen) { 333 | document.exitFullscreen(); 334 | } else if (document.mozCancelFullScreen) { 335 | document.mozCancelFullScreen(); 336 | } else if (document.webkitExitFullscreen) { 337 | document.webkitExitFullscreen(); 338 | } 339 | } 340 | }; 341 | 342 | Demo._bindDom = function (demo) { 343 | var dom = demo.dom; 344 | 345 | window.addEventListener('orientationchange', function () { 346 | setTimeout(function () { 347 | if (demo.resetOnOrientation) { 348 | Demo.reset(demo); 349 | } 350 | }, 300); 351 | }); 352 | 353 | if (demo.preventZoom) { 354 | document.body.addEventListener('gesturestart', function (event) { 355 | event.preventDefault(); 356 | }); 357 | 358 | var allowTap = true, 359 | tapTimeout; 360 | 361 | document.body.addEventListener('touchstart', function (event) { 362 | if (!allowTap) { 363 | event.preventDefault(); 364 | } 365 | 366 | allowTap = false; 367 | 368 | clearTimeout(tapTimeout); 369 | tapTimeout = setTimeout(function () { 370 | allowTap = true; 371 | }, 500); 372 | }); 373 | } 374 | 375 | if (dom.exampleSelect) { 376 | dom.exampleSelect.addEventListener('change', function () { 377 | var exampleId = this.options[this.selectedIndex].value; 378 | Demo.setExampleById(demo, exampleId); 379 | }); 380 | } 381 | 382 | if (dom.buttonReset) { 383 | dom.buttonReset.addEventListener('click', function () { 384 | Demo.reset(demo); 385 | }); 386 | } 387 | 388 | if (dom.buttonInspect) { 389 | dom.buttonInspect.addEventListener('click', function () { 390 | var showInspector = !demo.tools.inspector; 391 | Demo.setInspector(demo, showInspector); 392 | }); 393 | } 394 | 395 | if (dom.buttonTools) { 396 | dom.buttonTools.addEventListener('click', function () { 397 | var showGui = !demo.tools.gui; 398 | Demo.setGui(demo, showGui); 399 | }); 400 | } 401 | 402 | if (dom.buttonFullscreen) { 403 | dom.buttonFullscreen.addEventListener('click', function () { 404 | Demo._toggleFullscreen(demo); 405 | }); 406 | 407 | var fullscreenChange = function fullscreenChange() { 408 | var isFullscreen = document.fullscreen || document.webkitIsFullScreen || document.mozFullScreen; 409 | document.body.classList.toggle('matter-is-fullscreen', isFullscreen); 410 | 411 | setTimeout(function () { 412 | Demo.setExample(demo, demo.example); 413 | }, 500); 414 | }; 415 | 416 | document.addEventListener('webkitfullscreenchange', fullscreenChange); 417 | document.addEventListener('mozfullscreenchange', fullscreenChange); 418 | document.addEventListener('fullscreenchange', fullscreenChange); 419 | } 420 | }; 421 | 422 | Demo._createDom = function (options) { 423 | var styles = __webpack_require__(4); 424 | ToolsCommon.injectStyles(styles, 'matter-demo-style'); 425 | 426 | var root = document.createElement('div'); 427 | 428 | var exampleOptions = options.examples.map(function (example) { 429 | return ''; 430 | }).join(' '); 431 | 432 | var preventZoomClass = options.preventZoom && Demo._isIOS ? 'prevent-zoom-ios' : ''; 433 | 434 | root.innerHTML = '\n
\n
\n
\n
\n

\n ' + options.toolbar.title + ' \u2197︎\n

\n
\n
\n \n
\n \n { }\n \n \n \n
\n \n \u25B2\u25CF\u25A0\n \n
\n
\n
\n
\n '; 435 | 436 | var dom = { 437 | root: root.firstElementChild, 438 | title: root.querySelector('.matter-demo-title'), 439 | header: root.querySelector('.matter-header'), 440 | exampleSelect: root.querySelector('.matter-example-select'), 441 | buttonReset: root.querySelector('.matter-btn-reset'), 442 | buttonSource: root.querySelector('.matter-btn-source'), 443 | buttonTools: root.querySelector('.matter-btn-tools'), 444 | buttonInspect: root.querySelector('.matter-btn-inspect'), 445 | buttonFullscreen: root.querySelector('.matter-btn-fullscreen') 446 | }; 447 | 448 | if (!options.toolbar.title) { 449 | ToolsCommon.domRemove(dom.title); 450 | } 451 | 452 | if (!options.toolbar.exampleSelect) { 453 | ToolsCommon.domRemove(dom.exampleSelect.parentElement); 454 | } 455 | 456 | if (!options.toolbar.reset) { 457 | ToolsCommon.domRemove(dom.buttonReset); 458 | } 459 | 460 | if (!options.toolbar.source) { 461 | ToolsCommon.domRemove(dom.buttonSource); 462 | } 463 | 464 | if (!options.toolbar.inspector) { 465 | ToolsCommon.domRemove(dom.buttonInspect); 466 | } 467 | 468 | if (!options.toolbar.tools) { 469 | ToolsCommon.domRemove(dom.buttonTools); 470 | } 471 | 472 | if (!options.toolbar.fullscreen) { 473 | ToolsCommon.domRemove(dom.buttonFullscreen); 474 | } 475 | 476 | return dom; 477 | }; 478 | 479 | /*** EXPORTS FROM exports-loader ***/ 480 | 481 | /***/ }, 482 | /* 1 */ 483 | /***/ function(module, exports) { 484 | 485 | module.exports = __WEBPACK_EXTERNAL_MODULE_1__; 486 | 487 | /***/ }, 488 | /* 2 */ 489 | /***/ function(module, exports) { 490 | 491 | module.exports = __WEBPACK_EXTERNAL_MODULE_2__; 492 | 493 | /***/ }, 494 | /* 3 */ 495 | /***/ function(module, exports) { 496 | 497 | "use strict"; 498 | 499 | /** 500 | * @class Common 501 | */ 502 | 503 | var Common = module.exports = {}; 504 | 505 | Common.injectStyles = function (styles, id) { 506 | if (document.getElementById(id)) { 507 | return; 508 | } 509 | 510 | var root = document.createElement('div'); 511 | root.innerHTML = ''; 512 | 513 | var lastStyle = document.head.querySelector('style:last-of-type'); 514 | Common.domInsertBefore(root.firstElementChild, lastStyle); 515 | }; 516 | 517 | Common.injectScript = function (url, id, callback) { 518 | if (document.getElementById(id)) { 519 | return; 520 | } 521 | 522 | var script = document.createElement('script'); 523 | script.id = id; 524 | script.src = url; 525 | script.onload = callback; 526 | 527 | document.body.appendChild(script); 528 | }; 529 | 530 | Common.domRemove = function (element) { 531 | return element.parentElement.removeChild(element); 532 | }; 533 | 534 | Common.domInsertBefore = function (element, before) { 535 | return before.parentNode.insertBefore(element, before.previousElementSibling); 536 | }; 537 | 538 | /*** EXPORTS FROM exports-loader ***/ 539 | 540 | /***/ }, 541 | /* 4 */ 542 | /***/ function(module, exports) { 543 | 544 | module.exports = "/*\n*\tMatterTools.Demo\n*/\n\n.matter-demo {\n font-family: Helvetica, Arial, sans-serif;\n display: flex;\n background: #14151f;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n height: 100vh;\n}\n\n.matter-demo canvas {\n border-radius: 8px;\n max-width: 100%;\n max-height: 100%;\n}\n\n.matter-demo.matter-demo-inline canvas {\n max-height: calc(100% - 50px);\n}\n\n@media screen and (min-width: 900px) and (min-height: 600px) {\n .matter-demo.matter-demo-inline canvas {\n max-height: calc(100% - 100px);\n }\n}\n\n.matter-is-fullscreen .matter-demo {\n width: 100%;\n}\n\n.matter-is-fullscreen .dg.ac,\n.matter-is-fullscreen .ins-container {\n display: none;\n}\n\n.matter-header-outer {\n position: fixed;\n z-index: 100;\n top: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 400ms ease;\n}\n\n.matter-header-outer:hover {\n background: rgba(0, 0, 0, 0.7);\n}\n\n.matter-demo-inline .matter-header-outer {\n position: static;\n background: transparent;\n z-index: 0;\n width: 100%;\n}\n\n.matter-header {\n width: 100%;\n padding: 10px 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.matter-demo-inline .matter-header {\n padding: 10px;\n}\n\nbody .ins-container,\nbody .dg .dg.main,\nbody .dg .dg.main.a {\n padding-top: 52px;\n}\n\n@media screen and (min-width: 500px) {\n .matter-header {\n padding: 12px 20px;\n }\n\n .matter-demo-inline .matter-header {\n padding: 10px 30px 16px 30px;\n }\n}\n\n@media screen and (min-width: 900px) and (min-height: 600px) {\n .matter-demo-inline .matter-header {\n padding: 10px 30px 36px 30px;\n }\n}\n\n.matter-header-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n max-width: 960px;\n width: 100%;\n}\n\n.matter-header h1 {\n display: none;\n margin: 0;\n width: 18px;\n overflow: hidden;\n}\n\n.matter-header h1 a {\n color: #f2f2f5;\n font-size: 15px;\n font-weight: 400;\n font-family: Helvetica, Arial, sans-serif;\n display: block;\n text-decoration: none;\n margin: 7px 0 0 0;\n padding: 0 0 2px 0;\n border-bottom: 2px solid transparent;\n white-space: nowrap;\n float: right;\n}\n\n@media screen and (min-width: 300px) {\n .matter-header h1 {\n display: inline;\n }\n}\n\n@media screen and (min-width: 600px) {\n .matter-header h1 {\n width: auto;\n overflow: visible;\n }\n}\n\n.btn-home {\n display: none;\n}\n\n.matter-header h1 a:hover {\n border-bottom: 2px solid #F5B862;\n}\n\n.matter-link {\n font-family: Helvetica, Arial, sans-serif;\n text-decoration: none;\n line-height: 13px;\n transform: translate(0, 3px) scale(0.8);\n}\n\n@media screen and (min-width: 500px) {\n .matter-link {\n transform: none;\n }\n}\n\n.matter-link i {\n transition: transform 400ms ease;\n}\n\n.matter-link:hover i {\n transition: transform 400ms ease;\n}\n\n.matter-link:hover i:nth-child(1) {\n transform: rotate(-26deg) translate3d(-4px, -7px, 0);\n}\n\n.matter-link i:nth-child(2) {\n transform: translate3d(0, 1px, 0);\n}\n\n.matter-link:hover i:nth-child(2) {\n transition-delay: 80ms;\n transform: translate3d(3px, -5px, 0);\n}\n\n.matter-link:hover i:nth-child(3) {\n transition-delay: 180ms;\n transform: translate3d(9px, 0, 0);\n}\n\n.matter-link i:nth-child(1) {\n display: inline-block;\n color: #76F09B;\n font-size: 30px;\n}\n\n.matter-link i:nth-child(2) {\n color: #F5B862;\n font-size: 16px;\n padding: 0 2px 0 0;\n display: inline-block;\n}\n\n.matter-link i:nth-child(3) {\n display: inline-block;\n color: #F55F5F; \n font-size: 46px;\n}\n\n.matter-toolbar {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: -6px 0 0 0;\n}\n\n.matter-select {\n background: transparent;\n color: #fff;\n font-size: 14px;\n height: 30px;\n width: 100%;\n outline: none;\n padding: 0 7px;\n margin: 0 0 -6px 0;\n border: 0;\n border-bottom: 2px solid rgba(0, 0, 0, 0.1);\n border-radius: 0;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.prevent-zoom-ios .matter-select {\n font-size: 16px;\n}\n\n.matter-demo-inline .matter-select {\n border-bottom: 2px solid #3a3a3a;\n}\n\n.matter-select:hover {\n border-bottom-color: #F5B862;\n}\n\n.matter-select-wrapper {\n width: 20%;\n min-width: 100px;\n max-width: 200px;\n position: relative;\n display: inline-block;\n margin: 0 6% 0 0;\n}\n\n.matter-select-wrapper:hover:after {\n color: #fff;\n}\n\n.matter-select-wrapper:after {\n content: '▾';\n display: block;\n pointer-events: none;\n color: #cecece;\n font-size: 14px;\n position: absolute;\n top: 6px;\n right: 5px;\n}\n\n.prevent-zoom-ios .matter-select-wrapper:after {\n top: 4px;\n}\n\n.matter-btn {\n font-family: Helvetica, Arial, sans-serif;\n border: 0;\n background: rgba(0,0,0,0.1);\n padding: 2px 0 0 0;\n width: 40px;\n height: 33px;\n border-radius: 2px;\n margin: 0 0 -6px 0;\n display: inline-block;\n font-size: 16px;\n line-height: 1;\n color: #c2cad4;\n text-decoration: none;\n text-align: center;\n}\n\n.matter-demo-inline .matter-btn {\n background: #0f0f13;\n}\n\n.matter-btn:focus {\n outline: 0;\n}\n\n.matter-btn:hover {\n transform: translate(0px, -1px);\n}\n\n.matter-btn:active {\n transform: translate(0px, 1px);\n}\n\n.matter-btn:hover {\n background: #212a3a;\n}\n\n.matter-btn-reset:active {\n color: #76F09B;\n}\n\n.matter-btn-tools {\n display: none;\n font-size: 15px;\n padding-right: 3px;\n}\n\n.matter-gui-active .matter-btn-tools {\n color: #F55F5F;\n}\n\n.matter-btn-inspect {\n display: none;\n}\n\n.matter-inspect-active .matter-btn-inspect {\n color: #fff036;\n}\n\n.matter-btn-source {\n display: none;\n font-size: 12px;\n text-align: center;\n line-height: 31px;\n}\n\n.matter-btn-source:active {\n color: #F5B862;\n}\n\n.matter-btn-fullscreen {\n font-size: 20px;\n}\n\n.matter-btn-source:active {\n color: #F5B862;\n}\n\n.matter-is-fullscreen .matter-btn-tools,\n.matter-is-fullscreen .matter-btn-inspect {\n display: none;\n}\n\n.matter-is-fullscreen .matter-btn-fullscreen {\n color: #76F09B;\n}\n\n.ins-container,\nbody .dg {\n display: none;\n}\n\n@media screen and (min-width: 500px) {\n .ins-container,\n body .dg,\n .matter-btn-tools,\n .matter-btn-inspect,\n .matter-btn-source {\n display: block;\n }\n}" 545 | 546 | /***/ } 547 | /******/ ]) 548 | }); 549 | ; -------------------------------------------------------------------------------- /docs/lib/matter-tools.demo.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * matter-tools 0.10.0 by Liam Brummitt 2017-02-04 3 | * https://github.com/liabru/matter-tools 4 | * License MIT 5 | */ 6 | !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("Matter"),require("MatterTools")):"function"==typeof define&&define.amd?define(["Matter","MatterTools"],n):"object"==typeof exports?exports.Demo=n(require("Matter"),require("MatterTools")):(e.MatterTools=e.MatterTools||{},e.MatterTools.Demo=n(e.Matter,e.MatterTools))}(this,function(e,n){return function(e){function n(o){if(t[o])return t[o].exports;var r=t[o]={exports:{},id:o,loaded:!1};return e[o].call(r.exports,r,r.exports,n),r.loaded=!0,r.exports}var t={};return n.m=e,n.c=t,n.p="/demo/lib",n(0)}([function(e,n,t){"use strict";var o=t(1),r=o.Common,a=e.exports={},i=t(2).Gui,l=t(2).Inspector,s=t(3);a._isIOS=window.navigator&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!window.MSStream,a._matterLink="http://brm.io/matter-js/",a.create=function(e){var n=Object.assign({example:{instance:null},examples:[],resetOnOrientation:!1,preventZoom:!1,inline:!1,startExample:!0,appendTo:document.body,toolbar:{title:null,url:null,reset:!0,source:!1,inspector:!1,tools:!1,fullscreen:!0,exampleSelect:!1},tools:{inspector:null,gui:null},dom:{}},e||{});return n.examples.length>1&&e.toolbar.exampleSelect!==!1&&(n.toolbar.exampleSelect=!0),a._isIOS&&(n.toolbar.fullscreen=!1),i||(n.toolbar.tools=!1,n.tools.gui=!1),l||(n.toolbar.inspector=!1,n.tools.inspector=!1),n.dom=a._createDom(n),a._bindDom(n),n.inline&&n.dom.root.classList.add("matter-demo-inline"),n.appendTo&&n.appendTo.appendChild(n.dom.root),n.startExample&&a.start(n,n.startExample),n},a.start=function(e,n){n="string"==typeof n?n:e.examples[0].id,window.location.hash.length>0&&(n=window.location.hash.slice(1)),a.setExampleById(e,n)},a.stop=function(e){e.example&&e.example.instance&&e.example.instance.stop()},a.reset=function(e){r._nextId=0,r._seed=0,a.setExample(e,e.example)},a.setExampleById=function(e,n){var t=e.examples.filter(function(e){return e.id===n})[0];a.setExample(e,t)},a.setExample=function(e,n){if(n){var t=e.example.instance;t&&(t.stop(),t.canvas&&t.canvas.parentElement.removeChild(t.canvas)),window.location.hash=n.id,e.example.instance=null,e.example=n,e.example.instance=t=n.init(e),!t.canvas&&t.render&&(t.canvas=t.render.canvas),t.canvas&&(e.dom.header.style.maxWidth=t.canvas.width+"px",e.dom.root.appendChild(t.canvas)),e.dom.exampleSelect.value=n.id,e.dom.buttonSource.href=n.sourceLink||e.url||"#",setTimeout(function(){e.tools.inspector&&a.setInspector(e,!0),e.tools.gui&&a.setGui(e,!0)},500)}else a.setExample(e,e.examples[0])},a.setInspector=function(e,n){if(!n)return a._destroyTools(e,!0,!1),void e.dom.root.classList.toggle("matter-inspect-active",!1);var t=e.example.instance;a._destroyTools(e,!0,!1),e.dom.root.classList.toggle("matter-inspect-active",!0),e.tools.inspector=l.create(t.engine,t.render)},a.setGui=function(e,n){if(!n)return a._destroyTools(e,!1,!0),void e.dom.root.classList.toggle("matter-gui-active",!1);var t=e.example.instance;a._destroyTools(e,!1,!0),e.dom.root.classList.toggle("matter-gui-active",!0),e.tools.gui=i.create(t.engine,t.runner,t.render)},a._destroyTools=function(e,n,t){var o=e.tools.inspector,r=e.tools.gui;n&&o&&o!==!0&&(l.destroy(o),e.tools.inspector=null),t&&r&&r!==!0&&(i.destroy(r),e.tools.gui=null)},a._toggleFullscreen=function(e){var n=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;n?document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(n=e.dom.root,n.requestFullscreen?n.requestFullscreen():n.mozRequestFullScreen?n.mozRequestFullScreen():n.webkitRequestFullscreen&&n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT))},a._bindDom=function(e){var n=e.dom;if(window.addEventListener("orientationchange",function(){setTimeout(function(){e.resetOnOrientation&&a.reset(e)},300)}),e.preventZoom){document.body.addEventListener("gesturestart",function(e){e.preventDefault()});var t,o=!0;document.body.addEventListener("touchstart",function(e){o||e.preventDefault(),o=!1,clearTimeout(t),t=setTimeout(function(){o=!0},500)})}if(n.exampleSelect&&n.exampleSelect.addEventListener("change",function(){var n=this.options[this.selectedIndex].value;a.setExampleById(e,n)}),n.buttonReset&&n.buttonReset.addEventListener("click",function(){a.reset(e)}),n.buttonInspect&&n.buttonInspect.addEventListener("click",function(){var n=!e.tools.inspector;a.setInspector(e,n)}),n.buttonTools&&n.buttonTools.addEventListener("click",function(){var n=!e.tools.gui;a.setGui(e,n)}),n.buttonFullscreen){n.buttonFullscreen.addEventListener("click",function(){a._toggleFullscreen(e)});var r=function(){var n=document.fullscreen||document.webkitIsFullScreen||document.mozFullScreen;document.body.classList.toggle("matter-is-fullscreen",n),setTimeout(function(){a.setExample(e,e.example)},500)};document.addEventListener("webkitfullscreenchange",r),document.addEventListener("mozfullscreenchange",r),document.addEventListener("fullscreenchange",r)}},a._createDom=function(e){var n=t(4);s.injectStyles(n,"matter-demo-style");var o=document.createElement("div"),r=e.examples.map(function(e){return'"}).join(" "),i=e.preventZoom&&a._isIOS?"prevent-zoom-ios":"";o.innerHTML='\n
\n
\n
\n
\n

\n '+e.toolbar.title+' ↗︎\n

\n
\n
\n \n
\n \n { }\n \n \n \n
\n \n \n \n
\n
\n
\n
\n ';var l={root:o.firstElementChild,title:o.querySelector(".matter-demo-title"),header:o.querySelector(".matter-header"),exampleSelect:o.querySelector(".matter-example-select"),buttonReset:o.querySelector(".matter-btn-reset"),buttonSource:o.querySelector(".matter-btn-source"),buttonTools:o.querySelector(".matter-btn-tools"),buttonInspect:o.querySelector(".matter-btn-inspect"),buttonFullscreen:o.querySelector(".matter-btn-fullscreen")};return e.toolbar.title||s.domRemove(l.title),e.toolbar.exampleSelect||s.domRemove(l.exampleSelect.parentElement),e.toolbar.reset||s.domRemove(l.buttonReset),e.toolbar.source||s.domRemove(l.buttonSource),e.toolbar.inspector||s.domRemove(l.buttonInspect),e.toolbar.tools||s.domRemove(l.buttonTools),e.toolbar.fullscreen||s.domRemove(l.buttonFullscreen),l}},function(n,t){n.exports=e},function(e,t){e.exports=n},function(e,n){"use strict";var t=e.exports={};t.injectStyles=function(e,n){if(!document.getElementById(n)){var o=document.createElement("div");o.innerHTML='";var r=document.head.querySelector("style:last-of-type");t.domInsertBefore(o.firstElementChild,r)}},t.injectScript=function(e,n,t){if(!document.getElementById(n)){var o=document.createElement("script");o.id=n,o.src=e,o.onload=t,document.body.appendChild(o)}},t.domRemove=function(e){return e.parentElement.removeChild(e)},t.domInsertBefore=function(e,n){return n.parentNode.insertBefore(e,n.previousElementSibling)}},function(e,n){e.exports="/*\n*\tMatterTools.Demo\n*/\n\n.matter-demo {\n font-family: Helvetica, Arial, sans-serif;\n display: flex;\n background: #14151f;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n height: 100vh;\n}\n\n.matter-demo canvas {\n border-radius: 8px;\n max-width: 100%;\n max-height: 100%;\n}\n\n.matter-demo.matter-demo-inline canvas {\n max-height: calc(100% - 50px);\n}\n\n@media screen and (min-width: 900px) and (min-height: 600px) {\n .matter-demo.matter-demo-inline canvas {\n max-height: calc(100% - 100px);\n }\n}\n\n.matter-is-fullscreen .matter-demo {\n width: 100%;\n}\n\n.matter-is-fullscreen .dg.ac,\n.matter-is-fullscreen .ins-container {\n display: none;\n}\n\n.matter-header-outer {\n position: fixed;\n z-index: 100;\n top: 0;\n left: 0;\n right: 0;\n background: rgba(0, 0, 0, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n transition: background 400ms ease;\n}\n\n.matter-header-outer:hover {\n background: rgba(0, 0, 0, 0.7);\n}\n\n.matter-demo-inline .matter-header-outer {\n position: static;\n background: transparent;\n z-index: 0;\n width: 100%;\n}\n\n.matter-header {\n width: 100%;\n padding: 10px 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.matter-demo-inline .matter-header {\n padding: 10px;\n}\n\nbody .ins-container,\nbody .dg .dg.main,\nbody .dg .dg.main.a {\n padding-top: 52px;\n}\n\n@media screen and (min-width: 500px) {\n .matter-header {\n padding: 12px 20px;\n }\n\n .matter-demo-inline .matter-header {\n padding: 10px 30px 16px 30px;\n }\n}\n\n@media screen and (min-width: 900px) and (min-height: 600px) {\n .matter-demo-inline .matter-header {\n padding: 10px 30px 36px 30px;\n }\n}\n\n.matter-header-inner {\n display: flex;\n align-items: center;\n justify-content: space-between;\n max-width: 960px;\n width: 100%;\n}\n\n.matter-header h1 {\n display: none;\n margin: 0;\n width: 18px;\n overflow: hidden;\n}\n\n.matter-header h1 a {\n color: #f2f2f5;\n font-size: 15px;\n font-weight: 400;\n font-family: Helvetica, Arial, sans-serif;\n display: block;\n text-decoration: none;\n margin: 7px 0 0 0;\n padding: 0 0 2px 0;\n border-bottom: 2px solid transparent;\n white-space: nowrap;\n float: right;\n}\n\n@media screen and (min-width: 300px) {\n .matter-header h1 {\n display: inline;\n }\n}\n\n@media screen and (min-width: 600px) {\n .matter-header h1 {\n width: auto;\n overflow: visible;\n }\n}\n\n.btn-home {\n display: none;\n}\n\n.matter-header h1 a:hover {\n border-bottom: 2px solid #F5B862;\n}\n\n.matter-link {\n font-family: Helvetica, Arial, sans-serif;\n text-decoration: none;\n line-height: 13px;\n transform: translate(0, 3px) scale(0.8);\n}\n\n@media screen and (min-width: 500px) {\n .matter-link {\n transform: none;\n }\n}\n\n.matter-link i {\n transition: transform 400ms ease;\n}\n\n.matter-link:hover i {\n transition: transform 400ms ease;\n}\n\n.matter-link:hover i:nth-child(1) {\n transform: rotate(-26deg) translate3d(-4px, -7px, 0);\n}\n\n.matter-link i:nth-child(2) {\n transform: translate3d(0, 1px, 0);\n}\n\n.matter-link:hover i:nth-child(2) {\n transition-delay: 80ms;\n transform: translate3d(3px, -5px, 0);\n}\n\n.matter-link:hover i:nth-child(3) {\n transition-delay: 180ms;\n transform: translate3d(9px, 0, 0);\n}\n\n.matter-link i:nth-child(1) {\n display: inline-block;\n color: #76F09B;\n font-size: 30px;\n}\n\n.matter-link i:nth-child(2) {\n color: #F5B862;\n font-size: 16px;\n padding: 0 2px 0 0;\n display: inline-block;\n}\n\n.matter-link i:nth-child(3) {\n display: inline-block;\n color: #F55F5F; \n font-size: 46px;\n}\n\n.matter-toolbar {\n flex-grow: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: -6px 0 0 0;\n}\n\n.matter-select {\n background: transparent;\n color: #fff;\n font-size: 14px;\n height: 30px;\n width: 100%;\n outline: none;\n padding: 0 7px;\n margin: 0 0 -6px 0;\n border: 0;\n border-bottom: 2px solid rgba(0, 0, 0, 0.1);\n border-radius: 0;\n appearance: none;\n -moz-appearance: none;\n -webkit-appearance: none;\n}\n\n.prevent-zoom-ios .matter-select {\n font-size: 16px;\n}\n\n.matter-demo-inline .matter-select {\n border-bottom: 2px solid #3a3a3a;\n}\n\n.matter-select:hover {\n border-bottom-color: #F5B862;\n}\n\n.matter-select-wrapper {\n width: 20%;\n min-width: 100px;\n max-width: 200px;\n position: relative;\n display: inline-block;\n margin: 0 6% 0 0;\n}\n\n.matter-select-wrapper:hover:after {\n color: #fff;\n}\n\n.matter-select-wrapper:after {\n content: '▾';\n display: block;\n pointer-events: none;\n color: #cecece;\n font-size: 14px;\n position: absolute;\n top: 6px;\n right: 5px;\n}\n\n.prevent-zoom-ios .matter-select-wrapper:after {\n top: 4px;\n}\n\n.matter-btn {\n font-family: Helvetica, Arial, sans-serif;\n border: 0;\n background: rgba(0,0,0,0.1);\n padding: 2px 0 0 0;\n width: 40px;\n height: 33px;\n border-radius: 2px;\n margin: 0 0 -6px 0;\n display: inline-block;\n font-size: 16px;\n line-height: 1;\n color: #c2cad4;\n text-decoration: none;\n text-align: center;\n}\n\n.matter-demo-inline .matter-btn {\n background: #0f0f13;\n}\n\n.matter-btn:focus {\n outline: 0;\n}\n\n.matter-btn:hover {\n transform: translate(0px, -1px);\n}\n\n.matter-btn:active {\n transform: translate(0px, 1px);\n}\n\n.matter-btn:hover {\n background: #212a3a;\n}\n\n.matter-btn-reset:active {\n color: #76F09B;\n}\n\n.matter-btn-tools {\n display: none;\n font-size: 15px;\n padding-right: 3px;\n}\n\n.matter-gui-active .matter-btn-tools {\n color: #F55F5F;\n}\n\n.matter-btn-inspect {\n display: none;\n}\n\n.matter-inspect-active .matter-btn-inspect {\n color: #fff036;\n}\n\n.matter-btn-source {\n display: none;\n font-size: 12px;\n text-align: center;\n line-height: 31px;\n}\n\n.matter-btn-source:active {\n color: #F5B862;\n}\n\n.matter-btn-fullscreen {\n font-size: 20px;\n}\n\n.matter-btn-source:active {\n color: #F5B862;\n}\n\n.matter-is-fullscreen .matter-btn-tools,\n.matter-is-fullscreen .matter-btn-inspect {\n display: none;\n}\n\n.matter-is-fullscreen .matter-btn-fullscreen {\n color: #76F09B;\n}\n\n.ins-container,\nbody .dg {\n display: none;\n}\n\n@media screen and (min-width: 500px) {\n .ins-container,\n body .dg,\n .matter-btn-tools,\n .matter-btn-inspect,\n .matter-btn-source {\n display: block;\n }\n}"}])}); -------------------------------------------------------------------------------- /docs/lib/matter.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * matter-js 0.12.0 by @liabru 2017-02-02 3 | * http://brm.io/matter-js/ 4 | * License MIT 5 | */ 6 | !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Matter=e()}}(function(){return function e(t,n,o){function i(s,a){if(!n[s]){if(!t[s]){var l="function"==typeof require&&require;if(!a&&l)return l(s,!0);if(r)return r(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[s]={exports:{}};t[s][0].call(u.exports,function(e){var n=t[s][1][e];return i(n?n:e)},u,u.exports,e,t,n,o)}return n[s].exports}for(var r="function"==typeof require&&require,s=0;s0&&r.rotateAbout(s.position,n,e.position,s.position)}},o.setVelocity=function(e,t){e.positionPrev.x=e.position.x-t.x,e.positionPrev.y=e.position.y-t.y,e.velocity.x=t.x,e.velocity.y=t.y,e.speed=r.magnitude(e.velocity)},o.setAngularVelocity=function(e,t){e.anglePrev=e.angle-t,e.angularVelocity=t,e.angularSpeed=Math.abs(e.angularVelocity)},o.translate=function(e,t){ 12 | o.setPosition(e,r.add(e.position,t))},o.rotate=function(e,t){o.setAngle(e,e.angle+t)},o.scale=function(e,n,r,s){for(var a=0;a0&&(f.position.x+=e.velocity.x,f.position.y+=e.velocity.y),0!==e.angularVelocity&&(i.rotate(f.vertices,e.angularVelocity,e.position),c.rotate(f.axes,e.angularVelocity),p>0&&r.rotateAbout(f.position,e.angularVelocity,e.position,f.position)),l.update(f.bounds,f.vertices,e.velocity)}},o.applyForce=function(e,t,n){e.force.x+=n.x,e.force.y+=n.y;var o={x:t.x-e.position.x,y:t.y-e.position.y};e.torque+=o.x*n.y-o.y*n.x};var t=function(e){for(var t={mass:0,area:0,inertia:0,centre:{x:0,y:0}},n=1===e.parts.length?0:1;n1?1:0;d1?1:0;f0:0!==(e.mask&t.category)&&0!==(t.mask&e.category)}}()},{"../geometry/Bounds":26,"./Pair":7,"./SAT":11}],6:[function(e,t,n){var o={};t.exports=o;var i=e("./Pair"),r=e("./Detector"),s=e("../core/Common");!function(){o.create=function(e){var t={controller:o,detector:r.collisions,buckets:{},pairs:{},pairsList:[],bucketWidth:48,bucketHeight:48};return s.extend(t,e)},o.update=function(n,o,i,r){var s,p,f,m,v,y=i.world,g=n.buckets,x=!1; 20 | for(s=0;sy.bounds.max.x||h.bounds.max.yy.bounds.max.y)){var b=t(n,h);if(!h.region||b.id!==h.region.id||r){h.region&&!r||(h.region=b);var w=e(b,h.region);for(p=w.startCol;p<=w.endCol;p++)for(f=w.startRow;f<=w.endRow;f++){v=a(p,f),m=g[v];var S=p>=b.startCol&&p<=b.endCol&&f>=b.startRow&&f<=b.endRow,C=p>=h.region.startCol&&p<=h.region.endCol&&f>=h.region.startRow&&f<=h.region.endRow;!S&&C&&C&&m&&u(n,m,h),(h.region===b||S&&!C||r)&&(m||(m=l(g,v)),c(n,m,h))}h.region=b,x=!0}}}x&&(n.pairsList=d(n))},o.clear=function(e){e.buckets={},e.pairs={},e.pairsList=[]};var e=function(e,t){var o=Math.min(e.startCol,t.startCol),i=Math.max(e.endCol,t.endCol),r=Math.min(e.startRow,t.startRow),s=Math.max(e.endRow,t.endRow);return n(o,i,r,s)},t=function(e,t){var o=t.bounds,i=Math.floor(o.min.x/e.bucketWidth),r=Math.floor(o.max.x/e.bucketWidth),s=Math.floor(o.min.y/e.bucketHeight),a=Math.floor(o.max.y/e.bucketHeight); 21 | return n(i,r,s,a)},n=function(e,t,n,o){return{id:e+","+t+","+n+","+o,startCol:e,endCol:t,startRow:n,endRow:o}},a=function(e,t){return"C"+e+"R"+t},l=function(e,t){var n=e[t]=[];return n},c=function(e,t,n){for(var o=0;o0?o.push(n):delete e.pairs[t[i]];return o}}()},{"../core/Common":14,"./Detector":5,"./Pair":7}],7:[function(e,t,n){var o={};t.exports=o;var i=e("./Contact");!function(){o.create=function(e,t){var n=e.bodyA,i=e.bodyB,r=e.parentA,s=e.parentB,a={id:o.id(n,i),bodyA:n,bodyB:i,contacts:{},activeContacts:[],separation:0,isActive:!0,isSensor:n.isSensor||i.isSensor,timeCreated:t,timeUpdated:t,inverseMass:r.inverseMass+s.inverseMass,friction:Math.min(r.friction,s.friction), 22 | frictionStatic:Math.max(r.frictionStatic,s.frictionStatic),restitution:Math.max(r.restitution,s.restitution),slop:Math.max(r.slop,s.slop)};return o.update(a,e,t),a},o.update=function(e,t,n){var r=e.contacts,s=t.supports,a=e.activeContacts,l=t.parentA,c=t.parentB;if(e.collision=t,e.inverseMass=l.inverseMass+c.inverseMass,e.friction=Math.min(l.friction,c.friction),e.frictionStatic=Math.max(l.frictionStatic,c.frictionStatic),e.restitution=Math.max(l.restitution,c.restitution),e.slop=Math.max(l.slop,c.slop),a.length=0,t.collided){for(var u=0;ue&&c.push(s);for(s=0;sf.friction*f.frictionStatic*E*n&&(O=V,F=s.clamp(f.friction*R*n,-O,O));var L=r.cross(A,g),W=r.cross(P,g),q=b/(v.inverseMass+y.inverseMass+v.inverseInertia*L*L+y.inverseInertia*W*W);if(_*=q,F*=q,I<0&&I*I>o._restingThresh*n)S.normalImpulse=0;else{var N=S.normalImpulse;S.normalImpulse=Math.min(S.normalImpulse+_,0),_=S.normalImpulse-N}if(T*T>o._restingThreshTangent*n)S.tangentImpulse=0;else{var D=S.tangentImpulse;S.tangentImpulse=s.clamp(S.tangentImpulse+F,-O,O),F=S.tangentImpulse-D}i.x=g.x*_+x.x*F,i.y=g.y*_+x.y*F,v.isStatic||v.isSleeping||(v.positionPrev.x+=i.x*v.inverseMass,v.positionPrev.y+=i.y*v.inverseMass, 29 | v.anglePrev+=r.cross(A,i)*v.inverseInertia),y.isStatic||y.isSleeping||(y.positionPrev.x-=i.x*y.inverseMass,y.positionPrev.y-=i.y*y.inverseMass,y.anglePrev-=r.cross(P,i)*y.inverseInertia)}}}}}()},{"../core/Common":14,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29}],11:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../geometry/Vector");!function(){o.collides=function(t,o,s){var a,l,c,u,d=!1;if(s){var p=t.parent,f=o.parent,m=p.speed*p.speed+p.angularSpeed*p.angularSpeed+f.speed*f.speed+f.angularSpeed*f.angularSpeed;d=s&&s.collided&&m<.2,u=s}else u={collided:!1,bodyA:t,bodyB:o};if(s&&d){var v=u.axisBody,y=v===t?o:t,g=[v.axes[s.axisNumber]];if(c=e(v.vertices,y.vertices,g),u.reused=!0,c.overlap<=0)return u.collided=!1,u}else{if(a=e(t.vertices,o.vertices,t.axes),a.overlap<=0)return u.collided=!1,u;if(l=e(o.vertices,t.vertices,o.axes),l.overlap<=0)return u.collided=!1,u;a.overlapi?i=a:a=0?s.index-1:u.length-1;i=u[f],c.x=i.x-d.x,c.y=i.y-d.y,l=-r.dot(n,c),a=i;var m=(s.index+1)%u.length;return i=u[m],c.x=i.x-d.x,c.y=i.y-d.y,o=-r.dot(n,c),o0&&(P=0);var B,M={x:m.x*P,y:m.y*P};i&&!i.isStatic&&(B=r.cross(x,M)*i.inverseInertia*(1-n.angularStiffness),i.constraintImpulse.x-=v.x,i.constraintImpulse.y-=v.y,i.constraintImpulse.angle+=B,i.position.x-=v.x,i.position.y-=v.y,i.angle+=B),s&&!s.isStatic&&(B=r.cross(h,M)*s.inverseInertia*(1-n.angularStiffness),s.constraintImpulse.x+=v.x,s.constraintImpulse.y+=v.y,s.constraintImpulse.angle-=B,s.position.x+=v.x,s.position.y+=v.y,s.angle-=B)}}},o.postSolveAll=function(e){for(var t=0;t0&&(u.position.x+=o.x,u.position.y+=o.y),0!==o.angle&&(i.rotate(u.vertices,o.angle,n.position),l.rotate(u.axes,o.angle),c>0&&r.rotateAbout(u.position,o.angle,n.position,u.position)),a.update(u.bounds,u.vertices,n.velocity)}o.angle=0,o.x=0,o.y=0}}}}()},{"../core/Common":14,"../core/Sleeping":22,"../geometry/Axes":25,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29}],13:[function(e,t,n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../core/Sleeping"),s=e("../core/Mouse"),a=e("../core/Events"),l=e("../collision/Detector"),c=e("./Constraint"),u=e("../body/Composite"),d=e("../core/Common"),p=e("../geometry/Bounds");!function(){o.create=function(t,n){var i=(t?t.mouse:null)||(n?n.mouse:null);i||(t&&t.render&&t.render.canvas?i=s.create(t.render.canvas):n&&n.element?i=s.create(n.element):(i=s.create(),d.warn("MouseConstraint.create: options.mouse was undefined, options.element was undefined, may not function as expected"))); 35 | var r=c.create({label:"Mouse Constraint",pointA:i.position,pointB:{x:0,y:0},length:.01,stiffness:.1,angularStiffness:1,render:{strokeStyle:"#90EE90",lineWidth:3}}),l={type:"mouseConstraint",mouse:i,element:null,body:null,constraint:r,collisionFilter:{category:1,mask:4294967295,group:0}},p=d.extend(l,n);return a.on(t,"beforeUpdate",function(){var n=u.allBodies(t.world);o.update(p,n),e(p)}),p},o.update=function(e,t){var n=e.mouse,o=e.constraint,s=e.body;if(0===n.button){if(o.bodyB)r.set(o.bodyB,!1),o.pointA=n.position;else for(var c=0;c1?1:0;u>16)+o,r=(n>>8&255)+o,s=(255&n)+o;return"#"+(16777216+65536*(i<255?i<1?0:i:255)+256*(r<255?r<1?0:r:255)+(s<255?s<1?0:s:255)).toString(16).slice(1)},o.shuffle=function(e){for(var t=e.length-1;t>0;t--){var n=Math.floor(o.random()*(t+1)),i=e[t];e[t]=e[n],e[n]=i}return e},o.choose=function(e){return e[Math.floor(o.random()*e.length)]},o.isElement=function(e){try{return e instanceof HTMLElement}catch(t){return"object"==typeof e&&1===e.nodeType&&"object"==typeof e.style&&"object"==typeof e.ownerDocument}},o.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o.isFunction=function(e){return"function"==typeof e},o.isPlainObject=function(e){return"object"==typeof e&&e.constructor===Object; 38 | },o.isString=function(e){return"[object String]"===toString.call(e)},o.clamp=function(e,t,n){return en?n:e},o.sign=function(e){return e<0?-1:1},o.now=function(){var e=window.performance||{};return e.now=function(){return e.now||e.webkitNow||e.msNow||e.oNow||e.mozNow||function(){return+new Date}}(),e.now()},o.random=function(t,n){return t="undefined"!=typeof t?t:0,n="undefined"!=typeof n?n:1,t+e()*(n-t)};var e=function(){return o._seed=(9301*o._seed+49297)%233280,o._seed/233280};o.colorToNumber=function(e){return e=e.replace("#",""),3==e.length&&(e=e.charAt(0)+e.charAt(0)+e.charAt(1)+e.charAt(1)+e.charAt(2)+e.charAt(2)),parseInt(e,16)},o.logLevel=1,o.log=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.log.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.info=function(){console&&o.logLevel>0&&o.logLevel<=2&&console.info.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments)))},o.warn=function(){console&&o.logLevel>0&&o.logLevel<=3&&console.warn.apply(console,["matter-js:"].concat(Array.prototype.slice.call(arguments))); 39 | },o.nextId=function(){return o._nextId++},o.indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0;n0&&u.trigger(o,"collisionStart",{pairs:w.collisionStart}),s.preSolvePosition(w.list),c=0;c0&&u.trigger(o,"collisionActive",{ 42 | pairs:w.collisionActive}),w.collisionEnd.length>0&&u.trigger(o,"collisionEnd",{pairs:w.collisionEnd}),e(x),u.trigger(o,"afterUpdate",g),o},o.merge=function(e,t){if(f.extend(e,t),t.world){e.world=t.world,o.clear(e);for(var n=d.allBodies(e.world),i=0;ir?(i.warn("Plugin.register:",o.toString(t),"was upgraded to",o.toString(e)),o._registry[e.name]=e):n-1},o.isFor=function(e,t){var n=e.for&&o.dependencyParse(e.for);return!e.for||t.name===n.name&&o.versionSatisfies(t.version,n.range)},o.use=function(e,t){if(e.uses=(e.uses||[]).concat(t||[]),0===e.uses.length)return void i.warn("Plugin.use:",o.toString(e),"does not specify any dependencies to install.");for(var n=o.dependencies(e),r=i.topologicalSort(n),s=[],a=0;a0&&i.info(s.join(" "))},o.dependencies=function(e,t){var n=o.dependencyParse(e),r=n.name;if(t=t||{},!(r in t)){e=o.resolve(e)||e,t[r]=i.map(e.uses||[],function(t){ 49 | o.isPlugin(t)&&o.register(t);var r=o.dependencyParse(t),s=o.resolve(t);return s&&!o.versionSatisfies(s.version,r.range)?(i.warn("Plugin.dependencies:",o.toString(s),"does not satisfy",o.toString(r),"used by",o.toString(n)+"."),s._warned=!0,e._warned=!0):s||(i.warn("Plugin.dependencies:",o.toString(t),"used by",o.toString(n),"could not be resolved."),e._warned=!0),r.name});for(var s=0;s=i[2];if("^"===n.operator)return i[0]>0?s[0]===i[0]&&r.number>=n.number:i[1]>0?s[1]===i[1]&&s[2]>=i[2]:s[2]===i[2]}return e===t||"*"===e}}()},{"./Common":14}],21:[function(e,t,n){var o={};t.exports=o;var i=e("./Events"),r=e("./Engine"),s=e("./Common");!function(){var e,t;if("undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame,t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),!e){var n;e=function(e){n=setTimeout(function(){e(s.now())},1e3/60)},t=function(){clearTimeout(n)}}o.create=function(e){ 51 | var t={fps:60,correction:1,deltaSampleSize:60,counterTimestamp:0,frameCounter:0,deltaHistory:[],timePrev:null,timeScalePrev:1,frameRequestId:null,isFixed:!1,enabled:!0},n=s.extend(t,e);return n.delta=n.delta||1e3/n.fps,n.deltaMin=n.deltaMin||1e3/n.fps,n.deltaMax=n.deltaMax||1e3/(.5*n.fps),n.fps=1e3/n.delta,n},o.run=function(t,n){return"undefined"!=typeof t.positionIterations&&(n=t,t=o.create()),function i(r){t.frameRequestId=e(i),r&&t.enabled&&o.tick(t,n,r)}(),t},o.tick=function(e,t,n){var o,s=t.timing,a=1,l={timestamp:s.timestamp};i.trigger(e,"beforeTick",l),i.trigger(t,"beforeTick",l),e.isFixed?o=e.delta:(o=n-e.timePrev||e.delta,e.timePrev=n,e.deltaHistory.push(o),e.deltaHistory=e.deltaHistory.slice(-e.deltaSampleSize),o=Math.min.apply(null,e.deltaHistory),o=oe.deltaMax?e.deltaMax:o,a=o/e.delta,e.delta=o),0!==e.timeScalePrev&&(a*=s.timeScale/e.timeScalePrev),0===s.timeScale&&(a=0),e.timeScalePrev=s.timeScale,e.correction=a,e.frameCounter+=1,n-e.counterTimestamp>=1e3&&(e.fps=e.frameCounter*((n-e.counterTimestamp)/1e3), 52 | e.counterTimestamp=n,e.frameCounter=0),i.trigger(e,"tick",l),i.trigger(t,"tick",l),t.world.isModified&&t.render&&t.render.controller&&t.render.controller.clear&&t.render.controller.clear(t.render),i.trigger(e,"beforeUpdate",l),r.update(t,o,a),i.trigger(e,"afterUpdate",l),t.render&&t.render.controller&&(i.trigger(e,"beforeRender",l),i.trigger(t,"beforeRender",l),t.render.controller.world(t.render),i.trigger(e,"afterRender",l),i.trigger(t,"afterRender",l)),i.trigger(e,"afterTick",l),i.trigger(t,"afterTick",l)},o.stop=function(e){t(e.frameRequestId)},o.start=function(e,t){o.run(e,t)}}()},{"./Common":14,"./Engine":15,"./Events":16}],22:[function(e,t,n){var o={};t.exports=o;var i=e("./Events");!function(){o._motionWakeThreshold=.18,o._motionSleepThreshold=.08,o._minBias=.9,o.update=function(e,t){for(var n=t*t*t,i=0;i0&&r.motion=r.sleepThreshold&&o.set(r,!0)):r.sleepCounter>0&&(r.sleepCounter-=1)}else o.set(r,!1)}},o.afterCollisions=function(e,t){for(var n=t*t*t,i=0;io._motionWakeThreshold*n&&o.set(c,!1)}}}},o.set=function(e,t){var n=e.isSleeping;t?(e.isSleeping=!0,e.sleepCounter=e.sleepThreshold,e.positionImpulse.x=0,e.positionImpulse.y=0,e.positionPrev.x=e.position.x,e.positionPrev.y=e.position.y,e.anglePrev=e.angle,e.speed=0,e.angularSpeed=0,e.motion=0,n||i.trigger(e,"sleepStart")):(e.isSleeping=!1,e.sleepCounter=0,n&&i.trigger(e,"sleepEnd"))}}()},{"./Events":16}],23:[function(e,t,n){(function(n){var o={};t.exports=o;var i=e("../geometry/Vertices"),r=e("../core/Common"),s=e("../body/Body"),a=e("../geometry/Bounds"),l=e("../geometry/Vector"),c="undefined"!=typeof window?window.decomp:"undefined"!=typeof n?n.decomp:null; 54 | !function(){o.rectangle=function(e,t,n,o,a){a=a||{};var l={label:"Rectangle Body",position:{x:e,y:t},vertices:i.fromPath("L 0 0 L "+n+" 0 L "+n+" "+o+" L 0 "+o)};if(a.chamfer){var c=a.chamfer;l.vertices=i.chamfer(l.vertices,c.radius,c.quality,c.qualityMin,c.qualityMax),delete a.chamfer}return s.create(r.extend({},l,a))},o.trapezoid=function(e,t,n,o,a,l){l=l||{},a*=.5;var c,u=(1-2*a)*n,d=n*a,p=d+u,f=p+d;c=a<.5?"L 0 0 L "+d+" "+-o+" L "+p+" "+-o+" L "+f+" 0":"L 0 0 L "+p+" "+-o+" L "+f+" 0";var m={label:"Trapezoid Body",position:{x:e,y:t},vertices:i.fromPath(c)};if(l.chamfer){var v=l.chamfer;m.vertices=i.chamfer(m.vertices,v.radius,v.quality,v.qualityMin,v.qualityMax),delete l.chamfer}return s.create(r.extend({},m,l))},o.circle=function(e,t,n,i,s){i=i||{};var a={label:"Circle Body",circleRadius:n};s=s||25;var l=Math.ceil(Math.max(10,Math.min(s,n)));return l%2===1&&(l+=1),o.polygon(e,t,l,n,r.extend({},a,i))},o.polygon=function(e,t,n,a,l){if(l=l||{},n<3)return o.circle(e,t,a,l);for(var c=2*Math.PI/n,u="",d=.5*c,p=0;p0&&i.area(P)1?(f=s.create(r.extend({parts:m.slice(0)},o)),s.setPosition(f,{x:e,y:t}),f):m[0]}}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../body/Body":1,"../core/Common":14,"../geometry/Bounds":26,"../geometry/Vector":28,"../geometry/Vertices":29}],24:[function(e,t,n){var o={};t.exports=o;var i=e("../body/Composite"),r=e("../constraint/Constraint"),s=e("../core/Common"),a=e("../body/Body"),l=e("./Bodies");!function(){o.stack=function(e,t,n,o,r,s,l){for(var c,u=i.create({label:"Stack" 57 | }),d=e,p=t,f=0,m=0;mv&&(v=x),a.translate(g,{x:.5*h,y:.5*x}),d=g.bounds.max.x+r,i.addBody(u,g),c=g,f+=1}else d+=r}p+=v+s,d=e}return u},o.chain=function(e,t,n,o,a,l){for(var c=e.bodies,u=1;u0)for(c=0;c0&&(p=f[c-1+(l-1)*t],i.addConstraint(e,r.create(s.extend({bodyA:p,bodyB:d},a)))),o&&cp)){c=p-c;var m=c,v=n-1-c;if(!(sv)){1===d&&a.translate(u,{x:(s+(n%2===1?1:-1))*f,y:0});var y=u?s*f:0;return l(e+y+s*r,o,s,c,u,d)}}})},o.newtonsCradle=function(e,t,n,o,s){for(var a=i.create({label:"Newtons Cradle"}),c=0;ce.max.x&&(e.max.x=i.x),i.xe.max.y&&(e.max.y=i.y),i.y0?e.max.x+=n.x:e.min.x+=n.x,n.y>0?e.max.y+=n.y:e.min.y+=n.y)},o.contains=function(e,t){return t.x>=e.min.x&&t.x<=e.max.x&&t.y>=e.min.y&&t.y<=e.max.y},o.overlaps=function(e,t){return e.min.x<=t.max.x&&e.max.x>=t.min.x&&e.max.y>=t.min.y&&e.min.y<=t.max.y},o.translate=function(e,t){e.min.x+=t.x,e.max.x+=t.x,e.min.y+=t.y,e.max.y+=t.y},o.shift=function(e,t){var n=e.max.x-e.min.x,o=e.max.y-e.min.y;e.min.x=t.x,e.max.x=t.x+n,e.min.y=t.y,e.max.y=t.y+o}}()},{}],27:[function(e,t,n){var o={};t.exports=o;e("../geometry/Bounds");!function(){o.pathToVertices=function(t,n){ 61 | var o,i,r,s,a,l,c,u,d,p,f,m,v=[],y=0,g=0,x=0;n=n||15;var h=function(e,t,n){var o=n%2===1&&n>1;if(!d||e!=d.x||t!=d.y){d&&o?(f=d.x,m=d.y):(f=0,m=0);var i={x:f+e,y:m+t};!o&&d||(d=i),v.push(i),g=f+e,x=m+t}},b=function(e){var t=e.pathSegTypeAsLetter.toUpperCase();if("Z"!==t){switch(t){case"M":case"L":case"T":case"C":case"S":case"Q":g=e.x,x=e.y;break;case"H":g=e.x;break;case"V":x=e.y}h(g,x,e.pathSegType)}};for(e(t),r=t.getTotalLength(),l=[],o=0;o0)return!1}return!0},o.scale=function(e,t,n,r){if(1===t&&1===n)return e;r=r||o.centre(e);for(var s,a,l=0;l=0?l-1:e.length-1],u=e[l],d=e[(l+1)%e.length],p=t[l0&&(r|=2),3===r)return!1;return 0!==r||null},o.hull=function(e){var t,n,o=[],r=[];for(e=e.slice(0),e.sort(function(e,t){var n=e.x-t.x;return 0!==n?n:e.y-t.y}),n=0;n=2&&i.cross3(r[r.length-2],r[r.length-1],t)<=0;)r.pop();r.push(t)}for(n=e.length-1;n>=0;n--){for(t=e[n];o.length>=2&&i.cross3(o[o.length-2],o[o.length-1],t)<=0;)o.pop();o.push(t)}return o.pop(),r.pop(), 67 | o.concat(r)}}()},{"../core/Common":14,"../geometry/Vector":28}],30:[function(e,t,n){var o=t.exports=e("../core/Matter");o.Body=e("../body/Body"),o.Composite=e("../body/Composite"),o.World=e("../body/World"),o.Contact=e("../collision/Contact"),o.Detector=e("../collision/Detector"),o.Grid=e("../collision/Grid"),o.Pairs=e("../collision/Pairs"),o.Pair=e("../collision/Pair"),o.Query=e("../collision/Query"),o.Resolver=e("../collision/Resolver"),o.SAT=e("../collision/SAT"),o.Constraint=e("../constraint/Constraint"),o.MouseConstraint=e("../constraint/MouseConstraint"),o.Common=e("../core/Common"),o.Engine=e("../core/Engine"),o.Events=e("../core/Events"),o.Mouse=e("../core/Mouse"),o.Runner=e("../core/Runner"),o.Sleeping=e("../core/Sleeping"),o.Plugin=e("../core/Plugin"),o.Bodies=e("../factory/Bodies"),o.Composites=e("../factory/Composites"),o.Axes=e("../geometry/Axes"),o.Bounds=e("../geometry/Bounds"),o.Svg=e("../geometry/Svg"),o.Vector=e("../geometry/Vector"),o.Vertices=e("../geometry/Vertices"), 68 | o.Render=e("../render/Render"),o.RenderPixi=e("../render/RenderPixi"),o.World.add=o.Composite.add,o.World.remove=o.Composite.remove,o.World.addComposite=o.Composite.addComposite,o.World.addBody=o.Composite.addBody,o.World.addConstraint=o.Composite.addConstraint,o.World.clear=o.Composite.clear,o.Engine.run=o.Runner.run},{"../body/Body":1,"../body/Composite":2,"../body/World":3,"../collision/Contact":4,"../collision/Detector":5,"../collision/Grid":6,"../collision/Pair":7,"../collision/Pairs":8,"../collision/Query":9,"../collision/Resolver":10,"../collision/SAT":11,"../constraint/Constraint":12,"../constraint/MouseConstraint":13,"../core/Common":14,"../core/Engine":15,"../core/Events":16,"../core/Matter":17,"../core/Metrics":18,"../core/Mouse":19,"../core/Plugin":20,"../core/Runner":21,"../core/Sleeping":22,"../factory/Bodies":23,"../factory/Composites":24,"../geometry/Axes":25,"../geometry/Bounds":26,"../geometry/Svg":27,"../geometry/Vector":28,"../geometry/Vertices":29,"../render/Render":31, 69 | "../render/RenderPixi":32}],31:[function(e,t,n){var o={};t.exports=o;var i=e("../core/Common"),r=e("../body/Composite"),s=e("../geometry/Bounds"),a=e("../core/Events"),l=e("../collision/Grid"),c=e("../geometry/Vector"),u=e("../core/Mouse");!function(){var e,t;"undefined"!=typeof window&&(e=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.msRequestAnimationFrame||function(e){window.setTimeout(function(){e(i.now())},1e3/60)},t=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame),o.create=function(e){var t={controller:o,engine:null,element:null,canvas:null,mouse:null,frameRequestId:null,options:{width:800,height:600,pixelRatio:1,background:"#18181d",wireframeBackground:"#0f0f13",hasBounds:!!e.bounds,enabled:!0,wireframes:!0,showSleeping:!0,showDebug:!1,showBroadphase:!1,showBounds:!1,showVelocity:!1,showCollisions:!1,showSeparations:!1,showAxes:!1,showPositions:!1, 70 | showAngleIndicator:!1,showIds:!1,showShadows:!1,showVertexNumbers:!1,showConvexHulls:!1,showInternalEdges:!1,showMousePosition:!1}},r=i.extend(t,e);return r.canvas&&(r.canvas.width=r.options.width||r.canvas.width,r.canvas.height=r.options.height||r.canvas.height),r.mouse=e.mouse,r.engine=e.engine,r.canvas=r.canvas||n(r.options.width,r.options.height),r.context=r.canvas.getContext("2d"),r.textures={},r.bounds=r.bounds||{min:{x:0,y:0},max:{x:r.canvas.width,y:r.canvas.height}},1!==r.options.pixelRatio&&o.setPixelRatio(r,r.options.pixelRatio),i.isElement(r.element)?r.element.appendChild(r.canvas):i.log("Render.create: options.element was undefined, render.canvas was created but not appended","warn"),r},o.run=function(t){!function n(i){t.frameRequestId=e(n),o.world(t)}()},o.stop=function(e){t(e.frameRequestId)},o.setPixelRatio=function(e,t){var n=e.options,o=e.canvas;"auto"===t&&(t=d(o)),n.pixelRatio=t,o.setAttribute("data-pixel-ratio",t),o.width=n.width*t,o.height=n.height*t,o.style.width=n.width+"px", 71 | o.style.height=n.height+"px",e.context.scale(t,t)},o.lookAt=function(e,t,n,o){o="undefined"==typeof o||o,t=i.isArray(t)?t:[t],n=n||{x:0,y:0};for(var r={min:{x:1/0,y:1/0},max:{x:-(1/0),y:-(1/0)}},s=0;sr.max.x&&(r.max.x=c.x),l.yr.max.y&&(r.max.y=c.y))}var d=r.max.x-r.min.x+2*n.x,p=r.max.y-r.min.y+2*n.y,f=e.canvas.height,m=e.canvas.width,v=m/f,y=d/p,g=1,x=1;y>v?x=y/v:g=v/y,e.options.hasBounds=!0,e.bounds.min.x=r.min.x,e.bounds.max.x=r.min.x+d*g,e.bounds.min.y=r.min.y,e.bounds.max.y=r.min.y+p*x,o&&(e.bounds.min.x+=.5*d-d*g*.5,e.bounds.max.x+=.5*d-d*g*.5,e.bounds.min.y+=.5*p-p*x*.5,e.bounds.max.y+=.5*p-p*x*.5),e.bounds.min.x-=n.x,e.bounds.max.x-=n.x,e.bounds.min.y-=n.y,e.bounds.max.y-=n.y,e.mouse&&(u.setScale(e.mouse,{x:(e.bounds.max.x-e.bounds.min.x)/e.canvas.width,y:(e.bounds.max.y-e.bounds.min.y)/e.canvas.height 72 | }),u.setOffset(e.mouse,e.bounds.min))},o.startViewTransform=function(e){var t=e.bounds.max.x-e.bounds.min.x,n=e.bounds.max.y-e.bounds.min.y,o=t/e.options.width,i=n/e.options.height;e.context.scale(1/o,1/i),e.context.translate(-e.bounds.min.x,-e.bounds.min.y)},o.endViewTransform=function(e){e.context.setTransform(e.options.pixelRatio,0,0,e.options.pixelRatio,0,0)},o.world=function(e){var t,n=e.engine,i=n.world,d=e.canvas,p=e.context,m=e.options,v=r.allBodies(i),y=r.allConstraints(i),g=m.wireframes?m.wireframeBackground:m.background,x=[],h=[],b={timestamp:n.timing.timestamp};if(a.trigger(e,"beforeRender",b),e.currentBackground!==g&&f(e,g),p.globalCompositeOperation="source-in",p.fillStyle="transparent",p.fillRect(0,0,d.width,d.height),p.globalCompositeOperation="source-over",m.hasBounds){for(t=0;t=500){var c="";s.timing&&(c+="fps: "+Math.round(s.timing.fps)+l),e.debugString=c,e.debugTimestamp=o.timing.timestamp}if(e.debugString){n.font="12px Arial",a.wireframes?n.fillStyle="rgba(255,255,255,0.5)":n.fillStyle="rgba(0,0,0,0.5)";for(var u=e.debugString.split("\n"),d=0;d1?1:0;s1?1:0;a1?1:0;r1?1:0;l1?1:0;r1?1:0;r1?1:0;i0)){var d=o.activeContacts[0].vertex.x,p=o.activeContacts[0].vertex.y;2===o.activeContacts.length&&(d=(o.activeContacts[0].vertex.x+o.activeContacts[1].vertex.x)/2,p=(o.activeContacts[0].vertex.y+o.activeContacts[1].vertex.y)/2),i.bodyB===i.supports[0].body||i.bodyA.isStatic===!0?a.moveTo(d-8*i.normal.x,p-8*i.normal.y):a.moveTo(d+8*i.normal.x,p+8*i.normal.y), 81 | a.lineTo(d,p)}l.wireframes?a.strokeStyle="rgba(255,165,0,0.7)":a.strokeStyle="orange",a.lineWidth=1,a.stroke()},o.separations=function(e,t,n){var o,i,r,s,a,l=n,c=e.options;for(l.beginPath(),a=0;a1?1:0;p= 1.0.0" 351 | 352 | concat-map@0.0.1: 353 | version "0.0.1" 354 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 355 | 356 | console-browserify@^1.1.0: 357 | version "1.1.0" 358 | resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" 359 | dependencies: 360 | date-now "^0.1.4" 361 | 362 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 363 | version "1.1.0" 364 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 365 | 366 | constants-browserify@^1.0.0: 367 | version "1.0.0" 368 | resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" 369 | 370 | core-util-is@~1.0.0: 371 | version "1.0.2" 372 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 373 | 374 | create-ecdh@^4.0.0: 375 | version "4.0.0" 376 | resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" 377 | dependencies: 378 | bn.js "^4.1.0" 379 | elliptic "^6.0.0" 380 | 381 | create-hash@^1.1.0, create-hash@^1.1.1: 382 | version "1.1.2" 383 | resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad" 384 | dependencies: 385 | cipher-base "^1.0.1" 386 | inherits "^2.0.1" 387 | ripemd160 "^1.0.0" 388 | sha.js "^2.3.6" 389 | 390 | create-hmac@^1.1.0, create-hmac@^1.1.2: 391 | version "1.1.4" 392 | resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170" 393 | dependencies: 394 | create-hash "^1.1.0" 395 | inherits "^2.0.1" 396 | 397 | cryptiles@2.x.x: 398 | version "2.0.5" 399 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 400 | dependencies: 401 | boom "2.x.x" 402 | 403 | crypto-browserify@^3.11.0: 404 | version "3.11.0" 405 | resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522" 406 | dependencies: 407 | browserify-cipher "^1.0.0" 408 | browserify-sign "^4.0.0" 409 | create-ecdh "^4.0.0" 410 | create-hash "^1.1.0" 411 | create-hmac "^1.1.0" 412 | diffie-hellman "^5.0.0" 413 | inherits "^2.0.1" 414 | pbkdf2 "^3.0.3" 415 | public-encrypt "^4.0.0" 416 | randombytes "^2.0.0" 417 | 418 | dashdash@^1.12.0: 419 | version "1.14.1" 420 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 421 | dependencies: 422 | assert-plus "^1.0.0" 423 | 424 | dat.gui@^0.6.1: 425 | version "0.6.1" 426 | resolved "https://registry.yarnpkg.com/dat.gui/-/dat.gui-0.6.1.tgz#7c3d0a2ac2c570dafb61b91203fd7fe3171d6ac7" 427 | 428 | date-now@^0.1.4: 429 | version "0.1.4" 430 | resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" 431 | 432 | debug@~2.2.0: 433 | version "2.2.0" 434 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 435 | dependencies: 436 | ms "0.7.1" 437 | 438 | decamelize@^1.0.0, decamelize@^1.1.1: 439 | version "1.2.0" 440 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 441 | 442 | deep-extend@~0.4.0: 443 | version "0.4.1" 444 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 445 | 446 | delayed-stream@~1.0.0: 447 | version "1.0.0" 448 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 449 | 450 | delegates@^1.0.0: 451 | version "1.0.0" 452 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 453 | 454 | des.js@^1.0.0: 455 | version "1.0.0" 456 | resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" 457 | dependencies: 458 | inherits "^2.0.1" 459 | minimalistic-assert "^1.0.0" 460 | 461 | diffie-hellman@^5.0.0: 462 | version "5.0.2" 463 | resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" 464 | dependencies: 465 | bn.js "^4.1.0" 466 | miller-rabin "^4.0.0" 467 | randombytes "^2.0.0" 468 | 469 | domain-browser@^1.1.1: 470 | version "1.1.7" 471 | resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc" 472 | 473 | ecc-jsbn@~0.1.1: 474 | version "0.1.1" 475 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 476 | dependencies: 477 | jsbn "~0.1.0" 478 | 479 | elliptic@^6.0.0: 480 | version "6.3.3" 481 | resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" 482 | dependencies: 483 | bn.js "^4.4.0" 484 | brorand "^1.0.1" 485 | hash.js "^1.0.0" 486 | inherits "^2.0.1" 487 | 488 | emojis-list@^2.0.0: 489 | version "2.1.0" 490 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" 491 | 492 | enhanced-resolve@^3.0.0: 493 | version "3.1.0" 494 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.1.0.tgz#9f4b626f577245edcf4b2ad83d86e17f4f421dec" 495 | dependencies: 496 | graceful-fs "^4.1.2" 497 | memory-fs "^0.4.0" 498 | object-assign "^4.0.1" 499 | tapable "^0.2.5" 500 | 501 | errno@^0.1.3: 502 | version "0.1.4" 503 | resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d" 504 | dependencies: 505 | prr "~0.0.0" 506 | 507 | error-ex@^1.2.0: 508 | version "1.3.0" 509 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9" 510 | dependencies: 511 | is-arrayish "^0.2.1" 512 | 513 | escape-string-regexp@^1.0.2: 514 | version "1.0.5" 515 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 516 | 517 | events@^1.0.0: 518 | version "1.1.1" 519 | resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" 520 | 521 | evp_bytestokey@^1.0.0: 522 | version "1.0.0" 523 | resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53" 524 | dependencies: 525 | create-hash "^1.1.1" 526 | 527 | expand-brackets@^0.1.4: 528 | version "0.1.5" 529 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 530 | dependencies: 531 | is-posix-bracket "^0.1.0" 532 | 533 | expand-range@^1.8.1: 534 | version "1.8.2" 535 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 536 | dependencies: 537 | fill-range "^2.1.0" 538 | 539 | extend@~3.0.0: 540 | version "3.0.0" 541 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 542 | 543 | extglob@^0.3.1: 544 | version "0.3.2" 545 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 546 | dependencies: 547 | is-extglob "^1.0.0" 548 | 549 | extsprintf@1.0.2: 550 | version "1.0.2" 551 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 552 | 553 | filename-regex@^2.0.0: 554 | version "2.0.0" 555 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 556 | 557 | fill-range@^2.1.0: 558 | version "2.2.3" 559 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 560 | dependencies: 561 | is-number "^2.1.0" 562 | isobject "^2.0.0" 563 | randomatic "^1.1.3" 564 | repeat-element "^1.1.2" 565 | repeat-string "^1.5.2" 566 | 567 | find-up@^1.0.0: 568 | version "1.1.2" 569 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 570 | dependencies: 571 | path-exists "^2.0.0" 572 | pinkie-promise "^2.0.0" 573 | 574 | for-in@^0.1.5: 575 | version "0.1.6" 576 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" 577 | 578 | for-own@^0.1.4: 579 | version "0.1.4" 580 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" 581 | dependencies: 582 | for-in "^0.1.5" 583 | 584 | forever-agent@~0.6.1: 585 | version "0.6.1" 586 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 587 | 588 | form-data@~2.1.1: 589 | version "2.1.2" 590 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 591 | dependencies: 592 | asynckit "^0.4.0" 593 | combined-stream "^1.0.5" 594 | mime-types "^2.1.12" 595 | 596 | fs.realpath@^1.0.0: 597 | version "1.0.0" 598 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 599 | 600 | fsevents@^1.0.0: 601 | version "1.0.17" 602 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558" 603 | dependencies: 604 | nan "^2.3.0" 605 | node-pre-gyp "^0.6.29" 606 | 607 | fstream-ignore@~1.0.5: 608 | version "1.0.5" 609 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 610 | dependencies: 611 | fstream "^1.0.0" 612 | inherits "2" 613 | minimatch "^3.0.0" 614 | 615 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: 616 | version "1.0.10" 617 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" 618 | dependencies: 619 | graceful-fs "^4.1.2" 620 | inherits "~2.0.0" 621 | mkdirp ">=0.5 0" 622 | rimraf "2" 623 | 624 | gauge@~2.7.1: 625 | version "2.7.3" 626 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" 627 | dependencies: 628 | aproba "^1.0.3" 629 | console-control-strings "^1.0.0" 630 | has-unicode "^2.0.0" 631 | object-assign "^4.1.0" 632 | signal-exit "^3.0.0" 633 | string-width "^1.0.1" 634 | strip-ansi "^3.0.1" 635 | wide-align "^1.1.0" 636 | 637 | generate-function@^2.0.0: 638 | version "2.0.0" 639 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 640 | 641 | generate-object-property@^1.1.0: 642 | version "1.2.0" 643 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 644 | dependencies: 645 | is-property "^1.0.0" 646 | 647 | get-caller-file@^1.0.1: 648 | version "1.0.2" 649 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 650 | 651 | getpass@^0.1.1: 652 | version "0.1.6" 653 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 654 | dependencies: 655 | assert-plus "^1.0.0" 656 | 657 | glob-base@^0.3.0: 658 | version "0.3.0" 659 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 660 | dependencies: 661 | glob-parent "^2.0.0" 662 | is-glob "^2.0.0" 663 | 664 | glob-parent@^2.0.0: 665 | version "2.0.0" 666 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 667 | dependencies: 668 | is-glob "^2.0.0" 669 | 670 | glob@^7.0.5: 671 | version "7.1.1" 672 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 673 | dependencies: 674 | fs.realpath "^1.0.0" 675 | inflight "^1.0.4" 676 | inherits "2" 677 | minimatch "^3.0.2" 678 | once "^1.3.0" 679 | path-is-absolute "^1.0.0" 680 | 681 | graceful-fs@^4.1.2: 682 | version "4.1.11" 683 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 684 | 685 | "graceful-readlink@>= 1.0.0": 686 | version "1.0.1" 687 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 688 | 689 | har-validator@~2.0.6: 690 | version "2.0.6" 691 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 692 | dependencies: 693 | chalk "^1.1.1" 694 | commander "^2.9.0" 695 | is-my-json-valid "^2.12.4" 696 | pinkie-promise "^2.0.0" 697 | 698 | has-ansi@^2.0.0: 699 | version "2.0.0" 700 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 701 | dependencies: 702 | ansi-regex "^2.0.0" 703 | 704 | has-flag@^1.0.0: 705 | version "1.0.0" 706 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 707 | 708 | has-unicode@^2.0.0: 709 | version "2.0.1" 710 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 711 | 712 | hash.js@^1.0.0: 713 | version "1.0.3" 714 | resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573" 715 | dependencies: 716 | inherits "^2.0.1" 717 | 718 | hawk@~3.1.3: 719 | version "3.1.3" 720 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 721 | dependencies: 722 | boom "2.x.x" 723 | cryptiles "2.x.x" 724 | hoek "2.x.x" 725 | sntp "1.x.x" 726 | 727 | hoek@2.x.x: 728 | version "2.16.3" 729 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 730 | 731 | hosted-git-info@^2.1.4: 732 | version "2.2.0" 733 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" 734 | 735 | http-signature@~1.1.0: 736 | version "1.1.1" 737 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 738 | dependencies: 739 | assert-plus "^0.2.0" 740 | jsprim "^1.2.2" 741 | sshpk "^1.7.0" 742 | 743 | https-browserify@0.0.1: 744 | version "0.0.1" 745 | resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82" 746 | 747 | ieee754@^1.1.4: 748 | version "1.1.8" 749 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" 750 | 751 | indexof@0.0.1: 752 | version "0.0.1" 753 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 754 | 755 | inflight@^1.0.4: 756 | version "1.0.6" 757 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 758 | dependencies: 759 | once "^1.3.0" 760 | wrappy "1" 761 | 762 | inherits@2, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: 763 | version "2.0.3" 764 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 765 | 766 | inherits@2.0.1: 767 | version "2.0.1" 768 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 769 | 770 | ini@~1.3.0: 771 | version "1.3.4" 772 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 773 | 774 | interpret@^1.0.0: 775 | version "1.0.1" 776 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" 777 | 778 | invert-kv@^1.0.0: 779 | version "1.0.0" 780 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 781 | 782 | is-arrayish@^0.2.1: 783 | version "0.2.1" 784 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 785 | 786 | is-binary-path@^1.0.0: 787 | version "1.0.1" 788 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 789 | dependencies: 790 | binary-extensions "^1.0.0" 791 | 792 | is-buffer@^1.0.2: 793 | version "1.1.4" 794 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 795 | 796 | is-builtin-module@^1.0.0: 797 | version "1.0.0" 798 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 799 | dependencies: 800 | builtin-modules "^1.0.0" 801 | 802 | is-dotfile@^1.0.0: 803 | version "1.0.2" 804 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 805 | 806 | is-equal-shallow@^0.1.3: 807 | version "0.1.3" 808 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 809 | dependencies: 810 | is-primitive "^2.0.0" 811 | 812 | is-extendable@^0.1.1: 813 | version "0.1.1" 814 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 815 | 816 | is-extglob@^1.0.0: 817 | version "1.0.0" 818 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 819 | 820 | is-fullwidth-code-point@^1.0.0: 821 | version "1.0.0" 822 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 823 | dependencies: 824 | number-is-nan "^1.0.0" 825 | 826 | is-glob@^2.0.0, is-glob@^2.0.1: 827 | version "2.0.1" 828 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 829 | dependencies: 830 | is-extglob "^1.0.0" 831 | 832 | is-my-json-valid@^2.12.4: 833 | version "2.15.0" 834 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" 835 | dependencies: 836 | generate-function "^2.0.0" 837 | generate-object-property "^1.1.0" 838 | jsonpointer "^4.0.0" 839 | xtend "^4.0.0" 840 | 841 | is-number@^2.0.2, is-number@^2.1.0: 842 | version "2.1.0" 843 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 844 | dependencies: 845 | kind-of "^3.0.2" 846 | 847 | is-posix-bracket@^0.1.0: 848 | version "0.1.1" 849 | resolved "http://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 850 | 851 | is-primitive@^2.0.0: 852 | version "2.0.0" 853 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 854 | 855 | is-property@^1.0.0: 856 | version "1.0.2" 857 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 858 | 859 | is-typedarray@~1.0.0: 860 | version "1.0.0" 861 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 862 | 863 | is-utf8@^0.2.0: 864 | version "0.2.1" 865 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 866 | 867 | isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: 868 | version "1.0.0" 869 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 870 | 871 | isobject@^2.0.0: 872 | version "2.1.0" 873 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 874 | dependencies: 875 | isarray "1.0.0" 876 | 877 | isstream@~0.1.2: 878 | version "0.1.2" 879 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 880 | 881 | jodid25519@^1.0.0: 882 | version "1.0.2" 883 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 884 | dependencies: 885 | jsbn "~0.1.0" 886 | 887 | jquery@>=1.9.1, jquery@^3.1.1: 888 | version "3.2.1" 889 | resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.2.1.tgz#5c4d9de652af6cd0a770154a631bba12b015c787" 890 | 891 | jsbn@~0.1.0: 892 | version "0.1.1" 893 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 894 | 895 | json-loader@^0.5.4: 896 | version "0.5.4" 897 | resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de" 898 | 899 | json-schema@0.2.3: 900 | version "0.2.3" 901 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 902 | 903 | json-stable-stringify@^1.0.1: 904 | version "1.0.1" 905 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 906 | dependencies: 907 | jsonify "~0.0.0" 908 | 909 | json-stringify-safe@~5.0.1: 910 | version "5.0.1" 911 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 912 | 913 | json5@^0.5.0: 914 | version "0.5.1" 915 | resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" 916 | 917 | jsonify@~0.0.0: 918 | version "0.0.0" 919 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 920 | 921 | jsonpointer@^4.0.0: 922 | version "4.0.1" 923 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 924 | 925 | jsprim@^1.2.2: 926 | version "1.3.1" 927 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" 928 | dependencies: 929 | extsprintf "1.0.2" 930 | json-schema "0.2.3" 931 | verror "1.3.6" 932 | 933 | jstree@^3.3.3: 934 | version "3.3.4" 935 | resolved "https://registry.yarnpkg.com/jstree/-/jstree-3.3.4.tgz#3d089bb9623bd6f3f25f64c4e4ce547b30d40264" 936 | dependencies: 937 | jquery ">=1.9.1" 938 | 939 | keymaster@^1.6.2: 940 | version "1.6.2" 941 | resolved "https://registry.yarnpkg.com/keymaster/-/keymaster-1.6.2.tgz#e1ae54d0ea9488f9f60b66b668f02e9a1946c6eb" 942 | 943 | kind-of@^3.0.2: 944 | version "3.1.0" 945 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 946 | dependencies: 947 | is-buffer "^1.0.2" 948 | 949 | lazy-cache@^1.0.3: 950 | version "1.0.4" 951 | resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" 952 | 953 | lcid@^1.0.0: 954 | version "1.0.0" 955 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 956 | dependencies: 957 | invert-kv "^1.0.0" 958 | 959 | load-json-file@^1.0.0: 960 | version "1.1.0" 961 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 962 | dependencies: 963 | graceful-fs "^4.1.2" 964 | parse-json "^2.2.0" 965 | pify "^2.0.0" 966 | pinkie-promise "^2.0.0" 967 | strip-bom "^2.0.0" 968 | 969 | loader-runner@^2.3.0: 970 | version "2.3.0" 971 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" 972 | 973 | loader-utils@^0.2.16: 974 | version "0.2.16" 975 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d" 976 | dependencies: 977 | big.js "^3.1.3" 978 | emojis-list "^2.0.0" 979 | json5 "^0.5.0" 980 | object-assign "^4.0.1" 981 | 982 | lodash@^4.14.0: 983 | version "4.17.4" 984 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 985 | 986 | longest@^1.0.1: 987 | version "1.0.1" 988 | resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" 989 | 990 | matter-js@0.12.0, matter-js@^0.12.0: 991 | version "0.12.0" 992 | resolved "https://registry.yarnpkg.com/matter-js/-/matter-js-0.12.0.tgz#dcb02d04326c47746c63a3772d1475753d72fe1e" 993 | 994 | matter-tools@^0.10.0: 995 | version "0.10.0" 996 | resolved "https://registry.yarnpkg.com/matter-tools/-/matter-tools-0.10.0.tgz#832dd8b199999db2306aca4c814c6e641fd4df0a" 997 | dependencies: 998 | dat.gui "^0.6.1" 999 | jquery "^3.1.1" 1000 | jstree "^3.3.3" 1001 | keymaster "^1.6.2" 1002 | matter-js "^0.12.0" 1003 | 1004 | memory-fs@^0.4.0, memory-fs@~0.4.1: 1005 | version "0.4.1" 1006 | resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" 1007 | dependencies: 1008 | errno "^0.1.3" 1009 | readable-stream "^2.0.1" 1010 | 1011 | micromatch@^2.1.5: 1012 | version "2.3.11" 1013 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1014 | dependencies: 1015 | arr-diff "^2.0.0" 1016 | array-unique "^0.2.1" 1017 | braces "^1.8.2" 1018 | expand-brackets "^0.1.4" 1019 | extglob "^0.3.1" 1020 | filename-regex "^2.0.0" 1021 | is-extglob "^1.0.0" 1022 | is-glob "^2.0.1" 1023 | kind-of "^3.0.2" 1024 | normalize-path "^2.0.1" 1025 | object.omit "^2.0.0" 1026 | parse-glob "^3.0.4" 1027 | regex-cache "^0.4.2" 1028 | 1029 | miller-rabin@^4.0.0: 1030 | version "4.0.0" 1031 | resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d" 1032 | dependencies: 1033 | bn.js "^4.0.0" 1034 | brorand "^1.0.1" 1035 | 1036 | mime-db@~1.26.0: 1037 | version "1.26.0" 1038 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" 1039 | 1040 | mime-types@^2.1.12, mime-types@~2.1.7: 1041 | version "2.1.14" 1042 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" 1043 | dependencies: 1044 | mime-db "~1.26.0" 1045 | 1046 | minimalistic-assert@^1.0.0: 1047 | version "1.0.0" 1048 | resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3" 1049 | 1050 | minimatch@^3.0.0, minimatch@^3.0.2: 1051 | version "3.0.3" 1052 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1053 | dependencies: 1054 | brace-expansion "^1.0.0" 1055 | 1056 | minimist@0.0.8: 1057 | version "0.0.8" 1058 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1059 | 1060 | minimist@^1.2.0: 1061 | version "1.2.0" 1062 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1063 | 1064 | "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1: 1065 | version "0.5.1" 1066 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1067 | dependencies: 1068 | minimist "0.0.8" 1069 | 1070 | ms@0.7.1: 1071 | version "0.7.1" 1072 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1073 | 1074 | nan@^2.3.0: 1075 | version "2.5.1" 1076 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" 1077 | 1078 | node-libs-browser@^2.0.0: 1079 | version "2.0.0" 1080 | resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.0.0.tgz#a3a59ec97024985b46e958379646f96c4b616646" 1081 | dependencies: 1082 | assert "^1.1.1" 1083 | browserify-zlib "^0.1.4" 1084 | buffer "^4.3.0" 1085 | console-browserify "^1.1.0" 1086 | constants-browserify "^1.0.0" 1087 | crypto-browserify "^3.11.0" 1088 | domain-browser "^1.1.1" 1089 | events "^1.0.0" 1090 | https-browserify "0.0.1" 1091 | os-browserify "^0.2.0" 1092 | path-browserify "0.0.0" 1093 | process "^0.11.0" 1094 | punycode "^1.2.4" 1095 | querystring-es3 "^0.2.0" 1096 | readable-stream "^2.0.5" 1097 | stream-browserify "^2.0.1" 1098 | stream-http "^2.3.1" 1099 | string_decoder "^0.10.25" 1100 | timers-browserify "^2.0.2" 1101 | tty-browserify "0.0.0" 1102 | url "^0.11.0" 1103 | util "^0.10.3" 1104 | vm-browserify "0.0.4" 1105 | 1106 | node-pre-gyp@^0.6.29: 1107 | version "0.6.33" 1108 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9" 1109 | dependencies: 1110 | mkdirp "~0.5.1" 1111 | nopt "~3.0.6" 1112 | npmlog "^4.0.1" 1113 | rc "~1.1.6" 1114 | request "^2.79.0" 1115 | rimraf "~2.5.4" 1116 | semver "~5.3.0" 1117 | tar "~2.2.1" 1118 | tar-pack "~3.3.0" 1119 | 1120 | nopt@~3.0.6: 1121 | version "3.0.6" 1122 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1123 | dependencies: 1124 | abbrev "1" 1125 | 1126 | normalize-package-data@^2.3.2: 1127 | version "2.3.5" 1128 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df" 1129 | dependencies: 1130 | hosted-git-info "^2.1.4" 1131 | is-builtin-module "^1.0.0" 1132 | semver "2 || 3 || 4 || 5" 1133 | validate-npm-package-license "^3.0.1" 1134 | 1135 | normalize-path@^2.0.1: 1136 | version "2.0.1" 1137 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" 1138 | 1139 | npmlog@^4.0.1: 1140 | version "4.0.2" 1141 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 1142 | dependencies: 1143 | are-we-there-yet "~1.1.2" 1144 | console-control-strings "~1.1.0" 1145 | gauge "~2.7.1" 1146 | set-blocking "~2.0.0" 1147 | 1148 | number-is-nan@^1.0.0: 1149 | version "1.0.1" 1150 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1151 | 1152 | oauth-sign@~0.8.1: 1153 | version "0.8.2" 1154 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1155 | 1156 | object-assign@^4.0.1, object-assign@^4.1.0: 1157 | version "4.1.1" 1158 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1159 | 1160 | object.omit@^2.0.0: 1161 | version "2.0.1" 1162 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1163 | dependencies: 1164 | for-own "^0.1.4" 1165 | is-extendable "^0.1.1" 1166 | 1167 | once@^1.3.0, once@~1.3.3: 1168 | version "1.3.3" 1169 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 1170 | dependencies: 1171 | wrappy "1" 1172 | 1173 | os-browserify@^0.2.0: 1174 | version "0.2.1" 1175 | resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f" 1176 | 1177 | os-locale@^1.4.0: 1178 | version "1.4.0" 1179 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 1180 | dependencies: 1181 | lcid "^1.0.0" 1182 | 1183 | pako@~0.2.0: 1184 | version "0.2.9" 1185 | resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" 1186 | 1187 | parse-asn1@^5.0.0: 1188 | version "5.0.0" 1189 | resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23" 1190 | dependencies: 1191 | asn1.js "^4.0.0" 1192 | browserify-aes "^1.0.0" 1193 | create-hash "^1.1.0" 1194 | evp_bytestokey "^1.0.0" 1195 | pbkdf2 "^3.0.3" 1196 | 1197 | parse-glob@^3.0.4: 1198 | version "3.0.4" 1199 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1200 | dependencies: 1201 | glob-base "^0.3.0" 1202 | is-dotfile "^1.0.0" 1203 | is-extglob "^1.0.0" 1204 | is-glob "^2.0.0" 1205 | 1206 | parse-json@^2.2.0: 1207 | version "2.2.0" 1208 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 1209 | dependencies: 1210 | error-ex "^1.2.0" 1211 | 1212 | path-browserify@0.0.0: 1213 | version "0.0.0" 1214 | resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" 1215 | 1216 | path-exists@^2.0.0: 1217 | version "2.1.0" 1218 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 1219 | dependencies: 1220 | pinkie-promise "^2.0.0" 1221 | 1222 | path-is-absolute@^1.0.0: 1223 | version "1.0.1" 1224 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1225 | 1226 | path-type@^1.0.0: 1227 | version "1.1.0" 1228 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 1229 | dependencies: 1230 | graceful-fs "^4.1.2" 1231 | pify "^2.0.0" 1232 | pinkie-promise "^2.0.0" 1233 | 1234 | pbkdf2@^3.0.3: 1235 | version "3.0.9" 1236 | resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693" 1237 | dependencies: 1238 | create-hmac "^1.1.2" 1239 | 1240 | pify@^2.0.0: 1241 | version "2.3.0" 1242 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 1243 | 1244 | pinkie-promise@^2.0.0: 1245 | version "2.0.1" 1246 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1247 | dependencies: 1248 | pinkie "^2.0.0" 1249 | 1250 | pinkie@^2.0.0: 1251 | version "2.0.4" 1252 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1253 | 1254 | preserve@^0.2.0: 1255 | version "0.2.0" 1256 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1257 | 1258 | process-nextick-args@~1.0.6: 1259 | version "1.0.7" 1260 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1261 | 1262 | process@^0.11.0: 1263 | version "0.11.9" 1264 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" 1265 | 1266 | prr@~0.0.0: 1267 | version "0.0.0" 1268 | resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a" 1269 | 1270 | public-encrypt@^4.0.0: 1271 | version "4.0.0" 1272 | resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" 1273 | dependencies: 1274 | bn.js "^4.1.0" 1275 | browserify-rsa "^4.0.0" 1276 | create-hash "^1.1.0" 1277 | parse-asn1 "^5.0.0" 1278 | randombytes "^2.0.1" 1279 | 1280 | punycode@1.3.2: 1281 | version "1.3.2" 1282 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" 1283 | 1284 | punycode@^1.2.4, punycode@^1.4.1: 1285 | version "1.4.1" 1286 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1287 | 1288 | qs@~6.3.0: 1289 | version "6.3.1" 1290 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.1.tgz#918c0b3bcd36679772baf135b1acb4c1651ed79d" 1291 | 1292 | querystring-es3@^0.2.0: 1293 | version "0.2.1" 1294 | resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" 1295 | 1296 | querystring@0.2.0: 1297 | version "0.2.0" 1298 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" 1299 | 1300 | randomatic@^1.1.3: 1301 | version "1.1.6" 1302 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 1303 | dependencies: 1304 | is-number "^2.0.2" 1305 | kind-of "^3.0.2" 1306 | 1307 | randombytes@^2.0.0, randombytes@^2.0.1: 1308 | version "2.0.3" 1309 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec" 1310 | 1311 | rc@~1.1.6: 1312 | version "1.1.7" 1313 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea" 1314 | dependencies: 1315 | deep-extend "~0.4.0" 1316 | ini "~1.3.0" 1317 | minimist "^1.2.0" 1318 | strip-json-comments "~2.0.1" 1319 | 1320 | read-pkg-up@^1.0.1: 1321 | version "1.0.1" 1322 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 1323 | dependencies: 1324 | find-up "^1.0.0" 1325 | read-pkg "^1.0.0" 1326 | 1327 | read-pkg@^1.0.0: 1328 | version "1.1.0" 1329 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 1330 | dependencies: 1331 | load-json-file "^1.0.0" 1332 | normalize-package-data "^2.3.2" 1333 | path-type "^1.0.0" 1334 | 1335 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.0: 1336 | version "2.2.2" 1337 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" 1338 | dependencies: 1339 | buffer-shims "^1.0.0" 1340 | core-util-is "~1.0.0" 1341 | inherits "~2.0.1" 1342 | isarray "~1.0.0" 1343 | process-nextick-args "~1.0.6" 1344 | string_decoder "~0.10.x" 1345 | util-deprecate "~1.0.1" 1346 | 1347 | readable-stream@~2.1.4: 1348 | version "2.1.5" 1349 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" 1350 | dependencies: 1351 | buffer-shims "^1.0.0" 1352 | core-util-is "~1.0.0" 1353 | inherits "~2.0.1" 1354 | isarray "~1.0.0" 1355 | process-nextick-args "~1.0.6" 1356 | string_decoder "~0.10.x" 1357 | util-deprecate "~1.0.1" 1358 | 1359 | readdirp@^2.0.0: 1360 | version "2.1.0" 1361 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 1362 | dependencies: 1363 | graceful-fs "^4.1.2" 1364 | minimatch "^3.0.2" 1365 | readable-stream "^2.0.2" 1366 | set-immediate-shim "^1.0.1" 1367 | 1368 | regex-cache@^0.4.2: 1369 | version "0.4.3" 1370 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 1371 | dependencies: 1372 | is-equal-shallow "^0.1.3" 1373 | is-primitive "^2.0.0" 1374 | 1375 | repeat-element@^1.1.2: 1376 | version "1.1.2" 1377 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 1378 | 1379 | repeat-string@^1.5.2: 1380 | version "1.6.1" 1381 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1382 | 1383 | request@^2.79.0: 1384 | version "2.79.0" 1385 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" 1386 | dependencies: 1387 | aws-sign2 "~0.6.0" 1388 | aws4 "^1.2.1" 1389 | caseless "~0.11.0" 1390 | combined-stream "~1.0.5" 1391 | extend "~3.0.0" 1392 | forever-agent "~0.6.1" 1393 | form-data "~2.1.1" 1394 | har-validator "~2.0.6" 1395 | hawk "~3.1.3" 1396 | http-signature "~1.1.0" 1397 | is-typedarray "~1.0.0" 1398 | isstream "~0.1.2" 1399 | json-stringify-safe "~5.0.1" 1400 | mime-types "~2.1.7" 1401 | oauth-sign "~0.8.1" 1402 | qs "~6.3.0" 1403 | stringstream "~0.0.4" 1404 | tough-cookie "~2.3.0" 1405 | tunnel-agent "~0.4.1" 1406 | uuid "^3.0.0" 1407 | 1408 | require-directory@^2.1.1: 1409 | version "2.1.1" 1410 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1411 | 1412 | require-main-filename@^1.0.1: 1413 | version "1.0.1" 1414 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 1415 | 1416 | right-align@^0.1.1: 1417 | version "0.1.3" 1418 | resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" 1419 | dependencies: 1420 | align-text "^0.1.1" 1421 | 1422 | rimraf@2, rimraf@~2.5.1, rimraf@~2.5.4: 1423 | version "2.5.4" 1424 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 1425 | dependencies: 1426 | glob "^7.0.5" 1427 | 1428 | ripemd160@^1.0.0: 1429 | version "1.0.1" 1430 | resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e" 1431 | 1432 | "semver@2 || 3 || 4 || 5", semver@~5.3.0: 1433 | version "5.3.0" 1434 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1435 | 1436 | set-blocking@^2.0.0, set-blocking@~2.0.0: 1437 | version "2.0.0" 1438 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1439 | 1440 | set-immediate-shim@^1.0.1: 1441 | version "1.0.1" 1442 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1443 | 1444 | setimmediate@^1.0.4: 1445 | version "1.0.5" 1446 | resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" 1447 | 1448 | sha.js@^2.3.6: 1449 | version "2.4.8" 1450 | resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.8.tgz#37068c2c476b6baf402d14a49c67f597921f634f" 1451 | dependencies: 1452 | inherits "^2.0.1" 1453 | 1454 | signal-exit@^3.0.0: 1455 | version "3.0.2" 1456 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1457 | 1458 | sntp@1.x.x: 1459 | version "1.0.9" 1460 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 1461 | dependencies: 1462 | hoek "2.x.x" 1463 | 1464 | source-list-map@~0.1.7: 1465 | version "0.1.8" 1466 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.8.tgz#c550b2ab5427f6b3f21f5afead88c4f5587b2106" 1467 | 1468 | source-map@^0.5.3, source-map@~0.5.1, source-map@~0.5.3: 1469 | version "0.5.6" 1470 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 1471 | 1472 | spdx-correct@~1.0.0: 1473 | version "1.0.2" 1474 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 1475 | dependencies: 1476 | spdx-license-ids "^1.0.2" 1477 | 1478 | spdx-expression-parse@~1.0.0: 1479 | version "1.0.4" 1480 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 1481 | 1482 | spdx-license-ids@^1.0.2: 1483 | version "1.2.2" 1484 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 1485 | 1486 | sshpk@^1.7.0: 1487 | version "1.10.2" 1488 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa" 1489 | dependencies: 1490 | asn1 "~0.2.3" 1491 | assert-plus "^1.0.0" 1492 | dashdash "^1.12.0" 1493 | getpass "^0.1.1" 1494 | optionalDependencies: 1495 | bcrypt-pbkdf "^1.0.0" 1496 | ecc-jsbn "~0.1.1" 1497 | jodid25519 "^1.0.0" 1498 | jsbn "~0.1.0" 1499 | tweetnacl "~0.14.0" 1500 | 1501 | stream-browserify@^2.0.1: 1502 | version "2.0.1" 1503 | resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" 1504 | dependencies: 1505 | inherits "~2.0.1" 1506 | readable-stream "^2.0.2" 1507 | 1508 | stream-http@^2.3.1: 1509 | version "2.6.3" 1510 | resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.6.3.tgz#4c3ddbf9635968ea2cfd4e48d43de5def2625ac3" 1511 | dependencies: 1512 | builtin-status-codes "^3.0.0" 1513 | inherits "^2.0.1" 1514 | readable-stream "^2.1.0" 1515 | to-arraybuffer "^1.0.0" 1516 | xtend "^4.0.0" 1517 | 1518 | string-width@^1.0.1, string-width@^1.0.2: 1519 | version "1.0.2" 1520 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1521 | dependencies: 1522 | code-point-at "^1.0.0" 1523 | is-fullwidth-code-point "^1.0.0" 1524 | strip-ansi "^3.0.0" 1525 | 1526 | string_decoder@^0.10.25, string_decoder@~0.10.x: 1527 | version "0.10.31" 1528 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 1529 | 1530 | stringstream@~0.0.4: 1531 | version "0.0.5" 1532 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 1533 | 1534 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1535 | version "3.0.1" 1536 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1537 | dependencies: 1538 | ansi-regex "^2.0.0" 1539 | 1540 | strip-bom@^2.0.0: 1541 | version "2.0.0" 1542 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 1543 | dependencies: 1544 | is-utf8 "^0.2.0" 1545 | 1546 | strip-json-comments@~2.0.1: 1547 | version "2.0.1" 1548 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1549 | 1550 | supports-color@^2.0.0: 1551 | version "2.0.0" 1552 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1553 | 1554 | supports-color@^3.1.0: 1555 | version "3.2.3" 1556 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 1557 | dependencies: 1558 | has-flag "^1.0.0" 1559 | 1560 | tapable@^0.2.5, tapable@~0.2.5: 1561 | version "0.2.6" 1562 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.6.tgz#206be8e188860b514425375e6f1ae89bfb01fd8d" 1563 | 1564 | tar-pack@~3.3.0: 1565 | version "3.3.0" 1566 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" 1567 | dependencies: 1568 | debug "~2.2.0" 1569 | fstream "~1.0.10" 1570 | fstream-ignore "~1.0.5" 1571 | once "~1.3.3" 1572 | readable-stream "~2.1.4" 1573 | rimraf "~2.5.1" 1574 | tar "~2.2.1" 1575 | uid-number "~0.0.6" 1576 | 1577 | tar@~2.2.1: 1578 | version "2.2.1" 1579 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 1580 | dependencies: 1581 | block-stream "*" 1582 | fstream "^1.0.2" 1583 | inherits "2" 1584 | 1585 | timers-browserify@^2.0.2: 1586 | version "2.0.2" 1587 | resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.2.tgz#ab4883cf597dcd50af211349a00fbca56ac86b86" 1588 | dependencies: 1589 | setimmediate "^1.0.4" 1590 | 1591 | to-arraybuffer@^1.0.0: 1592 | version "1.0.1" 1593 | resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" 1594 | 1595 | tough-cookie@~2.3.0: 1596 | version "2.3.2" 1597 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 1598 | dependencies: 1599 | punycode "^1.4.1" 1600 | 1601 | tty-browserify@0.0.0: 1602 | version "0.0.0" 1603 | resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" 1604 | 1605 | tunnel-agent@~0.4.1: 1606 | version "0.4.3" 1607 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 1608 | 1609 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1610 | version "0.14.5" 1611 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1612 | 1613 | uglify-js@^2.7.5: 1614 | version "2.7.5" 1615 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.5.tgz#4612c0c7baaee2ba7c487de4904ae122079f2ca8" 1616 | dependencies: 1617 | async "~0.2.6" 1618 | source-map "~0.5.1" 1619 | uglify-to-browserify "~1.0.0" 1620 | yargs "~3.10.0" 1621 | 1622 | uglify-to-browserify@~1.0.0: 1623 | version "1.0.2" 1624 | resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" 1625 | 1626 | uid-number@~0.0.6: 1627 | version "0.0.6" 1628 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 1629 | 1630 | url@^0.11.0: 1631 | version "0.11.0" 1632 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" 1633 | dependencies: 1634 | punycode "1.3.2" 1635 | querystring "0.2.0" 1636 | 1637 | util-deprecate@~1.0.1: 1638 | version "1.0.2" 1639 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1640 | 1641 | util@0.10.3, util@^0.10.3: 1642 | version "0.10.3" 1643 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 1644 | dependencies: 1645 | inherits "2.0.1" 1646 | 1647 | uuid@^3.0.0: 1648 | version "3.0.1" 1649 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 1650 | 1651 | validate-npm-package-license@^3.0.1: 1652 | version "3.0.1" 1653 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 1654 | dependencies: 1655 | spdx-correct "~1.0.0" 1656 | spdx-expression-parse "~1.0.0" 1657 | 1658 | verror@1.3.6: 1659 | version "1.3.6" 1660 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 1661 | dependencies: 1662 | extsprintf "1.0.2" 1663 | 1664 | vm-browserify@0.0.4: 1665 | version "0.0.4" 1666 | resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" 1667 | dependencies: 1668 | indexof "0.0.1" 1669 | 1670 | watchpack@^1.2.0: 1671 | version "1.2.1" 1672 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.2.1.tgz#01efa80c5c29e5c56ba55d6f5470a35b6402f0b2" 1673 | dependencies: 1674 | async "^2.1.2" 1675 | chokidar "^1.4.3" 1676 | graceful-fs "^4.1.2" 1677 | 1678 | webpack-sources@^0.1.4: 1679 | version "0.1.4" 1680 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.4.tgz#ccc2c817e08e5fa393239412690bb481821393cd" 1681 | dependencies: 1682 | source-list-map "~0.1.7" 1683 | source-map "~0.5.3" 1684 | 1685 | webpack@^2.2.1: 1686 | version "2.2.1" 1687 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.2.1.tgz#7bb1d72ae2087dd1a4af526afec15eed17dda475" 1688 | dependencies: 1689 | acorn "^4.0.4" 1690 | acorn-dynamic-import "^2.0.0" 1691 | ajv "^4.7.0" 1692 | ajv-keywords "^1.1.1" 1693 | async "^2.1.2" 1694 | enhanced-resolve "^3.0.0" 1695 | interpret "^1.0.0" 1696 | json-loader "^0.5.4" 1697 | loader-runner "^2.3.0" 1698 | loader-utils "^0.2.16" 1699 | memory-fs "~0.4.1" 1700 | mkdirp "~0.5.0" 1701 | node-libs-browser "^2.0.0" 1702 | source-map "^0.5.3" 1703 | supports-color "^3.1.0" 1704 | tapable "~0.2.5" 1705 | uglify-js "^2.7.5" 1706 | watchpack "^1.2.0" 1707 | webpack-sources "^0.1.4" 1708 | yargs "^6.0.0" 1709 | 1710 | which-module@^1.0.0: 1711 | version "1.0.0" 1712 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 1713 | 1714 | wide-align@^1.1.0: 1715 | version "1.1.0" 1716 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 1717 | dependencies: 1718 | string-width "^1.0.1" 1719 | 1720 | window-size@0.1.0: 1721 | version "0.1.0" 1722 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" 1723 | 1724 | wordwrap@0.0.2: 1725 | version "0.0.2" 1726 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" 1727 | 1728 | wrap-ansi@^2.0.0: 1729 | version "2.1.0" 1730 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 1731 | dependencies: 1732 | string-width "^1.0.1" 1733 | strip-ansi "^3.0.1" 1734 | 1735 | wrappy@1: 1736 | version "1.0.2" 1737 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1738 | 1739 | xtend@^4.0.0: 1740 | version "4.0.1" 1741 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1742 | 1743 | y18n@^3.2.1: 1744 | version "3.2.1" 1745 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 1746 | 1747 | yargs-parser@^4.2.0: 1748 | version "4.2.1" 1749 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" 1750 | dependencies: 1751 | camelcase "^3.0.0" 1752 | 1753 | yargs@^6.0.0: 1754 | version "6.6.0" 1755 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" 1756 | dependencies: 1757 | camelcase "^3.0.0" 1758 | cliui "^3.2.0" 1759 | decamelize "^1.1.1" 1760 | get-caller-file "^1.0.1" 1761 | os-locale "^1.4.0" 1762 | read-pkg-up "^1.0.1" 1763 | require-directory "^2.1.1" 1764 | require-main-filename "^1.0.1" 1765 | set-blocking "^2.0.0" 1766 | string-width "^1.0.2" 1767 | which-module "^1.0.0" 1768 | y18n "^3.2.1" 1769 | yargs-parser "^4.2.0" 1770 | 1771 | yargs@~3.10.0: 1772 | version "3.10.0" 1773 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" 1774 | dependencies: 1775 | camelcase "^1.0.2" 1776 | cliui "^2.1.0" 1777 | decamelize "^1.0.0" 1778 | window-size "0.1.0" 1779 | --------------------------------------------------------------------------------