UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

1 lines 6.46 kB
{"version":3,"sources":["coalesce.js"],"names":[],"mappings":"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","file":"angular2/src/change_detection/coalesce.js","sourcesContent":["import {isPresent} from 'angular2/src/facade/lang';\nimport {List, ListWrapper, Map, MapWrapper} from 'angular2/src/facade/collection';\nimport {RECORD_TYPE_SELF, ProtoRecord} from './proto_record';\n\n/**\n * Removes \"duplicate\" records. It assuming that record evaluation does not\n * have side-effects.\n *\n * Records that are not last in bindings are removed and all the indices\n * of the records that depend on them are updated.\n *\n * Records that are last in bindings CANNOT be removed, and instead are\n * replaced with very cheap SELF records.\n */\nexport function coalesce(records:List<ProtoRecord>):List<ProtoRecord> {\n var res = ListWrapper.create();\n var indexMap = MapWrapper.create();\n\n for (var i = 0; i < records.length; ++i) {\n var r = records[i];\n var record = _replaceIndices(r, res.length + 1, indexMap);\n var matchingRecord = _findMatching(record, res);\n\n if (isPresent(matchingRecord) && record.lastInBinding) {\n ListWrapper.push(res, _selfRecord(record, matchingRecord.selfIndex, res.length + 1));\n MapWrapper.set(indexMap, r.selfIndex, matchingRecord.selfIndex);\n\n } else if (isPresent(matchingRecord) && !record.lastInBinding) {\n MapWrapper.set(indexMap, r.selfIndex, matchingRecord.selfIndex);\n\n } else {\n ListWrapper.push(res, record);\n MapWrapper.set(indexMap, r.selfIndex, record.selfIndex);\n }\n }\n\n return res;\n}\n\nfunction _selfRecord(r:ProtoRecord, contextIndex:number, selfIndex:number):ProtoRecord {\n return new ProtoRecord(\n RECORD_TYPE_SELF,\n \"self\",\n null,\n [],\n r.fixedArgs,\n contextIndex,\n selfIndex,\n r.bindingRecord,\n r.expressionAsString,\n r.lastInBinding,\n r.lastInDirective\n );\n}\n\nfunction _findMatching(r:ProtoRecord, rs:List<ProtoRecord>){\n return ListWrapper.find(rs, (rr) =>\n rr.mode === r.mode &&\n rr.funcOrValue === r.funcOrValue &&\n rr.contextIndex === r.contextIndex &&\n ListWrapper.equals(rr.args, r.args)\n );\n}\n\nfunction _replaceIndices(r:ProtoRecord, selfIndex:number, indexMap:Map) {\n var args = ListWrapper.map(r.args, (a) => _map(indexMap, a));\n var contextIndex = _map(indexMap, r.contextIndex);\n return new ProtoRecord(\n r.mode,\n r.name,\n r.funcOrValue,\n args,\n r.fixedArgs,\n contextIndex,\n selfIndex,\n r.bindingRecord,\n r.expressionAsString,\n r.lastInBinding,\n r.lastInDirective\n );\n}\n\nfunction _map(indexMap:Map, value:number) {\n var r = MapWrapper.get(indexMap, value)\n return isPresent(r) ? r : value;\n}"]}