Index: third_party/polymer/v0_8/components-chromium/polymer/src/lib/array-observe-extracted.js |
diff --git a/third_party/polymer/v0_8/components-chromium/polymer/src/lib/array-observe-extracted.js b/third_party/polymer/v0_8/components-chromium/polymer/src/lib/array-observe-extracted.js |
deleted file mode 100644 |
index e89ce32024c6ed130772ff778ad7fbded337b26c..0000000000000000000000000000000000000000 |
--- a/third_party/polymer/v0_8/components-chromium/polymer/src/lib/array-observe-extracted.js |
+++ /dev/null |
@@ -1,106 +0,0 @@ |
- |
- |
-(function() { |
- |
- var callbacks = new WeakMap(); |
- |
- function observe(array, cb) { |
- if (Array.observe) { |
- var ncb = function(changes) { |
- changes = changes.filter(function(o) { return o.type == 'splice'; }); |
- if (changes.length) { |
- cb(changes); |
- } |
- }; |
- callbacks.set(cb, ncb); |
- Array.observe(array, ncb); |
- } else { |
- if (!array.__polymerObservable) { |
- makeObservable(array); |
- } |
- callbacks.get(array).push(cb); |
- } |
- } |
- |
- function unobserve(array, cb) { |
- if (Array.observe) { |
- var ncb = callbacks.get(cb); |
- callbacks.delete(cb); |
- Array.unobserve(array, ncb); |
- } else { |
- var cbs = callbacks.get(array); |
- var idx = cbs.indexOf(cb); |
- if (idx >= 0) { |
- cbs.splice(idx, 1); |
- } |
- } |
- } |
- |
- function makeObservable(array) { |
- var splices = []; |
- var debounce; |
- var orig = { |
- push: array.push, |
- pop: array.pop, |
- splice: array.splice, |
- shift: array.shift, |
- unshift: array.unshift, |
- sort: array.sort |
- }; |
- var addSplice = function(index, added, removed) { |
- splices.push({ |
- index: index, |
- addedCount: added, |
- removed: removed, |
- object: array, |
- type: 'splice' |
- }); |
- }; |
- callbacks.set(array, []); |
- array.push = function() { |
- debounce = Polymer.Debounce(debounce, fin); |
- addSplice(array.length, 1, []); |
- return orig.push.apply(this, arguments); |
- }; |
- array.pop = function() { |
- debounce = Polymer.Debounce(debounce, fin); |
- addSplice(array.length - 1, 0, array.slice(-1)); |
- return orig.pop.apply(this, arguments); |
- }; |
- array.splice = function(start, deleteCount) { |
- debounce = Polymer.Debounce(debounce, fin); |
- addSplice(start, arguments.length - 2, array.slice(start, start + deleteCount)); |
- return orig.splice.apply(this, arguments); |
- }; |
- array.shift = function() { |
- debounce = Polymer.Debounce(debounce, fin); |
- addSplice(0, 0, [array[0]]); |
- return orig.shift.apply(this, arguments); |
- }; |
- array.unshift = function() { |
- debounce = Polymer.Debounce(debounce, fin); |
- addSplice(0, 1, []); |
- return orig.unshift.apply(this, arguments); |
- }; |
- array.sort = function() { |
- debounce = Polymer.Debounce(debounce, fin); |
- console.warn('[ArrayObserve]: sort not observable'); |
- return orig.sort.apply(this, arguments); |
- }; |
- var fin = function() { |
- var cbs = callbacks.get(array); |
- for (var i=0; i<cbs.length; i++) { |
- cbs[i](splices); |
- } |
- splices = []; |
- }; |
- array.__polymerObservable = true; |
- } |
- |
- Polymer.ArrayObserve = { |
- observe: observe, |
- unobserve: unobserve |
- }; |
- |
-})(); |
- |