{"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","scriptStr","documentElement","aliases","scripts","scriptTag","innerHTML","script","replace","ljs","checkLoaded","urlParse","parts","u","url","_","m","f","src","match","loaded","loader","errorHandlers","loadjs","onError","l","ocb","id","onerror","error","c","currentTarget","removeChild","loadcss","href","argv","arguments","argc","Function","args","slice","push","load","apply","call","addAliases","_aliases","links","getAttribute"],"mappings":"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","file":"../l.min.js","sourcesContent":["/*\n lsj v0.2.2\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 * @contributors ivanrey, AlexGal0\n * @licence dual licence mit / gpl\n * @since 2012-04-12\n * @todo add prefetching using text/cache for js files\n * @changelog\n * - 2023-02-28 - add support for module type thanks to PR#21 by AlexGal0\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 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, m => is a module\n parts.u = url.replace(\n /(^module:)|#(=)?([^#]*)?/g,\n function (_, m, f, i) {\n parts[m ? 'm' : f ? 'f' : 'i'] = !!m || i;\n return '';\n }\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 var type = parts.m ? 'module' : 'text/javascript';\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: type,\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: type,\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"]}