!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e=e||self,t(e.diff={}))}(this,function(e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r3?x-3:0),C=3;C2&&void 0!==arguments[2]?arguments[2]:{};r.parser||(r.parser={}),t||(t=ue);var n=new Set(r.parser.rawElements?r.parser.rawElements:pe),a=new Set(r.parser.selfClosingElements||ve),o=/)-->|<(\/?)([a-z\-\_][a-z0-9\-\_]*)\s*([^>]*?)(\/?)>/gi,i=f("#document-fragment",null,[]),s=[i],d=i,c=-1;if(!e.includes("<")&&e)return Ne(d,e,t),i;for(var l,u,h=0;l=o.exec(e);h++){c>-1&&c+l[0].length0){var v=e.slice(0,p);v&&!ce.exec(v)&&Ne(d,v,t)}if(c=o.lastIndex,"!"!==l[0][1]){var m=le.exec(l[2]),g=m&&t.tags[m[1]],N=g?g.name||g:l[2];if(!l[1]&&(!l[4]&&me[d.rawNodeName]&&me[d.rawNodeName][N]&&(s.pop(),d=s[s.length-1]),d=d.childNodes[d.childNodes.push(ye(l[2],l[3],t))-1],s.push(d),r.parser.strict||n.has(N))){var y=""),b=e.indexOf(y,o.lastIndex);if(n.has(N)){-1===b?c=o.lastIndex=e.length+1:(c=b+y.length,o.lastIndex=c,l[1]=" ");var T=e.slice(l.index+l[0].length,b);Ne(d,T,t)}}if(l[1]||l[4]||a.has(N))for(;d;){if("/"===l[4]&&m){s.pop(),d=s[s.length-1];break}if(g&&d.rawNodeName===N){s.pop(),d=s[s.length-1];break}if(d.rawNodeName===N){s.pop(),d=s[s.length-1];break}var E=ge[d.rawNodeName];{if(!E||!E[N])break;s.pop(),d=s[s.length-1]}}}}var w=e.slice(-1===c?0:c);if(w&&Ne(d,w,t),i.childNodes.length&&"html"===i.childNodes[0].nodeName){var k={before:[],after:[]},S={after:[]},O=i.childNodes[0],x=!0,_=!0;if(O.childNodes=O.childNodes.filter(function(e){if("body"===e.nodeName||"head"===e.nodeName)return"head"===e.nodeName&&(x=!1),"body"===e.nodeName&&(_=!1),!0;1===e.nodeType&&(x&&_?k.before.push(e):!x&&_?k.after.push(e):_||S.after.push(e))}),O.childNodes[0]&&"head"===O.childNodes[0].nodeName){var C=O.childNodes[0].childNodes;C.unshift.apply(C,k.before),C.push.apply(C,k.after)}else{var A=f("head",null,[]);if(A){var R=A.childNodes;R.unshift.apply(R,k.before),R.push.apply(R,k.after),O.childNodes.unshift(A)}}if(O.childNodes[1]&&"body"===O.childNodes[1].nodeName){var I=O.childNodes[1].childNodes;I.push.apply(I,S.after)}else{var j=f("body",null,[]);if(j){var M=j.childNodes;M.push.apply(M,S.after),O.childNodes.push(j)}}}return i}function p(e){be(e);for(var t=0;t2&&void 0!==arguments[2]?arguments[2]:[],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};e||(e=Ae),t||(t=Ae);var a=n.svgElements,o=void 0===a?new Set:a,i=(e.nodeName,11===t.nodeType||e.nodeType,e===Ae),s="svg"===t.nodeName||o.has(t),d=null;if(q.forEach(function(r){var n=r(e,t);n&&n===e?d=!0:n&&(t=n)}),d)return r;for(var c={old:new Map,new:new Map},l=0;lx&&O.splice(V,1),E(null,C,r,n),r.push(D.REPLACE_CHILD,C,_)}}else O.push(C),E(null,C,r,n),r.push(D.INSERT_BEFORE,e,C,null)}if(O.length!==k.length){for(var L=k.length;L1&&void 0!==arguments[1]?arguments[1]:Le,r=arguments.length>2?arguments[2]:void 0,n=f(e),a=B.get(n);if(a)return a;var o=n.nodeName,i=n.rawNodeName,s=void 0===i?o:i,d=n.childNodes,c=void 0===d?[]:d;r=r||"svg"===o;var l=null;$.forEach(function(e,t){(t=e(n))&&(l=t)}),null===l&&(l="#text"===o?t.createTextNode(n.nodeValue||""):"#document-fragment"===o?t.createDocumentFragment():r?t.createElementNS(Ve,s):t.createElement(s),"script"===o&&(l.type="no-execute"));var u=l;B.set(n,u);for(var h=0;h1?n-1:0),o=1;o1&&void 0!==arguments[1]?arguments[1]:{},r=[],n=t.ownerDocument,a=t.svgElements,o=void 0===a?new Set:a,s=e.length,d=0;;){var c=e[d];if(d===s)break;switch(c){case D.SET_ATTRIBUTE:if("break"===function(){var t=e[d+1],a=e[d+2],s=_(e[d+3]);d+=4;var c=o.has(t),l=w(t,n,c),u=l.getAttribute(a),f=x("attributeChanged",t,a,u,s);return p(t),f.length?(Promise.all(f).then(function(){return Fe(t,l,a,s)}),r.push.apply(r,i(f))):Fe(t,l,a,s),"break"}())break;case D.REMOVE_ATTRIBUTE:if("break"===function(){var t=e[d+1],a=e[d+2];d+=3;var s=o.has(t),c=w(t,n,s),l=c.getAttribute(a),u=x("attributeChanged",t,a,l,null);return p(t),u.length?(Promise.all(u).then(function(){return Ye(c,a)}),r.push.apply(r,i(u))):Ye(c,a),"break"}())break;case D.NODE_VALUE:if("break"===function(){var t=e[d+1],a=e[d+2],s=e[d+3],c=o.has(t);d+=4;var l=w(t,n,c);p(t);var u=x("textChanged",t,s,a);return u.length?(Promise.all(u).then(function(){return $e(l,a)}),r.push.apply(r,i(u))):$e(l,a),"break"}())break;case D.INSERT_BEFORE:var l=e[d+1],u=e[d+2],f=e[d+3];d+=4;var h=B.get(l);if(!h)break;var m=o.has(u);p(u);var g=f&&w(f,n,m),N=w(u,n,m);h.insertBefore(N,g||null),r.push.apply(r,i(x("attached",u)));break;case D.REPLACE_CHILD:if("break"===function(){var t=e[d+1],a=e[d+2];d+=3;var s=o.has(t),c=B.get(a),l=w(t,n,s);if(!c||!c.parentNode)return"break";p(t);var u=U.get("attached").size,f=U.get("detached").size,h=U.get("replaced").size;if(!u&&!f&&!h)return c.parentNode&&(v(a),c.parentNode.replaceChild(l,c)),"break";c.parentNode&&c.parentNode.insertBefore(l,c);var m=x("attached",t),g=x("detached",a),N=x("replaced",a,l),y=[].concat(i(m),i(g),i(N));return y.length?(Promise.all(y).then(function(){c.parentNode&&c.parentNode.removeChild(c),v(a)}),r.push.apply(r,i(y))):(c.parentNode&&c.parentNode.removeChild(c),v(a)),"break"}())break;case D.REMOVE_CHILD:if("break"===function(){var t=e[d+1];d+=2;var n=B.get(t);if(!n||!n.parentNode)return"break";var a=x("detached",t);return a.length?(Promise.all(a).then(function(){n.parentNode&&n.parentNode.removeChild(n),v(t)}),r.push.apply(r,i(a))):(n.parentNode&&n.parentNode.removeChild(n),v(t)),"break"}())break}}return r}function A(e){var t=e.domNode,r=e.state,n=e.state,a=n.measure,o=n.scriptsToExecute,s=e.patches,d=t.ownerDocument,c=e.promises||[];r.ownerDocument=d||document;var l=function(e){"script"===e.nodeName&&(o.set(e,e.attributes.type),e.attributes.type="no-execute")};$.add(l),a("patch node"),c.push.apply(c,i(C(s,r))),a("patch node"),$.delete(l),e.promises=c}function R(e){var t=e.promises;return t&&t.length?e.promise=Promise.all(t).then(function(){return e.end()}):e.promise=Promise.resolve(e.end())}function I(e){var t=e.state,r=e.markup,n=e.options,a=t.measure,o=n.inner;if("string"==typeof r){a("parsing markup for new tree");var i=h(r,void 0,n),s=i.childNodes,d=f(o?s:s[0]||s);d&&(e.newTree=d),a("parsing markup for new tree")}}function j(e){return e.replace(/[&<>]/g,function(e){return"&#".concat(e.charCodeAt(0),";")})}function M(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.inner=!0,r.executeScripts=!("executeScripts"in r)||r.executeScripts,r.tasks=r.tasks||qe,Je.create(e,t,r).start()}function V(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.inner=!1,r.tasks=r.tasks||qe,r.executeScripts=!("executeScripts"in r)||r.executeScripts,Je.create(e,t,r).start()}function L(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n")1?t-1:0),n=1;n/i,le=new RegExp("".concat(de,"([^_]*)__")),ue={tags:[],attributes:{},children:{}},fe=Object.assign,he=Array.isArray,pe=["script","noscript","style","code","template"],ve=["meta","img","link","input","area","br","hr","area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"],me={li:{li:!0},p:{p:!0,div:!0},td:{td:!0,th:!0},th:{td:!0,th:!0}},ge={li:{ul:!0,ol:!0},a:{div:!0},b:{div:!0},i:{div:!0},p:{div:!0},td:{tr:!0,table:!0},th:{tr:!0,table:!0}},Ne=function(e,t,r){var n;if(!("childNodes"in e.attributes)){if(t&&!ce.test(t)&&!le.test(t))return e.childNodes.push(f("#text",t));for(var a=[],o=t.split(le),s=0;s0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=B.get(t);e?r.setAttribute("type",e):r.removeAttribute("type")}),t.previousMarkup="outerHTML"in r?r.outerHTML:"",n.executeScripts&&i.forEach(function(e,r){var n=B.get(r),a=n.cloneNode(!0);z.has(n)&&(b(n),z.set(a,t)),B.set(r,a),n.parentNode.replaceChild(a,n)}),i.clear(),a("finalize"),a("render"),m(),this.endedCallbacks.forEach(function(t){return t(e)}),this.endedCallbacks.clear(),this}},{key:"onceEnded",value:function(e){this.endedCallbacks.add(e)}}]),e}(),Ke=function(e){for(var t=1;t