5
0
mirror of https://github.com/wailsapp/wails.git synced 2025-05-06 18:59:09 +08:00
wails/v3/internal/runtime/runtime.js

2 lines
10 KiB
JavaScript

(()=>{var Se=Object.defineProperty;var b=(e,t)=>{for(var n in t)Se(e,n,{get:t[n],enumerable:!0})};var N={};b(N,{SetText:()=>Le,Text:()=>Oe});var De="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var g=(e=21)=>{let t="",n=e;for(;n--;)t+=De[Math.random()*64|0];return t};var Ee=window.location.origin+"/wails/runtime",s={Call:0,Clipboard:1,Application:2,Events:3,ContextMenu:4,Dialog:5,Window:6,Screens:7,System:8,Browser:9},z=g();function l(e,t){return function(n,o=null){return Re(e,n,t,o)}}function Re(e,t,n,o){let r=new URL(Ee);r.searchParams.append("object",e),r.searchParams.append("method",t);let i={headers:{}};return n&&(i.headers["x-wails-window-name"]=n),o&&r.searchParams.append("args",JSON.stringify(o)),i.headers["x-wails-client-id"]=z,new Promise((c,p)=>{fetch(r,i).then(a=>{if(a.ok)return a.headers.get("Content-Type")&&a.headers.get("Content-Type").indexOf("application/json")!==-1?a.json():a.text();p(Error(a.statusText))}).then(a=>c(a)).catch(a=>p(a))})}var V=l(s.Clipboard,""),ye=0,We=1;function Le(e){return V(ye,{text:e})}function Oe(){return V(We)}var P={};b(P,{Hide:()=>ze,Quit:()=>Te,Show:()=>Ne});var T=l(s.Application),Ie=0,ke=1,Ae=2;function ze(){return T(Ie)}function Ne(){return T(ke)}function Te(){return T(Ae)}var H={};b(H,{GetAll:()=>je,GetCurrent:()=>Ue,GetPrimary:()=>Fe});var B=l(s.Screens,""),Pe=0,Be=1,He=2;function je(){return B(Pe)}function Fe(){return B(Be)}function Ue(){return B(He)}var j={};b(j,{Capabilities:()=>Xe,Environment:()=>J,IsAMD64:()=>Ve,IsARM:()=>qe,IsARM64:()=>Je,IsDarkMode:()=>Ye,IsLinux:()=>Ze,IsMac:()=>Qe,IsWindows:()=>v,invoke:()=>M});var q=l(s.System,""),_e=0,Ge=1;function Ye(){return q(_e)}async function Xe(){return fetch("/wails/capabilities").json()}function J(){return q(Ge)}var M=null,d=null;J().then(e=>{d=e,M=v()?window.chrome.webview.postMessage:window.webkit.messageHandlers.external.postMessage}).catch(e=>{});function v(){return d.OS==="windows"}function Ze(){return d.OS==="linux"}function Qe(){return d.OS==="darwin"}function Ve(){return d.Arch==="amd64"}function qe(){return d.Arch==="arm"}function Je(){return d.Arch==="arm64"}var F={};b(F,{OpenURL:()=>et});var $e=l(s.Browser,""),Ke=0;function et(e){return $e(Ke,{url:e})}var tt=0,nt=1,ot=2,rt=3,it=4,st=5,lt=6,at=7,ct=8,ut=9,ft=10,dt=11,mt=12,pt=13,wt=14,gt=15,ht=16,xt=17,Ct=18,bt=19,Mt=20,vt=21,St=22,Dt=23,Et=24,Rt=25,yt=26,Wt=27,Lt=28,Ot=29,Mn=l(s.Window,"");function $(e){return{Get:t=>$(l(s.Window,t)),Center:()=>e(tt),SetTitle:t=>e(nt,{title:t}),Fullscreen:()=>e(ot),UnFullscreen:()=>e(rt),SetSize:(t,n)=>e(it,{width:t,height:n}),Size:()=>e(st),SetMaxSize:(t,n)=>e(lt,{width:t,height:n}),SetMinSize:(t,n)=>e(at,{width:t,height:n}),SetAlwaysOnTop:t=>e(ct,{alwaysOnTop:t}),SetRelativePosition:(t,n)=>e(ut,{x:t,y:n}),RelativePosition:()=>e(ft),Screen:()=>e(dt),Hide:()=>e(mt),Maximise:()=>e(pt),UnMaximise:()=>e(wt),ToggleMaximise:()=>e(gt),Minimise:()=>e(ht),UnMinimise:()=>e(xt),Restore:()=>e(Ct),Show:()=>e(bt),Close:()=>e(Mt),SetBackgroundColour:(t,n,o,r)=>e(vt,{r:t,g:n,b:o,a:r}),SetResizable:t=>e(St,{resizable:t}),Width:()=>e(Dt),Height:()=>e(Et),ZoomIn:()=>e(Rt),ZoomOut:()=>e(yt),ZoomReset:()=>e(Wt),GetZoomLevel:()=>e(Lt),SetZoomLevel:t=>e(Ot,{zoomLevel:t})}}function S(e){return $(l(s.Window,e))}function K(e){let t=new Map;for(let n in e)typeof e[n]=="function"&&t.set(n,e[n]);return t}var vn={...S("")};var R=0,kt=l(s.Call,""),D=new Map;window._wails=window._wails||{};window._wails.callCallback=U;window._wails.callErrorCallback=_;function At(){let e;do e=g();while(D.has(e));return e}function U(e,t,n){let o=ee(e);o&&o.resolve(n?JSON.parse(t):t)}function _(e,t){let n=ee(e);n&&n.reject(t)}function ee(e){let t=D.get(e);return D.delete(e),t}function y(e,t={}){return new Promise((n,o)=>{let r=At();t["call-id"]=r,D.set(r,{resolve:n,reject:o}),kt(e,t).catch(i=>{o(i),D.delete(r)})})}function te(e){return y(R,e)}function ne(e,...t){if(typeof e!="string"||e.split(".").length!==3)throw new Error("CallByName requires a string in the format 'package.struct.method'");let[n,o,r]=e.split(".");return y(R,{packageName:n,structName:o,methodName:r,args:t})}function oe(e,...t){return y(R,{methodID:e,args:t})}function re(e,t,...n){return y(R,{packageName:"wails-plugins",structName:e,methodName:t,args:n})}var zt=l(s.Events,""),Nt=0,u=new Map,G=class{constructor(t,n,o){this.eventName=t,this.maxCallbacks=o||-1,this.Callback=r=>(n(r),this.maxCallbacks===-1?!1:(this.maxCallbacks-=1,this.maxCallbacks===0))}},W=class{constructor(t,n=null){this.name=t,this.data=n}};window._wails=window._wails||{};window._wails.dispatchWailsEvent=Y;function Y(e){let t=u.get(e.name);if(t){let n=t.filter(o=>{if(o.Callback(e))return!0});n.length>0&&(t=t.filter(o=>!n.includes(o)),t.length===0?u.delete(e.name):u.set(e.name,t))}}function L(e,t,n){let o=u.get(e)||[],r=new G(e,t,n);return o.push(r),u.set(e,o),()=>Tt(r)}function ie(e,t){return L(e,t,-1)}function se(e,t){return L(e,t,1)}function Tt(e){let t=e.eventName,n=u.get(t).filter(o=>o!==e);n.length===0?u.delete(t):u.set(t,n)}function le(e,...t){[e,...t].forEach(o=>u.delete(o))}function ae(){u.clear()}function O(e){return zt(Nt,e)}var Pt=0,Bt=1,Ht=2,jt=3,Ft=4,Ut=5,_t=l(s.Dialog,""),m=new Map;function Gt(){let e;do e=g();while(m.has(e));return e}function h(e,t={}){let n=Gt();return t["dialog-id"]=n,new Promise((o,r)=>{m.set(n,{resolve:o,reject:r}),_t(e,t).catch(i=>{r(i),m.delete(n)})})}function ce(e,t,n){let o=m.get(e);o&&(n?o.resolve(JSON.parse(t)):o.resolve(t),m.delete(e))}function ue(e,t){let n=m.get(e);n&&(n.reject(t),m.delete(e))}var fe=e=>h(Pt,e),de=e=>h(Bt,e),me=e=>h(Ht,e),x=e=>h(jt,e),pe=e=>h(Ft,e),we=e=>h(Ut,e);var Yt=l(s.ContextMenu,""),Xt=0;function Zt(e,t,n,o){Yt(Xt,{id:e,x:t,y:n,data:o})}function ge(){window.addEventListener("contextmenu",Qt)}function Qt(e){let t=e.target,n=window.getComputedStyle(t).getPropertyValue("--custom-contextmenu");if(n=n?n.trim():"",n){e.preventDefault();let o=window.getComputedStyle(t).getPropertyValue("--custom-contextmenu-data");Zt(n,e.clientX,e.clientY,o);return}Vt(e)}function Vt(e){if(DEBUG)return;let t=e.target;switch(window.getComputedStyle(t).getPropertyValue("--default-contextmenu").trim()){case"show":return;case"hide":e.preventDefault();return;default:if(t.isContentEditable)return;let r=window.getSelection(),i=r.toString().length>0;if(i)for(let c=0;c<r.rangeCount;c++){let a=r.getRangeAt(c).getClientRects();for(let w=0;w<a.length;w++){let C=a[w];if(document.elementFromPoint(C.left,C.top)===t)return}}if((t.tagName==="INPUT"||t.tagName==="TEXTAREA")&&(i||!t.readOnly&&!t.disabled))return;e.preventDefault()}}function he(e,t=null){let n=new W(e,t);O(n)}function qt(){document.querySelectorAll("[wml-event]").forEach(function(t){let n=t.getAttribute("wml-event"),o=t.getAttribute("wml-confirm"),r=t.getAttribute("wml-trigger")||"click",i=function(){if(o){x({Title:"Confirm",Message:o,Detached:!1,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(function(c){c!=="No"&&he(n)});return}he(n)};t.removeEventListener(r,i),t.addEventListener(r,i)})}function xe(e){let t="",n=S(""),o=K(n);o.has(e),o.get(e)()}function Jt(){document.querySelectorAll("[wml-window]").forEach(function(t){let n=t.getAttribute("wml-window"),o=t.getAttribute("wml-confirm"),r=t.getAttribute("wml-trigger")||"click",i=function(){if(o){x({Title:"Confirm",Message:o,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(function(c){c!=="No"&&xe(n)});return}xe(n)};t.removeEventListener(r,i),t.addEventListener(r,i)})}function $t(){document.querySelectorAll("[wml-openurl]").forEach(function(t){let n=t.getAttribute("wml-openurl"),o=t.getAttribute("wml-confirm"),r=t.getAttribute("wml-trigger")||"click",i=function(){if(o){x({Title:"Confirm",Message:o,Buttons:[{Label:"Yes"},{Label:"No",IsDefault:!0}]}).then(function(c){c!=="No"&&wails.Browser.OpenURL(n)});return}wails.Browser.OpenURL(n)};t.removeEventListener(r,i),t.addEventListener(r,i)})}function X(){qt(),Jt(),$t()}var Ce=new Map;function be(e){let t=new Map;for(let[n,o]of Object.entries(e))typeof o=="object"&&o!==null?t.set(n,be(o)):t.set(n,o);return t}fetch("/wails/flags").then(e=>{e.json().then(t=>{Ce=be(t)})});function Kt(e){let t=e.split("."),n=Ce;for(let o of t)if(n instanceof Map?n=n.get(o):n=n[o],n===void 0)break;return n}function I(e){return Kt(e)}var E=!1,k=null,Me=!1,en="auto";window._wails=window._wails||{};window._wails.setResizable=Z;window._wails.endDrag=A;function tn(e){let t=window.getComputedStyle(e.target).getPropertyValue("--webkit-app-region");return t&&t.trim()!=="drag"||e.buttons!==1?!1:e.detail===1}function ve(){window.addEventListener("mousedown",on),window.addEventListener("mousemove",ln),window.addEventListener("mouseup",sn)}function Z(e){Me=e}function A(){document.body.style.cursor="default",E=!1}function nn(){return k?(M(`resize:${k}`),!0):!1}function on(e){(v()&&nn()||tn(e))&&(E=!!rn(e))}function rn(e){return!(e.offsetX>e.target.clientWidth||e.offsetY>e.target.clientHeight)}function sn(e){(e.buttons!==void 0?e.buttons:e.which)>0&&A()}function f(e=en){document.documentElement.style.cursor=e,k=e}function ln(e){E=an(e),v()&&Me&&cn(e)}function an(e){let t=e.buttons!==void 0?e.buttons:e.which;return E&&t>0?(M("drag"),!1):E}function cn(e){let t=I("system.resizeHandleHeight")||5,n=I("system.resizeHandleWidth")||5,o=I("resizeCornerExtra")||10,r=window.outerWidth-e.clientX<n,i=e.clientX<n,c=e.clientY<t,p=window.outerHeight-e.clientY<t,a=window.outerWidth-e.clientX<n+o,w=e.clientX<n+o,C=e.clientY<t+o,Q=window.outerHeight-e.clientY<t+o;!i&&!r&&!c&&!p&&k!==void 0?f():a&&Q?f("se-resize"):w&&Q?f("sw-resize"):w&&C?f("nw-resize"):C&&a?f("ne-resize"):i?f("w-resize"):c?f("n-resize"):p?f("s-resize"):r&&f("e-resize")}window.wails={...un(null),clientId:z};window._wails={dialogCallback:ce,dialogErrorCallback:ue,dispatchWailsEvent:Y,callErrorHandler:_,callResultHandler:U,endDrag:A,setResizable:Z};function un(e){return{Clipboard:{...N},Application:{...P},System:j,Screens:H,Browser:F,Call:{Call:te,ByID:oe,ByName:ne,Plugin:re},WML:{Reload:X},Dialog:{Info:fe,Warning:de,Error:me,Question:x,OpenFile:pe,SaveFile:we},Events:{Emit:O,On:ie,Once:se,OnMultiple:L,Off:le,OffAll:ae},Window:{...S("")}}}ge();ve();document.addEventListener("DOMContentLoaded",function(){X()});})();