UNPKG

@lxlib/util

Version:

This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.1.

1,484 lines (1,467 loc) 44.6 kB
import { __spread, __assign, __values } from 'tslib'; import extend from 'extend'; import addDays from 'date-fns/addDays'; import endOfDay from 'date-fns/endOfDay'; import endOfMonth from 'date-fns/endOfMonth'; import endOfWeek from 'date-fns/endOfWeek'; import endOfYear from 'date-fns/endOfYear'; import parseISO from 'date-fns/parseISO'; import startOfDay from 'date-fns/startOfDay'; import startOfMonth from 'date-fns/startOfMonth'; import startOfWeek from 'date-fns/startOfWeek'; import startOfYear from 'date-fns/startOfYear'; import subMonths from 'date-fns/subMonths'; import subWeeks from 'date-fns/subWeeks'; import subYears from 'date-fns/subYears'; import { DOCUMENT, CommonModule } from '@angular/common'; import { Injectable, Inject, ɵɵdefineInjectable, ɵɵinject, isDevMode, NgModule } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { share, filter } from 'rxjs/operators'; import { environment } from 'ng-zorro-antd/core/environments'; import { NzTreeNode } from 'ng-zorro-antd/core/tree'; /** * @fileoverview added by tsickle * Generated from: src/other/other.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * 类似 `_.get`,根据 `path` 获取安全值 * jsperf: https://jsperf.com/es-deep-getttps://jsperf.com/es-deep-get * * @param {?} obj 数据源,无效时直接返回 `defaultValue` 值 * @param {?} path 若 `null`、`[]`、未定义及未找到时返回 `defaultValue` 值 * @param {?=} defaultValue 默认值 * @return {?} */ function deepGet(obj, path, defaultValue) { if (!obj || path == null || path.length === 0) return defaultValue; if (!Array.isArray(path)) { path = ~path.indexOf('.') ? path.split('.') : [path]; } if (path.length === 1) { /** @type {?} */ var checkObj = obj[path[0]]; return typeof checkObj === 'undefined' ? defaultValue : checkObj; } /** @type {?} */ var res = path.reduce((/** * @param {?} o * @param {?} k * @return {?} */ function (o, k) { return (o || {})[k]; }), obj); return typeof res === 'undefined' ? defaultValue : res; } /** * 基于 [extend](https://github.com/justmoon/node-extend) 的深度拷贝 * @param {?} obj * @return {?} */ function deepCopy(obj) { /** @type {?} */ var result = extend(true, {}, { _: obj }); return result._; } /** * 复制字符串文档至剪贴板 * @param {?} value * @return {?} */ function copy(value) { return new Promise((/** * @param {?} resolve * @return {?} */ function (resolve) { /** @type {?} */ var copyTextArea = null; try { copyTextArea = document.createElement('textarea'); copyTextArea.style.height = '0px'; copyTextArea.style.opacity = '0'; copyTextArea.style.width = '0px'; document.body.appendChild(copyTextArea); copyTextArea.value = value; copyTextArea.select(); document.execCommand('copy'); resolve(value); } finally { if (copyTextArea && copyTextArea.parentNode) { copyTextArea.parentNode.removeChild(copyTextArea); } } })); } /** * 深度合并对象 * * @param {?} original 原始对象 * @param {?} ingoreArray 是否忽略数组,`true` 表示忽略数组的合并,`false` 表示会合并整个数组 * @param {...?} objects 要合并的对象 * @return {?} */ function deepMergeKey(original, ingoreArray) { var objects = []; for (var _i = 2; _i < arguments.length; _i++) { objects[_i - 2] = arguments[_i]; } if (Array.isArray(original) || typeof original !== 'object') return original; /** @type {?} */ var isObject = (/** * @param {?} v * @return {?} */ function (v) { return typeof v === 'object' || typeof v === 'function'; }); /** @type {?} */ var merge = (/** * @param {?} target * @param {?} obj * @return {?} */ function (target, obj) { Object.keys(obj) .filter((/** * @param {?} key * @return {?} */ function (key) { return key !== '__proto__' && Object.prototype.hasOwnProperty.call(obj, key); })) .forEach((/** * @param {?} key * @return {?} */ function (key) { /** @type {?} */ var oldValue = obj[key]; /** @type {?} */ var newValue = target[key]; if (Array.isArray(newValue)) { target[key] = ingoreArray ? oldValue : __spread(newValue, oldValue); } else if (oldValue != null && isObject(oldValue) && newValue != null && isObject(newValue)) { target[key] = merge(newValue, oldValue); } else { target[key] = deepCopy(oldValue); } })); return target; }); objects.filter((/** * @param {?} v * @return {?} */ function (v) { return v != null && isObject(v); })).forEach((/** * @param {?} v * @return {?} */ function (v) { return merge(original, v); })); return original; } /** * 深度合并对象 * * @param {?} original 原始对象 * @param {...?} objects 要合并的对象 * @return {?} */ function deepMerge(original) { var objects = []; for (var _i = 1; _i < arguments.length; _i++) { objects[_i - 1] = arguments[_i]; } return deepMergeKey.apply(void 0, __spread([original, false], objects)); } /** * @fileoverview added by tsickle * Generated from: src/string/string.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * 字符串格式化 * ``` * format('this is ${name}', { name: 'asdf' }) * // output: this is asdf * format('this is ${user.name}', { user: { name: 'asdf' } }, true) * // output: this is asdf * ``` * @param {?} str * @param {?} obj * @param {?=} needDeepGet * @return {?} */ function format(str, obj, needDeepGet) { if (needDeepGet === void 0) { needDeepGet = false; } return (str || '').replace(/\${([^}]+)}/g, (/** * @param {?} _work * @param {?} key * @return {?} */ function (_work, key) { return needDeepGet ? deepGet(obj, key.split('.'), '') : (obj || {})[key] || ''; })); } /** * @fileoverview added by tsickle * Generated from: src/time/time.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * 获取时间范围 * @param {?} type 类型,带 `-` 表示过去一个时间,若指定 `number` 表示天数 * @param {?=} time 开始时间 * @return {?} */ function getTimeDistance(type, time) { time = time ? (typeof time === 'string' ? parseISO(time) : new Date(time)) : new Date(); /** @type {?} */ var options = { weekStartsOn: 1 }; /** @type {?} */ var res; switch (type) { case 'today': res = [time, time]; break; case '-today': res = [addDays(time, -1), time]; break; case 'yesterday': res = [addDays(time, -1), addDays(time, -1)]; break; case 'week': res = [startOfWeek(time, options), endOfWeek(time, options)]; break; case '-week': res = [startOfWeek(subWeeks(time, 1), options), endOfWeek(subWeeks(time, 1), options)]; break; case 'month': res = [startOfMonth(time), endOfMonth(time)]; break; case '-month': res = [startOfMonth(subMonths(time, 1)), endOfMonth(subMonths(time, 1))]; break; case 'year': res = [startOfYear(time), endOfYear(time)]; break; case '-year': res = [startOfYear(subYears(time, 1)), endOfYear(subYears(time, 1))]; break; default: res = type > 0 ? [time, addDays(time, type)] : [addDays(time, type), time]; break; } return fixEndTimeOfRange(res); } /** * fix time is the most, big value * @param {?} dates * @return {?} */ function fixEndTimeOfRange(dates) { return [startOfDay(dates[0]), endOfDay(dates[1])]; } /** * @fileoverview added by tsickle * Generated from: src/lazy/lazy.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @record */ function LazyResult() { } if (false) { /** @type {?} */ LazyResult.prototype.path; /** @type {?} */ LazyResult.prototype.loaded; /** @type {?} */ LazyResult.prototype.status; /** @type {?|undefined} */ LazyResult.prototype.error; } /** * 延迟加载资源(js 或 css)服务 */ var LazyService = /** @class */ (function () { function LazyService(doc) { this.doc = doc; this.list = {}; this.cached = {}; this._notify = new BehaviorSubject([]); } Object.defineProperty(LazyService.prototype, "change", { get: /** * @return {?} */ function () { return this._notify.asObservable().pipe(share(), filter((/** * @param {?} ls * @return {?} */ function (ls) { return ls.length !== 0; }))); }, enumerable: true, configurable: true }); /** * @return {?} */ LazyService.prototype.clear = /** * @return {?} */ function () { this.list = {}; this.cached = {}; }; /** * @param {?} paths * @return {?} */ LazyService.prototype.load = /** * @param {?} paths * @return {?} */ function (paths) { var _this = this; if (!Array.isArray(paths)) { paths = [paths]; } /** @type {?} */ var promises = []; paths.forEach((/** * @param {?} path * @return {?} */ function (path) { if (path.endsWith('.js')) { promises.push(_this.loadScript(path)); } else { promises.push(_this.loadStyle(path)); } })); return Promise.all(promises).then((/** * @param {?} res * @return {?} */ function (res) { _this._notify.next(res); return Promise.resolve(res); })); }; /** * @param {?} path * @param {?=} innerContent * @return {?} */ LazyService.prototype.loadScript = /** * @param {?} path * @param {?=} innerContent * @return {?} */ function (path, innerContent) { var _this = this; return new Promise((/** * @param {?} resolve * @return {?} */ function (resolve) { if (_this.list[path] === true) { resolve(_this.cached[path]); return; } _this.list[path] = true; /** @type {?} */ var onSuccess = (/** * @param {?} item * @return {?} */ function (item) { _this.cached[path] = item; resolve(item); }); /** @type {?} */ var node = (/** @type {?} */ (_this.doc.createElement('script'))); node.type = 'text/javascript'; node.src = path; node.charset = 'utf-8'; if (innerContent) { node.innerHTML = innerContent; } if (node.readyState) { // IE node.onreadystatechange = (/** * @return {?} */ function () { if (node.readyState === 'loaded' || node.readyState === 'complete') { node.onreadystatechange = null; onSuccess({ path: path, loaded: true, status: 'ok', }); } }); } else { node.onload = (/** * @return {?} */ function () { return onSuccess({ path: path, loaded: true, status: 'ok', }); }); } node.onerror = (/** * @param {?} error * @return {?} */ function (error) { return onSuccess({ path: path, loaded: false, status: 'error', error: error, }); }); _this.doc.getElementsByTagName('head')[0].appendChild(node); })); }; /** * @param {?} path * @param {?=} rel * @param {?=} innerContent * @return {?} */ LazyService.prototype.loadStyle = /** * @param {?} path * @param {?=} rel * @param {?=} innerContent * @return {?} */ function (path, rel, innerContent) { var _this = this; if (rel === void 0) { rel = 'stylesheet'; } return new Promise((/** * @param {?} resolve * @return {?} */ function (resolve) { if (_this.list[path] === true) { resolve(_this.cached[path]); return; } _this.list[path] = true; /** @type {?} */ var node = (/** @type {?} */ (_this.doc.createElement('link'))); node.rel = rel; node.type = 'text/css'; node.href = path; if (innerContent) { node.innerHTML = innerContent; } _this.doc.getElementsByTagName('head')[0].appendChild(node); /** @type {?} */ var item = { path: path, loaded: true, status: 'ok', }; _this.cached[path] = item; resolve(item); })); }; LazyService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ LazyService.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] } ]; }; /** @nocollapse */ LazyService.ɵprov = ɵɵdefineInjectable({ factory: function LazyService_Factory() { return new LazyService(ɵɵinject(DOCUMENT)); }, token: LazyService, providedIn: "root" }); return LazyService; }()); if (false) { /** * @type {?} * @private */ LazyService.prototype.list; /** * @type {?} * @private */ LazyService.prototype.cached; /** * @type {?} * @private */ LazyService.prototype._notify; /** * @type {?} * @private */ LazyService.prototype.doc; } /** * @fileoverview added by tsickle * Generated from: src/validate/validate.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * 是否为数字 * @param {?} value * @return {?} */ function isNum(value) { return /^((-?\d+\.\d+)|(-?\d+)|(-?\.\d+))$/.test(value.toString()); } /** * 是否为整数 * @param {?} value * @return {?} */ function isInt(value) { return isNum(value) && parseInt(value.toString(), 10).toString() === value.toString(); } /** * 是否为小数 * @param {?} value * @return {?} */ function isDecimal(value) { return isNum(value) && !isInt(value); } /** * 是否为身份证 * @param {?} value * @return {?} */ function isIdCard(value) { return typeof value === 'string' && /(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(value); } /** * 是否为手机号 * @param {?} value * @return {?} */ function isMobile(value) { return typeof value === 'string' && /^(0|\+?86|17951)?(13[0-9]|15[0-9]|17[0678]|18[0-9]|14[57])[0-9]{8}$/.test(value); } /** * 是否URL地址 * @param {?} url * @return {?} */ function isUrl(url) { return /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/.test(url); } /** * @fileoverview added by tsickle * Generated from: src/validate/validators.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * 一套日常验证器 */ // tslint:disable-next-line:class-name var /** * 一套日常验证器 */ // tslint:disable-next-line:class-name _Validators = /** @class */ (function () { function _Validators() { } /** 是否为数字 */ /** * 是否为数字 * @param {?} control * @return {?} */ _Validators.num = /** * 是否为数字 * @param {?} control * @return {?} */ function (control) { return isNum(control.value) ? null : { num: true }; }; /** 是否为整数 */ /** * 是否为整数 * @param {?} control * @return {?} */ _Validators.int = /** * 是否为整数 * @param {?} control * @return {?} */ function (control) { return isInt(control.value) ? null : { int: true }; }; /** 是否为小数 */ /** * 是否为小数 * @param {?} control * @return {?} */ _Validators.decimal = /** * 是否为小数 * @param {?} control * @return {?} */ function (control) { return isDecimal(control.value) ? null : { decimal: true }; }; /** 是否为身份证 */ /** * 是否为身份证 * @param {?} control * @return {?} */ _Validators.idCard = /** * 是否为身份证 * @param {?} control * @return {?} */ function (control) { return isIdCard(control.value) ? null : { idCard: true }; }; /** 是否为手机号 */ /** * 是否为手机号 * @param {?} control * @return {?} */ _Validators.mobile = /** * 是否为手机号 * @param {?} control * @return {?} */ function (control) { return isMobile(control.value) ? null : { mobile: true }; }; /** 是否URL地址 */ /** * 是否URL地址 * @param {?} control * @return {?} */ _Validators.url = /** * 是否URL地址 * @param {?} control * @return {?} */ function (control) { return isUrl(control.value) ? null : { url: true }; }; return _Validators; }()); /** * @fileoverview added by tsickle * Generated from: src/logger/logger.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** @type {?} */ var record = {}; /** @type {?} */ var PREFIX = '[@LXLIB]:'; /** * @param {...?} args * @return {?} */ function notRecorded() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } /** @type {?} */ var asRecord = args.reduce((/** * @param {?} acc * @param {?} c * @return {?} */ function (acc, c) { return acc + c.toString(); }), ''); if (record[asRecord]) { return false; } else { record[asRecord] = true; return true; } } /** * @param {?} consoleFunc * @param {...?} args * @return {?} */ function consoleCommonBehavior(consoleFunc) { var args = []; for (var _i = 1; _i < arguments.length; _i++) { args[_i - 1] = arguments[_i]; } if (environment.isTestMode || (isDevMode() && notRecorded.apply(void 0, __spread(args)))) { consoleFunc.apply(void 0, __spread(args)); } } // Warning should only be printed in dev mode and only once. /** @type {?} */ var warn = (/** * @param {...?} args * @return {?} */ function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } return consoleCommonBehavior.apply(void 0, __spread([(/** * @param {...?} arg * @return {?} */ function () { var arg = []; for (var _i = 0; _i < arguments.length; _i++) { arg[_i] = arguments[_i]; } return console.warn.apply(console, __spread([PREFIX], arg)); })], args)); }); /** @type {?} */ var warnDeprecation = (/** * @param {...?} args * @return {?} */ function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!environment.isTestMode) { /** @type {?} */ var stack_1 = new Error().stack; return consoleCommonBehavior.apply(void 0, __spread([(/** * @param {...?} arg * @return {?} */ function () { var arg = []; for (var _i = 0; _i < arguments.length; _i++) { arg[_i] = arguments[_i]; } return console.warn.apply(console, __spread([PREFIX, 'deprecated:'], arg, [stack_1])); })], args)); } else { return (/** * @return {?} */ function () { }); } }); // Log should only be printed in dev mode. /** @type {?} */ var log = (/** * @param {...?} args * @return {?} */ function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (isDevMode()) { console.log.apply(console, __spread([PREFIX], args)); } }); /** * @fileoverview added by tsickle * Generated from: src/other/check.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @param {?} element * @return {?} */ function isEmpty(element) { /** @type {?} */ var nodes = element.childNodes; for (var i = 0; i < nodes.length; i++) { /** @type {?} */ var node = nodes.item(i); if (node.nodeType === 1 && ((/** @type {?} */ (node))).outerHTML.toString().trim().length !== 0) { return false; } else if (node.nodeType === 3 && (/** @type {?} */ (node.textContent)).toString().trim().length !== 0) { return false; } } return true; } /** * @template T, D * @param {?} name * @param {?} fallback * @param {?} defaultValue * @return {?} */ function propDecoratorFactory(name, fallback, defaultValue) { /** * @param {?} target * @param {?} propName * @param {?=} originalDescriptor * @return {?} */ function propDecorator(target, propName, originalDescriptor) { /** @type {?} */ var privatePropName = "$$__" + propName; if (Object.prototype.hasOwnProperty.call(target, privatePropName)) { warn("The prop \"" + privatePropName + "\" is already exist, it will be overrided by " + name + " decorator."); } Object.defineProperty(target, privatePropName, { configurable: true, writable: true, }); return { get: /** * @return {?} */ function () { return originalDescriptor && originalDescriptor.get ? originalDescriptor.get.bind(this)() : this[privatePropName]; }, set: /** * @param {?} value * @return {?} */ function (value) { if (originalDescriptor && originalDescriptor.set) { originalDescriptor.set.bind(this)(fallback(value, defaultValue)); } this[privatePropName] = fallback(value, defaultValue); }, }; } return propDecorator; } /** * @param {?} value * @param {?=} allowUndefined * @return {?} */ function toBoolean(value, allowUndefined) { if (allowUndefined === void 0) { allowUndefined = false; } return allowUndefined && typeof value === 'undefined' ? undefined : value != null && "" + value !== 'false'; } /** * Input decorator that handle a prop to do get/set automatically with toBoolean * * ```ts * \@Input() InputBoolean() visible: boolean = false; / \@InputBoolean(null) visible: boolean = false; * ``` * @param {?=} defaultValue * @return {?} */ function InputBoolean(defaultValue) { if (defaultValue === void 0) { defaultValue = false; } return propDecoratorFactory('InputNumber', toBoolean, defaultValue); } /** * @param {?} value * @param {?=} fallbackValue * @return {?} */ function toNumber(value, fallbackValue) { if (fallbackValue === void 0) { fallbackValue = 0; } return !isNaN(parseFloat((/** @type {?} */ (value)))) && !isNaN(Number(value)) ? Number(value) : fallbackValue; } /** * Input decorator that handle a prop to do get/set automatically with toNumber * * ```ts * \@Input() \@InputNumber() visible: number = 1; / \@InputNumber(null) visible: number = 2; * ``` * @param {?=} defaultValue * @return {?} */ function InputNumber(defaultValue) { if (defaultValue === void 0) { defaultValue = 0; } return propDecoratorFactory('InputNumber', toNumber, defaultValue); } /** * @fileoverview added by tsickle * Generated from: src/other/style.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @param {?} el * @param {?} classMap * @param {?} renderer * @return {?} */ function removeClass(el, classMap, renderer) { // tslint:disable-next-line: forin for (var i in classMap) { renderer.removeClass(el, i); } } /** * @param {?} el * @param {?} classMap * @param {?} renderer * @return {?} */ function addClass(el, classMap, renderer) { for (var i in classMap) { if (classMap[i]) { renderer.addClass(el, i); } } } /** * 更新宿主组件样式 `class`,例如: * * ```ts * updateHostClass( * this.el.nativeElement, * this.renderer, * { * [ 'classname' ]: true, * [ 'classname' ]: this.type === '1', * [ this.cls ]: true, * [ `a-${this.cls}` ]: true * }) * ``` * * @param {?} el * @param {?} renderer * @param {?} classMap * @param {?=} cleanAll * @return {?} */ function updateHostClass(el, renderer, classMap, cleanAll) { if (cleanAll === void 0) { cleanAll = false; } if (cleanAll === true) { renderer.removeAttribute(el, 'class'); } else { removeClass(el, classMap, renderer); } classMap = __assign({}, classMap); addClass(el, classMap, renderer); } /** * @fileoverview added by tsickle * Generated from: src/array/array.config.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @record */ function ArrayConfig() { } if (false) { /** * 深度项名,默认:`'deep'` * @type {?|undefined} */ ArrayConfig.prototype.deepMapName; /** * 扁平后数组的父数据项名,默认:`'parent'` * @type {?|undefined} */ ArrayConfig.prototype.parentMapName; /** * 编号项名,默认:`'id'` * @type {?|undefined} */ ArrayConfig.prototype.idMapName; /** * 父编号项名,默认:`'parent_id'` * @type {?|undefined} */ ArrayConfig.prototype.parentIdMapName; /** * 源数据子项名,默认:`'children'` * @type {?|undefined} */ ArrayConfig.prototype.childrenMapName; /** * 标题项名,默认:`'title'` * @type {?|undefined} */ ArrayConfig.prototype.titleMapName; /** * 节点 Checkbox 是否选中项名,默认:`'checked'` * @type {?|undefined} */ ArrayConfig.prototype.checkedMapname; /** * 节点本身是否选中项名,默认:`'selected'` * @type {?|undefined} */ ArrayConfig.prototype.selectedMapname; /** * 节点是否展开(叶子节点无效)项名,默认:`'expanded'` * @type {?|undefined} */ ArrayConfig.prototype.expandedMapname; /** * 设置是否禁用节点(不可进行任何操作)项名,默认:`'disabled'` * @type {?|undefined} */ ArrayConfig.prototype.disabledMapname; } /** * @fileoverview added by tsickle * Generated from: src/util.config.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var LxlibUtilConfig = /** @class */ (function () { function LxlibUtilConfig() { } LxlibUtilConfig.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ LxlibUtilConfig.ɵprov = ɵɵdefineInjectable({ factory: function LxlibUtilConfig_Factory() { return new LxlibUtilConfig(); }, token: LxlibUtilConfig, providedIn: "root" }); return LxlibUtilConfig; }()); if (false) { /** @type {?} */ LxlibUtilConfig.prototype.array; } /** * @fileoverview added by tsickle * Generated from: src/array/array.service.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @record */ function ArrayServiceTreeToArrOptions() { } if (false) { /** * 深度项名,默认:`'deep'` * @type {?|undefined} */ ArrayServiceTreeToArrOptions.prototype.deepMapName; /** * 扁平后数组的父数据项名,默认:`'parent'` * @type {?|undefined} */ ArrayServiceTreeToArrOptions.prototype.parentMapName; /** * 源数据子项名,默认:`'children'` * @type {?|undefined} */ ArrayServiceTreeToArrOptions.prototype.childrenMapName; /** * 是否移除 `children` 节点,默认:`true` * @type {?|undefined} */ ArrayServiceTreeToArrOptions.prototype.clearChildren; /** * 转换成数组结构时回调 * @type {?|undefined} */ ArrayServiceTreeToArrOptions.prototype.cb; } /** * @record */ function ArrayServiceArrToTreeOptions() { } if (false) { /** * 编号项名,默认:`'id'` * @type {?|undefined} */ ArrayServiceArrToTreeOptions.prototype.idMapName; /** * 父编号项名,默认:`'parent_id'` * @type {?|undefined} */ ArrayServiceArrToTreeOptions.prototype.parentIdMapName; /** * 子项名,默认:`'children'` * @type {?|undefined} */ ArrayServiceArrToTreeOptions.prototype.childrenMapName; /** * 转换成树数据时回调 * @type {?|undefined} */ ArrayServiceArrToTreeOptions.prototype.cb; } /** * @record */ function ArrayServiceArrToTreeNodeOptions() { } if (false) { /** * 编号项名,默认:`'id'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.idMapName; /** * 父编号项名,默认:`'parent_id'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.parentIdMapName; /** * 标题项名,默认:`'title'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.titleMapName; /** * 设置为叶子节点项名,若数据源不存在时自动根据 `children` 值决定是否为叶子节点,默认:`'isLeaf'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.isLeafMapName; /** * 节点 Checkbox 是否选中项名,默认:`'checked'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.checkedMapname; /** * 节点本身是否选中项名,默认:`'selected'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.selectedMapname; /** * 节点是否展开(叶子节点无效)项名,默认:`'expanded'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.expandedMapname; /** * 设置是否禁用节点(不可进行任何操作)项名,默认:`'disabled'` * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.disabledMapname; /** * 转换成树数据后,执行的递归回调 * @type {?|undefined} */ ArrayServiceArrToTreeNodeOptions.prototype.cb; } /** * @record */ function ArrayServiceGetKeysByTreeNodeOptions() { } if (false) { /** * 是否包含半选状态的值,默认:`true` * @type {?|undefined} */ ArrayServiceGetKeysByTreeNodeOptions.prototype.includeHalfChecked; /** * 是否重新指定 `key` 键名,若不指定表示使用 `NzTreeNode.key` 值 * @type {?|undefined} */ ArrayServiceGetKeysByTreeNodeOptions.prototype.keyMapName; /** * 回调,返回一个值 `key` 值,优先级高于其他 * @type {?|undefined} */ ArrayServiceGetKeysByTreeNodeOptions.prototype.cb; } var ArrayService = /** @class */ (function () { function ArrayService(cog) { this.c = __assign({ deepMapName: 'deep', parentMapName: 'parent', idMapName: 'id', parentIdMapName: 'parent_id', childrenMapName: 'children', titleMapName: 'title', checkedMapname: 'checked', selectedMapname: 'selected', expandedMapname: 'expanded', disabledMapname: 'disabled' }, (cog && cog.array)); } /** * 将树结构转换成数组结构 */ /** * 将树结构转换成数组结构 * @param {?} tree * @param {?=} options * @return {?} */ ArrayService.prototype.treeToArr = /** * 将树结构转换成数组结构 * @param {?} tree * @param {?=} options * @return {?} */ function (tree, options) { /** @type {?} */ var opt = (/** @type {?} */ (__assign({ deepMapName: this.c.deepMapName, parentMapName: this.c.parentMapName, childrenMapName: this.c.childrenMapName, clearChildren: true, cb: null }, options))); /** @type {?} */ var result = []; /** @type {?} */ var inFn = (/** * @param {?} list * @param {?} parent * @param {?=} deep * @return {?} */ function (list, parent, deep) { var e_1, _a; if (deep === void 0) { deep = 0; } try { for (var list_1 = __values(list), list_1_1 = list_1.next(); !list_1_1.done; list_1_1 = list_1.next()) { var i = list_1_1.value; i[(/** @type {?} */ (opt.deepMapName))] = deep; i[(/** @type {?} */ (opt.parentMapName))] = parent; if (opt.cb) { opt.cb(i, parent, deep); } result.push(i); /** @type {?} */ var children = i[(/** @type {?} */ (opt.childrenMapName))]; if (children != null && Array.isArray(children) && children.length > 0) { inFn(children, i, deep + 1); } if (opt.clearChildren) { delete i[(/** @type {?} */ (opt.childrenMapName))]; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (list_1_1 && !list_1_1.done && (_a = list_1.return)) _a.call(list_1); } finally { if (e_1) throw e_1.error; } } }); inFn(tree, 1); return result; }; /** * 数组转换成树数据 */ /** * 数组转换成树数据 * @param {?} arr * @param {?=} options * @return {?} */ ArrayService.prototype.arrToTree = /** * 数组转换成树数据 * @param {?} arr * @param {?=} options * @return {?} */ function (arr, options) { var e_2, _a; /** @type {?} */ var opt = (/** @type {?} */ (__assign({ idMapName: this.c.idMapName, parentIdMapName: this.c.parentIdMapName, childrenMapName: this.c.childrenMapName, cb: null }, options))); /** @type {?} */ var tree = []; /** @type {?} */ var childrenOf = {}; try { for (var arr_1 = __values(arr), arr_1_1 = arr_1.next(); !arr_1_1.done; arr_1_1 = arr_1.next()) { var item = arr_1_1.value; /** @type {?} */ var id = item[(/** @type {?} */ (opt.idMapName))]; /** @type {?} */ var pid = item[(/** @type {?} */ (opt.parentIdMapName))]; childrenOf[id] = childrenOf[id] || []; item[(/** @type {?} */ (opt.childrenMapName))] = childrenOf[id]; if (opt.cb) { opt.cb(item); } if (pid) { childrenOf[pid] = childrenOf[pid] || []; childrenOf[pid].push(item); } else { tree.push(item); } } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (arr_1_1 && !arr_1_1.done && (_a = arr_1.return)) _a.call(arr_1); } finally { if (e_2) throw e_2.error; } } return tree; }; /** * 数组转换成 `nz-tree` 数据源,通过 `options` 转化项名,也可以使用 `options.cb` 更高级决定数据项 */ /** * 数组转换成 `nz-tree` 数据源,通过 `options` 转化项名,也可以使用 `options.cb` 更高级决定数据项 * @param {?} arr * @param {?=} options * @return {?} */ ArrayService.prototype.arrToTreeNode = /** * 数组转换成 `nz-tree` 数据源,通过 `options` 转化项名,也可以使用 `options.cb` 更高级决定数据项 * @param {?} arr * @param {?=} options * @return {?} */ function (arr, options) { /** @type {?} */ var opt = (/** @type {?} */ (__assign({ idMapName: this.c.idMapName, parentIdMapName: this.c.parentIdMapName, titleMapName: this.c.titleMapName, isLeafMapName: 'isLeaf', checkedMapname: this.c.checkedMapname, selectedMapname: this.c.selectedMapname, expandedMapname: this.c.expandedMapname, disabledMapname: this.c.disabledMapname, cb: null }, options))); /** @type {?} */ var tree = this.arrToTree(arr, { idMapName: opt.idMapName, parentIdMapName: opt.parentIdMapName, childrenMapName: 'children', }); this.visitTree(tree, (/** * @param {?} item * @param {?} parent * @param {?} deep * @return {?} */ function (item, parent, deep) { item.key = item[(/** @type {?} */ (opt.idMapName))]; item.title = item[(/** @type {?} */ (opt.titleMapName))]; item.checked = item[(/** @type {?} */ (opt.checkedMapname))]; item.selected = item[(/** @type {?} */ (opt.selectedMapname))]; item.expanded = item[(/** @type {?} */ (opt.expandedMapname))]; item.disabled = item[(/** @type {?} */ (opt.disabledMapname))]; if (item[(/** @type {?} */ (opt.isLeafMapName))] == null) { item.isLeaf = item.children.length === 0; } else { item.isLeaf = item[(/** @type {?} */ (opt.isLeafMapName))]; } if (opt.cb) { opt.cb(item, parent, deep); } })); return tree.map((/** * @param {?} node * @return {?} */ function (node) { return new NzTreeNode(node); })); }; /** * 递归访问整个树 */ /** * 递归访问整个树 * @param {?} tree * @param {?} cb * @param {?=} options * @return {?} */ ArrayService.prototype.visitTree = /** * 递归访问整个树 * @param {?} tree * @param {?} cb * @param {?=} options * @return {?} */ function (tree, cb, options) { options = __assign({ childrenMapName: this.c.childrenMapName }, options); /** @type {?} */ var inFn = (/** * @param {?} data * @param {?} parent * @param {?} deep * @return {?} */ function (data, parent, deep) { var e_3, _a; try { for (var data_1 = __values(data), data_1_1 = data_1.next(); !data_1_1.done; data_1_1 = data_1.next()) { var item = data_1_1.value; cb(item, parent, deep); /** @type {?} */ var childrenVal = item[(/** @type {?} */ ((/** @type {?} */ (options)).childrenMapName))]; if (childrenVal && childrenVal.length > 0) { inFn(childrenVal, item, deep + 1); } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (data_1_1 && !data_1_1.done && (_a = data_1.return)) _a.call(data_1); } finally { if (e_3) throw e_3.error; } } }); inFn(tree, null, 1); }; /** * 获取所有已经选中的 `key` 值 */ /** * 获取所有已经选中的 `key` 值 * @param {?} tree * @param {?=} options * @return {?} */ ArrayService.prototype.getKeysByTreeNode = /** * 获取所有已经选中的 `key` 值 * @param {?} tree * @param {?=} options * @return {?} */ function (tree, options) { /** @type {?} */ var opt = (/** @type {?} */ (__assign({ includeHalfChecked: true }, options))); /** @type {?} */ var keys = []; this.visitTree(tree, (/** * @param {?} item * @param {?} parent * @param {?} deep * @return {?} */ function (item, parent, deep) { if (item.isChecked || (opt.includeHalfChecked && item.isHalfChecked)) { keys.push(opt.cb ? opt.cb(item, parent, deep) : opt.keyMapName ? item.origin[opt.keyMapName] : item.key); } })); return keys; }; ArrayService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ ArrayService.ctorParameters = function () { return [ { type: LxlibUtilConfig } ]; }; /** @nocollapse */ ArrayService.ɵprov = ɵɵdefineInjectable({ factory: function ArrayService_Factory() { return new ArrayService(ɵɵinject(LxlibUtilConfig)); }, token: ArrayService, providedIn: "root" }); return ArrayService; }()); if (false) { /** * @type {?} * @private */ ArrayService.prototype.c; } /** * @fileoverview added by tsickle * Generated from: src/util.module.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ var LxlibUtilModule = /** @class */ (function () { function LxlibUtilModule() { } LxlibUtilModule.decorators = [ { type: NgModule, args: [{ imports: [CommonModule], },] } ]; return LxlibUtilModule; }()); /** * @fileoverview added by tsickle * Generated from: public_api.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /** * @fileoverview added by tsickle * Generated from: util.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ export { ArrayService, InputBoolean, InputNumber, LazyService, LxlibUtilConfig, LxlibUtilModule, _Validators, copy, deepCopy, deepGet, deepMerge, deepMergeKey, fixEndTimeOfRange, format, getTimeDistance, isDecimal, isEmpty, isIdCard, isInt, isMobile, isNum, isUrl, toBoolean, toNumber, updateHostClass }; //# sourceMappingURL=util.js.map