diff --git a/package.json b/package.json
index ad4aab4..2ac0c55 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "eruda",
- "version": "0.4.1",
+ "version": "0.5.0",
"description": "Console for mobile JavaScript",
"main": "dist/eruda.js",
"scripts": {
diff --git a/script/icomoon.js b/script/icomoon.js
index 3fc8da5..07fb88b 100644
--- a/script/icomoon.js
+++ b/script/icomoon.js
@@ -31,7 +31,7 @@ function genCssFile(fontData)
function writeCssFile(data)
{
- fs.writeFile(path.resolve(__dirname, '../src/icon.css'), data, 'utf-8', function (err, data)
+ fs.writeFile(path.resolve(__dirname, '../src/style/icon.css'), data, 'utf-8', function (err, data)
{
if (err) return console.log(err);
diff --git a/src/Console/Console.es6 b/src/Console/Console.es6
index 7d1eb76..ff4df88 100644
--- a/src/Console/Console.es6
+++ b/src/Console/Console.es6
@@ -3,14 +3,14 @@ import Tool from '../DevTools/Tool.es6'
import util from '../lib/util'
import config from '../lib/config.es6'
-require('./Console.scss');
-
export default class Console extends Tool
{
constructor()
{
super();
+ require('./Console.scss');
+
this.name = 'console';
}
init($el, parent)
@@ -137,7 +137,10 @@ export default class Console extends Tool
log.on('viewJson', (data) =>
{
- parent.get('sources').set('json', data);
+ var sources = parent.get('sources');
+ if (!sources) return;
+
+ sources.set('json', data);
parent.showTool('sources');
}).on('insert', (log) =>
{
@@ -186,6 +189,13 @@ export default class Console extends Tool
case 'overrideConsole': return val ? this.overrideConsole() : this.restoreConsole();
}
});
+
+ var settings = this._parent.get('settings');
+
+ settings.add(cfg, 'catchGlobalErr', 'Catch Global Errors')
+ .add(cfg, 'overrideConsole', 'Override Console')
+ .add(cfg, 'displayIfErr', 'Auto Display If Error Occurs')
+ .separator()
}
}
diff --git a/src/Console/Console.scss b/src/Console/Console.scss
index 189ef87..5cb764c 100644
--- a/src/Console/Console.scss
+++ b/src/Console/Console.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.console {
diff --git a/src/Console/Log.es6 b/src/Console/Log.es6
index ad94851..077de6e 100644
--- a/src/Console/Log.es6
+++ b/src/Console/Log.es6
@@ -2,14 +2,14 @@ import util from '../lib/util'
import highlight from '../lib/highlight.es6'
import beautify from 'js-beautify'
-require('./Log.scss');
-
export default class Log extends util.Emitter
{
constructor($el, parent)
{
super();
+ require('./Log.scss');
+
this._$el = $el;
this._parent = parent;
this._logs = [];
diff --git a/src/Console/Log.scss b/src/Console/Log.scss
index 37a6967..0c43a03 100644
--- a/src/Console/Log.scss
+++ b/src/Console/Log.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools { .console {
.logs {
diff --git a/src/DevTools/DevTools.es6 b/src/DevTools/DevTools.es6
index 316b686..db369f9 100644
--- a/src/DevTools/DevTools.es6
+++ b/src/DevTools/DevTools.es6
@@ -3,14 +3,14 @@ import util from '../lib/util'
import Tool from './Tool.es6'
import config from '../lib/config.es6'
-require('./DevTools.scss');
-
export default class DevTools extends util.Emitter
{
constructor($parent)
{
super();
+ require('./DevTools.scss');
+
this.$parent = $parent;
this._isShow = false;
this._opacity = 1;
@@ -49,7 +49,7 @@ export default class DevTools extends util.Emitter
var name = tool.name;
- this._$tools.append(`
+
\ No newline at end of file
diff --git a/src/EntryBtn/EntryBtn.scss b/src/EntryBtn/EntryBtn.scss
index 7e5af79..e7836f2 100644
--- a/src/EntryBtn/EntryBtn.scss
+++ b/src/EntryBtn/EntryBtn.scss
@@ -1,4 +1,4 @@
-.container { .home-btn {
+.container { .entry-btn {
width: 40px;
height: 40px;
background: #000;
diff --git a/src/Features/Features.es6 b/src/Features/Features.es6
index cb021e5..5a810a1 100644
--- a/src/Features/Features.es6
+++ b/src/Features/Features.es6
@@ -2,8 +2,6 @@ import Tool from '../DevTools/Tool.es6'
import util from '../lib/util'
import modernizr from './modernizr'
-require('./Features.scss');
-
var featureList = require('./featureList.json');
var featureNames = featureList['feature-detects'],
@@ -14,6 +12,9 @@ export default class Features extends Tool
constructor()
{
super();
+
+ require('./Features.scss');
+
this.name = 'features';
this._tpl = require('./Features.hbs');
this._features = {};
diff --git a/src/Features/Features.scss b/src/Features/Features.scss
index add10e4..f088cb7 100644
--- a/src/Features/Features.scss
+++ b/src/Features/Features.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.features {
diff --git a/src/Info/Info.es6 b/src/Info/Info.es6
index 52898cb..e41a4d5 100644
--- a/src/Info/Info.es6
+++ b/src/Info/Info.es6
@@ -2,13 +2,14 @@ import Tool from '../DevTools/Tool.es6'
import util from '../lib/util'
import defInfo from './defInfo.es6'
-require('./Info.scss');
-
export default class Info extends Tool
{
constructor()
{
super();
+
+ require('./Info.scss');
+
this.name = 'info';
this._tpl = require('./Info.hbs');
this._msgs = [];
diff --git a/src/Info/Info.scss b/src/Info/Info.scss
index 0cdd112..4a65ac5 100644
--- a/src/Info/Info.scss
+++ b/src/Info/Info.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.info {
diff --git a/src/Network/Network.es6 b/src/Network/Network.es6
index 72d4982..f64b42f 100644
--- a/src/Network/Network.es6
+++ b/src/Network/Network.es6
@@ -3,13 +3,14 @@ import Request from './Request.es6'
import util from '../lib/util'
import config from '../lib/config.es6'
-require('./Network.scss');
-
export default class Network extends Tool
{
constructor()
{
super();
+
+ require('./Network.scss');
+
this.name = 'network';
this._performanceTimingData = [];
this._requests = {};
@@ -136,6 +137,8 @@ export default class Network extends Tool
var sources = parent.get('sources');
+ if (!sources) return;
+
sources.set('http', {
url: data.url,
resTxt: data.resTxt,
@@ -253,6 +256,10 @@ export default class Network extends Tool
case 'overrideXhr': return val ? this.overrideXhr() : this.restoreXhr();
}
});
+
+ var settings = this._parent.get('settings');
+ settings.add(cfg, 'overrideXhr', 'Catch Ajax Requests')
+ .separator();
}
_render()
{
diff --git a/src/Network/Network.scss b/src/Network/Network.scss
index fddb31e..38e70f3 100644
--- a/src/Network/Network.scss
+++ b/src/Network/Network.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.network {
diff --git a/src/Resources/Resources.es6 b/src/Resources/Resources.es6
index 5af40e9..bb8d03c 100644
--- a/src/Resources/Resources.es6
+++ b/src/Resources/Resources.es6
@@ -1,13 +1,14 @@
import Tool from '../DevTools/Tool.es6'
import util from '../lib/util'
-require('./Resources.scss');
-
export default class Resources extends Tool
{
constructor()
{
super();
+
+ require('./Resources.scss');
+
this.name = 'resources';
this._localStoreData = [];
this._cookieData = [];
@@ -180,6 +181,7 @@ export default class Resources extends Tool
function showSources(type, data)
{
var sources = parent.get('sources');
+ if (!sources) return;
sources.set(type, data);
diff --git a/src/Resources/Resources.scss b/src/Resources/Resources.scss
index 574a480..0680657 100644
--- a/src/Resources/Resources.scss
+++ b/src/Resources/Resources.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.resources {
diff --git a/src/Settings/Settings.es6 b/src/Settings/Settings.es6
index 64edcea..5f87389 100644
--- a/src/Settings/Settings.es6
+++ b/src/Settings/Settings.es6
@@ -1,13 +1,14 @@
import Tool from '../DevTools/Tool.es6'
import util from '../lib/util'
-require('./Settings.scss');
-
export default class Settings extends Tool
{
constructor()
{
super();
+
+ require('./Settings.scss');
+
this.name = 'settings';
this._switchTpl = require('./switch.hbs');
this._settings = [];
diff --git a/src/Settings/Settings.scss b/src/Settings/Settings.scss
index 9b10313..cf3b98b 100644
--- a/src/Settings/Settings.scss
+++ b/src/Settings/Settings.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.settings {
diff --git a/src/Snippets/Snippets.es6 b/src/Snippets/Snippets.es6
index 837bff9..2991674 100644
--- a/src/Snippets/Snippets.es6
+++ b/src/Snippets/Snippets.es6
@@ -2,13 +2,14 @@ import Tool from '../DevTools/Tool.es6'
import defSnippets from './defSnippets.es6'
import util from '../lib/util'
-require('./Snippets.scss');
-
export default class Snippets extends Tool
{
constructor()
{
super();
+
+ require('./Snippets.scss');
+
this.name = 'snippets';
this._snippets = [];
diff --git a/src/Snippets/Snippets.scss b/src/Snippets/Snippets.scss
index 79fd53b..145b031 100644
--- a/src/Snippets/Snippets.scss
+++ b/src/Snippets/Snippets.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.snippets {
diff --git a/src/Sources/Sources.es6 b/src/Sources/Sources.es6
index 9b37b2b..0074170 100644
--- a/src/Sources/Sources.es6
+++ b/src/Sources/Sources.es6
@@ -4,13 +4,14 @@ import beautify from 'js-beautify'
import highlight from '../lib/highlight.es6'
import JsonViewer from './JsonViewer.es6'
-require('./Sources.scss');
-
export default class Sources extends Tool
{
constructor()
{
super();
+
+ require('./Sources.scss');
+
this.name = 'sources';
this._isInit = false;
diff --git a/src/Sources/Sources.scss b/src/Sources/Sources.scss
index 49ba54c..779a4c0 100644
--- a/src/Sources/Sources.scss
+++ b/src/Sources/Sources.scss
@@ -1,4 +1,4 @@
-@import "../variable";
+@import "../style/variable";
.dev-tools { .tools {
.sources {
diff --git a/src/index.es6 b/src/index.es6
index 2f2ca3b..ba9c44f 100644
--- a/src/index.es6
+++ b/src/index.es6
@@ -1,4 +1,4 @@
-import HomeBtn from './EntryBtn/EntryBtn.es6'
+import EntryBtn from './EntryBtn/EntryBtn.es6'
import DevTools from './DevTools/DevTools.es6'
import Console from './Console/Console.es6'
import Network from './Network/Network.es6'
@@ -12,96 +12,117 @@ import Settings from './Settings/Settings.es6'
import util from './lib/util'
import config from './lib/config.es6'
-require('./style.scss');
-require('./reset.scss');
-require('./icon.css');
-
-var $container;
-
-appendContainer();
-
-var devTools = new DevTools($container);
-
-var homeBtn = new HomeBtn($container);
-
-homeBtn.on('click', () => devTools.toggle());
-
-var consoleTool = new Console(),
- network = new Network(),
- elements = new Elements(),
- snippets = new Snippets(),
- resources = new Resources(),
- info = new Info(),
- sources = new Sources(),
- features = new Features(),
- settings = new Settings();
-
-devTools.add(consoleTool)
- .add(elements)
- .add(network)
- .add(resources)
- .add(info)
- .add(snippets)
- .add(sources)
- .add(features)
- .add(settings)
- .showTool('console');
-
-settings.separator()
- .add(devTools.config, 'activeEruda', 'Always Activated')
- .separator()
- .add(homeBtn.config, 'rememberPos', 'Remember Entry Button Position')
- .separator()
- .add(devTools.config, 'transparent', 'Transparent')
- .add(devTools.config, 'halfScreen', 'Half Screen Size')
- .separator()
- .add(consoleTool.config, 'catchGlobalErr', 'Catch Global Errors')
- .add(consoleTool.config, 'overrideConsole', 'Override Console')
- .add(consoleTool.config, 'displayIfErr', 'Auto Display If Error Occurs')
- .separator()
- .add(network.config, 'overrideXhr', 'Catch Ajax Requests');
-
-function appendContainer()
-{
- if (eruda) eruda.destroy();
-
- var containerNode = document.createElement('div');
- containerNode.id = 'eruda';
- containerNode.className = 'eruda-container';
- document.documentElement.appendChild(containerNode);
- $container = util.$(containerNode);
-}
-
module.exports = {
+ init(options)
+ {
+ require('./style/style.scss');
+ require('./style/reset.scss');
+ require('./style/icon.css');
+
+ options = options || {};
+ util.defaults(options, {
+ tool: ['console', 'elements', 'network', 'resources', 'sources', 'info', 'snippets', 'features']
+ });
+ options.tool = util.toArr(options.tool).reverse();
+ this._options = options;
+
+ this.config = config;
+ this.util = util;
+
+ this.Console = Console;
+ this.Elements = Elements;
+ this.Network = Network;
+ this.Sources = Sources;
+ this.Resources = Resources;
+ this.Info = Info;
+ this.Snippets = Snippets;
+ this.Features = Features;
+
+ this._initContainer();
+ this._initDevTools();
+ this._initEntryBtn();
+ this._initSettings();
+ this._initTools();
+ },
get(name)
{
- return util.isUndef(name) ? devTools : devTools.get(name);
+ return util.isUndef(name) ? this._devTools : this._devTools.get(name);
},
add(tool)
{
- devTools.add(tool);
+ this._devTools.add(tool);
return this;
},
remove(name)
{
- devTools.remove(name);
+ this._devTools.remove(name);
return this;
},
show(name)
{
- util.isUndef(name) ? devTools.show() : devTools.showTool(name);
+ util.isUndef(name) ? this._devTools.show() : this._devTools.showTool(name);
return this;
},
- destroy()
+ _initContainer()
{
- devTools.destroy();
- $container.remove();
- window.eruda = undefined;
+ var el;
+
+ var container = this._options.container;
+ if (util.isEl(container))
+ {
+ el = container;
+ } else
+ {
+ el = document.createElement('div');
+ document.documentElement.appendChild(el);
+ el.id = 'eruda';
+ el.className = 'eruda-container'
+ }
+
+ this._$el = util.$(el);
},
- config,
- util
+ _initDevTools()
+ {
+ this._devTools = new DevTools(this._$el);
+ },
+ _initEntryBtn()
+ {
+ var entryBtn = this._entryBtn = new EntryBtn(this._$el);
+
+ entryBtn.on('click', () => this._devTools.toggle());
+ },
+ _initSettings()
+ {
+ var devTools = this._devTools;
+
+ var settings = new Settings();
+ devTools.add(settings);
+
+ settings.separator()
+ .add(this._entryBtn.config, 'rememberPos', 'Remember Entry Button Position')
+ .separator()
+ .add(devTools.config, 'activeEruda', 'Always Activated')
+ .add(devTools.config, 'transparent', 'Transparent')
+ .add(devTools.config, 'halfScreen', 'Half Screen Size')
+ .separator();
+ },
+ _initTools()
+ {
+ var tool = this._options.tool,
+ devTools = this._devTools;
+
+ tool.forEach(name =>
+ {
+ var Tool = this[util.upperFirst(name)];
+
+ if (Tool) devTools.add(new Tool());
+ });
+
+ devTools.showTool(util.last(tool) || 'settings');
+ }
};
+
diff --git a/src/icon.css b/src/style/icon.css
similarity index 100%
rename from src/icon.css
rename to src/style/icon.css
diff --git a/src/reset.scss b/src/style/reset.scss
similarity index 100%
rename from src/reset.scss
rename to src/style/reset.scss
diff --git a/src/style.scss b/src/style/style.scss
similarity index 100%
rename from src/style.scss
rename to src/style/style.scss
diff --git a/src/variable.scss b/src/style/variable.scss
similarity index 100%
rename from src/variable.scss
rename to src/style/variable.scss
diff --git a/test/index.html b/test/index.html
index 0a1e712..4c48cc1 100644
--- a/test/index.html
+++ b/test/index.html
@@ -5,13 +5,8 @@
Eruda
-
+
+