{"version":3,"sources":["dbs.partialHost.ts"],"names":["DBS","PartialHost","UpdateState","params","_this","this","url","callback","content","xhr","XMLHttpRequest","onreadystatechange","stateChange","RunQueue","PartialQueue","length","item","pop","prototype","abort","readyState","DONE","update","method","open","send","status","getResponse","responseText","RequestView","UpdateView","targetElement","stateObj","state","innerHTML","scripts","querySelectorAll","i","scriptElem","scriptInsert","document","createElement","src","appendChild","createTextNode","innerText","trim","remove","updateViewContent","window","addEventListener"],"mappings":"aAEA,IAAOA,KAAP,SAAOA,GAAI,IAAAC,EASPC,EAOI,SAAAA,EAAmBC,GAAnB,IAAAC,EAAAC,KAEIA,KAAKC,IAAMH,EAAOG,IAClBD,KAAKE,SAAWJ,EAAOI,SACvBF,KAAKG,QAAUL,EAAOK,QACtBH,KAAKI,IAAM,IAAIC,eACfL,KAAKI,IAAIE,mBAAqB,WAAM,OAAAP,EAAKQ,eAgEjD,SAAgBC,IAGZ,IADAC,aAAeA,cAAgB,GACA,IAAxBA,aAAaC,QACpB,CACI,IAAMC,EAAOF,aAAaG,MACd,MAARD,GAEAA,KA9FLf,EAAAD,EAAAC,cAAAD,EAAAC,YAAW,IAyBPC,EAAAgB,UAAAC,MAAP,WAEQd,KAAKI,IAAIW,aAAeV,eAAeW,MAEvChB,KAAKI,IAAIU,SAIVjB,EAAAgB,UAAAI,OAAP,WAEI,IAAMC,EAAyB,MAAhBlB,KAAKG,QAAkB,OAAS,MAC/CH,KAAKI,IAAIe,KAAKD,EAAQlB,KAAKC,KAAK,GAChCD,KAAKI,IAAIgB,KAAKpB,KAAKG,UAGhBN,EAAAgB,UAAAN,YAAP,WAEQP,KAAKI,IAAIW,aAAeV,eAAeW,MAA4B,MAApBhB,KAAKI,IAAIiB,aAEzB,IAAnBrB,KAAa,UAErBA,KAAKE,SAASF,OAKnBH,EAAAgB,UAAAS,YAAP,WAEI,OAAOtB,KAAKI,IAAImB,cA5CxB1B,EA8CAA,EAEgBD,EAAA4B,YAAhB,SAA4B1B,GAEV,IAAID,EAAYC,GACxBmB,UA0BMrB,EAAAY,SAAQA,EAaRZ,EAAA6B,WAAhB,SAA2BxB,EAAayB,GAEtB,IAAI7B,EAAY,CAC1BI,IAAKA,EACLC,SAAU,SAACyB,GAA0B,OAxC7C,SAA2BC,EAAoBF,GAE3CA,EAAcG,UAAYD,EAAMN,cAEhC,IADA,IAAMQ,EAAUJ,EAAcK,iBAAiB,UACtCC,EAAI,EAAGA,EAAIF,EAAQpB,OAAQsB,IACpC,CACI,IAAMC,EAAaH,EAAQE,GACrBE,EAAeC,SAASC,cAAc,UACrB,KAAnBH,EAAWI,IAEXH,EAAaG,IAAMP,EAAQE,GAAGK,IAI9BH,EAAaI,YAAYH,SAASI,eAAeT,EAAQE,GAAGQ,UAAUC,SAE1EX,EAAQE,GAAGU,SACXhB,EAAcY,YAAYJ,GAG9B1B,IAoByCmC,CAAkBhB,EAAUD,MAE/DT,UAzGd,CAAOtB,IAAAA,KAAG,IA6GViD,OAAOC,iBAAiB,OAAQlD,IAAIC,YAAYY","file":"dbs.partialHost.js","sourcesContent":["declare var PartialQueue: Function[] | null;\r\n\r\nmodule DBS.PartialHost\r\n{\r\n export interface IRequestOptions\r\n {\r\n url: string;\r\n callback?: (state: UpdateState) => void;\r\n content?: FormData;\r\n }\r\n\r\n class UpdateState\r\n {\r\n private readonly url: string;\r\n private readonly callback: ((state: UpdateState) => void) | undefined;\r\n private readonly content: FormData | undefined;\r\n private readonly xhr: XMLHttpRequest;\r\n\r\n public constructor(params: IRequestOptions)\r\n {\r\n this.url = params.url;\r\n this.callback = params.callback;\r\n this.content = params.content;\r\n this.xhr = new XMLHttpRequest();\r\n this.xhr.onreadystatechange = () => this.stateChange();\r\n }\r\n\r\n public abort()\r\n {\r\n if (this.xhr.readyState !== XMLHttpRequest.DONE)\r\n {\r\n this.xhr.abort();\r\n }\r\n }\r\n\r\n public update()\r\n {\r\n const method = this.content != null ? \"POST\" : \"GET\";\r\n this.xhr.open(method, this.url, true);\r\n this.xhr.send(this.content);\r\n }\r\n\r\n public stateChange()\r\n {\r\n if (this.xhr.readyState === XMLHttpRequest.DONE && this.xhr.status === 200)\r\n {\r\n if (typeof (this.callback) !== \"undefined\")\r\n {\r\n this.callback(this);\r\n }\r\n }\r\n }\r\n\r\n public getResponse()\r\n {\r\n return this.xhr.responseText;\r\n }\r\n }\r\n\r\n export function RequestView(params: IRequestOptions)\r\n {\r\n const state = new UpdateState(params);\r\n state.update();\r\n }\r\n\r\n function updateViewContent(state: UpdateState, targetElement: HTMLElement)\r\n {\r\n targetElement.innerHTML = state.getResponse();\r\n const scripts = targetElement.querySelectorAll(\"script\");\r\n for (let i = 0; i < scripts.length; i++)\r\n {\r\n const scriptElem = scripts[i];\r\n const scriptInsert = document.createElement(\"script\");\r\n if (scriptElem.src !== \"\")\r\n {\r\n scriptInsert.src = scripts[i].src;\r\n }\r\n else\r\n {\r\n scriptInsert.appendChild(document.createTextNode(scripts[i].innerText.trim()));\r\n }\r\n scripts[i].remove();\r\n targetElement.appendChild(scriptInsert);\r\n }\r\n\r\n RunQueue();\r\n }\r\n\r\n export function RunQueue()\r\n {\r\n PartialQueue = PartialQueue || [];\r\n while (PartialQueue.length !== 0)\r\n {\r\n const item = PartialQueue.pop();\r\n if (item != null)\r\n {\r\n item();\r\n }\r\n }\r\n }\r\n\r\n export function UpdateView(url: string, targetElement: HTMLElement)\r\n {\r\n const state = new UpdateState({\r\n url: url,\r\n callback: (stateObj: UpdateState) => updateViewContent(stateObj, targetElement)\r\n });\r\n state.update();\r\n }\r\n}\r\n\r\nwindow.addEventListener(\"load\", DBS.PartialHost.RunQueue);"]}