Files
Paradise/tgui/public/helpers.min.js
AylongandGitHub ae9e36a155 [TGUI] Update dependencies & dev server fix (#30639)
* [TGUI] Update dependencies & dev server fix

* Update yarn.lock

* Update tgui.bundle.js

* Update helpers.min.js

* Fix paradise-paradise

* Rebuild html assets on build

* And here
2025-10-11 11:16:03 +00:00

1 line
8.7 KiB
JavaScript

(function(){let hasOwn=Object.prototype.hasOwnProperty;let assign=function(target){for(let i=1;i<arguments.length;i++){let source=arguments[i];for(let key in source){if(hasOwn.call(source,key)){target[key]=source[key]}}}return target};let parseMetaTag=function(name){let content=document.getElementById(name).getAttribute("content");if(content==="["+name+"]"){return null}return content};let Byond=window.Byond={};Byond.windowId=parseMetaTag("tgui:windowId");window.__windowId__=Byond.windowId;Byond.TRIDENT=function(){let groups=navigator.userAgent.match(/Trident\/(\d+).+?;/i);let majorVersion=groups&&groups[1];return majorVersion?parseInt(majorVersion,10):null}();Byond.BLINK=function(){let groups=navigator.userAgent.match(/Chrome\/(\d+)\./);let majorVersion=groups&&groups[1];return majorVersion?parseInt(majorVersion,10):null}();let isByond=(Byond.TRIDENT!==null||Byond.BLINK!==null||window.cef_to_byond)&&location.hostname==="127.0.0.1"&&location.search!=="?external";Byond.IS_BYOND=isByond;Byond.strictMode=Boolean(Number(parseMetaTag("tgui:strictMode")));Byond.__callbacks__=[];let byondJsonReviver=function(key,value){if(typeof value==="object"&&value!==null&&value.__number__){return parseFloat(value.__number__)}return value};Byond.call=function(path,params){if(!isByond){return}let url=(path||"")+"?";let i=0;if(params){for(let key in params){if(hasOwn.call(params,key)){if(i++>0){url+="&"}let value=params[key];if(value===null||value===undefined){value=""}url+=encodeURIComponent(key)+"="+encodeURIComponent(value)}}}if(window.cef_to_byond){cef_to_byond("byond://"+url);return}if(url.length<2048){location.href="byond://"+url;return}let xhr=new XMLHttpRequest;xhr.open("GET",url);xhr.send()};Byond.callAsync=function(path,params){if(!window.Promise){throw new Error("Async calls require API level of ES2015 or later.")}let index=Byond.__callbacks__.length;let promise=new window.Promise(resolve=>{Byond.__callbacks__.push(resolve)});if(Byond.TRIDENT!==null){Byond.call(path,assign({},params,{callback:"Byond.__callbacks__["+index+"]"}))}else{Byond.call(path,Object.assign({},params,{callback:"Byond.__callbacks__["+index+"]"}))}return promise};Byond.topic=function(params){return Byond.call("",params)};Byond.command=function(command){return Byond.call("winset",{command:command})};Byond.winget=function(id,propName){if(id===null){id=""}let isArray=propName instanceof Array;let isSpecific=propName&&propName!=="*"&&!isArray;let promise=Byond.callAsync("winget",{id:id,property:isArray&&propName.join(",")||propName||"*"});if(isSpecific){promise=promise.then(props=>props[propName])}return promise};Byond.winset=function(id,propName,propValue){if(id===null){id=""}else if(typeof id==="object"){return Byond.call("winset",id)}let props={};if(typeof propName==="string"){props[propName]=propValue}else{if(Byond.TRIDENT!==null){assign(props,propName)}else{Object.assign(props,propName)}}props.id=id;return Byond.call("winset",props)};Byond.parseJson=function(json){try{return JSON.parse(json,byondJsonReviver)}catch(err){throw new Error("JSON parsing error: "+(err&&err.message))}};Byond.sendMessage=function(type,payload){let message=typeof type==="string"?{type:type,payload:payload}:type;if(message.payload!==null&&message.payload!==undefined){message.payload=JSON.stringify(message.payload)}if(Byond.TRIDENT!==null){assign(message,{tgui:1,window_id:Byond.windowId})}else{Object.assign(message,{tgui:1,window_id:Byond.windowId})}Byond.topic(message)};Byond.injectMessage=function(type,payload){window.update(JSON.stringify({type:type,payload:payload}))};Byond.subscribe=function(listener){window.update.flushQueue(listener);window.update.listeners.push(listener)};Byond.subscribeTo=function(type,listener){let _listener=function(_type,payload){if(_type===type){listener(payload)}};window.update.flushQueue(_listener);window.update.listeners.push(_listener)};let RETRY_ATTEMPTS=5;let RETRY_WAIT_INITIAL=500;let RETRY_WAIT_INCREMENT=500;let loadedAssetByUrl={};let isStyleSheetLoaded=function(node,url){let styleSheet=node.sheet;if(styleSheet){return styleSheet.rules.length>0}return false};let injectNode=function(node){if(!document.body){setTimeout(()=>{injectNode(node)});return}let refs=document.body.childNodes;let ref=refs[refs.length-1];ref.parentNode.insertBefore(node,ref.nextSibling)};let loadAsset=function(options){let url=options.url;let type=options.type;let sync=options.sync;let attempt=options.attempt||0;if(loadedAssetByUrl[url]){return}loadedAssetByUrl[url]=options;let retry=function(){if(attempt>=RETRY_ATTEMPTS){let errorMessage="Error: Failed to load the asset "+"'"+url+"' after several attempts.";if(type==="css"){errorMessage+=+"\nStylesheet was either not found, "+"or you're trying to load an empty stylesheet "+"that has no CSS rules in it."}throw new Error(errorMessage)}setTimeout(()=>{loadedAssetByUrl[url]=null;options.attempt+=1;loadAsset(options)},RETRY_WAIT_INITIAL+attempt*RETRY_WAIT_INCREMENT)};if(type==="js"){var node=document.createElement("script");node.type="text/javascript";node.crossOrigin="anonymous";node.src=url;if(sync){node.defer=true}else{node.async=true}node.onerror=function(){node.onerror=null;node.parentNode.removeChild(node);node=null;retry()};injectNode(node);return}if(type==="css"){var node=document.createElement("link");node.type="text/css";node.rel="stylesheet";node.crossOrigin="anonymous";node.href=url;if(!sync){node.media="only x"}let removeNodeAndRetry=function(){node.parentNode.removeChild(node);node=null;retry()};node.onerror=function(){node.onerror=null;removeNodeAndRetry()};node.onload=function(){node.onload=null;if(isStyleSheetLoaded(node,url)){node.media="all";return}removeNodeAndRetry()};injectNode(node);return}};Byond.loadJs=function(url,sync){loadAsset({url:url,sync:sync,type:"js"})};Byond.loadCss=function(url,sync){loadAsset({url:url,sync:sync,type:"css"})};Byond.saveBlob=function(blob,filename,ext){if(window.navigator.msSaveBlob){window.navigator.msSaveBlob(blob,filename)}else if(window.showSaveFilePicker){let accept={};accept[blob.type]=[ext];let opts={suggestedName:filename,types:[{description:"SS13 file",accept:accept}]};try{window.showSaveFilePicker(opts).then(fileHandle=>{fileHandle.createWritable().then(writeableFileHandle=>{writeableFileHandle.write(blob).then(()=>{writeableFileHandle.close()}).catch(()=>{})}).catch(()=>{})}).catch(()=>{})}catch(e){}}};Byond.iconRefMap={}})();window.onerror=function(msg,url,line,col,error){window.onerror.errorCount=(window.onerror.errorCount||0)+1;let stack=error&&error.stack;if(!stack){stack=msg+"\n at "+url+":"+line;if(col){stack+=":"+col}}stack=window.__augmentStack__(stack,error);if(Byond.strictMode){let errorRoot=document.getElementById("FatalError");let errorStack=document.getElementById("FatalError__stack");if(errorRoot){errorRoot.className="FatalError FatalError--visible";if(window.onerror.__stack__){window.onerror.__stack__+="\n\n"+stack}else{window.onerror.__stack__=stack}let textProp="textContent";errorStack[textProp]=window.onerror.__stack__}let setFatalErrorGeometry=function(){Byond.winset(Byond.windowId,{titlebar:true,"is-visible":true,"can-resize":true})};setFatalErrorGeometry();setInterval(setFatalErrorGeometry,1e3)}if(Byond.strictMode){Byond.sendMessage({type:"log",fatal:1,message:stack})}else if(window.onerror.errorCount<=1){stack+="\nWindow is in non-strict mode, future errors are suppressed.";Byond.sendMessage({type:"log",message:stack})}if(Byond.strictMode){window.update=function(){};window.update.queue=[]}return true};window.onunhandledrejection=function(e){let msg="UnhandledRejection";if(e.reason){msg+=": "+(e.reason.message||e.reason.description||e.reason);if(e.reason.stack){e.reason.stack="UnhandledRejection: "+e.reason.stack}}window.onerror(msg,null,null,null,e.reason)};window.__augmentStack__=function(stack,error){return stack+"\nUser Agent: "+navigator.userAgent};window.update=function(rawMessage){if(window.update.queueActive){window.update.queue.push(rawMessage);return}let message=Byond.parseJson(rawMessage);let listeners=window.update.listeners;for(let i=0;i<listeners.length;i++){listeners[i](message.type,message.payload)}};window.update.listeners=[];window.update.queue=[];window.update.queueActive=true;window.update.flushQueue=function(listener){if(window.update.queueActive){window.update.queueActive=false;if(window.setTimeout){window.setTimeout(()=>{window.update.queue=[]},0)}}let queue=window.update.queue;for(let i=0;i<queue.length;i++){let message=Byond.parseJson(queue[i]);listener(message.type,message.payload)}};window.replaceHtml=function(inline_html){let children=document.body.childNodes;for(let i=0;i<children.length;i++){if(children[i].nodeValue==" tgui:inline-html-start "){while(children[i].nodeValue!=" tgui:inline-html-end "){children[i].remove()}children[i].remove()}}document.body.insertAdjacentHTML("afterbegin","\x3c!-- tgui:inline-html-start --\x3e"+inline_html+"\x3c!-- tgui:inline-html-end --\x3e")};