var __extends=this&&this.__extends||function(){var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};return function(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}}(),__assign=this&&this.__assign||function(){return(__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;ra[0]&&t[1]'");return e},e.prototype.format=function(e){for(var o=this,i=[],t=1;t=i.lastDisabledPostBack?e:function(){return Promise.reject(null)};return function(){var e=t();return e.then(o,o),e}},function(e){return o(e),Promise.reject(e)})},this.defaultConcurrencyPostbackHandler=this.postbackHandlers["concurrency-default"]({}),this.postbackQueues={},this.postbackHandlersStartedEventHandler={name:"eventInvoke-postbackHandlersStarted",execute:function(e,t){return dotvvm.events.postbackHandlersStarted.trigger(t),e()}},this.postbackHandlersCompletedEventHandler={name:"eventInvoke-postbackHandlersCompleted",after:["eventInvoke-postbackHandlersStarted"],execute:function(e,t){return dotvvm.events.postbackHandlersCompleted.trigger(t),e()}},this.globalPostbackHandlers=[this.suppressOnDisabledElementHandler,this.isPostBackRunningHandler,this.postbackHandlersStartedEventHandler],this.globalLaterPostbackHandlers=[this.postbackHandlersCompletedEventHandler],this.events=new DotvvmEvents,this.globalize=new DotvvmGlobalize,this.evaluator=new DotvvmEvaluator,this.domUtils=new DotvvmDomUtils,this.fileUpload=new DotvvmFileUpload,this.extensions={},this.isPostbackRunning=ko.observable(!1),this.isSpaNavigationRunning=ko.observable(!1),this.updateProgressChangeCounter=ko.observable(0),this.diffEqual={}}return e.prototype.createWindowSetTimeoutHandler=function(r){return{name:"timeout",before:["eventInvoke-postbackHandlersStarted","setIsPostbackRunning"],execute:function(e,t){return new Promise(function(e,t){return window.setTimeout(e,r)}).then(function(){return e()})}}},e.prototype.getPostbackQueue=function(e){return void 0===e&&(e="default"),this.postbackQueues[e]||(this.postbackQueues[e]={queue:[],noRunning:0}),this.postbackQueues[e]},e.prototype.init=function(t,e){var r=this;this.addKnockoutBindingHandlers();var n=this.viewModels[t]=JSON.parse(document.getElementById("__dot_viewmodel_"+t).value);if(n.resources)for(var o in n.resources)this.resourceSigns[o]=!0;n.renderedResources&&n.renderedResources.forEach(function(e){return r.resourceSigns[e]=!0});var i=n.resultIdFragment;n.viewModelCacheId&&(n.viewModelCache=this.viewModels[t].viewModel);var a=n.viewModel=this.serialization.deserialize(this.viewModels[t].viewModel,{},!0);this.culture=e,this.validation=new DotvvmValidation(this),this.viewModelObservables[t]=ko.observable(a),ko.applyBindings(this.viewModelObservables[t],document.documentElement),this.events.init.trigger({viewModel:a});var s=this.getSpaPlaceHolder();if(null!=s){var l=function(e){return r.handleHashChange(t,s,e)};this.useHistoryApiSpaNavigation=JSON.parse(s.getAttribute("data-dotvvm-spacontentplaceholder-usehistoryapi")),this.useHistoryApiSpaNavigation&&(l=function(e){return r.handleHashChangeWithHistory(t,s,e)});this.domUtils.attachEvent(window,"hashchange",function(){return l(!1)}),l(!0)}if(window.addEventListener("popstate",function(e){return r.handlePopState(t,e,null!=s)}),this.isViewModelUpdating=!1,i)if(s){var d=document.getElementById(i);d&&"function"==typeof d.scrollIntoView&&d.scrollIntoView(!0)}else location.hash=i;this.domUtils.attachEvent(window,"beforeunload",function(e){r.persistViewModel(t)})},e.prototype.handlePopState=function(e,t,r){if(this.spaHistory.isSpaPage(t.state)){var n=this.spaHistory.getHistoryRecord(t.state);r?this.navigateCore(e,n.url):this.performRedirect(n.url,!0),t.preventDefault()}},e.prototype.handleHashChangeWithHistory=function(e,t,r){var n=this;if(0===document.location.hash.indexOf("#!/"))this.navigateCore(e,document.location.hash.substring(2),function(e){n.spaHistory.replacePage(e)});else{var o=t.getAttribute("data-dotvvm-spacontentplaceholder-defaultroute");if(!t.hasAttribute("data-dotvvm-spacontentplaceholder-content")&&o)this.navigateCore(e,"/"+o,function(e){return n.spaHistory.replacePage(e)});else{this.isSpaReady(!0),t.style.display="";var i=location.pathname+location.search+location.hash;this.spaHistory.replacePage(i)}}},e.prototype.handleHashChange=function(e,t,r){if(0===document.location.hash.indexOf("#!/"))this.navigateCore(e,document.location.hash.substring(2));else{var n=t.getAttribute("data-dotvvm-spacontentplaceholder-defaultroute");if(n)n="#!/"+n,n=this.fixSpaUrlPrefix(n),this.performRedirect(n,r);else if(r)this.isSpaReady(!0),t.style.display="";else{var o=(n=document.location.toString()).indexOf("/","https://".length);n=0=e.length)r();else{var o=e[t],i=!1;if("script"==o.tagName.toLowerCase()){var a=o,s=document.createElement("script");a.src&&(s.src=a.src,i=!0),a.type&&(s.type=a.type),a.text&&(s.text=a.text),o.id&&(s.id=o.id),o=s}else if("link"==o.tagName.toLowerCase()){var l=o,d=document.createElement("link");l.href&&(d.href=l.href),l.rel&&(d.rel=l.rel),l.type&&(d.type=l.type),o=d}i&&(o.addEventListener("load",function(){return n.loadResourceElements(e,t+1,r)}),o.addEventListener("error",function(){return n.loadResourceElements(e,t+1,r)})),document.head.appendChild(o),i||this.loadResourceElements(e,t+1,r)}},e.prototype.getSpaPlaceHolder=function(){var e=document.getElementsByName("__dot_SpaContentPlaceHolder");return 1==e.length?e[0]:null},e.prototype.navigateCore=function(u,v,c){var p=this;return new Promise(function(a,s){var r=p.viewModels[u].viewModel,n=p.backUpPostBackConter();p.setLastDisabledPostBack(n),p.isSpaNavigationRunning(!0);var e=new DotvvmSpaNavigatingEventArgs(r,u,v);if(p.events.spaNavigating.trigger(e),!e.cancel){var t=p.viewModels[u].virtualDirectory||"",o="/___dotvvm-spa___"+p.addLeadingSlash(v),i=p.addLeadingSlash(p.concatUrl(t,o)),l=p.getSpaPlaceHolder();if(l){c&&c(p.addLeadingSlash(p.concatUrl(t,p.addLeadingSlash(v))));var d=l.attributes["data-dotvvm-spacontentplaceholder"].value;p.getJSON(i,"GET",d,function(o){if(p.isPostBackStillActive(n)){var i=JSON.parse(o.responseText);p.loadResourceList(i.resources,function(){var e=!1;if("successfulCommand"!==i.action&&i.action){if("redirect"===i.action)return p.isSpaNavigationRunning(!1),void p.handleRedirect(i,u,!0).then(a,s)}else try{p.isViewModelUpdating=!0;var t=p.cleanUpdatedControls(i);for(var r in p.viewModels[u]={},i)i.hasOwnProperty(r)&&(p.viewModels[u][r]=i[r]);i.viewModelCacheId?p.viewModels[u].viewModelCache=i.viewModel:delete p.viewModels[u].viewModelCache,ko.delaySync.pause(),p.serialization.deserialize(i.viewModel,p.viewModels[u].viewModel),ko.delaySync.resume(),e=!0,p.viewModelObservables[u](p.viewModels[u].viewModel),p.restoreUpdatedControls(i,t,!0),p.isSpaReady(!0)}finally{p.isViewModelUpdating=!1}var n=new DotvvmSpaNavigatedEventArgs(p.viewModels[u].viewModel,u,i,o);if(p.events.spaNavigated.trigger(n),p.isSpaNavigationRunning(!1),!e&&!n.isHandled)throw s(),"Invalid response from server!";a(n)})}},function(e){if(p.isPostBackStillActive(n)){var t=new DotvvmErrorEventArgs(void 0,r,u,e,-1,void 0,!0);p.events.error.trigger(t),t.handled||alert(e.responseText),p.isSpaNavigationRunning(!1),s(t)}})}else document.location.href=i}})},e.prototype.handleRedirect=function(e,t,r){var n;void 0===r&&(r=!1),null!=e.replace&&(r=e.replace),n=this.getSpaPlaceHolder()&&!this.useHistoryApiSpaNavigation&&e.url.indexOf("//")<0&&e.allowSpa?("#!"===(n="#!"+this.removeVirtualDirectoryFromUrl(e.url,t))&&(n="#!/"),this.fixSpaUrlPrefix(n)):e.url;var o=new DotvvmRedirectEventArgs(dotvvm.viewModels[t],t,n,r);return this.events.redirect.trigger(o),this.performRedirect(n,r,e.allowSpa&&this.useHistoryApiSpaNavigation)},e.prototype.performRedirect=function(n,o,i){var a=this;return new Promise(function(e,t){if(o)location.replace(n),e();else if(i)a.handleSpaNavigationCore(n).then(e,t);else{var r=a.fakeRedirectAnchor;r||((r=document.createElement("a")).style.display="none",r.setAttribute("data-dotvvm-fake-id","dotvvm_fake_redirect_anchor_87D7145D_8EA8_47BA_9941_82B75EE88CDB"),document.body.appendChild(r),a.fakeRedirectAnchor=r),r.href=n,r.click(),e()}})},e.prototype.fixSpaUrlPrefix=function(e){var t=this.getSpaPlaceHolder().attributes["data-dotvvm-spacontentplaceholder-urlprefix"];if(!t)return e;var r=t.value;return r!==document.location.pathname&&(""===r&&(r="/"),e=r+e),e},e.prototype.removeVirtualDirectoryFromUrl=function(e,t){var r="/"+this.viewModels[t].virtualDirectory;return 0==e.indexOf(r)?this.addLeadingSlash(e.substring(r.length)):e},e.prototype.addLeadingSlash=function(e){return 0