//!wrt $BSPEC:{"icn":"mime/image-png","cpr":"Copyright (C) Windows 96 Team 2023.","dsc":"Image Viewer","frn":"Image Viewer","ver":1,"ssy":"gui"}

const{WindowParams:WindowParams}=w96,{Theme:Theme,OpenFileDialog:OpenFileDialog}=w96.ui,{getMimetypeFromPath:getMimetypeFromPath}=w96.util;class ImgViewerApplication extends WApplication{constructor(){super(),this.scale=1}async main(t){await super.main(t),null!=t[1]?await this._createWindow(t[1]):new OpenFileDialog("c:/",["png","jpg","svg"],(t=>{t?this._createWindow(t):this.terminate()})).show()}async _createWindow(t){const e=new Blob([await FS.readbin(t)],{type:getMimetypeFromPath(t)});this.blobUrl=URL.createObjectURL(e);const i=this.createWindow({initialWidth:540,initialHeight:460,title:FSUtil.fname(t)+" - Image Viewer",bodyClass:"imgviewer-app",body:`<div class="image-container" style="background-image: url(${this.blobUrl})"></div>\n            <div class="controls">\n                <button class="w96-button zoom"></button>\n                <button class="w96-button center"></button>\n                <button class="w96-button view-pixelated"></button>\n                <button class="w96-button view-quality"></button>\n                <button class="w96-button bg">BG</button>\n            </div>`,taskbar:!0,icon:await Theme.getIconUrl("mime/image-png","16x16")},!0),n=i.getBodyContainer(),a=n.querySelector(".image-container"),s=n.querySelector(".w96-button.zoom"),o=n.querySelector(".w96-button.center"),c=n.querySelector(".w96-button.bg");s.onclick=()=>{a.classList.remove("centered"),this.resetScale()},o.onclick=()=>{a.classList.add("centered"),this.resetScale()},c.onclick=async function(){const e=JSON.parse(await FS.readstr("c:/system/config/desktop.json")),i=t;e.background.type="local",e.background.bg=i,await w96.evt.shell.emit("config-modify",e)},n.querySelector(".w96-button.view-pixelated").addEventListener("click",(()=>{a.classList.add("pixelated")})),n.querySelector(".w96-button.view-quality").addEventListener("click",(()=>{a.classList.remove("pixelated")})),a.addEventListener("wheel",(t=>{if(!a.classList.contains("centered"))return;const e=t.deltaY/100*-1;this.scale+e>10||this.scale+e<1||(this.scale+=e),a.style.transform=`scale(${this.scale})`})),this.imageContainer=a,i.show(),await i.wait()}resetScale(){this.scale=1,this.imageContainer.style.transform=""}ontermination(){super.ontermination(),URL.revokeObjectURL(this.blobUrl)}}

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