├── .babelrc ├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── cmd.js ├── compiled ├── actions │ ├── index.js │ └── index.js.map ├── components │ ├── BreakPoints │ │ ├── index.js │ │ └── index.js.map │ ├── CallStack │ │ ├── index.js │ │ └── index.js.map │ ├── Cog │ │ ├── index.js │ │ └── index.js.map │ ├── Console │ │ ├── index.js │ │ └── index.js.map │ ├── Controls │ │ ├── index.js │ │ └── index.js.map │ ├── Editor │ │ ├── index.js │ │ └── index.js.map │ ├── EditorStatus │ │ ├── index.js │ │ └── index.js.map │ ├── Navigator │ │ ├── index.js │ │ └── index.js.map │ ├── Scope │ │ ├── index.js │ │ └── index.js.map │ ├── Settings │ │ ├── index.js │ │ └── index.js.map │ ├── Tabs │ │ ├── index.js │ │ └── index.js.map │ ├── Tree │ │ ├── index.js │ │ └── index.js.map │ ├── index.js │ └── index.js.map ├── config │ ├── index.js │ ├── index.js.map │ ├── layouts │ │ ├── compact │ │ │ ├── console.js │ │ │ ├── console.js.map │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── sources.js │ │ │ └── sources.js.map │ │ ├── index.js │ │ ├── index.js.map │ │ ├── minimal │ │ │ ├── console.js │ │ │ ├── console.js.map │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── sources.js │ │ │ └── sources.js.map │ │ └── normal │ │ │ ├── console.js │ │ │ ├── console.js.map │ │ │ ├── index.js │ │ │ ├── index.js.map │ │ │ ├── sources.js │ │ │ └── sources.js.map │ └── user-settings.json ├── containers │ ├── Cog │ │ ├── index.js │ │ └── index.js.map │ ├── Console │ │ ├── index.js │ │ └── index.js.map │ ├── Controls │ │ ├── index.js │ │ └── index.js.map │ ├── Settings │ │ ├── index.js │ │ └── index.js.map │ ├── Sources │ │ ├── index.js │ │ └── index.js.map │ ├── Tabs │ │ ├── index.js │ │ └── index.js.map │ ├── index.js │ └── index.js.map ├── index.js ├── index.js.map ├── keys.js ├── keys.js.map ├── lib │ ├── debug.js │ ├── debug.js.map │ ├── jsonTree.js │ └── jsonTree.js.map ├── reducers │ ├── index.js │ └── index.js.map ├── screen.js ├── screen.js.map ├── store │ ├── create.js │ ├── create.js.map │ ├── persistance.js │ └── persistance.js.map └── style │ ├── index.js │ └── index.js.map ├── demo.gif ├── devnotes.md ├── examples ├── catch-scope.js ├── closure-scope.js ├── debugger-single-tick.js ├── debugger.js ├── empty-fn.js ├── eval.js ├── getters-and-setters.js ├── long-file.js ├── pause.js ├── set-timeout.js ├── sibling-files-in-nav.js ├── simple.js ├── stdout-stderr.js ├── this-object.js └── with-scope.js ├── index.js ├── package.json └── src ├── actions └── index.js ├── components ├── BreakPoints │ └── index.js ├── CallStack │ └── index.js ├── Cog │ └── index.js ├── Console │ └── index.js ├── Controls │ └── index.js ├── Editor │ └── index.js ├── EditorStatus │ └── index.js ├── Navigator │ └── index.js ├── Scope │ └── index.js ├── Settings │ └── index.js ├── Tabs │ └── index.js ├── Tree │ └── index.js └── index.js ├── config ├── index.js └── layouts │ ├── compact │ ├── console.js │ ├── index.js │ └── sources.js │ ├── index.js │ ├── minimal │ ├── console.js │ ├── index.js │ └── sources.js │ └── normal │ ├── console.js │ ├── index.js │ └── sources.js ├── containers ├── Cog │ └── index.js ├── Console │ └── index.js ├── Controls │ └── index.js ├── Settings │ └── index.js ├── Sources │ └── index.js ├── Tabs │ └── index.js └── index.js ├── index.js ├── keys.js ├── lib └── debug.js ├── reducers └── index.js ├── screen.js ├── store ├── create.js └── persistance.js └── style └── index.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["react", "es2015", "stage-0"] 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | log 3 | config/user-settings.json 4 | compiled/*.std* 5 | 6 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | log 2 | config/user-settings.json 3 | demo.gif -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-2016 David Mark Clements 2 | Copyright (c) 2015-2016 Peter Elger 3 | Copyright (c) 2015-2016 The Apparatus Team 4 | 5 | Permission is hereby granted, free of charge, to any person 6 | obtaining a copy of this software and associated documentation 7 | files (the "Software"), to deal in the Software without 8 | restriction, including without limitation the rights to use, 9 | copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the 11 | Software is furnished to do so, subject to the following 12 | conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 19 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 21 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 22 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 23 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 24 | OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Terminal Devtools 2 | 3 | Terminal based Devtools for Node 4 | 5 | ![terminal devtools](./demo.gif) 6 | 7 | ## Status: Pre-release 8 | 9 | ## Install 10 | 11 | ```sh 12 | $ npm i -g terminal-devtools 13 | ``` 14 | 15 | ## Usage 16 | 17 | ```sh 18 | $ devtools [--port ] [--host ] 19 | ``` 20 | 21 | By default `devtools` will connect to the default debugger port (5858) 22 | 23 | ```sh 24 | $ devtools 25 | ``` 26 | 27 | When a valid `node` Process ID is passed, `devtools` will send a `SIGUSR2` 28 | signal to the process, putting it into debug mode then connect to port 29 | 5858. 30 | 31 | ## Navigating 32 | 33 | * **?** - help and settings 34 | * **c** - **c**ontinue, resume if paused, pause if resumed 35 | * **n** - step **n**ext 36 | * **i** - step **i**into 37 | * **o** - step **out** of 38 | * **b** - set **breakpoint** (must be in code text panel) 39 | 40 | * **tab** - move forward between panels 41 | * **shift+tab** - move backward between panels 42 | * **ctrl+n** - **n**avigator 43 | * **ctrl+t** - code **t**ext 44 | * **ctrl+s** - call**s**tack 45 | * **ctrl+p** - break**p**oints 46 | * **ctrl+o** - sc**o**pe 47 | * **ctrl+k** - console panel 48 | * **2** - select Console tab 49 | 50 | * arrow keys and vi keys (hjkl) control selections in panels 51 | * the mouse can also be used to select tabs, panels and items 52 | 53 | ## Examples 54 | 55 | ### Zero-config 56 | Put a service into debug mode, break on first line 57 | 58 | ```sh 59 | $ node --debug-brk examples/simple 60 | ``` 61 | 62 | Connect to default debug port 63 | ```sh 64 | $ devtools 65 | ``` 66 | 67 | ### Multi-process 68 | If we need to use more than debug port we can specify 69 | 70 | Expose debug port as 5859 71 | ```sh 72 | $ node --debug-brk=5859 examples/debugger-single-tick 73 | ``` 74 | 75 | Connect to custom debug port 76 | ```sh 77 | $ devtools --port 5859 78 | ``` 79 | 80 | ### Debug a running process 81 | 82 | Start a process as normal, debug mode is completely off 83 | 84 | ```sh 85 | $ node examples/debugger 86 | 3879 87 | ``` 88 | 89 | Process handily outputs PID, pass it to `devtools` 90 | 91 | ```sh 92 | $ devtools 3879 93 | ``` 94 | 95 | `devtools` puts process into debug mode and connects to debugger. 96 | 97 | 98 | ## Layouts 99 | 100 | There are two supported layouts, Normal and Minimal. 101 | 102 | The layout can be changed in Settings (`?` or click the ⚙ icon). 103 | 104 | In minimal layout, hidden panels can be revealed as dialogs using the 105 | `ctrl` based shortcuts (Navigator: `ctrl+n`, Scope: `ctrl+o`). To exit a 106 | Scope or Navigator dialog press the `esc` key. 107 | 108 | 109 | ## Contributing 110 | 111 | More than welcome 112 | 113 | See [devnotes](./devnotes.md) 114 | 115 | Any questions, twitter: [@davidmarkclem](https://twitter.com/@davidmarkclem) 116 | 117 | ## License 118 | 119 | MIT 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /cmd.js: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env node 2 | /* 3 | * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 4 | * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 5 | * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 6 | * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 7 | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 8 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 9 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 10 | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 11 | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 12 | * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 13 | * POSSIBILITY OF SUCH DAMAGE. 14 | */ 15 | 16 | 'use strict' 17 | 18 | var args = require('minimist')(process.argv.slice(2)) 19 | var pid = args._[0] 20 | 21 | require('./')(pid, args) 22 | -------------------------------------------------------------------------------- /compiled/components/BreakPoints/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('../../style'); 12 | 13 | var style = _interopRequireWildcard(_style); 14 | 15 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 16 | 17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 18 | 19 | /* eslint-disable react/no-unknown-property */ 20 | 21 | var BreakPoints = function BreakPoints(_ref) { 22 | var items = _ref.items; 23 | var top = _ref.top; 24 | var left = _ref.left; 25 | var width = _ref.width; 26 | var height = _ref.height; 27 | var focused = _ref.focused; 28 | var tooltips = _ref.tooltips; 29 | var focusPanel = _ref.actions.focusPanel; 30 | return _react2.default.createElement('list', { 31 | mouse: true, 32 | label: 'BreakPoints', 33 | focused: focused, 34 | 'class': [style.panel, focused && style.selected], 35 | top: top, 36 | left: left, 37 | width: width, 38 | height: height, 39 | items: items, 40 | onFocus: function onFocus() { 41 | return focused || focusPanel('breakpoints'); 42 | }, 43 | hoverText: tooltips && 'ctrl+p' 44 | }); 45 | }; 46 | 47 | exports.default = BreakPoints; 48 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/BreakPoints/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/BreakPoints/index.js"],"names":[],"mappings":";;;;;;;;;;;;IACY,KAAK;;;;;;;;AAIjB,IAAM,WAAW,GAAG,SAAd,WAAW;MAAK,KAAK,QAAL,KAAK;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,OAAO,QAAP,OAAO;MAAE,QAAQ,QAAR,QAAQ;MAAY,UAAU,QAApB,OAAO,CAAG,UAAU;SAC5F;AACE,SAAK,MAAA;AACL,SAAK,EAAC,aAAa;AACnB,WAAO,EAAE,OAAO,AAAC;AACjB,aAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,AAAC;AAChD,OAAG,EAAE,GAAG,AAAC;AACT,QAAI,EAAE,IAAI,AAAC;AACX,SAAK,EAAE,KAAK,AAAC;AACb,UAAM,EAAE,MAAM,AAAC;AACf,SAAK,EAAE,KAAK,AAAC;AACb,WAAO,EAAE;aAAM,OAAO,IAAI,UAAU,CAAC,aAAa,CAAC;KAAA,AAAC;AACpD,aAAS,EAAE,QAAQ,IAAI,QAAQ,AAAC;IAChC;CACH,CAAA;;kBAEc,WAAW","file":"index.js","sourcesContent":["import React from 'react'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst BreakPoints = ({items, top, left, width, height, focused, tooltips, actions: {focusPanel}}) => (\n focused || focusPanel('breakpoints')}\n hoverText={tooltips && 'ctrl+p'}\n />\n)\n\nexport default BreakPoints\n"]} -------------------------------------------------------------------------------- /compiled/components/CallStack/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('../../style'); 12 | 13 | var style = _interopRequireWildcard(_style); 14 | 15 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 16 | 17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 18 | 19 | /* eslint-disable react/no-unknown-property */ 20 | 21 | var CallStack = function CallStack(_ref) { 22 | var items = _ref.items; 23 | var top = _ref.top; 24 | var left = _ref.left; 25 | var width = _ref.width; 26 | var height = _ref.height; 27 | var focused = _ref.focused; 28 | var tooltips = _ref.tooltips; 29 | var _ref$actions = _ref.actions; 30 | var selectFrame = _ref$actions.selectFrame; 31 | var focusPanel = _ref$actions.focusPanel; 32 | return _react2.default.createElement('list', { 33 | keys: true, 34 | mouse: true, 35 | inputOnFocused: true, 36 | label: 'CallStack', 37 | focused: focused, 38 | 'class': [style.panel, style.list, focused && style.selected], 39 | top: top, 40 | width: width, 41 | height: height, 42 | left: left, 43 | items: items, 44 | onSelectItem: function onSelectItem(item) { 45 | var content = item.content; 46 | 47 | var index = item.parent.items.map(function (_ref2) { 48 | var content = _ref2.content; 49 | return content; 50 | }).indexOf(content); 51 | 52 | selectFrame(index); 53 | }, 54 | onFocus: function onFocus() { 55 | return focused || focusPanel('callstack'); 56 | }, 57 | hoverText: tooltips && 'ctrl+s' 58 | }); 59 | }; 60 | 61 | exports.default = CallStack; 62 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/CallStack/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/CallStack/index.js"],"names":[],"mappings":";;;;;;;;;;;;IACY,KAAK;;;;;;;;AAIjB,IAAM,SAAS,GAAG,SAAZ,SAAS;MAAK,KAAK,QAAL,KAAK;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,OAAO,QAAP,OAAO;MAAE,QAAQ,QAAR,QAAQ;0BAAE,OAAO;MAAG,WAAW,gBAAX,WAAW;MAAE,UAAU,gBAAV,UAAU;SACvG;AACE,QAAI,MAAA;AACJ,SAAK,MAAA;AACL,kBAAc,MAAA;AACd,SAAK,EAAC,WAAW;AACjB,WAAO,EAAE,OAAO,AAAC;AACjB,aAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,AAAC;AAC5D,OAAG,EAAE,GAAG,AAAC;AACT,SAAK,EAAE,KAAK,AAAC;AACb,UAAM,EAAE,MAAM,AAAC;AACf,QAAI,EAAE,IAAI,AAAC;AACX,SAAK,EAAE,KAAK,AAAC;AACb,gBAAY,EAAE,sBAAC,IAAI,EAAK;UACf,OAAO,GAAI,IAAI,CAAf,OAAO;;AACd,UAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAC5B,GAAG,CAAC;YAAE,OAAO,SAAP,OAAO;eAAM,OAAO;OAAA,CAAC,CAC3B,OAAO,CAAC,OAAO,CAAC,CAAA;;AAEnB,iBAAW,CAAC,KAAK,CAAC,CAAA;KACnB,AAAC;AACF,WAAO,EAAE;aAAM,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC;KAAA,AAAC;AAClD,aAAS,EAAE,QAAQ,IAAI,QAAQ,AAAC;IAChC;CACH,CAAA;;kBAEc,SAAS","file":"index.js","sourcesContent":["import React from 'react'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst CallStack = ({items, top, left, width, height, focused, tooltips, actions: {selectFrame, focusPanel}}) => (\n {\n const {content} = item\n const index = item.parent.items\n .map(({content}) => content)\n .indexOf(content)\n\n selectFrame(index)\n }}\n onFocus={() => focused || focusPanel('callstack')}\n hoverText={tooltips && 'ctrl+s'}\n />\n)\n\nexport default CallStack\n"]} -------------------------------------------------------------------------------- /compiled/components/Cog/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 12 | 13 | /* eslint-disable react/no-unknown-property */ 14 | 15 | var Cog = function Cog(_ref) { 16 | var active = _ref.active; 17 | var file = _ref.file; 18 | var top = _ref.top; 19 | var left = _ref.left; 20 | var width = _ref.width; 21 | var height = _ref.height; 22 | var align = _ref.align; 23 | var padding = _ref.padding; 24 | var onClick = _ref.onClick; 25 | return _react2.default.createElement( 26 | 'button', 27 | { 28 | mouse: true, 29 | left: left, 30 | width: width, 31 | top: top, 32 | height: height, 33 | align: align, 34 | padding: padding, 35 | onClick: onClick 36 | }, 37 | active ? '⚒' : '⚙' 38 | ); 39 | }; 40 | 41 | exports.default = Cog; 42 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Cog/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Cog/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,IAAM,GAAG,GAAG,SAAN,GAAG;MAAK,MAAM,QAAN,MAAM;MAAE,IAAI,QAAJ,IAAI;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,KAAK,QAAL,KAAK;MAAE,OAAO,QAAP,OAAO;MAAE,OAAO,QAAP,OAAO;SAC3E;;;AACE,WAAK,MAAA;AACL,UAAI,EAAE,IAAI,AAAC;AACX,WAAK,EAAE,KAAK,AAAC;AACb,SAAG,EAAE,GAAG,AAAC;AACT,YAAM,EAAE,MAAM,AAAC;AACf,WAAK,EAAE,KAAK,AAAC;AACb,aAAO,EAAE,OAAO,AAAC;AACjB,aAAO,EAAE,OAAO,AAAC;;IAEhB,MAAM,GAAG,GAAG,GAAG,GAAG;GACZ;CACV,CAAA;;kBAEc,GAAG","file":"index.js","sourcesContent":["import React from 'react'\n\n/* eslint-disable react/no-unknown-property */\n\nconst Cog = ({active, file, top, left, width, height, align, padding, onClick}) => (\n \n {active ? '⚒' : '⚙'}\n \n)\n\nexport default Cog\n"]} -------------------------------------------------------------------------------- /compiled/components/Console/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _reactFunctional = require('react-functional'); 12 | 13 | var _reactFunctional2 = _interopRequireDefault(_reactFunctional); 14 | 15 | var _style = require('../../style'); 16 | 17 | var style = _interopRequireWildcard(_style); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | /* eslint-disable react/no-unknown-property */ 24 | 25 | var Console = function Console(_ref, cmp) { 26 | var top = _ref.top; 27 | var left = _ref.left; 28 | var width = _ref.width; 29 | var height = _ref.height; 30 | var focused = _ref.focused; 31 | var independent = _ref.independent; 32 | var tooltips = _ref.tooltips; 33 | var output = _ref.output; 34 | var actions = _ref.actions; 35 | 36 | return _react2.default.createElement( 37 | 'box', 38 | { 39 | label: 'Console', 40 | 'class': [style.panel, focused && style.selected], 41 | top: top, 42 | left: left, 43 | width: width, 44 | height: height, 45 | hoverText: actions && tooltips && 'ctrl+k' 46 | }, 47 | _react2.default.createElement('textarea', { 48 | ref: function ref(el) { 49 | cmp.el = el; 50 | // hack :( 51 | if (el && independent && focused) cmp.el.focus(); 52 | }, 53 | mouse: true, 54 | inputOnFocus: true, 55 | focused: focused, 56 | value: !(cmp && cmp.force) ? output.all + '> ' + (output.historyIndex ? output.history.slice(output.historyIndex).shift() : '') : cmp.force(), 57 | onFocus: function onFocus() { 58 | return independent || focused || actions.focusPanel('console'); 59 | }, 60 | onBlur: function onBlur() { 61 | // blessed doesn't unfocus the textarea 62 | // when mouse is used - work around: 63 | var textarea = cmp.el.parent.children[1]; 64 | var screen = cmp.el.screen; 65 | textarea._reading = false; 66 | screen.grabKeys = false; 67 | screen.program.hideCursor(); 68 | textarea.removeListener('keypress'); 69 | }, 70 | onKeyUp: function onKeyUp() { 71 | actions.consoleHistory({ step: -1 }); 72 | }, 73 | onKeyDown: function onKeyDown() { 74 | actions.consoleHistory({ step: 1 }); 75 | }, 76 | onKeyBackspace: function onKeyBackspace(ch, key) { 77 | if (cmp.el.value.substr(-2) === '\n>') { 78 | (function () { 79 | var val = cmp.el.value; 80 | cmp.force = function () { 81 | cmp.force = null;return val + ' '; 82 | }; 83 | cmp.forceUpdate(); 84 | })(); 85 | } 86 | }, 87 | onKeypress: function onKeypress(ch, key) { 88 | if (key.name === 'return' && !key.shift) { 89 | var lines = cmp.el.getLines(); 90 | var cmd = (lines[lines.length - 2] + '').substr(2); 91 | actions.consoleInput(cmd); 92 | return; 93 | } 94 | 95 | if (key.name === 'tab') { 96 | cmp.el._done(); 97 | actions.focusPanel(key.shift ? 'scope' : 'navigator'); 98 | 99 | if (independent) { 100 | actions.focusTab('sources'); 101 | actions.focusPanel('console'); 102 | return; 103 | } 104 | } 105 | 106 | if (independent) { 107 | if (key.name === 'escape') { 108 | // hack :( - avoids intermittent crashing 109 | setTimeout(function () { 110 | actions.focusTab('sources'); 111 | actions.focusPanel('console'); 112 | }); 113 | } 114 | return; 115 | } 116 | } 117 | }), 118 | independent && _react2.default.createElement( 119 | 'box', 120 | { 121 | width: 15, 122 | right: 0, 123 | bottom: 0, 124 | height: 1 125 | }, 126 | 'Exit: ESC, TAB' 127 | ) 128 | ); 129 | }; 130 | 131 | exports.default = (0, _reactFunctional2.default)(Console); 132 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Console/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Console/index.js"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react'\nimport functional from 'react-functional'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst Console = ({top, left, width, height, focused, independent, tooltips, output, actions}, cmp) => {\n return (\n \n {\n cmp.el = el\n // hack :(\n if (el && independent && focused) cmp.el.focus()\n }}\n mouse\n inputOnFocus\n focused={focused}\n value={\n !(cmp && cmp.force)\n ? (output.all + '> ' + (\n output.historyIndex\n ? output.history.slice(output.historyIndex).shift()\n : ''\n ))\n : cmp.force()\n }\n onFocus={() => (independent || focused || actions.focusPanel('console'))}\n onBlur={() => {\n // blessed doesn't unfocus the textarea\n // when mouse is used - work around:\n const textarea = cmp.el.parent.children[1]\n const screen = cmp.el.screen\n textarea._reading = false\n screen.grabKeys = false\n screen.program.hideCursor()\n textarea.removeListener('keypress')\n }}\n onKeyUp={() => {\n actions.consoleHistory({step: -1})\n }}\n onKeyDown={() => {\n actions.consoleHistory({step: 1})\n }}\n onKeyBackspace={(ch, key) => {\n if (cmp.el.value.substr(-2) === '\\n>') {\n const val = cmp.el.value\n cmp.force = () => { cmp.force = null; return val + ' ' }\n cmp.forceUpdate()\n }\n }}\n onKeypress={(ch, key) => {\n if (key.name === 'return' && !key.shift) {\n const lines = cmp.el.getLines()\n const cmd = (lines[lines.length - 2] + '').substr(2)\n actions.consoleInput(cmd)\n return\n }\n\n if (key.name === 'tab') {\n cmp.el._done()\n actions.focusPanel(key.shift ? 'scope' : 'navigator')\n\n if (independent) {\n actions.focusTab('sources')\n actions.focusPanel('console')\n return\n }\n }\n\n if (independent) {\n if (key.name === 'escape') {\n // hack :( - avoids intermittent crashing\n setTimeout(() => {\n actions.focusTab('sources')\n actions.focusPanel('console')\n })\n }\n return\n }\n }}\n />\n {independent && (\n \n Exit: ESC, TAB\n \n )}\n\n \n )\n}\n\nexport default functional(Console)\n"]} -------------------------------------------------------------------------------- /compiled/components/Controls/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 14 | 15 | /* eslint-disable react/no-unknown-property */ 16 | 17 | var enable = { 18 | class: { 19 | style: { 20 | fg: 'white' 21 | } 22 | } 23 | }; 24 | 25 | var disable = { 26 | class: { 27 | style: { 28 | fg: 'blue' 29 | } 30 | } 31 | }; 32 | 33 | var PauseResume = function PauseResume(_ref) { 34 | var paused = _ref.paused; 35 | var tooltips = _ref.tooltips; 36 | var onClick = _ref.onClick; 37 | return _react2.default.createElement( 38 | 'button', 39 | { 40 | mouse: true, 41 | onClick: onClick, 42 | hoverText: tooltips && (paused ? 'resume (c) ' : 'pause (c)') 43 | }, 44 | paused ? '⫸' : '‖' 45 | ); 46 | }; 47 | 48 | var StepOver = function StepOver(_ref2) { 49 | var enabled = _ref2.enabled; 50 | var tooltips = _ref2.tooltips; 51 | var onClick = _ref2.onClick; 52 | return _react2.default.createElement( 53 | 'button', 54 | _extends({ 55 | mouse: true 56 | }, enabled ? enable : disable, { 57 | onClick: onClick, 58 | hoverText: tooltips && 'step over (n)' 59 | }), 60 | '⤼' 61 | ); 62 | }; 63 | 64 | var StepInto = function StepInto(_ref3) { 65 | var enabled = _ref3.enabled; 66 | var tooltips = _ref3.tooltips; 67 | var onClick = _ref3.onClick; 68 | return _react2.default.createElement( 69 | 'button', 70 | _extends({ 71 | mouse: true 72 | }, enabled ? enable : disable, { 73 | onClick: onClick, 74 | hoverText: tooltips && 'step into (i)' 75 | }), 76 | '⤈' 77 | ); 78 | }; 79 | 80 | var StepOut = function StepOut(_ref4) { 81 | var enabled = _ref4.enabled; 82 | var tooltips = _ref4.tooltips; 83 | var onClick = _ref4.onClick; 84 | return _react2.default.createElement( 85 | 'button', 86 | _extends({ 87 | mouse: true 88 | }, enabled ? enable : disable, { 89 | onClick: onClick, 90 | hoverText: tooltips && 'step out (o)' 91 | }), 92 | '⤉' 93 | ); 94 | }; 95 | 96 | // const BreakPointsActive = ({active, tooltips, onClick}) => ( 97 | // 104 | // ) 105 | 106 | // const UncaughtExceptions = ({tooltips, onClick}) => ( 107 | // 114 | // ) 115 | 116 | var Controls = function Controls(_ref5) { 117 | var top = _ref5.top; 118 | var left = _ref5.left; 119 | var width = _ref5.width; 120 | var height = _ref5.height; 121 | var paused = _ref5.paused; 122 | var areBreakpointsActive = _ref5.areBreakpointsActive; 123 | var pauseResume = _ref5.pauseResume; 124 | var stepOver = _ref5.stepOver; 125 | var stepInto = _ref5.stepInto; 126 | var stepOut = _ref5.stepOut; 127 | var breakpointsActive = _ref5.breakpointsActive; 128 | var uncaughtExceptions = _ref5.uncaughtExceptions; 129 | var tooltips = _ref5.tooltips; 130 | return _react2.default.createElement( 131 | 'layout', 132 | { 133 | renderer: renderer, 134 | left: left, 135 | width: width, 136 | top: top, 137 | height: height 138 | }, 139 | _react2.default.createElement(PauseResume, { paused: paused, onClick: pauseResume, tooltips: tooltips }), 140 | _react2.default.createElement(StepOver, { enabled: paused, onClick: stepOver, tooltips: tooltips }), 141 | _react2.default.createElement(StepInto, { enabled: paused, onClick: stepInto, tooltips: tooltips }), 142 | _react2.default.createElement(StepOut, { enabled: paused, onClick: stepOut, tooltips: tooltips }) 143 | ); 144 | }; 145 | 146 | function renderer(_ref6) { 147 | var _this = this; 148 | 149 | var xl = _ref6.xl; 150 | var xi = _ref6.xi; 151 | 152 | return function (el, i) { 153 | el.shrink = true; 154 | var last = _this.getLastCoords(i); 155 | if (!last) { 156 | el.position.left = 0; 157 | el.position.top = 0; 158 | return; 159 | } 160 | el.position.left = last.xl - xi + 2; 161 | }; 162 | } 163 | 164 | exports.default = Controls; 165 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Controls/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Controls/index.js"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react'\n\n/* eslint-disable react/no-unknown-property */\n\nconst enable = {\n class: {\n style: {\n fg: 'white'\n }\n }\n}\n\nconst disable = {\n class: {\n style: {\n fg: 'blue'\n }\n }\n}\n\nconst PauseResume = ({paused, tooltips, onClick}) => (\n \n {paused ? '⫸' : '‖'}\n \n)\n\nconst StepOver = ({enabled, tooltips, onClick}) => (\n \n ⤼\n \n)\n\nconst StepInto = ({enabled, tooltips, onClick}) => (\n \n ⤈\n \n)\n\nconst StepOut = ({enabled, tooltips, onClick}) => (\n \n ⤉\n \n)\n\n// const BreakPointsActive = ({active, tooltips, onClick}) => (\n// \n// {active ? '⤇' : '⤃'}\n// \n// )\n\n// const UncaughtExceptions = ({tooltips, onClick}) => (\n// \n// ⬣\n// \n// )\n\nconst Controls = ({top, left, width, height, paused, areBreakpointsActive, pauseResume, stepOver, stepInto, stepOut, breakpointsActive, uncaughtExceptions, tooltips}) => (\n \n \n \n \n \n { // icons disabled until functionality implemented:\n // \n // \n }\n \n)\n\nfunction renderer ({xl, xi}) {\n return (el, i) => {\n el.shrink = true\n const last = this.getLastCoords(i)\n if (!last) {\n el.position.left = 0\n el.position.top = 0\n return\n }\n el.position.left = last.xl - xi + 2\n }\n}\n\nexport default Controls\n"]} -------------------------------------------------------------------------------- /compiled/components/Editor/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _reactFunctional = require('react-functional'); 12 | 13 | var _reactFunctional2 = _interopRequireDefault(_reactFunctional); 14 | 15 | var _style = require('../../style'); 16 | 17 | var style = _interopRequireWildcard(_style); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | /* eslint-disable react/no-unknown-property */ 24 | 25 | var ed = { 26 | style: { 27 | selected: { 28 | bold: true, 29 | bg: 'blue' 30 | }, 31 | item: { 32 | bold: false 33 | }, 34 | scrollbar: { 35 | bg: 'white' 36 | } 37 | } 38 | }; 39 | 40 | var Editor = function Editor(_ref) { 41 | var items = _ref.items; 42 | var selected = _ref.selected; 43 | var top = _ref.top; 44 | var left = _ref.left; 45 | var width = _ref.width; 46 | var height = _ref.height; 47 | var focused = _ref.focused; 48 | var tooltips = _ref.tooltips; 49 | var _ref$actions = _ref.actions; 50 | var setEditorLine = _ref$actions.setEditorLine; 51 | var focusPanel = _ref$actions.focusPanel; 52 | var toggleBreakpoint = _ref$actions.toggleBreakpoint; 53 | return _react2.default.createElement('list', { 54 | vi: true, 55 | keys: true, 56 | mouse: true, 57 | scrollbar: true, 58 | inputOnFocused: true, 59 | 'class': [style.panel, ed, focused && style.selected], 60 | selected: selected.idx, 61 | left: left, 62 | width: width, 63 | top: top, 64 | height: height, 65 | focused: focused, 66 | items: items, 67 | onSelectItem: function onSelectItem(item) { 68 | focusPanel('editor'); 69 | setEditorLine(item.parent.getItemIndex(item) + 1); 70 | }, 71 | onKeyB: function onKeyB() { 72 | return toggleBreakpoint(); 73 | }, 74 | hoverText: tooltips && 'Source Text (ctrl+t)' 75 | }); 76 | }; 77 | 78 | exports.default = Editor; 79 | exports.default = (0, _reactFunctional2.default)(Editor, { 80 | shouldComponentUpdate: function shouldComponentUpdate(props, nextProps) { 81 | if (!nextProps.focused && props.selected !== nextProps.selected) return true; 82 | return props.focused !== nextProps.focused || props.items !== nextProps.items; 83 | } 84 | }); 85 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Editor/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Editor/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;IAEY,KAAK;;;;;;;;AAIjB,IAAM,EAAE,GAAG;AACT,OAAK,EAAE;AACL,YAAQ,EAAE;AACR,UAAI,EAAE,IAAI;AACV,QAAE,EAAE,MAAM;KACX;AACD,QAAI,EAAE;AACJ,UAAI,EAAE,KAAK;KACZ;AACD,aAAS,EAAE;AACT,QAAE,EAAE,OAAO;KACZ;GACF;CACF,CAAA;;AAED,IAAM,MAAM,GAAG,SAAT,MAAM;MAAK,KAAK,QAAL,KAAK;MAAE,QAAQ,QAAR,QAAQ;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,OAAO,QAAP,OAAO;MAAE,QAAQ,QAAR,QAAQ;0BAAE,OAAO;MAAG,aAAa,gBAAb,aAAa;MAAE,UAAU,gBAAV,UAAU;MAAE,gBAAgB,gBAAhB,gBAAgB;SAClI;AACE,MAAE,MAAA;AACF,QAAI,MAAA;AACJ,SAAK,MAAA;AACL,aAAS,MAAA;AACT,kBAAc,MAAA;AACd,aAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,AAAC;AACpD,YAAQ,EAAE,QAAQ,CAAC,GAAG,AAAC;AACvB,QAAI,EAAE,IAAI,AAAC;AACX,SAAK,EAAE,KAAK,AAAC;AACb,OAAG,EAAE,GAAG,AAAC;AACT,UAAM,EAAE,MAAM,AAAC;AACf,WAAO,EAAE,OAAO,AAAC;AACjB,SAAK,EAAE,KAAK,AAAC;AACb,gBAAY,EAAE,sBAAA,IAAI,EAAI;AACpB,gBAAU,CAAC,QAAQ,CAAC,CAAA;AACpB,mBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;KAClD,AAAC;AACF,UAAM,EAAE;aAAM,gBAAgB,EAAE;KAAA,AAAC;AACjC,aAAS,EAAE,QAAQ,IAAI,sBAAsB,AAAC;IAC9C;CACH,CAAA;;kBAEc,MAAM;kBAEN,+BAAW,MAAM,EAAE;AAChC,uBAAqB,EAAE,+BAAC,KAAK,EAAE,SAAS,EAAK;AAC3C,QAAI,CAAC,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAA;AAC5E,WAAO,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK,CAAA;GAC9E;CACF,CAAC","file":"index.js","sourcesContent":["import React from 'react'\nimport functional from 'react-functional'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst ed = {\n style: {\n selected: {\n bold: true,\n bg: 'blue'\n },\n item: {\n bold: false\n },\n scrollbar: {\n bg: 'white'\n }\n }\n}\n\nconst Editor = ({items, selected, top, left, width, height, focused, tooltips, actions: {setEditorLine, focusPanel, toggleBreakpoint}}) => (\n {\n focusPanel('editor')\n setEditorLine(item.parent.getItemIndex(item) + 1)\n }}\n onKeyB={() => toggleBreakpoint()}\n hoverText={tooltips && 'Source Text (ctrl+t)'}\n />\n)\n\nexport default Editor\n\nexport default functional(Editor, {\n shouldComponentUpdate: (props, nextProps) => {\n if (!nextProps.focused && props.selected !== nextProps.selected) return true\n return props.focused !== nextProps.focused || props.items !== nextProps.items\n }\n})\n"]} -------------------------------------------------------------------------------- /compiled/components/EditorStatus/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 12 | 13 | /* eslint-disable react/no-unknown-property */ 14 | 15 | var stat = { 16 | style: { 17 | transparent: true 18 | } 19 | }; 20 | 21 | var EditorStatus = function EditorStatus(_ref) { 22 | var line = _ref.line; 23 | var file = _ref.file; 24 | var top = _ref.top; 25 | var rightEdgeLeft = _ref.rightEdgeLeft; 26 | var height = _ref.height; 27 | 28 | var status = file + ':' + line.num + ' '; 29 | var width = status.length - 1; 30 | var lineNumLength = (line.num + '').length; 31 | var left = rightEdgeLeft + '-' + (width + lineNumLength + (lineNumLength < 2 ? 2 : 1)); 32 | 33 | return _react2.default.createElement( 34 | 'text', 35 | { 36 | 'class': stat, 37 | left: left, 38 | width: width, 39 | top: top, 40 | height: height 41 | }, 42 | status 43 | ); 44 | }; 45 | 46 | exports.default = EditorStatus; 47 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/EditorStatus/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/EditorStatus/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAIA,IAAM,IAAI,GAAG;AACX,OAAK,EAAE;AACL,eAAW,EAAE,IAAI;GAClB;CACF,CAAA;;AAED,IAAM,YAAY,GAAG,SAAf,YAAY,OAAiD;MAA5C,IAAI,QAAJ,IAAI;MAAE,IAAI,QAAJ,IAAI;MAAE,GAAG,QAAH,GAAG;MAAE,aAAa,QAAb,aAAa;MAAE,MAAM,QAAN,MAAM;;AAC3D,MAAM,MAAM,GAAM,IAAI,SAAI,IAAI,CAAC,GAAG,MAAG,CAAA;AACrC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;AAC/B,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA,CAAE,MAAM,CAAA;AAC5C,MAAM,IAAI,GAAG,aAAa,GAAG,GAAG,IAAI,KAAK,GAAG,aAAa,IAAI,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA,CAAC,AAAC,CAAA;;AAExF,SACE;;;AACA,eAAO,IAAI,AAAC;AACZ,UAAI,EAAE,IAAI,AAAC;AACX,WAAK,EAAE,KAAK,AAAC;AACb,SAAG,EAAE,GAAG,AAAC;AACT,YAAM,EAAE,MAAM,AAAC;;IAEZ,MAAM;GACF,CACR;CACF,CAAA;;kBAEc,YAAY","file":"index.js","sourcesContent":["import React from 'react'\n\n/* eslint-disable react/no-unknown-property */\n\nconst stat = {\n style: {\n transparent: true\n }\n}\n\nconst EditorStatus = ({line, file, top, rightEdgeLeft, height}) => {\n const status = `${file}:${line.num} `\n const width = status.length - 1\n const lineNumLength = (line.num + '').length\n const left = rightEdgeLeft + '-' + (width + lineNumLength + (lineNumLength < 2 ? 2 : 1))\n\n return (\n \n {status}\n \n )\n}\n\nexport default EditorStatus\n"]} -------------------------------------------------------------------------------- /compiled/components/Navigator/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _Tree = require('../Tree'); 12 | 13 | var _Tree2 = _interopRequireDefault(_Tree); 14 | 15 | var _style = require('../../style'); 16 | 17 | var style = _interopRequireWildcard(_style); 18 | 19 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | /* eslint-disable react/no-unknown-property */ 24 | 25 | var Navigator = function Navigator(_ref) { 26 | var items = _ref.items; 27 | var top = _ref.top; 28 | var left = _ref.left; 29 | var width = _ref.width; 30 | var height = _ref.height; 31 | var focused = _ref.focused; 32 | var item = _ref.item; 33 | var tooltips = _ref.tooltips; 34 | var onEsc = _ref.onEsc; 35 | var _ref$actions = _ref.actions; 36 | var selectFile = _ref$actions.selectFile; 37 | var setEditorLine = _ref$actions.setEditorLine; 38 | var focusPanel = _ref$actions.focusPanel; 39 | return _react2.default.createElement(_Tree2.default, { 40 | vi: true, 41 | keys: true, 42 | mouse: true, 43 | inputOnFocused: true, 44 | indentation: 1, 45 | label: 'Navigator', 46 | focused: focused, 47 | 'class': [style.panel, style.list, focused && style.selected], 48 | width: width, 49 | top: top, 50 | left: left, 51 | height: height, 52 | item: item, 53 | items: items, 54 | onKeyEscape: onEsc, 55 | onSelectItem: function onSelectItem(_ref2) { 56 | var path = _ref2.data.path; 57 | 58 | selectFile(path); 59 | setEditorLine(0); 60 | }, 61 | onFocus: function onFocus() { 62 | return focused || focusPanel('navigator'); 63 | }, 64 | hoverText: tooltips && 'ctrl+n' 65 | }); 66 | }; 67 | 68 | exports.default = Navigator; 69 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Navigator/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Navigator/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;IAEY,KAAK;;;;;;;;AAIjB,IAAM,SAAS,GAAG,SAAZ,SAAS;MACb,KAAK,QAAL,KAAK;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,OAAO,QAAP,OAAO;MAAE,IAAI,QAAJ,IAAI;MAAE,QAAQ,QAAR,QAAQ;MAAE,KAAK,QAAL,KAAK;0BAC/D,OAAO;MAAG,UAAU,gBAAV,UAAU;MAAE,aAAa,gBAAb,aAAa;MAAE,UAAU,gBAAV,UAAU;SAE/C;AACE,MAAE,MAAA;AACF,QAAI,MAAA;AACJ,SAAK,MAAA;AACL,kBAAc,MAAA;AACd,eAAW,EAAE,CAAC,AAAC;AACf,SAAK,EAAC,WAAW;AACjB,WAAO,EAAE,OAAO,AAAC;AACjB,aAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,AAAC;AAC5D,SAAK,EAAE,KAAK,AAAC;AACb,OAAG,EAAE,GAAG,AAAC;AACT,QAAI,EAAE,IAAI,AAAC;AACX,UAAM,EAAE,MAAM,AAAC;AACf,QAAI,EAAE,IAAI,AAAC;AACX,SAAK,EAAE,KAAK,AAAC;AACb,eAAW,EAAE,KAAK,AAAC;AACnB,gBAAY,EACV,6BAAoB;UAAX,IAAI,SAAX,IAAI,CAAG,IAAI;;AACX,gBAAU,CAAC,IAAI,CAAC,CAAA;AAChB,mBAAa,CAAC,CAAC,CAAC,CAAA;KACjB,AACF;AACD,WAAO,EAAE;aAAM,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC;KAAA,AAAC;AAClD,aAAS,EAAE,QAAQ,IAAI,QAAQ,AAAC;IAChC;CACH,CAAA;;kBAEc,SAAS","file":"index.js","sourcesContent":["import React from 'react'\nimport Tree from '../Tree'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst Navigator = ({\n items, top, left, width, height, focused, item, tooltips, onEsc,\n actions: {selectFile, setEditorLine, focusPanel}\n}) => (\n {\n selectFile(path)\n setEditorLine(0)\n }\n }\n onFocus={() => focused || focusPanel('navigator')}\n hoverText={tooltips && 'ctrl+n'}\n />\n)\n\nexport default Navigator\n"]} -------------------------------------------------------------------------------- /compiled/components/Scope/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _Tree = require('../Tree'); 14 | 15 | var _Tree2 = _interopRequireDefault(_Tree); 16 | 17 | var _style = require('../../style'); 18 | 19 | var style = _interopRequireWildcard(_style); 20 | 21 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | /* eslint-disable react/no-unknown-property */ 26 | 27 | var Scope = function Scope(_ref) { 28 | var items = _ref.items; 29 | var item = _ref.item; 30 | var top = _ref.top; 31 | var left = _ref.left; 32 | var width = _ref.width; 33 | var height = _ref.height; 34 | var focused = _ref.focused; 35 | var tooltips = _ref.tooltips; 36 | var onEsc = _ref.onEsc; 37 | var _ref$actions = _ref.actions; 38 | var focusPanel = _ref$actions.focusPanel; 39 | var extendScope = _ref$actions.extendScope; 40 | return _react2.default.createElement(_Tree2.default, { 41 | keys: true, 42 | mouse: true, 43 | scrollbar: true, 44 | inputOnFocused: true, 45 | labelling: true, 46 | label: 'Scope', 47 | focused: focused, 48 | 'class': [style.panel, style.list, focused && style.selected], 49 | top: top, 50 | left: left, 51 | width: width, 52 | height: height, 53 | items: items, 54 | item: item, 55 | hoverText: tooltips && 'ctrl+o', 56 | onKeyEscape: onEsc, 57 | onFocus: function onFocus() { 58 | return focused || focusPanel('scope'); 59 | }, 60 | onExpand: function onExpand(item) { 61 | var meta = item.meta; 62 | 63 | if (!meta) return; 64 | extendScope(_extends({}, meta, { branch: item })); 65 | } 66 | }); 67 | }; 68 | 69 | exports.default = Scope; 70 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Scope/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Scope/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;IAEY,KAAK;;;;;;;;AAIjB,IAAM,KAAK,GAAG,SAAR,KAAK;MAAK,KAAK,QAAL,KAAK;MAAE,IAAI,QAAJ,IAAI;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,OAAO,QAAP,OAAO;MAAE,QAAQ,QAAR,QAAQ;MAAE,KAAK,QAAL,KAAK;0BAAE,OAAO;MAAG,UAAU,gBAAV,UAAU;MAAE,WAAW,gBAAX,WAAW;SAChH;AACE,QAAI,MAAA;AACJ,SAAK,MAAA;AACL,aAAS,MAAA;AACT,kBAAc,MAAA;AACd,aAAS,MAAA;AACT,SAAK,EAAC,OAAO;AACb,WAAO,EAAE,OAAO,AAAC;AACjB,aAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,AAAC;AAC5D,OAAG,EAAE,GAAG,AAAC;AACT,QAAI,EAAE,IAAI,AAAC;AACX,SAAK,EAAE,KAAK,AAAC;AACb,UAAM,EAAE,MAAM,AAAC;AACf,SAAK,EAAE,KAAK,AAAC;AACb,QAAI,EAAE,IAAI,AAAC;AACX,aAAS,EAAE,QAAQ,IAAI,QAAQ,AAAC;AAChC,eAAW,EAAE,KAAK,AAAC;AACnB,WAAO,EAAE;aAAM,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC;KAAA,AAAC;AAC9C,YAAQ,EAAE,kBAAC,IAAI,EAAK;UACX,IAAI,GAAI,IAAI,CAAZ,IAAI;;AACX,UAAI,CAAC,IAAI,EAAE,OAAM;AACjB,iBAAW,cAAK,IAAI,IAAE,MAAM,EAAE,IAAI,IAAE,CAAA;KACrC,AAAC;IACF;CACH,CAAA;;kBAEc,KAAK","file":"index.js","sourcesContent":["import React from 'react'\nimport Tree from '../Tree'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst Scope = ({items, item, top, left, width, height, focused, tooltips, onEsc, actions: {focusPanel, extendScope}}) => (\n focused || focusPanel('scope')}\n onExpand={(item) => {\n const {meta} = item\n if (!meta) return\n extendScope({...meta, branch: item})\n }}\n />\n)\n\nexport default Scope\n"]} -------------------------------------------------------------------------------- /compiled/components/Settings/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _style = require('../../style'); 14 | 15 | var style = _interopRequireWildcard(_style); 16 | 17 | var _reactFunctional = require('react-functional'); 18 | 19 | var _reactFunctional2 = _interopRequireDefault(_reactFunctional); 20 | 21 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | /* eslint-disable react/no-unknown-property */ 26 | 27 | var bg = { 28 | style: { 29 | fg: 'white', 30 | bg: 'blue' 31 | } 32 | }; 33 | 34 | var settings = _extends({ 35 | border: null, 36 | padding: { left: 1, right: 1 } 37 | }, bg); 38 | 39 | /* eslint-disable no-trailing-spaces */ 40 | var help = '\n{underline}{bold}Keys{/bold}{/underline}\n\n {bold}?{/bold} - Settings/help {bold}1{/bold} - Sources\n {bold}tab{/bold} - next panel {bold}2{/bold} - Networking\n {bold}shift+tab{/bold} - previous panel {bold}3{/bold} - Profiling\n {bold}4{/bold} - Console\n\n {bold}n{/bold} - step over ({bold}n{/bold}ext) {bold}ctrl+n{/bold} - {bold}n{/bold}avigator\n {bold}i{/bold} - step {bold}i{/bold}nto {bold}ctrl+t{/bold} - source {bold}t{/bold}ext\n {bold}o{/bold} - step {bold}o{/bold}ut {bold}ctrl+s{/bold} - call{bold}s{/bold}tack\n {bold}c{/bold} - pause/resume ([dis]{bold}c{/bold}ontinue) {bold}ctrl+p{/bold} - break{bold}p{/bold}oints\n {bold}p{/bold} - [de]activiate break{bold}p{/bold}oints {bold}ctrl+o{/bold} - sc{bold}o{/bold}pe\n {bold}x{/bold} - break on e{bold}x{/bold}ception {bold}ctrl+k{/bold} - console ({bold}k{/bold}onsole)\n\n {underline}Source Panel{/underline}\n {bold}b{/bold} - toggle {bold}b{/bold}reakpoint\n'; 41 | /* eslint-enable no-trailing-spaces */ 42 | 43 | var nav = function nav(cmp) { 44 | return function (ch, _ref) { 45 | var name = _ref.name; 46 | 47 | if (name === 'left') { 48 | cmp.refs.form.focusPrevious(); 49 | } 50 | if (name === 'right') { 51 | cmp.refs.form.focusNext(); 52 | } 53 | }; 54 | }; 55 | 56 | var Settings = function Settings(_ref2, cmp) { 57 | var layout = _ref2.layout; 58 | var focused = _ref2.focused; 59 | var top = _ref2.top; 60 | var left = _ref2.left; 61 | var width = _ref2.width; 62 | var height = _ref2.height; 63 | var align = _ref2.align; 64 | var tooltips = _ref2.tooltips; 65 | var padding = _ref2.padding; 66 | var toggleTooltips = _ref2.toggleTooltips; 67 | var changeLayout = _ref2.changeLayout; 68 | 69 | return _react2.default.createElement( 70 | 'box', 71 | { 72 | keys: true, 73 | mouse: true, 74 | clickable: true, 75 | draggable: true, 76 | index: 20, 77 | 'class': [style.panel, settings], 78 | left: left, 79 | width: width, 80 | top: top, 81 | height: height, 82 | align: align, 83 | padding: padding 84 | }, 85 | _react2.default.createElement( 86 | 'form', 87 | { 88 | mouse: true, 89 | keys: true, 90 | inputOnFocused: true, 91 | ref: 'form', 92 | focused: focused, 93 | 'class': _extends({}, bg) 94 | }, 95 | _react2.default.createElement( 96 | 'box', 97 | { tags: true, top: 1, 'class': _extends({}, bg) }, 98 | '{underline}{bold}Layout{/bold}{/underline}' 99 | ), 100 | _react2.default.createElement( 101 | 'radioset', 102 | { 103 | keys: true, 104 | mouse: true, 105 | height: 9, 106 | top: 3, 107 | 'class': _extends({}, bg, { padding: { left: 4 } }) 108 | }, 109 | _react2.default.createElement('radiobutton', { 110 | onKeypress: nav(cmp), 111 | onCheck: changeLayout('normal'), 112 | height: 1, 113 | width: 22, 114 | checked: layout.name === 'normal', 115 | text: 'Normal', 116 | 'class': _extends({}, bg) 117 | }), 118 | _react2.default.createElement('radiobutton', { 119 | onKeypress: nav(cmp), 120 | onCheck: changeLayout('minimal'), 121 | left: 22, 122 | height: 1, 123 | width: 22, 124 | checked: layout.name === 'minimal', 125 | text: 'Minimal', 126 | 'class': _extends({}, bg) 127 | }) 128 | ), 129 | _react2.default.createElement( 130 | 'box', 131 | { tags: true, top: 5, height: 1, 'class': _extends({}, bg) }, 132 | '{underline}{bold}General{/bold}{/underline}' 133 | ), 134 | _react2.default.createElement('checkbox', { 135 | mouse: true, 136 | onKeypress: nav(cmp), 137 | onCheck: toggleTooltips, 138 | onUncheck: toggleTooltips, 139 | top: 7, 140 | height: 1, 141 | width: 22, 142 | left: 4, 143 | checked: tooltips, 144 | text: 'Tooltips', 145 | 'class': _extends({}, bg) 146 | }) 147 | ), 148 | _react2.default.createElement( 149 | 'box', 150 | { tags: true, top: 8, height: 18, 'class': _extends({}, bg) }, 151 | help 152 | ) 153 | ); 154 | }; 155 | 156 | exports.default = (0, _reactFunctional2.default)(Settings, { 157 | componentDidMount: function componentDidMount(_ref3, refs) { 158 | var _ref3$focusedInput = _ref3.focusedInput; 159 | var focusedInput = _ref3$focusedInput === undefined ? 'normal' : _ref3$focusedInput; 160 | var layout = refs.form.children[1].children; 161 | 162 | var tooltips = refs.form.children[3]; 163 | 164 | var selected = layout.find(function (c) { 165 | return c.text.toLowerCase() === focusedInput; 166 | }) || tooltips.options.text.toLowerCase() === focusedInput && tooltips; 167 | 168 | if (!selected) { 169 | return; 170 | } 171 | setTimeout(function () { 172 | return selected.focus(); 173 | }); 174 | } 175 | }); 176 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Tabs/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('../../style'); 12 | 13 | var style = _interopRequireWildcard(_style); 14 | 15 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 16 | 17 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 18 | 19 | /* eslint-disable react/no-unknown-property */ 20 | 21 | var Tabs = function Tabs(_ref) { 22 | var items = _ref.items; 23 | var top = _ref.top; 24 | var left = _ref.left; 25 | var width = _ref.width; 26 | var height = _ref.height; 27 | var onSelectTab = _ref.onSelectTab; 28 | return _react2.default.createElement('listbar', { 29 | mouse: true, 30 | autoCommandKeys: true, 31 | 'class': style.list, 32 | top: top, 33 | left: left, 34 | width: width, 35 | height: height, 36 | items: items, 37 | onSelectTab: onSelectTab, 38 | onSelect: function onSelect(label) { 39 | return onSelectTab(label, label && label.data && label.data.cmd && label.data.cmd.prefix - 1 || 0); 40 | } 41 | }); 42 | }; 43 | 44 | exports.default = Tabs; 45 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/Tabs/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/components/Tabs/index.js"],"names":[],"mappings":";;;;;;;;;;;;IACY,KAAK;;;;;;;;AAIjB,IAAM,IAAI,GAAG,SAAP,IAAI;MAAK,KAAK,QAAL,KAAK;MAAE,GAAG,QAAH,GAAG;MAAE,IAAI,QAAJ,IAAI;MAAE,KAAK,QAAL,KAAK;MAAE,MAAM,QAAN,MAAM;MAAE,WAAW,QAAX,WAAW;SACzD;AACE,SAAK,MAAA;AACL,mBAAe,MAAA;AACf,aAAO,KAAK,CAAC,IAAI,AAAC;AAClB,OAAG,EAAE,GAAG,AAAC;AACT,QAAI,EAAE,IAAI,AAAC;AACX,SAAK,EAAE,KAAK,AAAC;AACb,UAAM,EAAE,MAAM,AAAC;AACf,SAAK,EAAE,KAAK,AAAC;AACb,eAAW,EAAE,WAAW,AAAC;AACzB,YAAQ,EACN,kBAAC,KAAK;aACJ,WAAW,CAAC,KAAK,EACf,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,IAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,AAAC,IAAI,CAAC,CAC1E;KAAA,AACJ;IACD;CACH,CAAA;;kBAEc,IAAI","file":"index.js","sourcesContent":["import React from 'react'\nimport * as style from '../../style'\n\n/* eslint-disable react/no-unknown-property */\n\nconst Tabs = ({items, top, left, width, height, onSelectTab}) => (\n \n onSelectTab(label,\n label && label.data && label.data.cmd && (label.data.cmd.prefix - 1) || 0\n )\n }\n />\n)\n\nexport default Tabs\n"]} -------------------------------------------------------------------------------- /compiled/components/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.Controls = exports.Cog = exports.Settings = exports.Tabs = exports.Scope = exports.Navigator = exports.EditorStatus = exports.Editor = exports.Console = exports.CallStack = exports.BreakPoints = undefined; 7 | 8 | var _BreakPoints = require('./BreakPoints'); 9 | 10 | var _BreakPoints2 = _interopRequireDefault(_BreakPoints); 11 | 12 | var _CallStack = require('./CallStack'); 13 | 14 | var _CallStack2 = _interopRequireDefault(_CallStack); 15 | 16 | var _Console = require('./Console'); 17 | 18 | var _Console2 = _interopRequireDefault(_Console); 19 | 20 | var _Editor = require('./Editor'); 21 | 22 | var _Editor2 = _interopRequireDefault(_Editor); 23 | 24 | var _EditorStatus = require('./EditorStatus'); 25 | 26 | var _EditorStatus2 = _interopRequireDefault(_EditorStatus); 27 | 28 | var _Navigator = require('./Navigator'); 29 | 30 | var _Navigator2 = _interopRequireDefault(_Navigator); 31 | 32 | var _Scope = require('./Scope'); 33 | 34 | var _Scope2 = _interopRequireDefault(_Scope); 35 | 36 | var _Settings = require('./Settings'); 37 | 38 | var _Settings2 = _interopRequireDefault(_Settings); 39 | 40 | var _Tabs = require('./Tabs'); 41 | 42 | var _Tabs2 = _interopRequireDefault(_Tabs); 43 | 44 | var _Cog = require('./Cog'); 45 | 46 | var _Cog2 = _interopRequireDefault(_Cog); 47 | 48 | var _Controls = require('./Controls'); 49 | 50 | var _Controls2 = _interopRequireDefault(_Controls); 51 | 52 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 53 | 54 | exports.BreakPoints = _BreakPoints2.default; 55 | exports.CallStack = _CallStack2.default; 56 | exports.Console = _Console2.default; 57 | exports.Editor = _Editor2.default; 58 | exports.EditorStatus = _EditorStatus2.default; 59 | exports.Navigator = _Navigator2.default; 60 | exports.Scope = _Scope2.default; 61 | exports.Tabs = _Tabs2.default; 62 | exports.Settings = _Settings2.default; 63 | exports.Cog = _Cog2.default; 64 | exports.Controls = _Controls2.default; 65 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/components/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/components/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAaE,WAAW;QAAE,SAAS;QAAE,OAAO;QAAE,MAAM;QACvC,YAAY;QAAE,SAAS;QAAE,KAAK;QAAE,IAAI;QAAE,QAAQ;QAAE,GAAG;QAAE,QAAQ","file":"index.js","sourcesContent":["import BreakPoints from './BreakPoints'\nimport CallStack from './CallStack'\nimport Console from './Console'\nimport Editor from './Editor'\nimport EditorStatus from './EditorStatus'\nimport Navigator from './Navigator'\nimport Scope from './Scope'\nimport Settings from './Settings'\nimport Tabs from './Tabs'\nimport Cog from './Cog'\nimport Controls from './Controls'\n\nexport {\n BreakPoints, CallStack, Console, Editor,\n EditorStatus, Navigator, Scope, Tabs, Settings, Cog, Controls\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _layouts = require('./layouts'); 8 | 9 | var _layouts2 = _interopRequireDefault(_layouts); 10 | 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 12 | 13 | exports.default = { layouts: _layouts2.default }; 14 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/config/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/config/index.js"],"names":[],"mappings":";;;;;;;;;;;;kBAEe,EAAC,OAAO,mBAAA,EAAC","file":"index.js","sourcesContent":["import layouts from './layouts'\n\nexport default {layouts}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/compact/console.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | // element is outer wrapper for the tab 7 | var element = exports.element = { 8 | top: 1, 9 | left: 0, 10 | width: '100%', 11 | height: '90%' 12 | }; 13 | //# sourceMappingURL=console.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/compact/console.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/compact/console.js"],"names":[],"mappings":";;;;;;AACO,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,KAAK;CACd,CAAA","file":"console.js","sourcesContent":["// element is outer wrapper for the tab\nexport const element = {\n top: 1,\n left: 0,\n width: '100%',\n height: '90%'\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/compact/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.controls = exports.settings = exports.tabs = exports.cog = exports.name = undefined; 7 | 8 | var _sources = require('./sources'); 9 | 10 | var sources = _interopRequireWildcard(_sources); 11 | 12 | var _console = require('./console'); 13 | 14 | var console = _interopRequireWildcard(_console); 15 | 16 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 17 | 18 | var name = exports.name = 'compact'; 19 | 20 | var cog = exports.cog = { 21 | top: 0, 22 | left: '100%-3', 23 | width: 2, 24 | height: 1 25 | }; 26 | 27 | var tabs = exports.tabs = { 28 | top: 0, 29 | left: '5%', 30 | width: '100%', 31 | height: 'shrink' 32 | }; 33 | 34 | var settings = exports.settings = { 35 | top: '47.5%-14', 36 | left: '50%-46', 37 | width: 90, 38 | height: 28 39 | }; 40 | 41 | var controls = exports.controls = { 42 | left: '100%-10', 43 | width: 10, 44 | height: 3, 45 | top: 0 46 | }; 47 | 48 | exports.default = { name: name, sources: sources, console: console, cog: cog, tabs: tabs, settings: settings, controls: controls }; 49 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/compact/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/compact/index.js"],"names":[],"mappings":";;;;;;;;;IAAY,OAAO;;;;IACP,OAAO;;;;AAEZ,IAAM,IAAI,WAAJ,IAAI,GAAG,SAAS,CAAA;;AAEtB,IAAM,GAAG,WAAH,GAAG,GAAG;AACjB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,CAAC;AACR,QAAM,EAAE,CAAC;CACV,CAAA;;AAEM,IAAM,IAAI,WAAJ,IAAI,GAAG;AAClB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,IAAI;AACV,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,KAAG,EAAE,UAAU;AACf,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,EAAE;CACX,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,MAAI,EAAE,SAAS;AACf,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,CAAC;AACT,KAAG,EAAE,CAAC;CACP,CAAA;;kBAEc,EAAC,IAAI,EAAJ,IAAI,EAAE,OAAO,EAAP,OAAO,EAAE,OAAO,EAAP,OAAO,EAAE,GAAG,EAAH,GAAG,EAAE,IAAI,EAAJ,IAAI,EAAE,QAAQ,EAAR,QAAQ,EAAE,QAAQ,EAAR,QAAQ,EAAC","file":"index.js","sourcesContent":["import * as sources from './sources'\nimport * as console from './console'\n\nexport const name = 'compact'\n\nexport const cog = {\n top: 0,\n left: '100%-3',\n width: 2,\n height: 1\n}\n\nexport const tabs = {\n top: 0,\n left: '5%',\n width: '100%',\n height: 'shrink'\n}\n\nexport const settings = {\n top: '47.5%-14',\n left: '50%-46',\n width: 90,\n height: 28\n}\n\nexport const controls = {\n left: '100%-10',\n width: 10,\n height: 3,\n top: 0\n}\n\nexport default {name, sources, console, cog, tabs, settings, controls}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/compact/sources.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | // element is outer wrapper for the tab 7 | var element = exports.element = { 8 | top: 1, 9 | left: 0, 10 | width: '100%', 11 | height: '100%-1' 12 | }; 13 | 14 | // ordering specifies order of panels 15 | var ordering = exports.ordering = ['navigator', 'editor', 'callstack', 'breakpoints', 'scope', 'console']; 16 | 17 | var navigator = exports.navigator = { 18 | top: 0, 19 | left: 0, 20 | width: '31%', 21 | height: '37.5%+1' 22 | }; 23 | 24 | var editor = exports.editor = { 25 | top: 0, 26 | left: '30%-1', 27 | width: '70%', 28 | height: '42%-1' 29 | }; 30 | 31 | var editorstatus = exports.editorstatus = { 32 | height: 0 33 | }; 34 | 35 | var callstack = exports.callstack = { 36 | top: '40%-1', 37 | left: 0, 38 | width: '50%', 39 | height: '25%' 40 | }; 41 | 42 | var breakpoints = exports.breakpoints = { 43 | top: '60%-2', 44 | left: 0, 45 | width: '50%', 46 | height: '17.5%+1' 47 | }; 48 | 49 | var scope = exports.scope = { 50 | top: '40%-1', 51 | left: '49%', 52 | width: '50%', 53 | height: '37.5%+1' 54 | }; 55 | 56 | var console = exports.console = { 57 | top: '72.5%-1', 58 | left: 0, 59 | width: '100%-1', 60 | height: '25%' 61 | }; 62 | //# sourceMappingURL=sources.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/compact/sources.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/compact/sources.js"],"names":[],"mappings":";;;;;;AACO,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB;;;AAAA,AAGM,IAAM,QAAQ,WAAR,QAAQ,GAAG,CACtB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,OAAO,EACP,SAAS,CACV,CAAA;;AAEM,IAAM,SAAS,WAAT,SAAS,GAAG;AACvB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,SAAS;CAClB,CAAA;;AAEM,IAAM,MAAM,WAAN,MAAM,GAAG;AACpB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,OAAO;AACb,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,YAAY,WAAZ,YAAY,GAAG;AAC1B,QAAM,EAAE,CAAC;CACV,CAAA;;AAEM,IAAM,SAAS,WAAT,SAAS,GAAG;AACvB,KAAG,EAAE,OAAO;AACZ,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,KAAK;CACd,CAAA;;AAEM,IAAM,WAAW,WAAX,WAAW,GAAG;AACzB,KAAG,EAAE,OAAO;AACZ,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,SAAS;CAClB,CAAA;;AAEM,IAAM,KAAK,WAAL,KAAK,GAAG;AACnB,KAAG,EAAE,OAAO;AACZ,MAAI,EAAE,KAAK;AACX,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,SAAS;CAClB,CAAA;;AAEM,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,SAAS;AACd,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,QAAQ;AACf,QAAM,EAAE,KAAK;CACd,CAAA","file":"sources.js","sourcesContent":["// element is outer wrapper for the tab\nexport const element = {\n top: 1,\n left: 0,\n width: '100%',\n height: '100%-1'\n}\n\n// ordering specifies order of panels\nexport const ordering = [\n 'navigator',\n 'editor',\n 'callstack',\n 'breakpoints',\n 'scope',\n 'console'\n]\n\nexport const navigator = {\n top: 0,\n left: 0,\n width: '31%',\n height: '37.5%+1'\n}\n\nexport const editor = {\n top: 0,\n left: '30%-1',\n width: '70%',\n height: '42%-1'\n}\n\nexport const editorstatus = {\n height: 0\n}\n\nexport const callstack = {\n top: '40%-1',\n left: 0,\n width: '50%',\n height: '25%'\n}\n\nexport const breakpoints = {\n top: '60%-2',\n left: 0,\n width: '50%',\n height: '17.5%+1'\n}\n\nexport const scope = {\n top: '40%-1',\n left: '49%',\n width: '50%',\n height: '37.5%+1'\n}\n\nexport const console = {\n top: '72.5%-1',\n left: 0,\n width: '100%-1',\n height: '25%'\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _normal = require('./normal'); 8 | 9 | var _normal2 = _interopRequireDefault(_normal); 10 | 11 | var _minimal = require('./minimal'); 12 | 13 | var _minimal2 = _interopRequireDefault(_minimal); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | exports.default = { normal: _normal2.default, minimal: _minimal2.default }; 18 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/config/layouts/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;kBAGe,EAAC,MAAM,kBAAA,EAAE,OAAO,mBAAA,EAAC","file":"index.js","sourcesContent":["import normal from './normal'\nimport minimal from './minimal'\n\nexport default {normal, minimal}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/minimal/console.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | // element is outer wrapper for the tab 7 | var element = exports.element = { 8 | top: 1, 9 | left: 0, 10 | width: '100%', 11 | height: '100%-3' 12 | }; 13 | //# sourceMappingURL=console.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/minimal/console.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/minimal/console.js"],"names":[],"mappings":";;;;;;AACO,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB,CAAA","file":"console.js","sourcesContent":["// element is outer wrapper for the tab\nexport const element = {\n top: 1,\n left: 0,\n width: '100%',\n height: '100%-3'\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/minimal/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.controls = exports.settings = exports.tabs = exports.cog = exports.name = undefined; 7 | 8 | var _sources = require('./sources'); 9 | 10 | var sources = _interopRequireWildcard(_sources); 11 | 12 | var _console = require('./console'); 13 | 14 | var console = _interopRequireWildcard(_console); 15 | 16 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 17 | 18 | var name = exports.name = 'minimal'; 19 | 20 | var cog = exports.cog = { 21 | top: 0, 22 | left: '100%-3', 23 | width: 2, 24 | height: 1 25 | }; 26 | 27 | var tabs = exports.tabs = { 28 | top: 0, 29 | left: '5%', 30 | width: '100%', 31 | height: 'shrink' 32 | }; 33 | 34 | var settings = exports.settings = { 35 | top: '47.5%-14', 36 | left: '50%-46', 37 | width: 90, 38 | height: 28 39 | }; 40 | 41 | var controls = exports.controls = { 42 | left: 0, 43 | width: 0, 44 | height: 0, 45 | top: 0 46 | }; 47 | 48 | exports.default = { name: name, sources: sources, console: console, cog: cog, tabs: tabs, settings: settings, controls: controls }; 49 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/minimal/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/minimal/index.js"],"names":[],"mappings":";;;;;;;;;IAAY,OAAO;;;;IACP,OAAO;;;;AAEZ,IAAM,IAAI,WAAJ,IAAI,GAAG,SAAS,CAAA;;AAEtB,IAAM,GAAG,WAAH,GAAG,GAAG;AACjB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,CAAC;AACR,QAAM,EAAE,CAAC;CACV,CAAA;;AAEM,IAAM,IAAI,WAAJ,IAAI,GAAG;AAClB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,IAAI;AACV,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,KAAG,EAAE,UAAU;AACf,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,EAAE;CACX,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,CAAC;AACR,QAAM,EAAE,CAAC;AACT,KAAG,EAAE,CAAC;CACP,CAAA;;kBAEc,EAAC,IAAI,EAAJ,IAAI,EAAE,OAAO,EAAP,OAAO,EAAE,OAAO,EAAP,OAAO,EAAE,GAAG,EAAH,GAAG,EAAE,IAAI,EAAJ,IAAI,EAAE,QAAQ,EAAR,QAAQ,EAAE,QAAQ,EAAR,QAAQ,EAAC","file":"index.js","sourcesContent":["import * as sources from './sources'\nimport * as console from './console'\n\nexport const name = 'minimal'\n\nexport const cog = {\n top: 0,\n left: '100%-3',\n width: 2,\n height: 1\n}\n\nexport const tabs = {\n top: 0,\n left: '5%',\n width: '100%',\n height: 'shrink'\n}\n\nexport const settings = {\n top: '47.5%-14',\n left: '50%-46',\n width: 90,\n height: 28\n}\n\nexport const controls = {\n left: 0,\n width: 0,\n height: 0,\n top: 0\n}\n\nexport default {name, sources, console, cog, tabs, settings, controls}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/minimal/sources.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | // element is outer wrapper for the tab 7 | var element = exports.element = { 8 | top: 1, 9 | left: 0, 10 | width: '100%', 11 | height: '100%-1' 12 | }; 13 | 14 | // ordering specifies order of panels 15 | var ordering = exports.ordering = ['editor', 'callstack', 'breakpoints']; 16 | 17 | var navigator = exports.navigator = { 18 | top: '47.5%-14', 19 | left: '50%-46', 20 | width: 90, 21 | height: 0, 22 | visHeight: 28 23 | }; 24 | 25 | var editor = exports.editor = { 26 | top: 0, 27 | left: 0, 28 | width: '67.5%', 29 | height: '100%' 30 | }; 31 | 32 | var editorstatus = exports.editorstatus = { 33 | top: '100%-2', 34 | rightEdgeLeft: '67.5%', // <-- the dynamic width is subtracted from rightEdgeLeft 35 | // width - width calculated in component 36 | height: 1 37 | }; 38 | 39 | var callstack = exports.callstack = { 40 | top: 0, 41 | left: '67.5%-1', 42 | width: '32.5%+1', 43 | height: '50%+1' 44 | }; 45 | 46 | var breakpoints = exports.breakpoints = { 47 | top: '50%', 48 | left: '67.5%-1', 49 | width: '32.5%+1', 50 | height: '49%+1' 51 | }; 52 | 53 | var scope = exports.scope = { 54 | top: '47.5%-14', 55 | left: '50%-46', 56 | width: 90, 57 | height: 0, 58 | visHeight: 28 59 | }; 60 | 61 | var console = exports.console = { 62 | top: 0, 63 | left: 0, 64 | width: 0, 65 | height: 0 66 | }; 67 | //# sourceMappingURL=sources.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/minimal/sources.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/minimal/sources.js"],"names":[],"mappings":";;;;;;AACO,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB;;;AAAA,AAGM,IAAM,QAAQ,WAAR,QAAQ,GAAG,CACtB,QAAQ,EACR,WAAW,EACX,aAAa,CACd,CAAA;;AAEM,IAAM,SAAS,WAAT,SAAS,GAAG;AACvB,KAAG,EAAE,UAAU;AACf,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,CAAC;AACT,WAAS,EAAE,EAAE;CACd,CAAA;;AAEM,IAAM,MAAM,WAAN,MAAM,GAAG;AACpB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,OAAO;AACd,QAAM,EAAE,MAAM;CACf,CAAA;;AAEM,IAAM,YAAY,WAAZ,YAAY,GAAG;AAC1B,KAAG,EAAE,QAAQ;AACb,eAAa,EAAE,OAAO;;AAEtB,QAAM,EAAE,CAAC;CACV,CAAA;;AAEM,IAAM,SAAS,WAAT,SAAS,GAAG;AACvB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,SAAS;AACf,OAAK,EAAE,SAAS;AAChB,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,WAAW,WAAX,WAAW,GAAG;AACzB,KAAG,EAAE,KAAK;AACV,MAAI,EAAE,SAAS;AACf,OAAK,EAAE,SAAS;AAChB,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,KAAK,WAAL,KAAK,GAAG;AACnB,KAAG,EAAE,UAAU;AACf,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,CAAC;AACT,WAAS,EAAE,EAAE;CACd,CAAA;;AAEM,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,CAAC;AACR,QAAM,EAAE,CAAC;CACV,CAAA","file":"sources.js","sourcesContent":["// element is outer wrapper for the tab\nexport const element = {\n top: 1,\n left: 0,\n width: '100%',\n height: '100%-1'\n}\n\n// ordering specifies order of panels\nexport const ordering = [\n 'editor',\n 'callstack',\n 'breakpoints'\n]\n\nexport const navigator = {\n top: '47.5%-14',\n left: '50%-46',\n width: 90,\n height: 0,\n visHeight: 28\n}\n\nexport const editor = {\n top: 0,\n left: 0,\n width: '67.5%',\n height: '100%'\n}\n\nexport const editorstatus = {\n top: '100%-2',\n rightEdgeLeft: '67.5%', // <-- the dynamic width is subtracted from rightEdgeLeft\n // width - width calculated in component\n height: 1\n}\n\nexport const callstack = {\n top: 0,\n left: '67.5%-1',\n width: '32.5%+1',\n height: '50%+1'\n}\n\nexport const breakpoints = {\n top: '50%',\n left: '67.5%-1',\n width: '32.5%+1',\n height: '49%+1'\n}\n\nexport const scope = {\n top: '47.5%-14',\n left: '50%-46',\n width: 90,\n height: 0,\n visHeight: 28\n}\n\nexport const console = {\n top: 0,\n left: 0,\n width: 0,\n height: 0\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/normal/console.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | // element is outer wrapper for the tab 7 | var element = exports.element = { 8 | top: 1, 9 | left: 0, 10 | width: '100%', 11 | height: '100%-3' 12 | }; 13 | //# sourceMappingURL=console.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/normal/console.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/normal/console.js"],"names":[],"mappings":";;;;;;AACO,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB,CAAA","file":"console.js","sourcesContent":["// element is outer wrapper for the tab\nexport const element = {\n top: 1,\n left: 0,\n width: '100%',\n height: '100%-3'\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/normal/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.controls = exports.settings = exports.tabs = exports.cog = exports.name = undefined; 7 | 8 | var _sources = require('./sources'); 9 | 10 | var sources = _interopRequireWildcard(_sources); 11 | 12 | var _console = require('./console'); 13 | 14 | var console = _interopRequireWildcard(_console); 15 | 16 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 17 | 18 | var name = exports.name = 'normal'; 19 | 20 | var cog = exports.cog = { 21 | top: 0, 22 | left: '100%-3', 23 | width: 2, 24 | height: 1 25 | }; 26 | 27 | var tabs = exports.tabs = { 28 | top: 0, 29 | left: '5%', 30 | width: '100%', 31 | height: 'shrink' 32 | }; 33 | 34 | var settings = exports.settings = { 35 | top: '47.5%-14', 36 | left: '50%-46', 37 | width: 90, 38 | height: 28 39 | }; 40 | 41 | var controls = exports.controls = { 42 | left: '100%-18', 43 | width: 8, 44 | height: 1, 45 | top: 0 46 | }; 47 | 48 | exports.default = { name: name, sources: sources, console: console, cog: cog, tabs: tabs, settings: settings, controls: controls }; 49 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/normal/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/normal/index.js"],"names":[],"mappings":";;;;;;;;;IAAY,OAAO;;;;IACP,OAAO;;;;AAEZ,IAAM,IAAI,WAAJ,IAAI,GAAG,QAAQ,CAAA;;AAErB,IAAM,GAAG,WAAH,GAAG,GAAG;AACjB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,CAAC;AACR,QAAM,EAAE,CAAC;CACV,CAAA;;AAEM,IAAM,IAAI,WAAJ,IAAI,GAAG;AAClB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,IAAI;AACV,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,KAAG,EAAE,UAAU;AACf,MAAI,EAAE,QAAQ;AACd,OAAK,EAAE,EAAE;AACT,QAAM,EAAE,EAAE;CACX,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,MAAI,EAAE,SAAS;AACf,OAAK,EAAE,CAAC;AACR,QAAM,EAAE,CAAC;AACT,KAAG,EAAE,CAAC;CACP,CAAA;;kBAEc,EAAC,IAAI,EAAJ,IAAI,EAAE,OAAO,EAAP,OAAO,EAAE,OAAO,EAAP,OAAO,EAAE,GAAG,EAAH,GAAG,EAAE,IAAI,EAAJ,IAAI,EAAE,QAAQ,EAAR,QAAQ,EAAE,QAAQ,EAAR,QAAQ,EAAC","file":"index.js","sourcesContent":["import * as sources from './sources'\nimport * as console from './console'\n\nexport const name = 'normal'\n\nexport const cog = {\n top: 0,\n left: '100%-3',\n width: 2,\n height: 1\n}\n\nexport const tabs = {\n top: 0,\n left: '5%',\n width: '100%',\n height: 'shrink'\n}\n\nexport const settings = {\n top: '47.5%-14',\n left: '50%-46',\n width: 90,\n height: 28\n}\n\nexport const controls = {\n left: '100%-18',\n width: 8,\n height: 1,\n top: 0\n}\n\nexport default {name, sources, console, cog, tabs, settings, controls}\n"]} -------------------------------------------------------------------------------- /compiled/config/layouts/normal/sources.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | // element is outer wrapper for the tab 7 | var element = exports.element = { 8 | top: 1, 9 | left: 0, 10 | width: '100%', 11 | height: '100%-1' 12 | }; 13 | 14 | // ordering specifies order of panels 15 | var ordering = exports.ordering = ['navigator', 'editor', 'callstack', 'breakpoints', 'scope', 'console']; 16 | 17 | var navigator = exports.navigator = { 18 | top: 0, 19 | left: 0, 20 | width: '18%', 21 | height: '75%+1' 22 | }; 23 | 24 | var editor = exports.editor = { 25 | top: 0, 26 | left: '16%', 27 | width: '60%', 28 | height: '75%+1' 29 | }; 30 | 31 | var editorstatus = exports.editorstatus = { 32 | top: '72.5%', 33 | rightEdgeLeft: '76%', // <-- the dynamic width is subtracted from rightEdgeLeft 34 | // width - width calculated in component 35 | height: 1 36 | }; 37 | 38 | var callstack = exports.callstack = { 39 | top: 0, 40 | left: '75%-1', 41 | width: '25%+1', 42 | height: '37%' 43 | }; 44 | 45 | var breakpoints = exports.breakpoints = { 46 | top: '36%-1', 47 | left: '75%-1', 48 | width: '25%+1', 49 | height: '15%+4' 50 | }; 51 | 52 | var scope = exports.scope = { 53 | top: '53%', 54 | left: '75%-1', 55 | width: '25%+1', 56 | height: '20%+2' 57 | }; 58 | 59 | var console = exports.console = { 60 | top: '72.5%+1', 61 | left: 0, 62 | width: '100%-1', 63 | height: '25%' 64 | }; 65 | //# sourceMappingURL=sources.js.map -------------------------------------------------------------------------------- /compiled/config/layouts/normal/sources.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../../src/config/layouts/normal/sources.js"],"names":[],"mappings":";;;;;;AACO,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,MAAM;AACb,QAAM,EAAE,QAAQ;CACjB;;;AAAA,AAGM,IAAM,QAAQ,WAAR,QAAQ,GAAG,CACtB,WAAW,EACX,QAAQ,EACR,WAAW,EACX,aAAa,EACb,OAAO,EACP,SAAS,CACV,CAAA;;AAEM,IAAM,SAAS,WAAT,SAAS,GAAG;AACvB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,MAAM,WAAN,MAAM,GAAG;AACpB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,KAAK;AACX,OAAK,EAAE,KAAK;AACZ,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,YAAY,WAAZ,YAAY,GAAG;AAC1B,KAAG,EAAE,OAAO;AACZ,eAAa,EAAE,KAAK;;AAEpB,QAAM,EAAE,CAAC;CACV,CAAA;;AAEM,IAAM,SAAS,WAAT,SAAS,GAAG;AACvB,KAAG,EAAE,CAAC;AACN,MAAI,EAAE,OAAO;AACb,OAAK,EAAE,OAAO;AACd,QAAM,EAAE,KAAK;CACd,CAAA;;AAEM,IAAM,WAAW,WAAX,WAAW,GAAG;AACzB,KAAG,EAAE,OAAO;AACZ,MAAI,EAAE,OAAO;AACb,OAAK,EAAE,OAAO;AACd,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,KAAK,WAAL,KAAK,GAAG;AACnB,KAAG,EAAE,KAAK;AACV,MAAI,EAAE,OAAO;AACb,OAAK,EAAE,OAAO;AACd,QAAM,EAAE,OAAO;CAChB,CAAA;;AAEM,IAAM,OAAO,WAAP,OAAO,GAAG;AACrB,KAAG,EAAE,SAAS;AACd,MAAI,EAAE,CAAC;AACP,OAAK,EAAE,QAAQ;AACf,QAAM,EAAE,KAAK;CACd,CAAA","file":"sources.js","sourcesContent":["// element is outer wrapper for the tab\nexport const element = {\n top: 1,\n left: 0,\n width: '100%',\n height: '100%-1'\n}\n\n// ordering specifies order of panels\nexport const ordering = [\n 'navigator',\n 'editor',\n 'callstack',\n 'breakpoints',\n 'scope',\n 'console'\n]\n\nexport const navigator = {\n top: 0,\n left: 0,\n width: '18%',\n height: '75%+1'\n}\n\nexport const editor = {\n top: 0,\n left: '16%',\n width: '60%',\n height: '75%+1'\n}\n\nexport const editorstatus = {\n top: '72.5%',\n rightEdgeLeft: '76%', // <-- the dynamic width is subtracted from rightEdgeLeft\n // width - width calculated in component\n height: 1\n}\n\nexport const callstack = {\n top: 0,\n left: '75%-1',\n width: '25%+1',\n height: '37%'\n}\n\nexport const breakpoints = {\n top: '36%-1',\n left: '75%-1',\n width: '25%+1',\n height: '15%+4'\n}\n\nexport const scope = {\n top: '53%',\n left: '75%-1',\n width: '25%+1',\n height: '20%+2'\n}\n\nexport const console = {\n top: '72.5%+1',\n left: 0,\n width: '100%-1',\n height: '25%'\n}\n"]} -------------------------------------------------------------------------------- /compiled/config/user-settings.json: -------------------------------------------------------------------------------- 1 | {"tooltips":true,"layout":"normal"} -------------------------------------------------------------------------------- /compiled/containers/Cog/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _reactRedux = require('react-redux'); 14 | 15 | var _actions = require('../../actions'); 16 | 17 | var _components = require('../../components'); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var Cog = function Cog(_ref) { 22 | var layout = _ref.layout; 23 | var active = _ref.active; 24 | var dispatch = _ref.dispatch; 25 | return _react2.default.createElement(_components.Cog, _extends({}, layout, { 26 | active: active, 27 | onClick: function onClick() { 28 | return dispatch((0, _actions.focusPanel)('settings')); 29 | } 30 | })); 31 | }; 32 | 33 | exports.default = (0, _reactRedux.connect)(function (_ref2) { 34 | var layout = _ref2.layout; 35 | return { 36 | layout: layout.cog 37 | }; 38 | })(Cog); 39 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/Cog/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/containers/Cog/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA,IAAM,GAAG,GAAG,SAAN,GAAG;MAAK,MAAM,QAAN,MAAM;MAAE,MAAM,QAAN,MAAM;MAAE,QAAQ,QAAR,QAAQ;SACpC,0CAHO,GAAG,eAIJ,MAAM;AACV,UAAM,EAAE,MAAM,AAAC;AACf,WAAO,EAAE;aAAM,QAAQ,CAAC,aARnB,UAAU,EAQoB,UAAU,CAAC,CAAC;KAAA,AAAC;KAChD;CACH,CAAA;;kBAEc,gBAbN,OAAO,EAaO;MAAE,MAAM,SAAN,MAAM;SAAO;AACpC,UAAM,EAAE,MAAM,CAAC,GAAG;GACnB;CAAC,CAAC,CAAC,GAAG,CAAC","file":"index.js","sourcesContent":["import React from 'react'\nimport { connect } from 'react-redux'\nimport { focusPanel } from '../../actions'\n\nimport { Cog as CogCmp } from '../../components'\n\nconst Cog = ({layout, active, dispatch}) => (\n dispatch(focusPanel('settings'))}\n />\n)\n\nexport default connect(({layout}) => ({\n layout: layout.cog\n}))(Cog)\n"]} -------------------------------------------------------------------------------- /compiled/containers/Console/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _redux = require('redux'); 14 | 15 | var _reactRedux = require('react-redux'); 16 | 17 | var _actions = require('../../actions'); 18 | 19 | var actionCreators = _interopRequireWildcard(_actions); 20 | 21 | var _components = require('../../components'); 22 | 23 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 24 | 25 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 26 | 27 | var Console = function Console(_ref) { 28 | var layout = _ref.layout; 29 | var output = _ref.output; 30 | var actions = _ref.actions; 31 | return _react2.default.createElement(_components.Console, _extends({ focused: true, independent: true, output: output, actions: actions }, layout.element)); 32 | }; 33 | 34 | var mapDispatch = function mapDispatch(dispatch) { 35 | return { 36 | actions: (0, _redux.bindActionCreators)(actionCreators, dispatch) 37 | }; 38 | }; 39 | 40 | exports.default = (0, _reactRedux.connect)(function (_ref2) { 41 | var layout = _ref2.layout; 42 | var output = _ref2.output; 43 | return { 44 | layout: layout.console, 45 | output: output 46 | }; 47 | }, mapDispatch)(Console); 48 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/Console/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/containers/Console/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;IAGY,cAAc;;;;;;;;AAM1B,IAAM,OAAO,GAAG,SAAV,OAAO;MAAK,MAAM,QAAN,MAAM;MAAE,MAAM,QAAN,MAAM;MAAE,OAAO,QAAP,OAAO;SACvC,0CAJA,OAAO,aAIK,OAAO,MAAA,EAAC,WAAW,MAAA,EAAC,MAAM,EAAE,MAAM,AAAC,EAAC,OAAO,EAAE,OAAO,AAAC,IAAK,MAAM,CAAC,OAAO,EAAG;CACxF,CAAA;;AAED,IAAM,WAAW,GAAG,SAAd,WAAW,CAAG,QAAQ;SAAK;AAC/B,WAAO,EAAE,WAbH,kBAAkB,EAaI,cAAc,EAAE,QAAQ,CAAC;GACtD;CAAC,CAAA;;kBAEa,gBAfP,OAAO,EAeQ;MAAE,MAAM,SAAN,MAAM;MAAE,MAAM,SAAN,MAAM;SAAO;AAC5C,UAAM,EAAE,MAAM,CAAC,OAAO;AACtB,UAAM,EAAN,MAAM;GACP;CAAC,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC","file":"index.js","sourcesContent":["import React from 'react'\nimport {bindActionCreators} from 'redux'\nimport {connect} from 'react-redux'\nimport * as actionCreators from '../../actions'\n\nimport {\n Console as ConsoleCmp\n} from '../../components'\n\nconst Console = ({layout, output, actions}) => (\n \n)\n\nconst mapDispatch = dispatch => ({\n actions: bindActionCreators(actionCreators, dispatch)\n})\n\nexport default connect(({layout, output}) => ({\n layout: layout.console,\n output\n}), mapDispatch)(Console)\n"]} -------------------------------------------------------------------------------- /compiled/containers/Controls/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _reactRedux = require('react-redux'); 14 | 15 | var _actions = require('../../actions'); 16 | 17 | var _components = require('../../components'); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var Controls = function Controls(_ref) { 22 | var layout = _ref.layout; 23 | var tooltips = _ref.tooltips; 24 | var paused = _ref.paused; 25 | var dispatch = _ref.dispatch; 26 | return _react2.default.createElement(_components.Controls, _extends({}, layout, { 27 | paused: paused, 28 | tooltips: tooltips, 29 | pauseResume: function pauseResume() { 30 | return paused ? dispatch((0, _actions.resume)()) : dispatch((0, _actions.pause)()); 31 | }, 32 | stepOver: function stepOver() { 33 | return dispatch((0, _actions.stepOver)()); 34 | }, 35 | stepInto: function stepInto() { 36 | return dispatch((0, _actions.stepInto)()); 37 | }, 38 | stepOut: function stepOut() { 39 | return dispatch((0, _actions.stepOut)()); 40 | } 41 | })); 42 | }; 43 | 44 | exports.default = (0, _reactRedux.connect)(function (_ref2) { 45 | var layout = _ref2.layout; 46 | var tooltips = _ref2.tooltips; 47 | var paused = _ref2.paused; 48 | return { 49 | layout: layout.controls, 50 | tooltips: tooltips, 51 | paused: paused 52 | }; 53 | })(Controls); 54 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/Controls/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/containers/Controls/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAQA,IAAM,QAAQ,GAAG,SAAX,QAAQ;MAAK,MAAM,QAAN,MAAM;MAAE,QAAQ,QAAR,QAAQ;MAAE,MAAM,QAAN,MAAM;MAAE,QAAQ,QAAR,QAAQ;SACnD,0CAJA,QAAQ,eAKF,MAAM;AACV,UAAM,EAAE,MAAM,AAAC;AACf,YAAQ,EAAE,QAAQ,AAAC;AACnB,eAAW,EAAE;aAAO,MAAM,GAAG,QAAQ,CAAC,aAX3B,MAAM,GAW6B,CAAC,GAAG,QAAQ,CAAC,aAXvD,KAAK,GAWyD,CAAC;KAAC,AAAC;AACrE,YAAQ,EAAE;aAAM,QAAQ,CAAC,aAZN,QAAQ,GAYQ,CAAC;KAAA,AAAC;AACrC,YAAQ,EAAE;aAAM,QAAQ,CAAC,aAbI,QAAQ,GAaF,CAAC;KAAA,AAAC;AACrC,WAAO,EAAE;aAAM,QAAQ,CAAC,aAde,OAAO,GAcb,CAAC;KAAA,AAAC;KACnC;CACH,CAAA;;kBAEc,gBAnBP,OAAO,EAmBQ;MAAE,MAAM,SAAN,MAAM;MAAE,QAAQ,SAAR,QAAQ;MAAE,MAAM,SAAN,MAAM;SAAO;AACtD,UAAM,EAAE,MAAM,CAAC,QAAQ;AACvB,YAAQ,EAAR,QAAQ;AACR,UAAM,EAAN,MAAM;GACP;CAAC,CAAC,CAAC,QAAQ,CAAC","file":"index.js","sourcesContent":["import React from 'react'\nimport {connect} from 'react-redux'\nimport {pause, resume, stepOver, stepInto, stepOut} from '../../actions'\n\nimport {\n Controls as ControlsCmp\n} from '../../components'\n\nconst Controls = ({layout, tooltips, paused, dispatch}) => (\n (paused ? dispatch(resume()) : dispatch(pause()))}\n stepOver={() => dispatch(stepOver())}\n stepInto={() => dispatch(stepInto())}\n stepOut={() => dispatch(stepOut())}\n />\n)\n\nexport default connect(({layout, tooltips, paused}) => ({\n layout: layout.controls,\n tooltips,\n paused\n}))(Controls)\n"]} -------------------------------------------------------------------------------- /compiled/containers/Settings/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _reactRedux = require('react-redux'); 14 | 15 | var _actions = require('../../actions'); 16 | 17 | var _layouts = require('../../config/layouts'); 18 | 19 | var _layouts2 = _interopRequireDefault(_layouts); 20 | 21 | var _components = require('../../components'); 22 | 23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 24 | 25 | var focusedInput = 'normal'; 26 | 27 | var Settings = function Settings(_ref) { 28 | var layout = _ref.layout; 29 | var tooltips = _ref.tooltips; 30 | var dispatch = _ref.dispatch; 31 | var focused = _ref.focused; 32 | 33 | var changeLayout = function changeLayout(to) { 34 | return function () { 35 | // hack - react-blessed and/or blessed currently 36 | // doesn't do well with multiple rendering changes 37 | // in the same event loop 38 | setImmediate(function () { 39 | dispatch((0, _actions.focusPanel)('editor')); 40 | dispatch((0, _actions.refetchScope)()); 41 | setImmediate(function () { 42 | dispatch((0, _actions.setDimensions)(_layouts2.default[to])); 43 | focusedInput = to; 44 | dispatch((0, _actions.focusPanel)('settings')); 45 | }); 46 | }); 47 | }; 48 | }; 49 | 50 | var tooltipsToggle = function tooltipsToggle() { 51 | setImmediate(function () { 52 | dispatch((0, _actions.focusPanel)('editor')); 53 | setImmediate(function () { 54 | dispatch((0, _actions.toggleTooltips)()); 55 | focusedInput = 'tooltips'; 56 | dispatch((0, _actions.focusPanel)('settings')); 57 | }); 58 | }); 59 | }; 60 | 61 | return _react2.default.createElement(_components.Settings, _extends({}, layout.settings, { 62 | focusedInput: focusedInput || layout, 63 | focused: focused, 64 | layout: layout, 65 | tooltips: tooltips, 66 | changeLayout: changeLayout, 67 | toggleTooltips: tooltipsToggle 68 | })); 69 | }; 70 | 71 | exports.default = (0, _reactRedux.connect)(function (_ref2) { 72 | var layout = _ref2.layout; 73 | var tooltips = _ref2.tooltips; 74 | return { layout: layout, tooltips: tooltips }; 75 | })(Settings); 76 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/Settings/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/containers/Settings/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAOA,IAAI,YAAY,GAAG,QAAQ,CAAA;;AAE3B,IAAM,QAAQ,GAAG,SAAX,QAAQ,OAA8C;MAAzC,MAAM,QAAN,MAAM;MAAE,QAAQ,QAAR,QAAQ;MAAE,QAAQ,QAAR,QAAQ;MAAE,OAAO,QAAP,OAAO;;AACpD,MAAM,YAAY,GAAG,SAAf,YAAY,CAAI,EAAE;WAAK,YAAM;;;;AAIjC,kBAAY,CAAC,YAAM;AACjB,gBAAQ,CAAC,aAbN,UAAU,EAaO,QAAQ,CAAC,CAAC,CAAA;AAC9B,gBAAQ,CAAC,aAdM,YAAY,GAcJ,CAAC,CAAA;AACxB,oBAAY,CAAC,YAAM;AACjB,kBAAQ,CAAC,aAhBkB,aAAa,EAgBjB,kBAAQ,EAAE,CAAC,CAAC,CAAC,CAAA;AACpC,sBAAY,GAAG,EAAE,CAAA;AACjB,kBAAQ,CAAC,aAlBR,UAAU,EAkBS,UAAU,CAAC,CAAC,CAAA;SACjC,CAAC,CAAA;OACH,CAAC,CAAA;KACH;GAAA,CAAA;;AAED,MAAM,cAAc,GAAG,SAAjB,cAAc,GAAS;AAC3B,gBAAY,CAAC,YAAM;AACjB,cAAQ,CAAC,aAzBN,UAAU,EAyBO,QAAQ,CAAC,CAAC,CAAA;AAC9B,kBAAY,CAAC,YAAM;AACjB,gBAAQ,CAAC,aA3BiC,cAAc,GA2B/B,CAAC,CAAA;AAC1B,oBAAY,GAAG,UAAU,CAAA;AACzB,gBAAQ,CAAC,aA7BR,UAAU,EA6BS,UAAU,CAAC,CAAC,CAAA;OACjC,CAAC,CAAA;KACH,CAAC,CAAA;GACH,CAAA;;AAED,SACE,0CAhCK,QAAQ,eAiCP,MAAM,CAAC,QAAQ;AACnB,gBAAY,EAAE,YAAY,IAAI,MAAM,AAAC;AACrC,WAAO,EAAE,OAAO,AAAC;AACjB,UAAM,EAAE,MAAM,AAAC;AACf,YAAQ,EAAE,QAAQ,AAAC;AACnB,gBAAY,EAAE,YAAY,AAAC;AAC3B,kBAAc,EAAE,cAAc,AAAC;KAC/B,CACH;CACF,CAAA;;kBAEc,gBAhDN,OAAO,EAgDO;MAAE,MAAM,SAAN,MAAM;MAAE,QAAQ,SAAR,QAAQ;SAAO,EAAC,MAAM,EAAN,MAAM,EAAE,QAAQ,EAAR,QAAQ,EAAC;CAAC,CAAC,CAAC,QAAQ,CAAC","file":"index.js","sourcesContent":["import React from 'react'\nimport { connect } from 'react-redux'\nimport { focusPanel, refetchScope, setDimensions, toggleTooltips } from '../../actions'\nimport layouts from '../../config/layouts'\n\nimport { Settings as SettingsCmp } from '../../components'\n\nlet focusedInput = 'normal'\n\nconst Settings = ({layout, tooltips, dispatch, focused}) => {\n const changeLayout = (to) => () => {\n // hack - react-blessed and/or blessed currently\n // doesn't do well with multiple rendering changes\n // in the same event loop\n setImmediate(() => {\n dispatch(focusPanel('editor'))\n dispatch(refetchScope())\n setImmediate(() => {\n dispatch(setDimensions(layouts[to]))\n focusedInput = to\n dispatch(focusPanel('settings'))\n })\n })\n }\n\n const tooltipsToggle = () => {\n setImmediate(() => {\n dispatch(focusPanel('editor'))\n setImmediate(() => {\n dispatch(toggleTooltips())\n focusedInput = 'tooltips'\n dispatch(focusPanel('settings'))\n })\n })\n }\n\n return (\n \n )\n}\n\nexport default connect(({layout, tooltips}) => ({layout, tooltips}))(Settings)\n"]} -------------------------------------------------------------------------------- /compiled/containers/Sources/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _path = require('path'); 14 | 15 | var _redux = require('redux'); 16 | 17 | var _reactRedux = require('react-redux'); 18 | 19 | var _components = require('../../components'); 20 | 21 | var _actions = require('../../actions'); 22 | 23 | var actionCreators = _interopRequireWildcard(_actions); 24 | 25 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 26 | 27 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 28 | 29 | var Sources = function Sources(_ref) { 30 | var layoutName = _ref.layoutName; 31 | var layout = _ref.layout; 32 | var source = _ref.source; 33 | var filename = _ref.filename; 34 | var files = _ref.files; 35 | var fileItem = _ref.fileItem; 36 | var scopeItem = _ref.scopeItem; 37 | var editorLine = _ref.editorLine; 38 | var callstack = _ref.callstack; 39 | var breakpoints = _ref.breakpoints; 40 | var scope = _ref.scope; 41 | var panel = _ref.panel; 42 | var actions = _ref.actions; 43 | var tooltips = _ref.tooltips; 44 | var output = _ref.output; 45 | return _react2.default.createElement( 46 | 'element', 47 | layout.element, 48 | _react2.default.createElement(_components.Navigator, _extends({ tooltips: tooltips, items: files, item: fileItem, focused: panel === 'navigator', actions: actions }, layout.navigator)), 49 | _react2.default.createElement(_components.Editor, _extends({ tooltips: tooltips, items: source, selected: editorLine, focused: panel === 'editor', actions: actions }, layout.editor)), 50 | _react2.default.createElement(_components.EditorStatus, _extends({ tooltips: tooltips, line: editorLine, file: filename }, layout.editorstatus)), 51 | _react2.default.createElement(_components.CallStack, _extends({ tooltips: tooltips, items: callstack, focused: panel === 'callstack', actions: actions }, layout.callstack)), 52 | _react2.default.createElement(_components.BreakPoints, _extends({ tooltips: tooltips, items: breakpoints, focused: panel === 'breakpoints', actions: actions }, layout.breakpoints)), 53 | _react2.default.createElement(_components.Scope, _extends({ tooltips: tooltips, items: scope, item: scopeItem, focused: panel === 'scope', actions: actions }, layout.scope)), 54 | panel === 'navigator' && layoutName === 'minimal' && _react2.default.createElement(_components.Navigator, _extends({ onEsc: function onEsc() { 55 | return actions.focusPanel('editor'); 56 | }, tooltips: tooltips, items: files, item: fileItem, focused: panel === 'navigator', actions: actions }, layout.navigator)), 57 | panel === 'scope' && layoutName === 'minimal' && _react2.default.createElement(_components.Scope, _extends({ onEsc: function onEsc() { 58 | return actions.focusPanel('editor'); 59 | }, tooltips: tooltips, items: scope, item: scopeItem, focused: panel === 'scope', actions: actions }, layout.scope)), 60 | _react2.default.createElement(_components.Console, _extends({ tooltips: tooltips, output: output, focused: panel === 'console', actions: actions }, layout.console)) 61 | ); 62 | }; 63 | 64 | var mapState = function mapState(_ref2) { 65 | var layout = _ref2.layout; 66 | var file = _ref2.file; 67 | var fileItem = _ref2.fileItem; 68 | var scopeItem = _ref2.scopeItem; 69 | var editorLine = _ref2.editorLine; 70 | var source = _ref2.source; 71 | var files = _ref2.files; 72 | var callstack = _ref2.callstack; 73 | var breakpoints = _ref2.breakpoints; 74 | var scope = _ref2.scope; 75 | var panel = _ref2.panel; 76 | var tooltips = _ref2.tooltips; 77 | var output = _ref2.output; 78 | return { 79 | layoutName: layout.name, 80 | layout: layout.sources, 81 | source: source, 82 | filename: file[0] === '/' ? (0, _path.basename)(file) : file, 83 | files: files, 84 | fileItem: fileItem, 85 | scopeItem: scopeItem, 86 | editorLine: editorLine, 87 | callstack: callstack, 88 | breakpoints: breakpoints, 89 | scope: scope, 90 | panel: panel, 91 | tooltips: tooltips, 92 | output: output 93 | }; 94 | }; 95 | 96 | var mapDispatch = function mapDispatch(dispatch) { 97 | return { 98 | actions: (0, _redux.bindActionCreators)(actionCreators, dispatch) 99 | }; 100 | }; 101 | 102 | exports.default = (0, _reactRedux.connect)(mapState, mapDispatch)(Sources); 103 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/Sources/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/containers/Sources/index.js"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react'\nimport {basename} from 'path'\nimport {bindActionCreators} from 'redux'\nimport {connect} from 'react-redux'\nimport {\n BreakPoints, CallStack, Console, Editor, EditorStatus, Navigator, Scope\n} from '../../components'\nimport * as actionCreators from '../../actions'\n\nconst Sources = ({\n layoutName,\n layout,\n source,\n filename,\n files,\n fileItem,\n scopeItem,\n editorLine,\n callstack,\n breakpoints,\n scope,\n panel,\n actions,\n tooltips,\n output\n}) => (\n \n \n \n \n \n \n \n {\n (panel === 'navigator' && layoutName === 'minimal') &&\n actions.focusPanel('editor')} tooltips={tooltips} items={files} item={fileItem} focused={panel === 'navigator'} actions={actions} {...layout.navigator}/>\n }\n {\n (panel === 'scope' && layoutName === 'minimal') &&\n actions.focusPanel('editor')} tooltips={tooltips} items={scope} item={scopeItem} focused={panel === 'scope'} actions={actions} {...layout.scope}/>\n }\n \n \n)\n\nconst mapState = ({\n layout,\n file,\n fileItem,\n scopeItem,\n editorLine,\n source,\n files,\n callstack,\n breakpoints,\n scope,\n panel,\n tooltips,\n output\n}) => ({\n layoutName: layout.name,\n layout: layout.sources,\n source,\n filename: file[0] === '/' ? basename(file) : file,\n files,\n fileItem,\n scopeItem,\n editorLine,\n callstack,\n breakpoints,\n scope,\n panel,\n tooltips,\n output\n})\n\nconst mapDispatch = dispatch => ({\n actions: bindActionCreators(actionCreators, dispatch)\n})\n\nexport default connect(mapState, mapDispatch)(Sources)\n"]} -------------------------------------------------------------------------------- /compiled/containers/Tabs/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _reactRedux = require('react-redux'); 14 | 15 | var _actions = require('../../actions'); 16 | 17 | var _components = require('../../components'); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var tabs = ['Sources', 'Console']; 22 | 23 | var Tabs = function Tabs(_ref) { 24 | var layout = _ref.layout; 25 | var dispatch = _ref.dispatch; 26 | return _react2.default.createElement(_components.Tabs, _extends({}, layout, { items: tabs, onSelectTab: function onSelectTab(_, ix) { 27 | return dispatch((0, _actions.focusTab)(tabs[ix])); 28 | } })); 29 | }; 30 | 31 | exports.default = (0, _reactRedux.connect)(function (_ref2) { 32 | var layout = _ref2.layout; 33 | return { 34 | layout: layout.tabs 35 | }; 36 | })(Tabs); 37 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/Tabs/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../../src/containers/Tabs/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAQA,IAAM,IAAI,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;;AAEnC,IAAM,IAAI,GAAG,SAAP,IAAI;MAAK,MAAM,QAAN,MAAM;MAAE,QAAQ,QAAR,QAAQ;SAC7B,0CANA,IAAI,eAMS,MAAM,IAAE,KAAK,EAAE,IAAI,AAAC,EAAC,WAAW,EAC3C,qBAAC,CAAC,EAAE,EAAE;aAAK,QAAQ,CAAC,aAVhB,QAAQ,EAUiB,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAAA,AACxC,IAAE;CACJ,CAAA;;kBAEc,gBAfP,OAAO,EAeQ;MAAE,MAAM,SAAN,MAAM;SAAO;AACpC,UAAM,EAAE,MAAM,CAAC,IAAI;GACpB;CAAC,CAAC,CAAC,IAAI,CAAC","file":"index.js","sourcesContent":["import React from 'react'\nimport {connect} from 'react-redux'\nimport {focusTab} from '../../actions'\n\nimport {\n Tabs as TabsCmp\n} from '../../components'\n\nconst tabs = ['Sources', 'Console']\n\nconst Tabs = ({layout, dispatch}) => (\n dispatch(focusTab(tabs[ix]))\n }/>\n)\n\nexport default connect(({layout}) => ({\n layout: layout.tabs\n}))(Tabs)\n"]} -------------------------------------------------------------------------------- /compiled/containers/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.Tabs = exports.Cog = exports.Controls = exports.Settings = exports.Sources = exports.Console = undefined; 7 | 8 | var _Console = require('./Console'); 9 | 10 | var _Console2 = _interopRequireDefault(_Console); 11 | 12 | var _Sources = require('./Sources'); 13 | 14 | var _Sources2 = _interopRequireDefault(_Sources); 15 | 16 | var _Settings = require('./Settings'); 17 | 18 | var _Settings2 = _interopRequireDefault(_Settings); 19 | 20 | var _Controls = require('./Controls'); 21 | 22 | var _Controls2 = _interopRequireDefault(_Controls); 23 | 24 | var _Cog = require('./Cog'); 25 | 26 | var _Cog2 = _interopRequireDefault(_Cog); 27 | 28 | var _Tabs = require('./Tabs'); 29 | 30 | var _Tabs2 = _interopRequireDefault(_Tabs); 31 | 32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 33 | 34 | exports.Console = _Console2.default; 35 | exports.Sources = _Sources2.default; 36 | exports.Settings = _Settings2.default; 37 | exports.Controls = _Controls2.default; 38 | exports.Cog = _Cog2.default; 39 | exports.Tabs = _Tabs2.default; 40 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/containers/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/containers/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAOQ,OAAO;QAAE,OAAO;QAAE,QAAQ;QAAE,QAAQ;QAAE,GAAG;QAAE,IAAI","file":"index.js","sourcesContent":["import Console from './Console'\nimport Sources from './Sources'\nimport Settings from './Settings'\nimport Controls from './Controls'\nimport Cog from './Cog'\nimport Tabs from './Tabs'\n\nexport {Console, Sources, Settings, Controls, Cog, Tabs}\n"]} -------------------------------------------------------------------------------- /compiled/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | require('babel-polyfill'); 10 | 11 | require('source-map-support/register'); 12 | 13 | var _fs = require('fs'); 14 | 15 | var _fs2 = _interopRequireDefault(_fs); 16 | 17 | var _path = require('path'); 18 | 19 | var _path2 = _interopRequireDefault(_path); 20 | 21 | var _react = require('react'); 22 | 23 | var _react2 = _interopRequireDefault(_react); 24 | 25 | var _reactRedux = require('react-redux'); 26 | 27 | var _reactBlessed = require('react-blessed'); 28 | 29 | var _create = require('./store/create'); 30 | 31 | var _create2 = _interopRequireDefault(_create); 32 | 33 | var _screen = require('./screen'); 34 | 35 | var _screen2 = _interopRequireDefault(_screen); 36 | 37 | var _config = require('./config'); 38 | 39 | var _config2 = _interopRequireDefault(_config); 40 | 41 | var _containers = require('./containers'); 42 | 43 | var _actions = require('./actions'); 44 | 45 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 46 | 47 | function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } step("next"); }); }; } 48 | 49 | Error.stackTraceLimit = Infinity; 50 | 51 | var userSettings = _path2.default.join(__dirname, 'config', 'user-settings.json'); 52 | 53 | var defaultCfg = { tooltips: true, layout: 'normal' }; 54 | 55 | var userCfg = _fs2.default.existsSync(userSettings) ? _extends({}, defaultCfg, require(userSettings)) : _extends({}, defaultCfg); 56 | 57 | userCfg.layout = _config2.default.layouts[userCfg.layout]; 58 | 59 | var store = (0, _create2.default)(_extends({ 60 | tab: 'sources', 61 | panel: 'editor' 62 | }, userCfg)); 63 | 64 | var dispatch = store.dispatch; 65 | 66 | exports.default = (function () { 67 | var _this = this; 68 | 69 | var ref = _asyncToGenerator(regeneratorRuntime.mark(function _callee(pid, _ref) { 70 | var _ref$host = _ref.host; 71 | var host = _ref$host === undefined ? '127.0.0.1' : _ref$host; 72 | var _ref$port = _ref.port; 73 | var port = _ref$port === undefined ? 5858 : _ref$port; 74 | var screen, Devtools; 75 | return regeneratorRuntime.wrap(function _callee$(_context) { 76 | while (1) { 77 | switch (_context.prev = _context.next) { 78 | case 0: 79 | if (pid) { 80 | try { 81 | process.kill(pid, 'SIGUSR1'); 82 | } catch (e) { 83 | console.log('Warning unable to locate supplied pid ', pid); 84 | } 85 | } 86 | 87 | screen = (0, _screen2.default)(store); 88 | 89 | dispatch((0, _actions.receiveSource)('Waiting for debug port ' + port)); 90 | dispatch((0, _actions.startDebugging)({ host: host, port: port })); 91 | 92 | Devtools = function Devtools(_ref2) { 93 | var layout = _ref2.layout; 94 | var tab = _ref2.tab; 95 | var panel = _ref2.panel; 96 | 97 | return _react2.default.createElement( 98 | 'element', 99 | null, 100 | layout.name === 'normal' && _react2.default.createElement(_containers.Tabs, null), 101 | layout.name === 'minimal' && _react2.default.createElement(_containers.Tabs, null), 102 | tab === 'sources' && _react2.default.createElement(_containers.Sources, null), 103 | tab === 'console' && _react2.default.createElement(_containers.Console, null), 104 | _react2.default.createElement(_containers.Cog, _extends({}, layout.cog, { active: panel === 'settings' })), 105 | panel === 'settings' && _react2.default.createElement(_containers.Settings, { focused: panel === 'settings' }), 106 | _react2.default.createElement(_containers.Controls, layout.controls) 107 | ); 108 | }; 109 | 110 | Devtools = (0, _reactRedux.connect)(function (_ref3) { 111 | var layout = _ref3.layout; 112 | var tab = _ref3.tab; 113 | var panel = _ref3.panel; 114 | return { layout: layout, tab: tab, panel: panel }; 115 | })(Devtools); 116 | 117 | return _context.abrupt('return', (0, _reactBlessed.render)(_react2.default.createElement( 118 | _reactRedux.Provider, 119 | { store: store }, 120 | _react2.default.createElement(Devtools, null) 121 | ), screen)); 122 | 123 | case 7: 124 | case 'end': 125 | return _context.stop(); 126 | } 127 | } 128 | }, _callee, _this); 129 | })); 130 | 131 | return function (_x, _x2) { 132 | return ref.apply(this, arguments); 133 | }; 134 | })(); 135 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAA;;AAmBhC,IAAM,YAAY,GAAG,eAAK,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAA;;AAEzE,IAAM,UAAU,GAAG,EAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAA;;AAErD,IAAM,OAAO,GAAG,AAAC,aAAG,UAAU,CAAC,YAAY,CAAC,gBACpC,UAAU,EAAK,OAAO,CAAC,YAAY,CAAC,iBACpC,UAAU,CAAC,CAAA;;AAEnB,OAAO,CAAC,MAAM,GAAG,iBAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;;AAE/C,IAAM,KAAK,GAAG;AACZ,KAAG,EAAE,SAAS;AACd,OAAK,EAAE,QAAQ;GACZ,OAAO,EACV,CAAA;;IAEK,QAAQ,GAAI,KAAK,CAAjB,QAAQ;;;;;sDAEA,iBAAO,GAAG;yBAAG,IAAI;QAAE,IAAI,6BAAG,WAAW;yBAAE,IAAI;QAAE,IAAI,6BAAG,IAAI;QASjE,MAAM,EAKN,QAAQ;;;;;AAbZ,gBAAI,GAAG,EAAE;AACP,kBAAI;AACF,uBAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;eAC7B,CAAC,OAAO,CAAC,EAAE;AACV,uBAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;eAC3D;aACF;;AAEG,kBAAM,GAAG,sBAAa,KAAK,CAAC;;AAEhC,oBAAQ,CAAC,aAhCT,aAAa,EAgCU,yBAAyB,GAAG,IAAI,CAAC,CAAC,CAAA;AACzD,oBAAQ,CAAC,aAlCT,cAAc,EAkCU,EAAC,IAAI,EAAJ,IAAI,EAAE,IAAI,EAAJ,IAAI,EAAC,CAAC,CAAC,CAAA;;AAElC,oBAAQ,GAAG,yBAA0B;kBAAxB,MAAM,SAAN,MAAM;kBAAE,GAAG,SAAH,GAAG;kBAAE,KAAK,SAAL,KAAK;;AACjC,qBACE;;;gBAKG,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,0CA9CQ,IAAI,OA8CL;gBACnC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,0CA/CO,IAAI,OA+CJ;gBACpC,GAAG,KAAK,SAAS,IAAI,0CAhDnB,OAAO,OAgDsB;gBAC/B,GAAG,KAAK,SAAS,IAAI,0CAjD5B,OAAO,OAiD+B;gBAChC,0CAlDsB,GAAG,eAkDhB,MAAM,CAAC,GAAG,IAAE,MAAM,EAAE,KAAK,KAAK,UAAU,AAAC,IAAE;gBACnD,KAAK,KAAK,UAAU,IAAI,0CAnDE,QAAQ,IAmDA,OAAO,EAAE,KAAK,KAAK,UAAU,AAAC,GAAE;gBACnE,0CApDY,QAAQ,EAoDN,MAAM,CAAC,QAAQ,CAAG;eACxB,CACX;aACF;;AAED,oBAAQ,GAAG,gBA/DK,OAAO,EA+DJ;kBAAE,MAAM,SAAN,MAAM;kBAAE,GAAG,SAAH,GAAG;kBAAE,KAAK,SAAL,KAAK;qBAAO,EAAC,MAAM,EAAN,MAAM,EAAE,GAAG,EAAH,GAAG,EAAE,KAAK,EAAL,KAAK,EAAC;aAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;;6CAEvE,kBAhED,MAAM,EAgEE;0BAjER,QAAQ;gBAiEU,KAAK,EAAE,KAAK,AAAC;cAAC,8BAAC,QAAQ,OAAE;aAAW,EAAE,MAAM,CAAC;;;;;;;;GACtE","file":"index.js","sourcesContent":["Error.stackTraceLimit = Infinity\nimport 'babel-polyfill'\nimport 'source-map-support/register'\nimport fs from 'fs'\nimport path from 'path'\nimport React from 'react'\nimport {Provider, connect} from 'react-redux'\nimport {render} from 'react-blessed'\nimport createStore from './store/create'\nimport createScreen from './screen'\nimport config from './config'\nimport {\n Console, Sources, Controls, Cog, Settings, Tabs\n} from './containers'\nimport {\n startDebugging,\n receiveSource\n} from './actions'\n\nconst userSettings = path.join(__dirname, 'config', 'user-settings.json')\n\nconst defaultCfg = {tooltips: true, layout: 'normal'}\n\nconst userCfg = (fs.existsSync(userSettings))\n ? {...defaultCfg, ...require(userSettings)}\n : {...defaultCfg}\n\nuserCfg.layout = config.layouts[userCfg.layout]\n\nconst store = createStore({\n tab: 'sources',\n panel: 'editor',\n ...userCfg\n})\n\nconst {dispatch} = store\n\nexport default async (pid, {host: host = '127.0.0.1', port: port = 5858}) => {\n if (pid) {\n try {\n process.kill(pid, 'SIGUSR1')\n } catch (e) {\n console.log('Warning unable to locate supplied pid ', pid)\n }\n }\n\n let screen = createScreen(store)\n\n dispatch(receiveSource('Waiting for debug port ' + port))\n dispatch(startDebugging({host, port}))\n\n let Devtools = ({layout, tab, panel}) => {\n return (\n \n {\n // force tab rendering after layout change:\n // todo: find a more elegant fix\n }\n {layout.name === 'normal' && }\n {layout.name === 'minimal' && }\n {tab === 'sources' && }\n {tab === 'console' && }\n \n {panel === 'settings' && }\n \n \n )\n }\n\n Devtools = connect(({layout, tab, panel}) => ({layout, tab, panel}))(Devtools)\n\n return render(, screen)\n}\n"]} -------------------------------------------------------------------------------- /compiled/keys.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _actions = require('./actions'); 8 | 9 | // note: keys.js is for global keys only, component level keys should be declared 10 | // on a per component basis 11 | 12 | exports.default = function (store, screen) { 13 | var dispatch = store.dispatch; 14 | var getState = store.getState; 15 | 16 | screen.key(['q', 'C-c'], function (ch, key) { 17 | return process.exit(0); 18 | }); 19 | 20 | screen.key(['C-n'], function () { 21 | return dispatch((0, _actions.focusPanel)('navigator')); 22 | }); 23 | screen.key(['C-t'], function () { 24 | return dispatch((0, _actions.focusPanel)('editor')); 25 | }); 26 | screen.key(['C-s'], function () { 27 | return dispatch((0, _actions.focusPanel)('callstack')); 28 | }); 29 | screen.key(['C-p'], function () { 30 | return dispatch((0, _actions.focusPanel)('breakpoints')); 31 | }); 32 | screen.key(['C-o'], function () { 33 | return dispatch((0, _actions.focusPanel)('scope')); 34 | }); 35 | screen.key(['C-k'], function () { 36 | return dispatch((0, _actions.focusPanel)('console')); 37 | }); 38 | screen.key(['?'], function () { 39 | var _getState = getState(); 40 | 41 | var panel = _getState.panel; 42 | 43 | if (panel === 'settings') { 44 | return dispatch((0, _actions.focusPanel)('editor')); 45 | } 46 | dispatch((0, _actions.focusPanel)('settings')); 47 | }); 48 | 49 | screen.key(['F8', 'C-\\', 'c'], function () { 50 | var _getState2 = getState(); 51 | 52 | var paused = _getState2.paused; 53 | 54 | if (paused) { 55 | return dispatch((0, _actions.resume)()); 56 | } 57 | dispatch((0, _actions.pause)()); 58 | }); 59 | screen.key(['F10', 'C-\'', 'n'], function () { 60 | return dispatch((0, _actions.stepOver)()); 61 | }); 62 | screen.key(['F11', 'C-;', 'i'], function () { 63 | return dispatch((0, _actions.stepInto)()); 64 | }); 65 | screen.key(['S-F11', 'C-S-;', 'o'], function () { 66 | return dispatch((0, _actions.stepOut)()); 67 | }); 68 | 69 | screen.key(['tab'], function () { 70 | var _getState3 = getState(); 71 | 72 | var panel = _getState3.panel; 73 | var tab = _getState3.tab; 74 | var layout = _getState3.layout; 75 | 76 | if (panel === 'settings') return; 77 | var ordering = layout[tab].ordering; 78 | 79 | var ix = ordering.indexOf(panel) + 1; 80 | if (ix >= ordering.length) ix = 0; 81 | dispatch((0, _actions.focusPanel)(ordering[ix])); 82 | }); 83 | 84 | screen.key(['S-tab'], function () { 85 | var _getState4 = getState(); 86 | 87 | var panel = _getState4.panel; 88 | var tab = _getState4.tab; 89 | var layout = _getState4.layout; 90 | 91 | if (panel === 'settings') return; 92 | var ordering = layout[tab].ordering; 93 | 94 | var ix = ordering.indexOf(panel) - 1; 95 | if (ix < 0) ix = ordering.length - 1; 96 | dispatch((0, _actions.focusPanel)(ordering[ix])); 97 | }); 98 | }; 99 | //# sourceMappingURL=keys.js.map -------------------------------------------------------------------------------- /compiled/keys.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/keys.js"],"names":[],"mappings":"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","file":"keys.js","sourcesContent":["import {focusPanel, resume, pause, stepOver, stepInto, stepOut} from './actions'\n\n// note: keys.js is for global keys only, component level keys should be declared\n// on a per component basis\n\nexport default (store, screen) => {\n const {dispatch, getState} = store\n\n screen.key(['q', 'C-c'], function (ch, key) {\n return process.exit(0)\n })\n\n screen.key(['C-n'], () => dispatch(focusPanel('navigator')))\n screen.key(['C-t'], () => dispatch(focusPanel('editor')))\n screen.key(['C-s'], () => dispatch(focusPanel('callstack')))\n screen.key(['C-p'], () => dispatch(focusPanel('breakpoints')))\n screen.key(['C-o'], () => dispatch(focusPanel('scope')))\n screen.key(['C-k'], () => dispatch(focusPanel('console')))\n screen.key(['?'], () => {\n const {panel} = getState()\n if (panel === 'settings') {\n return dispatch(focusPanel('editor'))\n }\n dispatch(focusPanel('settings'))\n })\n\n screen.key(['F8', 'C-\\\\', 'c'], () => {\n const {paused} = getState()\n if (paused) {\n return dispatch(resume())\n }\n dispatch(pause())\n })\n screen.key(['F10', 'C-\\'', 'n'], () => dispatch(stepOver()))\n screen.key(['F11', 'C-;', 'i'], () => dispatch(stepInto()))\n screen.key(['S-F11', 'C-S-;', 'o'], () => dispatch(stepOut()))\n\n screen.key(['tab'], () => {\n const {panel, tab, layout} = getState()\n if (panel === 'settings') return\n const {ordering} = layout[tab]\n let ix = ordering.indexOf(panel) + 1\n if (ix >= ordering.length) ix = 0\n dispatch(focusPanel(ordering[ix]))\n })\n\n screen.key(['S-tab'], () => {\n const {panel, tab, layout} = getState()\n if (panel === 'settings') return\n const {ordering} = layout[tab]\n let ix = ordering.indexOf(panel) - 1\n if (ix < 0) ix = ordering.length - 1\n dispatch(focusPanel(ordering[ix]))\n })\n}\n"]} -------------------------------------------------------------------------------- /compiled/lib/jsonTree.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | 'use strict'; 4 | 5 | var _ = require('lodash'); 6 | var blessed = require('blessed'); 7 | 8 | module.exports = function (screen, options, obj, name) { 9 | var _obj = {}; 10 | var _list = blessed.list(options); 11 | var _index; 12 | 13 | var whitespace = function whitespace(depth) { 14 | var ws = ''; 15 | for (var i = 0; i < depth; ++i) { 16 | ws += ' '; 17 | } 18 | return ws; 19 | }; 20 | 21 | var setMeta = function setMeta(obj, depth) { 22 | _.each(_.keys(obj), function (key) { 23 | if (_.isObject(obj[key])) { 24 | setMeta(obj[key], depth + 1); 25 | obj[key].meta = { expanded: false, depth: depth }; 26 | } 27 | }); 28 | }; 29 | 30 | var clearIndex = function clearIndex(obj) { 31 | _.each(_.keys(obj), function (key) { 32 | if (_.isObject(obj[key])) { 33 | if (obj[key].meta) { 34 | obj[key].meta.index = null; 35 | } 36 | clearIndex(obj[key]); 37 | } 38 | }); 39 | }; 40 | 41 | var traverse = function traverse(obj, depth) { 42 | var items = []; 43 | var s; 44 | 45 | _.each(_.keys(obj), function (key) { 46 | if (_.isObject(obj[key])) { 47 | if (key !== 'meta') { 48 | if (obj[key].meta.expanded === true) { 49 | s = whitespace(depth) + key + ' [-]'; 50 | items.push(s); 51 | obj[key].meta.index = _index; 52 | _index++; 53 | items = _(items).concat(traverse(obj[key], depth + 1)).value(); 54 | } else { 55 | s = whitespace(depth) + key + ' [+]'; 56 | obj[key].meta.index = _index; 57 | items.push(s); 58 | _index++; 59 | } 60 | obj[key].meta.match = s; 61 | } 62 | } else { 63 | items.push(whitespace(depth) + key + ': ' + obj[key]); 64 | _index++; 65 | } 66 | }); 67 | return items; 68 | }; 69 | 70 | var doSelect = function doSelect(obj, index) { 71 | _.each(_.keys(obj), function (key) { 72 | if (_.isObject(obj[key])) { 73 | if (obj[key].meta && obj[key].meta.index && obj[key].meta.index === index) { 74 | obj[key].meta.expanded = !obj[key].meta.expanded; 75 | } else { 76 | doSelect(obj[key], index); 77 | } 78 | } 79 | }); 80 | }; 81 | 82 | var render = function render() { 83 | clearIndex(_obj); 84 | _index = 0; 85 | _list.setItems(traverse(_obj, 0)); 86 | }; 87 | 88 | var init = function init() { 89 | _obj[name] = obj; 90 | setMeta(_obj, 1); 91 | _obj.meta = { expanded: true, depth: 0 }; 92 | _obj[name].meta.expanded = true; 93 | render(); 94 | _list.focus(); 95 | 96 | _list.on('select', function (line) { 97 | debugger; 98 | doSelect(_obj, _list.getItemIndex(line)); 99 | render(); 100 | _list.focus(); 101 | screen.render(); 102 | }); 103 | }; 104 | 105 | var get = function get() { 106 | return _list; 107 | }; 108 | 109 | init(); 110 | return { 111 | get: get 112 | }; 113 | }; 114 | //# sourceMappingURL=jsonTree.js.map -------------------------------------------------------------------------------- /compiled/lib/jsonTree.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/lib/jsonTree.js"],"names":[],"mappings":"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","file":"jsonTree.js","sourcesContent":["/* eslint-disable */\n\n'use strict';\n\nvar _ = require('lodash');\nvar blessed = require('blessed');\n\n\nmodule.exports = function(screen, options, obj, name) {\n var _obj = {};\n var _list = blessed.list(options);\n var _index;\n\n\n\n var whitespace = function(depth) {\n var ws = '';\n for (var i = 0; i < depth; ++i) {\n ws += ' ';\n }\n return ws;\n };\n\n\n\n var setMeta = function setMeta(obj, depth) {\n _.each(_.keys(obj), function(key) {\n if (_.isObject(obj[key])) {\n setMeta(obj[key], depth + 1);\n obj[key].meta = {expanded: false, depth: depth};\n }\n });\n };\n\n\n\n var clearIndex = function clearIndex(obj) {\n _.each(_.keys(obj), function(key) {\n if (_.isObject(obj[key])) {\n if (obj[key].meta) {\n obj[key].meta.index = null;\n }\n clearIndex(obj[key]);\n }\n });\n };\n\n\n\n var traverse = function traverse(obj, depth) {\n var items = [];\n var s;\n\n _.each(_.keys(obj), function(key) {\n if (_.isObject(obj[key])) {\n if (key !== 'meta') {\n if (obj[key].meta.expanded === true) {\n s = whitespace(depth) + key + ' [-]';\n items.push(s);\n obj[key].meta.index = _index;\n _index++;\n items = _(items).concat(traverse(obj[key], depth + 1)).value();\n }\n else {\n s = whitespace(depth) + key + ' [+]';\n obj[key].meta.index = _index;\n items.push(s);\n _index++;\n }\n obj[key].meta.match = s;\n }\n }\n else {\n items.push(whitespace(depth) + key + ': ' + obj[key]);\n _index++;\n }\n });\n return items;\n };\n\n\n \n var doSelect = function doSelect(obj, index) {\n _.each(_.keys(obj), function(key) {\n if (_.isObject(obj[key])) {\n if (obj[key].meta && obj[key].meta.index && obj[key].meta.index === index) {\n obj[key].meta.expanded = !obj[key].meta.expanded;\n }\n else {\n doSelect(obj[key], index);\n }\n }\n });\n };\n\n\n\n var render = function render() {\n clearIndex(_obj);\n _index = 0;\n _list.setItems(traverse(_obj, 0));\n };\n\n\n\n var init = function init() {\n _obj[name] = obj;\n setMeta(_obj, 1);\n _obj.meta = {expanded: true, depth: 0};\n _obj[name].meta.expanded = true;\n render();\n _list.focus();\n\n _list.on('select', function(line) {\n debugger;\n doSelect(_obj, _list.getItemIndex(line));\n render();\n _list.focus();\n screen.render();\n });\n };\n\n\n\n var get = function get() {\n return _list;\n };\n\n\n\n init();\n return {\n get: get\n };\n};\n\n"]} -------------------------------------------------------------------------------- /compiled/screen.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _keys = require('./keys'); 8 | 9 | var _keys2 = _interopRequireDefault(_keys); 10 | 11 | var _blessed = require('blessed'); 12 | 13 | var _blessed2 = _interopRequireDefault(_blessed); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | exports.default = function (store) { 18 | var screen = _blessed2.default.screen({ 19 | autoPadding: true, 20 | smartCSR: true, 21 | title: 'Terminal Devtools', 22 | sendFocus: true, 23 | dockBorders: true, 24 | log: './log', 25 | // log: '/dev/ttys001', 26 | terminal: 'xterm-256color', 27 | ignoreLocked: ['C-c'] 28 | }); 29 | 30 | console.log = screen.log.bind(screen); 31 | console.error = screen.log.bind(screen, 'ERROR: '); 32 | 33 | (0, _keys2.default)(store, screen); 34 | 35 | return screen; 36 | }; 37 | //# sourceMappingURL=screen.js.map -------------------------------------------------------------------------------- /compiled/screen.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../src/screen.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;kBAGe,UAAA,KAAK,EAAI;AACtB,MAAM,MAAM,GAAG,kBAAQ,MAAM,CAAC;AAC5B,eAAW,EAAE,IAAI;AACjB,YAAQ,EAAE,IAAI;AACd,SAAK,EAAE,mBAAmB;AAC1B,aAAS,EAAE,IAAI;AACf,eAAW,EAAE,IAAI;AACjB,OAAG,EAAE,OAAO;;AAEZ,YAAQ,EAAE,gBAAgB;AAC1B,gBAAY,EAAE,CAAC,KAAK,CAAC;GACtB,CAAC,CAAA;;AAEF,SAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AACrC,SAAO,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;;AAElD,sBAAK,KAAK,EAAE,MAAM,CAAC,CAAA;;AAEnB,SAAO,MAAM,CAAA;CACd","file":"screen.js","sourcesContent":["import keys from './keys'\nimport blessed from 'blessed'\n\nexport default store => {\n const screen = blessed.screen({\n autoPadding: true,\n smartCSR: true,\n title: 'Terminal Devtools',\n sendFocus: true,\n dockBorders: true,\n log: './log',\n // log: '/dev/ttys001',\n terminal: 'xterm-256color',\n ignoreLocked: ['C-c']\n })\n\n console.log = screen.log.bind(screen)\n console.error = screen.log.bind(screen, 'ERROR: ')\n\n keys(store, screen)\n\n return screen\n}\n"]} -------------------------------------------------------------------------------- /compiled/store/create.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _persistanceMap; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _redux = require('redux'); 10 | 11 | var _path = require('path'); 12 | 13 | var _path2 = _interopRequireDefault(_path); 14 | 15 | var _reduxThunk = require('redux-thunk'); 16 | 17 | var _reduxThunk2 = _interopRequireDefault(_reduxThunk); 18 | 19 | var _reduxLogger = require('redux-logger'); 20 | 21 | var _reduxLogger2 = _interopRequireDefault(_reduxLogger); 22 | 23 | var _persistance = require('./persistance'); 24 | 25 | var _persistance2 = _interopRequireDefault(_persistance); 26 | 27 | var _reducers = require('../reducers'); 28 | 29 | var reducers = _interopRequireWildcard(_reducers); 30 | 31 | var _actions = require('../actions'); 32 | 33 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } 34 | 35 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 36 | 37 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 38 | /* eslint-disable */ 39 | 40 | /* eslint-enable */ 41 | 42 | var persist = (0, _persistance2.default)(_path2.default.join(__dirname, '..', 'config', 'user-settings.json')); 43 | 44 | var persistanceMap = (_persistanceMap = {}, _defineProperty(_persistanceMap, _actions.TOGGLE_TOOLTIPS, 'tooltips'), _defineProperty(_persistanceMap, _actions.SET_DIMENSIONS, { 45 | namespace: 'layout', 46 | transform: function transform(_ref) { 47 | var name = _ref.name; 48 | return name; 49 | } 50 | }), _persistanceMap); 51 | 52 | var createStoreWithMiddleware = (0, _redux.applyMiddleware)(_reduxThunk2.default, persist(persistanceMap) 53 | /* eslint-disable */ 54 | // , logger({ 55 | // logger: console, 56 | // // actionTransformer: action => { 57 | // // const {payload} = action 58 | // // if (Array.isArray(payload)) payload.forEach(o => { 59 | // // if (o.source) o.source = o.source.substr(0, 150) 60 | // // }) 61 | // // if (typeof payload === 'string') { 62 | // // action.payload = payload.substr(0, 150) 63 | // // } 64 | // // return action 65 | // // }, 66 | // // stateTransformer: state => { 67 | // // if (Array.isArray(state)) state.forEach(o => { 68 | // // if (o.source) o.source = o.source.substr(0, 150) + '...' 69 | // // }) 70 | // // return state 71 | // // }, 72 | // colors: { 73 | // title: false, 74 | // prevState: false, 75 | // action: false, 76 | // nextState: false, 77 | // error: false, 78 | // } 79 | // }) 80 | /* eslint-enable */ 81 | )(_redux.createStore); 82 | 83 | var reducer = (0, _redux.combineReducers)(reducers); 84 | 85 | exports.default = function (initialState) { 86 | return createStoreWithMiddleware(reducer, initialState); 87 | }; 88 | //# sourceMappingURL=create.js.map -------------------------------------------------------------------------------- /compiled/store/create.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/store/create.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWY,QAAQ;;;;;;;;;;;;;AAGpB,IAAM,OAAO,GAAG,2BAAY,eAAK,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAA;;AAEvF,IAAM,cAAc,oEAJZ,eAAe,EAKF,UAAU,6CALN,cAAc,EAMnB;AAChB,WAAS,EAAE,QAAQ;AACnB,WAAS,EAAE;QAAE,IAAI,QAAJ,IAAI;WAAM,IAAI;GAAA;CAC5B,mBACF,CAAA;;AAED,IAAM,yBAAyB,GAC7B,WAvBA,eAAe,wBAuBQ,OAAO,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAC,CA6B7C,QArDD,WAAW,CAqDG,CAAA;;AAEhB,IAAM,OAAO,GAAG,WArDd,eAAe,EAqDe,QAAQ,CAAC,CAAA;;kBAE1B,UAAA,YAAY;SACzB,yBAAyB,CAAC,OAAO,EAAE,YAAY,CAAC;CAAA","file":"create.js","sourcesContent":["import {\n createStore,\n applyMiddleware,\n combineReducers\n} from 'redux'\nimport path from 'path'\nimport thunk from 'redux-thunk'\n/* eslint-disable */\nimport logger from 'redux-logger'\n/* eslint-enable */\nimport persistance from './persistance'\nimport * as reducers from '../reducers'\nimport {TOGGLE_TOOLTIPS, SET_DIMENSIONS} from '../actions'\n\nconst persist = persistance(path.join(__dirname, '..', 'config', 'user-settings.json'))\n\nconst persistanceMap = {\n [TOGGLE_TOOLTIPS]: 'tooltips',\n [SET_DIMENSIONS]: {\n namespace: 'layout',\n transform: ({name}) => name\n }\n}\n\nconst createStoreWithMiddleware =\n applyMiddleware(thunk, persist(persistanceMap)\n /* eslint-disable */\n // , logger({\n // logger: console,\n // // actionTransformer: action => {\n // // const {payload} = action\n // // if (Array.isArray(payload)) payload.forEach(o => {\n // // if (o.source) o.source = o.source.substr(0, 150)\n // // })\n // // if (typeof payload === 'string') {\n // // action.payload = payload.substr(0, 150)\n // // }\n // // return action\n // // },\n // // stateTransformer: state => {\n // // if (Array.isArray(state)) state.forEach(o => {\n // // if (o.source) o.source = o.source.substr(0, 150) + '...'\n // // })\n // // return state\n // // },\n // colors: {\n // title: false,\n // prevState: false,\n // action: false,\n // nextState: false,\n // error: false,\n // }\n // })\n /* eslint-enable */\n )(createStore)\n\nconst reducer = combineReducers(reducers)\n\nexport default initialState =>\n createStoreWithMiddleware(reducer, initialState)\n"]} -------------------------------------------------------------------------------- /compiled/store/persistance.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | exports.default = persistance; 7 | 8 | var _fs = require('fs'); 9 | 10 | var _fs2 = _interopRequireDefault(_fs); 11 | 12 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 13 | 14 | function persistance(to) { 15 | var exists = _fs2.default.existsSync(to); 16 | if (!exists) { 17 | _fs2.default.writeFileSync(to, '{}'); 18 | } 19 | var data = undefined; 20 | 21 | try { 22 | data = !exists ? {} : JSON.parse(_fs2.default.readFileSync(to)); 23 | } catch (e) { 24 | data = {}; 25 | } 26 | 27 | return function (cfg) { 28 | var actionTypes = Object.keys(cfg); 29 | var namespaces = Object.values(cfg); 30 | 31 | return function (_ref) { 32 | var dispatch = _ref.dispatch; 33 | var getState = _ref.getState; 34 | return function (next) { 35 | return function (action) { 36 | var result = next(action); 37 | var index = actionTypes.indexOf(action.type); 38 | 39 | if (~index) { 40 | var state = getState(); 41 | var ns = namespaces[index]; 42 | 43 | if (Object(ns) === ns) { 44 | data[ns.namespace] = ns.transform(state[ns.namespace]); 45 | return save(data, to); 46 | } 47 | 48 | data[ns] = state[ns]; 49 | save(data, to); 50 | } 51 | 52 | return result; 53 | }; 54 | }; 55 | }; 56 | }; 57 | } 58 | 59 | function save(data, to) { 60 | // if necessary, make this function batch and throttle 61 | return _fs2.default.writeFileSync(to, JSON.stringify(data)); 62 | } 63 | //# sourceMappingURL=persistance.js.map -------------------------------------------------------------------------------- /compiled/store/persistance.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/store/persistance.js"],"names":[],"mappings":";;;;;kBAEwB,WAAW;;;;;;;;AAApB,SAAS,WAAW,CAAE,EAAE,EAAE;AACvC,MAAM,MAAM,GAAG,aAAG,UAAU,CAAC,EAAE,CAAC,CAAA;AAChC,MAAI,CAAC,MAAM,EAAE;AAAE,iBAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;GAAE;AAC3C,MAAI,IAAI,YAAA,CAAA;;AAER,MAAI;AACF,QAAI,GAAG,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAA;GACtD,CAAC,OAAO,CAAC,EAAE;AACV,QAAI,GAAG,EAAE,CAAA;GACV;;AAED,SAAO,UAAA,GAAG,EAAI;AACZ,QAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACpC,QAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;;AAErC,WAAO;UAAE,QAAQ,QAAR,QAAQ;UAAE,QAAQ,QAAR,QAAQ;aAAM,UAAA,IAAI;eAAI,UAAA,MAAM,EAAI;AACjD,cAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;AAC3B,cAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;;AAE9C,cAAI,CAAC,KAAK,EAAE;AACV,gBAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;AACxB,gBAAI,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;;AAE1B,gBAAI,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;AACrB,kBAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;AACtD,qBAAO,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;aACtB;;AAED,gBAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA;AACpB,gBAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;WACf;;AAED,iBAAO,MAAM,CAAA;SACd;OAAA;KAAA,CAAA;GACF,CAAA;CACF;;AAED,SAAS,IAAI,CAAE,IAAI,EAAE,EAAE,EAAE;;AAEvB,SAAO,aAAG,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;CAClD","file":"persistance.js","sourcesContent":["import fs from 'fs'\n\nexport default function persistance (to) {\n const exists = fs.existsSync(to)\n if (!exists) { fs.writeFileSync(to, '{}') }\n let data\n\n try {\n data = !exists ? {} : JSON.parse(fs.readFileSync(to))\n } catch (e) {\n data = {}\n }\n\n return cfg => {\n const actionTypes = Object.keys(cfg)\n const namespaces = Object.values(cfg)\n\n return ({dispatch, getState}) => next => action => {\n const result = next(action)\n const index = actionTypes.indexOf(action.type)\n\n if (~index) {\n const state = getState()\n let ns = namespaces[index]\n\n if (Object(ns) === ns) {\n data[ns.namespace] = ns.transform(state[ns.namespace])\n return save(data, to)\n }\n\n data[ns] = state[ns]\n save(data, to)\n }\n\n return result\n }\n }\n}\n\nfunction save (data, to) {\n // if necessary, make this function batch and throttle\n return fs.writeFileSync(to, JSON.stringify(data))\n}\n"]} -------------------------------------------------------------------------------- /compiled/style/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | var panel = exports.panel = { 7 | border: { 8 | type: 'line' 9 | }, 10 | style: { 11 | border: { 12 | fg: 'blue' 13 | } 14 | } 15 | }; 16 | 17 | var selected = exports.selected = { 18 | border: { 19 | type: 'line' 20 | }, 21 | style: { 22 | border: { 23 | fg: 'yellow' 24 | } 25 | } 26 | }; 27 | 28 | var list = exports.list = { 29 | style: { 30 | selected: { 31 | bold: true 32 | }, 33 | item: { 34 | bold: false 35 | } 36 | } 37 | }; 38 | //# sourceMappingURL=index.js.map -------------------------------------------------------------------------------- /compiled/style/index.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["../../src/style/index.js"],"names":[],"mappings":";;;;;AAAO,IAAM,KAAK,WAAL,KAAK,GAAG;AACnB,QAAM,EAAE;AACN,QAAI,EAAE,MAAM;GACb;AACD,OAAK,EAAE;AACL,UAAM,EAAE;AACN,QAAE,EAAE,MAAM;KACX;GACF;CACF,CAAA;;AAEM,IAAM,QAAQ,WAAR,QAAQ,GAAG;AACtB,QAAM,EAAE;AACN,QAAI,EAAE,MAAM;GACb;AACD,OAAK,EAAE;AACL,UAAM,EAAE;AACN,QAAE,EAAE,QAAQ;KACb;GACF;CACF,CAAA;;AAEM,IAAM,IAAI,WAAJ,IAAI,GAAG;AAClB,OAAK,EAAE;AACL,YAAQ,EAAE;AACR,UAAI,EAAE,IAAI;KACX;AACD,QAAI,EAAE;AACJ,UAAI,EAAE,KAAK;KACZ;GACF;CACF,CAAA","file":"index.js","sourcesContent":["export const panel = {\n border: {\n type: 'line'\n },\n style: {\n border: {\n fg: 'blue'\n }\n }\n}\n\nexport const selected = {\n border: {\n type: 'line'\n },\n style: {\n border: {\n fg: 'yellow'\n }\n }\n}\n\nexport const list = {\n style: {\n selected: {\n bold: true\n },\n item: {\n bold: false\n }\n }\n}\n"]} -------------------------------------------------------------------------------- /demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apparatus/terminal-devtools/5f094588a803dcf0b6698d04d931ee6cdff5e182/demo.gif -------------------------------------------------------------------------------- /devnotes.md: -------------------------------------------------------------------------------- 1 | ## Building 2 | 3 | ### Single build 4 | 5 | ```sh 6 | npm run build 7 | ``` 8 | 9 | ### Continuous build 10 | 11 | ```sh 12 | npm run watch 13 | ``` 14 | 15 | This watches the files and rebuilds, but we still have to restart the tui. 16 | 17 | 18 | ## Logging 19 | 20 | console.log and console.error calls go to a log file 21 | 22 | In src/index.js when we instantiate the screen, 23 | 24 | ```js 25 | const screen = blessed.screen({ 26 | autoPadding: true, 27 | smartCSR: true, 28 | title: 'Terminal Devtools', 29 | sendFocus: true, 30 | dockBorders: true, 31 | autoPadding: true, 32 | log: './log', //'/dev/ttys004', 33 | ignoreLocked: ['C-c'] 34 | }) 35 | 36 | console.log = screen.log.bind(screen) 37 | console.error = screen.log.bind(screen, 'ERROR: ') 38 | ``` 39 | 40 | Notice the comment on the log property, running 41 | `tty` in a terminal will give you it's tty device. 42 | You can open a new terminal and set `log` to its 43 | tty file to output logs directly to a secondary terminal. 44 | 45 | ### State logging 46 | 47 | Logger middleware in `store/create.js` is commented out, this 48 | will output every action and corresponding state change to the 49 | log. It's commented out because it's a firehose. 50 | 51 | ### Protocol Logging 52 | 53 | Use `--trace-debug-json` to see debugger API request/response JSON. 54 | 55 | ```sh 56 | $ node --debug-brk --trace-debug-json somefile.js 57 | ``` 58 | 59 | ### Reverse engineering Node Inspector 60 | 61 | We can use protocol logging whilst interacting with node inspector to 62 | see how node inspector performs certain functions - this can be useful 63 | to supplement the protocol docs and bring clarity to implementation details. 64 | 65 | First run node-inspector as a service (important to do this *first*) 66 | 67 | ```sh 68 | $ node-inspector 69 | ``` 70 | 71 | In another terminal, run node on a file along with debug-brk and trace-debug-json 72 | 73 | ```sh 74 | $ node --debug-brk --trace-debug-json somefile.js 75 | ``` 76 | 77 | Now open the node inspector url http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858 78 | and start using features. 79 | 80 | Easy way to format the debugger request/response JSON output, copy it then: 81 | 82 | ```sh 83 | $ npm i -g JSONStream 84 | $ pbpaste | JSONStream | pbcopy 85 | ``` 86 | 87 | ## Design principles 88 | 89 | * **Every** component is pure - no components handle state, ever (e.g. no `setState`) 90 | * Each component is a function not a class, life cycle methods can added using [`react-functional`](http://npmjs.com/react-functional) if needed 91 | * Redux is responsible for a central store 92 | * container components hook up redux state to child dumb components 93 | * container components currently map to tab screens (e.g. the `Sources` container) is composed of all the panels in the sources tab, and likewise passes down relevant state and action methods to the components 94 | * dumb components (e.g. non-containers) should not know anything about the app, they take props output JSX for rendering. 95 | * If it can't be done declaratively, don't fall back to using `refs` - instead patch and PR against react-blessed so that it is declarative (e.g. , , , , to begin debugging this process and trigger the debugger breakpoints 4 | 5 | console.log(process.pid) 6 | 7 | setInterval(function () { 8 | console.log('a') 9 | debugger 10 | console.log('b') 11 | debugger 12 | console.log('c') 13 | }, 100) 14 | -------------------------------------------------------------------------------- /examples/empty-fn.js: -------------------------------------------------------------------------------- 1 | // run with node --debug-brk 2 | function fn() {} 3 | 4 | fn() -------------------------------------------------------------------------------- /examples/eval.js: -------------------------------------------------------------------------------- 1 | var a = 1 2 | debugger 3 | eval('a = 2') 4 | debugger 5 | console.log(a) -------------------------------------------------------------------------------- /examples/getters-and-setters.js: -------------------------------------------------------------------------------- 1 | // run with node --debug-brk 2 | 3 | var obj = Object.create(null, { 4 | prop: { 5 | get: function () { 6 | return ':)' 7 | }, 8 | set: function (v) { 9 | this._val = v 10 | } 11 | } 12 | }) 13 | 14 | console.log(obj) 15 | -------------------------------------------------------------------------------- /examples/long-file.js: -------------------------------------------------------------------------------- 1 | process.stdin.resume() 2 | //the only point of this file is to demonstrate scrolling in the text area 3 | 4 | 5 | // 24 6 | // Mine eye hath played the painter and hath stelled, 7 | // Thy beauty's form in table of my heart, 8 | // My body is the frame wherein 'tis held, 9 | // And perspective it is best painter's art. 10 | // For through the painter must you see his skill, 11 | // To find where your true image pictured lies, 12 | // Which in my bosom's shop is hanging still, 13 | // That hath his windows glazed with thine eyes: 14 | // Now see what good turns eyes for eyes have done, 15 | // Mine eyes have drawn thy shape, and thine for me 16 | // Are windows to my breast, where-through the sun 17 | // Delights to peep, to gaze therein on thee; 18 | // Yet eyes this cunning want to grace their art, 19 | // They draw but what they see, know not the heart. 20 | 21 | 22 | // 25 23 | // Let those who are in favour with their stars, 24 | // Of public honour and proud titles boast, 25 | // Whilst I whom fortune of such triumph bars 26 | // Unlooked for joy in that I honour most; 27 | // Great princes' favourites their fair leaves spread, 28 | // But as the marigold at the sun's eye, 29 | // And in themselves their pride lies buried, 30 | // For at a frown they in their glory die. 31 | // The painful warrior famoused for fight, 32 | // After a thousand victories once foiled, 33 | // Is from the book of honour razed quite, 34 | // And all the rest forgot for which he toiled: 35 | // Then happy I that love and am beloved 36 | // Where I may not remove nor be removed. 37 | 38 | 39 | // 26 40 | // Lord of my love, to whom in vassalage 41 | // Thy merit hath my duty strongly knit; 42 | // To thee I send this written embassage 43 | // To witness duty, not to show my wit. 44 | // Duty so great, which wit so poor as mine 45 | // May make seem bare, in wanting words to show it; 46 | // But that I hope some good conceit of thine 47 | // In thy soul's thought (all naked) will bestow it: 48 | // Till whatsoever star that guides my moving, 49 | // Points on me graciously with fair aspect, 50 | // And puts apparel on my tattered loving, 51 | // To show me worthy of thy sweet respect, 52 | // Then may I dare to boast how I do love thee, 53 | // Till then, not show my head where thou mayst prove me. 54 | 55 | 56 | // 27 57 | // Weary with toil, I haste me to my bed, 58 | // The dear respose for limbs with travel tired, 59 | // But then begins a journey in my head 60 | // To work my mind, when body's work's expired. 61 | // For then my thoughts (from far where I abide) 62 | // Intend a zealous pilgrimage to thee, 63 | // And keep my drooping eyelids open wide, 64 | // Looking on darkness which the blind do see. 65 | // Save that my soul's imaginary sight 66 | // Presents thy shadow to my sightless view, 67 | // Which like a jewel (hung in ghastly night) 68 | // Makes black night beauteous, and her old face new. 69 | // Lo thus by day my limbs, by night my mind, 70 | // For thee, and for my self, no quiet find. 71 | 72 | 73 | // 28 74 | // How can I then return in happy plight 75 | // That am debarred the benefit of rest? 76 | // When day's oppression is not eased by night, 77 | // But day by night and night by day oppressed. 78 | // And each (though enemies to either's reign) 79 | // Do in consent shake hands to torture me, 80 | // The one by toil, the other to complain 81 | // How far I toil, still farther off from thee. 82 | // I tell the day to please him thou art bright, 83 | // And dost him grace when clouds do blot the heaven: 84 | // So flatter I the swart-complexioned night, 85 | // When sparkling stars twire not thou gild'st the even. 86 | // But day doth daily draw my sorrows longer, 87 | // And night doth nightly make grief's length seem stronger 88 | -------------------------------------------------------------------------------- /examples/pause.js: -------------------------------------------------------------------------------- 1 | // run node --debug ./pause.js 2 | // then try pausing (c key) 3 | setInterval(function () { 4 | console.log('a') 5 | console.log('b') 6 | console.log('c') 7 | }, 1000) 8 | -------------------------------------------------------------------------------- /examples/set-timeout.js: -------------------------------------------------------------------------------- 1 | //handy for testing async breakpoints 2 | //run with debug-brk 3 | 4 | setTimeout(function () { 5 | 6 | console.log('a') 7 | console.log('b') 8 | 9 | setTimeout(function () { 10 | console.log('c') 11 | console.log('d') 12 | }, 1000) 13 | 14 | }, 1000) 15 | -------------------------------------------------------------------------------- /examples/sibling-files-in-nav.js: -------------------------------------------------------------------------------- 1 | //this file is for checking that the nav tree renders correctly, 2 | //requiring a sibling file and making sure they both appear in the tree 3 | 4 | require('./long-file') 5 | 6 | process.stdin.resume() 7 | -------------------------------------------------------------------------------- /examples/simple.js: -------------------------------------------------------------------------------- 1 | // run with node --debug-brk to begin exploring the devtools 2 | process.stdin.resume() 3 | -------------------------------------------------------------------------------- /examples/stdout-stderr.js: -------------------------------------------------------------------------------- 1 | //run with --debug-brk then press c (continue) to see the stdout and stderr 2 | //logs within the console window 3 | 4 | 5 | console.log('stdout :)') 6 | console.error('stderr :D') 7 | console.info('will be stdout') 8 | -------------------------------------------------------------------------------- /examples/this-object.js: -------------------------------------------------------------------------------- 1 | // run with node --debug-brk 2 | function Ctor() { 3 | this.foo = 1 4 | } 5 | 6 | new Ctor -------------------------------------------------------------------------------- /examples/with-scope.js: -------------------------------------------------------------------------------- 1 | // run with node --debug-brk 2 | var o = {a: 1} 3 | 4 | with (o) { 5 | debugger 6 | console.log('a', a) 7 | } 8 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./compiled').default 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "terminal-devtools", 3 | "version": "1.0.5-rc1", 4 | "bin": { 5 | "devtools": "./cmd.js" 6 | }, 7 | "main": "index.js", 8 | "scripts": { 9 | "build": "babel src --out-dir compiled/ --source-maps", 10 | "lint": "spacey-standard", 11 | "watch": "npm-watch" 12 | }, 13 | "spacey-standard": { 14 | "parser": "babel-eslint", 15 | "ignore": [ 16 | "compiled/**", 17 | "examples/**" 18 | ] 19 | }, 20 | "files": [ 21 | "compiled", 22 | "cmd.js", 23 | "index.js" 24 | ], 25 | "watch": { 26 | "build": "src/**/*.js" 27 | }, 28 | "author": "David Mark Clements", 29 | "license": "MIT", 30 | "dependencies": { 31 | "babel-polyfill": "^6.3.14", 32 | "blessed": "^0.1.81", 33 | "minimist": "^1.2.0", 34 | "react": "^0.14.3", 35 | "react-blessed": "davidmarkclements/react-blessed#patches", 36 | "react-functional": "^1.2.0", 37 | "react-redux": "^4.0.1", 38 | "redux": "^3.0.5", 39 | "redux-logger": "^2.3.1", 40 | "redux-thunk": "^1.0.2", 41 | "source-map-support": "^0.4.0", 42 | "yadc": "0.0.1" 43 | }, 44 | "description": "Terminal based Devtools for Node", 45 | "devDependencies": { 46 | "babel": "^6.3.13", 47 | "babel-cli": "^6.3.17", 48 | "babel-preset-es2015": "^6.3.13", 49 | "babel-preset-react": "^6.3.13", 50 | "babel-preset-stage-0": "^6.3.13", 51 | "babel-eslint": "^5.0.0-beta6", 52 | "npm-watch": "0.0.1", 53 | "spacey-standard": "^1.0.1" 54 | }, 55 | "repository": { 56 | "type": "git", 57 | "url": "git+https://github.com/apparatus/terminal-devtools.git" 58 | }, 59 | "bugs": { 60 | "url": "https://github.com/apparatus/terminal-devtools/issues" 61 | }, 62 | "homepage": "https://github.com/apparatus/terminal-devtools#readme" 63 | } 64 | -------------------------------------------------------------------------------- /src/components/BreakPoints/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import * as style from '../../style' 3 | 4 | /* eslint-disable react/no-unknown-property */ 5 | 6 | const BreakPoints = ({items, top, left, width, height, focused, tooltips, actions: {focusPanel}}) => ( 7 | focused || focusPanel('breakpoints')} 18 | hoverText={tooltips && 'ctrl+p'} 19 | /> 20 | ) 21 | 22 | export default BreakPoints 23 | -------------------------------------------------------------------------------- /src/components/CallStack/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import * as style from '../../style' 3 | 4 | /* eslint-disable react/no-unknown-property */ 5 | 6 | const CallStack = ({items, top, left, width, height, focused, tooltips, actions: {selectFrame, focusPanel}}) => ( 7 | { 20 | const {content} = item 21 | const index = item.parent.items 22 | .map(({content}) => content) 23 | .indexOf(content) 24 | 25 | selectFrame(index) 26 | }} 27 | onFocus={() => focused || focusPanel('callstack')} 28 | hoverText={tooltips && 'ctrl+s'} 29 | /> 30 | ) 31 | 32 | export default CallStack 33 | -------------------------------------------------------------------------------- /src/components/Cog/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | /* eslint-disable react/no-unknown-property */ 4 | 5 | const Cog = ({active, file, top, left, width, height, align, padding, onClick}) => ( 6 | 18 | ) 19 | 20 | export default Cog 21 | -------------------------------------------------------------------------------- /src/components/Console/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import functional from 'react-functional' 3 | import * as style from '../../style' 4 | 5 | /* eslint-disable react/no-unknown-property */ 6 | 7 | const Console = ({top, left, width, height, focused, independent, tooltips, output, actions}, cmp) => { 8 | return ( 9 | 18 |