"use strict"; /** * @class * @constructor * @param {!(Object.|Array.)} inputs * @returns {void} * @access public */ export const AnPLoader = (function(){ /** * @constructs AnPLoader * @param {!(Object.|Array.)} inputs * @returns {void} * @access private */ const AnPLoader = function(inputs){ /** @type {AnPLoader} */ const self = this; /** * @returns {void} * @access private */ const constructor = () => { /** @type {Array.} */ const scripts = AnPLoader.get_list_strings(AnPLoader.get_value(["script", "scripts"], inputs)), /** @type {Array.} */ styles = AnPLoader.get_list_strings.apply(AnPLoader.get_value(["style", "styles"], inputs)); }; constructor(); }; /** @type {string} */ AnPLoader.domain = /^[^\:]+\:\/{2}[^\/]+\.([lg]ocal|anprm(\.[lg]ocal)?)\/?/i.test(window.location.href) ? "local" : "k3y.pw"; /** * @param {?any} item * @returns {boolean} * @access public * @static */ AnPLoader.is_string = item => typeof item == "string"; /** * @param {?any} item * @returns {boolean} * @access public * @static */ AnPLoader.is_key = item => item && AnPLoader.is_string(item) && /^[a-z0-9_]+$/i.test(item); /** * @param {?any} item * @returns {boolean} * @access public * @static */ AnPLoader.is_array = item => item instanceof Array; /** * @param {?any} item * @returns {boolean} * @access public * @static */ AnPLoader.is_dictionary = item => item && item.constructor == Object; /** * @param {?any} item * @returns {Array.} * @access public * @static */ AnPLoader.get_array = item => AnPLoader.is_array(item) ? item : [item]; /** * @param {!(string|Array.)} keys * @returns {Array.} * @access public * @static */ AnPLoader.get_keys = keys => AnPLoader.get_array(keys).filter((key, i, array) => AnPLoader.is_key(key) && array.indexOf(key) == i); /** * @param {!(string|Array.)} keys * @param {!(Object.|Array.)} inputs * @param {?any} [_default = null] * @returns {any|null|undefined} * @access public * @static */ AnPLoader.get_value = (keys, inputs, _default = null) => { if(AnPLoader.is_array(inputs)){ for(let i = 0, l = inputs.length; i < l; i ++){ /** @type {any|null|undefined} */ const value = AnPLoader.get_value(keys, inputs[i], undefined) if(value !== undefined) return value; }; }else if(Check.is_dictionary(inputs)){ for(let i = 0, l = (keys = AnPLoader.get_keys(keys)).length; i < l; i ++) if(inputs[keys[i]] !== undefined) return inputs[keys[i]]; }; return _default; }; /** * @param {!(string|Array.)} items * @returns {Array.} * @access public * @static */ AnPLoader.get_list_strings = items => { if(items){ if(Check.is_string(items)) return [items]; if(Check.is_array(items)) return items.filter(item => Check.is_string(item) || Check.is_array(item)).map(item => Check.is_array(item) ? AnPLoader.get_list_strings(item) : item); }; return []; }; return AnPLoader; })();