You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.1 KiB
JavaScript
64 lines
2.1 KiB
JavaScript
/*@flow*/
|
|
/*:: const define = () => {}; */
|
|
define([
|
|
'/api/config',
|
|
'/bower_components/less/dist/less.js'
|
|
], function (Config, Less) { /*::});module.exports = (function() {
|
|
const Config = (undefined:any);
|
|
const Less = (undefined:any);
|
|
*/
|
|
|
|
var module = { exports: {} };
|
|
var key = Config.requireConf.urlArgs;
|
|
var localStorage = window.localStorage || {};
|
|
|
|
var fixURL = function (url) {
|
|
var mark = (url.indexOf('?') !== -1) ? '&' : '?';
|
|
return url + mark + key;
|
|
};
|
|
|
|
var doXHR = Less.FileManager.prototype.doXHR;
|
|
Less.FileManager.prototype.doXHR = function (url, type, callback, errback) {
|
|
url = fixURL(url);
|
|
//console.log("xhr: " + url);
|
|
return doXHR(url, type, callback, errback);
|
|
};
|
|
|
|
var inject = function (cssText, url) {
|
|
var curStyle = document.createElement('style');
|
|
curStyle.setAttribute('data-original-src', url);
|
|
curStyle.type = 'text/css';
|
|
curStyle.appendChild(document.createTextNode(cssText));
|
|
if (!document.head) { throw new Error(); }
|
|
document.head.appendChild(curStyle);
|
|
};
|
|
|
|
var checkCache = function () {
|
|
if (localStorage['LESS_CACHE'] === key) { return; }
|
|
Object.keys(localStorage).forEach(function (k) {
|
|
if (k.indexOf('LESS_CACHE|') !== 0) { return; }
|
|
delete localStorage[k];
|
|
});
|
|
localStorage['LESS_CACHE'] = key;
|
|
};
|
|
|
|
var load = module.exports.load = function (url /*:string*/, cb /*:()=>void*/) {
|
|
checkCache();
|
|
if (localStorage['LESS_CACHE|' + key + '|' + url]) {
|
|
inject(localStorage['LESS_CACHE|' + key + '|' + url], url);
|
|
cb();
|
|
return;
|
|
}
|
|
Less.render('@import (multiple) "' + url + '";', {}, function(err, css) {
|
|
if (err) {
|
|
console.log(err);
|
|
return;
|
|
}
|
|
localStorage['LESS_CACHE|' + key + '|' + url] = css.css;
|
|
inject(css.css, url);
|
|
cb();
|
|
}, window.less);
|
|
};
|
|
|
|
return module.exports;
|
|
})/*::()*/; |