diff --git a/dist/knockout-es5.js b/dist/knockout-es5.js index 872e9de..fcbf964 100644 --- a/dist/knockout-es5.js +++ b/dist/knockout-es5.js @@ -83,7 +83,7 @@ } function wrap(obj, props, deep) { - if (!props.length || !canTrack(obj)) { + if (!props.length) { return; } @@ -127,7 +127,11 @@ notifyWhenPresentOrFutureArrayValuesMutate(ko, observable); if (deep) { - origValue.forEach(function (child) { wrap(child, Object.keys(child), true); }); + origValue.forEach(function (child) { + if (canTrack(child)) { + wrap(child, Object.keys(child), true); + } + }); } } else if (deep && canTrack(origValue)) { wrap(origValue, Object.keys(origValue), true); diff --git a/dist/knockout-es5.min.js b/dist/knockout-es5.min.js index 3299cfb..df6aef9 100644 --- a/dist/knockout-es5.min.js +++ b/dist/knockout-es5.min.js @@ -3,7 +3,7 @@ * Copyright (c) Steve Sanderson * MIT license */ -!function(a,b){"use strict";function c(a,b){if(!a||"object"!=typeof a)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var c;return g(b)?(b.deep=b.deep||!1,b.fields=b.fields||Object.getOwnPropertyNames(a),f(a,b.fields,b.deep)):(c=b||Object.getOwnPropertyNames(a),f(a,c)),a}function d(a){return a.name?a.name:(a.toString().trim().match(x)||[])[1]}function e(a){return a&&"object"==typeof a&&"Object"===d(a.constructor)}function f(a,c,d){if(c.length&&e(a)){var g=h(a,!0),i={};c.forEach(function(c){if(!(c in g)&&Object.getOwnPropertyDescriptor(a,c).configurable!==!1){var h=a[c],j=t.isObservable(h),l=Array.isArray(h),m=j?h:l?t.observableArray(h):t.observable(h);j&&"push"in m&&(l=!0,h=m.peek()),i[c]={configurable:!0,enumerable:!0,get:m,set:t.isWriteableObservable(m)?m:b},g[c]=m,l?(k(t,m),d&&h.forEach(function(a){f(a,Object.keys(a),!0)})):d&&e(h)&&f(h,Object.keys(h),!0)}}),Object.defineProperties(a,i)}}function g(a){return!!a&&"object"==typeof a&&a.constructor===Object}function h(a,b){u||(u=w());var c=u.get(a);return!c&&b&&(c={},u.set(a,c)),c}function i(a,b){if(u)if(1===arguments.length)u["delete"](a);else{var c=h(a,!1);c&&b.forEach(function(a){delete c[a]})}}function j(a,b,d){var e=this,f={owner:a,deferEvaluation:!0};if("function"==typeof d)f.read=d;else{if("value"in d)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if("function"!=typeof d.get)throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');f.read=d.get,f.write=d.set}return a[b]=e.computed(f),c.call(e,a,[b]),a}function k(a,b){var c=null;a.computed(function(){c&&(c.dispose(),c=null);var d=b();d instanceof Array&&(c=l(a,b,d))})}function l(a,b,c){var d=m(a,c);return d.subscribe(b)}function m(a,b){v||(v=w());var c=v.get(b);if(!c){c=new a.subscribable,v.set(b,c);var d={};n(b,c,d),o(a,b,c,d)}return c}function n(a,b,c){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(d){var e=a[d];a[d]=function(){var a=e.apply(this,arguments);return c.pause!==!0&&b.notifySubscribers(this),a}})}function o(a,b,c,d){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(e){Object.defineProperty(b,e,{enumerable:!1,value:function(){var f;d.pause=!0;try{f=a.observableArray.fn[e].apply(a.observableArray(b),arguments)}finally{d.pause=!1}return c.notifySubscribers(b),f}})})}function p(a,b){if(!a||"object"!=typeof a)return null;var c=h(a,!1);return c&&c[b]||null}function q(a,b){var c=p(a,b);c&&c.valueHasMutated()}function r(a){a.track=c,a.untrack=i,a.getObservable=p,a.valueHasMutated=q,a.defineProperty=j,a.es5={getAllObservablesForObject:h,notifyWhenPresentOrFutureArrayValuesMutate:k}}function s(){if("object"==typeof exports&&"object"==typeof module){t=require("knockout");var b=require("../lib/weakmap");r(t),w=function(){return new b},module.exports=t}else"function"==typeof define&&define.amd?define(["knockout"],function(b){return t=b,r(b),w=function(){return new a.WeakMap},b}):"ko"in a&&(t=a.ko,r(a.ko),w=function(){return new a.WeakMap})}var t,u,v,w,x=/^function\s*([^\s(]+)/;s()}(this),/*! WeakMap shim +!function(a,b){"use strict";function c(a,b){if(!a||"object"!=typeof a)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var c;return g(b)?(b.deep=b.deep||!1,b.fields=b.fields||Object.getOwnPropertyNames(a),f(a,b.fields,b.deep)):(c=b||Object.getOwnPropertyNames(a),f(a,c)),a}function d(a){return a.name?a.name:(a.toString().trim().match(x)||[])[1]}function e(a){return a&&"object"==typeof a&&"Object"===d(a.constructor)}function f(a,c,d){if(c.length){var g=h(a,!0),i={};c.forEach(function(c){if(!(c in g)&&Object.getOwnPropertyDescriptor(a,c).configurable!==!1){var h=a[c],j=t.isObservable(h),l=Array.isArray(h),m=j?h:l?t.observableArray(h):t.observable(h);j&&"push"in m&&(l=!0,h=m.peek()),i[c]={configurable:!0,enumerable:!0,get:m,set:t.isWriteableObservable(m)?m:b},g[c]=m,l?(k(t,m),d&&h.forEach(function(a){e(a)&&f(a,Object.keys(a),!0)})):d&&e(h)&&f(h,Object.keys(h),!0)}}),Object.defineProperties(a,i)}}function g(a){return!!a&&"object"==typeof a&&a.constructor===Object}function h(a,b){u||(u=w());var c=u.get(a);return!c&&b&&(c={},u.set(a,c)),c}function i(a,b){if(u)if(1===arguments.length)u["delete"](a);else{var c=h(a,!1);c&&b.forEach(function(a){delete c[a]})}}function j(a,b,d){var e=this,f={owner:a,deferEvaluation:!0};if("function"==typeof d)f.read=d;else{if("value"in d)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if("function"!=typeof d.get)throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');f.read=d.get,f.write=d.set}return a[b]=e.computed(f),c.call(e,a,[b]),a}function k(a,b){var c=null;a.computed(function(){c&&(c.dispose(),c=null);var d=b();d instanceof Array&&(c=l(a,b,d))})}function l(a,b,c){var d=m(a,c);return d.subscribe(b)}function m(a,b){v||(v=w());var c=v.get(b);if(!c){c=new a.subscribable,v.set(b,c);var d={};n(b,c,d),o(a,b,c,d)}return c}function n(a,b,c){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(d){var e=a[d];a[d]=function(){var a=e.apply(this,arguments);return c.pause!==!0&&b.notifySubscribers(this),a}})}function o(a,b,c,d){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(e){Object.defineProperty(b,e,{enumerable:!1,value:function(){var f;d.pause=!0;try{f=a.observableArray.fn[e].apply(a.observableArray(b),arguments)}finally{d.pause=!1}return c.notifySubscribers(b),f}})})}function p(a,b){if(!a||"object"!=typeof a)return null;var c=h(a,!1);return c&&c[b]||null}function q(a,b){var c=p(a,b);c&&c.valueHasMutated()}function r(a){a.track=c,a.untrack=i,a.getObservable=p,a.valueHasMutated=q,a.defineProperty=j,a.es5={getAllObservablesForObject:h,notifyWhenPresentOrFutureArrayValuesMutate:k}}function s(){if("object"==typeof exports&&"object"==typeof module){t=require("knockout");var b=require("../lib/weakmap");r(t),w=function(){return new b},module.exports=t}else"function"==typeof define&&define.amd?define(["knockout"],function(b){return t=b,r(b),w=function(){return new a.WeakMap},b}):"ko"in a&&(t=a.ko,r(a.ko),w=function(){return new a.WeakMap})}var t,u,v,w,x=/^function\s*([^\s(]+)/;s()}(this),/*! WeakMap shim * (The MIT License) * * Copyright (c) 2012 Brandon Benvie diff --git a/src/knockout-es5.js b/src/knockout-es5.js index c276fd3..2792a51 100644 --- a/src/knockout-es5.js +++ b/src/knockout-es5.js @@ -83,7 +83,7 @@ } function wrap(obj, props, deep) { - if (!props.length || !canTrack(obj)) { + if (!props.length) { return; } @@ -127,7 +127,11 @@ notifyWhenPresentOrFutureArrayValuesMutate(ko, observable); if (deep) { - origValue.forEach(function (child) { wrap(child, Object.keys(child), true); }); + origValue.forEach(function (child) { + if (canTrack(child)) { + wrap(child, Object.keys(child), true); + } + }); } } else if (deep && canTrack(origValue)) { wrap(origValue, Object.keys(origValue), true);