jsdk-offical
Version:
JSDK is the most comprehensive TypeScript framework, like JDK.
1,310 lines • 138 kB
JavaScript
//# 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