UNPKG

ng-repeat-fast

Version:

Faster ng-repeat realization that caches DOM nodes.

3 lines (2 loc) 3.84 kB
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var n;n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,n.ngRepeatFast=e()}}(function(){return function e(n,t,r){function i(a,f){if(!t[a]){if(!n[a]){var u="function"==typeof require&&require;if(!f&&u)return u(a,!0);if(o)return o(a,!0);var s=new Error("Cannot find module '"+a+"'");throw s.code="MODULE_NOT_FOUND",s}var c=t[a]={exports:{}};n[a][0].call(c.exports,function(e){var t=n[a][1][e];return i(t?t:e)},c,c.exports,e,n,t,r)}return t[a].exports}for(var o="function"==typeof require&&require,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(e,n,t){"use strict";function r(){return l++}function i(e,n){return void 0!==e?e:n}function o(e,n){for(var t={},r=0;r<e.length;++r){var i=e[r];t[i[n]]=r}return t}function a(e,n,t){function r(e,n,t,r){a.push({item:e,state:n,oldIndex:r,newIndex:t})}for(var a=[],l=0,d=0,p=o(e,t),g=o(n,t);l<e.length||d<n.length;){var v=e[l],h=n[d];if(l>=e.length)r(h,c,-1,d),++d;else if(d>=n.length)r(v,u,l,-1),++l;else if(v!==h){var m=i(g[v[t]],-1),b=i(p[h[t]],-1),x=-1===m,E=-1===b;x&&(r(v,u,l,-1),++l),x||E||(r(v,s,l,b),++l,++d),E&&(r(h,c,-1,d),++d)}else r(h,f,l,d),++l,++d}return a}var f=0,u=1,s=2,c=-1,l=0;a.NOT_MODIFIED=f,a.CREATED=u,a.MOVED=s,a.DELETED=c,a.getUniqueId=r,a.buildHashToIndexMap=o,n.exports=a},{}],2:[function(e,n,t){!function(t){if("function"==typeof e){var r=e("f-xyz-diff");t(n.exports,r)}else t(window,window.diff)}(function(e,n){"use strict";function t(e,n){return{scope:!0,restrict:"A",priority:1e3,terminal:!0,link:function(t,i,o){r(t,i,o,e,n)}}}function r(e,t,r,i,o){function a(){return i(x)(e)}function f(e,t){if(e!==t){var r=n(e,t,E);u(r)}}function u(e){var t=$;e.forEach(function(e,r){var i,o=e.item,a=w[o[E]];switch(e.state){case n.CREATED:if(a)i=g(a),i!=r&&s(a,t),d(a);else{a=c(o),s(a,t);var f=n.getUniqueId();o[E]=f,w[f]=a}break;case n.MOVED:case n.NOT_MODIFIED:i=g(a),i!=r&&s(a,t);break;case n.DELETED:p(a)}t=a})}function s(e,n){n.nextSibling?D.insertBefore(e,n.nextSibling):D.appendChild(e)}function c(n){var t=e.$new();t[b]=n;var r=R.cloneNode(!0);return l(t,r),o(r)(t),r}function l(e,n){return Object.defineProperties(e,{$index:{enumerable:!0,get:function(){return g(n)}},$first:{enumerable:!0,get:function(){return 0===g(n)}},$last:{enumerable:!0,get:function(){var e=a().length;return g(n)===e-1}},$middle:{enumerable:!0,get:function(){return!this.$first&&!this.$last}},$even:{enumerable:!0,get:function(){return this.$index%2===0}},$odd:{enumerable:!0,get:function(){return this.$index%2===1}}}),e}function d(e){e.className=e.className.slice(0,-8)}function p(e){e.className+=" ng-hide"}function g(e,n){var t=D.childNodes,r=[].indexOf.call(t,e);return n||(r=r-F-1),r}var v="$$hashKey";if("ngInclude"in r)throw Error("ngRepeatFast: ngInclude on repeating element is not supported. Please create nested element with ng-include.");var h=/^\s*(\w+)\sin\s(.+?)(\strack by\s(.+?))?$/,m=r.ngRepeatFast.match(h);if(!m)throw Error("ngRepeatFast: expected ngRepeatFast in form of `{item} in {array} [| filter, etc]` [track by '{field}'] but got `"+r.ngRepeatFast+"`");var b=m[1],x=m[2],E=m[4]||v,y=a();if(!Array.isArray(y))throw Error("ngRepeatFast: expected model `"+r.ngRepeatFast+"` to be an array but got: "+y);var w={},$=t[0],D=$.parentNode,F=g($,!0),R=$.cloneNode(!0);R.removeAttribute("ng-repeat-fast");var I=$;y.forEach(function(e){var t=c(e);s(t,I),I=t,E===v&&(e[E]=n.getUniqueId()),w[e[E]]=t}),p($);var N;/^::/.test(x)||(N=e.$watchCollection(a,f)),e.$on("$destroy",function(){N()})}e.ngRepeatFast=angular.module("ngRepeatFast",[]).directive("ngRepeatFast",["$parse","$compile",t])})},{"f-xyz-diff":1}]},{},[2])(2)}); //# sourceMappingURL=ng-repeat-fast-0.2.21.min.js.map