JAVASCRIPT   5

core.js

Guest on 25th July 2021 04:11:26 PM

  1.  
  2. /**/ var undefined;
  3.  
  4. if (!window.console) {
  5.         window.console = {};
  6. }
  7. if (!console.log) {
  8.         console.log = function () {};
  9. }
  10.  
  11. var _VERSION = '${VERSION}',
  12.         _ua = navigator.userAgent.toLowerCase(),
  13.         _IE = _ua.indexOf('msie') > -1 && _ua.indexOf('opera') == -1,
  14.         _NEWIE = _ua.indexOf('msie') == -1 && _ua.indexOf('trident') > -1,
  15.         _GECKO = _ua.indexOf('gecko') > -1 && _ua.indexOf('khtml') == -1,
  16.         _WEBKIT = _ua.indexOf('applewebkit') > -1,
  17.         _OPERA = _ua.indexOf('opera') > -1,
  18.         _MOBILE = _ua.indexOf('mobile') > -1,
  19.         _IOS = /ipad|iphone|ipod/.test(_ua),
  20.         _QUIRKS = document.compatMode != 'CSS1Compat',
  21.         _IERANGE = !window.getSelection,
  22.         _matches = /(?:msie|firefox|webkit|opera)[\/:\s](\d+)/.exec(_ua),
  23.         _V = _matches ? _matches[1] : '0',
  24.         _TIME = new Date().getTime();
  25.  
  26. function _isArray(val) {
  27.         if (!val) {
  28.                 return false;
  29.         }
  30.         return Object.prototype.toString.call(val) === '[object Array]';
  31. }
  32.  
  33. function _isFunction(val) {
  34.         if (!val) {
  35.                 return false;
  36.         }
  37.         return Object.prototype.toString.call(val) === '[object Function]';
  38. }
  39.  
  40. function _inArray(val, arr) {
  41.         for (var i = 0, len = arr.length; i < len; i++) {
  42.                 if (val === arr[i]) {
  43.                         return i;
  44.                 }
  45.         }
  46.         return -1;
  47. }
  48.  
  49. function _each(obj, fn) {
  50.         if (_isArray(obj)) {
  51.                 for (var i = 0, len = obj.length; i < len; i++) {
  52.                         if (fn.call(obj[i], i, obj[i]) === false) {
  53.                                 break;
  54.                         }
  55.                 }
  56.         } else {
  57.                 for (var key in obj) {
  58.                         if (obj.hasOwnProperty(key)) {
  59.                                 if (fn.call(obj[key], key, obj[key]) === false) {
  60.                                         break;
  61.                                 }
  62.                         }
  63.                 }
  64.         }
  65. }
  66.  
  67. function _trim(str) {
  68.         // Forgive various special whitespaces, e.g. &nbsp;(\xa0).
  69.         return str.replace(/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g, '');
  70. }
  71.  
  72. function _inString(val, str, delimiter) {
  73.         delimiter = delimiter === undefined ? ',' : delimiter;
  74.         return (delimiter + str + delimiter).indexOf(delimiter + val + delimiter) >= 0;
  75. }
  76.  
  77. function _addUnit(val, unit) {
  78.         unit = unit || 'px';
  79.         return val && /^-?\d+(?:\.\d+)?$/.test(val) ? val + unit : val;
  80. }
  81.  
  82. function _removeUnit(val) {
  83.         var match;
  84.         return val && (match = /(\d+)/.exec(val)) ? parseInt(match[1], 10) : 0;
  85. }
  86.  
  87. function _escape(val) {
  88.         return val.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
  89. }
  90.  
  91. function _unescape(val) {
  92.         return val.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&amp;/g, '&');
  93. }
  94.  
  95. function _toCamel(str) {
  96.         var arr = str.split('-');
  97.         str = '';
  98.         _each(arr, function(key, val) {
  99.                 str += (key > 0) ? val.charAt(0).toUpperCase() + val.substr(1) : val;
  100.         });
  101.         return str;
  102. }
  103.  
  104. function _toHex(val) {
  105.         function hex(d) {
  106.                 var s = parseInt(d, 10).toString(16).toUpperCase();
  107.                 return s.length > 1 ? s : '0' + s;
  108.         }
  109.         return val.replace(/rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/ig,
  110.                 function($0, $1, $2, $3) {
  111.                         return '#' + hex($1) + hex($2) + hex($3);
  112.                 }
  113.         );
  114. }
  115.  
  116. function _toMap(val, delimiter) {
  117.         delimiter = delimiter === undefined ? ',' : delimiter;
  118.         var map = {}, arr = _isArray(val) ? val : val.split(delimiter), match;
  119.         _each(arr, function(key, val) {
  120.                 if ((match = /^(\d+)\.\.(\d+)$/.exec(val))) {
  121.                         for (var i = parseInt(match[1], 10); i <= parseInt(match[2], 10); i++) {
  122.                                 map[i.toString()] = true;
  123.                         }
  124.                 } else {
  125.                         map[val] = true;
  126.                 }
  127.         });
  128.         return map;
  129. }
  130.  
  131. function _toArray(obj, offset) {
  132.         return Array.prototype.slice.call(obj, offset || 0);
  133. }
  134.  
  135. function _undef(val, defaultVal) {
  136.         return val === undefined ? defaultVal : val;
  137. }
  138.  
  139. function _invalidUrl(url) {
  140.         return !url || /[<>"]/.test(url);
  141. }
  142.  
  143. function _addParam(url, param) {
  144.         return url.indexOf('?') >= 0 ? url + '&' + param : url + '?' + param;
  145. }
  146.  
  147. function _extend(child, parent, proto) {
  148.         if (!proto) {
  149.                 proto = parent;
  150.                 parent = null;
  151.         }
  152.         var childProto;
  153.         if (parent) {
  154.                 var fn = function () {};
  155.                 fn.prototype = parent.prototype;
  156.                 childProto = new fn();
  157.                 _each(proto, function(key, val) {
  158.                         childProto[key] = val;
  159.                 });
  160.         } else {
  161.                 childProto = proto;
  162.         }
  163.         childProto.constructor = child;
  164.         child.prototype = childProto;
  165.         child.parent = parent ? parent.prototype : null;
  166. }
  167.  
  168. //From http://www.json.org/json2.js
  169. function _json(text) {
  170.         var match;
  171.         if ((match = /\{[\s\S]*\}|\[[\s\S]*\]/.exec(text))) {
  172.                 text = match[0];
  173.         }
  174.         var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
  175.         cx.lastIndex = 0;
  176.         if (cx.test(text)) {
  177.                 text = text.replace(cx, function (a) {
  178.                         return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
  179.                 });
  180.         }
  181.         if (/^[\],:{}\s]*$/.
  182.         test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
  183.         replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
  184.         replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
  185.                 return eval('(' + text + ')');
  186.         }
  187.         throw 'JSON parse error';
  188. }
  189.  
  190. var _round = Math.round;
  191.  
  192. var K = {
  193.         DEBUG : false,
  194.         VERSION : _VERSION,
  195.         IE : _IE,
  196.         GECKO : _GECKO,
  197.         WEBKIT : _WEBKIT,
  198.         OPERA : _OPERA,
  199.         V : _V,
  200.         TIME : _TIME,
  201.         each : _each,
  202.         isArray : _isArray,
  203.         isFunction : _isFunction,
  204.         inArray : _inArray,
  205.         inString : _inString,
  206.         trim : _trim,
  207.         addUnit : _addUnit,
  208.         removeUnit : _removeUnit,
  209.         escape : _escape,
  210.         unescape : _unescape,
  211.         toCamel : _toCamel,
  212.         toHex : _toHex,
  213.         toMap : _toMap,
  214.         toArray : _toArray,
  215.         undef : _undef,
  216.         invalidUrl : _invalidUrl,
  217.         addParam : _addParam,
  218.         extend : _extend,
  219.         json : _json
  220. };
  221.  
  222. var _INLINE_TAG_MAP = _toMap('a,abbr,acronym,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,img,input,ins,kbd,label,map,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var'),
  223.         _BLOCK_TAG_MAP = _toMap('address,applet,blockquote,body,center,dd,dir,div,dl,dt,fieldset,form,frameset,h1,h2,h3,h4,h5,h6,head,hr,html,iframe,ins,isindex,li,map,menu,meta,noframes,noscript,object,ol,p,pre,script,style,table,tbody,td,tfoot,th,thead,title,tr,ul'),
  224.         _SINGLE_TAG_MAP = _toMap('area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed'),
  225.         _STYLE_TAG_MAP = _toMap('b,basefont,big,del,em,font,i,s,small,span,strike,strong,sub,sup,u'),
  226.         _CONTROL_TAG_MAP = _toMap('img,table,input,textarea,button'),
  227.         _PRE_TAG_MAP = _toMap('pre,style,script'),
  228.         _NOSPLIT_TAG_MAP = _toMap('html,head,body,td,tr,table,ol,ul,li'),
  229.         _AUTOCLOSE_TAG_MAP = _toMap('colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr'),
  230.         _FILL_ATTR_MAP = _toMap('checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected'),
  231.         _VALUE_TAG_MAP = _toMap('input,button,textarea,select');

Raw Paste


Login or Register to edit or fork this paste. It's free.