@balancy/bridge 1.2.6 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  // Balancy WebView Bridge
2
2
  // Generated by esbuild
3
3
 
4
- "use strict";var balancy=(()=>{var u={None:0,GetProfile:1,SetProfile:2,GetDocument:3,GetLocalization:10,GetImageUrl:11,GetInfo:12,CanBuyGroupOffer:13,GetFileLocation:14,GetPrefabContent:15,GetBattlePassProgress:20,GetCustomEventInfo:21,SetCustomEventInfo:22,GetTasksInfoForTheEvent:23,ActivateTasksForTheEvent:24,DeactivateTasksForTheEvent:25,ClaimTaskReward:26,GetCustomDocumentInfo:27,SetCustomDocumentInfo:28,StopEventManually:29,GetInventoryItemsCount:30,AddInventoryItems:31,RemoveInventoryItems:32,WatchRewardedAd:40,RestoreFailedTask:41,GetRewardedAdsWatched:42,HaveEnoughResources:43,BuyOffer:101,BuyGroupOffer:102,BuyShopSlot:103,BattlePassClaim:104,CloseWindow:200,BalancyIsReady:201,BatchRequest:399,CustomMessage:1e3},B={Currency:1,Item:2,Event:4},be={Hard:0,Soft:1,Ads:2},he={None:0,InProgress:1,Completed:2,Claimed:3,Failed:4},T={None:0,OfferPrice:1,OfferGroupPrice:2,TimeLeft:3,OwnerLocalizedKey:4,OwnerCustom:5,CustomPrice:9,Custom:10},O={OnNewEventActivated:100,OnEventDeactivated:101,OnNewOfferActivated:102,OnOfferDeactivated:103,OnNewOfferGroupActivated:104,OnOfferGroupDeactivated:105,OnShopSlotWasPurchased:120,OnOfferWasPurchased:121,OnOfferGroupWasPurchased:122},ve={Available:0,Unavailable:1,Cooldown:2,Locked:3},we={Default:0,ChainDeals:1,OnePurchase:2,OnceForEach:3},P={Plain:0,PlainSpaced:1,WithPrefix:2,WithPrefixSpaced:3,Shortened:4,ShortenedWithPrefix:5},C={Localized:0,Colon:1,LocalizedCompact:2},y={Auto:0,DaysHours:1,HoursMinutes:2,HoursMinutesSeconds:3,MinutesSeconds:4,Full:5};var D=class{constructor(){this.pendingBatch=new Map;this.batchTimeout=null;this.BATCH_DELAY=16}addToBatch(e,t,r,o,a,i,c,s){let l=e.toString(),d={type:"request",sender:t,id:l,action:r,params:o};return this.pendingBatch.set(l,{requestData:d,resolve:a,reject:i}),this.scheduleBatch(c,s),l}scheduleBatch(e,t){this.batchTimeout||(this.batchTimeout=setTimeout(()=>{this.sendBatch(e,t)},this.BATCH_DELAY))}sendBatch(e,t){if(this.pendingBatch.size===0){this.batchTimeout=null;return}let r=[];this.pendingBatch.forEach((a,i)=>{r.push(a.requestData),e[i]={resolve:a.resolve,reject:a.reject,timestamp:Date.now(),message:a.requestData}}),console.log(`[BatchManager] Sending batch with ${this.pendingBatch.size} requests`),t(JSON.stringify({type:"batch",requests:r})),this.pendingBatch.clear(),this.batchTimeout=null}getStats(){return{pendingCount:this.pendingBatch.size,isScheduled:this.batchTimeout!==null}}};function Ee(){return function(e){if(window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.BalancyWebView)return typeof e!="string"&&(e=JSON.stringify(e)),window.webkit.messageHandlers.BalancyWebView.postMessage(e),!0;if(typeof window.SendMessage=="function"){typeof e!="string"&&(e=JSON.stringify(e));try{return window.SendMessage("BalancyView","OnWebGLMessageReceived",e),!0}catch(t){return console.error("[postMessage] \u274C Error calling SendMessage:",t),!1}}return window.BalancyWebView&&window.BalancyWebView.sendMessageToUnity?(typeof e!="string"&&(e=JSON.stringify(e)),window.BalancyWebView.sendMessageToUnity(e),!0):window.parent&&window.parent!==window&&window.parent.postMessage?(window.parent.postMessage(e,"*"),!0):(console.warn("BalancyWebView: No message handler available for platform"),window.BalancyWebView&&window.BalancyWebView.log&&window.BalancyWebView.log("warn","No message handler available for platform"),!1)}}function Pe(n){return function(t){window.BalancyWebView&&window.BalancyWebView.log?window.BalancyWebView.log("info","Received message from Unity: "+t.substring(0,100)+"..."):console.log("BalancyWebView: Received message from Unity:",t.substring(0,100)+"..."),n(t)}}function Te(n,e,t){return function(o){try{let a=JSON.parse(o);if(a.type==="response"){let i=n[a.id];i&&(a.error?i.reject(new Error(a.error+" : "+JSON.stringify(i.message))):i.resolve(a.result),delete n[a.id])}else if(a.type==="batch-response")a.responses&&Array.isArray(a.responses)&&a.responses.forEach(i=>{let c=n[i.id];c&&(i.error?c.reject(new Error(i.error+" : "+JSON.stringify(c.message))):c.resolve(i.result),delete n[i.id])});else if(a.type==="notification"){let i=a.data?JSON.parse(a.data):null;e(i)}else a.type==="custom-message"&&t(a.data)}catch(a){console.error("Error handling response:",a)}}}function Me(n,e,t,r){return function(a,i,c={}){return new Promise((s,l)=>{let d=n().toString();e();let m={type:"request",sender:a,id:d,action:i,params:c};t[d]={resolve:s,reject:l,timestamp:Date.now(),message:m},r(JSON.stringify(m))})}}function Ie(n,e,t,r,o,a){return function(c,s,l={}){return[u.BuyOffer,u.BuyGroupOffer,u.BuyShopSlot,u.BattlePassClaim,u.CloseWindow,u.CustomMessage,u.BalancyIsReady,u.StopEventManually,u.WatchRewardedAd].includes(s)?e(c,s,l):new Promise((m,p)=>{let g=n.addToBatch(t(),c,s,l,m,p,o,a);r()})}}var $=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{id:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}};var N=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{key:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}getCached(e){return this.cache[e]??null}};var G=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{id:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}};var F=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{id:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}};function Se(n){return{getProfileValue(e,t){return n(null,u.GetProfile,{profile:e,path:t})},getSystemProfileValue(e){return n(null,u.GetProfile,{profile:"UnnyProfile",path:e})},getDocumentValue(e,t){return n(null,u.GetDocument,{id:e,depth:t}).then(r=>JSON.parse(r))}}}function Le(n,e,t){return{async getActiveOffers(r=3){let o=await e("SmartInfo.GameOffers");if(!Array.isArray(o)||o.length===0)return o||[];let a=[];for(let l of o)a.includes(l.unnyIdGameOffer)||a.push(l.unnyIdGameOffer);let i=a.map(l=>t(l,r)),c=await Promise.all(i),s={};for(let l=0;l<a.length;l++)s[a[l]]=c[l];for(let l of o){let d=l?.unnyIdGameOffer;d!=null&&s.hasOwnProperty(d)&&(l.gameOffer=s[d])}return o},async getActiveGroupOffers(r=3){let o=await e("SmartInfo.GameOfferGroups");if(!Array.isArray(o)||o.length===0)return o||[];let a=[];for(let l of o)a.includes(l.unnyIdGameOfferGroup)||a.push(l.unnyIdGameOfferGroup);let i=a.map(l=>t(l,r)),c=await Promise.all(i),s={};for(let l=0;l<a.length;l++)s[a[l]]=c[l];for(let l of o){let d=l?.unnyIdGameOfferGroup;d!=null&&s.hasOwnProperty(d)&&(l.gameOfferGroup=s[d])}return o},canBuyGroupOffer(r){return n(null,u.CanBuyGroupOffer,{instanceId:window.balancyViewOwner.instanceId,index:r})},buyGroupOffer(r,o={}){return!window.balancyViewOwner||!window.balancyViewOwner.instanceId?Promise.resolve(null):(o||(o={}),o.instanceId=window.balancyViewOwner.instanceId,o.index=r,n("buyGroupOfferButton",u.BuyGroupOffer,o))},buyOffer(r={}){return!window.balancyViewOwner||!window.balancyViewOwner.instanceId?Promise.resolve(null):(r||(r={}),r.instanceId=window.balancyViewOwner.instanceId,n("buyOfferButton",u.BuyOffer,r))},buyShopSlot(r,o={}){return o||(o={}),r?.unnyIdSlot&&(o.slotId=r.unnyIdSlot),n("buyShopSlotButton",u.BuyShopSlot,o)},getRewardedAdsWatchedForStoreItem(r){return r?.unnyId?n(null,u.GetRewardedAdsWatched,{id:r.unnyId}):Promise.resolve(0)},haveEnoughResources(r){return r?.unnyId?n(null,u.HaveEnoughResources,{id:r.unnyId}):Promise.resolve(!1)}}}function Ae(n){return{getTasks(){return n(null,u.GetTasksInfoForTheEvent,{id:window.balancyViewOwner.unnyIdGameEvent}).then(e=>JSON.parse(e))},activateTasks(e){return n(null,u.ActivateTasksForTheEvent,{id:window.balancyViewOwner.unnyIdGameEvent,tasks:e}).then(t=>JSON.parse(t))},deactivateTasks(e){return n(null,u.DeactivateTasksForTheEvent,{id:window.balancyViewOwner.unnyIdGameEvent,tasks:e})},restoreFailedTask(e){return n(null,u.RestoreFailedTask,{id:e?e.unnyIdTask:""})},claimTaskReward(e){return n(null,u.ClaimTaskReward,{id:e}).then(t=>t&&t==="ok")}}}function Oe(n){return{getInventoryItemsCount(e){return n(null,u.GetInventoryItemsCount,{id:e})},addInventoryItems(e,t){return n(null,u.AddInventoryItems,{id:e,count:t})},removeInventoryItems(e,t){return n(null,u.RemoveInventoryItems,{id:e,count:t})}}}function Ce(n,e){return{getBattlePassConfig(){return e(window.balancyViewOwner.unnyIdGameEvent,3).then(t=>t.config)},getBattlePassProgress(){return n(null,u.GetBattlePassProgress,{id:window.balancyViewOwner.unnyIdGameEvent}).then(t=>JSON.parse(t))},claimBattlePassReward(t,r){return n(null,u.BattlePassClaim,{id:window.balancyViewOwner.unnyIdGameEvent,lineId:t,index:r}).then(o=>o&&o==="ok")}}}function xe(n){return{getCustomEventInfo(){return n(null,u.GetCustomEventInfo,{id:window.balancyViewOwner.instanceId}).then(e=>e?JSON.parse(e):{})},setCustomEventInfo(e){let t=JSON.stringify(e);return n(null,u.SetCustomEventInfo,{id:window.balancyViewOwner.instanceId,data:t})},getCustomDocumentInfo(e){return n(null,u.GetCustomDocumentInfo,{id:e}).then(t=>t?JSON.parse(t):{})},setCustomDocumentInfo(e,t){let r=JSON.stringify(t);return n(null,u.SetCustomDocumentInfo,{id:e,data:r})},stopEventManually(e=-1){return n(null,u.StopEventManually,{id:window.balancyViewOwner.unnyIdGameEvent,cooldown:e}).then(t=>t)},watchRewardedAd(e){return n(null,u.WatchRewardedAd,{}).then(t=>{e(!!t.success)})},getProductInfo(e){return n("offerGroupPrice",u.GetInfo,{type:T.CustomPrice,productId:e})},closeView(e){return n(null,u.CloseWindow,{id:e})},sendCustomMessage(e,t){return n(e,u.CustomMessage,t)}}}function Be(n){return{async setLocalizedText(e,t){if(t){let r=await n(t);e.textContent=r}e.classList.add("balancy-text-prepared")},async localizeAllElements(e=document){let t=e.querySelectorAll('[data-text-type="localized"]'),r=Array.from(t).map(async o=>{if(o.classList.contains("balancy-text-prepared"))return;let a=o.getAttribute("data-localization-key");await this.setLocalizedText(o,a)});await Promise.all(r),e===document&&document.dispatchEvent(new CustomEvent("balancy-localization-complete"))}}}function Re(n){async function e(t,r){t.classList.add("balancy-image-prepared");let o=await n(r);o&&(t.tagName==="IMG"?t.src=o:t.hasAttribute("data-use-nineslice")&&t.getAttribute("data-use-nineslice")==="false"?t.style.backgroundImage=`url('${o}')`:t.style.borderImageSource=`url('${o}')`)}return{setImage(t,r){r?.id&&(t.setAttribute("data-image-id",r.id),e(t,r.id))},async prepareAllSprites(t=document){let r=t.querySelectorAll("[data-image-id]"),o=Array.from(r).map(async a=>{if(a.classList.contains("balancy-image-prepared"))return;let i=a.getAttribute("data-image-id");i&&await e(a,i)});await Promise.all(o),t===document&&document.dispatchEvent(new CustomEvent("balancy-images-complete"))}}}function ke(n,e){return{async prepareAllFonts(t=document){let r=t.querySelectorAll("[data-font-id]"),o=Array.from(r).map(async a=>{if(a.classList.contains("balancy-font-prepared"))return;let i=a.getAttribute("data-font-name"),c=a.getAttribute("data-font-id");if(i&&c){let s=await n(c);e(i,s)}});await Promise.all(o),t===document&&document.dispatchEvent(new CustomEvent("balancy-fonts-complete"))}}}function He(n,e,t){function r(i){let c=i.getAttribute("data-button-action");if(!c)return;switch(parseInt(c,10)){case u.BuyGroupOffer:let l=parseInt(i.getAttribute("data-index")||"0",10)||0;e(l).then(d=>{i.disabled=!d});break}}async function o(i){let c=i.getAttribute("data-button-audio-id");if(!c)return;let s=await t(c);if(!s)return;let l=document.createElement("audio");l.autoplay=!0,l.src=s,l.addEventListener("ended",()=>{l.remove()}),l.addEventListener("error",()=>{l.remove()}),document.body.appendChild(l)}function a(i,c){let s=c?.action??i.getAttribute("data-button-action");if(!s){console.warn("Button missing data-button-action attribute",i);return}let l=parseInt(s,10);if(isNaN(l)||l===u.None){console.warn("Invalid action ID:",s,i);return}let d=i.id||"unknown-button",m=i.getAttribute("data-button-params"),p={};if(m&&m.trim()!=="")try{p=JSON.parse(m)}catch(b){console.error("Error parsing button params JSON:",b,"Raw params:",m),i.dispatchEvent(new CustomEvent("balancyButtonError",{detail:{actionId:l,error:"Invalid JSON in data-button-params",paramsAttr:m}})),p={}}switch(l){case u.BuyOffer:p.instanceId=c?.instanceId??window.balancyViewOwner.instanceId;break;case u.BuyGroupOffer:p.instanceId=window.balancyViewOwner.instanceId,p.index=parseInt(i.getAttribute("data-index")||"0",10)||0;break;case u.BuyShopSlot:p.slotId=i.getAttribute("data-index")||0;break}let g=i.disabled;i.disabled=!0,i.classList.add("balancy-button-processing"),n(d,l,p).then(b=>{console.log(`Button action ${l} executed successfully`,b),i.dispatchEvent(new CustomEvent("balancyButtonResponse",{detail:{actionId:l,result:b,success:!0,senderId:d}}))}).catch(b=>{console.error(`Error executing button action ${l}:`,b),i.dispatchEvent(new CustomEvent("balancyButtonResponse",{detail:{actionId:l,error:b.message,success:!1,senderId:d}}))}).finally(()=>{i.disabled=g,i.classList.remove("balancy-button-processing")})}return{balancyButtonClicked:a,prepareAllButtons(i=document){let c=i.querySelectorAll("[data-button-action]"),s=i.querySelectorAll("[data-button-audio-id]"),l=[...Array.from(c),...Array.from(s)],d=0;l.forEach(m=>{m.classList.contains("balancy-button-prepared")||(m._balancyClickHandler&&m.removeEventListener("click",m._balancyClickHandler),m._balancyClickHandler=function(p){p.preventDefault(),p.stopPropagation(),m.hasAttribute("data-button-action")&&a(m),m.hasAttribute("data-button-audio-id")&&o(m)},r(m),m.addEventListener("click",m._balancyClickHandler),m.classList.add("balancy-button-prepared"),d++)}),i===document&&document.dispatchEvent(new CustomEvent("balancy-buttons-complete",{detail:{preparedCount:d,totalFound:l.length}}))}}}function De(n,e,t,r,o){return{prepareAllTexts(a=document){let i=a.querySelectorAll('[data-text-type="dynamic"]'),c=[];i.forEach(s=>{if(s.classList.contains("balancy-text-prepared"))return;s.classList.add("balancy-text-prepared");let l=s.id||"unknown-text",d=parseInt(s.getAttribute("data-info-type")||"0",10)||0,m=parseInt(s.getAttribute("data-index")||"0",10)||0,p=s.getAttribute("data-custom")||"",g=s.getAttribute("data-product-id")||"",b="";if(d===T.OfferPrice?(g=window.balancyViewOwner.productId,d=T.CustomPrice):d===T.OfferGroupPrice&&(b=window.balancyViewOwner.instanceId),d===T.TimeLeft){let w=function(){E.textContent=t(r())};var L=w;let E=s;setInterval(w,1e3),w();return}if(d===T.OwnerCustom){let E=s.getAttribute("data-text-format");E&&e(E,window.balancyViewOwner).then(w=>{s.textContent=w});return}if(d===T.OwnerLocalizedKey){let E=s.getAttribute("data-text-format");E&&e(E,window.balancyViewOwner).then(w=>o(s,w));return}let H=n(l,u.GetInfo,{type:d,productId:g,index:m,instanceId:b,custom:p}).then(E=>{try{let w=s.getAttribute("data-text-format");w&&e(w,E).then(ye=>{s.textContent=ye})}catch(w){console.error("Error formatting text:",w,"Result:",E)}});c.push(H)}),Promise.all(c).then(()=>{a===document&&document.dispatchEvent(new CustomEvent("balancy-text-complete"))})}}}function _(n){return n>=1e9?`${parseFloat((n/1e9).toFixed(1))}B`:n>=1e6?`${parseFloat((n/1e6).toFixed(1))}M`:n>=1e3?`${parseFloat((n/1e3).toFixed(1))}k`:n.toString()}function j(n){if(n&&!n.hasOwnProperty("unnyIdComponents"))return console.error("Item has no components, probably you need to increase depth when fetching item data: ",n),!1;let e=n?.components;if(!e)return!1;for(let t of e)if(t.$type==="SmartObjects.ItemComponent.Decay")return!0;return!1}function Fe(n){let e=n?.components;if(!e)return null;for(let t of e)if(t.$type==="SmartObjects.ItemComponent.Bundle")return t.reward;return null}function je(n,e=!1){let t=j(n.item),r=n.item.type===B.Currency,o;if(t){let a=n.count,i=Math.floor(a/3600),c=Math.floor(a%3600/60);o=`${i>0?`${i}h `:""}${c>0?`${c}m`:""}`}else{let a=e?_(n.count):n.count.toString();o=r?`${n.count}`:`x${a}`}return{text:o,isDuration:t,isCurrency:r}}function J(n){if(n>3600*24*365)return"oo";if(window.customFormatTime)return window.customFormatTime(n);let e=Math.floor(n/86400),t=Math.floor(n%86400/3600),r=Math.floor(n%3600/60),o=n%60;return e>0?t>0?`${e}d ${t}h`:`${e}d`:`${t.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}function ze(n,...e){return n.replace(/{(\d+)}/g,(t,r)=>e[r]!==void 0?e[r]:t)}function K(){let e=Math.floor(Date.now()/1e3)-window.balancySettings.launchTime;return window.balancySettings.secondsLeft-e}var Ue=["BALANCY/TIME_DAY","BALANCY/TIME_HOUR","BALANCY/TIME_MINUTE","BALANCY/TIME_SECOND","BALANCY/NUMBER_THOUSAND","BALANCY/NUMBER_MILLION","BALANCY/NUMBER_BILLION"],f={};function qe(n){f={day:n("BALANCY/TIME_DAY")||"d",hour:n("BALANCY/TIME_HOUR")||"h",minute:n("BALANCY/TIME_MINUTE")||"m",second:n("BALANCY/TIME_SECOND")||"s",thousand:n("BALANCY/NUMBER_THOUSAND")||"k",million:n("BALANCY/NUMBER_MILLION")||"M",billion:n("BALANCY/NUMBER_BILLION")||"B"}}function $e(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g," ")}function Ne(n){return n>=1e9?`${parseFloat((n/1e9).toFixed(1))}${f.billion||"B"}`:n>=1e6?`${parseFloat((n/1e6).toFixed(1))}${f.million||"M"}`:n>=1e3?`${parseFloat((n/1e3).toFixed(1))}${f.thousand||"k"}`:n.toString()}function ft(n,e){switch(e){case P.Plain:return n.toString();case P.PlainSpaced:return $e(n);case P.WithPrefix:return`x${n}`;case P.WithPrefixSpaced:return`x${$e(n)}`;case P.Shortened:return Ne(n);case P.ShortenedWithPrefix:return`x${Ne(n)}`;default:return n.toString()}}function gt(n,e){let t=Math.floor(n/86400),r=Math.floor(n%86400/3600),o=Math.floor(n%3600/60),a=n%60;switch(e){case y.DaysHours:return t>0?`${t}:${r.toString().padStart(2,"0")}`:`${r}:00`;case y.HoursMinutes:return`${r}:${o.toString().padStart(2,"0")}`;case y.HoursMinutesSeconds:return`${r}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`;case y.MinutesSeconds:return`${o}:${a.toString().padStart(2,"0")}`;case y.Full:return t>0?`${t}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`:`${r}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`;case y.Auto:default:return t>0?`${t}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`${r}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`}}function Ge(n,e,t){let r=Math.floor(n/86400),o=Math.floor(n%86400/3600),a=Math.floor(n%3600/60),i=n%60,c=[],s=(l,d)=>{t?l>0&&c.push(`${l}${d}`):c.push(`${l}${d}`)};switch(e){case y.DaysHours:s(r,f.day||"d"),s(o,f.hour||"h");break;case y.HoursMinutes:s(o,f.hour||"h"),s(a,f.minute||"m");break;case y.HoursMinutesSeconds:s(o,f.hour||"h"),s(a,f.minute||"m"),s(i,f.second||"s");break;case y.MinutesSeconds:s(a,f.minute||"m"),s(i,f.second||"s");break;case y.Full:s(r,f.day||"d"),s(o,f.hour||"h"),s(a,f.minute||"m"),s(i,f.second||"s");break;case y.Auto:default:r>0?(s(r,f.day||"d"),s(o,f.hour||"h")):o>0?(s(o,f.hour||"h"),s(a,f.minute||"m")):(s(a,f.minute||"m"),(!t||i>0)&&s(i,f.second||"s"));break}return c.join(" ")}function Ve(n,e={}){let t=e.currencyFormat??P.Plain,r=e.regularItemFormat??P.WithPrefix,o=e.timeFormat??C.LocalizedCompact,a=e.timePrecision??y.Auto,i=j(n.item),c=n.item.type===B.Currency,s;if(i){let l=n.count;o===C.Colon?s=gt(l,a):o===C.Localized?s=Ge(l,a,!1):s=Ge(l,a,!0)}else{let l=c?t:r;s=ft(n.count,l)}return{text:s,isDuration:i,isCurrency:c}}function We(n){function e(r){return r.charAt(0).toUpperCase()+r.slice(1)}async function t(r,o){let a=o.split("."),i=r;for(let c=0;c<a.length;c++){let s=a[c].trim();if(i&&i[s]!==void 0&&i[s]!==null)i=i[s];else{let l="unnyId"+e(s);if(i&&i[l]!==void 0)try{let d=await n(i[l],0);if(c+1<a.length){let m=a.slice(c+1).join(".");return await t(d,m)}else return d}catch(d){console.error(`Failed to get document for ID ${i[l]}:`,d);return}return}}return i}return async function(o,a){if(!o.includes("{")||!o.includes("}"))return o;let i=[],c=/\{([^}]+)\}/g,s;for(;(s=c.exec(o))!==null;)i.push({fullMatch:s[0],path:s[1].trim(),index:s.index});if(i.length===0)return o;let l=i.map(async p=>{let g=await t(a,p.path);return{placeholder:p.fullMatch,value:g!==void 0?String(g):p.fullMatch}}),d=await Promise.all(l),m=o;for(let p of d)m=m.replace(p.placeholder,p.value);return m}}function X(n,e){let t=document.createElement("style");t.type="text/css",t.textContent=`
4
+ "use strict";var balancy=(()=>{var u={None:0,GetProfile:1,SetProfile:2,GetDocument:3,GetLocalization:10,GetImageUrl:11,GetInfo:12,CanBuyGroupOffer:13,GetFileLocation:14,GetPrefabContent:15,GetBattlePassProgress:20,GetCustomEventInfo:21,SetCustomEventInfo:22,GetTasksInfoForTheEvent:23,ActivateTasksForTheEvent:24,DeactivateTasksForTheEvent:25,ClaimTaskReward:26,GetCustomDocumentInfo:27,SetCustomDocumentInfo:28,StopEventManually:29,GetInventoryItemsCount:30,AddInventoryItems:31,RemoveInventoryItems:32,WatchRewardedAd:40,RestoreFailedTask:41,GetRewardedAdsWatched:42,HaveEnoughResources:43,BuyOffer:101,BuyGroupOffer:102,BuyShopSlot:103,BattlePassClaim:104,CloseWindow:200,BalancyIsReady:201,BatchRequest:399,CustomMessage:1e3},B={Currency:1,Item:2,Event:4},be={Hard:0,Soft:1,Ads:2},he={None:0,InProgress:1,Completed:2,Claimed:3,Failed:4},T={None:0,OfferPrice:1,OfferGroupPrice:2,TimeLeft:3,OwnerLocalizedKey:4,OwnerCustom:5,CustomPrice:9,Custom:10},O={OnNewEventActivated:100,OnEventDeactivated:101,OnNewOfferActivated:102,OnOfferDeactivated:103,OnNewOfferGroupActivated:104,OnOfferGroupDeactivated:105,OnShopSlotWasPurchased:120,OnOfferWasPurchased:121,OnOfferGroupWasPurchased:122},ve={Available:0,Unavailable:1,Cooldown:2,Locked:3},we={Default:0,ChainDeals:1,OnePurchase:2,OnceForEach:3},P={Plain:0,PlainSpaced:1,WithPrefix:2,WithPrefixSpaced:3,Shortened:4,ShortenedWithPrefix:5},C={Localized:0,Colon:1,LocalizedCompact:2},y={Auto:0,DaysHours:1,HoursMinutes:2,HoursMinutesSeconds:3,MinutesSeconds:4,Full:5};var D=class{constructor(){this.pendingBatch=new Map;this.batchTimeout=null;this.BATCH_DELAY=16}addToBatch(e,t,r,o,a,i,c,s){let l=e.toString(),d={type:"request",sender:t,id:l,action:r,params:o};return this.pendingBatch.set(l,{requestData:d,resolve:a,reject:i}),this.scheduleBatch(c,s),l}scheduleBatch(e,t){this.batchTimeout||(this.batchTimeout=setTimeout(()=>{this.sendBatch(e,t)},this.BATCH_DELAY))}sendBatch(e,t){if(this.pendingBatch.size===0){this.batchTimeout=null;return}let r=[];this.pendingBatch.forEach((a,i)=>{r.push(a.requestData),e[i]={resolve:a.resolve,reject:a.reject,timestamp:Date.now(),message:a.requestData}}),console.log(`[BatchManager] Sending batch with ${this.pendingBatch.size} requests`),t(JSON.stringify({type:"batch",requests:r})),this.pendingBatch.clear(),this.batchTimeout=null}getStats(){return{pendingCount:this.pendingBatch.size,isScheduled:this.batchTimeout!==null}}};function Ee(){return function(e){if(window.webkit&&window.webkit.messageHandlers&&window.webkit.messageHandlers.BalancyWebView)return typeof e!="string"&&(e=JSON.stringify(e)),window.webkit.messageHandlers.BalancyWebView.postMessage(e),!0;if(typeof window.SendMessage=="function"){typeof e!="string"&&(e=JSON.stringify(e));try{return window.SendMessage("BalancyView","OnWebGLMessageReceived",e),!0}catch(t){return console.error("[postMessage] \u274C Error calling SendMessage:",t),!1}}return window.BalancyWebView&&window.BalancyWebView.sendMessageToUnity?(typeof e!="string"&&(e=JSON.stringify(e)),window.BalancyWebView.sendMessageToUnity(e),!0):window.parent&&window.parent!==window&&window.parent.postMessage?(window.parent.postMessage(e,"*"),!0):(console.warn("BalancyWebView: No message handler available for platform"),window.BalancyWebView&&window.BalancyWebView.log&&window.BalancyWebView.log("warn","No message handler available for platform"),!1)}}function Pe(n){return function(t){n(t)}}function Te(n,e,t){return function(o){try{let a=JSON.parse(o);if(a.type==="response"){let i=n[a.id];i&&(a.error?i.reject(new Error(a.error+" : "+JSON.stringify(i.message))):i.resolve(a.result),delete n[a.id])}else if(a.type==="batch-response")a.responses&&Array.isArray(a.responses)&&a.responses.forEach(i=>{let c=n[i.id];c&&(i.error?c.reject(new Error(i.error+" : "+JSON.stringify(c.message))):c.resolve(i.result),delete n[i.id])});else if(a.type==="notification"){let i=a.data?JSON.parse(a.data):null;e(i)}else a.type==="custom-message"&&t(a.data)}catch(a){console.error("Error handling response:",a)}}}function Me(n,e,t,r){return function(a,i,c={}){return new Promise((s,l)=>{let d=n().toString();e();let m={type:"request",sender:a,id:d,action:i,params:c};t[d]={resolve:s,reject:l,timestamp:Date.now(),message:m},r(JSON.stringify(m))})}}function Ie(n,e,t,r,o,a){return function(c,s,l={}){return[u.BuyOffer,u.BuyGroupOffer,u.BuyShopSlot,u.BattlePassClaim,u.CloseWindow,u.CustomMessage,u.BalancyIsReady,u.StopEventManually,u.WatchRewardedAd].includes(s)?e(c,s,l):new Promise((m,p)=>{let g=n.addToBatch(t(),c,s,l,m,p,o,a);r()})}}var $=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{id:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}};var N=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{key:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}getCached(e){return this.cache[e]??null}};var G=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{id:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}};var F=class{constructor(){this.cache={};this.pendingRequests={}}async get(e,t,r){if(this.cache[e]!==void 0)return this.cache[e];if(this.pendingRequests[e])return this.pendingRequests[e];let o=t(null,r,{id:e}).then(a=>(this.cache[e]=a,delete this.pendingRequests[e],a)).catch(a=>{throw delete this.pendingRequests[e],a});return this.pendingRequests[e]=o,o}};function Se(n){return{getProfileValue(e,t){return n(null,u.GetProfile,{profile:e,path:t})},getSystemProfileValue(e){return n(null,u.GetProfile,{profile:"UnnyProfile",path:e})},getDocumentValue(e,t){return n(null,u.GetDocument,{id:e,depth:t}).then(r=>JSON.parse(r))}}}function Le(n,e,t){return{async getActiveOffers(r=3){let o=await e("SmartInfo.GameOffers");if(!Array.isArray(o)||o.length===0)return o||[];let a=[];for(let l of o)a.includes(l.unnyIdGameOffer)||a.push(l.unnyIdGameOffer);let i=a.map(l=>t(l,r)),c=await Promise.all(i),s={};for(let l=0;l<a.length;l++)s[a[l]]=c[l];for(let l of o){let d=l?.unnyIdGameOffer;d!=null&&s.hasOwnProperty(d)&&(l.gameOffer=s[d])}return o},async getActiveGroupOffers(r=3){let o=await e("SmartInfo.GameOfferGroups");if(!Array.isArray(o)||o.length===0)return o||[];let a=[];for(let l of o)a.includes(l.unnyIdGameOfferGroup)||a.push(l.unnyIdGameOfferGroup);let i=a.map(l=>t(l,r)),c=await Promise.all(i),s={};for(let l=0;l<a.length;l++)s[a[l]]=c[l];for(let l of o){let d=l?.unnyIdGameOfferGroup;d!=null&&s.hasOwnProperty(d)&&(l.gameOfferGroup=s[d])}return o},canBuyGroupOffer(r){return n(null,u.CanBuyGroupOffer,{instanceId:window.balancyViewOwner.instanceId,index:r})},buyGroupOffer(r,o={}){return!window.balancyViewOwner||!window.balancyViewOwner.instanceId?Promise.resolve(null):(o||(o={}),o.instanceId=window.balancyViewOwner.instanceId,o.index=r,n("buyGroupOfferButton",u.BuyGroupOffer,o))},buyOffer(r={}){return!window.balancyViewOwner||!window.balancyViewOwner.instanceId?Promise.resolve(null):(r||(r={}),r.instanceId=window.balancyViewOwner.instanceId,n("buyOfferButton",u.BuyOffer,r))},buyShopSlot(r,o={}){return o||(o={}),r?.unnyIdSlot&&(o.slotId=r.unnyIdSlot),n("buyShopSlotButton",u.BuyShopSlot,o)},getRewardedAdsWatchedForStoreItem(r){return r?.unnyId?n(null,u.GetRewardedAdsWatched,{id:r.unnyId}):Promise.resolve(0)},haveEnoughResources(r){return r?.unnyId?n(null,u.HaveEnoughResources,{id:r.unnyId}):Promise.resolve(!1)}}}function Ae(n){return{getTasks(){return n(null,u.GetTasksInfoForTheEvent,{id:window.balancyViewOwner.unnyIdGameEvent}).then(e=>JSON.parse(e))},activateTasks(e){return n(null,u.ActivateTasksForTheEvent,{id:window.balancyViewOwner.unnyIdGameEvent,tasks:e}).then(t=>JSON.parse(t))},deactivateTasks(e){return n(null,u.DeactivateTasksForTheEvent,{id:window.balancyViewOwner.unnyIdGameEvent,tasks:e})},restoreFailedTask(e){return n(null,u.RestoreFailedTask,{id:e?e.unnyIdTask:""})},claimTaskReward(e){return n(null,u.ClaimTaskReward,{id:e}).then(t=>t&&t==="ok")}}}function Oe(n){return{getInventoryItemsCount(e){return n(null,u.GetInventoryItemsCount,{id:e})},addInventoryItems(e,t){return n(null,u.AddInventoryItems,{id:e,count:t})},removeInventoryItems(e,t){return n(null,u.RemoveInventoryItems,{id:e,count:t})}}}function Ce(n,e){return{getBattlePassConfig(){return e(window.balancyViewOwner.unnyIdGameEvent,3).then(t=>t.config)},getBattlePassProgress(){return n(null,u.GetBattlePassProgress,{id:window.balancyViewOwner.unnyIdGameEvent}).then(t=>JSON.parse(t))},claimBattlePassReward(t,r){return n(null,u.BattlePassClaim,{id:window.balancyViewOwner.unnyIdGameEvent,lineId:t,index:r}).then(o=>o&&o==="ok")}}}function xe(n){return{getCustomEventInfo(){return n(null,u.GetCustomEventInfo,{id:window.balancyViewOwner.instanceId}).then(e=>e?JSON.parse(e):{})},setCustomEventInfo(e){let t=JSON.stringify(e);return n(null,u.SetCustomEventInfo,{id:window.balancyViewOwner.instanceId,data:t})},getCustomDocumentInfo(e){return n(null,u.GetCustomDocumentInfo,{id:e}).then(t=>t?JSON.parse(t):{})},setCustomDocumentInfo(e,t){let r=JSON.stringify(t);return n(null,u.SetCustomDocumentInfo,{id:e,data:r})},stopEventManually(e=-1){return n(null,u.StopEventManually,{id:window.balancyViewOwner.unnyIdGameEvent,cooldown:e}).then(t=>t)},watchRewardedAd(e){return n(null,u.WatchRewardedAd,{}).then(t=>{e(!!t.success)})},getProductInfo(e){return n("offerGroupPrice",u.GetInfo,{type:T.CustomPrice,productId:e})},closeView(e){return n(null,u.CloseWindow,{id:e})},sendCustomMessage(e,t){return n(e,u.CustomMessage,t)}}}function Be(n){return{async setLocalizedText(e,t){if(t){let r=await n(t);e.textContent=r}e.classList.add("balancy-text-prepared")},async localizeAllElements(e=document){let t=e.querySelectorAll('[data-text-type="localized"]'),r=Array.from(t).map(async o=>{if(o.classList.contains("balancy-text-prepared"))return;let a=o.getAttribute("data-localization-key");await this.setLocalizedText(o,a)});await Promise.all(r),e===document&&document.dispatchEvent(new CustomEvent("balancy-localization-complete"))}}}function Re(n){async function e(t,r){t.classList.add("balancy-image-prepared");let o=await n(r);o&&(t.tagName==="IMG"?t.src=o:t.hasAttribute("data-use-nineslice")&&t.getAttribute("data-use-nineslice")==="false"?t.style.backgroundImage=`url('${o}')`:t.style.borderImageSource=`url('${o}')`)}return{setImage(t,r){r?.id&&(t.setAttribute("data-image-id",r.id),e(t,r.id))},async prepareAllSprites(t=document){let r=t.querySelectorAll("[data-image-id]"),o=Array.from(r).map(async a=>{if(a.classList.contains("balancy-image-prepared"))return;let i=a.getAttribute("data-image-id");i&&await e(a,i)});await Promise.all(o),t===document&&document.dispatchEvent(new CustomEvent("balancy-images-complete"))}}}function ke(n,e){return{async prepareAllFonts(t=document){let r=t.querySelectorAll("[data-font-id]"),o=Array.from(r).map(async a=>{if(a.classList.contains("balancy-font-prepared"))return;let i=a.getAttribute("data-font-name"),c=a.getAttribute("data-font-id");if(i&&c){let s=await n(c);e(i,s)}});await Promise.all(o),t===document&&document.dispatchEvent(new CustomEvent("balancy-fonts-complete"))}}}function He(n,e,t){function r(i){let c=i.getAttribute("data-button-action");if(!c)return;switch(parseInt(c,10)){case u.BuyGroupOffer:let l=parseInt(i.getAttribute("data-index")||"0",10)||0;e(l).then(d=>{i.disabled=!d});break}}async function o(i){let c=i.getAttribute("data-button-audio-id");if(!c)return;let s=await t(c);if(!s)return;let l=document.createElement("audio");l.autoplay=!0,l.src=s,l.addEventListener("ended",()=>{l.remove()}),l.addEventListener("error",()=>{l.remove()}),document.body.appendChild(l)}function a(i,c){let s=c?.action??i.getAttribute("data-button-action");if(!s){console.warn("Button missing data-button-action attribute",i);return}let l=parseInt(s,10);if(isNaN(l)||l===u.None){console.warn("Invalid action ID:",s,i);return}let d=i.id||"unknown-button",m=i.getAttribute("data-button-params"),p={};if(m&&m.trim()!=="")try{p=JSON.parse(m)}catch(b){console.error("Error parsing button params JSON:",b,"Raw params:",m),i.dispatchEvent(new CustomEvent("balancyButtonError",{detail:{actionId:l,error:"Invalid JSON in data-button-params",paramsAttr:m}})),p={}}switch(l){case u.BuyOffer:p.instanceId=c?.instanceId??window.balancyViewOwner.instanceId;break;case u.BuyGroupOffer:p.instanceId=window.balancyViewOwner.instanceId,p.index=parseInt(i.getAttribute("data-index")||"0",10)||0;break;case u.BuyShopSlot:p.slotId=i.getAttribute("data-index")||0;break}let g=i.disabled;i.disabled=!0,i.classList.add("balancy-button-processing"),n(d,l,p).then(b=>{console.log(`Button action ${l} executed successfully`,b),i.dispatchEvent(new CustomEvent("balancyButtonResponse",{detail:{actionId:l,result:b,success:!0,senderId:d}}))}).catch(b=>{console.error(`Error executing button action ${l}:`,b),i.dispatchEvent(new CustomEvent("balancyButtonResponse",{detail:{actionId:l,error:b.message,success:!1,senderId:d}}))}).finally(()=>{i.disabled=g,i.classList.remove("balancy-button-processing")})}return{balancyButtonClicked:a,prepareAllButtons(i=document){let c=i.querySelectorAll("[data-button-action]"),s=i.querySelectorAll("[data-button-audio-id]"),l=[...Array.from(c),...Array.from(s)],d=0;l.forEach(m=>{m.classList.contains("balancy-button-prepared")||(m._balancyClickHandler&&m.removeEventListener("click",m._balancyClickHandler),m._balancyClickHandler=function(p){p.preventDefault(),p.stopPropagation(),m.hasAttribute("data-button-action")&&a(m),m.hasAttribute("data-button-audio-id")&&o(m)},r(m),m.addEventListener("click",m._balancyClickHandler),m.classList.add("balancy-button-prepared"),d++)}),i===document&&document.dispatchEvent(new CustomEvent("balancy-buttons-complete",{detail:{preparedCount:d,totalFound:l.length}}))}}}function De(n,e,t,r,o){return{prepareAllTexts(a=document){let i=a.querySelectorAll('[data-text-type="dynamic"]'),c=[];i.forEach(s=>{if(s.classList.contains("balancy-text-prepared"))return;s.classList.add("balancy-text-prepared");let l=s.id||"unknown-text",d=parseInt(s.getAttribute("data-info-type")||"0",10)||0,m=parseInt(s.getAttribute("data-index")||"0",10)||0,p=s.getAttribute("data-custom")||"",g=s.getAttribute("data-product-id")||"",b="";if(d===T.OfferPrice?(g=window.balancyViewOwner.productId,d=T.CustomPrice):d===T.OfferGroupPrice&&(b=window.balancyViewOwner.instanceId),d===T.TimeLeft){let w=function(){E.textContent=t(r())};var L=w;let E=s;setInterval(w,1e3),w();return}if(d===T.OwnerCustom){let E=s.getAttribute("data-text-format");E&&e(E,window.balancyViewOwner).then(w=>{s.textContent=w});return}if(d===T.OwnerLocalizedKey){let E=s.getAttribute("data-text-format");E&&e(E,window.balancyViewOwner).then(w=>o(s,w));return}let H=n(l,u.GetInfo,{type:d,productId:g,index:m,instanceId:b,custom:p}).then(E=>{try{let w=s.getAttribute("data-text-format");w&&e(w,E).then(ye=>{s.textContent=ye})}catch(w){console.error("Error formatting text:",w,"Result:",E)}});c.push(H)}),Promise.all(c).then(()=>{a===document&&document.dispatchEvent(new CustomEvent("balancy-text-complete"))})}}}function _(n){return n>=1e9?`${parseFloat((n/1e9).toFixed(1))}B`:n>=1e6?`${parseFloat((n/1e6).toFixed(1))}M`:n>=1e3?`${parseFloat((n/1e3).toFixed(1))}k`:n.toString()}function j(n){if(n&&!n.hasOwnProperty("unnyIdComponents"))return console.error("Item has no components, probably you need to increase depth when fetching item data: ",n),!1;let e=n?.components;if(!e)return!1;for(let t of e)if(t.$type==="SmartObjects.ItemComponent.Decay")return!0;return!1}function Fe(n){let e=n?.components;if(!e)return null;for(let t of e)if(t.$type==="SmartObjects.ItemComponent.Bundle")return t.reward;return null}function je(n,e=!1){let t=j(n.item),r=n.item.type===B.Currency,o;if(t){let a=n.count,i=Math.floor(a/3600),c=Math.floor(a%3600/60);o=`${i>0?`${i}h `:""}${c>0?`${c}m`:""}`}else{let a=e?_(n.count):n.count.toString();o=r?`${n.count}`:`x${a}`}return{text:o,isDuration:t,isCurrency:r}}function J(n){if(n>3600*24*365)return"oo";if(window.customFormatTime)return window.customFormatTime(n);let e=Math.floor(n/86400),t=Math.floor(n%86400/3600),r=Math.floor(n%3600/60),o=n%60;return e>0?t>0?`${e}d ${t}h`:`${e}d`:`${t.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`}function ze(n,...e){return n.replace(/{(\d+)}/g,(t,r)=>e[r]!==void 0?e[r]:t)}function K(){let e=Math.floor(Date.now()/1e3)-window.balancySettings.launchTime;return window.balancySettings.secondsLeft-e}var Ue=["BALANCY/TIME_DAY","BALANCY/TIME_HOUR","BALANCY/TIME_MINUTE","BALANCY/TIME_SECOND","BALANCY/NUMBER_THOUSAND","BALANCY/NUMBER_MILLION","BALANCY/NUMBER_BILLION"],f={};function qe(n){f={day:n("BALANCY/TIME_DAY")||"d",hour:n("BALANCY/TIME_HOUR")||"h",minute:n("BALANCY/TIME_MINUTE")||"m",second:n("BALANCY/TIME_SECOND")||"s",thousand:n("BALANCY/NUMBER_THOUSAND")||"k",million:n("BALANCY/NUMBER_MILLION")||"M",billion:n("BALANCY/NUMBER_BILLION")||"B"}}function $e(n){return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g," ")}function Ne(n){return n>=1e9?`${parseFloat((n/1e9).toFixed(1))}${f.billion||"B"}`:n>=1e6?`${parseFloat((n/1e6).toFixed(1))}${f.million||"M"}`:n>=1e3?`${parseFloat((n/1e3).toFixed(1))}${f.thousand||"k"}`:n.toString()}function ft(n,e){switch(e){case P.Plain:return n.toString();case P.PlainSpaced:return $e(n);case P.WithPrefix:return`x${n}`;case P.WithPrefixSpaced:return`x${$e(n)}`;case P.Shortened:return Ne(n);case P.ShortenedWithPrefix:return`x${Ne(n)}`;default:return n.toString()}}function gt(n,e){let t=Math.floor(n/86400),r=Math.floor(n%86400/3600),o=Math.floor(n%3600/60),a=n%60;switch(e){case y.DaysHours:return t>0?`${t}:${r.toString().padStart(2,"0")}`:`${r}:00`;case y.HoursMinutes:return`${r}:${o.toString().padStart(2,"0")}`;case y.HoursMinutesSeconds:return`${r}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`;case y.MinutesSeconds:return`${o}:${a.toString().padStart(2,"0")}`;case y.Full:return t>0?`${t}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`:`${r}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`;case y.Auto:default:return t>0?`${t}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`${r}:${o.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}`}}function Ge(n,e,t){let r=Math.floor(n/86400),o=Math.floor(n%86400/3600),a=Math.floor(n%3600/60),i=n%60,c=[],s=(l,d)=>{t?l>0&&c.push(`${l}${d}`):c.push(`${l}${d}`)};switch(e){case y.DaysHours:s(r,f.day||"d"),s(o,f.hour||"h");break;case y.HoursMinutes:s(o,f.hour||"h"),s(a,f.minute||"m");break;case y.HoursMinutesSeconds:s(o,f.hour||"h"),s(a,f.minute||"m"),s(i,f.second||"s");break;case y.MinutesSeconds:s(a,f.minute||"m"),s(i,f.second||"s");break;case y.Full:s(r,f.day||"d"),s(o,f.hour||"h"),s(a,f.minute||"m"),s(i,f.second||"s");break;case y.Auto:default:r>0?(s(r,f.day||"d"),s(o,f.hour||"h")):o>0?(s(o,f.hour||"h"),s(a,f.minute||"m")):(s(a,f.minute||"m"),(!t||i>0)&&s(i,f.second||"s"));break}return c.join(" ")}function Ve(n,e={}){let t=e.currencyFormat??P.Plain,r=e.regularItemFormat??P.WithPrefix,o=e.timeFormat??C.LocalizedCompact,a=e.timePrecision??y.Auto,i=j(n.item),c=n.item.type===B.Currency,s;if(i){let l=n.count;o===C.Colon?s=gt(l,a):o===C.Localized?s=Ge(l,a,!1):s=Ge(l,a,!0)}else{let l=c?t:r;s=ft(n.count,l)}return{text:s,isDuration:i,isCurrency:c}}function We(n){function e(r){return r.charAt(0).toUpperCase()+r.slice(1)}async function t(r,o){let a=o.split("."),i=r;for(let c=0;c<a.length;c++){let s=a[c].trim();if(i&&i[s]!==void 0&&i[s]!==null)i=i[s];else{let l="unnyId"+e(s);if(i&&i[l]!==void 0)try{let d=await n(i[l],0);if(c+1<a.length){let m=a.slice(c+1).join(".");return await t(d,m)}else return d}catch(d){console.error(`Failed to get document for ID ${i[l]}:`,d);return}return}}return i}return async function(o,a){if(!o.includes("{")||!o.includes("}"))return o;let i=[],c=/\{([^}]+)\}/g,s;for(;(s=c.exec(o))!==null;)i.push({fullMatch:s[0],path:s[1].trim(),index:s.index});if(i.length===0)return o;let l=i.map(async p=>{let g=await t(a,p.path);return{placeholder:p.fullMatch,value:g!==void 0?String(g):p.fullMatch}}),d=await Promise.all(l),m=o;for(let p of d)m=m.replace(p.placeholder,p.value);return m}}function X(n,e){let t=document.createElement("style");t.type="text/css",t.textContent=`
5
5
  @font-face {
6
6
  font-family: '${n}';
7
7
  src: url('${e}') format('truetype');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@balancy/bridge",
3
- "version": "1.2.6",
3
+ "version": "1.3.2",
4
4
  "description": "Balancy WebView Bridge - Unity-like component system for HTML/JavaScript",
5
5
  "author": {
6
6
  "name": "Balancy Team"