diff --git a/dist/eruda.js b/dist/eruda.js index c2f6b1b..157c9f1 100644 --- a/dist/eruda.js +++ b/dist/eruda.js @@ -71,9 +71,9 @@ var eruda = var _Elements2 = _interopRequireDefault(_Elements); - var _Sinppets = __webpack_require__(53); + var _Snippets = __webpack_require__(76); - var _Sinppets2 = _interopRequireDefault(_Sinppets); + var _Snippets2 = _interopRequireDefault(_Snippets); var _Resources = __webpack_require__(54); @@ -114,7 +114,7 @@ var eruda = return devTools.toggle(); }); - devTools.add(new _Console2.default()).add(new _Network2.default()).add(new _Elements2.default()).add(new _Sinppets2.default()).add(new _Resources2.default()).add(new _Info2.default()).add(new _Features2.default()).add(new _Settings2.default()).showTool('console').show(); + devTools.add(new _Console2.default()).add(new _Network2.default()).add(new _Elements2.default()).add(new _Snippets2.default()).add(new _Resources2.default()).add(new _Info2.default()).add(new _Features2.default()).add(new _Settings2.default()).showTool('elements').show(); } function appendContainer() { @@ -6086,6 +6086,10 @@ var eruda = var _Tool3 = _interopRequireDefault(_Tool2); + var _util = __webpack_require__(2); + + var _util2 = _interopRequireDefault(_util); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -6094,6 +6098,8 @@ var eruda = function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + __webpack_require__(72); + var Network = function (_Tool) { _inherits(Network, _Tool); @@ -6103,13 +6109,102 @@ var eruda = var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Network).call(this)); _this.name = 'network'; + _this._performanceTimingData = []; + + _this._tpl = __webpack_require__(74); return _this; } _createClass(Network, [{ key: 'init', value: function init($el) { + var _this2 = this; + _get(Object.getPrototypeOf(Network.prototype), 'init', this).call(this, $el); + + window.addEventListener('load', function () { + // SetTimeout is required to make sure timing data is initialized. + setTimeout(function () { + _this2._getPerformanceTimingData(); + }, 3000); + }, false); + } + }, { + key: '_getPerformanceTimingData', + value: function _getPerformanceTimingData() { + var performance = window.webkitPerformance || window.performance, + timing = performance.timing; + + var data = []; + + var navigationStart = timing.navigationStart; + var unloadEventStart = timing.unloadEventStart; + var unloadEventEnd = timing.unloadEventEnd; + var redirectStart = timing.redirectStart; + var redirectEnd = timing.redirectEnd; + var fetchStart = timing.fetchStart; + var domainLookupStart = timing.domainLookupStart; + var domainLookupEnd = timing.domainLookupEnd; + var connectStart = timing.connectStart; + var connectEnd = timing.connectEnd; + var secureConnectionStart = timing.secureConnectionStart; + var requestStart = timing.requestStart; + var responseStart = timing.responseStart; + var responseEnd = timing.responseEnd; + var domLoading = timing.domLoading; + var domInteractive = timing.domInteractive; + var domContentLoadedEventStart = timing.domContentLoadedEventStart; + var domContentLoadedEventEnd = timing.domContentLoadedEventEnd; + var domComplete = timing.domComplete; + var loadEventStart = timing.loadEventStart; + var loadEventEnd = timing.loadEventEnd; + + + var start = navigationStart, + end = loadEventEnd, + total = end - start; + + function getData(name, startTime, endTime) { + var duration = endTime - startTime; + + return { + name: name, + start: (startTime - start) / total * 100, + duration: duration, + len: duration / total * 100 + }; + } + + data.push(getData('Total', navigationStart, loadEventEnd)); + data.push(getData('Network/Server', navigationStart, responseStart)); + data.push(getData('App cache', fetchStart, domainLookupStart)); + data.push(getData('DNS', domainLookupStart, domainLookupEnd)); + data.push(getData('TCP', connectStart, connectEnd)); + data.push(getData('Time to First Byte', requestStart, responseStart)); + data.push(getData('Response', responseStart, responseEnd)); + data.push(getData('Unload', unloadEventStart, unloadEventEnd)); + data.push(getData('DOM Processing', domLoading, domComplete)); + data.push(getData('DOM Construction', domLoading, domInteractive)); + data.push(getData('DOM Content Loaded Event', domContentLoadedEventStart, domContentLoadedEventEnd)); + data.push(getData('Load Event', loadEventStart, loadEventEnd)); + + this._performanceTimingData = data; + + var performanceTiming = {}; + ['navigationStart', 'unloadEventStart', 'unloadEventEnd', 'redirectStart', 'redirectEnd', 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart', 'requestStart', 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart', 'loadEventEnd'].forEach(function (val) { + performanceTiming[val] = timing[val] === 0 ? 0 : timing[val] - start; + }); + this._performanceTiming = performanceTiming; + + this._render(); + } + }, { + key: '_render', + value: function _render() { + this._$el.html(this._tpl({ + data: this._performanceTimingData, + timing: this._performanceTiming + })); } }]); @@ -6136,6 +6231,10 @@ var eruda = var _Tool3 = _interopRequireDefault(_Tool2); + var _util = __webpack_require__(2); + + var _util2 = _interopRequireDefault(_util); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } @@ -6144,6 +6243,8 @@ var eruda = function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + __webpack_require__(80); + var Elements = function (_Tool) { _inherits(Elements, _Tool); @@ -6153,6 +6254,7 @@ var eruda = var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Elements).call(this)); _this.name = 'elements'; + _this._tpl = __webpack_require__(82); return _this; } @@ -6160,6 +6262,26 @@ var eruda = key: 'init', value: function init($el) { _get(Object.getPrototypeOf(Elements.prototype), 'init', this).call(this, $el); + + this._curEl = document.getElementsByTagName('html')[0]; + + this._render(); + } + }, { + key: '_getData', + value: function _getData() { + var el = this._curEl; + + console.dir(el); + + return { + classList: el.classList + }; + } + }, { + key: '_render', + value: function _render() { + this._$el.html(this._tpl(this._getData())); } }]); @@ -6169,56 +6291,7 @@ var eruda = exports.default = Elements; /***/ }, -/* 53 */ -/***/ function(module, exports, __webpack_require__) { - - 'use strict'; - - Object.defineProperty(exports, "__esModule", { - value: true - }); - - var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - - var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; - - var _Tool2 = __webpack_require__(47); - - var _Tool3 = _interopRequireDefault(_Tool2); - - function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - - function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - - function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - - function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - - var Snippets = function (_Tool) { - _inherits(Snippets, _Tool); - - function Snippets() { - _classCallCheck(this, Snippets); - - var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Snippets).call(this)); - - _this.name = 'Snippets'; - return _this; - } - - _createClass(Snippets, [{ - key: 'init', - value: function init($el) { - _get(Object.getPrototypeOf(Snippets.prototype), 'init', this).call(this, $el); - } - }]); - - return Snippets; - }(_Tool3.default); - - exports.default = Snippets; - -/***/ }, +/* 53 */, /* 54 */ /***/ function(module, exports, __webpack_require__) { @@ -6511,7 +6584,7 @@ var eruda = // module - exports.push([module.id, ".eruda-dev-tools .eruda-tools .eruda-resources {\n padding: 10px;\n font-size: 14px;\n overflow-y: auto; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-section {\n margin-bottom: 10px; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title {\n padding: 10px;\n color: #fff;\n background: #76a2ee;\n font-size: 14px; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title.eruda-ok {\n background: #8de191; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title.eruda-warn {\n background: #fff5c2; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title.eruda-danger {\n background: #eda29b; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title .eruda-btn {\n float: right;\n display: inline-block;\n background: #fff;\n color: #b4b4b4;\n text-align: center;\n width: 18px;\n height: 18px;\n line-height: 18px;\n border-radius: 50%; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-link-list li {\n padding: 10px;\n background: #fff;\n word-break: break-all; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-link-list li a {\n color: #76a2ee !important; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list {\n background: #fff; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list li {\n width: 25%;\n float: left;\n overflow-y: hidden; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list li img {\n width: 100%; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list li.eruda-empty {\n padding: 10px;\n width: 100%; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list::after {\n display: block;\n content: '';\n clear: both; }\n .eruda-dev-tools .eruda-tools .eruda-resources table {\n border-collapse: collapse;\n width: 100%;\n background: #fff; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td {\n padding: 10px;\n word-break: break-all; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td .eruda-delete {\n color: #fff;\n width: 20px;\n height: 20px;\n display: inline-block;\n text-align: center;\n border-radius: 50%;\n background: #f73c37;\n line-height: 20px; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td.eruda-key {\n white-space: nowrap; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td.eruda-control {\n width: 40px; }\n", ""]); + exports.push([module.id, ".eruda-dev-tools .eruda-tools .eruda-resources {\n padding: 10px;\n font-size: 14px;\n overflow-y: auto; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-section {\n margin-bottom: 10px;\n border-radius: 4px;\n overflow: hidden; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title {\n padding: 10px;\n color: #fff;\n background: #76a2ee;\n font-size: 14px; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title.eruda-ok {\n background: #8de191; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title.eruda-warn {\n background: #fff5c2; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title.eruda-danger {\n background: #eda29b; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-title .eruda-btn {\n float: right;\n display: inline-block;\n background: #fff;\n color: #b4b4b4;\n text-align: center;\n width: 18px;\n height: 18px;\n line-height: 18px;\n border-radius: 50%; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-link-list li {\n padding: 10px;\n background: #fff;\n word-break: break-all; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-link-list li a {\n color: #76a2ee !important; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list {\n background: #fff;\n padding: 10px !important; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list li {\n width: 25%;\n float: left;\n overflow-y: hidden; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list li img {\n width: 100%; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list li.eruda-empty {\n padding: 10px;\n width: 100%; }\n .eruda-dev-tools .eruda-tools .eruda-resources .eruda-image-list::after {\n display: block;\n content: '';\n clear: both; }\n .eruda-dev-tools .eruda-tools .eruda-resources table {\n border-collapse: collapse;\n width: 100%;\n background: #fff; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td {\n padding: 10px;\n word-break: break-all; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td .eruda-delete {\n color: #fff;\n width: 20px;\n height: 20px;\n display: inline-block;\n text-align: center;\n border-radius: 50%;\n background: #f73c37;\n line-height: 20px; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td.eruda-key {\n white-space: nowrap; }\n .eruda-dev-tools .eruda-tools .eruda-resources table td.eruda-control {\n width: 40px; }\n", ""]); // exports @@ -9772,7 +9845,7 @@ var eruda = // module - exports.push([module.id, ".eruda-dev-tools .eruda-tools .eruda-features {\n overflow-y: auto; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li {\n width: 50%;\n float: left;\n padding: 10px; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li .eruda-inner-wrapper {\n font-size: 14px;\n color: #fff;\n display: block;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n background: #eda29b; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li .eruda-inner-wrapper a {\n text-decoration: underline; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li .eruda-inner-wrapper.eruda-ok {\n background: #fff;\n color: #b4b4b4; }\n .eruda-dev-tools .eruda-tools .eruda-features ul::after {\n display: block;\n content: '';\n clear: both; }\n .eruda-dev-tools .eruda-tools .eruda-features .eruda-html5test {\n color: #fff;\n background: #76a2ee;\n display: block;\n padding: 10px;\n text-decoration: none;\n text-align: center;\n margin-top: 10px; }\n", ""]); + exports.push([module.id, ".eruda-dev-tools .eruda-tools .eruda-features {\n overflow-y: auto; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li {\n width: 50%;\n float: left;\n padding: 10px; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li .eruda-inner-wrapper {\n font-size: 14px;\n text-decoration: underline;\n color: #fff;\n display: block;\n padding: 10px;\n border-radius: 4px;\n text-align: center;\n background: #eda29b; }\n .eruda-dev-tools .eruda-tools .eruda-features ul li .eruda-inner-wrapper.eruda-ok {\n background: #fff;\n color: #b4b4b4; }\n .eruda-dev-tools .eruda-tools .eruda-features ul::after {\n display: block;\n content: '';\n clear: both; }\n .eruda-dev-tools .eruda-tools .eruda-features .eruda-html5test {\n color: #fff;\n background: #76a2ee;\n display: block;\n padding: 10px;\n text-decoration: none;\n text-align: center;\n margin-top: 10px; }\n", ""]); // exports @@ -9903,6 +9976,8 @@ var eruda = function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + __webpack_require__(83); + var Settings = function (_Tool) { _inherits(Settings, _Tool); @@ -9912,6 +9987,8 @@ var eruda = var _this = _possibleConstructorReturn(this, Object.getPrototypeOf(Settings).call(this)); _this.name = 'settings'; + + _this._tpl = __webpack_require__(85); return _this; } @@ -9967,5 +10044,299 @@ var eruda = // exports +/***/ }, +/* 72 */ +/***/ function(module, exports, __webpack_require__) { + + // style-loader: Adds some css to the DOM by adding a