├── .gitignore ├── LICENSE ├── README.md ├── build ├── build.js ├── config.js └── env.js ├── demo ├── template.html └── test.html ├── dist ├── console.js ├── console.js.map └── console.min.js ├── images ├── close.png └── open.png ├── package.json └── src ├── css └── console.css ├── index.js ├── lib ├── Base.js ├── Console.js ├── Elements.js ├── domUtils.js └── eventsMap.js └── template └── console.html /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *swp 3 | *.swp 4 | .gitCOMMIT_EDITMSG 5 | *.svn 6 | node_modules/* 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 DuJia 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # console 2 | 3 | a console panel for mobile phone, replace alert 4 | 5 | Preview 6 | ------- 7 | 8 | ### close status 9 |
10 | 11 |
12 | 13 | ### open status 14 |
15 | 16 |
17 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author xiaojue 3 | */ 4 | var rollup = require('rollup'); 5 | var fs = require('fs'); 6 | var path = require('path'); 7 | var version = require('../package.json').version; 8 | var uglify = require('uglify-js'); 9 | var config = require('./config.js'); 10 | 11 | var banner = '/*\n' + 12 | ' * console v' + version + '\n' + 13 | ' * (c) ' + new Date().getFullYear() + ' xiaojue\n' + 14 | ' */'; 15 | 16 | function getSize(code) { 17 | return (code.length / 1024).toFixed(2) + 'kb'; 18 | } 19 | 20 | function blue(str) { 21 | return '\x1b[1m\x1b[34m' + str + '\x1b[39m\x1b[22m'; 22 | } 23 | 24 | function write(dest, code) { 25 | return new Promise(function(resolve, reject) { 26 | fs.writeFile(dest, code, function(err) { 27 | if (err) return reject(err); 28 | console.log(blue(dest) + ' ' + getSize(code)); 29 | resolve(); 30 | }); 31 | }); 32 | } 33 | 34 | rollup.rollup(config).then(function(bundle) { 35 | return bundle.generate({ 36 | banner: banner, 37 | format: 'umd', 38 | moduleName: '__console' 39 | }).code; 40 | }).then(function(code) { 41 | write(path.join(__dirname, '../dist/console.js'), code); 42 | return code; 43 | }).then(function(code) { 44 | return uglify.minify(code, { 45 | fromString: true, 46 | output: { 47 | preamble: banner, 48 | ascii_only: true 49 | } 50 | }).code; 51 | }).then(function(code) { 52 | write(path.join(__dirname, '../dist/console.min.js'), code); 53 | return code; 54 | }); 55 | -------------------------------------------------------------------------------- /build/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author xiaojue 3 | * @date 20161027 4 | */ 5 | var path = require('path'); 6 | 7 | var commonjs = require("rollup-plugin-commonjs"); 8 | var env = require('./env'); 9 | var buble = require('rollup-plugin-buble'); 10 | var string = require('rollup-plugin-string'); 11 | var postcss = require('rollup-plugin-postcss'); 12 | var entry = ''; 13 | 14 | if (['production', 'dev'].indexOf(env) != -1) { 15 | entry = '../src/index.js'; 16 | } 17 | 18 | var config = { 19 | entry: path.join(__dirname, entry), 20 | moduleName: '__console', 21 | format: 'umd', 22 | plugins: [ 23 | commonjs(), 24 | string({ 25 | include: ['**/*.html'] 26 | }), 27 | postcss({ 28 | extensions: ['.css'] 29 | }), 30 | buble() 31 | ] 32 | }; 33 | if (['production', 'dev'].indexOf(env) != -1) { 34 | module.exports = Object.assign({ 35 | dest: path.join(__dirname, '../dist/console.js') 36 | }, config); 37 | } else { 38 | module.exports = config; 39 | } 40 | -------------------------------------------------------------------------------- /build/env.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author xiaojue 3 | * @date 20161027 4 | */ 5 | var minimist = require('minimist'); 6 | 7 | var argv = minimist(process.argv.slice(2)); 8 | 9 | module.exports = argv.env || 'production'; 10 | -------------------------------------------------------------------------------- /demo/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 76 | 77 | 78 |
79 |
Console
80 |
81 |
82 |
Clear
83 |
Hide
84 |
85 |
86 | 87 | 88 | -------------------------------------------------------------------------------- /demo/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 28 |
1
29 |
2
30 |
3
31 |
4
32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /dist/console.js: -------------------------------------------------------------------------------- 1 | /* 2 | * console v1.0.0 3 | * (c) 2017 xiaojue 4 | */ 5 | (function (global, factory) { 6 | typeof exports === 'object' && typeof module !== 'undefined' ? factory() : 7 | typeof define === 'function' && define.amd ? define(factory) : 8 | (factory()); 9 | }(this, (function () { 'use strict'; 10 | 11 | function __$styleInject(css, returnValue) { 12 | if (typeof document === 'undefined') { 13 | return returnValue; 14 | } 15 | css = css || ''; 16 | var head = document.head || document.getElementsByTagName('head')[0]; 17 | var style = document.createElement('style'); 18 | style.type = 'text/css'; 19 | if (style.styleSheet){ 20 | style.styleSheet.cssText = css; 21 | } else { 22 | style.appendChild(document.createTextNode(css)); 23 | } 24 | head.appendChild(style); 25 | return returnValue; 26 | } 27 | __$styleInject("/**\n * @fileoverview console style\n */\n#__console_wrap {\n font-size:12px;\n font-family: \"Microsoft YaHei\",Arial,\"Helvetica\";\n}\n.-c-switch{\n display: block;\n position: fixed;\n right: 10px;\n bottom: 10px;\n z-index: 2147483647;\n border-radius: 4px;\n box-shadow: 0 0 8px rgba( 0, 0, 0, .4);\n padding: 8px 16px;\n line-height: 1;\n color: #fff;\n background-color: #0088cc;\n}\n\n.-c-content,.-c-eles{\n display: none;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 40px;\n z-index: 2147483647;\n border-top: 1px solid #eee;\n overflow-x: hidden;\n overflow-y: auto;\n max-height: 50%;\n background-color: #cbf3ff;\n -webkit-overflow-scrolling: touch;\n border-top:1px solid #d9d9d9;\n opacity:.9;\n}\n\n.-c-log{\n margin: 0;\n border-bottom: 1px solid #eee;\n padding: 6px 8px;\n overflow: hidden;\n line-height: 1.3;\n word-break: break-word;\n}\n\n.-c-toolbar,.-c-tab{\n display: none;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n height:40px;\n z-index: 2147483647;\n line-height: 40px;\n background-color: #cbf3ff;\n opacity:.9;\n}\n\n.-c-tab{\n top:0px;\n}\n\n.-c-tool{\n position: relative;\n float: left;\n width: 50%;\n text-align: center;\n text-decoration: none;\n color: #000;\n}\n\n.-c-clear::before,.-c-console::before,.-c-refresh::before{\n content: \"\";\n position: absolute;\n top: 7px;\n bottom: 7px;\n right: 0;\n border-left: 1px solid #d9d9d9;\n}\n\n.-c-current{\n color:#0088cc;\n}\n\n.-c-eles div{\n color:#990884;\n margin:5px;\n}\n.-c-eles span{\n color:#444;\n}\n.-c-eles span.val{\n color:#1f6b7a;\n}\n.-c-eles span.key{\n color:#900b09;\n}\n.-c-eles .-c-omit{\n display:none;\n}\n\n@-webkit-keyframes twinkling{\n 0%{\n opacity:0;\n }\n 100%{\n background-color:green;\n opacity:0.5;\n }\n}\n\n.-c-dialog {\n width:80%;\n height:auto;\n border:#ccc solid 1px;\n margin-top:20%;\n background:#eee;\n position:absolute;\n top:0px;\n z-index:99999;\n left:50%;\n margin-left:-40%;\n}\n.-c-dialog .textareaParent{\n position:relative;\n}\n.-c-dialog .textareaParent pre{\n display:block;\n visibility:hidden; \n margin:0;\n white-space: pre-wrap; \n word-wrap: break-word; \n}\n.-c-dialog .textareaParent pre span{\n display:block;\n}\n.-c-dialog textarea{\n outline:none;\n resize:none;\n border:none;\n left:0px;\n top:0px;\n position:absolute;\n width:100%;\n height:100%;\n}\n.-c-dialog .-c-elepath{\n color:green;\n}\n",undefined); 28 | 29 | var html = "
\n \n
\n

\n \n
\n

\n
\n
Console
\n
\n
\n
\n
Clear
\n
Hide
\n
\n
\n
Refresh
\n
Hide
\n
\n
\n
Console
\n
Elemenets
\n
\n
\n"; 30 | 31 | /** 32 | * @author xiaojue 33 | * @date 20161028 34 | */ 35 | 36 | var eventsMap = function eventsMap() { 37 | this.delegateEventSplitter = /^(\S+)\s*(.*)$/; 38 | if (this.events) { this._bindEventMap(); } 39 | }; 40 | eventsMap.prototype.isFunction = function isFunction (obj) { 41 | return Object.prototype.toString.call(obj) === '[object Function]'; 42 | }; 43 | eventsMap.prototype.$ = function $ (selector) { 44 | return document.querySelector(selector); 45 | }; 46 | eventsMap.prototype._bindEventMap = function _bindEventMap () { 47 | var this$1 = this; 48 | 49 | for (var key in this.events) { 50 | if (this$1.events.hasOwnProperty(key)) { 51 | var method = this$1.events[key]; 52 | if (!this$1.isFunction(method)) { 53 | method = this$1[method]; 54 | } 55 | if (!method) { 56 | continue; 57 | } 58 | var match = key.match(this$1.delegateEventSplitter), 59 | type = match[1], 60 | selector = match[2]; 61 | this$1.$(selector).addEventListener(type, method.bind(this$1)); 62 | } 63 | } 64 | }; 65 | 66 | /** 67 | * @author xiaojue 68 | * @date 20161028 69 | */ 70 | var domUtils = (function (eventsMap$$1) { 71 | function domUtils() { 72 | eventsMap$$1.call(this); 73 | } 74 | 75 | if ( eventsMap$$1 ) domUtils.__proto__ = eventsMap$$1; 76 | domUtils.prototype = Object.create( eventsMap$$1 && eventsMap$$1.prototype ); 77 | domUtils.prototype.constructor = domUtils; 78 | domUtils.prototype.createElement = function createElement (tag, attrs, content) { 79 | var el = document.createElement(tag), 80 | i; 81 | for (i in attrs) { 82 | if (attrs.hasOwnProperty(i)) { 83 | el.setAttribute(i, attrs[i]); 84 | } 85 | } 86 | if (content) { 87 | this.html(el, content); 88 | } 89 | return el; 90 | }; 91 | domUtils.prototype.show = function show () { 92 | var eles = [], len = arguments.length; 93 | while ( len-- ) eles[ len ] = arguments[ len ]; 94 | 95 | eles.forEach(function (ele) { 96 | ele.style.display = 'block'; 97 | }); 98 | return this; 99 | }; 100 | domUtils.prototype.hide = function hide () { 101 | var eles = [], len = arguments.length; 102 | while ( len-- ) eles[ len ] = arguments[ len ]; 103 | 104 | eles.forEach(function (ele) { 105 | ele.style.display = 'none'; 106 | }); 107 | return this; 108 | }; 109 | domUtils.prototype.append = function append (parent) { 110 | var eles = [], len = arguments.length - 1; 111 | while ( len-- > 0 ) eles[ len ] = arguments[ len + 1 ]; 112 | 113 | eles.forEach(function (ele) { 114 | parent.appendChild(ele); 115 | }); 116 | return this; 117 | }; 118 | domUtils.prototype._put = function _put (string, type) { 119 | var eles = [], len = arguments.length - 2; 120 | while ( len-- > 0 ) eles[ len ] = arguments[ len + 2 ]; 121 | 122 | eles.forEach(function (ele) { 123 | if (type) { 124 | if (typeof ele.textContent === 'string') { 125 | ele.textContent = string; 126 | } else { 127 | ele.innerText = string; 128 | } 129 | } else { 130 | ele.innerHTML = string; 131 | } 132 | }); 133 | }; 134 | domUtils.prototype.html = function html (eles, html) { 135 | this._put(html, 0, eles); 136 | }; 137 | domUtils.prototype.text = function text (eles, text) { 138 | this._put(text, 1, eles); 139 | }; 140 | domUtils.prototype.addClass = function addClass (clsName) { 141 | var eles = [], len = arguments.length - 1; 142 | while ( len-- > 0 ) eles[ len ] = arguments[ len + 1 ]; 143 | 144 | eles.forEach(function (ele) { 145 | ele.classList.add(clsName); 146 | }); 147 | return this; 148 | }; 149 | domUtils.prototype.removeClass = function removeClass (clsName) { 150 | var eles = [], len = arguments.length - 1; 151 | while ( len-- > 0 ) eles[ len ] = arguments[ len + 1 ]; 152 | 153 | eles.forEach(function (ele) { 154 | ele.classList.remove(clsName); 155 | }); 156 | return this; 157 | }; 158 | 159 | return domUtils; 160 | }(eventsMap)); 161 | 162 | /** 163 | * @author xiaojue 164 | * @date 20161028 165 | */ 166 | var Base = (function (domUtils$$1) { 167 | function Base(options) { 168 | var this$1 = this; 169 | 170 | Object.assign(this, options); 171 | this.render(); 172 | if (this.eles) { 173 | for (var i in this.eles) { 174 | if (this$1.eles.hasOwnProperty(i)) { 175 | this$1[i] = this$1.$(this$1.eles[i]); 176 | } 177 | } 178 | } 179 | domUtils$$1.call(this); 180 | this.init(); 181 | return this; 182 | } 183 | 184 | if ( domUtils$$1 ) Base.__proto__ = domUtils$$1; 185 | Base.prototype = Object.create( domUtils$$1 && domUtils$$1.prototype ); 186 | Base.prototype.constructor = Base; 187 | Base.prototype.render = function render () {}; 188 | 189 | return Base; 190 | }(domUtils)); 191 | 192 | /** 193 | * @author xiaojue 194 | * @date 20161028 195 | */ 196 | 197 | var Console = { 198 | fixConsole: function fixConsole() { 199 | var this$1 = this; 200 | 201 | this.consoleMethods.forEach(function (method) { 202 | var original = window.console[method]; 203 | window.console[method] = function () { 204 | var args = [], len = arguments.length; 205 | while ( len-- ) args[ len ] = arguments[ len ]; 206 | 207 | if (this$1.pushLog) { this$1.pushLog(args); } 208 | original.apply(console, args); 209 | }; 210 | }); 211 | } 212 | }; 213 | 214 | /** 215 | * @author xiaojue 216 | * @date 20161028 217 | */ 218 | 219 | var uuid = 0; 220 | 221 | var _eventHandlers = {}; 222 | 223 | var longtimeout; 224 | 225 | 226 | var Elements = { 227 | refreshDomTree: function refreshDomTree(wrap) { 228 | var arr = this._recursionNode(document, []); 229 | this.removeAllListeners(wrap, 'click'); 230 | this.removeAllListeners(wrap, 'touchstart'); 231 | this.removeAllListeners(wrap, 'touchend'); 232 | wrap.innerHTML = arr.join(''); 233 | this.addListener(wrap, 'touchstart', this._touchStart.bind(this), false); 234 | this.addListener(wrap, 'touchend', this._touchEnd.bind(this), false); 235 | this.addListener(wrap, 'click', this._toggleDiv.bind(this), false); 236 | this._eachOmit(wrap.querySelectorAll('.-c-omit')); 237 | }, 238 | createDomTree: function createDomTree(wrap) { 239 | var arr = this._recursionNode(document, []); 240 | wrap.innerHTML = arr.join(''); 241 | this.addListener(wrap, 'click', this._toggleDiv.bind(this), false); 242 | this.addListener(wrap, 'touchstart', this._touchStart.bind(this), false); 243 | this.addListener(wrap, 'touchend', this._touchEnd.bind(this), false); 244 | this._eachOmit(wrap.querySelectorAll('.-c-omit')); 245 | }, 246 | changeStyle: function changeStyle() { 247 | var dialog = this.dialog, 248 | style= ''; 249 | try { 250 | style= JSON.parse(dialog.querySelector('.__console_currentStyle').value); 251 | } catch (e) { 252 | console.error('rewrite style must be standard JSON object string'); 253 | return; 254 | } 255 | var c_uuid = dialog.querySelector('.__console_currentStyle').getAttribute('data-uuid'); 256 | var nodeTarget = document.querySelector('[console_uuid="' + c_uuid + '"]'); 257 | var sheetText = style.sheets.join().replace(/(\}.*?\{)/g,"").replace(/(.*?\{)/g,"").replace(/(\}$)/,""); 258 | nodeTarget.style.cssText = style.cssText + sheetText; 259 | dialog.close(); 260 | this.refresh(); 261 | }, 262 | longPress: function longPress(e) { 263 | this._showStyle(e); 264 | }, 265 | _touchStart: function _touchStart(e) { 266 | var this$1 = this; 267 | 268 | longtimeout = setTimeout(function () { 269 | this$1.longPress(e); 270 | }, 800); 271 | }, 272 | _touchEnd: function _touchEnd() { 273 | clearTimeout(longtimeout); 274 | }, 275 | css: function css(a) { 276 | var sheets = document.styleSheets, 277 | styleObj = {}, 278 | o = [], 279 | i; 280 | a.matches = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.msMatchesSelector || a.oMatchesSelector; 281 | for (i in sheets) { 282 | if (sheets.hasOwnProperty(i)) { 283 | var rules = sheets[i].rules || sheets[i].cssRules; 284 | for (var r in rules) { 285 | if (a.matches(rules[r].selectorText)) { 286 | o.push(rules[r].cssText); 287 | } 288 | } 289 | } 290 | } 291 | styleObj.sheets = o; 292 | //get inline style 293 | var cssText = a.style.cssText; 294 | if (cssText) { 295 | styleObj.cssText = cssText; 296 | } 297 | return styleObj; 298 | }, 299 | _showStyle: function _showStyle(e) { 300 | var target = e.target; 301 | if (target.nodeType === 1 && target.tagName.toLowerCase() === 'div') { 302 | var c_uuid = target.getAttribute('data-uuid'); 303 | var nodeTarget = document.querySelector('[console_uuid="' + c_uuid + '"]'); 304 | var style = JSON.stringify(this.css(nodeTarget)); 305 | var dialog = this.dialog; 306 | dialog.querySelector('.__console_currentStyle').value = style; 307 | dialog.querySelector('.__console_currentStyle').setAttribute('data-uuid', c_uuid); 308 | dialog.querySelector('.-c-elepath').innerText = target.innerText; 309 | dialog.querySelector('.-c-textare_pre').innerText = style; 310 | dialog.show(); 311 | } 312 | }, 313 | _showBorder: function _showBorder(target) { 314 | var fillterTag = ['html', 'head', 'title', 'meta', 'body', 'script', 'style']; 315 | if (fillterTag.indexOf(target.tagName.toLocaleLowerCase()) > -1) { return; } 316 | target.style['-webkit-animation'] = 'twinkling .5s infinite ease-in-out'; 317 | setTimeout(function() { 318 | target.style['-webkit-animation'] = ''; 319 | }, 500); 320 | this._setTargetY(target); 321 | }, 322 | _setTargetY: function _setTargetY(node) { 323 | var curtop = 0; 324 | var curtopscroll = 0; 325 | if (node.offsetParent) { 326 | do { 327 | curtop += node.offsetTop; 328 | curtopscroll += node.offsetParent ? node.offsetParent.scrollTop : 0; 329 | } while ((node = node.offsetParent)); 330 | } 331 | window.scrollTop = (curtop - curtopscroll); 332 | }, 333 | _toggleDiv: function _toggleDiv(e) { 334 | var target = e.target; 335 | if (target.nodeType === 1 && target.tagName.toLowerCase() === 'div') { 336 | for (var i = 0; i < target.childNodes.length; i++) { 337 | var item = target.childNodes[i]; 338 | if (item.nodeType === 1 && item.tagName.toLowerCase() === 'div') { 339 | item.style.display = item.style.display === "block" ? 'none' : 'block'; 340 | } 341 | } 342 | //定位 343 | var c_uuid = target.getAttribute('data-uuid'); 344 | var nodeTarget = document.querySelector('[console_uuid="' + c_uuid + '"]'); 345 | this._showBorder(nodeTarget); 346 | this._eachOmit(target.querySelectorAll('.-c-omit')); 347 | } 348 | }, 349 | _eachOmit: function _eachOmit(eles) { 350 | eles.forEach(function (ele) { 351 | var nextTag = ele.nextSibling; 352 | while (nextTag === null) { 353 | if (nextTag.nodeType === 1) { break; } 354 | nextTag = ele.nextSibling; 355 | } 356 | if (nextTag) { 357 | if (nextTag.nodeType === 1 && nextTag.tagName === 'DIV') { 358 | ele.style.display = nextTag.style.display === 'block' ? 'none' : 'inline'; 359 | } else { 360 | ele.style.display = 'none'; 361 | } 362 | } 363 | }); 364 | }, 365 | addListener: function addListener(node, event, handler, capture) { 366 | if (!(node in _eventHandlers)) { 367 | _eventHandlers[node] = {}; 368 | } 369 | if (!(event in _eventHandlers[node])) { 370 | _eventHandlers[node][event] = []; 371 | } 372 | _eventHandlers[node][event].push([handler, capture]); 373 | node.addEventListener(event, handler, capture); 374 | }, 375 | removeAllListeners: function removeAllListeners(node, event) { 376 | if (node in _eventHandlers) { 377 | var handlers = _eventHandlers[node]; 378 | if (event in handlers) { 379 | var eventHandlers = handlers[event]; 380 | for (var i = eventHandlers.length; i--;) { 381 | var handler = eventHandlers[i]; 382 | node.removeEventListener(event, handler[0], handler[1]); 383 | } 384 | } 385 | } 386 | }, 387 | _recursionNode: function _recursionNode(node, ret) { 388 | var this$1 = this; 389 | 390 | var marginL = 0, 391 | step = 10; 392 | if (node.childNodes.length) { 393 | if (node.tagName) { ret.push(''); } 394 | marginL += step; 395 | for (var i = 0; i < node.childNodes.length; i++) { 396 | var item = node.childNodes[i]; 397 | if (item.nodeType === 3 && item.nodeValue.trim() !== '') { 398 | ret.push('' + item.nodeValue.trim() + ''); 399 | } 400 | if (item.nodeType === 1) { 401 | var tagName = item.tagName.toLowerCase(); 402 | if (item.id === '__console_wrap') { continue; } 403 | var isShow = (tagName === 'html' || tagName === 'head' || tagName === 'body') ? 'block' : 'none'; 404 | var attributes = ''; 405 | item.setAttribute('console_uuid', uuid); 406 | Object.keys(item.attributes).forEach(function (name) { 407 | var attr = item.attributes[name]; 408 | if (attr.name !== 'console_uuid') { 409 | attributes += '' + attr.name + '="' + attr.textContent + '" '; 410 | } 411 | }); 412 | ret.push('
<' + tagName + ' ' + attributes + '>'); 413 | uuid++; 414 | this$1._recursionNode(item, ret); 415 | ret.push('</' + tagName + '>
'); 416 | } 417 | } 418 | } 419 | return ret; 420 | } 421 | }; 422 | 423 | /** 424 | * @author xiaojue 425 | * @author dujia 426 | * @date 20161027 427 | */ 428 | 429 | Object.assign(Base.prototype, Console); 430 | Object.assign(Base.prototype, Elements); 431 | 432 | new Base({ 433 | init: function init() { 434 | this.consoleMethods = ['debug', 'error', 'info', 'warn','log']; 435 | this.elesInit = false; 436 | this.fixConsole(); 437 | }, 438 | events: { 439 | 'click .-c-switch': 'switchBtnClick', 440 | 'click .-c-clear': 'clearClick', 441 | 'click .-c-consoleBar .-c-hide': 'hideClick', 442 | 'click .-c-eleBar .-c-hide': 'hideClick', 443 | 'click .-c-elements': 'elementsClick', 444 | 'click .-c-refresh': 'refresh', 445 | 'click .-c-console': 'consoleClick', 446 | 'click .-c-save': 'saveStyle', 447 | 'click .-c-cancel':'cancel' 448 | }, 449 | eles: { 450 | elesBox: '.-c-eles', 451 | logBox: '.-c-content', 452 | consoletoolBar: '.-c-consoleBar', 453 | elestoolBar: '.-c-eleBar', 454 | switchBtn: '.-c-switch', 455 | tab: '.-c-tab', 456 | elesTab: '.-c-elements', 457 | dialog:'.-c-dialog', 458 | consoleTab: '.-c-console' 459 | }, 460 | render: function render() { 461 | this.el = this.createElement('div', {id:'__console_wrap'}, html); 462 | this.append(document.body, this.el); 463 | }, 464 | pushLog: function pushLog(msg) { 465 | var log = this.createElement('div', { 466 | class: '-c-log' 467 | }); 468 | this.text(log, JSON.stringify(msg.join(' ')).slice(1, -1)); 469 | this.append(this.logBox, log); 470 | }, 471 | cancel: function cancel(){ 472 | this.dialog.close(); 473 | }, 474 | saveStyle: function saveStyle(){ 475 | this.changeStyle(); 476 | }, 477 | switchBtnClick: function switchBtnClick() { 478 | this.show(this.logBox,this.elesBox, this.consoletoolBar,this.elestoolBar, this.tab).hide(this.switchBtn,this.elestoolBar); 479 | }, 480 | clearClick: function clearClick() { 481 | this.html(this.logBox, ''); 482 | }, 483 | hideClick: function hideClick() { 484 | this.hide(this.logBox,this.elesBox, this.consoletoolBar,this.elestoolBar, this.tab).show(this.switchBtn); 485 | this.addClass('-c-current', this.consoleTab).removeClass('-c-current', this.elesTab); 486 | }, 487 | elementsClick: function elementsClick() { 488 | this.hide(this.logBox, this.consoletoolBar).show(this.elesBox,this.elestoolBar); 489 | this.addClass('-c-current', this.elesTab).removeClass('-c-current', this.consoleTab); 490 | if(this.elesInit) { return; } 491 | this.elesInit = true; 492 | this.createDomTree(this.elesBox); 493 | }, 494 | consoleClick: function consoleClick() { 495 | this.hide(this.elesBox,this.elestoolBar).show(this.logBox, this.consoletoolBar); 496 | this.addClass('-c-current', this.consoleTab).removeClass('-c-current', this.elesTab); 497 | }, 498 | refresh: function refresh(){ 499 | this.refreshDomTree(this.elesBox); 500 | } 501 | }); 502 | 503 | }))); 504 | -------------------------------------------------------------------------------- /dist/console.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":null,"sources":["../src/lib/eventsMap.js","../src/lib/domUtils.js","../src/lib/Base.js","../src/lib/Console.js","../src/lib/Elements.js","../src/index.js"],"sourcesContent":["/**\n * @author xiaojue\n * @date 20161028\n */\n\nclass eventsMap {\n constructor() {\n this.delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n if (this.events) this._bindEventMap();\n }\n isFunction(obj) {\n return Object.prototype.toString.call(obj) === '[object Function]';\n }\n $(selector) {\n return document.querySelector(selector);\n }\n _bindEventMap() {\n for (var key in this.events) {\n if (this.events.hasOwnProperty(key)) {\n var method = this.events[key];\n if (!this.isFunction(method)) {\n method = this[method];\n }\n if (!method) {\n continue;\n }\n var match = key.match(this.delegateEventSplitter),\n type = match[1],\n selector = match[2];\n this.$(selector).addEventListener(type, method.bind(this));\n }\n }\n }\n}\n\nexport default eventsMap;\n","/**\n * @author xiaojue\n * @date 20161028\n */\nimport eventsMap from './eventsMap.js';\n\nclass domUtils extends eventsMap {\n constructor() {\n super();\n }\n createElement(tag, attrs, content) {\n var el = document.createElement(tag),\n i;\n for (i in attrs) {\n if (attrs.hasOwnProperty(i)) {\n el.setAttribute(i, attrs[i]);\n }\n }\n if (content) {\n this.html(el, content);\n }\n return el;\n }\n show(...eles) {\n eles.forEach((ele) => {\n ele.style.display = 'block';\n });\n return this;\n }\n hide(...eles) {\n eles.forEach((ele) => {\n ele.style.display = 'none';\n });\n return this;\n }\n append(parent, ...eles) {\n eles.forEach((ele) => {\n parent.appendChild(ele);\n });\n return this;\n }\n _put(string, type, ...eles) {\n eles.forEach((ele) => {\n if (type) {\n if (typeof ele.textContent === 'string') {\n ele.textContent = string;\n } else {\n ele.innerText = string;\n }\n } else {\n ele.innerHTML = string;\n }\n });\n }\n html(eles, html) {\n this._put(html, 0, eles);\n }\n text(eles, text) {\n this._put(text, 1, eles);\n }\n addClass(clsName, ...eles) {\n eles.forEach((ele) => {\n ele.classList.add(clsName);\n });\n return this;\n }\n removeClass(clsName, ...eles) {\n eles.forEach((ele) => {\n ele.classList.remove(clsName);\n });\n return this;\n }\n}\n\nexport default domUtils;\n\n","/**\n * @author xiaojue\n * @date 20161028\n */\nimport domUtils from './domUtils.js';\n\nclass Base extends domUtils {\n constructor(options) {\n Object.assign(this, options);\n this.render();\n if (this.eles) {\n for (var i in this.eles) {\n if (this.eles.hasOwnProperty(i)) {\n this[i] = this.$(this.eles[i]);\n }\n }\n }\n super();\n this.init();\n return this;\n }\n render() {}\n}\n\nexport default Base;\n","/**\n * @author xiaojue\n * @date 20161028\n */\n\nvar Console = {\n fixConsole() {\n this.consoleMethods.forEach((method) => {\n var original = window.console[method];\n window.console[method] = (...args) => {\n if (this.pushLog) this.pushLog(args);\n original.apply(console, args);\n };\n });\n }\n};\n\nexport default Console;\n","/**\n * @author xiaojue\n * @date 20161028\n */\n\nvar uuid = 0;\n\nvar _eventHandlers = {};\n\nvar longtimeout;\n\n\nvar Elements = {\n refreshDomTree(wrap) {\n var arr = this._recursionNode(document, []);\n this.removeAllListeners(wrap, 'click');\n this.removeAllListeners(wrap, 'touchstart');\n this.removeAllListeners(wrap, 'touchend');\n wrap.innerHTML = arr.join('');\n this.addListener(wrap, 'touchstart', this._touchStart.bind(this), false);\n this.addListener(wrap, 'touchend', this._touchEnd.bind(this), false);\n this.addListener(wrap, 'click', this._toggleDiv.bind(this), false);\n this._eachOmit(wrap.querySelectorAll('.-c-omit'));\n },\n createDomTree(wrap) {\n var arr = this._recursionNode(document, []);\n wrap.innerHTML = arr.join('');\n this.addListener(wrap, 'click', this._toggleDiv.bind(this), false);\n this.addListener(wrap, 'touchstart', this._touchStart.bind(this), false);\n this.addListener(wrap, 'touchend', this._touchEnd.bind(this), false);\n this._eachOmit(wrap.querySelectorAll('.-c-omit'));\n },\n changeStyle() {\n var dialog = this.dialog,\n style= '';\n try {\n style= JSON.parse(dialog.querySelector('.__console_currentStyle').value);\n } catch (e) {\n console.error('rewrite style must be standard JSON object string');\n return;\n }\n var c_uuid = dialog.querySelector('.__console_currentStyle').getAttribute('data-uuid');\n var nodeTarget = document.querySelector('[console_uuid=\"' + c_uuid + '\"]');\n var sheetText = style.sheets.join().replace(/(\\}.*?\\{)/g,\"\").replace(/(.*?\\{)/g,\"\").replace(/(\\}$)/,\"\");\n nodeTarget.style.cssText = style.cssText + sheetText;\n dialog.close();\n this.refresh();\n },\n longPress(e) {\n this._showStyle(e);\n },\n _touchStart(e) {\n longtimeout = setTimeout(() => {\n this.longPress(e);\n }, 800);\n },\n _touchEnd() {\n clearTimeout(longtimeout);\n },\n css(a) {\n var sheets = document.styleSheets,\n styleObj = {},\n o = [],\n i;\n a.matches = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.msMatchesSelector || a.oMatchesSelector;\n for (i in sheets) {\n if (sheets.hasOwnProperty(i)) {\n var rules = sheets[i].rules || sheets[i].cssRules;\n for (var r in rules) {\n if (a.matches(rules[r].selectorText)) {\n o.push(rules[r].cssText);\n }\n }\n }\n }\n styleObj.sheets = o;\n //get inline style \n var cssText = a.style.cssText;\n if (cssText) {\n styleObj.cssText = cssText;\n }\n return styleObj;\n },\n _showStyle(e) {\n var target = e.target;\n if (target.nodeType === 1 && target.tagName.toLowerCase() === 'div') {\n var c_uuid = target.getAttribute('data-uuid');\n var nodeTarget = document.querySelector('[console_uuid=\"' + c_uuid + '\"]');\n var style = JSON.stringify(this.css(nodeTarget));\n var dialog = this.dialog;\n dialog.querySelector('.__console_currentStyle').value = style;\n dialog.querySelector('.__console_currentStyle').setAttribute('data-uuid', c_uuid);\n dialog.querySelector('.-c-elepath').innerText = target.innerText;\n dialog.querySelector('.-c-textare_pre').innerText = style;\n dialog.show();\n }\n },\n _showBorder(target) {\n var fillterTag = ['html', 'head', 'title', 'meta', 'body', 'script', 'style'];\n if (fillterTag.indexOf(target.tagName.toLocaleLowerCase()) > -1) return;\n target.style['-webkit-animation'] = 'twinkling .5s infinite ease-in-out';\n setTimeout(function() {\n target.style['-webkit-animation'] = '';\n }, 500);\n this._setTargetY(target);\n },\n _setTargetY(node) {\n var curtop = 0;\n var curtopscroll = 0;\n if (node.offsetParent) {\n do {\n curtop += node.offsetTop;\n curtopscroll += node.offsetParent ? node.offsetParent.scrollTop : 0;\n } while ((node = node.offsetParent));\n }\n window.scrollTop = (curtop - curtopscroll);\n },\n _toggleDiv(e) {\n var target = e.target;\n if (target.nodeType === 1 && target.tagName.toLowerCase() === 'div') {\n for (var i = 0; i < target.childNodes.length; i++) {\n var item = target.childNodes[i];\n if (item.nodeType === 1 && item.tagName.toLowerCase() === 'div') {\n item.style.display = item.style.display === \"block\" ? 'none' : 'block';\n }\n }\n //定位\n var c_uuid = target.getAttribute('data-uuid');\n var nodeTarget = document.querySelector('[console_uuid=\"' + c_uuid + '\"]');\n this._showBorder(nodeTarget);\n this._eachOmit(target.querySelectorAll('.-c-omit'));\n }\n },\n _eachOmit(eles) {\n eles.forEach((ele) => {\n var nextTag = ele.nextSibling;\n while (nextTag === null) {\n if (nextTag.nodeType === 1) break;\n nextTag = ele.nextSibling;\n }\n if (nextTag) {\n if (nextTag.nodeType === 1 && nextTag.tagName === 'DIV') {\n ele.style.display = nextTag.style.display === 'block' ? 'none' : 'inline';\n } else {\n ele.style.display = 'none';\n }\n }\n });\n },\n addListener(node, event, handler, capture) {\n if (!(node in _eventHandlers)) {\n _eventHandlers[node] = {};\n }\n if (!(event in _eventHandlers[node])) {\n _eventHandlers[node][event] = [];\n }\n _eventHandlers[node][event].push([handler, capture]);\n node.addEventListener(event, handler, capture);\n },\n removeAllListeners(node, event) {\n if (node in _eventHandlers) {\n var handlers = _eventHandlers[node];\n if (event in handlers) {\n var eventHandlers = handlers[event];\n for (var i = eventHandlers.length; i--;) {\n var handler = eventHandlers[i];\n node.removeEventListener(event, handler[0], handler[1]);\n }\n }\n }\n },\n _recursionNode(node, ret) {\n var marginL = 0,\n step = 10;\n if (node.childNodes.length) {\n if (node.tagName) ret.push('...');\n marginL += step;\n for (var i = 0; i < node.childNodes.length; i++) {\n var item = node.childNodes[i];\n if (item.nodeType === 3 && item.nodeValue.trim() !== '') {\n ret.push('' + item.nodeValue.trim() + '');\n }\n if (item.nodeType === 1) {\n var tagName = item.tagName.toLowerCase();\n if (item.id === '__console_wrap') continue;\n var isShow = (tagName === 'html' || tagName === 'head' || tagName === 'body') ? 'block' : 'none';\n var attributes = '';\n item.setAttribute('console_uuid', uuid);\n Object.keys(item.attributes).forEach((name) => {\n var attr = item.attributes[name];\n if (attr.name !== 'console_uuid') {\n attributes += '' + attr.name + '=\"' + attr.textContent + '\" ';\n }\n });\n ret.push('
<' + tagName + ' ' + attributes + '>');\n uuid++;\n this._recursionNode(item, ret);\n ret.push('</' + tagName + '>
');\n }\n }\n }\n return ret;\n }\n};\n\nexport default Elements;\n","/**\n * @author xiaojue\n * @author dujia\n * @date 20161027\n */\n\nimport './css/console.css';\nimport html from './template/console.html';\n\nimport Base from './lib/Base.js';\nimport Console from './lib/Console.js';\nimport Elements from './lib/Elements.js';\n\nObject.assign(Base.prototype, Console);\nObject.assign(Base.prototype, Elements);\n\nnew Base({\n init() {\n this.consoleMethods = ['debug', 'error', 'info', 'warn','log'];\n this.elesInit = false;\n this.fixConsole();\n },\n events: {\n 'click .-c-switch': 'switchBtnClick',\n 'click .-c-clear': 'clearClick',\n 'click .-c-consoleBar .-c-hide': 'hideClick',\n 'click .-c-eleBar .-c-hide': 'hideClick',\n 'click .-c-elements': 'elementsClick',\n 'click .-c-refresh': 'refresh',\n 'click .-c-console': 'consoleClick',\n 'click .-c-save': 'saveStyle',\n 'click .-c-cancel':'cancel'\n },\n eles: {\n elesBox: '.-c-eles',\n logBox: '.-c-content',\n consoletoolBar: '.-c-consoleBar',\n elestoolBar: '.-c-eleBar',\n switchBtn: '.-c-switch',\n tab: '.-c-tab',\n elesTab: '.-c-elements',\n dialog:'.-c-dialog',\n consoleTab: '.-c-console'\n },\n render() {\n this.el = this.createElement('div', {id:'__console_wrap'}, html);\n this.append(document.body, this.el);\n },\n pushLog(msg) {\n var log = this.createElement('div', {\n class: '-c-log'\n });\n this.text(log, JSON.stringify(msg.join(' ')).slice(1, -1));\n this.append(this.logBox, log);\n },\n cancel(){\n this.dialog.close(); \n },\n saveStyle(){\n this.changeStyle();\n },\n switchBtnClick() {\n this.show(this.logBox,this.elesBox, this.consoletoolBar,this.elestoolBar, this.tab).hide(this.switchBtn,this.elestoolBar);\n },\n clearClick() {\n this.html(this.logBox, '');\n },\n hideClick() {\n this.hide(this.logBox,this.elesBox, this.consoletoolBar,this.elestoolBar, this.tab).show(this.switchBtn);\n this.addClass('-c-current', this.consoleTab).removeClass('-c-current', this.elesTab);\n },\n elementsClick() {\n this.hide(this.logBox, this.consoletoolBar).show(this.elesBox,this.elestoolBar);\n this.addClass('-c-current', this.elesTab).removeClass('-c-current', this.consoleTab);\n if(this.elesInit) return;\n this.elesInit = true;\n this.createDomTree(this.elesBox);\n },\n consoleClick() {\n this.hide(this.elesBox,this.elestoolBar).show(this.logBox, this.consoletoolBar);\n this.addClass('-c-current', this.consoleTab).removeClass('-c-current', this.elesTab);\n },\n refresh(){\n this.refreshDomTree(this.elesBox);\n }\n});\n"],"names":["this","super"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;AAKA,IAAM,SAAS,GAAC,kBACD,GAAG;IACd,IAAQ,CAAC,qBAAqB,GAAG,gBAAgB,CAAC;IAClD,IAAQ,IAAI,CAAC,MAAM,EAAE,EAAA,IAAI,CAAC,aAAa,EAAE,CAAC,EAAA;CACzC,CAAA;AACL,oBAAI,UAAU,wBAAC,GAAG,EAAE;IAChB,OAAW,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,mBAAmB,CAAC;CACtE,CAAA;AACL,oBAAI,CAAC,eAAC,QAAQ,EAAE;IACZ,OAAW,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;CAC3C,CAAA;AACL,oBAAI,aAAa,6BAAG;;;IAChB,KAAS,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;QAC7B,IAAQA,MAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACrC,IAAQ,MAAM,GAAGA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClC,IAAQ,CAACA,MAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAC9B,MAAU,GAAGA,MAAI,CAAC,MAAM,CAAC,CAAC;aACzB;YACL,IAAQ,CAAC,MAAM,EAAE;gBACb,SAAa;aACZ;YACL,IAAQ,KAAK,GAAG,GAAG,CAAC,KAAK,CAACA,MAAI,CAAC,qBAAqB,CAAC;gBACjD,IAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;gBACnB,QAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAACA,MAAI,CAAC,CAAC,CAAC;SAC9D;KACJ;CACJ,CAAA,AAGL,AAAyB;;ACnCzB;;;;AAIA,AAEA,IAAM,QAAQ,GAAkB;IAAC,iBAClB,GAAG;QACVC,YAAK,KAAA,CAAC,IAAA,CAAC,CAAC;KACX;;;;8CAAA;IACD,mBAAA,aAAa,2BAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;QAC/B,IAAI,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC;QACN,KAAK,CAAC,IAAI,KAAK,EAAE;YACb,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACzB,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAChC;SACJ;QACD,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;SAC1B;QACD,OAAO,EAAE,CAAC;KACb,CAAA;IACD,mBAAA,IAAI,oBAAU;;;;QACV,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;YACf,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SAC/B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf,CAAA;IACD,mBAAA,IAAI,oBAAU;;;;QACV,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;YACf,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf,CAAA;IACD,mBAAA,MAAM,oBAAC,MAAM,EAAW;;;;QACpB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;YACf,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;SAC3B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf,CAAA;IACD,mBAAA,IAAI,kBAAC,MAAM,EAAE,IAAI,EAAW;;;;QACxB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;YACf,IAAI,IAAI,EAAE;gBACN,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE;oBACrC,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;iBAC5B,MAAM;oBACH,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;iBAC1B;aACJ,MAAM;gBACH,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;aAC1B;SACJ,CAAC,CAAC;KACN,CAAA;IACD,mBAAA,IAAI,kBAAC,IAAI,EAAE,IAAI,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;KAC5B,CAAA;IACD,mBAAA,IAAI,kBAAC,IAAI,EAAE,IAAI,EAAE;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;KAC5B,CAAA;IACD,mBAAA,QAAQ,sBAAC,OAAO,EAAW;;;;QACvB,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;YACf,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAC9B,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf,CAAA;IACD,mBAAA,WAAW,yBAAC,OAAO,EAAW;;;;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;YACf,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf,CAAA;;;EAjEkB,SAkEtB,GAAA,AAED,AAAwB;;AC1ExB;;;;AAIA,AAEA,IAAM,IAAI,GAAiB;IAAC,aACb,CAAC,OAAO,EAAE;;;QACjB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE;gBACrB,IAAID,MAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBAC7BA,MAAI,CAAC,CAAC,CAAC,GAAGA,MAAI,CAAC,CAAC,CAACA,MAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClC;aACJ;SACJ;QACDC,WAAK,KAAA,CAAC,IAAA,CAAC,CAAC;QACR,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;KACf;;;;sCAAA;IACD,eAAA,MAAM,sBAAG,EAAE,CAAA;;;EAfI,QAgBlB,GAAA,AAED,AAAoB;;ACxBpB;;;;;AAKA,IAAI,OAAO,GAAG;IACV,UAAU,qBAAA,GAAG;;;QACT,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE;YACjC,IAAI,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,YAAU;;;;gBAC/B,IAAID,MAAI,CAAC,OAAO,EAAE,EAAAA,MAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAA;gBACrC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACjC,CAAC;SACL,CAAC,CAAC;KACN;CACJ,CAAC,AAEF,AAAuB;;ACjBvB;;;;;AAKA,IAAI,IAAI,GAAG,CAAC,CAAC;;AAEb,IAAI,cAAc,GAAG,EAAE,CAAC;;AAExB,IAAI,WAAW,CAAC;;;AAGhB,IAAI,QAAQ,GAAG;IACX,cAAc,yBAAA,CAAC,IAAI,EAAE;YACb,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC5C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC1C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;SACrD;QACD,aAAa,wBAAA,CAAC,IAAI,EAAE;YAChB,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACzE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;SACrD;QACD,WAAW,sBAAA,GAAG;YACV,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM;gBACpB,KAAK,EAAE,EAAE,CAAC;YACd,IAAI;gBACA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,CAAC,CAAC;aAC5E,CAAC,OAAO,CAAC,EAAE;gBACR,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACnE,OAAO;aACV;YACD,IAAI,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACvF,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;YAC3E,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxG,UAAU,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YACrD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,EAAE,CAAC;SAClB;QACD,SAAS,oBAAA,CAAC,CAAC,EAAE;YACT,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACtB;QACD,WAAW,sBAAA,CAAC,CAAC,EAAE;;;YACX,WAAW,GAAG,UAAU,CAAC,YAAG;gBACxBA,MAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aACrB,EAAE,GAAG,CAAC,CAAC;SACX;QACD,SAAS,oBAAA,GAAG;YACR,YAAY,CAAC,WAAW,CAAC,CAAC;SAC7B;QACD,GAAG,cAAA,CAAC,CAAC,EAAE;YACH,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW;gBAC7B,QAAQ,GAAG,EAAE;gBACb,CAAC,GAAG,EAAE;gBACN,CAAC,CAAC;YACN,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,kBAAkB,IAAI,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,gBAAgB,CAAC;YACtH,KAAK,CAAC,IAAI,MAAM,EAAE;gBACd,IAAI,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBAC1B,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAClD,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;wBACjB,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;4BAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;yBAC5B;qBACJ;iBACJ;aACJ;YACD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;;YAEpB,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,OAAO,EAAE;gBACT,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;aAC9B;YACD,OAAO,QAAQ,CAAC;SACnB;QACD,UAAU,qBAAA,CAAC,CAAC,EAAE;YACV,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACtB,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;gBACjE,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC9C,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;gBAC3E,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;gBACjD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;gBACzB,MAAM,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC9D,MAAM,CAAC,aAAa,CAAC,yBAAyB,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAClF,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;gBACjE,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC1D,MAAM,CAAC,IAAI,EAAE,CAAC;aACjB;SACJ;QACD,WAAW,sBAAA,CAAC,MAAM,EAAE;YAChB,IAAI,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9E,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,EAAA;YACxE,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,oCAAoC,CAAC;YACzE,UAAU,CAAC,WAAW;gBAClB,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC;aAC1C,EAAE,GAAG,CAAC,CAAC;YACR,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;SAC5B;QACD,WAAW,sBAAA,CAAC,IAAI,EAAE;YACd,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,GAAG;oBACC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC;oBACzB,YAAY,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;iBACvE,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE;aACxC;YACD,MAAM,CAAC,SAAS,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;SAC9C;QACD,UAAU,qBAAA,CAAC,CAAC,EAAE;YACV,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;YACtB,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;gBACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/C,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;wBAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;qBAC1E;iBACJ;;gBAED,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC9C,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;gBAC3E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBAC7B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;aACvD;SACJ;QACD,SAAS,oBAAA,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,UAAC,GAAG,EAAE;gBACf,IAAI,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;gBAC9B,OAAO,OAAO,KAAK,IAAI,EAAE;oBACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,EAAA,MAAM,EAAA;oBAClC,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC;iBAC7B;gBACD,IAAI,OAAO,EAAE;oBACT,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;wBACrD,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;qBAC7E,MAAM;wBACH,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;qBAC9B;iBACJ;aACJ,CAAC,CAAC;SACN;QACD,WAAW,sBAAA,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE;YACvC,IAAI,CAAC,CAAC,IAAI,IAAI,cAAc,CAAC,EAAE;gBAC3B,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;aAC7B;YACD,IAAI,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE;gBAClC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;aACpC;YACD,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAClD;QACD,kBAAkB,6BAAA,CAAC,IAAI,EAAE,KAAK,EAAE;YAC5B,IAAI,IAAI,IAAI,cAAc,EAAE;gBACxB,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,KAAK,IAAI,QAAQ,EAAE;oBACnB,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACpC,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG;wBACrC,IAAI,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC3D;iBACJ;aACJ;SACJ;QACD,cAAc,yBAAA,CAAC,IAAI,EAAE,GAAG,EAAE;;;YACtB,IAAI,OAAO,GAAG,CAAC;gBACX,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBACxB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAA,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC,EAAA;gBACrF,OAAO,IAAI,IAAI,CAAC;gBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC7C,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBAC9B,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;wBACrD,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC;qBAC1D;oBACD,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,EAAE;wBACrB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;wBACzC,IAAI,IAAI,CAAC,EAAE,KAAK,gBAAgB,EAAE,EAAA,SAAS,EAAA;wBAC3C,IAAI,MAAM,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC;wBACjG,IAAI,UAAU,GAAG,EAAE,CAAC;wBACpB,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;wBACxC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE;4BACxC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;4BACjC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE;gCAC9B,UAAU,IAAI,oBAAoB,GAAG,IAAI,CAAC,IAAI,GAAG,6BAA6B,GAAG,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;6BACnH;yBACJ,CAAC,CAAC;wBACH,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,mBAAmB,GAAG,MAAM,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC;wBACnJ,IAAI,EAAE,CAAC;wBACPA,MAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;wBAC/B,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC,CAAC;qBAC9C;iBACJ;aACJ;YACD,OAAO,GAAG,CAAC;SACd;CACR,CAAC,AAEF,AAAwB;;AC7MxB;;;;;;AAMA,AACA,AAEA,AACA,AACA,AAEA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACvC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;;AAExC,IAAI,IAAI,CAAC;IACL,IAAI,eAAA,GAAG;QACH,IAAI,CAAC,cAAc,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;KACrB;IACD,MAAM,EAAE;QACJ,kBAAkB,EAAE,gBAAgB;QACpC,iBAAiB,EAAE,YAAY;QAC/B,+BAA+B,EAAE,WAAW;QAC5C,2BAA2B,EAAE,WAAW;QACxC,oBAAoB,EAAE,eAAe;QACrC,mBAAmB,EAAE,SAAS;QAC9B,mBAAmB,EAAE,cAAc;QACnC,gBAAgB,EAAE,WAAW;QAC7B,kBAAkB,CAAC,QAAQ;KAC9B;IACD,IAAI,EAAE;QACF,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,aAAa;QACrB,cAAc,EAAE,gBAAgB;QAChC,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,YAAY;QACvB,GAAG,EAAE,SAAS;QACd,OAAO,EAAE,cAAc;QACvB,MAAM,CAAC,YAAY;QACnB,UAAU,EAAE,aAAa;KAC5B;IACD,MAAM,iBAAA,GAAG;QACL,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KACvC;IACD,OAAO,kBAAA,CAAC,GAAG,EAAE;QACT,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE;YAChC,KAAK,EAAE,QAAQ;SAClB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACjC;IACD,MAAM,iBAAA,EAAE;OACL,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;KACtB;IACD,SAAS,oBAAA,EAAE;OACR,IAAI,CAAC,WAAW,EAAE,CAAC;KACrB;IACD,cAAc,yBAAA,GAAG;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC7H;IACD,UAAU,qBAAA,GAAG;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KAC9B;IACD,SAAS,oBAAA,GAAG;QACR,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACxF;IACD,aAAa,wBAAA,GAAG;QACZ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrF,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAA,OAAO,EAAA;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;IACD,YAAY,uBAAA,GAAG;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAChF,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;KACxF;IACD,OAAO,kBAAA,EAAE;QACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACrC;CACJ,CAAC,CAAC;;"} -------------------------------------------------------------------------------- /dist/console.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * console v1.0.0 3 | * (c) 2017 xiaojue 4 | */ 5 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t():"function"==typeof define&&define.amd?define(t):t()}(this,function(){"use strict";function e(e,t){if("undefined"==typeof document)return t;e=e||"";var n=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");return o.type="text/css",o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e)),n.appendChild(o),t}e('/**\n * @fileoverview console style\n */\n#__console_wrap {\n font-size:12px;\n font-family: "Microsoft YaHei",Arial,"Helvetica";\n}\n.-c-switch{\n display: block;\n position: fixed;\n right: 10px;\n bottom: 10px;\n z-index: 2147483647;\n border-radius: 4px;\n box-shadow: 0 0 8px rgba( 0, 0, 0, .4);\n padding: 8px 16px;\n line-height: 1;\n color: #fff;\n background-color: #0088cc;\n}\n\n.-c-content,.-c-eles{\n display: none;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 40px;\n z-index: 2147483647;\n border-top: 1px solid #eee;\n overflow-x: hidden;\n overflow-y: auto;\n max-height: 50%;\n background-color: #cbf3ff;\n -webkit-overflow-scrolling: touch;\n border-top:1px solid #d9d9d9;\n opacity:.9;\n}\n\n.-c-log{\n margin: 0;\n border-bottom: 1px solid #eee;\n padding: 6px 8px;\n overflow: hidden;\n line-height: 1.3;\n word-break: break-word;\n}\n\n.-c-toolbar,.-c-tab{\n display: none;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n height:40px;\n z-index: 2147483647;\n line-height: 40px;\n background-color: #cbf3ff;\n opacity:.9;\n}\n\n.-c-tab{\n top:0px;\n}\n\n.-c-tool{\n position: relative;\n float: left;\n width: 50%;\n text-align: center;\n text-decoration: none;\n color: #000;\n}\n\n.-c-clear::before,.-c-console::before,.-c-refresh::before{\n content: "";\n position: absolute;\n top: 7px;\n bottom: 7px;\n right: 0;\n border-left: 1px solid #d9d9d9;\n}\n\n.-c-current{\n color:#0088cc;\n}\n\n.-c-eles div{\n color:#990884;\n margin:5px;\n}\n.-c-eles span{\n color:#444;\n}\n.-c-eles span.val{\n color:#1f6b7a;\n}\n.-c-eles span.key{\n color:#900b09;\n}\n.-c-eles .-c-omit{\n display:none;\n}\n\n@-webkit-keyframes twinkling{\n 0%{\n opacity:0;\n }\n 100%{\n background-color:green;\n opacity:0.5;\n }\n}\n\n.-c-dialog {\n width:80%;\n height:auto;\n border:#ccc solid 1px;\n margin-top:20%;\n background:#eee;\n position:absolute;\n top:0px;\n z-index:99999;\n left:50%;\n margin-left:-40%;\n}\n.-c-dialog .textareaParent{\n position:relative;\n}\n.-c-dialog .textareaParent pre{\n display:block;\n visibility:hidden; \n margin:0;\n white-space: pre-wrap; \n word-wrap: break-word; \n}\n.-c-dialog .textareaParent pre span{\n display:block;\n}\n.-c-dialog textarea{\n outline:none;\n resize:none;\n border:none;\n left:0px;\n top:0px;\n position:absolute;\n width:100%;\n height:100%;\n}\n.-c-dialog .-c-elepath{\n color:green;\n}\n',void 0);var t='
\n \n
\n

\n \n
\n

\n
\n
Console
\n
\n
\n
\n
Clear
\n
Hide
\n
\n
\n
Refresh
\n
Hide
\n
\n
\n
Console
\n
Elemenets
\n
\n
\n',n=function(){this.delegateEventSplitter=/^(\S+)\s*(.*)$/,this.events&&this._bindEventMap()};n.prototype.isFunction=function(e){return"[object Function]"===Object.prototype.toString.call(e)},n.prototype.$=function(e){return document.querySelector(e)},n.prototype._bindEventMap=function(){var e=this;for(var t in this.events)if(e.events.hasOwnProperty(t)){var n=e.events[t];if(e.isFunction(n)||(n=e[n]),!n)continue;var o=t.match(e.delegateEventSplitter),i=o[1],s=o[2];e.$(s).addEventListener(i,n.bind(e))}};var o,i=function(e){function t(){e.call(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.createElement=function(e,t,n){var o,i=document.createElement(e);for(o in t)t.hasOwnProperty(o)&&i.setAttribute(o,t[o]);return n&&this.html(i,n),i},t.prototype.show=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return e.forEach(function(e){e.style.display="block"}),this},t.prototype.hide=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];return e.forEach(function(e){e.style.display="none"}),this},t.prototype.append=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return t.forEach(function(t){e.appendChild(t)}),this},t.prototype._put=function(e,t){for(var n=[],o=arguments.length-2;o-- >0;)n[o]=arguments[o+2];n.forEach(function(n){t?"string"==typeof n.textContent?n.textContent=e:n.innerText=e:n.innerHTML=e})},t.prototype.html=function e(t,e){this._put(e,0,t)},t.prototype.text=function e(t,e){this._put(e,1,t)},t.prototype.addClass=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return t.forEach(function(t){t.classList.add(e)}),this},t.prototype.removeClass=function(e){for(var t=[],n=arguments.length-1;n-- >0;)t[n]=arguments[n+1];return t.forEach(function(t){t.classList.remove(e)}),this},t}(n),s=function(e){function t(t){var n=this;if(Object.assign(this,t),this.render(),this.eles)for(var o in this.eles)n.eles.hasOwnProperty(o)&&(n[o]=n.$(n.eles[o]));return e.call(this),this.init(),this}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){},t}(i),c={fixConsole:function(){var e=this;this.consoleMethods.forEach(function(t){var n=window.console[t];window.console[t]=function(){for(var t=[],o=arguments.length;o--;)t[o]=arguments[o];e.pushLog&&e.pushLog(t),n.apply(console,t)}})}},r=0,l={},a={refreshDomTree:function(e){var t=this._recursionNode(document,[]);this.removeAllListeners(e,"click"),this.removeAllListeners(e,"touchstart"),this.removeAllListeners(e,"touchend"),e.innerHTML=t.join(""),this.addListener(e,"touchstart",this._touchStart.bind(this),!1),this.addListener(e,"touchend",this._touchEnd.bind(this),!1),this.addListener(e,"click",this._toggleDiv.bind(this),!1),this._eachOmit(e.querySelectorAll(".-c-omit"))},createDomTree:function(e){var t=this._recursionNode(document,[]);e.innerHTML=t.join(""),this.addListener(e,"click",this._toggleDiv.bind(this),!1),this.addListener(e,"touchstart",this._touchStart.bind(this),!1),this.addListener(e,"touchend",this._touchEnd.bind(this),!1),this._eachOmit(e.querySelectorAll(".-c-omit"))},changeStyle:function(){var e=this.dialog,t="";try{t=JSON.parse(e.querySelector(".__console_currentStyle").value)}catch(e){return void console.error("rewrite style must be standard JSON object string")}var n=e.querySelector(".__console_currentStyle").getAttribute("data-uuid"),o=document.querySelector('[console_uuid="'+n+'"]'),i=t.sheets.join().replace(/(\}.*?\{)/g,"").replace(/(.*?\{)/g,"").replace(/(\}$)/,"");o.style.cssText=t.cssText+i,e.close(),this.refresh()},longPress:function(e){this._showStyle(e)},_touchStart:function(e){var t=this;o=setTimeout(function(){t.longPress(e)},800)},_touchEnd:function(){clearTimeout(o)},css:function(e){var t,n=document.styleSheets,o={},i=[];e.matches=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.msMatchesSelector||e.oMatchesSelector;for(t in n)if(n.hasOwnProperty(t)){var s=n[t].rules||n[t].cssRules;for(var c in s)e.matches(s[c].selectorText)&&i.push(s[c].cssText)}o.sheets=i;var r=e.style.cssText;return r&&(o.cssText=r),o},_showStyle:function(e){var t=e.target;if(1===t.nodeType&&"div"===t.tagName.toLowerCase()){var n=t.getAttribute("data-uuid"),o=document.querySelector('[console_uuid="'+n+'"]'),i=JSON.stringify(this.css(o)),s=this.dialog;s.querySelector(".__console_currentStyle").value=i,s.querySelector(".__console_currentStyle").setAttribute("data-uuid",n),s.querySelector(".-c-elepath").innerText=t.innerText,s.querySelector(".-c-textare_pre").innerText=i,s.show()}},_showBorder:function(e){var t=["html","head","title","meta","body","script","style"];t.indexOf(e.tagName.toLocaleLowerCase())>-1||(e.style["-webkit-animation"]="twinkling .5s infinite ease-in-out",setTimeout(function(){e.style["-webkit-animation"]=""},500),this._setTargetY(e))},_setTargetY:function(e){var t=0,n=0;if(e.offsetParent)do t+=e.offsetTop,n+=e.offsetParent?e.offsetParent.scrollTop:0;while(e=e.offsetParent);window.scrollTop=t-n},_toggleDiv:function(e){var t=e.target;if(1===t.nodeType&&"div"===t.tagName.toLowerCase()){for(var n=0;n