UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

197 lines (196 loc) 16.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; var ArrayUtils = /** @class */ (function () { function ArrayUtils() { } /** * @param {?} dataArray * @param {?} fromIndex * @param {?} toIndex * @return {?} */ ArrayUtils.move = /** * @param {?} dataArray * @param {?} fromIndex * @param {?} toIndex * @return {?} */ function (dataArray, fromIndex, toIndex) { if (dataArray === null || typeof dataArray === 'undefined' || dataArray.length <= 0) { return; } if (toIndex === null || typeof toIndex === 'undefined' || toIndex <= -1) { return; } if (fromIndex === null || typeof fromIndex === 'undefined' || fromIndex <= -1) { return; } if (fromIndex === toIndex) { return; } if (toIndex < dataArray.length && fromIndex < dataArray.length) { var /** @type {?} */ data = dataArray[fromIndex]; dataArray.splice(fromIndex, 1); dataArray.splice(toIndex, 0, data); } }; /** * @param {?} dataArray * @param {?} item * @param {?} toIndex * @return {?} */ ArrayUtils.insert = /** * @param {?} dataArray * @param {?} item * @param {?} toIndex * @return {?} */ function (dataArray, item, toIndex) { if (dataArray === null || typeof dataArray === 'undefined' || dataArray.length <= 0) { return; } if (toIndex === null || typeof toIndex === 'undefined' || toIndex <= -1) { return; } dataArray.splice(toIndex, 0, item); }; /** * @param {?} objectArray * @param {?} typeOf * @return {?} */ ArrayUtils.isAllMemberTypeOf = /** * @param {?} objectArray * @param {?} typeOf * @return {?} */ function (objectArray, typeOf) { if (objectArray === null || typeof objectArray === 'undefined') { throw new Error("objectArray is null or undefined"); } if (!Array.isArray(objectArray)) { throw new Error("objectArray is not array"); } if (objectArray.length <= 0) { return false; } try { for (var objectArray_1 = tslib_1.__values(objectArray), objectArray_1_1 = objectArray_1.next(); !objectArray_1_1.done; objectArray_1_1 = objectArray_1.next()) { var obj = objectArray_1_1.value; if (typeof obj !== typeOf) { return false; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (objectArray_1_1 && !objectArray_1_1.done && (_a = objectArray_1.return)) _a.call(objectArray_1); } finally { if (e_1) throw e_1.error; } } return true; var e_1, _a; }; /** * @param {?} objectArray * @param {?} propKey * @return {?} */ ArrayUtils.isAllMemberHasProperty = /** * @param {?} objectArray * @param {?} propKey * @return {?} */ function (objectArray, propKey) { if (objectArray === null || typeof objectArray === 'undefined') { throw new Error("objectArray is null or undefined"); } if (!Array.isArray(objectArray)) { throw new Error("objectArray is not array"); } if (propKey === null || typeof propKey !== 'string') { throw new Error("propKey must be a string: " + (typeof propKey)); } if (objectArray.length <= 0) { return false; } try { for (var objectArray_2 = tslib_1.__values(objectArray), objectArray_2_1 = objectArray_2.next(); !objectArray_2_1.done; objectArray_2_1 = objectArray_2.next()) { var obj = objectArray_2_1.value; if (obj === null || typeof obj === 'undefined') { return false; } if (obj[/** @type {?} */ (propKey)] === undefined) { return false; } } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (objectArray_2_1 && !objectArray_2_1.done && (_a = objectArray_2.return)) _a.call(objectArray_2); } finally { if (e_2) throw e_2.error; } } return true; var e_2, _a; }; /** * @param {?} objectArray * @param {?} propKey * @param {?} typeOf * @return {?} */ ArrayUtils.isAllMemberHasPropertyTypeOf = /** * @param {?} objectArray * @param {?} propKey * @param {?} typeOf * @return {?} */ function (objectArray, propKey, typeOf) { if (objectArray === null || typeof objectArray === 'undefined') { throw new Error("objectArray is null or undefined"); } if (!Array.isArray(objectArray)) { throw new Error("objectArray is not array"); } if (propKey === null || typeof propKey !== 'string') { throw new Error("propKey must be a string: " + (typeof propKey)); } if (objectArray.length <= 0) { return false; } try { for (var objectArray_3 = tslib_1.__values(objectArray), objectArray_3_1 = objectArray_3.next(); !objectArray_3_1.done; objectArray_3_1 = objectArray_3.next()) { var obj = objectArray_3_1.value; if (obj === null || typeof obj === 'undefined') { return false; } if (obj[/** @type {?} */ (propKey)] === undefined) { return false; } if (typeof obj[/** @type {?} */ (propKey)] !== typeOf) { return false; } } } catch (e_3_1) { e_3 = { error: e_3_1 }; } finally { try { if (objectArray_3_1 && !objectArray_3_1.done && (_a = objectArray_3.return)) _a.call(objectArray_3); } finally { if (e_3) throw e_3.error; } } return true; var e_3, _a; }; return ArrayUtils; }()); export { ArrayUtils }; ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJyYXlVdGlscy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2NvbS5waGxveHVpLyIsInNvdXJjZXMiOlsibGliL3NoYXJlL3V0aWxzL0FycmF5VXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxJQUFBOzs7Ozs7Ozs7SUFFa0IsZUFBSTs7Ozs7O2NBQUMsU0FBZ0IsRUFBRSxTQUFpQixFQUFFLE9BQWU7UUFDbkUsRUFBRSxDQUFDLENBQUMsU0FBUyxLQUFLLElBQUksSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sQ0FBQztTQUNWO1FBRUQsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksSUFBSSxPQUFPLE9BQU8sS0FBSyxXQUFXLElBQUksT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxNQUFNLENBQUM7U0FDVjtRQUVELEVBQUUsQ0FBQyxDQUFDLFNBQVMsS0FBSyxJQUFJLElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUUsTUFBTSxDQUFDO1NBQ1Y7UUFFRCxFQUFFLENBQUMsQ0FBQyxTQUFTLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUM7U0FDVjtRQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM3RCxxQkFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBRWhDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN0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QzNDLE1BQU0sQ0FBQyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjs7Ozs7Ozs7O1FBRUQsTUFBTSxDQUFDLElBQUksQ0FBQzs7O3FCQXZIbEI7SUEwSEMsQ0FBQTtBQTFIRCxzQkEwSEM7QUFBQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFycmF5VXRpbHMge1xuXG4gICAgcHVibGljIHN0YXRpYyBtb3ZlKGRhdGFBcnJheTogYW55W10sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKGRhdGFBcnJheSA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YUFycmF5ID09PSAndW5kZWZpbmVkJyB8fCBkYXRhQXJyYXkubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0b0luZGV4ID09PSBudWxsIHx8IHR5cGVvZiB0b0luZGV4ID09PSAndW5kZWZpbmVkJyB8fCB0b0luZGV4IDw9IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZnJvbUluZGV4ID09PSBudWxsIHx8IHR5cGVvZiBmcm9tSW5kZXggPT09ICd1bmRlZmluZWQnIHx8IGZyb21JbmRleCA8PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyb21JbmRleCA9PT0gdG9JbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvSW5kZXggPCBkYXRhQXJyYXkubGVuZ3RoICYmIGZyb21JbmRleCA8IGRhdGFBcnJheS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGxldCBkYXRhID0gZGF0YUFycmF5W2Zyb21JbmRleF07XG5cbiAgICAgICAgICAgIGRhdGFBcnJheS5zcGxpY2UoZnJvbUluZGV4LCAxKTtcbiAgICAgICAgICAgIGRhdGFBcnJheS5zcGxpY2UodG9JbmRleCwgMCwgZGF0YSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGluc2VydChkYXRhQXJyYXk6IGFueVtdLCBpdGVtOiBhbnksIHRvSW5kZXg6IG51bWJlcikge1xuICAgICAgICBpZiAoZGF0YUFycmF5ID09PSBudWxsIHx8IHR5cGVvZiBkYXRhQXJyYXkgPT09ICd1bmRlZmluZWQnIHx8IGRhdGFBcnJheS5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvSW5kZXggPT09IG51bGwgfHwgdHlwZW9mIHRvSW5kZXggPT09ICd1bmRlZmluZWQnIHx8IHRvSW5kZXggPD0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFBcnJheS5zcGxpY2UodG9JbmRleCwgMCwgaXRlbSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0FsbE1lbWJlclR5cGVPZihvYmplY3RBcnJheTogYW55W10sIHR5cGVPZjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICBpZihvYmplY3RBcnJheSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqZWN0QXJyYXkgPT09ICd1bmRlZmluZWQnKXtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwib2JqZWN0QXJyYXkgaXMgbnVsbCBvciB1bmRlZmluZWRcIik7XG4gICAgICB9XG5cbiAgICAgIGlmKCFBcnJheS5pc0FycmF5KG9iamVjdEFycmF5KSl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9iamVjdEFycmF5IGlzIG5vdCBhcnJheVwiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9iamVjdEFycmF5Lmxlbmd0aCA8PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZm9yKGxldCBvYmogb2Ygb2JqZWN0QXJyYXkpe1xuICAgICAgICBpZiAodHlwZW9mIG9iaiAhPT0gdHlwZU9mKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgaXNBbGxNZW1iZXJIYXNQcm9wZXJ0eShvYmplY3RBcnJheTogYW55W10sIHByb3BLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgaWYob2JqZWN0QXJyYXkgPT09IG51bGwgfHwgdHlwZW9mIG9iamVjdEFycmF5ID09PSAndW5kZWZpbmVkJyl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9iamVjdEFycmF5IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuICAgICAgfVxuXG4gICAgICBpZighQXJyYXkuaXNBcnJheShvYmplY3RBcnJheSkpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJvYmplY3RBcnJheSBpcyBub3QgYXJyYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGlmKHByb3BLZXkgPT09IG51bGwgfHwgdHlwZW9mIHByb3BLZXkgIT09ICdzdHJpbmcnKXtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicHJvcEtleSBtdXN0IGJlIGEgc3RyaW5nOiBcIiArICh0eXBlb2YgcHJvcEtleSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqZWN0QXJyYXkubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IobGV0IG9iaiBvZiBvYmplY3RBcnJheSl7XG4gICAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9ials8c3RyaW5nPnByb3BLZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc0FsbE1lbWJlckhhc1Byb3BlcnR5VHlwZU9mKG9iamVjdEFycmF5OiBhbnlbXSwgcHJvcEtleTogc3RyaW5nLCB0eXBlT2Y6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgaWYob2JqZWN0QXJyYXkgPT09IG51bGwgfHwgdHlwZW9mIG9iamVjdEFycmF5ID09PSAndW5kZWZpbmVkJyl7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm9iamVjdEFycmF5IGlzIG51bGwgb3IgdW5kZWZpbmVkXCIpO1xuICAgICAgfVxuXG4gICAgICBpZighQXJyYXkuaXNBcnJheShvYmplY3RBcnJheSkpe1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJvYmplY3RBcnJheSBpcyBub3QgYXJyYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGlmKHByb3BLZXkgPT09IG51bGwgfHwgdHlwZW9mIHByb3BLZXkgIT09ICdzdHJpbmcnKXtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwicHJvcEtleSBtdXN0IGJlIGEgc3RyaW5nOiBcIiArICh0eXBlb2YgcHJvcEtleSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob2JqZWN0QXJyYXkubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IobGV0IG9iaiBvZiBvYmplY3RBcnJheSl7XG4gICAgICAgIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9ials8c3RyaW5nPnByb3BLZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvYmpbPHN0cmluZz5wcm9wS2V5XSAhPT0gdHlwZU9mKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxufTtcbiJdfQ==