/** * @license * Copyright Google Inc. All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { getSymbolIterator, isJsObject } from './lang'; /** * Wraps Javascript Objects */ export var StringMapWrapper = (function () { function StringMapWrapper() { } /** * @param {?} m1 * @param {?} m2 * @return {?} */ StringMapWrapper.merge = function (m1, m2) { var /** @type {?} */ m = {}; for (var _i = 0, _a = Object.keys(m1); _i < _a.length; _i++) { var k = _a[_i]; m[k] = m1[k]; } for (var _b = 0, _c = Object.keys(m2); _b < _c.length; _b++) { var k = _c[_b]; m[k] = m2[k]; } return m; }; /** * @param {?} m1 * @param {?} m2 * @return {?} */ StringMapWrapper.equals = function (m1, m2) { var /** @type {?} */ k1 = Object.keys(m1); var /** @type {?} */ k2 = Object.keys(m2); if (k1.length != k2.length) { return false; } for (var /** @type {?} */ i = 0; i < k1.length; i++) { var /** @type {?} */ key = k1[i]; if (m1[key] !== m2[key]) { return false; } } return true; }; return StringMapWrapper; }()); export var ListWrapper = (function () { function ListWrapper() { } /** * @param {?} arr * @param {?} condition * @return {?} */ ListWrapper.findLast = function (arr, condition) { for (var /** @type {?} */ i = arr.length - 1; i >= 0; i--) { if (condition(arr[i])) { return arr[i]; } } return null; }; /** * @param {?} list * @param {?} items * @return {?} */ ListWrapper.removeAll = function (list, items) { for (var /** @type {?} */ i = 0; i < items.length; ++i) { var /** @type {?} */ index = list.indexOf(items[i]); if (index > -1) { list.splice(index, 1); } } }; /** * @param {?} list * @param {?} el * @return {?} */ ListWrapper.remove = function (list, el) { var /** @type {?} */ index = list.indexOf(el); if (index > -1) { list.splice(index, 1); return true; } return false; }; /** * @param {?} a * @param {?} b * @return {?} */ ListWrapper.equals = function (a, b) { if (a.length != b.length) return false; for (var /** @type {?} */ i = 0; i < a.length; ++i) { if (a[i] !== b[i]) return false; } return true; }; /** * @param {?} list * @return {?} */ ListWrapper.flatten = function (list) { return list.reduce(function (flat, item) { var /** @type {?} */ flatItem = Array.isArray(item) ? ListWrapper.flatten(item) : item; return ((flat)).concat(flatItem); }, []); }; return ListWrapper; }()); /** * @param {?} obj * @return {?} */ export function isListLikeIterable(obj) { if (!isJsObject(obj)) return false; return Array.isArray(obj) || (!(obj instanceof Map) && getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop } /** * @param {?} a * @param {?} b * @param {?} comparator * @return {?} */ export function areIterablesEqual(a, b, comparator) { var /** @type {?} */ iterator1 = a[getSymbolIterator()](); var /** @type {?} */ iterator2 = b[getSymbolIterator()](); while (true) { var /** @type {?} */ item1 = iterator1.next(); var /** @type {?} */ item2 = iterator2.next(); if (item1.done && item2.done) return true; if (item1.done || item2.done) return false; if (!comparator(item1.value, item2.value)) return false; } } /** * @param {?} obj * @param {?} fn * @return {?} */ export function iterateListLike(obj, fn) { if (Array.isArray(obj)) { for (var /** @type {?} */ i = 0; i < obj.length; i++) { fn(obj[i]); } } else { var /** @type {?} */ iterator = obj[getSymbolIterator()](); var /** @type {?} */ item = void 0; while (!((item = iterator.next()).done)) { fn(item.value); } } } //# sourceMappingURL=collection.js.map