Skip to content

Commit d308e55

Browse files
committed
fix(collection): new Map(iterable) is not supported (Safari)
1 parent 10bc7e9 commit d308e55

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

modules/angular2/src/facade/collection.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,23 @@ var createMapFromPairs: {(pairs: List<any>): Map<any, any>} = (function() {
2525
return map;
2626
}
2727
})();
28+
var createMapFromMap: {(m: Map<any, any>): Map<any, any>} = (function() {
29+
try {
30+
if (new Map(new Map())) {
31+
return function createMapFromMap(m: Map<any, any>): Map<any, any> { return new Map(m); };
32+
}
33+
} catch (e) {
34+
}
35+
return function createMapAndPopulateFromMap(m: Map<any, any>): Map<any, any> {
36+
var map = new Map();
37+
m.forEach((v, k) => { map.set(k, v); });
38+
return map;
39+
}
40+
})();
2841

2942
export class MapWrapper {
3043
static create(): Map<any, any> { return new Map(); }
31-
static clone<K, V>(m: Map<K, V>): Map<K, V> { return new Map(m); }
44+
static clone<K, V>(m: Map<K, V>): Map<K, V> { return createMapFromMap(m); }
3245
static createFromStringMap(stringMap): Map<string, any> {
3346
var result = MapWrapper.create();
3447
for (var prop in stringMap) {

0 commit comments

Comments
 (0)