UNPKG

ng-diff-match-patch

Version:

A Diff-Match-Patch component for your Angular 2 + applications

2 lines 29.7 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("ng-diff-match-patch",["exports","@angular/core","@angular/common"],e):e(t["ng-diff-match-patch"]={},t.ng.core,t.ng.common)}(this,function(t,e,n){"use strict";var i=function(){function t(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Threshold=.5,this.Match_Distance=1e3,this.Patch_DeleteThreshold=.5,this.Patch_Margin=4,this.Match_MaxBits=32,this.whitespaceRegex_=new RegExp("/s/"),this.linebreakRegex_=new RegExp("/[\r\n]/"),this.blanklineEndRegex_=new RegExp("/\n\r?\n$/"),this.blanklineStartRegex_=new RegExp("/^\r?\n\r?\n/"),this.diff_prettyHtml=function(t){for(var e=[],n=/&/g,i=/</g,r=/>/g,s=/\n/g,a=0;a<t.length;a++){var l=t[a][0],h=t[a][1].replace(n,"&amp;").replace(i,"&lt;").replace(r,"&gt;").replace(s,"&para;<br>");switch(l){case 1:e[a]='<ins style="background:#e6ffe6;">'+h+"</ins>";break;case-1:e[a]='<del style="background:#ffe6e6;">'+h+"</del>";break;case 0:e[a]="<span>"+h+"</span>"}}return e.join("")},this.patch_splitMax=function(t){for(var e=this.Match_MaxBits,n=0;n<t.length;n++)if(!(t[n].length1<=e)){var i=t[n];t.splice(n--,1);for(var r=i.start1,s=i.start2,a="";0!==i.diffs.length;){var l=new d,h=!0;for(l.start1=r-a.length,l.start2=s-a.length,""!==a&&(l.length1=l.length2=a.length,l.diffs.push([0,a]));0!==i.diffs.length&&l.length1<e-this.Patch_Margin;){var f=i.diffs[0][0],o=i.diffs[0][1];1===f?(l.length2+=o.length,s+=o.length,l.diffs.push(i.diffs.shift()),h=!1):-1===f&&1==l.diffs.length&&0==l.diffs[0][0]&&o.length>2*e?(l.length1+=o.length,r+=o.length,h=!1,l.diffs.push([f,o]),i.diffs.shift()):(o=o.substring(0,e-l.length1-this.Patch_Margin),l.length1+=o.length,r+=o.length,0===f?(l.length2+=o.length,s+=o.length):h=!1,l.diffs.push([f,o]),o==i.diffs[0][1]?i.diffs.shift():i.diffs[0][1]=i.diffs[0][1].substring(o.length))}a=(a=this.diff_text2(l.diffs)).substring(a.length-this.Patch_Margin);var c=this.diff_text1(i.diffs).substring(0,this.Patch_Margin);""!==c&&(l.length1+=c.length,l.length2+=c.length,0!==l.diffs.length&&0===l.diffs[l.diffs.length-1][0]?l.diffs[l.diffs.length-1][1]+=c:l.diffs.push([0,c])),h||t.splice(++n,0,l)}}}}return t.prototype.diff_main=function(t,e,n,i){void 0===i&&(i=this.Diff_Timeout<=0?Number.MAX_VALUE:(new Date).getTime()+1e3*this.Diff_Timeout);var r=i;if(null==t||null==e)throw new Error("Null input. (diff_main)");if(t==e)return t?[[0,t]]:[];void 0===n&&(n=!0);var s=n,a=this.diff_commonPrefix(t,e),l=t.substring(0,a);t=t.substring(a),e=e.substring(a),a=this.diff_commonSuffix(t,e);var h=t.substring(t.length-a);t=t.substring(0,t.length-a),e=e.substring(0,e.length-a);var f=this.diff_compute_(t,e,s,r);return l&&f.unshift([0,l]),h&&f.push([0,h]),this.diff_cleanupMerge(f),f},t.prototype.diff_compute_=function(t,e,n,i){var r;if(!t)return[[1,e]];if(!e)return[[-1,t]];var s=t.length>e.length?t:e,a=t.length>e.length?e:t,l=s.indexOf(a);if(-1!=l)return r=[[1,s.substring(0,l)],[0,a],[1,s.substring(l+a.length)]],t.length>e.length&&(r[0][0]=r[2][0]=-1),r;if(1==a.length)return[[-1,t],[1,e]];var h=this.diff_halfMatch_(t,e);if(h){var f=h[0],o=h[1],c=h[2],g=h[3],p=h[4],u=this.diff_main(f,c,n,i),d=this.diff_main(o,g,n,i);return u.concat([[0,p]],d)}return n&&100<t.length&&100<e.length?this.diff_lineMode_(t,e,i):this.diff_bisect_(t,e,i)},t.prototype.diff_lineMode_=function(t,e,n){var i=this.diff_linesToChars_(t,e);t=i.chars1,e=i.chars2;var r=i.lineArray,s=this.diff_main(t,e,!1,n);this.diff_charsToLines_(s,r),this.diff_cleanupSemantic(s),s.push([0,""]);for(var a=0,l=0,h=0,f="",o="";a<s.length;){switch(s[a][0]){case 1:h++,o+=s[a][1];break;case-1:l++,f+=s[a][1];break;case 0:if(1<=l&&1<=h){s.splice(a-l-h,l+h),a=a-l-h;for(var c=this.diff_main(f,o,!1,n),g=c.length-1;0<=g;g--)s.splice(a,0,c[g]);a+=c.length}l=h=0,o=f=""}a++}return s.pop(),s},t.prototype.diff_bisect_=function(t,e,n){for(var i=t.length,r=e.length,s=Math.ceil((i+r)/2),a=s,l=2*s,h=new Array(l),f=new Array(l),o=0;o<l;o++)h[o]=-1,f[o]=-1;h[a+1]=0;for(var c=i-r,g=c%2!=(f[a+1]=0),p=0,u=0,d=0,m=0,v=0;v<s&&!((new Date).getTime()>n);v++){for(var _=-v+p;_<=v-u;_+=2){for(var y=a+_,b=void 0,x=(b=_==-v||_!=v&&h[y-1]<h[y+1]?h[y+1]:h[y-1]+1)-_;b<i&&x<r&&t.charAt(b)==e.charAt(x);)b++,x++;if(i<(h[y]=b))u+=2;else if(r<x)p+=2;else if(g){if(0<=(D=a+c-_)&&D<l&&-1!=f[D])if((w=i-f[D])<=b)return this.diff_bisectSplit_(t,e,b,x,n)}}for(var M=-v+d;M<=v-m;M+=2){for(var D=a+M,w=void 0,C=(w=M==-v||M!=v&&f[D-1]<f[D+1]?f[D+1]:f[D-1]+1)-M;w<i&&C<r&&t.charAt(i-w-1)==e.charAt(r-C-1);)w++,C++;if(i<(f[D]=w))m+=2;else if(r<C)d+=2;else if(!g){if(0<=(y=a+c-M)&&y<l&&-1!=h[y]){x=a+(b=h[y])-y;if((w=i-w)<=b)return this.diff_bisectSplit_(t,e,b,x,n)}}}}return[[-1,t],[1,e]]},t.prototype.diff_bisectSplit_=function(t,e,n,i,r){var s=t.substring(0,n),a=e.substring(0,i),l=t.substring(n),h=e.substring(i),f=this.diff_main(s,a,!1,r),o=this.diff_main(l,h,!1,r);return f.concat(o)},t.prototype.diff_linesToChars_=function(t,e){var n=[],i={};return n[0]="",{chars1:this.diff_linesToCharsMunge_(t,n,i),chars2:this.diff_linesToCharsMunge_(e,n,i),lineArray:n}},t.prototype.diff_linesToCharsMunge_=function(t,e,n){for(var i="",r=0,s=-1,a=e.length;s<t.length-1;){-1==(s=t.indexOf("\n",r))&&(s=t.length-1);var l=t.substring(r,s+1);r=s+1,(n.hasOwnProperty?n.hasOwnProperty(l):n[l]!==undefined)?i+=String.fromCharCode(n[l]):(i+=String.fromCharCode(a),n[l]=a,e[a++]=l)}return i},t.prototype.diff_charsToLines_=function(t,e){for(var n=0;n<t.length;n++){for(var i=t[n][1],r=[],s=0;s<i.length;s++)r[s]=e[i.charCodeAt(s)];t[n][1]=r.join("")}},t.prototype.diff_commonPrefix=function(t,e){if(!t||!e||t.charAt(0)!=e.charAt(0))return 0;for(var n=0,i=Math.min(t.length,e.length),r=i,s=0;n<r;)t.substring(s,r)==e.substring(s,r)?s=n=r:i=r,r=Math.floor((i-n)/2+n);return r},t.prototype.diff_commonSuffix=function(t,e){if(!t||!e||t.charAt(t.length-1)!=e.charAt(e.length-1))return 0;for(var n=0,i=Math.min(t.length,e.length),r=i,s=0;n<r;)t.substring(t.length-r,t.length-s)==e.substring(e.length-r,e.length-s)?s=n=r:i=r,r=Math.floor((i-n)/2+n);return r},t.prototype.diff_commonOverlap_=function(t,e){var n=t.length,i=e.length;if(0==n||0==i)return 0;i<n?t=t.substring(n-i):n<i&&(e=e.substring(0,n));var r=Math.min(n,i);if(t==e)return r;for(var s=0,a=1;;){var l=t.substring(r-a),h=e.indexOf(l);if(-1==h)return s;a+=h,0!=h&&t.substring(r-a)!=e.substring(0,a)||(s=a,a++)}},t.prototype.diff_halfMatch_=function(t,e){if(this.Diff_Timeout<=0)return null;var n=t.length>e.length?t:e,i=t.length>e.length?e:t;if(n.length<4||2*i.length<n.length)return null;var r,s,a,l,h,f=this.diff_halfMatchI_(n,i,Math.ceil(n.length/4),this),o=this.diff_halfMatchI_(n,i,Math.ceil(n.length/2),this);return f||o?(r=o?f&&f[4].length>o[4].length?f:o:f,t.length>e.length?(s=r[0],a=r[1],l=r[2],h=r[3]):(l=r[0],h=r[1],s=r[2],a=r[3]),[s,a,l,h,r[4]]):null},t.prototype.diff_halfMatchI_=function(t,e,n,i){for(var r,s,a,l,h=t.substring(n,n+Math.floor(t.length/4)),f=-1,o="";-1!=(f=e.indexOf(h,f+1));){var c=i.diff_commonPrefix(t.substring(n),e.substring(f)),g=i.diff_commonSuffix(t.substring(0,n),e.substring(0,f));o.length<g+c&&(o=e.substring(f-g,f)+e.substring(f,f+c),r=t.substring(0,n-g),s=t.substring(n+c),a=e.substring(0,f-g),l=e.substring(f+c))}return 2*o.length>=t.length?[r,s,a,l,o]:null},t.prototype.diff_cleanupSemantic=function(t){for(var e=!1,n=[],i=0,r=null,s=0,a=0,l=0,h=0,f=0;s<t.length;)0==t[s][0]?(a=h,l=f,f=h=0,r=t[n[i++]=s][1]):(1==t[s][0]?h+=t[s][1].length:f+=t[s][1].length,r&&r.length<=Math.max(a,l)&&r.length<=Math.max(h,f)&&(t.splice(n[i-1],0,[-1,r]),t[n[i-1]+1][0]=1,i--,s=0<--i?n[i-1]:-1,f=h=l=a=0,e=!(r=null))),s++;for(e&&this.diff_cleanupMerge(t),this.diff_cleanupSemanticLossless(t),s=1;s<t.length;){if(-1==t[s-1][0]&&1==t[s][0]){var o=t[s-1][1],c=t[s][1],g=this.diff_commonOverlap_(o,c),p=this.diff_commonOverlap_(c,o);p<=g?(g>=o.length/2||g>=c.length/2)&&(t.splice(s,0,[0,c.substring(0,g)]),t[s-1][1]=o.substring(0,o.length-g),t[s+1][1]=c.substring(g),s++):(p>=o.length/2||p>=c.length/2)&&(t.splice(s,0,[0,o.substring(0,p)]),t[s-1][0]=1,t[s-1][1]=c.substring(0,c.length-p),t[s+1][0]=-1,t[s+1][1]=o.substring(p),s++),s++}s++}},t.prototype.diff_cleanupSemanticLossless=function(t){function e(t,e){if(!t||!e)return 6;var n=new RegExp("/[^a-zA-Z0-9]/"),i=t.charAt(t.length-1),r=e.charAt(0),s=i.match(n),a=r.match(n),l=s&&i.match(this.whitespaceRegex_),h=a&&r.match(this.whitespaceRegex_),f=l&&i.match(this.linebreakRegex_),o=h&&r.match(this.linebreakRegex_),c=f&&t.match(this.blanklineEndRegex_),g=o&&e.match(this.blanklineStartRegex_);return c||g?5:f||o?4:s&&!l&&h?3:l||h?2:s||a?1:0}for(var n=1;n<t.length-1;){if(0==t[n-1][0]&&0==t[n+1][0]){var i=t[n-1][1],r=t[n][1],s=t[n+1][1],a=this.diff_commonSuffix(i,r);if(a){var l=r.substring(r.length-a);i=i.substring(0,i.length-a),r=l+r.substring(0,r.length-a),s=l+s}for(var h=i,f=r,o=s,c=e(i,r)+e(r,s);r.charAt(0)===s.charAt(0);){i+=r.charAt(0),r=r.substring(1)+s.charAt(0),s=s.substring(1);var g=e(i,r)+e(r,s);c<=g&&(c=g,h=i,f=r,o=s)}t[n-1][1]!=h&&(h?t[n-1][1]=h:(t.splice(n-1,1),n--),t[n][1]=f,o?t[n+1][1]=o:(t.splice(n+1,1),n--))}n++}},t.prototype.diff_cleanupEfficiency=function(t){for(var e=!1,n=[],i=0,r=null,s=0,a=!1,l=!1,h=!1,f=!1;s<t.length;)0==t[s][0]?(t[s][1].length<this.Diff_EditCost&&(h||f)?(a=h,l=f,r=t[n[i++]=s][1]):(i=0,r=null),h=f=!1):(-1==t[s][0]?f=!0:h=!0,r&&(a&&l&&h&&f||r.length<this.Diff_EditCost/2&&(a?1:0)+(l?1:0)+(h?1:0)+(f?1:0)==3)&&(t.splice(n[i-1],0,[-1,r]),t[n[i-1]+1][0]=1,i--,r=null,a&&l?(h=f=!0,i=0):(s=0<--i?n[i-1]:-1,h=f=!1),e=!0)),s++;e&&this.diff_cleanupMerge(t)},t.prototype.diff_cleanupMerge=function(t){t.push([0,""]);for(var e,n=0,i=0,r=0,s="",a="";n<t.length;)switch(t[n][0]){case 1:r++,a+=t[n][1],n++;break;case-1:i++,s+=t[n][1],n++;break;case 0:1<i+r?(0!==i&&0!==r&&(0!==(e=this.diff_commonPrefix(a,s))&&(0<n-i-r&&0==t[n-i-r-1][0]?t[n-i-r-1][1]+=a.substring(0,e):(t.splice(0,0,[0,a.substring(0,e)]),n++),a=a.substring(e),s=s.substring(e)),0!==(e=this.diff_commonSuffix(a,s))&&(t[n][1]=a.substring(a.length-e)+t[n][1],a=a.substring(0,a.length-e),s=s.substring(0,s.length-e))),0===i?t.splice(n-r,i+r,[1,a]):0===r?t.splice(n-i,i+r,[-1,s]):t.splice(n-i-r,i+r,[-1,s],[1,a]),n=n-i-r+(i?1:0)+(r?1:0)+1):0!==n&&0==t[n-1][0]?(t[n-1][1]+=t[n][1],t.splice(n,1)):n++,i=r=0,a=s=""}""===t[t.length-1][1]&&t.pop();var l=!1;for(n=1;n<t.length-1;)0==t[n-1][0]&&0==t[n+1][0]&&(t[n][1].substring(t[n][1].length-t[n-1][1].length)==t[n-1][1]?(t[n][1]=t[n-1][1]+t[n][1].substring(0,t[n][1].length-t[n-1][1].length),t[n+1][1]=t[n-1][1]+t[n+1][1],t.splice(n-1,1),l=!0):t[n][1].substring(0,t[n+1][1].length)==t[n+1][1]&&(t[n-1][1]+=t[n+1][1],t[n][1]=t[n][1].substring(t[n+1][1].length)+t[n+1][1],t.splice(n+1,1),l=!0)),n++;l&&this.diff_cleanupMerge(t)},t.prototype.diff_xIndex=function(t,e){var n,i=0,r=0,s=0,a=0;for(n=0;n<t.length&&(1!==t[n][0]&&(i+=t[n][1].length),-1!==t[n][0]&&(r+=t[n][1].length),!(e<i));n++)s=i,a=r;return t.length!=n&&-1===t[n][0]?a:a+(e-s)},t.prototype.diff_text1=function(t){for(var e=[],n=0;n<t.length;n++)1!==t[n][0]&&(e[n]=t[n][1]);return e.join("")},t.prototype.diff_text2=function(t){for(var e=[],n=0;n<t.length;n++)-1!==t[n][0]&&(e[n]=t[n][1]);return e.join("")},t.prototype.diff_levenshtein=function(t){for(var e=0,n=0,i=0,r=0;r<t.length;r++){var s=t[r][0],a=t[r][1];switch(s){case 1:n+=a.length;break;case-1:i+=a.length;break;case 0:e+=Math.max(n,i),i=n=0}}return e+=Math.max(n,i)},t.prototype.diff_toDelta=function(t){for(var e=[],n=0;n<t.length;n++)switch(t[n][0]){case 1:e[n]="+"+encodeURI(t[n][1]);break;case-1:e[n]="-"+t[n][1].length;break;case 0:e[n]="="+t[n][1].length}return e.join("\t").replace(/%20/g," ")},t.prototype.diff_fromDelta=function(t,e){for(var n=[],i=0,r=0,s=e.split(/\t/g),a=0;a<s.length;a++){var l=s[a].substring(1);switch(s[a].charAt(0)){case"+":try{n[i++]=[1,decodeURI(l)]}catch(o){throw new Error("Illegal escape in diff_fromDelta: "+l)}break;case"-":case"=":var h=parseInt(l,10);if(isNaN(h)||h<0)throw new Error("Invalid number in diff_fromDelta: "+l);var f=t.substring(r,r+=h);"="==s[a].charAt(0)?n[i++]=[0,f]:n[i++]=[-1,f];break;default:if(s[a])throw new Error("Invalid diff operation in diff_fromDelta: "+s[a])}}if(r!=t.length)throw new Error("Delta length ("+r+") does not equal source text length ("+t.length+").");return n},t.prototype.match_main=function(t,e,n){if(null==t||null==e||null==n)throw new Error("Null input. (match_main)");return n=Math.max(0,Math.min(n,t.length)),t==e?0:t.length?t.substring(n,n+e.length)==e?n:this.match_bitap_(t,e,n):-1},t.prototype.match_bitap_=function(t,r,s){if(r.length>this.Match_MaxBits)throw new Error("Pattern too long for this browser.");var e=this.match_alphabet_(r),a=this;function n(t,e){var n=t/r.length,i=Math.abs(s-e);return a.Match_Distance?n+i/a.Match_Distance:i?1:n}var i=this.Match_Threshold,l=t.indexOf(r,s);-1!=l&&(i=Math.min(n(0,l),i),-1!=(l=t.lastIndexOf(r,s+r.length))&&(i=Math.min(n(0,l),i)));var h,f,o=1<<r.length-1;l=-1;for(var c,g=r.length+t.length,p=0;p<r.length;p++){for(h=0,f=g;h<f;)n(p,s+f)<=i?h=f:g=f,f=Math.floor((g-h)/2+h);g=f;var u=Math.max(1,s-f+1),d=Math.min(s+f,t.length)+r.length,m=Array(d+2);m[d+1]=(1<<p)-1;for(var v=d;u<=v;v--){var _=e[t.charAt(v-1)];if(m[v]=0===p?(m[v+1]<<1|1)&_:(m[v+1]<<1|1)&_|(c[v+1]|c[v])<<1|1|c[v+1],m[v]&o){var y=n(p,v-1);if(y<=i){if(i=y,!(s<(l=v-1)))break;u=Math.max(1,2*s-l)}}}if(n(p+1,s)>i)break;c=m}return l},t.prototype.match_alphabet_=function(t){for(var e={},n=0;n<t.length;n++)e[t.charAt(n)]=0;for(n=0;n<t.length;n++)e[t.charAt(n)]|=1<<t.length-n-1;return e},t.prototype.patch_addContext_=function(t,e){if(0!=e.length){for(var n=e.substring(t.start2,t.start2+t.length1),i=0;e.indexOf(n)!=e.lastIndexOf(n)&&n.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)i+=this.Patch_Margin,n=e.substring(t.start2-i,t.start2+t.length1+i);i+=this.Patch_Margin;var r=e.substring(t.start2-i,t.start2);r&&t.diffs.unshift([0,r]);var s=e.substring(t.start2+t.length1,t.start2+t.length1+i);s&&t.diffs.push([0,s]),t.start1-=r.length,t.start2-=r.length,t.length1+=r.length+s.length,t.length2+=r.length+s.length}},t.prototype.patch_make=function(t,e,n){var i,r;if("string"==typeof t&&"string"==typeof e&&void 0===n)i=t,2<(r=this.diff_main(i,e,!0)).length&&(this.diff_cleanupSemantic(r),this.diff_cleanupEfficiency(r));else if(t&&"object"==typeof t&&void 0===e&&void 0===n)r=t,i=this.diff_text1(r);else if("string"==typeof t&&e&&"object"==typeof e&&void 0===n)i=t,r=e;else{if("string"!=typeof t||"string"!=typeof e||!n||"object"!=typeof n)throw new Error("Unknown call format to patch_make.");i=t,r=n}if(0===r.length)return[];for(var s=[],a=new d,l=0,h=0,f=0,o=i,c=i,g=0;g<r.length;g++){var p=r[g][0],u=r[g][1];switch(l||0===p||(a.start1=h,a.start2=f),p){case 1:a.diffs[l++]=r[g],a.length2+=u.length,c=c.substring(0,f)+u+c.substring(f);break;case-1:a.length1+=u.length,a.diffs[l++]=r[g],c=c.substring(0,f)+c.substring(f+u.length);break;case 0:u.length<=2*this.Patch_Margin&&l&&r.length!=g+1?(a.diffs[l++]=r[g],a.length1+=u.length,a.length2+=u.length):u.length>=2*this.Patch_Margin&&l&&(this.patch_addContext_(a,o),s.push(a),a=new d,l=0,o=c,h=f)}1!==p&&(h+=u.length),-1!==p&&(f+=u.length)}return l&&(this.patch_addContext_(a,o),s.push(a)),s},t.prototype.patch_deepCopy=function(t){for(var e=[],n=0;n<t.length;n++){var i=t[n],r=new d;r.diffs=[];for(var s=0;s<i.diffs.length;s++)r.diffs[s]=[i.diffs[s][0],i.diffs[s][1]];r.start1=i.start1,r.start2=i.start2,r.length1=i.length1,r.length2=i.length2,e[n]=r}return e},t.prototype.patch_apply=function(t,e){if(0==t.length)return[e,[]];t=this.patch_deepCopy(t);var n=this.patch_addPadding(t);e=n+e+n,this.patch_splitMax(t);for(var i=0,r=[],s=0;s<t.length;s++){var a=t[s].start2+i,l=this.diff_text1(t[s].diffs),h=void 0,f=-1;if(l.length>this.Match_MaxBits?-1!=(h=this.match_main(e,l.substring(0,this.Match_MaxBits),a))&&(-1==(f=this.match_main(e,l.substring(l.length-this.Match_MaxBits),a+l.length-this.Match_MaxBits))||f<=h)&&(h=-1):h=this.match_main(e,l,a),-1==h)r[s]=!1,i-=t[s].length2-t[s].length1;else{r[s]=!0,i=h-a;var o=void 0;if(l==(o=-1==f?e.substring(h,h+l.length):e.substring(h,f+this.Match_MaxBits)))e=e.substring(0,h)+this.diff_text2(t[s].diffs)+e.substring(h+l.length);else{var c=this.diff_main(l,o,!1);if(l.length>this.Match_MaxBits&&this.diff_levenshtein(c)/l.length>this.Patch_DeleteThreshold)r[s]=!1;else{this.diff_cleanupSemanticLossless(c);for(var g=0,p=void 0,u=0;u<t[s].diffs.length;u++){var d=t[s].diffs[u];0!==d[0]&&(p=this.diff_xIndex(c,g)),1===d[0]?e=e.substring(0,h+p)+d[1]+e.substring(h+p):-1===d[0]&&(e=e.substring(0,h+p)+e.substring(h+this.diff_xIndex(c,g+d[1].length))),-1!==d[0]&&(g+=d[1].length)}}}}}return[e=e.substring(n.length,e.length-n.length),r]},t.prototype.patch_addPadding=function(t){for(var e=this.Patch_Margin,n="",i=1;i<=e;i++)n+=String.fromCharCode(i);for(i=0;i<t.length;i++)t[i].start1+=e,t[i].start2+=e;var r=t[0],s=r.diffs;if(0==s.length||0!=s[0][0])s.unshift([0,n]),r.start1-=e,r.start2-=e,r.length1+=e,r.length2+=e;else if(e>s[0][1].length){var a=e-s[0][1].length;s[0][1]=n.substring(s[0][1].length)+s[0][1],r.start1-=a,r.start2-=a,r.length1+=a,r.length2+=a}if(0==(s=(r=t[t.length-1]).diffs).length||0!=s[s.length-1][0])s.push([0,n]),r.length1+=e,r.length2+=e;else if(e>s[s.length-1][1].length){a=e-s[s.length-1][1].length;s[s.length-1][1]+=n.substring(0,a),r.length1+=a,r.length2+=a}return n},t.prototype.patch_toText=function(t){for(var e=[],n=0;n<t.length;n++)e[n]=t[n];return e.join("")},t.prototype.patch_fromText=function(t){var e=[];if(!t)return e;for(var n=t.split("\n"),i=0,r=/^@@ -(\d+),?(\d*) \+(\d+),?(\d*) @@$/;i<n.length;){var s=n[i].match(r);if(!s)throw new Error("Invalid patch string: "+n[i]);var a=new d;for(e.push(a),a.start1=parseInt(s[1],10),""===s[2]?(a.start1--,a.length1=1):"0"==s[2]?a.length1=0:(a.start1--,a.length1=parseInt(s[2],10)),a.start2=parseInt(s[3],10),""===s[4]?(a.start2--,a.length2=1):"0"==s[4]?a.length2=0:(a.start2--,a.length2=parseInt(s[4],10)),i++;i<n.length;){var l=n[i].charAt(0),h=void 0;try{h=decodeURI(n[i].substring(1))}catch(f){throw new Error("Illegal escape in patch_fromText: "+h)}if("-"==l)a.diffs.push([-1,h]);else if("+"==l)a.diffs.push([1,h]);else if(" "==l)a.diffs.push([0,h]);else{if("@"==l)break;if(""!==l)throw new Error('Invalid patch mode "'+l+'" in: '+h)}i++}}return e},t}(),d=function(){this.diffs=[],this.start1=null,this.start2=null,this.length1=0,this.length2=0,this.toString=function(){for(var t,e=["@@ -"+(0===this.length1?this.start1+",0":1==this.length1?this.start1+1:this.start1+1+","+this.length1)+" +"+(0===this.length2?this.start2+",0":1==this.length2?this.start2+1:this.start2+1+","+this.length2)+" @@\n"],n=0;n<this.diffs.length;n++){switch(this.diffs[n][0]){case 1:t="+";break;case-1:t="-";break;case 0:t=" "}e[n+1]=t+encodeURI(this.diffs[n][1])+"\n"}return e.join("").replace(/%20/g," ")}},r=function(){function t(t){this.dmp=t}return t.prototype.ngOnInit=function(){},t.prototype.getDiff=function(t,e){return this.dmp.diff_main(t,e)},t.prototype.getSemanticDiff=function(t,e){var n=this.dmp.diff_main(t,e);return this.dmp.diff_cleanupSemantic(n),n},t.prototype.getProcessingDiff=function(t,e){var n=this.dmp.diff_main(t,e);return this.dmp.diff_cleanupEfficiency(n),n},t.prototype.getLineDiff=function(t,e){var n=this.dmp.diff_linesToChars_(t,e),i=this.dmp.diff_main(n.chars1,n.chars2,!1);return this.dmp.diff_charsToLines_(i,n.lineArray),i},t.prototype.getDmp=function(){return this.dmp},t.decorators=[{type:e.Injectable}],t.ctorParameters=function(){return[{type:i}]},t}();function h(t){var e="function"==typeof Symbol&&t[Symbol.iterator],n=0;return e?e.call(t):{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}}}var s=function(){function t(t){this.dmp=t}return t.prototype.ngOnInit=function(){this.updateHtml()},t.prototype.ngOnChanges=function(){this.updateHtml()},t.prototype.updateHtml=function(){"number"!=typeof this.left&&"boolean"!=typeof this.left||(this.left=this.left.toString()),"number"!=typeof this.right&&"boolean"!=typeof this.right||(this.right=this.right.toString()),this.calculateLineDiff(this.dmp.getLineDiff(this.left,this.right))},t.prototype.calculateLineDiff=function(t){var e={lines:[],lineLeft:1,lineRight:1};if(this.isContentEqual=1===t.length&&0===t[0][0],this.isContentEqual)this.calculatedDiff=[];else{for(var n=0;n<t.length;n++){var i=t[n],r=i[1].split(/\r?\n/);switch(0==r[r.length-1].length&&r.pop(),i[0]){case 0:var s=0===n,a=n===t.length-1;this.outputEqualDiff(r,e,s,a);break;case-1:this.outputDeleteDiff(r,e);break;case 1:this.outputInsertDiff(r,e)}}this.calculatedDiff=e.lines}},t.prototype.outputEqualDiff=function(t,e,n,i){if(this.lineContextSize&&t.length>this.lineContextSize)if(n){var r=t.length-this.lineContextSize;e.lineLeft+=r,e.lineRight+=r,t=t.slice(t.length-this.lineContextSize,t.length)}else if(i)t=t.slice(0,this.lineContextSize);else if(t.length>2*this.lineContextSize){this.outputEqualDiffLines(t.slice(0,this.lineContextSize),e),e.lines.push(["dmp-line-compare-equal","...","...","..."]);var s=t.length-2*this.lineContextSize;return e.lineLeft+=s,e.lineRight+=s,void this.outputEqualDiffLines(t.slice(t.length-this.lineContextSize),e)}this.outputEqualDiffLines(t,e)},t.prototype.outputEqualDiffLines=function(t,e){try{for(var n=h(t),i=n.next();!i.done;i=n.next()){var r=i.value;e.lines.push(["dmp-line-compare-equal",""+e.lineLeft,""+e.lineRight,r]),e.lineLeft++,e.lineRight++}}catch(l){s={error:l}}finally{try{i&&!i.done&&(a=n["return"])&&a.call(n)}finally{if(s)throw s.error}}var s,a},t.prototype.outputDeleteDiff=function(t,e){try{for(var n=h(t),i=n.next();!i.done;i=n.next()){var r=i.value;e.lines.push(["dmp-line-compare-delete",""+e.lineLeft,"-",r]),e.lineLeft++}}catch(l){s={error:l}}finally{try{i&&!i.done&&(a=n["return"])&&a.call(n)}finally{if(s)throw s.error}}var s,a},t.prototype.outputInsertDiff=function(t,e){try{for(var n=h(t),i=n.next();!i.done;i=n.next()){var r=i.value;e.lines.push(["dmp-line-compare-insert","-",""+e.lineRight,r]),e.lineRight++}}catch(l){s={error:l}}finally{try{i&&!i.done&&(a=n["return"])&&a.call(n)}finally{if(s)throw s.error}}var s,a},t.decorators=[{type:e.Component,args:[{selector:"dmp-line-compare",styles:["\n div.dmp-line-compare {\n display: flex;\n flex-direction: row;\n border: 1px solid #808080;\n font-family: Consolas, Courier, monospace;\n width: 911px;\n }\n div.dmp-line-compare-margin {\n width: 101px;\n }\n div.dmp-line-compare-content {\n position: relative;\n top: 0px;\n left: 0px;\n flex-grow: 1;\n overflow-x: scroll;\n }\n div.dmp-line-compare-content-wrapper {\n position: absolute;\n top: 0px;\n left: 0px;\n display: flex;\n flex-direction: column;\n align-items: stretch;\n }\n div.dmp-line-compare-left {\n width: 50px;\n text-align: center;\n color: #484848;\n }\n div.dmp-line-compare-equal>div.dmp-line-compare-left,\n div.dmp-line-compare-equal>div.dmp-line-compare-right {\n background-color: #dedede;\n }\n div.dmp-line-compare-insert>div.dmp-line-compare-left,\n div.dmp-line-compare-insert>div.dmp-line-compare-right {\n background-color: #8bfb6f;\n }\n div.dmp-line-compare-delete>div.dmp-line-compare-left,\n div.dmp-line-compare-delete>div.dmp-line-compare-right {\n background-color: #f56868;\n }\n div.dmp-line-compare-right {\n width: 50px;\n text-align: center;\n color: #484848;\n border-right: 1px solid #888888;\n }\n div.dmp-line-compare-text {\n white-space: pre;\n padding-left: 10px;\n min-width: 800px;\n }\n .dmp-line-compare-delete {\n background-color: #ff8c8c;\n }\n .dmp-line-compare-insert {\n background-color: #9dff97;\n }\n .dmp-line-compare-delete>div {\n display: inline-block;\n } \n .dmp-line-compare-insert>div {\n display: inline-block;\n }\n .dmp-line-compare-equal>div {\n display: inline-block;\n }\n .dmp-margin-bottom-spacer {\n height: 20px;\n background-color: #dedede;\n border-right: 1px solid #888888;\n }\n "],template:'\n <div class="dmp-line-compare-no-changes-text" *ngIf="isContentEqual">\n There are no changes to display.\n </div> \n <div class="dmp-line-compare" *ngIf="!isContentEqual">\n <div class="dmp-line-compare-margin">\n <div [ngClass]="lineDiff[0]" *ngFor="let lineDiff of calculatedDiff">\n <div class="dmp-line-compare-left">{{lineDiff[1]}}</div>\x3c!-- No space\n --\x3e<div class="dmp-line-compare-right">{{lineDiff[2]}}</div>\n </div>\n <div class="dmp-margin-bottom-spacer"></div>\n </div>\x3c!-- No space\n --\x3e<div class="dmp-line-compare-content">\n <div class="dmp-line-compare-content-wrapper">\n <div [ngClass]="lineDiff[0]" *ngFor="let lineDiff of calculatedDiff">\n <div class="dmp-line-compare-text">{{lineDiff[3]}}</div>\n </div>\n </div>\n </div>\n </div>\n '}]}],t.ctorParameters=function(){return[{type:r}]},t.propDecorators={left:[{type:e.Input}],right:[{type:e.Input}],lineContextSize:[{type:e.Input}]},t}(),a=function(){function t(t,e){this.el=t,this.dmp=e}return t.prototype.ngOnInit=function(){this.updateHtml()},t.prototype.ngOnChanges=function(){this.updateHtml()},t.prototype.updateHtml=function(){this.el.nativeElement.innerHTML=this.createHtml(this.dmp.getDiff(this.left,this.right))},t.prototype.createHtml=function(t){var e,n,i;e="<div>";try{for(var r=h(t),s=r.next();!s.done;s=r.next()){var a=s.value;a[1]=a[1].replace(/\n/g,"<br/>"),0===a[0]&&(e+='<span class="equal">'+a[1]+"</span>"),-1===a[0]&&(e+="<del>"+a[1]+"</del>"),1===a[0]&&(e+="<ins>"+a[1]+"</ins>")}}catch(l){n={error:l}}finally{try{s&&!s.done&&(i=r["return"])&&i.call(r)}finally{if(n)throw n.error}}return e+="</div>"},t.decorators=[{type:e.Directive,args:[{selector:"[diff]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:r}]},t.propDecorators={left:[{type:e.Input}],right:[{type:e.Input}]},t}(),l=function(){function t(t,e){this.el=t,this.dmp=e}return t.prototype.ngOnInit=function(){this.updateHtml()},t.prototype.ngOnChanges=function(){this.updateHtml()},t.prototype.updateHtml=function(){"number"!=typeof this.left&&"boolean"!=typeof this.left||(this.left=this.left.toString()),"number"!=typeof this.right&&"boolean"!=typeof this.right||(this.right=this.right.toString()),this.el.nativeElement.innerHTML=this.createHtml(this.dmp.getLineDiff(this.left,this.right))},t.prototype.createHtml=function(t){var e,n,i;e="<div>";try{for(var r=h(t),s=r.next();!s.done;s=r.next()){var a=s.value;0===a[0]&&(e+='<span class="equal">'+a[1]+"</span>"),-1===a[0]&&(e+='<div class="del"> - <del>'+a[1]+"</del></div>\n"),1===a[0]&&(e+='<div class="ins"> + <ins>'+a[1]+"</ins></div>\n")}}catch(l){n={error:l}}finally{try{s&&!s.done&&(i=r["return"])&&i.call(r)}finally{if(n)throw n.error}}return e+="</div>"},t.decorators=[{type:e.Directive,args:[{selector:"[lineDiff]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:r}]},t.propDecorators={left:[{type:e.Input}],right:[{type:e.Input}]},t}(),f=function(){function t(t,e){this.el=t,this.dmp=e}return t.prototype.ngOnInit=function(){this.updateHtml()},t.prototype.ngOnChanges=function(){this.updateHtml()},t.prototype.updateHtml=function(){this.el.nativeElement.innerHTML=this.createHtml(this.dmp.getProcessingDiff(this.left,this.right))},t.prototype.createHtml=function(t){var e,n,i;e="<div>";try{for(var r=h(t),s=r.next();!s.done;s=r.next()){var a=s.value;a[1]=a[1].replace(/\n/g,"<br/>"),0===a[0]&&(e+='<span class="equal">'+a[1]+"</span>"),-1===a[0]&&(e+="<del>"+a[1]+"</del>"),1===a[0]&&(e+="<ins>"+a[1]+"</ins>")}}catch(l){n={error:l}}finally{try{s&&!s.done&&(i=r["return"])&&i.call(r)}finally{if(n)throw n.error}}return e+="</div>"},t.decorators=[{type:e.Directive,args:[{selector:"[processingDiff]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:r}]},t.propDecorators={left:[{type:e.Input}],right:[{type:e.Input}]},t}(),o=function(){function t(t,e){this.el=t,this.dmp=e}return t.prototype.ngOnInit=function(){this.updateHtml()},t.prototype.ngOnChanges=function(){this.updateHtml()},t.prototype.updateHtml=function(){this.left||(this.left=""),this.right||(this.right=""),"number"!=typeof this.left&&"boolean"!=typeof this.left||(this.left=this.left.toString()),"number"!=typeof this.right&&"boolean"!=typeof this.right||(this.right=this.right.toString()),this.el.nativeElement.innerHTML=this.createHtml(this.dmp.getSemanticDiff(this.left,this.right))},t.prototype.createHtml=function(t){var e,n,i;e="<div>";try{for(var r=h(t),s=r.next();!s.done;s=r.next()){var a=s.value;a[1]=a[1].replace(/\n/g,"<br/>"),0===a[0]&&(e+='<span class="equal">'+a[1]+"</span>"),-1===a[0]&&(e+="<del>"+a[1]+"</del>"),1===a[0]&&(e+="<ins>"+a[1]+"</ins>")}}catch(l){n={error:l}}finally{try{s&&!s.done&&(i=r["return"])&&i.call(r)}finally{if(n)throw n.error}}return e+="</div>"},t.decorators=[{type:e.Directive,args:[{selector:"[semanticDiff]"}]}],t.ctorParameters=function(){return[{type:e.ElementRef},{type:r}]},t.propDecorators={left:[{type:e.Input}],right:[{type:e.Input}]},t}(),c=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{declarations:[a,l,f,o,s],imports:[n.CommonModule],exports:[a,l,f,o,s],providers:[i,r]}]}],t}();t.DiffMatchPatchService=r,t.patch_obj=d,t.DiffMatchPatch=i,t.LineCompareComponent=s,t.DiffDirective=a,t.LineDiffDirective=l,t.ProcessingDiffDirective=f,t.SemanticDiffDirective=o,t.DiffMatchPatchModule=c,Object.defineProperty(t,"__esModule",{value:!0})}); //# sourceMappingURL=ng-diff-match-patch.umd.min.js.map