@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');
|