{"version":3,"sources":["keyvalue_changes.js"],"names":[],"mappings":"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","file":"angular2/src/change_detection/pipes/keyvalue_changes.js","sourcesContent":["import {ListWrapper, MapWrapper, StringMapWrapper} from 'angular2/src/facade/collection';\nimport {stringify, looseIdentical, isJsObject} from 'angular2/src/facade/lang';\n\nimport {NO_CHANGE, Pipe} from './pipe';\n\n/**\n * @exportedAs angular2/pipes\n */\nexport class KeyValueChangesFactory {\n  supports(obj):boolean {\n    return KeyValueChanges.supportsObj(obj);\n  }\n\n  create(cdRef):Pipe {\n    return new KeyValueChanges();\n  }\n}\n\n/**\n * @exportedAs angular2/pipes\n */\nexport class KeyValueChanges extends Pipe {\n  _records:Map;\n\n  _mapHead:KVChangeRecord;\n  _previousMapHead:KVChangeRecord;\n  _changesHead:KVChangeRecord;\n  _changesTail:KVChangeRecord;\n  _additionsHead:KVChangeRecord;\n  _additionsTail:KVChangeRecord;\n  _removalsHead:KVChangeRecord;\n  _removalsTail:KVChangeRecord;\n\n  constructor() {\n    super();\n    this._records = MapWrapper.create();\n    this._mapHead = null;\n    this._previousMapHead = null;\n    this._changesHead = null;\n    this._changesTail = null;\n    this._additionsHead = null;\n    this._additionsTail = null;\n    this._removalsHead = null;\n    this._removalsTail = null;\n  }\n\n  static supportsObj(obj):boolean {\n    return obj instanceof Map || isJsObject(obj);\n  }\n\n  supports(obj):boolean {\n    return KeyValueChanges.supportsObj(obj);\n  }\n\n  transform(map){\n    if (this.check(map)) {\n      return this;\n    } else {\n      return NO_CHANGE;\n    }\n  }\n\n  get isDirty():boolean {\n    return this._additionsHead !== null ||\n           this._changesHead !== null ||\n           this._removalsHead !== null;\n  }\n\n  forEachItem(fn:Function) {\n    var record:KVChangeRecord;\n    for (record = this._mapHead; record !== null; record = record._next) {\n      fn(record);\n    }\n  }\n\n  forEachPreviousItem(fn:Function) {\n    var record:KVChangeRecord;\n    for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n      fn(record);\n    }\n  }\n\n  forEachChangedItem(fn:Function) {\n    var record:KVChangeRecord;\n    for (record = this._changesHead; record !== null; record = record._nextChanged) {\n      fn(record);\n    }\n  }\n\n  forEachAddedItem(fn:Function){\n    var record:KVChangeRecord;\n    for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n      fn(record);\n    }\n  }\n\n  forEachRemovedItem(fn:Function){\n    var record:KVChangeRecord;\n    for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n      fn(record);\n    }\n  }\n\n  check(map):boolean {\n    this._reset();\n    var records = this._records;\n    var oldSeqRecord:KVChangeRecord = this._mapHead;\n    var lastOldSeqRecord:KVChangeRecord = null;\n    var lastNewSeqRecord:KVChangeRecord = null;\n    var seqChanged:boolean = false;\n\n    this._forEach(map, (value, key) => {\n      var newSeqRecord;\n      if (oldSeqRecord !== null && key === oldSeqRecord.key) {\n        newSeqRecord = oldSeqRecord;\n        if (!looseIdentical(value, oldSeqRecord.currentValue)) {\n          oldSeqRecord.previousValue = oldSeqRecord.currentValue;\n          oldSeqRecord.currentValue = value;\n          this._addToChanges(oldSeqRecord);\n        }\n      } else {\n        seqChanged = true;\n        if (oldSeqRecord !== null) {\n          oldSeqRecord._next = null;\n          this._removeFromSeq(lastOldSeqRecord, oldSeqRecord);\n          this._addToRemovals(oldSeqRecord);\n        }\n        if (MapWrapper.contains(records, key)) {\n          newSeqRecord = MapWrapper.get(records, key);\n        } else {\n          newSeqRecord = new KVChangeRecord(key);\n          MapWrapper.set(records, key, newSeqRecord);\n          newSeqRecord.currentValue = value;\n          this._addToAdditions(newSeqRecord);\n        }\n      }\n\n      if (seqChanged) {\n        if (this._isInRemovals(newSeqRecord)) {\n          this._removeFromRemovals(newSeqRecord);\n        }\n        if (lastNewSeqRecord == null) {\n          this._mapHead = newSeqRecord;\n        } else {\n          lastNewSeqRecord._next = newSeqRecord;\n        }\n      }\n      lastOldSeqRecord = oldSeqRecord;\n      lastNewSeqRecord = newSeqRecord;\n      oldSeqRecord = oldSeqRecord === null ? null : oldSeqRecord._next;\n    });\n    this._truncate(lastOldSeqRecord, oldSeqRecord);\n    return this.isDirty;\n  }\n\n  _reset() {\n    if (this.isDirty) {\n      var record:KVChangeRecord;\n      // Record the state of the mapping\n      for (record = this._previousMapHead = this._mapHead;\n           record !== null;\n           record = record._next) {\n        record._nextPrevious = record._next;\n      }\n\n      for (record = this._changesHead; record !== null; record = record._nextChanged) {\n        record.previousValue = record.currentValue;\n      }\n\n      for (record = this._additionsHead; record != null; record = record._nextAdded) {\n        record.previousValue = record.currentValue;\n      }\n\n      // todo(vicb) once assert is supported\n      //assert(() {\n      //  var r = _changesHead;\n      //  while (r != null) {\n      //    var nextRecord = r._nextChanged;\n      //    r._nextChanged = null;\n      //    r = nextRecord;\n      //  }\n      //\n      //  r = _additionsHead;\n      //  while (r != null) {\n      //    var nextRecord = r._nextAdded;\n      //    r._nextAdded = null;\n      //    r = nextRecord;\n      //  }\n      //\n      //  r = _removalsHead;\n      //  while (r != null) {\n      //    var nextRecord = r._nextRemoved;\n      //    r._nextRemoved = null;\n      //    r = nextRecord;\n      //  }\n      //\n      //  return true;\n      //});\n      this._changesHead = this._changesTail = null;\n      this._additionsHead = this._additionsTail = null;\n      this._removalsHead = this._removalsTail = null;\n    }\n  }\n\n  _truncate(lastRecord:KVChangeRecord, record:KVChangeRecord) {\n    while (record !== null) {\n      if (lastRecord === null) {\n        this._mapHead = null;\n      } else {\n        lastRecord._next = null;\n      }\n      var nextRecord = record._next;\n      // todo(vicb) assert\n      //assert((() {\n      //  record._next = null;\n      //  return true;\n      //}));\n      this._addToRemovals(record);\n      lastRecord = record;\n      record = nextRecord;\n    }\n\n    for (var rec:KVChangeRecord = this._removalsHead; rec !== null; rec = rec._nextRemoved) {\n      rec.previousValue = rec.currentValue;\n      rec.currentValue = null;\n      MapWrapper.delete(this._records, rec.key);\n    }\n  }\n\n  _isInRemovals(record:KVChangeRecord) {\n    return record === this._removalsHead ||\n           record._nextRemoved !== null ||\n           record._prevRemoved !== null;\n  }\n\n  _addToRemovals(record:KVChangeRecord) {\n    // todo(vicb) assert\n    //assert(record._next == null);\n    //assert(record._nextAdded == null);\n    //assert(record._nextChanged == null);\n    //assert(record._nextRemoved == null);\n    //assert(record._prevRemoved == null);\n    if (this._removalsHead === null) {\n      this._removalsHead = this._removalsTail = record;\n    } else {\n      this._removalsTail._nextRemoved = record;\n      record._prevRemoved = this._removalsTail;\n      this._removalsTail = record;\n    }\n  }\n\n  _removeFromSeq(prev:KVChangeRecord, record:KVChangeRecord) {\n    var next = record._next;\n    if (prev === null) {\n      this._mapHead = next;\n    } else {\n      prev._next = next;\n    }\n    // todo(vicb) assert\n    //assert((() {\n    //  record._next = null;\n    //  return true;\n    //})());\n  }\n\n  _removeFromRemovals(record:KVChangeRecord) {\n    // todo(vicb) assert\n    //assert(record._next == null);\n    //assert(record._nextAdded == null);\n    //assert(record._nextChanged == null);\n\n    var prev = record._prevRemoved;\n    var next = record._nextRemoved;\n    if (prev === null) {\n      this._removalsHead = next;\n    } else {\n      prev._nextRemoved = next;\n    }\n    if (next === null) {\n      this._removalsTail = prev;\n    } else {\n      next._prevRemoved = prev;\n    }\n    record._prevRemoved = record._nextRemoved = null;\n  }\n\n  _addToAdditions(record:KVChangeRecord) {\n    // todo(vicb): assert\n    //assert(record._next == null);\n    //assert(record._nextAdded == null);\n    //assert(record._nextChanged == null);\n    //assert(record._nextRemoved == null);\n    //assert(record._prevRemoved == null);\n    if (this._additionsHead === null) {\n      this._additionsHead = this._additionsTail = record;\n    } else {\n      this._additionsTail._nextAdded = record;\n      this._additionsTail = record;\n    }\n  }\n\n  _addToChanges(record:KVChangeRecord) {\n    // todo(vicb) assert\n    //assert(record._nextAdded == null);\n    //assert(record._nextChanged == null);\n    //assert(record._nextRemoved == null);\n    //assert(record._prevRemoved == null);\n    if (this._changesHead === null) {\n      this._changesHead = this._changesTail = record;\n    } else {\n      this._changesTail._nextChanged = record;\n      this._changesTail = record;\n    }\n  }\n\n  toString():string {\n    var items = [];\n    var previous = [];\n    var changes = [];\n    var additions = [];\n    var removals = [];\n    var record:KVChangeRecord;\n\n    for (record = this._mapHead; record !== null; record = record._next) {\n      ListWrapper.push(items, stringify(record));\n    }\n    for (record = this._previousMapHead; record !== null; record = record._nextPrevious) {\n      ListWrapper.push(previous, stringify(record));\n    }\n    for (record = this._changesHead; record !== null; record = record._nextChanged) {\n      ListWrapper.push(changes, stringify(record));\n    }\n    for (record = this._additionsHead; record !== null; record = record._nextAdded) {\n      ListWrapper.push(additions, stringify(record));\n    }\n    for (record = this._removalsHead; record !== null; record = record._nextRemoved) {\n      ListWrapper.push(removals, stringify(record));\n    }\n\n    return \"map: \" + items.join(', ') + \"\\n\" +\n           \"previous: \" + previous.join(', ') + \"\\n\" +\n           \"additions: \" + additions.join(', ') + \"\\n\" +\n           \"changes: \" + changes.join(', ') + \"\\n\" +\n           \"removals: \" + removals.join(', ') + \"\\n\";\n  }\n\n  _forEach(obj, fn:Function) {\n    if (obj instanceof Map) {\n      MapWrapper.forEach(obj, fn);\n    } else {\n      StringMapWrapper.forEach(obj, fn);\n    }\n  }\n}\n\n\n\n/**\n * @exportedAs angular2/pipes\n */\nexport class KVChangeRecord {\n  key;\n  previousValue;\n  currentValue;\n\n  _nextPrevious:KVChangeRecord;\n  _next:KVChangeRecord;\n  _nextAdded:KVChangeRecord;\n  _nextRemoved:KVChangeRecord;\n  _prevRemoved:KVChangeRecord;\n  _nextChanged:KVChangeRecord;\n\n  constructor(key) {\n    this.key = key;\n    this.previousValue = null;\n    this.currentValue = null;\n\n    this._nextPrevious = null;\n    this._next = null;\n    this._nextAdded = null;\n    this._nextRemoved = null;\n    this._prevRemoved = null;\n    this._nextChanged = null;\n  }\n\n  toString():string {\n    return looseIdentical(this.previousValue, this.currentValue) ?\n      stringify(this.key) :\n      (stringify(this.key) + '[' + stringify(this.previousValue) + '->' +\n        stringify(this.currentValue) + ']');\n  }\n}\n"]}