{"version":3,"sources":["l.js"],"names":["window","undefined","isA","a","b","Array","createElement","appendElmt","type","attrs","cb","i","e","D","readyState","onreadystatechange","onload","header","appendChild","getElementsByTagName","length","typeJS","scriptStr","documentElement","aliases","scripts","scriptTag","innerHTML","script","replace","ljs","checkLoaded","urlParse","parts","u","url","m","src","match","loaded","errorHandlers","loader","loadjs","l","ocb","id","error","onError","c","currentTarget","parentNode","removeChild","f","loadcss","rel","href","load","argv","arguments","Function","args","slice","push","argc","apply","call","addAliases","_aliases","links","getAttribute"],"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"]}