{"version":3,"sources":["l.js"],"names":["window","undefined","isA","a","b","Array","appendElmt","type","attrs","cb","i","e","D","createElement","readyState","onreadystatechange","onload","header","appendChild","document","getElementsByTagName","length","typeJS","scriptStr","documentElement","aliases","scripts","scriptTag","script","innerHTML","replace","ljs","urlParse","url","parts","u","m","checkLoaded","src","match","loaded","errorHandlers","loader","onError","l","loadjs","ocb","onerror","error","currentTarget","parentNode","removeChild","c","f","id","loadcss","load","argv","argc","addAliases","_aliases","Function","args","slice","push","apply","call","links","getAttribute","rel"],"mappings":"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","file":"../l.min.js","sourcesContent":["/*\n lsj v0.2.0\n https://github.com/malko/l.js\n*/\n\n(function (window, undefined) {\n /*\n * script for js/css parallel loading with dependancies management\n * @author Jonathan Gotti < jgotti at jgotti dot net >\n * @licence dual licence mit / gpl\n * @since 2012-04-12\n * @todo add prefetching using text/cache for js files\n * @changelog\n * - 2019-01-17 - add support for error handlers + bugFix on multiple inclusion of filled script tag fix issues #15 and #17\n * - 2016-08-22 - remove global eval and fix issue #13\n * - 2014-06-26 - bugfix in css loaded check when hashbang is used\n * - 2014-05-25 - fallback support rewrite + null id bug correction + minification work\n * - 2014-05-21 - add cdn fallback support with hashbang url\n * - 2014-05-22 - add support for relative paths for stylesheets in checkLoaded\n * - 2014-05-21 - add support for relative paths for scripts in checkLoaded\n * - 2013-01-25 - add parrallel loading inside single load call\n * - 2012-06-29 - some minifier optimisations\n * - 2012-04-20 - now sharp part of url will be used as tag id\n * - add options for checking already loaded scripts at load time\n * - 2012-04-19 - add addAliases method\n * @note coding style is implied by the target usage of this script not my habbits\n */\n var isA = function (a, b) {\n return a instanceof (b || Array);\n },\n //-- some minifier optimisation\n D = document,\n getElementsByTagName = 'getElementsByTagName',\n length = 'length',\n readyState = 'readyState',\n onreadystatechange = 'onreadystatechange',\n typeJS = 'text/javascript',\n scriptStr = 'script',\n header = D[getElementsByTagName]('head')[0] || D.documentElement,\n aliases = {},\n //-- get the current script tag for further evaluation of it's eventual content\n scripts = D[getElementsByTagName](scriptStr),\n scriptTag = scripts[scripts[length] - 1],\n script = scriptTag.innerHTML.replace(/^\\s+|\\s+$/g, ''),\n appendElmt = function (type, attrs, cb) {\n var e = D.createElement(type),\n i;\n if (cb) {\n //-- this is not intended to be used for link\n if (e[readyState]) {\n e[onreadystatechange] = function () {\n if (e[readyState] === 'loaded' || e[readyState] === 'complete') {\n e[onreadystatechange] = null;\n cb();\n }\n };\n } else {\n e.onload = cb;\n }\n }\n for (i in attrs) {\n attrs[i] && (e[i] = attrs[i]);\n }\n header.appendChild(e);\n // return e; // unused at this time so drop it\n };\n //avoid multiple inclusion to override current loader but allow tag content evaluation\n if (!window.ljs) {\n var checkLoaded = scriptTag.src.match(/checkLoaded/) ? 1 : 0,\n //-- keep trace of header as we will make multiple access to it\n urlParse = function (url) {\n var parts = {}; // u => url, i => id, f = fallback\n parts.u = url.replace(/#(=)?([^#]*)?/g, function (m, a, b) {\n parts[a ? 'f' : 'i'] = b;\n return '';\n });\n return parts;\n },\n load = function (loader, url, cb) {\n if (aliases && aliases[url]) {\n var args = aliases[url].slice(0);\n isA(args) || (args = [args]);\n cb && args.push(cb);\n return loader.load.apply(loader, args);\n }\n if (isA(url)) {\n // parallelized request\n for (var l = url[length]; l--; ) {\n loader.load(url[l]);\n }\n cb && url.push(cb); // relaunch the dependancie queue\n return loader.load.apply(loader, url);\n }\n if (url.match(/\\.css\\b/)) {\n return loader.loadcss(url, cb);\n }\n return loader.loadjs(url, cb);\n },\n loaded = {}, // will handle already loaded urls\n errorHandlers = [],\n loader = {\n aliases: aliases,\n loadjs: function (url, cb) {\n var parts = urlParse(url);\n var onError = function (url) {\n for (var i = 0, l = errorHandlers.length; i < l; i++) {\n errorHandlers[i](url);\n }\n };\n url = parts.u;\n if (loaded[url] === true) {\n // already loaded exec cb if any\n cb && cb();\n return loader;\n } else if (loaded[url] !== undefined) {\n // already asked for loading we append callback if any else return\n if (cb) {\n loaded[url] = (function (ocb, cb) {\n return function () {\n ocb && ocb();\n cb && cb();\n };\n })(loaded[url], cb);\n }\n return loader;\n }\n // first time we ask this script\n loaded[url] = (function (cb) {\n return function () {\n loaded[url] = true;\n cb && cb();\n };\n })(cb);\n cb = function () {\n loaded[url]();\n };\n\n appendElmt(\n scriptStr,\n {\n type: typeJS,\n src: url,\n id: parts.i,\n onerror: function (error) {\n onError(url);\n var c = error.currentTarget;\n c.parentNode.removeChild(c);\n appendElmt(\n scriptStr,\n {\n type: typeJS,\n src: parts.f,\n id: parts.i,\n onerror: function () {\n onError(parts.f);\n },\n },\n cb\n );\n },\n },\n cb\n );\n return loader;\n },\n loadcss: function (url, cb) {\n var parts = urlParse(url);\n url = parts.u;\n loaded[url] ||\n appendElmt('link', {\n type: 'text/css',\n rel: 'stylesheet',\n href: url,\n id: parts.i,\n });\n loaded[url] = true;\n cb && cb();\n return loader;\n },\n load: function () {\n var argv = arguments,\n argc = argv[length];\n if (argc === 1 && isA(argv[0], Function)) {\n argv[0]();\n return loader;\n }\n load(\n loader,\n argv[0],\n argc <= 1\n ? undefined\n : function () {\n loader.load.apply(loader, [].slice.call(argv, 1));\n }\n );\n return loader;\n },\n addAliases: function (_aliases) {\n for (var i in _aliases) {\n aliases[i] = isA(_aliases[i]) ? _aliases[i].slice(0) : _aliases[i];\n }\n return loader;\n },\n onError: function (cb) {\n errorHandlers.push(cb);\n return loader;\n },\n };\n if (checkLoaded) {\n var i, l, links, url;\n for (i = 0, l = scripts[length]; i < l; i++) {\n (url = scripts[i].getAttribute('src')) &&\n (loaded[url.replace(/#.*$/, '')] = true);\n }\n links = D[getElementsByTagName]('link');\n for (i = 0, l = links[length]; i < l; i++) {\n (links[i].rel === 'stylesheet' || links[i].type === 'text/css') &&\n (loaded[links[i].getAttribute('href').replace(/#.*$/, '')] = true);\n }\n }\n //export ljs\n window.ljs = loader;\n // eval inside tag code if any\n }\n // eval script tag content if needed\n scriptTag.src && script && appendElmt(scriptStr, { innerHTML: script });\n})(window);\n"]}