PageRenderTime 63ms CodeModel.GetById 27ms RepoModel.GetById 1ms app.codeStats 0ms

/tutorial/node_modules/@angular/forms/src/facade/collection.js

https://gitlab.com/adriancarayol/django-angular2
JavaScript | 369 lines | 347 code | 0 blank | 22 comment | 60 complexity | 53f367e08e13ade356acd8dc7c68e955 MD5 | raw file
  1. /**
  2. * @license
  3. * Copyright Google Inc. All Rights Reserved.
  4. *
  5. * Use of this source code is governed by an MIT-style license that can be
  6. * found in the LICENSE file at https://angular.io/license
  7. */
  8. "use strict";
  9. var lang_1 = require('./lang');
  10. exports.Map = lang_1.global.Map;
  11. exports.Set = lang_1.global.Set;
  12. // Safari and Internet Explorer do not support the iterable parameter to the
  13. // Map constructor. We work around that by manually adding the items.
  14. var createMapFromPairs = (function () {
  15. try {
  16. if (new exports.Map([[1, 2]]).size === 1) {
  17. return function createMapFromPairs(pairs) { return new exports.Map(pairs); };
  18. }
  19. }
  20. catch (e) {
  21. }
  22. return function createMapAndPopulateFromPairs(pairs) {
  23. var map = new exports.Map();
  24. for (var i = 0; i < pairs.length; i++) {
  25. var pair = pairs[i];
  26. map.set(pair[0], pair[1]);
  27. }
  28. return map;
  29. };
  30. })();
  31. var createMapFromMap = (function () {
  32. try {
  33. if (new exports.Map(new exports.Map())) {
  34. return function createMapFromMap(m) { return new exports.Map(m); };
  35. }
  36. }
  37. catch (e) {
  38. }
  39. return function createMapAndPopulateFromMap(m) {
  40. var map = new exports.Map();
  41. m.forEach(function (v, k) { map.set(k, v); });
  42. return map;
  43. };
  44. })();
  45. var _clearValues = (function () {
  46. if ((new exports.Map()).keys().next) {
  47. return function _clearValues(m) {
  48. var keyIterator = m.keys();
  49. var k;
  50. while (!((k = keyIterator.next()).done)) {
  51. m.set(k.value, null);
  52. }
  53. };
  54. }
  55. else {
  56. return function _clearValuesWithForeEach(m) {
  57. m.forEach(function (v, k) { m.set(k, null); });
  58. };
  59. }
  60. })();
  61. // Safari doesn't implement MapIterator.next(), which is used is Traceur's polyfill of Array.from
  62. // TODO(mlaval): remove the work around once we have a working polyfill of Array.from
  63. var _arrayFromMap = (function () {
  64. try {
  65. if ((new exports.Map()).values().next) {
  66. return function createArrayFromMap(m, getValues) {
  67. return getValues ? Array.from(m.values()) : Array.from(m.keys());
  68. };
  69. }
  70. }
  71. catch (e) {
  72. }
  73. return function createArrayFromMapWithForeach(m, getValues) {
  74. var res = ListWrapper.createFixedSize(m.size), i = 0;
  75. m.forEach(function (v, k) {
  76. res[i] = getValues ? v : k;
  77. i++;
  78. });
  79. return res;
  80. };
  81. })();
  82. var MapWrapper = (function () {
  83. function MapWrapper() {
  84. }
  85. MapWrapper.clone = function (m) { return createMapFromMap(m); };
  86. MapWrapper.createFromStringMap = function (stringMap) {
  87. var result = new exports.Map();
  88. for (var prop in stringMap) {
  89. result.set(prop, stringMap[prop]);
  90. }
  91. return result;
  92. };
  93. MapWrapper.toStringMap = function (m) {
  94. var r = {};
  95. m.forEach(function (v, k) { return r[k] = v; });
  96. return r;
  97. };
  98. MapWrapper.createFromPairs = function (pairs) { return createMapFromPairs(pairs); };
  99. MapWrapper.clearValues = function (m) { _clearValues(m); };
  100. MapWrapper.iterable = function (m) { return m; };
  101. MapWrapper.keys = function (m) { return _arrayFromMap(m, false); };
  102. MapWrapper.values = function (m) { return _arrayFromMap(m, true); };
  103. return MapWrapper;
  104. }());
  105. exports.MapWrapper = MapWrapper;
  106. /**
  107. * Wraps Javascript Objects
  108. */
  109. var StringMapWrapper = (function () {
  110. function StringMapWrapper() {
  111. }
  112. StringMapWrapper.create = function () {
  113. // Note: We are not using Object.create(null) here due to
  114. // performance!
  115. // http://jsperf.com/ng2-object-create-null
  116. return {};
  117. };
  118. StringMapWrapper.contains = function (map, key) {
  119. return map.hasOwnProperty(key);
  120. };
  121. StringMapWrapper.get = function (map, key) {
  122. return map.hasOwnProperty(key) ? map[key] : undefined;
  123. };
  124. StringMapWrapper.set = function (map, key, value) { map[key] = value; };
  125. StringMapWrapper.keys = function (map) { return Object.keys(map); };
  126. StringMapWrapper.values = function (map) {
  127. return Object.keys(map).map(function (k) { return map[k]; });
  128. };
  129. StringMapWrapper.isEmpty = function (map) {
  130. for (var prop in map) {
  131. return false;
  132. }
  133. return true;
  134. };
  135. StringMapWrapper.delete = function (map, key) { delete map[key]; };
  136. StringMapWrapper.forEach = function (map, callback) {
  137. for (var _i = 0, _a = Object.keys(map); _i < _a.length; _i++) {
  138. var k = _a[_i];
  139. callback(map[k], k);
  140. }
  141. };
  142. StringMapWrapper.merge = function (m1, m2) {
  143. var m = {};
  144. for (var _i = 0, _a = Object.keys(m1); _i < _a.length; _i++) {
  145. var k = _a[_i];
  146. m[k] = m1[k];
  147. }
  148. for (var _b = 0, _c = Object.keys(m2); _b < _c.length; _b++) {
  149. var k = _c[_b];
  150. m[k] = m2[k];
  151. }
  152. return m;
  153. };
  154. StringMapWrapper.equals = function (m1, m2) {
  155. var k1 = Object.keys(m1);
  156. var k2 = Object.keys(m2);
  157. if (k1.length != k2.length) {
  158. return false;
  159. }
  160. var key;
  161. for (var i = 0; i < k1.length; i++) {
  162. key = k1[i];
  163. if (m1[key] !== m2[key]) {
  164. return false;
  165. }
  166. }
  167. return true;
  168. };
  169. return StringMapWrapper;
  170. }());
  171. exports.StringMapWrapper = StringMapWrapper;
  172. var ListWrapper = (function () {
  173. function ListWrapper() {
  174. }
  175. // JS has no way to express a statically fixed size list, but dart does so we
  176. // keep both methods.
  177. ListWrapper.createFixedSize = function (size) { return new Array(size); };
  178. ListWrapper.createGrowableSize = function (size) { return new Array(size); };
  179. ListWrapper.clone = function (array) { return array.slice(0); };
  180. ListWrapper.forEachWithIndex = function (array, fn) {
  181. for (var i = 0; i < array.length; i++) {
  182. fn(array[i], i);
  183. }
  184. };
  185. ListWrapper.first = function (array) {
  186. if (!array)
  187. return null;
  188. return array[0];
  189. };
  190. ListWrapper.last = function (array) {
  191. if (!array || array.length == 0)
  192. return null;
  193. return array[array.length - 1];
  194. };
  195. ListWrapper.indexOf = function (array, value, startIndex) {
  196. if (startIndex === void 0) { startIndex = 0; }
  197. return array.indexOf(value, startIndex);
  198. };
  199. ListWrapper.contains = function (list, el) { return list.indexOf(el) !== -1; };
  200. ListWrapper.reversed = function (array) {
  201. var a = ListWrapper.clone(array);
  202. return a.reverse();
  203. };
  204. ListWrapper.concat = function (a, b) { return a.concat(b); };
  205. ListWrapper.insert = function (list, index, value) { list.splice(index, 0, value); };
  206. ListWrapper.removeAt = function (list, index) {
  207. var res = list[index];
  208. list.splice(index, 1);
  209. return res;
  210. };
  211. ListWrapper.removeAll = function (list, items) {
  212. for (var i = 0; i < items.length; ++i) {
  213. var index = list.indexOf(items[i]);
  214. list.splice(index, 1);
  215. }
  216. };
  217. ListWrapper.remove = function (list, el) {
  218. var index = list.indexOf(el);
  219. if (index > -1) {
  220. list.splice(index, 1);
  221. return true;
  222. }
  223. return false;
  224. };
  225. ListWrapper.clear = function (list) { list.length = 0; };
  226. ListWrapper.isEmpty = function (list) { return list.length == 0; };
  227. ListWrapper.fill = function (list, value, start, end) {
  228. if (start === void 0) { start = 0; }
  229. if (end === void 0) { end = null; }
  230. list.fill(value, start, end === null ? list.length : end);
  231. };
  232. ListWrapper.equals = function (a, b) {
  233. if (a.length != b.length)
  234. return false;
  235. for (var i = 0; i < a.length; ++i) {
  236. if (a[i] !== b[i])
  237. return false;
  238. }
  239. return true;
  240. };
  241. ListWrapper.slice = function (l, from, to) {
  242. if (from === void 0) { from = 0; }
  243. if (to === void 0) { to = null; }
  244. return l.slice(from, to === null ? undefined : to);
  245. };
  246. ListWrapper.splice = function (l, from, length) { return l.splice(from, length); };
  247. ListWrapper.sort = function (l, compareFn) {
  248. if (lang_1.isPresent(compareFn)) {
  249. l.sort(compareFn);
  250. }
  251. else {
  252. l.sort();
  253. }
  254. };
  255. ListWrapper.toString = function (l) { return l.toString(); };
  256. ListWrapper.toJSON = function (l) { return JSON.stringify(l); };
  257. ListWrapper.maximum = function (list, predicate) {
  258. if (list.length == 0) {
  259. return null;
  260. }
  261. var solution = null;
  262. var maxValue = -Infinity;
  263. for (var index = 0; index < list.length; index++) {
  264. var candidate = list[index];
  265. if (lang_1.isBlank(candidate)) {
  266. continue;
  267. }
  268. var candidateValue = predicate(candidate);
  269. if (candidateValue > maxValue) {
  270. solution = candidate;
  271. maxValue = candidateValue;
  272. }
  273. }
  274. return solution;
  275. };
  276. ListWrapper.flatten = function (list) {
  277. var target = [];
  278. _flattenArray(list, target);
  279. return target;
  280. };
  281. ListWrapper.addAll = function (list, source) {
  282. for (var i = 0; i < source.length; i++) {
  283. list.push(source[i]);
  284. }
  285. };
  286. return ListWrapper;
  287. }());
  288. exports.ListWrapper = ListWrapper;
  289. function _flattenArray(source, target) {
  290. if (lang_1.isPresent(source)) {
  291. for (var i = 0; i < source.length; i++) {
  292. var item = source[i];
  293. if (lang_1.isArray(item)) {
  294. _flattenArray(item, target);
  295. }
  296. else {
  297. target.push(item);
  298. }
  299. }
  300. }
  301. return target;
  302. }
  303. function isListLikeIterable(obj) {
  304. if (!lang_1.isJsObject(obj))
  305. return false;
  306. return lang_1.isArray(obj) ||
  307. (!(obj instanceof exports.Map) &&
  308. lang_1.getSymbolIterator() in obj); // JS Iterable have a Symbol.iterator prop
  309. }
  310. exports.isListLikeIterable = isListLikeIterable;
  311. function areIterablesEqual(a, b, comparator) {
  312. var iterator1 = a[lang_1.getSymbolIterator()]();
  313. var iterator2 = b[lang_1.getSymbolIterator()]();
  314. while (true) {
  315. var item1 = iterator1.next();
  316. var item2 = iterator2.next();
  317. if (item1.done && item2.done)
  318. return true;
  319. if (item1.done || item2.done)
  320. return false;
  321. if (!comparator(item1.value, item2.value))
  322. return false;
  323. }
  324. }
  325. exports.areIterablesEqual = areIterablesEqual;
  326. function iterateListLike(obj, fn) {
  327. if (lang_1.isArray(obj)) {
  328. for (var i = 0; i < obj.length; i++) {
  329. fn(obj[i]);
  330. }
  331. }
  332. else {
  333. var iterator = obj[lang_1.getSymbolIterator()]();
  334. var item;
  335. while (!((item = iterator.next()).done)) {
  336. fn(item.value);
  337. }
  338. }
  339. }
  340. exports.iterateListLike = iterateListLike;
  341. // Safari and Internet Explorer do not support the iterable parameter to the
  342. // Set constructor. We work around that by manually adding the items.
  343. var createSetFromList = (function () {
  344. var test = new exports.Set([1, 2, 3]);
  345. if (test.size === 3) {
  346. return function createSetFromList(lst) { return new exports.Set(lst); };
  347. }
  348. else {
  349. return function createSetAndPopulateFromList(lst) {
  350. var res = new exports.Set(lst);
  351. if (res.size !== lst.length) {
  352. for (var i = 0; i < lst.length; i++) {
  353. res.add(lst[i]);
  354. }
  355. }
  356. return res;
  357. };
  358. }
  359. })();
  360. var SetWrapper = (function () {
  361. function SetWrapper() {
  362. }
  363. SetWrapper.createFromList = function (lst) { return createSetFromList(lst); };
  364. SetWrapper.has = function (s, key) { return s.has(key); };
  365. SetWrapper.delete = function (m, k) { m.delete(k); };
  366. return SetWrapper;
  367. }());
  368. exports.SetWrapper = SetWrapper;
  369. //# sourceMappingURL=collection.js.map