/
object-observe-lite.min.js
2 lines (2 loc) · 4.63 KB
/
object-observe-lite.min.js
1
2
Object.observe||function(e,t,n){"use strict";var r,o,i=["add","update","delete","reconfigure","setPrototype","preventExtensions"],c=t.isArray||function(e){return function(t){return"[object Array]"===e.call(t)}}(e.prototype.toString),a=t.prototype.indexOf?t.indexOf||function(e,n,r){return t.prototype.indexOf.call(e,n,r)}:function(e,t,n){for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1},f="undefined"!=typeof n.Map&&Map.prototype.forEach?function(){return new Map}:function(){var e=[],t=[];return{size:0,has:function(t){return a(e,t)>-1},get:function(n){return t[a(e,n)]},set:function(n,r){var o=a(e,n);-1===o?(e.push(n),t.push(r),this.size++):t[o]=r},"delete":function(n){var r=a(e,n);r>-1&&(e.splice(r,1),t.splice(r,1),this.size--)},forEach:function(n){for(var r=0;r<e.length;r++)n.call(arguments[1],t[r],e[r],this)}}},s=e.getOwnPropertyNames?function(){var t=e.getOwnPropertyNames;try{arguments.callee}catch(n){var r=(t(a).join(" ")+" ").replace(/prototype |length |name /g,"").slice(0,-1).split(" ");r.length&&(t=function(t){var n=e.getOwnPropertyNames(t);if("function"==typeof t)for(var o,i=0;i<r.length;)(o=a(n,r[i++]))>-1&&n.splice(o,1);return n})}return t}():function(t){var n,r,o=[];if("hasOwnProperty"in t)for(n in t)t.hasOwnProperty(n)&&o.push(n);else{r=e.hasOwnProperty;for(n in t)r.call(t,n)&&o.push(n)}return c(t)&&o.push("length"),o},u=n.requestAnimationFrame||n.webkitRequestAnimationFrame||function(){var e=+new Date,t=e;return function(n){return setTimeout(function(){n((t=+new Date)-e)},17)}}(),p=function(e,t,n){var o=r.get(e);o?b(e,o,t,n):(o=l(e),b(e,o,t,n),1===r.size&&u(d))},l=function(e,t){for(var n=s(e),o=[],i=0,t={handlers:f(),properties:n,values:o,notifier:y(e,t)};i<n.length;)o[i]=e[n[i++]];return r.set(e,t),t},h=function(e,t,n){if(e.handlers.size){var r,o,i,c,f,u,p,l=e.values,h=0;for(r=e.properties.slice(),o=r.length,i=s(t);h<i.length;)f=i[h++],c=a(r,f),u=t[f],-1===c?(g(t,e,{name:f,type:"add",object:t},n),e.properties.push(f),l.push(u)):(p=l[c],r[c]=null,o--,(p===u?0===p&&1/p!==1/u:p===p||u===u)&&(g(t,e,{name:f,type:"update",object:t,oldValue:p},n),e.values[c]=u));for(h=r.length;o&&h--;)null!==r[h]&&(g(t,e,{name:r[h],type:"delete",object:t,oldValue:l[h]},n),e.properties.splice(h,1),e.values.splice(h,1),o--)}},d=function(){r.size&&(r.forEach(h),o.forEach(v),u(d))},v=function(e,t){e.changeRecords.length&&(t(e.changeRecords),e.changeRecords=[])},y=function(e,t){return arguments.length<2&&(t=r.get(e)),t&&t.notifier||{notify:function(t){t.type;var n=r.get(e);if(n){var o,i={object:e};for(o in t)"object"!==o&&(i[o]=t[o]);g(e,n,i)}},performChange:function(t,n){if("string"!=typeof t)throw new TypeError("Invalid non-string changeType");if("function"!=typeof n)throw new TypeError("Cannot perform non-function");var o,i,c=r.get(e),a=n.call(arguments[2]);if(c&&h(c,e,t),c&&a&&"object"==typeof a){i={object:e,type:t};for(o in a)"object"!==o&&"type"!==o&&(i[o]=a[o]);g(e,c,i)}}}},b=function(e,t,n,r){var i=o.get(n);i||o.set(n,i={observed:f(),changeRecords:[]}),i.observed.set(e,{acceptList:r.slice(),data:t}),t.handlers.set(n,i)},g=function(e,t,n,r){t.handlers.forEach(function(t){var o=t.observed.get(e).acceptList;("string"!=typeof r||-1===a(o,r))&&a(o,n.type)>-1&&t.changeRecords.push(n)})};r=f(),o=f(),e.observe=function(t,n,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.observe cannot observe non-object");if("function"!=typeof n)throw new TypeError("Object.observe cannot deliver to non-function");if(e.isFrozen&&e.isFrozen(n))throw new TypeError("Object.observe cannot deliver to a frozen function object");if(arguments.length>2){if(!r||"object"!=typeof r)throw new TypeError("Object.observe cannot use non-object accept list")}else r=i;return p(t,n,r),t},e.unobserve=function(e,t){if(null===e||"object"!=typeof e&&"function"!=typeof e)throw new TypeError("Object.unobserve cannot unobserve non-object");if("function"!=typeof t)throw new TypeError("Object.unobserve cannot deliver to non-function");var n,i=o.get(t);return i&&(n=i.observed.get(e))&&(i.observed.forEach(function(e,t){h(e.data,t)}),u(function(){v(i,t)}),1===i.observed.size&&i.observed.has(e)?o["delete"](t):i.observed["delete"](e),1===n.data.handlers.size?r["delete"](e):n.data.handlers["delete"](t)),e},e.getNotifier=function(t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Object.getNotifier cannot getNotifier non-object");return e.isFrozen&&e.isFrozen(t)?null:y(t)},e.deliverChangeRecords=function(e){if("function"!=typeof e)throw new TypeError("Object.deliverChangeRecords cannot deliver to non-function");var t=o.get(e);t&&(t.observed.forEach(function(e,t){h(e.data,t)}),v(t,e))}}(Object,Array,this);
//# sourceMappingURL=object-observe-lite.min.map