UNPKG

jsdk-offical

Version:

JSDK is the most comprehensive TypeScript framework, like JDK.

1,310 lines 138 kB
//# sourceURL=../dist/jslang.js //JSDK 2.7.0 MIT var JS; (function (JS) { let lang; (function (lang) { let Type; (function (Type) { Type["null"] = "null"; Type["undefined"] = "undefined"; Type["string"] = "string"; Type["boolean"] = "boolean"; Type["number"] = "number"; Type["date"] = "date"; Type["array"] = "array"; Type["json"] = "json"; Type["object"] = "object"; Type["function"] = "function"; Type["class"] = "class"; Type["symbol"] = "symbol"; })(Type = lang.Type || (lang.Type = {})); })(lang = JS.lang || (JS.lang = {})); })(JS || (JS = {})); var Type = JS.lang.Type; var JS; (function (JS) { let util; (function (util) { let _of = function (a, s) { return typeof a === s; }, _is = function (a, s) { return toString.call(a) === `[object ${s}]`; }, _isKlass = function (obj) { if (typeof obj != 'function') return false; let proto = obj.prototype; if (proto === undefined || proto.constructor !== obj) return false; if (Object.getOwnPropertyNames(proto).length >= 2) return true; var str = obj.toString(); if (str.slice(0, 5) == "class") return true; if (/^function\s+\(|^function\s+anonymous\(/.test(str)) return false; if (/\b\(this\b|\bthis[\.\[]\b/.test(str)) { if (/classCallCheck\(this/.test(str)) return true; return /^function\sdefault_\d+\s*\(/.test(str); } return false; }, _superklass = (klass) => { if (Object === klass) return null; let sup = Object.getPrototypeOf(klass); return Object.getPrototypeOf(Object) === sup ? Object : sup; }; class Types { static isSymbol(o) { return _of(o, 'symbol'); } static isArguments(o) { return _is(o, 'Arguments'); } static isNaN(n) { return n != null && isNaN(n); } static isNumber(n) { return _of(n, 'number'); } static isNumeric(n) { return (this.isNumber(n) || this.isString(n)) && !isNaN(n - parseFloat(n)); } static isFloat(n) { return Number(n).isFloat(); } static isInt(n) { return Number(n).isInt(); } static isBoolean(obj) { return _of(obj, 'boolean'); } static isString(obj) { return _of(obj, 'string'); } static isDate(obj) { return _is(obj, 'Date'); } static isDefined(obj) { return obj != void 0; } static isNull(obj) { return obj === null; } static isUndefined(obj) { return obj === void 0; } static isObject(obj) { return _is(obj, 'Object'); } static isJsonObject(obj) { let OP = Object.prototype; if (!obj || OP.toString.call(obj) !== '[object Object]') return false; let proto = Object.getPrototypeOf(obj); if (!proto) return true; let ctor = OP.hasOwnProperty.call(proto, 'constructor') && proto.constructor, fnToString = Function.prototype.toString; return typeof ctor === 'function' && fnToString.call(ctor) === fnToString.call(Object); } static isArray(obj) { return Array.isArray(obj) || obj instanceof Array; } static isArrayLike(obj) { if (this.isString(obj)) return false; let l = obj && obj['length'] || null; return typeof l == 'number' && l >= 0 && l <= Number.MAX_SAFE_INTEGER; } static isError(obj) { return _of(obj, 'Error'); } static isFile(obj) { return _is(obj, 'File'); } static isFormData(obj) { return _is(obj, 'FormData'); } static isBlob(obj) { return _is(obj, 'Blob'); } static isFunction(fn, pure) { return _of(fn, 'function') && (!pure ? true : !this.equalKlass(fn)); } static isRegExp(obj) { return _is(obj, 'RegExp'); } static isArrayBuffer(obj) { return _is(obj, 'ArrayBuffer'); } static isTypedArray(value) { return value && this.isNumber(value.length) && /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array]$/.test(toString.call(value)); } static isElement(el) { return el && typeof el === 'object' && (el.nodeType === 1 || el.nodeType === 9); } static isWindow(el) { return el != null && el === el.window; } static isKlass(obj, klass) { if (!this.ofKlass(obj, klass)) return false; return obj.constructor && obj.constructor === klass; } static ofKlass(obj, klass) { return obj instanceof klass; } static equalKlass(kls, klass) { if (!_isKlass(kls)) return false; return klass ? (kls === klass) : true; } static subklassOf(kls1, kls2) { if (kls2 === Object || kls1 === kls2) return true; let superXls = _superklass(kls1); while (superXls != null) { if (superXls === kls2) return true; superXls = _superklass(superXls); } return false; } static type(obj) { if (obj === null) return Type.null; let type = typeof obj; if (type == 'number' || type == 'bigint') return Type.number; if (type == 'object') { if (this.isJsonObject(obj)) return Type.json; if (this.isArray(obj)) return Type.array; if (this.isDate(obj)) return Type.date; ; return Type.object; } return _isKlass(obj) ? Type.class : type; } } util.Types = Types; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Types = JS.util.Types; var JS; (function (JS) { let util; (function (util) { let N = Number, _test = function (s, exp) { return s && exp.test(s.trim()); }, EMAIL = /^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?\.)+[A-Za-z0-9]+(?:-[A-Za-z0-9]+)?$/, EMAIL_DOMAIN = /^@([A-Za-z0-9]+(?:-[A-Za-z0-9]+)?\.)+[A-Za-z0-9]+(?:-[A-Za-z0-9]+)?$/, YYYY_MM_DD = /^(\d{1,4})(-|\/)(\d{1,2})(-|\/)(\d{1,2})$/, HALFWIDTH_CHARS = /^[\u0000-\u00FF]+$/, FULLWIDTH_CHARS = /^[\u0391-\uFFE5]+$/, NUMBERS_ONLY = /^\d+$/, LETTERS_ONLY = /^[A-Za-z]+$/, LETTERS_OR_NUMBERS = /^[A-Za-z\d]+$/, ENGLISH_ONLY = /^[A-Za-z\d\s\`\~\!\@\#\$\%\^\&\*\(\)\_\-\+\=\[\]\{\}\|\:\;\"\'\<\>\,\.\?\\\/]+$/, CHINESE_ONLY = /^[\u4E00-\u9FA5]+$/, IP = /^(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5]).(0|[1-9]\d?|[0-1]\d{2}|2[0-4]\d|25[0-5])$/; class Check { static isEmpty(v) { return v == void 0 || v === '' || (v.hasOwnProperty('length') && v.length == 0) || Check.isEmptyObject(v); } static isEmptyObject(v) { var name; for (name in v) { return false; } return true; } static isBlank(s) { return s == void 0 || s.trim() === ''; } static isFormatDate(s, format) { return _test(s, format || YYYY_MM_DD); } static isEmail(s, exp) { return _test(s, exp ? exp : EMAIL); } static isEmails(s, exp) { s = s || ''; if (this.isBlank(s)) return false; return s.split(/;|\s+/).every(as => { return as.length == 0 || this.isEmail(as, exp); }); } static isEmailDomain(str) { return _test(str, EMAIL_DOMAIN); } static isOnlyNumber(str) { return _test(str, NUMBERS_ONLY); } static isPositive(n) { return N(n).isPositive(); } static isNegative(n) { return N(n).isNegative(); } static isHalfwidthChars(str) { return _test(str, HALFWIDTH_CHARS); } static isFullwidthChars(str) { return _test(str, FULLWIDTH_CHARS); } static isEnglishOnly(str) { return _test(str, ENGLISH_ONLY); } static isChineseOnly(str) { return _test(str, CHINESE_ONLY); } static isFormatNumber(n, iLength, fLength) { if (!util.Types.isNumeric(n)) return false; let num = N(n), iLen = num.integerLength(), dLen = num.fractionLength(); if (iLen > iLength) return false; if (util.Types.isDefined(fLength) && dLen > fLength) return false; return true; } static greater(n1, n2) { return N(n1) > N(n2); } static greaterEqual(n1, n2) { return N(n1) >= N(n2); } static less(n1, n2) { return N(n1) < N(n2); } static lessEqual(n1, n2) { return N(n1) <= N(n2); } static isBetween(n, min, max) { let num = N(n); return num > N(min) && num < N(max); } static shorter(s, len) { return s && s.length < len; } static longer(s, len) { return s && s.length > len; } static equalLength(s, len) { return s && s.length == len; } static isLettersOnly(s) { return _test(s, LETTERS_ONLY); } static isLettersOrNumbers(s) { return _test(s, LETTERS_OR_NUMBERS); } static isIP(s) { return _test(s.trim(), IP); } static isExistUrl(url) { let xhr = new XMLHttpRequest(); return new Promise(function (resolve, reject) { xhr.onreadystatechange = () => { if (xhr.readyState == 4) xhr.status == 200 ? resolve(true) : reject(false); }; xhr.open('HEAD', url, true); xhr.send(); }); } static isPattern(s, exp) { return _test(s, exp); } static byServer(req, judge) { return new Promise(function (resolve, reject) { Http.send(req).then(res => { judge.apply(null, [res]) ? resolve(true) : reject(false); }); }); } } util.Check = Check; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Check = JS.util.Check; (function () { var AP = Array.prototype; AP.add = function (obj, from) { let m = this; if (obj == void 0) return m; let a = obj instanceof Array ? obj : [obj], i = from == void 0 ? m.length : (from < 0 ? 0 : from); AP.splice.apply(m, [i, 0].concat(a)); return m; }; AP.remove = function (f) { let i = typeof f === 'number' ? f : this.findIndex(f); if (i < 0 || i >= this.length) return false; this.splice(i, 1); return true; }; }()); var JS; (function (JS) { let util; (function (util) { let E = util.Check.isEmpty, AS = Array.prototype.slice; class Arrays { static newArray(a, from) { return a == void 0 ? [] : AS.apply(a, [from == void 0 ? 0 : from]); } static toArray(a) { return a == void 0 ? [] : (util.Types.isArray(a) ? a : [a]); } static equal(a1, a2, eq) { if (a1 === a2) return true; let y1 = E(a1), y2 = E(a2); if (y1 && y2) return true; if (y1 !== y2) return false; if (a1.length != a2.length) return false; return a1.every((item1, i) => { return eq ? eq(item1, a2[i], i) : item1 === a2[i]; }); } static equalToString(a1, a2) { if (a1 === a2) return true; if (a1 == void 0 && a2 == void 0) return true; if (!a1 || !a2) return false; if (a1.length != a2.length) return false; return a1.toString() == a2.toString(); } static same(a1, a2, eq) { if (a1 === a2 || (E(a1) && E(a2))) return true; if (a1.length != a2.length) return false; let na = a2.slice(), fail = a1.some(t1 => { let r = na.remove(t2 => { return eq ? eq(t1, t2) : t1 === t2; }); return !r; }); if (fail) return false; return na.length == 0; } static slice(args, fromIndex, endIndex) { return AS.apply(args, [fromIndex || 0, endIndex || args.length]); } } util.Arrays = Arrays; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Arrays = JS.util.Arrays; var JS; (function (JS) { let util; (function (util) { let R = false, W = self; class Bom { static ready(fn) { if (R) { fn(); return; } let D = document, callback = function () { R = true; fn(); callback = null; }; let wc = W['HTMLImports'] && W['HTMLImports'].whenReady; if (wc) return wc(callback); if (D.readyState === "complete") { setTimeout(callback, 1); } else if (D.addEventListener) { D.addEventListener("DOMContentLoaded", callback, false); W.addEventListener("load", callback, false); } else { D['attachEvent']("onreadystatechange", callback); W['attachEvent']("onload", callback); var top = false; try { top = (W.frameElement == null && D.documentElement) ? true : false; } catch (e) { } if (top && top['doScroll']) { (function doScrollCheck() { if (!R) { try { top['doScroll']('left'); } catch (e) { return setTimeout(doScrollCheck, 50); } callback(); } })(); } } } static iframeWindow(el) { let e = util.Dom.$1(el); if (!e) return null; return e['contentWindow']; } static iframeDocument(el) { let e = util.Dom.$1(el); if (!e) return null; return e['contentDocument'] || e['contentWindow'].document; } static fullscreen() { let de = document.documentElement; let fnName = de['mozRequestFullScreen'] ? 'mozRequestFullScreen' : (de['webkitRequestFullScreen'] ? 'webkitRequestFullScreen' : 'requestFullscreen'); if (de[fnName]) de[fnName](); } static normalscreen() { let D = document, fnName = D['mozCancelFullScreen'] ? 'mozCancelFullScreen' : (D['webkitCancelFullScreen'] ? 'webkitCancelFullScreen' : 'exitFullscreen'); if (D[fnName]) D[fnName](); } } util.Bom = Bom; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Bom = JS.util.Bom; var JS; (function (JS) { let util; (function (util) { let _num = (s) => { let n = parseFloat(s); return n.isNaN() ? 0 : n; }; class CssTool { static isHEX(a) { return /^#[0-9A-F]{3,8}$/i.test(a); } static isRGB(a) { return /^rgb/.test(a); } static isHSL(a) { return /^hsl/.test(a); } static isColor(a) { return this.isHEX(a) || this.isRGB(a) || this.isHSL(a); } static rgb2hex(r, g, b, a) { let s = [r, g, b]; if (a != void 0) s.push(Number((a * 255).integralPart())); return '#' + s.map(x => { let h = x.toString(16); return h.length === 1 ? '0' + h : h; }).join(''); } static hex2rgb(hex) { if (!this.isHEX(hex)) return null; let a = false, h = hex.slice(hex.startsWith('#') ? 1 : 0), l = h.length; if (l == 4 || l == 8) a = true; if (l == 3 || l == 4) h = [...h].map(x => x + x).join(''); let n = parseInt(h, 16); return { r: (n >>> (a ? 24 : 16)), g: ((n & (a ? 0x00ff0000 : 0x00ff00)) >>> (a ? 16 : 8)), b: ((n & (a ? 0x0000ff00 : 0x0000ff)) >>> (a ? 8 : 0)), a: a ? Number((n & 0x000000ff) / 255).round(2) : 1 }; } static rgbString(c) { if (!c) return ''; let has = c.a != void 0; return `rgb${has ? 'a' : ''}(${c.r},${c.g},${c.b}${has ? `,${c.a}` : ''})`; } static toTRGB(s) { if (s.startsWith('rgba(')) { let r = /^rgba\((.+),(.+),(.+),(.+)\)$/.exec(s); if (r) return { r: Number(r[1]), g: Number(r[2]), b: Number(r[3]), a: Number(r[4]) }; } else if (s.startsWith('rgb(')) { let r = /^rgb\((.+),(.+),(.+)\)$/.exec(s); if (r) return { r: Number(r[1]), g: Number(r[2]), b: Number(r[3]) }; } return null; } static convertToRGB(val) { if (this.isHEX(val)) return this.hex2rgb(val); if (this.isHSL(val)) return this.hsl2rgb(val); return this.toTRGB(val); } static hslString(c) { if (!c) return ''; let has = c.a != void 0; return `hsl(${c.h},${(c.s * 100).round(2)}%,${(c.l * 100).round(2)}%${has ? `,${c.a}` : ''})`; } static hsl2rgb(hsl) { if (!this.isHSL(hsl)) return null; let hsla = this.toTHSL(hsl), h = hsla.h, s = hsla.s, l = hsla.l, r, g, b; if (s == 0) { r = g = b = l; } else { var hue2rgb = (p, q, t) => { if (t < 0) t += 1; if (t > 1) t -= 1; if (t < 1 / 6) return p + (q - p) * 6 * t; if (t < 1 / 2) return q; if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; return p; }; var q = l < 0.5 ? l * (1 + s) : l + s - l * s, p = 2 * l - q; r = hue2rgb(p, q, h + 1 / 3); g = hue2rgb(p, q, h); b = hue2rgb(p, q, h - 1 / 3); } return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255), a: hsla.a }; } static rgb2hsl(rgb) { if (!rgb) return null; let r = rgb.r, g = rgb.g, b = rgb.b; r /= 255, g /= 255, b /= 255; var max = Math.max(r, g, b), min = Math.min(r, g, b), h, s, l = (max + min) / 2; if (max == min) { h = s = 0; } else { var d = max - min; s = l > 0.5 ? d / (2 - max - min) : d / (max + min); switch (max) { case r: h = (g - b) / d + (g < b ? 6 : 0); break; case g: h = (b - r) / d + 2; break; case b: h = (r - g) / d + 4; break; } h /= 6; } return { h: h, s: s, l: l, a: rgb.a }; } static hyphenCase(name) { return name.replace(/([A-Z])/g, (a, b) => { return '-' + b.toLowerCase(); }); } static numberOf(val) { return util.Types.isNumber(val) ? val : _num(val); } static unitOf(val) { if (val == void 0 || util.Types.isNumber(val)) return ''; let split = /[+-]?\d*\.?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val); return split ? split[1] : ''; } static calcValue(v, baseVal) { if (!v) return baseVal + ''; if (v.indexOf(',') > 0 || v.indexOf(' ') > 0) return v; let u = this.unitOf(v) || this.unitOf(baseVal) || 'px'; if (v.startsWith('+=') || v.startsWith('-=')) { let ov = this.numberOf(baseVal), nv = _num(v.replace('=', '')); return ov + nv + u; } else if (v.startsWith('*=')) { let ov = this.numberOf(baseVal), nv = _num(v.replace('*=', '')); return ov * nv + u; } return parseFloat(v).isNaN() ? v : (_num(v) + u); } static normValue(v, df, du) { if (v == void 0) return df; return util.Types.isNumber(v) ? (v + (du === undefined ? 'px' : (du || ''))) : v; } } CssTool.toTHSL = (h) => { var hsl = /hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g.exec(h) || /hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g.exec(h); return { h: parseInt(hsl[1], 10) / 360, s: parseInt(hsl[2], 10) / 100, l: parseInt(hsl[3], 10) / 100, a: parseFloat(hsl[4]) || 1 }; }; util.CssTool = CssTool; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var CssTool = JS.util.CssTool; var JS; (function (JS) { let util; (function (util) { class Dates { static isValidDate(d) { if (d == null) return false; return !isNaN(new Date(d).getTime()); } static isLeapYear(y) { return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0; } static getDaysOfMonth(m, y) { y = y || new Date().getFullYear(); return [31, (this.isLeapYear(y) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][m]; } static getFirstDayOfMonth(d) { return d.clone().set({ day: 1 }); } static getLastDayOfMonth(d) { return d.clone().set({ day: Dates.getDaysOfMonth(d.getMonth(), d.getFullYear()) }); } static getDayOfWeek(d, dayOfWeek) { let d2 = dayOfWeek != void 0 ? dayOfWeek : 1, d1 = d.getDay(); if (d2 == 0) d2 = 7; if (d1 == 0) d1 = 7; return d.clone().add((d2 - d1) % 7, 'd'); } } Dates.I18N_RESOURCE = { AM: 'AM', PM: 'PM', WEEK_DAY_NAMES: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], WEEK_DAY_SHORT_NAMES: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], MONTH_NAMES: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], MONTH_SHORT_NAMES: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] }; util.Dates = Dates; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Dates = JS.util.Dates; (function () { var D = Date, $P = D.prototype, pad = function (s, l) { new D(); if (!l) { l = 2; } return ("000" + s).slice(l * -1); }; $P.getWeek = function () { let date0 = new D(this.getFullYear(), 0, 1), diff = Math.round((this.valueOf() - date0.valueOf()) / 86400000); return Math.ceil((diff + ((date0.getDay() + 1) - 1)) / 7); }; $P.setWeek = function (week, dayOfWeek) { let dw = Types.isDefined(dayOfWeek) ? dayOfWeek : 1; return this.setTime(Dates.getDayOfWeek(this, dw).add(week - this.getWeek(), 'w').getTime()); }; $P.clone = function () { return new D(this.getTime()); }; $P.setZeroTime = function () { let T = this; T.setHours(0); T.setMinutes(0); T.setSeconds(0); T.setMilliseconds(0); return T; }; $P.setLastTime = function () { let T = this; T.setHours(23); T.setMinutes(59); T.setSeconds(59); T.setMilliseconds(999); return T; }; $P.setNowTime = function () { let T = this, n = new D(); T.setHours(n.getHours()); T.setMinutes(n.getMinutes()); T.setSeconds(n.getSeconds()); T.setMilliseconds(n.getMilliseconds()); return T; }; $P.equals = function (d, p = 'ms') { let T = this; if (p == 'ms') return T.diff(d) == 0; if (p == 's') return T.getSeconds() == d.getSeconds(); if (p == 'm') return T.getMinutes() == d.getMinutes(); if (p == 'h') return T.getHours() == d.getHours(); if (p == 'y') return T.getFullYear() == d.getFullYear(); if (p == 'M') return T.getMonth() == d.getMonth(); if (p == 'd') return T.getFullYear() == d.getFullYear() && T.getMonth() == d.getMonth() && T.getDate() == d.getDate(); if (p == 'w') return T.getWeek() == d.getWeek(); return false; }; $P.between = function (start, end) { return this.diff(start) >= 0 && this.diff(end) <= 0; }; $P.isAfter = function (d) { return this.diff(d) > 0; }; $P.isBefore = function (d) { return this.diff(d) < 0; }; $P.isToday = function () { return this.equals(new D(), 'd'); }; $P.add = function (v, type) { let T = this; if (v == 0) return T; switch (type) { case 'ms': { T.setMilliseconds(T.getMilliseconds() + v); return T; } case 's': { return T.add(v * 1000, 'ms'); } case 'm': { return T.add(v * 60000, 'ms'); } case 'h': { return T.add(v * 3600000, 'ms'); } case 'd': { T.setDate(T.getDate() + v); return T; } case 'w': { return T.add(v * 7, 'd'); } case 'M': { var n = T.getDate(); T.setDate(1); T.setMonth(T.getMonth() + v); T.setDate(Math.min(n, Dates.getDaysOfMonth(T.getMonth(), T.getFullYear()))); return T; } case 'y': { return T.add(v * 12, 'M'); } } return T; }; $P.setTimezoneOffset = function (offset) { var here = this.getTimezoneOffset(), there = Number(offset) * -6 / 10; return this.add(there - here, 'm'); }; $P.formatTimezoneOffset = function () { var n = this.getTimezoneOffset() * -10 / 6, r; if (n < 0) { r = (n - 10000).toString(); return r.charAt(0) + r.substr(2); } else { r = (n + 10000).toString(); return "+" + r.substr(1); } }; let vt = function (n, min, max) { if (!Types.isDefined(n)) { return false; } else if (n < min || n > max) { throw new RangeError(n + ' is not a valid value'); } return true; }; $P.set = function (config) { let T = this; if (vt(config.millisecond, 0, 999)) { T.add(config.millisecond - T.getMilliseconds(), 'ms'); } if (vt(config.second, 0, 59)) { T.add(config.second - T.getSeconds(), 's'); } if (vt(config.minute, 0, 59)) { T.add(config.minute - T.getMinutes(), 'm'); } if (vt(config.hour, 0, 23)) { T.add(config.hour - T.getHours(), 'h'); } if (vt(config.day, 1, Dates.getDaysOfMonth(T.getMonth(), T.getFullYear()))) { T.add(config.day - T.getDate(), 'd'); } if (vt(config.week, 0, 53)) { T.setWeek(config.week); } if (vt(config.month, 0, 11)) { T.add(config.month - T.getMonth(), 'M'); } if (vt(config.year, 0, 9999)) { T.add(config.year - T.getFullYear(), 'y'); } if (config.timezoneOffset) { T.setTimezoneOffset(config.timezoneOffset); } return T; }; $P.diff = function (date) { return this - (date || new D()); }; $P.format = function (format, locale) { let T = this, fmt = format || 'YYYY-MM-DD HH:mm:ss', i18n = new I18N(locale).set(Dates.I18N_RESOURCE); return fmt.replace(/YYYY|YY|MMMM|MMM|MM|M|DD|D|hh|h|HH|H|mm|m|ss|s|dddd|ddd|A/g, function (m) { switch (m) { case "YYYY": return pad(T.getFullYear(), 4); case "YY": return pad(T.getFullYear()); case "MMMM": return i18n.get('MONTH_NAMES')[T.getMonth()]; case "MMM": return i18n.get('MONTH_SHORT_NAMES')[T.getMonth()]; case "MM": return pad((T.getMonth() + 1)); case "M": return T.getMonth() + 1; case "DD": return pad(T.getDate()); case "D": return T.getDate(); case "hh": { let h = T.getHours(); return pad(h < 13 ? (h === 0 ? 12 : h) : (h - 12)); } case "h": { let h = T.getHours(); return h < 13 ? (h === 0 ? 12 : h) : (h - 12); } case "HH": return pad(T.getHours()); case "H": return T.getHours(); case "mm": return pad(T.getMinutes()); case "m": return T.getMinutes(); case "ss": return pad(T.getSeconds()); case "s": return T.getSeconds(); case "dddd": return i18n.get('WEEK_DAY_NAMES')[T.getDay()]; case "ddd": return i18n.get('WEEK_DAY_SHORT_NAMES')[T.getDay()]; case "A": return i18n.get(T.getHours() < 12 ? 'AM' : 'PM'); default: return m; } }); }; }()); if (self['HTMLElement']) (function () { const D = document, HP = HTMLElement.prototype, oa = HP.append, op = HP.prepend, or = HP.remove, _ad = function (html) { if (!html) return; let div = D.createElement('div'), nodes = null, fg = D.createDocumentFragment(); div.innerHTML = html; nodes = div.childNodes; for (let i = 0, len = nodes.length; i < len; i++) { fg.appendChild(nodes[i].cloneNode(true)); } this.appendChild(fg); nodes = null; fg = null; }, _pd = function (html) { if (!html) return; let div = D.createElement('div'), nodes = null, fg = D.createDocumentFragment(); div.innerHTML = html; nodes = div.childNodes; for (let i = 0, len = nodes.length; i < len; i++) { fg.appendChild(nodes[i].cloneNode(true)); } this.insertBefore(fg, this.firstChild); nodes = null; fg = null; }; HP.append = function (...nodes) { nodes.forEach(n => { typeof n == 'string' ? _ad.call(this, n) : oa.call(this, n.cloneNode(true)); }); }; HP.prepend = function (...nodes) { nodes.forEach(n => { typeof n == 'string' ? _pd.call(this, n) : op.call(this, n); }); }; HP.box = function () { let box = this.computedStyle(); return { x: parseFloat(box.left) + System.display().docScrollX, y: parseFloat(box.top) + System.display().docScrollY, w: parseFloat(box.width), h: parseFloat(box.height) }; }; HP.attr = function (key, val) { if (arguments.length == 1) return this.getAttribute(key); this.setAttribute(key, val); return this; }; let _on = function (type, fn, opts) { if (!this['_bus']) this['_bus'] = new EventBus(this); let bus = this['_bus'], cb = e => { bus.fire(e); }, once = (opts && opts['once']) ? true : false; bus.on(type, fn, once); if (this.addEventListener) this.addEventListener(type, cb, opts); }; HP.on = function (type, fn, opts) { let types = type.split(' '); types.forEach(t => { _on.call(this, t, fn, opts); }); return this; }; let _rm = function (type, fn, opts) { if (!fn) return; if (this.removeEventListener) this.removeEventListener(type, fn, opts || false); }, _rms = function (type, fns, opts) { if (fns) fns.forEach(f => { _rm.call(this, type, f, opts); }); }, _off = function (type, fn, opts) { let bus = this['_bus']; if (bus) { let oFn = fn ? bus.original(type, fn['euid']) : undefined; bus.off(type, oFn); _rm.call(this, type, oFn, opts); } else { _rm.call(this, type, fn, opts); } }; HP.off = function (type, fn, capture) { if (!type) { let bus = this['_bus']; if (bus) { let types = bus.types(); for (let i = 0, len = types.length; i < len; i++) { let ty = types[i]; _rms.call(this, ty, bus.original(ty), capture); } bus.off(); } } else { let types = type.split(' '); types.forEach(t => { _off.call(this, t, fn, capture); }); } return this; }; HP.find = HP.querySelector; HP.findAll = HP.querySelectorAll; HP.computedStyle = function (p) { return document.defaultView.getComputedStyle(this, p || null); }; let _getV = function () { if (this instanceof HTMLTextAreaElement) { return this.value || ''; } else if (this instanceof HTMLInputElement) { if (this.type == 'checkbox') { let chks = document.getElementsByName(this.name); if (chks.length > 0) { let a = []; [].forEach.call(chks, function (chk) { if (chk.checked) a.push(chk.value); }); return a; } return this.checked ? [this.value] : []; } if (this.type == 'radio') { let rds = document.getElementsByName(this.name); if (rds.length > 0) { for (let i = 0, l = rds.length; i < l; i++) { let rd = rds.item(i); if (rd.checked) return rd.value; } return null; } return this.checked ? this.value : null; } return this.value || ''; } else if (this instanceof HTMLSelectElement) { let opts = this.findAll('option:checked'); if (opts.length > 0) { let a = []; for (let i = 0, l = opts.length; i < l; i++) { let opt = opts.item(i); if (this.multiple) { if (opt.selected) a.push(opt.value); } else { if (opt.selected) return opt.value; } } return a; } return []; } return undefined; }, _setV = function (v) { if (this instanceof HTMLTextAreaElement) { this.value = v || ''; } else if (this instanceof HTMLInputElement) { if (this.type == 'checkbox') { let chks = document.getElementsByName(this.name), vs = v; if (chks.length > 0) { [].forEach.call(chks, function (chk) { chk.checked = vs.indexOf(chk.value) > -1; }); } else { if (vs.indexOf(this.value) > -1) this.checked = true; } return this; } if (this.type == 'radio') { let rds = document.getElementsByName(this.name); if (rds.length > 0) { for (let i = 0, l = rds.length; i < l; i++) { let rd = rds.item(i); if (v == rd.value) { rd.checked = true; return this; } } } else { if (v == this.value) this.checked = true; } return this; } this.value = v; } else if (this instanceof HTMLSelectElement) { let opts = this.findAll('option'), vs = typeof v == 'string' ? [v] : v; if (opts.length > 0) { for (let i = 0, l = opts.length; i < l; i++) { let opt = opts.item(i); opt.selected = vs.indexOf(opt.value) > -1; } } } return this; }; HP.val = function (v) { return arguments.length == 0 ? _getV.call(this) : _setV.call(this, v); }; let setCssValue = (el, k, v) => { let st = el.style; if (v === undefined) { st.removeProperty(CssTool.hyphenCase(k)); } else if (v != null) { let w = v + ''; st.setProperty(CssTool.hyphenCase(k), CssTool.calcValue(w, el.css(k)), w.endsWith(' !important') ? 'important' : ''); } }; HP.css = function (name, val) { if (arguments.length == 1) { if (typeof name == 'string') { let key = CssTool.hyphenCase(name); return this.style.getPropertyValue(key) || this.computedStyle().getPropertyValue(key); } else { let s = ''; Jsons.forEach(name, (v, k) => { if (v != void 0) s += `${CssTool.hyphenCase(k)}:${CssTool.calcValue(v, this.style.getPropertyValue(k))};`; }); this.style.cssText += s; } } else { setCssValue(this, name, val); } return this; }; HP.empty = function (s) { let chs = this.findAll(s || '*'); if (chs.length > 0) [].forEach.call(chs, function (node) { if (node.nodeType == 1) node.off().remove(); }); return this; }; HP.remove = function (s) { this.empty.call(this, s); if (!s) or.call(this.off()); }; let DP = Document.prototype; DP.on = HP.addEventListener; DP.off = HP.removeEventListener; let WP = Window.prototype; WP.on = HP.addEventListener; WP.off = HP.removeEventListener; })(); var JS; (function (JS) { let util; (function (util) { let D; if (self['HTMLElement']) D = document; class Dom { static $1(selector) { return typeof selector == 'string' ? D.querySelector(selector) : selector; } static $L(selector) { return D.querySelectorAll(selector); } static rename(node, newTagName) { let newNode = D.createElement(newTagName), aNames = node['getAttributeNames'](); if (aNames) aNames.forEach(name => { newNode.setAttribute(name, node.getAttribute(name)); }); newNode.append.apply(newNode, node.childNodes); node.parentNode.replaceChild(newNode, node); } static applyStyle(code, id) { if (!code) return; this.$1('head').append(`<style${id ? ' id="' + id + '"' : ''}>${code}</style>`); } static applyHtml(html, appendTo, ignore) { if (!html) return Promise.reject(null); return Promises.create(function () { let doc = typeof html == 'string' ? new DOMParser().parseFromString(html, 'text/html') : html, url = doc.URL, el = Dom.$1(appendTo || D.body); el.append.apply(el, doc.body.childNodes); let ignoreCss = ignore === true || (ignore && ignore.css) ? true : false; if (!ignoreCss) { let cssFiles = doc.querySelectorAll('link[rel=stylesheet]'); if (cssFiles) { for (let i = 0, len = cssFiles.length; i < len; i++) { let css = cssFiles[i], href = css.getAttribute('href'); if (href) Loader.css(href, false); } } } let ignoreScript = ignore === true || (ignore && ignore.script) ? true : false; if (!ignoreScript) { let scs = doc.getElementsByTagName('script'), syncs = [], back = () => { syncs = null; scs = null; if (typeof html == 'string') doc = null; this.resolve(url); }; if (scs && scs.length > 0) { for (let i = 0, len = scs.length; i < len; i++) { let sc = scs[i]; sc.src ? (sc.async ? Loader.js(sc.src, true) : syncs.push(Loader.js(sc.src, false))) : eval(sc.text); } Promises.order(syncs).then(() => { back(); }).catch((u) => { JSLogger.error('Load inner script fail: ' + u + '\n; parent html:' + url); back(); }); } else { back(); } } else { if (typeof html == 'string') doc = null; this.resolve(url); } }); } static loadHTML(url, async, opts) { if (!url) return Promise.reject(null); return Promises.create(function () { Http.get({ responseType: 'html', url: url, cache: false, async: async }).then((res) => { let fn = opts && opts.prehandle; Dom.applyHtml(fn ? fn(res.data) : res.data, opts && opts.appendTo, opts && opts.ignore).then(() => { this.resolve(url); }); }); }); } } util.Dom = Dom; })(util = JS.util || (JS.util = {})); })(JS || (JS = {})); var Dom = JS.util.Dom; const $1 = Dom.$1; const $L = Dom.$L; var JS; (function (JS) { let util; (function (util) { let EUID = 1, E = util.Check.isEmpty; class E