mirror of
https://github.com/chinchang/web-maker.git
synced 2025-08-02 03:20:15 +02:00
lazy load compiler scripts.
This commit is contained in:
@@ -506,6 +506,7 @@
|
|||||||
<script src="lib/codemirror/addon/edit/matchbrackets.js"></script>
|
<script src="lib/codemirror/addon/edit/matchbrackets.js"></script>
|
||||||
<script src="lib/codemirror/addon/edit/closebrackets.js"></script>
|
<script src="lib/codemirror/addon/edit/closebrackets.js"></script>
|
||||||
<script src="lib/codemirror/addon/edit/closetag.js"></script>
|
<script src="lib/codemirror/addon/edit/closetag.js"></script>
|
||||||
|
<script src="lib/codemirror/addon/comment/comment.js"></script>
|
||||||
<script src="lib/codemirror/addon/mode/loadmode.js"></script>
|
<script src="lib/codemirror/addon/mode/loadmode.js"></script>
|
||||||
|
|
||||||
<script src="lib/codemirror/mode/xml/xml.js"></script>
|
<script src="lib/codemirror/mode/xml/xml.js"></script>
|
||||||
@@ -515,14 +516,10 @@
|
|||||||
<script src="lib/codemirror/keymap/sublime.js"></script>
|
<script src="lib/codemirror/keymap/sublime.js"></script>
|
||||||
<script src="lib/emmet.js"></script>
|
<script src="lib/emmet.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="lib/sass.js"></script>
|
|
||||||
<script src="lib/less.min.js"></script>
|
|
||||||
<script src="lib/babel.min.js"></script>
|
|
||||||
<script src="lib/coffee-script.js"></script>
|
|
||||||
<script src="lib/split.js"></script>
|
<script src="lib/split.js"></script>
|
||||||
|
|
||||||
<script src="deferred.js"></script>
|
<script src="deferred.js"></script>
|
||||||
|
<script src="loader.js"></script>
|
||||||
<script src="script.js"></script>
|
<script src="script.js"></script>
|
||||||
<script src="dropdown.js"></script>
|
<script src="dropdown.js"></script>
|
||||||
|
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
|
(function(w) {
|
||||||
|
|
||||||
// https://github.com/filamentgroup/loadCSS/blob/master/src/loadCSS.js
|
// https://github.com/filamentgroup/loadCSS/blob/master/src/loadCSS.js
|
||||||
var loadCSS = function( href, before, media ){
|
window.loadCSS = function( href, before, media ){
|
||||||
// Arguments explained:
|
// Arguments explained:
|
||||||
// `href` [REQUIRED] is the URL for your CSS file.
|
// `href` [REQUIRED] is the URL for your CSS file.
|
||||||
// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before
|
// `before` [OPTIONAL] is the element the script should use as a reference for injecting our stylesheet <link> before
|
||||||
@@ -67,7 +69,7 @@ var loadCSS = function( href, before, media ){
|
|||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
var loadJS = function( src, cb ) {
|
window.loadJS = function( src, cb ) {
|
||||||
var d = deferred();
|
var d = deferred();
|
||||||
var ref = w.document.getElementsByTagName( "script" )[ 0 ];
|
var ref = w.document.getElementsByTagName( "script" )[ 0 ];
|
||||||
var script = w.document.createElement( "script" );
|
var script = w.document.createElement( "script" );
|
||||||
@@ -79,3 +81,5 @@ var loadJS = function( src, cb ) {
|
|||||||
};
|
};
|
||||||
return d.promise;
|
return d.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
})(window);
|
@@ -14,7 +14,7 @@
|
|||||||
COFFEESCRIPT: 'coffee'
|
COFFEESCRIPT: 'coffee'
|
||||||
};
|
};
|
||||||
var CssModes = {
|
var CssModes = {
|
||||||
CSS: 'js',
|
CSS: 'css',
|
||||||
SCSS: 'scss',
|
SCSS: 'scss',
|
||||||
LESS: 'less'
|
LESS: 'less'
|
||||||
};
|
};
|
||||||
@@ -122,9 +122,35 @@
|
|||||||
saveSetting('code', code);
|
saveSetting('code', code);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loaded the code comiler based on the mode selected
|
||||||
|
*/
|
||||||
|
function handleModeRequirements(mode) {
|
||||||
|
// Exit if already loaded
|
||||||
|
if (modes[mode].hasLoaded) { return; }
|
||||||
|
|
||||||
|
function setLoadedFlag() {
|
||||||
|
modes[mode].hasLoaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mode === CssModes.LESS) {
|
||||||
|
loadJS('lib/less.min.js').then(setLoadedFlag);
|
||||||
|
} else if (mode === CssModes.SCSS) {
|
||||||
|
loadJS('lib/sass.js').then(function () {
|
||||||
|
window.sass = new Sass('lib/sass.worker.js');
|
||||||
|
setLoadedFlag();
|
||||||
|
});
|
||||||
|
} else if (mode === JsModes.COFFEESCRIPT) {
|
||||||
|
loadJS('lib/coffee-script.js').then(setLoadedFlag);
|
||||||
|
} else if (mode === JsModes.ES6) {
|
||||||
|
loadJS('lib/babel.min.js').then(setLoadedFlag);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function updateCssMode(value) {
|
function updateCssMode(value) {
|
||||||
cssMode = value;
|
cssMode = value;
|
||||||
cssModelLabel.textContent = modes[value].label;
|
cssModelLabel.textContent = modes[value].label;
|
||||||
|
handleModeRequirements(value);
|
||||||
CodeMirror.autoLoadMode(editur.cm.css, modes[value].cmMode);
|
CodeMirror.autoLoadMode(editur.cm.css, modes[value].cmMode);
|
||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
cssMode: value
|
cssMode: value
|
||||||
@@ -133,11 +159,15 @@
|
|||||||
function updateJsMode(value) {
|
function updateJsMode(value) {
|
||||||
jsMode = value;
|
jsMode = value;
|
||||||
jsModelLabel.textContent = modes[value].label;
|
jsModelLabel.textContent = modes[value].label;
|
||||||
|
handleModeRequirements(value);
|
||||||
CodeMirror.autoLoadMode(editur.cm.js, modes[value].cmMode);
|
CodeMirror.autoLoadMode(editur.cm.js, modes[value].cmMode);
|
||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
jsMode: value
|
jsMode: value
|
||||||
}, function () {});
|
}, function () {});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// computeHtml, computeCss & computeJs evaluate the final code according
|
||||||
|
// to whatever mode is selected and resolve the returned promise with the code.
|
||||||
function computeHtml() {
|
function computeHtml() {
|
||||||
return editur.cm.html.getValue();
|
return editur.cm.html.getValue();
|
||||||
}
|
}
|
||||||
@@ -276,7 +306,6 @@
|
|||||||
var lastCode;
|
var lastCode;
|
||||||
|
|
||||||
CodeMirror.modeURL = "lib/codemirror/mode/%N/%N.js";
|
CodeMirror.modeURL = "lib/codemirror/mode/%N/%N.js";
|
||||||
window.sass = new Sass('lib/sass.worker.js');
|
|
||||||
|
|
||||||
layoutBtn1.addEventListener('click', function () { saveSetting('layoutMode', 1); toggleLayout(1); return false; });
|
layoutBtn1.addEventListener('click', function () { saveSetting('layoutMode', 1); toggleLayout(1); return false; });
|
||||||
layoutBtn2.addEventListener('click', function () { saveSetting('layoutMode', 2); toggleLayout(2); return false; });
|
layoutBtn2.addEventListener('click', function () { saveSetting('layoutMode', 2); toggleLayout(2); return false; });
|
||||||
|
Reference in New Issue
Block a user