//!wrt $BSPEC:{"icn":null,"cpr":"Copyright (C) Windows 96 Team 2021.","dsc":"","frn":"Shell Run","ver":1,"ssy":"gui"}

const{WindowParams:WindowParams}=w96,{Theme:Theme,OpenFileDialog:OpenFileDialog,DialogCreator:DialogCreator}=w96.ui,{execCmd:execCmd,execFile:execFile}=w96.sys,{argParser:ArgParser}=w96.util;class RunApplication extends WApplication{constructor(){super()}async main(e){super.main(e);const t=this.createWindow({title:"Run",initialHeight:157,initialWidth:341,resizable:!1,bodyClass:"dlg-run-box",controlBoxStyle:"WS_CBX_CLOSE"},!0),n=t.getBodyContainer();n.innerHTML=`\n        <div class="exp">\n            <div class="icon" style="background: url(${await Theme.getIconUrl("misc/run")})"></div>\n            <div class="text">\n                Type the name of a program, folder, document, or command, and Windows 96 will open it for you.\n            </div>\n        </div>\n        <div class="pbox">\n            <div class="text">Open: </div>\n            <input type="text" class="w96-textbox cmd">\n        </div>\n        <div class="buttons">\n            <button class="w96-button ok">OK</button>\n            <button class="w96-button cancel">Cancel</button>\n            <button class="w96-button browse">Browse...</button>\n        </div>\n        `;const o=n.querySelector("input");const i=async()=>{if(""==o.value.trim())return;const e=o.value,n=["aux","con","nul","com1","com2","com3"];let i=e.trim().toLowerCase().split("/").slice(1);if(n.includes(i[0])&&n.includes(i[1]))renderBSOD("A fatal exception 0E has occured at 0028:C004D91F in VXD VFAT(01) + 0000B897.The current application will be terminated.");else{if(await FS.exists(e))return t.close(),void execFile(e);{const n=ArgParser.parse(e);try{const e=n[0].toString();n.splice(0,1),execCmd(e,n).catch((e=>{DialogCreator.alert(new String(e),{icon:"error",title:"Error",events:{onclose:()=>{t.toggleMinimize(!0),setTimeout((()=>{t.activate(),o.focus()}),10)}}})})),t.toggleMinimize()}catch(e){console.error(e)}}}};n.querySelector("button.ok").addEventListener("click",(()=>i())),n.querySelector(".w96-textbox").addEventListener("keydown",(e=>{"Enter"==e.key&&i()})),n.querySelector("button.cancel").addEventListener("click",(()=>{t.close()})),n.querySelector("button.browse").addEventListener("click",(()=>{new OpenFileDialog("c:/user/desktop",[""],(e=>{e&&(o.value=e)})).show()})),t.show(),n.querySelector(".w96-textbox").focus(),t.wndObject.style.top=innerHeight-201+"px",t.wndObject.style.left="4px"}}

return await WApplication.execAsync(new RunApplication(), this.boxedEnv.args, this);