@apps-in-toss/user-scripts 2.4.1 → 2.4.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.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
1
  declare const afterDocumentLoad = "\"use strict\";(()=>{var e=document.createElement(\"style\");e.textContent=`\n*:not(input):not(textarea) {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n`;document.head.appendChild(e);})();\n";
2
- declare const beforeDocumentLoad = "\"use strict\";(()=>{var de=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,O=()=>Math.random().toString(36).substring(2,15),B=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(B(i))})),w.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function R(e){return t=>{let r=O(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(B(o))})];return w.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function g(e){return()=>w.getConstant(e)}var ue=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ue());var Xe=d(\"closeView\"),Ye=d(\"generateHapticFeedback\"),Ze=d(\"share\"),Qe=d(\"setSecureScreen\"),et=d(\"setScreenAwakeMode\"),tt=d(\"getNetworkStatus\"),rt=d(\"setIosSwipeGestureEnabled\"),nt=d(\"openURL\"),ot=d(\"openPermissionDialog\"),st=d(\"getPermission\"),at=d(\"requestPermission\"),it=g(\"setClipboardText\"),ct=g(\"getClipboardText\"),dt=g(\"fetchContacts\"),ut=g(\"fetchAlbumPhotos\"),pt=g(\"getCurrentLocation\"),mt=g(\"openCamera\"),lt=d(\"appLogin\"),gt=d(\"eventLog\"),ft=d(\"getTossShareLink\"),vt=d(\"setDeviceOrientation\"),wt=d(\"checkoutPayment\"),ht=d(\"saveBase64Data\"),Et=d(\"appsInTossSignTossCert\"),bt=d(\"getGameCenterGameProfile\"),At=d(\"openGameCenterLeaderboard\"),_t=d(\"submitGameCenterLeaderBoardScore\"),St=d(\"getUserKeyForGame\"),Ct=d(\"grantPromotionReward\"),It=d(\"grantPromotionRewardForGame\"),Tt=d(\"getIsTossLoginIntegratedService\"),yt=d(\"getServerTime\"),Lt=d(\"requestReview\"),Rt=g(\"getLocale\"),Pt=g(\"getSchemeUri\"),xt=g(\"getPlatformOS\"),Dt=g(\"getOperationalEnvironment\"),Nt=g(\"getTossAppVersion\"),Mt=g(\"getDeviceId\"),Ft=g(\"getGroupId\"),kt=R(\"contactsViral\"),Gt=R(\"startUpdateLocation\"),Ot=R(\"onVisibilityChangedByTransparentServiceWeb\");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},V=class extends S{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},H=class extends S{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},q=class extends S{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var k=class extends S{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},U=k,W=class extends S{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},z=class extends S{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var pe=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new pe,te=()=>Math.random().toString(36).substring(2,15),re=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=te(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(re(i))})),h.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function E(e){return t=>{let r=te(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(re(o))})];return h.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>h.getConstant(e)}var Kt={getItem:c(\"getStorageItem\"),setItem:c(\"setStorageItem\"),removeItem:c(\"removeStorageItem\"),clearItems:c(\"clearItems\")},me=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>[\"*\",\"x\",\"X\"].includes(e),j=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},le=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ge=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=le(j(e),j(t));return r>n?1:r<n?-1:0},K=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(me);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},J=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=ge(o,s);if(a!==0)return a}return 0},fe=(e,t)=>{let r=K(e),n=K(t),o=r.pop(),s=n.pop(),a=J(r,n);return a!==0?a:o&&s?J(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function G(e){if(p(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=p(\"getTossAppVersion\")(),o=p(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:fe(r,o)>=0}function X(e){return c(\"processProductGrant\")(e)}var Jt={createOneTimePurchaseOrder:e=>{let t=G({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=G({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?E(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async l=>{if(l.type===\"purchased\"){let m=await o.processProductGrant({orderId:l.data.orderId});await X({orderId:l.data.orderId,isProductGranted:m}).catch(a)}else s(l)},onError:l=>{a(l)}}):(c(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(m=>{Promise.resolve(o.processProductGrant({orderId:m.orderId})).then(()=>{s({type:\"success\",data:m})}).catch(f=>{a(f)})}).catch(m=>{a(m)}),r)},createSubscriptionPurchaseOrder:e=>{let t=G({android:\"5.248.0\",ios:\"5.249.0\"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:u}=n;return E(\"requestSubscriptionPurchase\")({options:{sku:a,offerId:i??null},onEvent:async m=>{if(m.type===\"purchased\"){let f=await u({orderId:m.data.orderId,subscriptionId:m.data.subscriptionId});await X({orderId:m.data.orderId,isProductGranted:f}).catch(s)}else o(m)},onError:m=>{s(m)}})},getProductItemList:c(\"iapGetProductItemList\"),getPendingOrders:c(\"getPendingOrders\"),getCompletedOrRefundedOrders:c(\"getCompletedOrRefundedOrders\"),completeProductGrant:c(\"completeProductGrant\"),getSubscriptionInfo:c(\"getSubscriptionInfo\")},Xt=p(\"getSafeAreaInsets\");var Yt=p(\"getSafeAreaInsets\");var Zt={loadAppsInTossAdMob:Object.assign(E(\"loadAppsInTossAdMob\"),{isSupported:p(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(E(\"showAppsInTossAdMob\"),{isSupported:p(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(c(\"isAppsInTossAdMobLoaded\"),{isSupported:p(\"isAppsInTossAdMobLoaded_isSupported\")})};var Qt={getDeploymentId:p(\"getDeploymentId\")},er=p(\"deploymentId\"),tr=p(\"brandDisplayName\"),rr=p(\"brandIcon\"),nr=p(\"brandPrimaryColor\");var or={addAccessoryButton:c(\"addAccessoryButton\"),removeAccessoryButton:c(\"removeAccessoryButton\")},ve=c(\"requestPermission\"),we=c(\"getPermission\"),he=c(\"openPermissionDialog\");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ve(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>we(e),n.openPermissionDialog=()=>he(e),n}var ar=C({handler:e=>c(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:V}),cr=C({handler:e=>c(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:H}),ur=C({handler:e=>c(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:k}),mr=C({handler:e=>c(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:q}),gr=C({handler:e=>c(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:z}),vr=C({handler:()=>c(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:W}),Ee=c(\"getPermission\"),be=c(\"openPermissionDialog\"),ne=e=>E(\"updateLocationEvent\")({...e,onError:t=>{let r=new U;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ne.getPermission=()=>Ee({name:\"geolocation\",access:\"access\"});ne.openPermissionDialog=()=>be({name:\"geolocation\",access:\"access\"});var hr=Object.assign(E(\"loadFullScreenAd\"),{isSupported:p(\"loadFullScreenAd_isSupported\")}),Er=Object.assign(E(\"showFullScreenAd\"),{isSupported:p(\"showFullScreenAd_isSupported\")}),Ae=c(\"openURL\");function _e(e){let t=Se(e);return Ae(t)}function Se(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?Ce(e):e}function Ce(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var Y=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",Z=15e3,P=null;function _(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ie(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=_();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(u),P=null},a=()=>{let l=_();if(l){s(),r(l);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${Y}.`))},u=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${Z}ms.`))},Z);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=Y,document.head.appendChild(o)});return P=t,t}var A=Object.assign(E(\"fetchTossAd\"),{isSupported:p(\"fetchTossAd_isSupported\")}),Te=c(\"tossAdEventLog\"),ye=new Set([\"1\",\"2\"]);function Le(e){return new Promise((t,r)=>{if(!A.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return A({options:e,onEvent:t,onError:r})})}function Q(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Re(e){return Pe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:Q(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:xe(e)?{resultType:\"SUCCESS\",success:Q(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function Pe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function xe(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function De(){return async(e,t)=>{try{let r=await Le({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Re(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var L=null;function Ne(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(_()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ie().then(a=>{if(a.isInitialized())return;let u={environment:\"live\",customAdFetcher:De(),opener:_e};a.init(u)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function Me(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=_();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let i=typeof t==\"string\"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let u={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:oe(e,r.callbacks)};a.banner.createSlot(i,u)}catch(s){o(s)}}var Fe=\"16px 20px\",ke=\"20px\",Ge=\"auto\",Oe=\"blackAndWhite\",Be=\"expanded\",v=\"toss-ads-attach\",ee=\"toss-ads-attach-style\";function Ve(e){let t=e.ownerDocument;if(!t||t.getElementById(ee))return;let r=t.createElement(\"style\");r.id=ee,r.textContent=`\n .${v} { background: #ffffff; }\n .${v}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${v} { background: #17171c; }\n .${v}.toss-ads-tone-grey { background: #101013; }\n }\n .${v}.toss-ads-theme-light { background: #ffffff; }\n .${v}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${v}.toss-ads-theme-dark { background: #17171c; }\n .${v}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function He(e,t,r={}){let{callbacks:n,theme:o=Ge,tone:s=Oe,variant:a=Be}=r,i=document.createElement(\"div\");i.style.width=\"100%\",i.style.height=\"100%\",i.style.boxSizing=\"border-box\",i.style.display=\"flex\",i.style.flexDirection=\"column\",i.style.justifyContent=\"center\",i.style.overflow=\"hidden\",a===\"card\"&&(i.style.padding=\"0 10px\");let u=document.createElement(\"div\");u.classList.add(v),s===\"grey\"&&u.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?u.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&u.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(u.style.borderRadius=\"16px\",u.style.overflow=\"hidden\"),i.appendChild(u);let l=!1,m=null,f=b=>{let y=b instanceof Error?b:new Error(String(b));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},ae=oe(e,n);try{let b=e,y=_();if(!y)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!y.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let F=typeof t==\"string\"?document.querySelector(t):t;if(!F)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ve(F),F.appendChild(i),l=!0;let ie={spaceId:b,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ce=>ce===\"1\"?Fe:ke,callbacks:ae};m=y.banner.createSlot(u,ie)}catch(b){l&&i.parentNode&&i.parentNode.removeChild(i),f(b)}return{destroy(){m?.destroy(),l&&i.parentNode&&i.parentNode.removeChild(i)}}}function qe(e){let t=_();t?.banner&&t.banner.destroy(e)}function Ue(){let e=_();e?.banner&&e.banner.destroyAll()}function oe(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var br={initialize:Object.assign(Ne,{isSupported:A.isSupported}),attach:Object.assign(Me,{isSupported:A.isSupported}),attachBanner:Object.assign(He,{isSupported:A.isSupported}),destroy:Object.assign(qe,{isSupported:A.isSupported}),destroyAll:Object.assign(Ue,{isSupported:A.isSupported})},Ar=Object.assign(c(\"getServerTime\"),{isSupported:p(\"getServerTime_isSupported\")}),_r=Object.assign(c(\"requestReview\"),{isSupported:p(\"requestReview_isSupported\")});var x=class{_log=c(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){return typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p(\"getAppName\")(),deploymentId:p(\"getDeploymentId\")(),webViewType:p(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new x};var I=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!I.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get(\"ETag\"),m=i.headers.get(\"Last-Modified\");l&&s.headers.set(\"If-None-Match\",l),m&&s.headers.set(\"If-Modified-Since\",m);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let u=await r.call(n,s);return a.put(s,u.clone()),u})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit(\"fetchError\",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit(\"webglGetContext\",{canvas:t,context:n}),n}});var se=window.__appsInToss.debugLogger;se.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};se.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.eventEmitter.on(\"webglGetContext\",({canvas:t,context:r})=>{if(t.getAttribute(\"id\")!==\"unity-canvas\")return;e();let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:n})=>{I.test(n.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log(\"game_resource_download_error\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:\"Unknown Error\"})}t.on(\"fetchResponse\",async({request:n,requestAt:o,response:s})=>{if(!I.test(n.url))return;let a=await s.clone().blob().then(u=>T(u.size/1024,2)).catch(u=>(r({request:n,requestAt:o,error:u}),null));if(a===null)return;let i=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on(\"fetchError\",async({request:n,requestAt:o,error:s})=>{I.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var M=[];function We(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){M.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function ze(){if(M.length===0)return;let e=M;M=[];let t=$e(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log(\"fps_every_300s\",r)}function $e(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>We(),1e3);setInterval(()=>ze(),3e5);})();\n";
2
+ declare const beforeDocumentLoad = "\"use strict\";(()=>{var fe=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},E=new fe,q=()=>Math.random().toString(36).substring(2,15),z=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(E.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(E.on(`${e}/reject/${r}`,i=>{o(),a(z(i))})),E.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function D(e){return t=>{let r=q(),n=[E.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),E.on(`${e}/onError/${r}`,o=>{t.onError(z(o))})];return E.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{E.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function v(e){return()=>E.getConstant(e)}var ve=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ve());var at=c(\"closeView\"),it=c(\"generateHapticFeedback\"),dt=c(\"share\"),ct=c(\"setSecureScreen\"),ut=c(\"setScreenAwakeMode\"),pt=c(\"getNetworkStatus\"),mt=c(\"setIosSwipeGestureEnabled\"),lt=c(\"openURL\"),gt=c(\"openPermissionDialog\"),ft=c(\"getPermission\"),vt=c(\"requestPermission\"),ht=v(\"setClipboardText\"),wt=v(\"getClipboardText\"),Et=v(\"fetchContacts\"),bt=v(\"fetchAlbumPhotos\"),At=v(\"getCurrentLocation\"),_t=v(\"openCamera\"),Ct=c(\"appLogin\"),St=c(\"eventLog\"),It=c(\"getTossShareLink\"),Tt=c(\"setDeviceOrientation\"),yt=c(\"checkoutPayment\"),Rt=c(\"saveBase64Data\"),Lt=c(\"appsInTossSignTossCert\"),Pt=c(\"getGameCenterGameProfile\"),xt=c(\"openGameCenterLeaderboard\"),Dt=c(\"submitGameCenterLeaderBoardScore\"),Nt=c(\"getUserKeyForGame\"),Mt=c(\"grantPromotionReward\"),Ft=c(\"grantPromotionRewardForGame\"),Gt=c(\"getIsTossLoginIntegratedService\"),Bt=c(\"getServerTime\"),kt=c(\"requestReview\"),Ot=v(\"getLocale\"),Vt=v(\"getSchemeUri\"),Ht=v(\"getPlatformOS\"),Ut=v(\"getOperationalEnvironment\"),Wt=v(\"getTossAppVersion\"),qt=v(\"getDeviceId\"),zt=v(\"getGroupId\"),$t=D(\"contactsViral\"),jt=D(\"startUpdateLocation\"),Kt=D(\"onVisibilityChangedByTransparentServiceWeb\");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},$=class extends S{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},j=class extends S{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},K=class extends S{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var V=class extends S{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},J=V,X=class extends S{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},Y=class extends S{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var he=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},b=new he,ie=()=>Math.random().toString(36).substring(2,15),de=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=ie(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(b.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(b.on(`${e}/reject/${r}`,i=>{o(),a(de(i))})),b.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=ie(),n=[b.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),b.on(`${e}/onError/${r}`,o=>{t.onError(de(o))})];return b.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{b.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>b.getConstant(e)}var or={getItem:d(\"getStorageItem\"),setItem:d(\"setStorageItem\"),removeItem:d(\"removeStorageItem\"),clearItems:d(\"clearItems\")},we=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,Z=e=>[\"*\",\"x\",\"X\"].includes(e),Q=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},Ee=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],be=(e,t)=>{if(Z(e)||Z(t))return 0;let[r,n]=Ee(Q(e),Q(t));return r>n?1:r<n?-1:0},ee=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(we);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},te=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=be(o,s);if(a!==0)return a}return 0},Ae=(e,t)=>{let r=ee(e),n=ee(t),o=r.pop(),s=n.pop(),a=te(r,n);return a!==0?a:o&&s?te(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function H(e){if(p(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=p(\"getTossAppVersion\")(),o=p(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:Ae(r,o)>=0}function re(e){return d(\"processProductGrant\")(e)}var sr={createOneTimePurchaseOrder:e=>{let t=H({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=H({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async l=>{if(l.type===\"purchased\"){let u=await o.processProductGrant({orderId:l.data.orderId});await re({orderId:l.data.orderId,isProductGranted:u}).catch(a)}else s(l)},onError:l=>{a(l)}}):(d(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(u=>{Promise.resolve(o.processProductGrant({orderId:u.orderId})).then(()=>{s({type:\"success\",data:u})}).catch(f=>{a(f)})}).catch(u=>{a(u)}),r)},createSubscriptionPurchaseOrder:e=>{let t=H({android:\"5.248.0\",ios:\"5.249.0\"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:m}=n;return A(\"requestSubscriptionPurchase\")({options:{sku:a,offerId:i??null},onEvent:async u=>{if(u.type===\"purchased\"){let f=await m({orderId:u.data.orderId,subscriptionId:u.data.subscriptionId});await re({orderId:u.data.orderId,isProductGranted:f}).catch(s)}else o(u)},onError:u=>{s(u)}})},getProductItemList:d(\"iapGetProductItemList\"),getPendingOrders:d(\"getPendingOrders\"),getCompletedOrRefundedOrders:d(\"getCompletedOrRefundedOrders\"),completeProductGrant:d(\"completeProductGrant\"),getSubscriptionInfo:d(\"getSubscriptionInfo\")},ar=p(\"getSafeAreaInsets\");var ir=p(\"getSafeAreaInsets\");var dr={loadAppsInTossAdMob:Object.assign(A(\"loadAppsInTossAdMob\"),{isSupported:p(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(A(\"showAppsInTossAdMob\"),{isSupported:p(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(d(\"isAppsInTossAdMobLoaded\"),{isSupported:p(\"isAppsInTossAdMobLoaded_isSupported\")})};var cr={getDeploymentId:p(\"getDeploymentId\")},ur=p(\"deploymentId\"),pr=p(\"brandDisplayName\"),mr=p(\"brandIcon\"),lr=p(\"brandPrimaryColor\");var gr={addAccessoryButton:d(\"addAccessoryButton\"),removeAccessoryButton:d(\"removeAccessoryButton\")},_e=d(\"requestPermission\"),Ce=d(\"getPermission\"),Se=d(\"openPermissionDialog\");function I({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await _e(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>Ce(e),n.openPermissionDialog=()=>Se(e),n}var vr=I({handler:e=>d(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:$}),wr=I({handler:e=>d(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:j}),br=I({handler:e=>d(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:V}),_r=I({handler:e=>d(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:K}),Sr=I({handler:e=>d(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:Y}),Tr=I({handler:()=>d(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:X}),Ie=d(\"getPermission\"),Te=d(\"openPermissionDialog\"),ce=e=>A(\"updateLocationEvent\")({...e,onError:t=>{let r=new J;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ce.getPermission=()=>Ie({name:\"geolocation\",access:\"access\"});ce.openPermissionDialog=()=>Te({name:\"geolocation\",access:\"access\"});var Rr=Object.assign(A(\"loadFullScreenAd\"),{isSupported:p(\"loadFullScreenAd_isSupported\")}),Lr=Object.assign(A(\"showFullScreenAd\"),{isSupported:p(\"showFullScreenAd_isSupported\")}),P=new WeakMap;function ye(e,t){let r=P.get(e);if(r)return r;let n=t(),o=!1,s={destroy(){o||(o=!0,P.get(e)===s&&P.delete(e),n.destroy())}};return P.set(e,s),s}function Re(){P=new WeakMap}var Le=d(\"openURL\");function Pe(e){let t=xe(e);return Le(t)}function xe(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?De(e):e}function De(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var ne=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",oe=15e3,N=null;function C(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ne(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=C();if(e)return Promise.resolve(e);if(N)return N;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(m),N=null},a=()=>{let l=C();if(l){s(),r(l);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${ne}.`))},m=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${oe}ms.`))},oe);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=ne,document.head.appendChild(o)});return N=t,t}var _=Object.assign(A(\"fetchTossAd\"),{isSupported:p(\"fetchTossAd_isSupported\")}),Me=d(\"tossAdEventLog\"),Fe=new Set([\"1\",\"2\"]),ue=\"\\uC798\\uBABB\\uB41C \\uC694\\uCCAD\\uC774\\uC5D0\\uC694. \\uD544\\uC694\\uD55C \\uAC12\\uC774 \\uBE44\\uC5B4 \\uC788\\uC5B4\\uC694.\";function M(e){return e.trim()}function U(){return new Error(ue)}function Ge(){return{resultType:\"FAIL\",error:{reason:ue}}}function Be(e){return new Promise((t,r)=>{if(!_.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}let n=M(e.adGroupId);if(n.length===0){r(U());return}return _({options:{...e,adGroupId:n},onEvent:t,onError:r})})}function se(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>Fe.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function ke(e){return Oe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:se(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Ve(e)?{resultType:\"SUCCESS\",success:se(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function Oe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Ve(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function He(){return async(e,t)=>{let r=M(t.spaceUnitId);if(r.length===0)return Ge();try{let n=await Be({adGroupId:r,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return ke(n)}catch(n){return{resultType:\"FAIL\",error:{reason:n instanceof Error?n.message:\"Unknown fetchTossAd error\"}}}}}var L=null;function Ue(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(C()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ne().then(a=>{if(a.isInitialized())return;let m={environment:\"live\",customAdFetcher:He(),opener:Pe};a.init(m)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function We(e,t,r={}){let{callbacks:n}=r,o=M(e),s=a=>{let i=a instanceof Error?a:new Error(String(a));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:o,adMetadata:{},error:{code:0,message:i.message}})};try{let a=o;if(a.length===0)throw U();let i=C();if(!i)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!i.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let m=typeof t==\"string\"?document.querySelector(t):t;if(!m)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let l={spaceId:a,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:me(o,r.callbacks)};i.banner.createSlot(m,l)}catch(a){s(a)}}var qe=\"16px 20px\",ze=\"20px\",$e=\"auto\",je=\"blackAndWhite\",Ke=\"expanded\",h=\"toss-ads-attach\",ae=\"toss-ads-attach-style\",pe=\"data-toss-ads-attach-banner-wrapper\";function Je(e){let t=e.ownerDocument;if(!t||t.getElementById(ae))return;let r=t.createElement(\"style\");r.id=ae,r.textContent=`\n .${h} { background: #ffffff; }\n .${h}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${h} { background: #17171c; }\n .${h}.toss-ads-tone-grey { background: #101013; }\n }\n .${h}.toss-ads-theme-light { background: #ffffff; }\n .${h}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${h}.toss-ads-theme-dark { background: #17171c; }\n .${h}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Xe(e){Array.from(e.children).forEach(t=>{t instanceof HTMLElement&&t.getAttribute(pe)===\"true\"&&e.removeChild(t)})}function Ye(e,t,r={}){let{callbacks:n,theme:o=$e,tone:s=je,variant:a=Ke}=r,i=M(e),m=u=>{let f=u instanceof Error?u:new Error(String(u));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:i,adMetadata:{},error:{code:0,message:f.message}})},l=me(i,n);try{let u=i;if(u.length===0)throw U();let f=C();if(!f)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!f.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let R=typeof t==\"string\"?document.querySelector(t):t;if(!R)throw new Error(`[toss-ad] Failed to find target element: ${t}`);return ye(R,()=>{let g=document.createElement(\"div\");g.style.width=\"100%\",g.style.height=\"100%\",g.style.boxSizing=\"border-box\",g.style.display=\"flex\",g.style.flexDirection=\"column\",g.style.justifyContent=\"center\",g.style.overflow=\"hidden\",g.setAttribute(pe,\"true\"),a===\"card\"&&(g.style.padding=\"0 10px\");let w=document.createElement(\"div\");w.classList.add(h),s===\"grey\"&&w.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?w.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&w.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(w.style.borderRadius=\"16px\",w.style.overflow=\"hidden\"),g.appendChild(w);let x=!1,W=null;try{Je(R),Xe(R),R.appendChild(g),x=!0;let O={spaceId:u,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ge=>ge===\"1\"?qe:ze,callbacks:l};W=f.banner.createSlot(w,O)}catch(O){throw x&&g.parentNode&&g.parentNode.removeChild(g),O}return{destroy(){W?.destroy(),x&&g.parentNode&&g.parentNode.removeChild(g),x=!1}}})}catch(u){return m(u),{destroy(){}}}}function Ze(e){let t=C();t?.banner&&t.banner.destroy(e)}function Qe(){let e=C();e?.banner&&(e.banner.destroyAll(),Re())}function me(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Me({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Pr={initialize:Object.assign(Ue,{isSupported:_.isSupported}),attach:Object.assign(We,{isSupported:_.isSupported}),attachBanner:Object.assign(Ye,{isSupported:_.isSupported}),destroy:Object.assign(Ze,{isSupported:_.isSupported}),destroyAll:Object.assign(Qe,{isSupported:_.isSupported})},xr=Object.assign(d(\"getServerTime\"),{isSupported:p(\"getServerTime_isSupported\")}),Dr=Object.assign(d(\"requestReview\"),{isSupported:p(\"requestReview_isSupported\")});var F=class{_log=d(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var G=class{callbacks={};on(t,r){return typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p(\"getAppName\")(),deploymentId:p(\"getDeploymentId\")(),webViewType:p(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new G,debugLogger:new F};var T=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function B(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),B(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!T.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get(\"ETag\"),u=i.headers.get(\"Last-Modified\");l&&s.headers.set(\"If-None-Match\",l),u&&s.headers.set(\"If-Modified-Since\",u);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let m=await r.call(n,s);return a.put(s,m.clone()),m})})();B(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit(\"fetchError\",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit(\"webglGetContext\",{canvas:t,context:n}),n}});var le=window.__appsInToss.debugLogger;le.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};le.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function y(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:y(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:y(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:y(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.eventEmitter.on(\"webglGetContext\",({canvas:t,context:r})=>{if(t.getAttribute(\"id\")!==\"unity-canvas\")return;e();let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:n})=>{T.test(n.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log(\"game_resource_download_error\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:\"Unknown Error\"})}t.on(\"fetchResponse\",async({request:n,requestAt:o,response:s})=>{if(!T.test(n.url))return;let a=await s.clone().blob().then(m=>y(m.size/1024,2)).catch(m=>(r({request:n,requestAt:o,error:m}),null));if(a===null)return;let i=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on(\"fetchError\",async({request:n,requestAt:o,error:s})=>{T.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var k=[];function et(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){k.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function tt(){if(k.length===0)return;let e=k;k=[];let t=rt(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log(\"fps_every_300s\",r)}function rt(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>et(),1e3);setInterval(()=>tt(),3e5);})();\n";
3
3
 
4
4
  export { afterDocumentLoad, beforeDocumentLoad };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  declare const afterDocumentLoad = "\"use strict\";(()=>{var e=document.createElement(\"style\");e.textContent=`\n*:not(input):not(textarea) {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n -webkit-touch-callout: none;\n}\n`;document.head.appendChild(e);})();\n";
2
- declare const beforeDocumentLoad = "\"use strict\";(()=>{var de=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,O=()=>Math.random().toString(36).substring(2,15),B=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(B(i))})),w.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function R(e){return t=>{let r=O(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(B(o))})];return w.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function g(e){return()=>w.getConstant(e)}var ue=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ue());var Xe=d(\"closeView\"),Ye=d(\"generateHapticFeedback\"),Ze=d(\"share\"),Qe=d(\"setSecureScreen\"),et=d(\"setScreenAwakeMode\"),tt=d(\"getNetworkStatus\"),rt=d(\"setIosSwipeGestureEnabled\"),nt=d(\"openURL\"),ot=d(\"openPermissionDialog\"),st=d(\"getPermission\"),at=d(\"requestPermission\"),it=g(\"setClipboardText\"),ct=g(\"getClipboardText\"),dt=g(\"fetchContacts\"),ut=g(\"fetchAlbumPhotos\"),pt=g(\"getCurrentLocation\"),mt=g(\"openCamera\"),lt=d(\"appLogin\"),gt=d(\"eventLog\"),ft=d(\"getTossShareLink\"),vt=d(\"setDeviceOrientation\"),wt=d(\"checkoutPayment\"),ht=d(\"saveBase64Data\"),Et=d(\"appsInTossSignTossCert\"),bt=d(\"getGameCenterGameProfile\"),At=d(\"openGameCenterLeaderboard\"),_t=d(\"submitGameCenterLeaderBoardScore\"),St=d(\"getUserKeyForGame\"),Ct=d(\"grantPromotionReward\"),It=d(\"grantPromotionRewardForGame\"),Tt=d(\"getIsTossLoginIntegratedService\"),yt=d(\"getServerTime\"),Lt=d(\"requestReview\"),Rt=g(\"getLocale\"),Pt=g(\"getSchemeUri\"),xt=g(\"getPlatformOS\"),Dt=g(\"getOperationalEnvironment\"),Nt=g(\"getTossAppVersion\"),Mt=g(\"getDeviceId\"),Ft=g(\"getGroupId\"),kt=R(\"contactsViral\"),Gt=R(\"startUpdateLocation\"),Ot=R(\"onVisibilityChangedByTransparentServiceWeb\");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},V=class extends S{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},H=class extends S{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},q=class extends S{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var k=class extends S{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},U=k,W=class extends S{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},z=class extends S{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var pe=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new pe,te=()=>Math.random().toString(36).substring(2,15),re=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=te(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(re(i))})),h.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function E(e){return t=>{let r=te(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(re(o))})];return h.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>h.getConstant(e)}var Kt={getItem:c(\"getStorageItem\"),setItem:c(\"setStorageItem\"),removeItem:c(\"removeStorageItem\"),clearItems:c(\"clearItems\")},me=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>[\"*\",\"x\",\"X\"].includes(e),j=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},le=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ge=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=le(j(e),j(t));return r>n?1:r<n?-1:0},K=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(me);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},J=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=ge(o,s);if(a!==0)return a}return 0},fe=(e,t)=>{let r=K(e),n=K(t),o=r.pop(),s=n.pop(),a=J(r,n);return a!==0?a:o&&s?J(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function G(e){if(p(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=p(\"getTossAppVersion\")(),o=p(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:fe(r,o)>=0}function X(e){return c(\"processProductGrant\")(e)}var Jt={createOneTimePurchaseOrder:e=>{let t=G({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=G({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?E(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async l=>{if(l.type===\"purchased\"){let m=await o.processProductGrant({orderId:l.data.orderId});await X({orderId:l.data.orderId,isProductGranted:m}).catch(a)}else s(l)},onError:l=>{a(l)}}):(c(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(m=>{Promise.resolve(o.processProductGrant({orderId:m.orderId})).then(()=>{s({type:\"success\",data:m})}).catch(f=>{a(f)})}).catch(m=>{a(m)}),r)},createSubscriptionPurchaseOrder:e=>{let t=G({android:\"5.248.0\",ios:\"5.249.0\"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:u}=n;return E(\"requestSubscriptionPurchase\")({options:{sku:a,offerId:i??null},onEvent:async m=>{if(m.type===\"purchased\"){let f=await u({orderId:m.data.orderId,subscriptionId:m.data.subscriptionId});await X({orderId:m.data.orderId,isProductGranted:f}).catch(s)}else o(m)},onError:m=>{s(m)}})},getProductItemList:c(\"iapGetProductItemList\"),getPendingOrders:c(\"getPendingOrders\"),getCompletedOrRefundedOrders:c(\"getCompletedOrRefundedOrders\"),completeProductGrant:c(\"completeProductGrant\"),getSubscriptionInfo:c(\"getSubscriptionInfo\")},Xt=p(\"getSafeAreaInsets\");var Yt=p(\"getSafeAreaInsets\");var Zt={loadAppsInTossAdMob:Object.assign(E(\"loadAppsInTossAdMob\"),{isSupported:p(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(E(\"showAppsInTossAdMob\"),{isSupported:p(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(c(\"isAppsInTossAdMobLoaded\"),{isSupported:p(\"isAppsInTossAdMobLoaded_isSupported\")})};var Qt={getDeploymentId:p(\"getDeploymentId\")},er=p(\"deploymentId\"),tr=p(\"brandDisplayName\"),rr=p(\"brandIcon\"),nr=p(\"brandPrimaryColor\");var or={addAccessoryButton:c(\"addAccessoryButton\"),removeAccessoryButton:c(\"removeAccessoryButton\")},ve=c(\"requestPermission\"),we=c(\"getPermission\"),he=c(\"openPermissionDialog\");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ve(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>we(e),n.openPermissionDialog=()=>he(e),n}var ar=C({handler:e=>c(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:V}),cr=C({handler:e=>c(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:H}),ur=C({handler:e=>c(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:k}),mr=C({handler:e=>c(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:q}),gr=C({handler:e=>c(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:z}),vr=C({handler:()=>c(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:W}),Ee=c(\"getPermission\"),be=c(\"openPermissionDialog\"),ne=e=>E(\"updateLocationEvent\")({...e,onError:t=>{let r=new U;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ne.getPermission=()=>Ee({name:\"geolocation\",access:\"access\"});ne.openPermissionDialog=()=>be({name:\"geolocation\",access:\"access\"});var hr=Object.assign(E(\"loadFullScreenAd\"),{isSupported:p(\"loadFullScreenAd_isSupported\")}),Er=Object.assign(E(\"showFullScreenAd\"),{isSupported:p(\"showFullScreenAd_isSupported\")}),Ae=c(\"openURL\");function _e(e){let t=Se(e);return Ae(t)}function Se(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?Ce(e):e}function Ce(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var Y=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",Z=15e3,P=null;function _(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ie(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=_();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(u),P=null},a=()=>{let l=_();if(l){s(),r(l);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${Y}.`))},u=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${Z}ms.`))},Z);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=Y,document.head.appendChild(o)});return P=t,t}var A=Object.assign(E(\"fetchTossAd\"),{isSupported:p(\"fetchTossAd_isSupported\")}),Te=c(\"tossAdEventLog\"),ye=new Set([\"1\",\"2\"]);function Le(e){return new Promise((t,r)=>{if(!A.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}return A({options:e,onEvent:t,onError:r})})}function Q(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function Re(e){return Pe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:Q(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:xe(e)?{resultType:\"SUCCESS\",success:Q(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function Pe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function xe(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function De(){return async(e,t)=>{try{let r=await Le({adGroupId:t.spaceUnitId,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return Re(r)}catch(r){return{resultType:\"FAIL\",error:{reason:r instanceof Error?r.message:\"Unknown fetchTossAd error\"}}}}}var L=null;function Ne(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(_()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ie().then(a=>{if(a.isInitialized())return;let u={environment:\"live\",customAdFetcher:De(),opener:_e};a.init(u)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function Me(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=_();if(!a)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!a.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let i=typeof t==\"string\"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let u={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:oe(e,r.callbacks)};a.banner.createSlot(i,u)}catch(s){o(s)}}var Fe=\"16px 20px\",ke=\"20px\",Ge=\"auto\",Oe=\"blackAndWhite\",Be=\"expanded\",v=\"toss-ads-attach\",ee=\"toss-ads-attach-style\";function Ve(e){let t=e.ownerDocument;if(!t||t.getElementById(ee))return;let r=t.createElement(\"style\");r.id=ee,r.textContent=`\n .${v} { background: #ffffff; }\n .${v}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${v} { background: #17171c; }\n .${v}.toss-ads-tone-grey { background: #101013; }\n }\n .${v}.toss-ads-theme-light { background: #ffffff; }\n .${v}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${v}.toss-ads-theme-dark { background: #17171c; }\n .${v}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function He(e,t,r={}){let{callbacks:n,theme:o=Ge,tone:s=Oe,variant:a=Be}=r,i=document.createElement(\"div\");i.style.width=\"100%\",i.style.height=\"100%\",i.style.boxSizing=\"border-box\",i.style.display=\"flex\",i.style.flexDirection=\"column\",i.style.justifyContent=\"center\",i.style.overflow=\"hidden\",a===\"card\"&&(i.style.padding=\"0 10px\");let u=document.createElement(\"div\");u.classList.add(v),s===\"grey\"&&u.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?u.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&u.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(u.style.borderRadius=\"16px\",u.style.overflow=\"hidden\"),i.appendChild(u);let l=!1,m=null,f=b=>{let y=b instanceof Error?b:new Error(String(b));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},ae=oe(e,n);try{let b=e,y=_();if(!y)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!y.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let F=typeof t==\"string\"?document.querySelector(t):t;if(!F)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ve(F),F.appendChild(i),l=!0;let ie={spaceId:b,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ce=>ce===\"1\"?Fe:ke,callbacks:ae};m=y.banner.createSlot(u,ie)}catch(b){l&&i.parentNode&&i.parentNode.removeChild(i),f(b)}return{destroy(){m?.destroy(),l&&i.parentNode&&i.parentNode.removeChild(i)}}}function qe(e){let t=_();t?.banner&&t.banner.destroy(e)}function Ue(){let e=_();e?.banner&&e.banner.destroyAll()}function oe(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var br={initialize:Object.assign(Ne,{isSupported:A.isSupported}),attach:Object.assign(Me,{isSupported:A.isSupported}),attachBanner:Object.assign(He,{isSupported:A.isSupported}),destroy:Object.assign(qe,{isSupported:A.isSupported}),destroyAll:Object.assign(Ue,{isSupported:A.isSupported})},Ar=Object.assign(c(\"getServerTime\"),{isSupported:p(\"getServerTime_isSupported\")}),_r=Object.assign(c(\"requestReview\"),{isSupported:p(\"requestReview_isSupported\")});var x=class{_log=c(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){return typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p(\"getAppName\")(),deploymentId:p(\"getDeploymentId\")(),webViewType:p(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new x};var I=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!I.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get(\"ETag\"),m=i.headers.get(\"Last-Modified\");l&&s.headers.set(\"If-None-Match\",l),m&&s.headers.set(\"If-Modified-Since\",m);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let u=await r.call(n,s);return a.put(s,u.clone()),u})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit(\"fetchError\",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit(\"webglGetContext\",{canvas:t,context:n}),n}});var se=window.__appsInToss.debugLogger;se.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};se.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.eventEmitter.on(\"webglGetContext\",({canvas:t,context:r})=>{if(t.getAttribute(\"id\")!==\"unity-canvas\")return;e();let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:n})=>{I.test(n.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log(\"game_resource_download_error\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:\"Unknown Error\"})}t.on(\"fetchResponse\",async({request:n,requestAt:o,response:s})=>{if(!I.test(n.url))return;let a=await s.clone().blob().then(u=>T(u.size/1024,2)).catch(u=>(r({request:n,requestAt:o,error:u}),null));if(a===null)return;let i=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on(\"fetchError\",async({request:n,requestAt:o,error:s})=>{I.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var M=[];function We(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){M.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function ze(){if(M.length===0)return;let e=M;M=[];let t=$e(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log(\"fps_every_300s\",r)}function $e(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>We(),1e3);setInterval(()=>ze(),3e5);})();\n";
2
+ declare const beforeDocumentLoad = "\"use strict\";(()=>{var fe=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},E=new fe,q=()=>Math.random().toString(36).substring(2,15),z=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(E.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(E.on(`${e}/reject/${r}`,i=>{o(),a(z(i))})),E.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function D(e){return t=>{let r=q(),n=[E.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),E.on(`${e}/onError/${r}`,o=>{t.onError(z(o))})];return E.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{E.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function v(e){return()=>E.getConstant(e)}var ve=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<\"u\"&&(window.__GRANITE_NATIVE_EMITTER=ve());var at=c(\"closeView\"),it=c(\"generateHapticFeedback\"),dt=c(\"share\"),ct=c(\"setSecureScreen\"),ut=c(\"setScreenAwakeMode\"),pt=c(\"getNetworkStatus\"),mt=c(\"setIosSwipeGestureEnabled\"),lt=c(\"openURL\"),gt=c(\"openPermissionDialog\"),ft=c(\"getPermission\"),vt=c(\"requestPermission\"),ht=v(\"setClipboardText\"),wt=v(\"getClipboardText\"),Et=v(\"fetchContacts\"),bt=v(\"fetchAlbumPhotos\"),At=v(\"getCurrentLocation\"),_t=v(\"openCamera\"),Ct=c(\"appLogin\"),St=c(\"eventLog\"),It=c(\"getTossShareLink\"),Tt=c(\"setDeviceOrientation\"),yt=c(\"checkoutPayment\"),Rt=c(\"saveBase64Data\"),Lt=c(\"appsInTossSignTossCert\"),Pt=c(\"getGameCenterGameProfile\"),xt=c(\"openGameCenterLeaderboard\"),Dt=c(\"submitGameCenterLeaderBoardScore\"),Nt=c(\"getUserKeyForGame\"),Mt=c(\"grantPromotionReward\"),Ft=c(\"grantPromotionRewardForGame\"),Gt=c(\"getIsTossLoginIntegratedService\"),Bt=c(\"getServerTime\"),kt=c(\"requestReview\"),Ot=v(\"getLocale\"),Vt=v(\"getSchemeUri\"),Ht=v(\"getPlatformOS\"),Ut=v(\"getOperationalEnvironment\"),Wt=v(\"getTossAppVersion\"),qt=v(\"getDeviceId\"),zt=v(\"getGroupId\"),$t=D(\"contactsViral\"),jt=D(\"startUpdateLocation\"),Kt=D(\"onVisibilityChangedByTransparentServiceWeb\");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},$=class extends S{constructor(){super({methodName:\"fetchAlbumPhotos\",message:\"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},j=class extends S{constructor(){super({methodName:\"fetchContacts\",message:\"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},K=class extends S{constructor(){super({methodName:\"openCamera\",message:\"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var V=class extends S{constructor(){super({methodName:\"getCurrentLocation\",message:\"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},J=V,X=class extends S{constructor(){super({methodName:\"getClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}},Y=class extends S{constructor(){super({methodName:\"setClipboardText\",message:\"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694.\"})}};var he=class{get _window(){return typeof window<\"u\"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error(\"ReactNativeWebView is not available in browser environment\");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error(\"__GRANITE_NATIVE_EMITTER is not available\");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},b=new he,ie=()=>Math.random().toString(36).substring(2,15),de=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=ie(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(b.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(b.on(`${e}/reject/${r}`,i=>{o(),a(de(i))})),b.postMessage({type:\"method\",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=ie(),n=[b.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),b.on(`${e}/onError/${r}`,o=>{t.onError(de(o))})];return b.postMessage({type:\"addEventListener\",functionName:e,eventId:r,args:t.options}),()=>{b.postMessage({type:\"removeEventListener\",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>b.getConstant(e)}var or={getItem:d(\"getStorageItem\"),setItem:d(\"setStorageItem\"),removeItem:d(\"removeStorageItem\"),clearItems:d(\"clearItems\")},we=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,Z=e=>[\"*\",\"x\",\"X\"].includes(e),Q=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},Ee=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],be=(e,t)=>{if(Z(e)||Z(t))return 0;let[r,n]=Ee(Q(e),Q(t));return r>n?1:r<n?-1:0},ee=e=>{if(typeof e!=\"string\")throw new TypeError(\"Invalid argument: expected a string\");let t=e.match(we);if(!t)throw new Error(`Invalid semver: '${e}'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},te=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??\"0\",s=t[n]??\"0\",a=be(o,s);if(a!==0)return a}return 0},Ae=(e,t)=>{let r=ee(e),n=ee(t),o=r.pop(),s=n.pop(),a=te(r,n);return a!==0?a:o&&s?te(o.split(\".\"),s.split(\".\")):o?-1:s?1:0};function H(e){if(p(\"getOperationalEnvironment\")()===\"sandbox\")return!0;let r=p(\"getTossAppVersion\")(),o=p(\"getPlatformOS\")()===\"ios\"?e.ios:e.android;return o===void 0?!1:o===\"always\"?!0:o===\"never\"?!1:Ae(r,o)>=0}function re(e){return d(\"processProductGrant\")(e)}var sr={createOneTimePurchaseOrder:e=>{let t=H({android:\"5.219.0\",ios:\"5.219.0\"}),r=()=>{};if(!t)return r;let n=H({android:\"5.231.1\",ios:\"5.230.0\"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A(\"requestOneTimePurchase\")({options:{sku:i},onEvent:async l=>{if(l.type===\"purchased\"){let u=await o.processProductGrant({orderId:l.data.orderId});await re({orderId:l.data.orderId,isProductGranted:u}).catch(a)}else s(l)},onError:l=>{a(l)}}):(d(\"iapCreateOneTimePurchaseOrder\")({productId:i}).then(u=>{Promise.resolve(o.processProductGrant({orderId:u.orderId})).then(()=>{s({type:\"success\",data:u})}).catch(f=>{a(f)})}).catch(u=>{a(u)}),r)},createSubscriptionPurchaseOrder:e=>{let t=H({android:\"5.248.0\",ios:\"5.249.0\"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:m}=n;return A(\"requestSubscriptionPurchase\")({options:{sku:a,offerId:i??null},onEvent:async u=>{if(u.type===\"purchased\"){let f=await m({orderId:u.data.orderId,subscriptionId:u.data.subscriptionId});await re({orderId:u.data.orderId,isProductGranted:f}).catch(s)}else o(u)},onError:u=>{s(u)}})},getProductItemList:d(\"iapGetProductItemList\"),getPendingOrders:d(\"getPendingOrders\"),getCompletedOrRefundedOrders:d(\"getCompletedOrRefundedOrders\"),completeProductGrant:d(\"completeProductGrant\"),getSubscriptionInfo:d(\"getSubscriptionInfo\")},ar=p(\"getSafeAreaInsets\");var ir=p(\"getSafeAreaInsets\");var dr={loadAppsInTossAdMob:Object.assign(A(\"loadAppsInTossAdMob\"),{isSupported:p(\"loadAppsInTossAdMob_isSupported\")}),showAppsInTossAdMob:Object.assign(A(\"showAppsInTossAdMob\"),{isSupported:p(\"showAppsInTossAdMob_isSupported\")}),isAppsInTossAdMobLoaded:Object.assign(d(\"isAppsInTossAdMobLoaded\"),{isSupported:p(\"isAppsInTossAdMobLoaded_isSupported\")})};var cr={getDeploymentId:p(\"getDeploymentId\")},ur=p(\"deploymentId\"),pr=p(\"brandDisplayName\"),mr=p(\"brandIcon\"),lr=p(\"brandPrimaryColor\");var gr={addAccessoryButton:d(\"addAccessoryButton\"),removeAccessoryButton:d(\"removeAccessoryButton\")},_e=d(\"requestPermission\"),Ce=d(\"getPermission\"),Se=d(\"openPermissionDialog\");function I({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await _e(e)===\"denied\")throw new r;return t(...o)};return n.getPermission=()=>Ce(e),n.openPermissionDialog=()=>Se(e),n}var vr=I({handler:e=>d(\"fetchAlbumPhotos\")(e),permission:{name:\"photos\",access:\"read\"},error:$}),wr=I({handler:e=>d(\"fetchContacts\")(e),permission:{name:\"contacts\",access:\"read\"},error:j}),br=I({handler:e=>d(\"getCurrentLocation\")(e),permission:{name:\"geolocation\",access:\"access\"},error:V}),_r=I({handler:e=>d(\"openCamera\")(e),permission:{name:\"camera\",access:\"access\"},error:K}),Sr=I({handler:e=>d(\"setClipboardText\")(e),permission:{name:\"clipboard\",access:\"write\"},error:Y}),Tr=I({handler:()=>d(\"getClipboardText\")(),permission:{name:\"clipboard\",access:\"read\"},error:X}),Ie=d(\"getPermission\"),Te=d(\"openPermissionDialog\"),ce=e=>A(\"updateLocationEvent\")({...e,onError:t=>{let r=new J;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ce.getPermission=()=>Ie({name:\"geolocation\",access:\"access\"});ce.openPermissionDialog=()=>Te({name:\"geolocation\",access:\"access\"});var Rr=Object.assign(A(\"loadFullScreenAd\"),{isSupported:p(\"loadFullScreenAd_isSupported\")}),Lr=Object.assign(A(\"showFullScreenAd\"),{isSupported:p(\"showFullScreenAd_isSupported\")}),P=new WeakMap;function ye(e,t){let r=P.get(e);if(r)return r;let n=t(),o=!1,s={destroy(){o||(o=!0,P.get(e)===s&&P.delete(e),n.destroy())}};return P.set(e,s),s}function Re(){P=new WeakMap}var Le=d(\"openURL\");function Pe(e){let t=xe(e);return Le(t)}function xe(e){return[\"http://\",\"https://\"].some(r=>e.startsWith(r))?De(e):e}function De(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var ne=\"https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js\",oe=15e3,N=null;function C(){if(!(typeof window>\"u\"))return window.TossAdsSpaceKit}function Ne(){if(typeof window>\"u\"||typeof document>\"u\")return Promise.reject(new Error(\"Ads SDK can only be loaded in a browser environment.\"));let e=C();if(e)return Promise.resolve(e);if(N)return N;let t=new Promise((r,n)=>{let o=document.createElement(\"script\"),s=()=>{o.removeEventListener(\"load\",a),o.removeEventListener(\"error\",i),window.clearTimeout(m),N=null},a=()=>{let l=C();if(l){s(),r(l);return}s(),n(new Error(\"Ads SDK script loaded but window.TossAdsSpaceKit was not exposed.\"))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${ne}.`))},m=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${oe}ms.`))},oe);o.addEventListener(\"load\",a),o.addEventListener(\"error\",i),o.async=!0,o.src=ne,document.head.appendChild(o)});return N=t,t}var _=Object.assign(A(\"fetchTossAd\"),{isSupported:p(\"fetchTossAd_isSupported\")}),Me=d(\"tossAdEventLog\"),Fe=new Set([\"1\",\"2\"]),ue=\"\\uC798\\uBABB\\uB41C \\uC694\\uCCAD\\uC774\\uC5D0\\uC694. \\uD544\\uC694\\uD55C \\uAC12\\uC774 \\uBE44\\uC5B4 \\uC788\\uC5B4\\uC694.\";function M(e){return e.trim()}function U(){return new Error(ue)}function Ge(){return{resultType:\"FAIL\",error:{reason:ue}}}function Be(e){return new Promise((t,r)=>{if(!_.isSupported()){r(new Error(\"fetchTossAd is not supported in this environment.\"));return}let n=M(e.adGroupId);if(n.length===0){r(U());return}return _({options:{...e,adGroupId:n},onEvent:t,onError:r})})}function se(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>Fe.has(String(r.styleId))):[];return{requestId:e.requestId??\"\",status:e.status??\"OK\",ads:t,ext:e.ext}}function ke(e){return Oe(e)?e.resultType!==\"SUCCESS\"?e:e.success?{...e,success:se(e.success)}:{resultType:\"FAIL\",error:{reason:\"fetchTossAd returned SUCCESS without payload\"}}:Ve(e)?{resultType:\"SUCCESS\",success:se(e)}:{resultType:\"FAIL\",error:{reason:\"Invalid response from fetchTossAd\"}}}function Oe(e){return!!(e&&typeof e==\"object\"&&\"resultType\"in e)}function Ve(e){return!!(e&&typeof e==\"object\"&&\"ads\"in e)}function He(){return async(e,t)=>{let r=M(t.spaceUnitId);if(r.length===0)return Ge();try{let n=await Be({adGroupId:r,sdkId:\"108\",availableStyleIds:[\"1\",\"2\"]});return ke(n)}catch(n){return{resultType:\"FAIL\",error:{reason:n instanceof Error?n.message:\"Unknown fetchTossAd error\"}}}}}var L=null;function Ue(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(C()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ne().then(a=>{if(a.isInitialized())return;let m={environment:\"live\",customAdFetcher:He(),opener:Pe};a.init(m)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function We(e,t,r={}){let{callbacks:n}=r,o=M(e),s=a=>{let i=a instanceof Error?a:new Error(String(a));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:o,adMetadata:{},error:{code:0,message:i.message}})};try{let a=o;if(a.length===0)throw U();let i=C();if(!i)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!i.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let m=typeof t==\"string\"?document.querySelector(t):t;if(!m)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let l={spaceId:a,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:me(o,r.callbacks)};i.banner.createSlot(m,l)}catch(a){s(a)}}var qe=\"16px 20px\",ze=\"20px\",$e=\"auto\",je=\"blackAndWhite\",Ke=\"expanded\",h=\"toss-ads-attach\",ae=\"toss-ads-attach-style\",pe=\"data-toss-ads-attach-banner-wrapper\";function Je(e){let t=e.ownerDocument;if(!t||t.getElementById(ae))return;let r=t.createElement(\"style\");r.id=ae,r.textContent=`\n .${h} { background: #ffffff; }\n .${h}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${h} { background: #17171c; }\n .${h}.toss-ads-tone-grey { background: #101013; }\n }\n .${h}.toss-ads-theme-light { background: #ffffff; }\n .${h}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${h}.toss-ads-theme-dark { background: #17171c; }\n .${h}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Xe(e){Array.from(e.children).forEach(t=>{t instanceof HTMLElement&&t.getAttribute(pe)===\"true\"&&e.removeChild(t)})}function Ye(e,t,r={}){let{callbacks:n,theme:o=$e,tone:s=je,variant:a=Ke}=r,i=M(e),m=u=>{let f=u instanceof Error?u:new Error(String(u));n?.onAdFailedToRender?.({slotId:\"\",adGroupId:i,adMetadata:{},error:{code:0,message:f.message}})},l=me(i,n);try{let u=i;if(u.length===0)throw U();let f=C();if(!f)throw new Error(\"[toss-ad] Call initialize() before attaching an ad.\");if(!f.banner)throw new Error(\"[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.\");let R=typeof t==\"string\"?document.querySelector(t):t;if(!R)throw new Error(`[toss-ad] Failed to find target element: ${t}`);return ye(R,()=>{let g=document.createElement(\"div\");g.style.width=\"100%\",g.style.height=\"100%\",g.style.boxSizing=\"border-box\",g.style.display=\"flex\",g.style.flexDirection=\"column\",g.style.justifyContent=\"center\",g.style.overflow=\"hidden\",g.setAttribute(pe,\"true\"),a===\"card\"&&(g.style.padding=\"0 10px\");let w=document.createElement(\"div\");w.classList.add(h),s===\"grey\"&&w.classList.add(\"toss-ads-tone-grey\"),o===\"light\"?w.classList.add(\"toss-ads-theme-light\"):o===\"dark\"&&w.classList.add(\"toss-ads-theme-dark\"),a===\"card\"&&(w.style.borderRadius=\"16px\",w.style.overflow=\"hidden\"),g.appendChild(w);let x=!1,W=null;try{Je(R),Xe(R),R.appendChild(g),x=!0;let O={spaceId:u,autoLoad:!0,theme:o===\"auto\"?void 0:o,renderPadding:ge=>ge===\"1\"?qe:ze,callbacks:l};W=f.banner.createSlot(w,O)}catch(O){throw x&&g.parentNode&&g.parentNode.removeChild(g),O}return{destroy(){W?.destroy(),x&&g.parentNode&&g.parentNode.removeChild(g),x=!1}}})}catch(u){return m(u),{destroy(){}}}}function Ze(e){let t=C();t?.banner&&t.banner.destroy(e)}function Qe(){let e=C();e?.banner&&(e.banner.destroyAll(),Re())}function me(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Me({log_name:\"display_ads_all::impression__1px_banner\",log_type:\"event\",params:{event_type:\"impression\",schema_id:1812034,request_id:n?.adMetadata?.requestId??\"\"}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:\"UNKNOWN\"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Pr={initialize:Object.assign(Ue,{isSupported:_.isSupported}),attach:Object.assign(We,{isSupported:_.isSupported}),attachBanner:Object.assign(Ye,{isSupported:_.isSupported}),destroy:Object.assign(Ze,{isSupported:_.isSupported}),destroyAll:Object.assign(Qe,{isSupported:_.isSupported})},xr=Object.assign(d(\"getServerTime\"),{isSupported:p(\"getServerTime_isSupported\")}),Dr=Object.assign(d(\"requestReview\"),{isSupported:p(\"requestReview_isSupported\")});var F=class{_log=d(\"debugLog\");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:\"debug\",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType===\"game\",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var G=class{callbacks={};on(t,r){return typeof this.callbacks[t]>\"u\"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p(\"getAppName\")(),deploymentId:p(\"getDeploymentId\")(),webViewType:p(\"getWebViewType\")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new G,debugLogger:new F};var T=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function B(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!==\"game\"||typeof caches>\"u\")return;let e=\"@apps-in-toss/caches/\",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener(\"load\",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),B(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!T.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get(\"ETag\"),u=i.headers.get(\"Last-Modified\");l&&s.headers.set(\"If-None-Match\",l),u&&s.headers.set(\"If-Modified-Since\",u);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let m=await r.call(n,s);return a.put(s,m.clone()),m})})();B(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit(\"fetchRequest\",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit(\"fetchResponse\",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit(\"fetchError\",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit(\"webglGetContext\",{canvas:t,context:n}),n}});var le=window.__appsInToss.debugLogger;le.log(\"load_start\",{});window.addEventListener(\"load\",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.(\"navigation\")[0]??null,r=typeof e<\"u\"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};le.log(\"load_complete\",{isNavigationDebugSupported:r,...n})});function y(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>\"u\"||typeof performance.memory.usedJSHeapSize>\"u\"||typeof performance.memory.totalJSHeapSize>\"u\"||typeof performance.memory.jsHeapSizeLimit>\"u\")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:y(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:y(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:y(performance.memory.jsHeapSizeLimit/1024,2)})}e(\"memory_usage_first_0s\"),setTimeout(()=>e(\"memory_usage_first_1s\"),1e3),setTimeout(()=>e(\"memory_usage_first_10s\"),1e4),setTimeout(()=>e(\"memory_usage_first_30s\"),3e4),setTimeout(()=>e(\"memory_usage_first_60s\"),6e4),setInterval(()=>e(\"memory_usage_every_180s\"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>\"u\"||typeof PerformanceObserver>\"u\")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name===\"first-paint\"?e.log(\"first_paint\",{fpStartAtMs:t+a.startTime}):a.name===\"first-contentful-paint\"&&e.log(\"first_contentful_paint\",{fcpStartAtMs:t+a.startTime})})}).observe({type:\"paint\"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log(\"largest_contentful_paint\",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:\"largest-contentful-paint\"})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.eventEmitter.on(\"webglGetContext\",({canvas:t,context:r})=>{if(t.getAttribute(\"id\")!==\"unity-canvas\")return;e();let n=r.getExtension(\"WEBGL_debug_renderer_info\"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log(\"unity_webgl_info\",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!==\"game\")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on(\"fetchRequest\",({request:n})=>{T.test(n.url)&&e.log(\"game_resource_download_start\",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log(\"game_resource_download_error\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:\"Unknown Error\"})}t.on(\"fetchResponse\",async({request:n,requestAt:o,response:s})=>{if(!T.test(n.url))return;let a=await s.clone().blob().then(m=>y(m.size/1024,2)).catch(m=>(r({request:n,requestAt:o,error:m}),null));if(a===null)return;let i=Date.now();e.log(\"game_resource_download_end\",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on(\"fetchError\",async({request:n,requestAt:o,error:s})=>{T.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var k=[];function et(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){k.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function tt(){if(k.length===0)return;let e=k;k=[];let t=rt(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log(\"fps_every_300s\",r)}function rt(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>et(),1e3);setInterval(()=>tt(),3e5);})();\n";
3
3
 
4
4
  export { afterDocumentLoad, beforeDocumentLoad };
package/dist/index.js CHANGED
@@ -7,4 +7,4 @@
7
7
  -webkit-touch-callout: none;
8
8
  }
9
9
  \`;document.head.appendChild(e);})();
10
- `,m='"use strict";(()=>{var de=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,O=()=>Math.random().toString(36).substring(2,15),B=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(B(i))})),w.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function R(e){return t=>{let r=O(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(B(o))})];return w.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function g(e){return()=>w.getConstant(e)}var ue=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ue());var Xe=d("closeView"),Ye=d("generateHapticFeedback"),Ze=d("share"),Qe=d("setSecureScreen"),et=d("setScreenAwakeMode"),tt=d("getNetworkStatus"),rt=d("setIosSwipeGestureEnabled"),nt=d("openURL"),ot=d("openPermissionDialog"),st=d("getPermission"),at=d("requestPermission"),it=g("setClipboardText"),ct=g("getClipboardText"),dt=g("fetchContacts"),ut=g("fetchAlbumPhotos"),pt=g("getCurrentLocation"),mt=g("openCamera"),lt=d("appLogin"),gt=d("eventLog"),ft=d("getTossShareLink"),vt=d("setDeviceOrientation"),wt=d("checkoutPayment"),ht=d("saveBase64Data"),Et=d("appsInTossSignTossCert"),bt=d("getGameCenterGameProfile"),At=d("openGameCenterLeaderboard"),_t=d("submitGameCenterLeaderBoardScore"),St=d("getUserKeyForGame"),Ct=d("grantPromotionReward"),It=d("grantPromotionRewardForGame"),Tt=d("getIsTossLoginIntegratedService"),yt=d("getServerTime"),Lt=d("requestReview"),Rt=g("getLocale"),Pt=g("getSchemeUri"),xt=g("getPlatformOS"),Dt=g("getOperationalEnvironment"),Nt=g("getTossAppVersion"),Mt=g("getDeviceId"),Ft=g("getGroupId"),kt=R("contactsViral"),Gt=R("startUpdateLocation"),Ot=R("onVisibilityChangedByTransparentServiceWeb");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},V=class extends S{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},H=class extends S{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},q=class extends S{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var k=class extends S{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},U=k,W=class extends S{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},z=class extends S{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var pe=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new pe,te=()=>Math.random().toString(36).substring(2,15),re=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=te(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(re(i))})),h.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function E(e){return t=>{let r=te(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(re(o))})];return h.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>h.getConstant(e)}var Kt={getItem:c("getStorageItem"),setItem:c("setStorageItem"),removeItem:c("removeStorageItem"),clearItems:c("clearItems")},me=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>["*","x","X"].includes(e),j=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},le=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ge=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=le(j(e),j(t));return r>n?1:r<n?-1:0},K=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(me);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},J=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=ge(o,s);if(a!==0)return a}return 0},fe=(e,t)=>{let r=K(e),n=K(t),o=r.pop(),s=n.pop(),a=J(r,n);return a!==0?a:o&&s?J(o.split("."),s.split(".")):o?-1:s?1:0};function G(e){if(p("getOperationalEnvironment")()==="sandbox")return!0;let r=p("getTossAppVersion")(),o=p("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:fe(r,o)>=0}function X(e){return c("processProductGrant")(e)}var Jt={createOneTimePurchaseOrder:e=>{let t=G({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=G({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?E("requestOneTimePurchase")({options:{sku:i},onEvent:async l=>{if(l.type==="purchased"){let m=await o.processProductGrant({orderId:l.data.orderId});await X({orderId:l.data.orderId,isProductGranted:m}).catch(a)}else s(l)},onError:l=>{a(l)}}):(c("iapCreateOneTimePurchaseOrder")({productId:i}).then(m=>{Promise.resolve(o.processProductGrant({orderId:m.orderId})).then(()=>{s({type:"success",data:m})}).catch(f=>{a(f)})}).catch(m=>{a(m)}),r)},createSubscriptionPurchaseOrder:e=>{let t=G({android:"5.248.0",ios:"5.249.0"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:u}=n;return E("requestSubscriptionPurchase")({options:{sku:a,offerId:i??null},onEvent:async m=>{if(m.type==="purchased"){let f=await u({orderId:m.data.orderId,subscriptionId:m.data.subscriptionId});await X({orderId:m.data.orderId,isProductGranted:f}).catch(s)}else o(m)},onError:m=>{s(m)}})},getProductItemList:c("iapGetProductItemList"),getPendingOrders:c("getPendingOrders"),getCompletedOrRefundedOrders:c("getCompletedOrRefundedOrders"),completeProductGrant:c("completeProductGrant"),getSubscriptionInfo:c("getSubscriptionInfo")},Xt=p("getSafeAreaInsets");var Yt=p("getSafeAreaInsets");var Zt={loadAppsInTossAdMob:Object.assign(E("loadAppsInTossAdMob"),{isSupported:p("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(E("showAppsInTossAdMob"),{isSupported:p("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(c("isAppsInTossAdMobLoaded"),{isSupported:p("isAppsInTossAdMobLoaded_isSupported")})};var Qt={getDeploymentId:p("getDeploymentId")},er=p("deploymentId"),tr=p("brandDisplayName"),rr=p("brandIcon"),nr=p("brandPrimaryColor");var or={addAccessoryButton:c("addAccessoryButton"),removeAccessoryButton:c("removeAccessoryButton")},ve=c("requestPermission"),we=c("getPermission"),he=c("openPermissionDialog");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ve(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>we(e),n.openPermissionDialog=()=>he(e),n}var ar=C({handler:e=>c("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:V}),cr=C({handler:e=>c("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:H}),ur=C({handler:e=>c("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:k}),mr=C({handler:e=>c("openCamera")(e),permission:{name:"camera",access:"access"},error:q}),gr=C({handler:e=>c("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:z}),vr=C({handler:()=>c("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:W}),Ee=c("getPermission"),be=c("openPermissionDialog"),ne=e=>E("updateLocationEvent")({...e,onError:t=>{let r=new U;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ne.getPermission=()=>Ee({name:"geolocation",access:"access"});ne.openPermissionDialog=()=>be({name:"geolocation",access:"access"});var hr=Object.assign(E("loadFullScreenAd"),{isSupported:p("loadFullScreenAd_isSupported")}),Er=Object.assign(E("showFullScreenAd"),{isSupported:p("showFullScreenAd_isSupported")}),Ae=c("openURL");function _e(e){let t=Se(e);return Ae(t)}function Se(e){return["http://","https://"].some(r=>e.startsWith(r))?Ce(e):e}function Ce(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var Y="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",Z=15e3,P=null;function _(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ie(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=_();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(u),P=null},a=()=>{let l=_();if(l){s(),r(l);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${Y}.`))},u=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${Z}ms.`))},Z);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=Y,document.head.appendChild(o)});return P=t,t}var A=Object.assign(E("fetchTossAd"),{isSupported:p("fetchTossAd_isSupported")}),Te=c("tossAdEventLog"),ye=new Set(["1","2"]);function Le(e){return new Promise((t,r)=>{if(!A.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return A({options:e,onEvent:t,onError:r})})}function Q(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Re(e){return Pe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:Q(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:xe(e)?{resultType:"SUCCESS",success:Q(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function Pe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function xe(e){return!!(e&&typeof e=="object"&&"ads"in e)}function De(){return async(e,t)=>{try{let r=await Le({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Re(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var L=null;function Ne(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(_()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ie().then(a=>{if(a.isInitialized())return;let u={environment:"live",customAdFetcher:De(),opener:_e};a.init(u)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function Me(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=_();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let u={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:oe(e,r.callbacks)};a.banner.createSlot(i,u)}catch(s){o(s)}}var Fe="16px 20px",ke="20px",Ge="auto",Oe="blackAndWhite",Be="expanded",v="toss-ads-attach",ee="toss-ads-attach-style";function Ve(e){let t=e.ownerDocument;if(!t||t.getElementById(ee))return;let r=t.createElement("style");r.id=ee,r.textContent=`\n .${v} { background: #ffffff; }\n .${v}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${v} { background: #17171c; }\n .${v}.toss-ads-tone-grey { background: #101013; }\n }\n .${v}.toss-ads-theme-light { background: #ffffff; }\n .${v}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${v}.toss-ads-theme-dark { background: #17171c; }\n .${v}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function He(e,t,r={}){let{callbacks:n,theme:o=Ge,tone:s=Oe,variant:a=Be}=r,i=document.createElement("div");i.style.width="100%",i.style.height="100%",i.style.boxSizing="border-box",i.style.display="flex",i.style.flexDirection="column",i.style.justifyContent="center",i.style.overflow="hidden",a==="card"&&(i.style.padding="0 10px");let u=document.createElement("div");u.classList.add(v),s==="grey"&&u.classList.add("toss-ads-tone-grey"),o==="light"?u.classList.add("toss-ads-theme-light"):o==="dark"&&u.classList.add("toss-ads-theme-dark"),a==="card"&&(u.style.borderRadius="16px",u.style.overflow="hidden"),i.appendChild(u);let l=!1,m=null,f=b=>{let y=b instanceof Error?b:new Error(String(b));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},ae=oe(e,n);try{let b=e,y=_();if(!y)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!y.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let F=typeof t=="string"?document.querySelector(t):t;if(!F)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ve(F),F.appendChild(i),l=!0;let ie={spaceId:b,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ce=>ce==="1"?Fe:ke,callbacks:ae};m=y.banner.createSlot(u,ie)}catch(b){l&&i.parentNode&&i.parentNode.removeChild(i),f(b)}return{destroy(){m?.destroy(),l&&i.parentNode&&i.parentNode.removeChild(i)}}}function qe(e){let t=_();t?.banner&&t.banner.destroy(e)}function Ue(){let e=_();e?.banner&&e.banner.destroyAll()}function oe(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var br={initialize:Object.assign(Ne,{isSupported:A.isSupported}),attach:Object.assign(Me,{isSupported:A.isSupported}),attachBanner:Object.assign(He,{isSupported:A.isSupported}),destroy:Object.assign(qe,{isSupported:A.isSupported}),destroyAll:Object.assign(Ue,{isSupported:A.isSupported})},Ar=Object.assign(c("getServerTime"),{isSupported:p("getServerTime_isSupported")}),_r=Object.assign(c("requestReview"),{isSupported:p("requestReview_isSupported")});var x=class{_log=c("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){return typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p("getAppName")(),deploymentId:p("getDeploymentId")(),webViewType:p("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new x};var I=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!I.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get("ETag"),m=i.headers.get("Last-Modified");l&&s.headers.set("If-None-Match",l),m&&s.headers.set("If-Modified-Since",m);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let u=await r.call(n,s);return a.put(s,u.clone()),u})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit("fetchError",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit("webglGetContext",{canvas:t,context:n}),n}});var se=window.__appsInToss.debugLogger;se.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};se.log("load_complete",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.eventEmitter.on("webglGetContext",({canvas:t,context:r})=>{if(t.getAttribute("id")!=="unity-canvas")return;e();let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:n})=>{I.test(n.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log("game_resource_download_error",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:"Unknown Error"})}t.on("fetchResponse",async({request:n,requestAt:o,response:s})=>{if(!I.test(n.url))return;let a=await s.clone().blob().then(u=>T(u.size/1024,2)).catch(u=>(r({request:n,requestAt:o,error:u}),null));if(a===null)return;let i=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on("fetchError",async({request:n,requestAt:o,error:s})=>{I.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var M=[];function We(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){M.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function ze(){if(M.length===0)return;let e=M;M=[];let t=$e(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log("fps_every_300s",r)}function $e(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>We(),1e3);setInterval(()=>ze(),3e5);})();\n';0&&(module.exports={afterDocumentLoad,beforeDocumentLoad});
10
+ `,m='"use strict";(()=>{var fe=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},E=new fe,q=()=>Math.random().toString(36).substring(2,15),z=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(E.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(E.on(`${e}/reject/${r}`,i=>{o(),a(z(i))})),E.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function D(e){return t=>{let r=q(),n=[E.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),E.on(`${e}/onError/${r}`,o=>{t.onError(z(o))})];return E.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{E.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function v(e){return()=>E.getConstant(e)}var ve=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ve());var at=c("closeView"),it=c("generateHapticFeedback"),dt=c("share"),ct=c("setSecureScreen"),ut=c("setScreenAwakeMode"),pt=c("getNetworkStatus"),mt=c("setIosSwipeGestureEnabled"),lt=c("openURL"),gt=c("openPermissionDialog"),ft=c("getPermission"),vt=c("requestPermission"),ht=v("setClipboardText"),wt=v("getClipboardText"),Et=v("fetchContacts"),bt=v("fetchAlbumPhotos"),At=v("getCurrentLocation"),_t=v("openCamera"),Ct=c("appLogin"),St=c("eventLog"),It=c("getTossShareLink"),Tt=c("setDeviceOrientation"),yt=c("checkoutPayment"),Rt=c("saveBase64Data"),Lt=c("appsInTossSignTossCert"),Pt=c("getGameCenterGameProfile"),xt=c("openGameCenterLeaderboard"),Dt=c("submitGameCenterLeaderBoardScore"),Nt=c("getUserKeyForGame"),Mt=c("grantPromotionReward"),Ft=c("grantPromotionRewardForGame"),Gt=c("getIsTossLoginIntegratedService"),Bt=c("getServerTime"),kt=c("requestReview"),Ot=v("getLocale"),Vt=v("getSchemeUri"),Ht=v("getPlatformOS"),Ut=v("getOperationalEnvironment"),Wt=v("getTossAppVersion"),qt=v("getDeviceId"),zt=v("getGroupId"),$t=D("contactsViral"),jt=D("startUpdateLocation"),Kt=D("onVisibilityChangedByTransparentServiceWeb");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},$=class extends S{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},j=class extends S{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},K=class extends S{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var V=class extends S{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},J=V,X=class extends S{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},Y=class extends S{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var he=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},b=new he,ie=()=>Math.random().toString(36).substring(2,15),de=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=ie(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(b.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(b.on(`${e}/reject/${r}`,i=>{o(),a(de(i))})),b.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=ie(),n=[b.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),b.on(`${e}/onError/${r}`,o=>{t.onError(de(o))})];return b.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{b.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>b.getConstant(e)}var or={getItem:d("getStorageItem"),setItem:d("setStorageItem"),removeItem:d("removeStorageItem"),clearItems:d("clearItems")},we=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,Z=e=>["*","x","X"].includes(e),Q=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},Ee=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],be=(e,t)=>{if(Z(e)||Z(t))return 0;let[r,n]=Ee(Q(e),Q(t));return r>n?1:r<n?-1:0},ee=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(we);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},te=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=be(o,s);if(a!==0)return a}return 0},Ae=(e,t)=>{let r=ee(e),n=ee(t),o=r.pop(),s=n.pop(),a=te(r,n);return a!==0?a:o&&s?te(o.split("."),s.split(".")):o?-1:s?1:0};function H(e){if(p("getOperationalEnvironment")()==="sandbox")return!0;let r=p("getTossAppVersion")(),o=p("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:Ae(r,o)>=0}function re(e){return d("processProductGrant")(e)}var sr={createOneTimePurchaseOrder:e=>{let t=H({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=H({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A("requestOneTimePurchase")({options:{sku:i},onEvent:async l=>{if(l.type==="purchased"){let u=await o.processProductGrant({orderId:l.data.orderId});await re({orderId:l.data.orderId,isProductGranted:u}).catch(a)}else s(l)},onError:l=>{a(l)}}):(d("iapCreateOneTimePurchaseOrder")({productId:i}).then(u=>{Promise.resolve(o.processProductGrant({orderId:u.orderId})).then(()=>{s({type:"success",data:u})}).catch(f=>{a(f)})}).catch(u=>{a(u)}),r)},createSubscriptionPurchaseOrder:e=>{let t=H({android:"5.248.0",ios:"5.249.0"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:m}=n;return A("requestSubscriptionPurchase")({options:{sku:a,offerId:i??null},onEvent:async u=>{if(u.type==="purchased"){let f=await m({orderId:u.data.orderId,subscriptionId:u.data.subscriptionId});await re({orderId:u.data.orderId,isProductGranted:f}).catch(s)}else o(u)},onError:u=>{s(u)}})},getProductItemList:d("iapGetProductItemList"),getPendingOrders:d("getPendingOrders"),getCompletedOrRefundedOrders:d("getCompletedOrRefundedOrders"),completeProductGrant:d("completeProductGrant"),getSubscriptionInfo:d("getSubscriptionInfo")},ar=p("getSafeAreaInsets");var ir=p("getSafeAreaInsets");var dr={loadAppsInTossAdMob:Object.assign(A("loadAppsInTossAdMob"),{isSupported:p("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(A("showAppsInTossAdMob"),{isSupported:p("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(d("isAppsInTossAdMobLoaded"),{isSupported:p("isAppsInTossAdMobLoaded_isSupported")})};var cr={getDeploymentId:p("getDeploymentId")},ur=p("deploymentId"),pr=p("brandDisplayName"),mr=p("brandIcon"),lr=p("brandPrimaryColor");var gr={addAccessoryButton:d("addAccessoryButton"),removeAccessoryButton:d("removeAccessoryButton")},_e=d("requestPermission"),Ce=d("getPermission"),Se=d("openPermissionDialog");function I({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await _e(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>Ce(e),n.openPermissionDialog=()=>Se(e),n}var vr=I({handler:e=>d("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:$}),wr=I({handler:e=>d("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:j}),br=I({handler:e=>d("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:V}),_r=I({handler:e=>d("openCamera")(e),permission:{name:"camera",access:"access"},error:K}),Sr=I({handler:e=>d("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:Y}),Tr=I({handler:()=>d("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:X}),Ie=d("getPermission"),Te=d("openPermissionDialog"),ce=e=>A("updateLocationEvent")({...e,onError:t=>{let r=new J;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ce.getPermission=()=>Ie({name:"geolocation",access:"access"});ce.openPermissionDialog=()=>Te({name:"geolocation",access:"access"});var Rr=Object.assign(A("loadFullScreenAd"),{isSupported:p("loadFullScreenAd_isSupported")}),Lr=Object.assign(A("showFullScreenAd"),{isSupported:p("showFullScreenAd_isSupported")}),P=new WeakMap;function ye(e,t){let r=P.get(e);if(r)return r;let n=t(),o=!1,s={destroy(){o||(o=!0,P.get(e)===s&&P.delete(e),n.destroy())}};return P.set(e,s),s}function Re(){P=new WeakMap}var Le=d("openURL");function Pe(e){let t=xe(e);return Le(t)}function xe(e){return["http://","https://"].some(r=>e.startsWith(r))?De(e):e}function De(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var ne="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",oe=15e3,N=null;function C(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ne(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=C();if(e)return Promise.resolve(e);if(N)return N;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(m),N=null},a=()=>{let l=C();if(l){s(),r(l);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${ne}.`))},m=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${oe}ms.`))},oe);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=ne,document.head.appendChild(o)});return N=t,t}var _=Object.assign(A("fetchTossAd"),{isSupported:p("fetchTossAd_isSupported")}),Me=d("tossAdEventLog"),Fe=new Set(["1","2"]),ue="\\uC798\\uBABB\\uB41C \\uC694\\uCCAD\\uC774\\uC5D0\\uC694. \\uD544\\uC694\\uD55C \\uAC12\\uC774 \\uBE44\\uC5B4 \\uC788\\uC5B4\\uC694.";function M(e){return e.trim()}function U(){return new Error(ue)}function Ge(){return{resultType:"FAIL",error:{reason:ue}}}function Be(e){return new Promise((t,r)=>{if(!_.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}let n=M(e.adGroupId);if(n.length===0){r(U());return}return _({options:{...e,adGroupId:n},onEvent:t,onError:r})})}function se(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>Fe.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function ke(e){return Oe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:se(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Ve(e)?{resultType:"SUCCESS",success:se(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function Oe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Ve(e){return!!(e&&typeof e=="object"&&"ads"in e)}function He(){return async(e,t)=>{let r=M(t.spaceUnitId);if(r.length===0)return Ge();try{let n=await Be({adGroupId:r,sdkId:"108",availableStyleIds:["1","2"]});return ke(n)}catch(n){return{resultType:"FAIL",error:{reason:n instanceof Error?n.message:"Unknown fetchTossAd error"}}}}}var L=null;function Ue(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(C()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ne().then(a=>{if(a.isInitialized())return;let m={environment:"live",customAdFetcher:He(),opener:Pe};a.init(m)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function We(e,t,r={}){let{callbacks:n}=r,o=M(e),s=a=>{let i=a instanceof Error?a:new Error(String(a));n?.onAdFailedToRender?.({slotId:"",adGroupId:o,adMetadata:{},error:{code:0,message:i.message}})};try{let a=o;if(a.length===0)throw U();let i=C();if(!i)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!i.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let m=typeof t=="string"?document.querySelector(t):t;if(!m)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let l={spaceId:a,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:me(o,r.callbacks)};i.banner.createSlot(m,l)}catch(a){s(a)}}var qe="16px 20px",ze="20px",$e="auto",je="blackAndWhite",Ke="expanded",h="toss-ads-attach",ae="toss-ads-attach-style",pe="data-toss-ads-attach-banner-wrapper";function Je(e){let t=e.ownerDocument;if(!t||t.getElementById(ae))return;let r=t.createElement("style");r.id=ae,r.textContent=`\n .${h} { background: #ffffff; }\n .${h}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${h} { background: #17171c; }\n .${h}.toss-ads-tone-grey { background: #101013; }\n }\n .${h}.toss-ads-theme-light { background: #ffffff; }\n .${h}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${h}.toss-ads-theme-dark { background: #17171c; }\n .${h}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Xe(e){Array.from(e.children).forEach(t=>{t instanceof HTMLElement&&t.getAttribute(pe)==="true"&&e.removeChild(t)})}function Ye(e,t,r={}){let{callbacks:n,theme:o=$e,tone:s=je,variant:a=Ke}=r,i=M(e),m=u=>{let f=u instanceof Error?u:new Error(String(u));n?.onAdFailedToRender?.({slotId:"",adGroupId:i,adMetadata:{},error:{code:0,message:f.message}})},l=me(i,n);try{let u=i;if(u.length===0)throw U();let f=C();if(!f)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!f.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let R=typeof t=="string"?document.querySelector(t):t;if(!R)throw new Error(`[toss-ad] Failed to find target element: ${t}`);return ye(R,()=>{let g=document.createElement("div");g.style.width="100%",g.style.height="100%",g.style.boxSizing="border-box",g.style.display="flex",g.style.flexDirection="column",g.style.justifyContent="center",g.style.overflow="hidden",g.setAttribute(pe,"true"),a==="card"&&(g.style.padding="0 10px");let w=document.createElement("div");w.classList.add(h),s==="grey"&&w.classList.add("toss-ads-tone-grey"),o==="light"?w.classList.add("toss-ads-theme-light"):o==="dark"&&w.classList.add("toss-ads-theme-dark"),a==="card"&&(w.style.borderRadius="16px",w.style.overflow="hidden"),g.appendChild(w);let x=!1,W=null;try{Je(R),Xe(R),R.appendChild(g),x=!0;let O={spaceId:u,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ge=>ge==="1"?qe:ze,callbacks:l};W=f.banner.createSlot(w,O)}catch(O){throw x&&g.parentNode&&g.parentNode.removeChild(g),O}return{destroy(){W?.destroy(),x&&g.parentNode&&g.parentNode.removeChild(g),x=!1}}})}catch(u){return m(u),{destroy(){}}}}function Ze(e){let t=C();t?.banner&&t.banner.destroy(e)}function Qe(){let e=C();e?.banner&&(e.banner.destroyAll(),Re())}function me(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Me({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Pr={initialize:Object.assign(Ue,{isSupported:_.isSupported}),attach:Object.assign(We,{isSupported:_.isSupported}),attachBanner:Object.assign(Ye,{isSupported:_.isSupported}),destroy:Object.assign(Ze,{isSupported:_.isSupported}),destroyAll:Object.assign(Qe,{isSupported:_.isSupported})},xr=Object.assign(d("getServerTime"),{isSupported:p("getServerTime_isSupported")}),Dr=Object.assign(d("requestReview"),{isSupported:p("requestReview_isSupported")});var F=class{_log=d("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var G=class{callbacks={};on(t,r){return typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p("getAppName")(),deploymentId:p("getDeploymentId")(),webViewType:p("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new G,debugLogger:new F};var T=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function B(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),B(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!T.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get("ETag"),u=i.headers.get("Last-Modified");l&&s.headers.set("If-None-Match",l),u&&s.headers.set("If-Modified-Since",u);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let m=await r.call(n,s);return a.put(s,m.clone()),m})})();B(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit("fetchError",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit("webglGetContext",{canvas:t,context:n}),n}});var le=window.__appsInToss.debugLogger;le.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};le.log("load_complete",{isNavigationDebugSupported:r,...n})});function y(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:y(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:y(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:y(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.eventEmitter.on("webglGetContext",({canvas:t,context:r})=>{if(t.getAttribute("id")!=="unity-canvas")return;e();let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:n})=>{T.test(n.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log("game_resource_download_error",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:"Unknown Error"})}t.on("fetchResponse",async({request:n,requestAt:o,response:s})=>{if(!T.test(n.url))return;let a=await s.clone().blob().then(m=>y(m.size/1024,2)).catch(m=>(r({request:n,requestAt:o,error:m}),null));if(a===null)return;let i=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on("fetchError",async({request:n,requestAt:o,error:s})=>{T.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var k=[];function et(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){k.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function tt(){if(k.length===0)return;let e=k;k=[];let t=rt(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log("fps_every_300s",r)}function rt(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>et(),1e3);setInterval(()=>tt(),3e5);})();\n';0&&(module.exports={afterDocumentLoad,beforeDocumentLoad});
package/dist/index.mjs CHANGED
@@ -7,4 +7,4 @@ var e=`"use strict";(()=>{var e=document.createElement("style");e.textContent=\`
7
7
  -webkit-touch-callout: none;
8
8
  }
9
9
  \`;document.head.appendChild(e);})();
10
- `,t='"use strict";(()=>{var de=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},w=new de,O=()=>Math.random().toString(36).substring(2,15),B=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=O(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(w.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(w.on(`${e}/reject/${r}`,i=>{o(),a(B(i))})),w.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function R(e){return t=>{let r=O(),n=[w.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),w.on(`${e}/onError/${r}`,o=>{t.onError(B(o))})];return w.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{w.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function g(e){return()=>w.getConstant(e)}var ue=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ue());var Xe=d("closeView"),Ye=d("generateHapticFeedback"),Ze=d("share"),Qe=d("setSecureScreen"),et=d("setScreenAwakeMode"),tt=d("getNetworkStatus"),rt=d("setIosSwipeGestureEnabled"),nt=d("openURL"),ot=d("openPermissionDialog"),st=d("getPermission"),at=d("requestPermission"),it=g("setClipboardText"),ct=g("getClipboardText"),dt=g("fetchContacts"),ut=g("fetchAlbumPhotos"),pt=g("getCurrentLocation"),mt=g("openCamera"),lt=d("appLogin"),gt=d("eventLog"),ft=d("getTossShareLink"),vt=d("setDeviceOrientation"),wt=d("checkoutPayment"),ht=d("saveBase64Data"),Et=d("appsInTossSignTossCert"),bt=d("getGameCenterGameProfile"),At=d("openGameCenterLeaderboard"),_t=d("submitGameCenterLeaderBoardScore"),St=d("getUserKeyForGame"),Ct=d("grantPromotionReward"),It=d("grantPromotionRewardForGame"),Tt=d("getIsTossLoginIntegratedService"),yt=d("getServerTime"),Lt=d("requestReview"),Rt=g("getLocale"),Pt=g("getSchemeUri"),xt=g("getPlatformOS"),Dt=g("getOperationalEnvironment"),Nt=g("getTossAppVersion"),Mt=g("getDeviceId"),Ft=g("getGroupId"),kt=R("contactsViral"),Gt=R("startUpdateLocation"),Ot=R("onVisibilityChangedByTransparentServiceWeb");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},V=class extends S{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},H=class extends S{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},q=class extends S{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var k=class extends S{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},U=k,W=class extends S{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},z=class extends S{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var pe=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},h=new pe,te=()=>Math.random().toString(36).substring(2,15),re=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=te(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(h.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(h.on(`${e}/reject/${r}`,i=>{o(),a(re(i))})),h.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function E(e){return t=>{let r=te(),n=[h.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),h.on(`${e}/onError/${r}`,o=>{t.onError(re(o))})];return h.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{h.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>h.getConstant(e)}var Kt={getItem:c("getStorageItem"),setItem:c("setStorageItem"),removeItem:c("removeStorageItem"),clearItems:c("clearItems")},me=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,$=e=>["*","x","X"].includes(e),j=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},le=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],ge=(e,t)=>{if($(e)||$(t))return 0;let[r,n]=le(j(e),j(t));return r>n?1:r<n?-1:0},K=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(me);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},J=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=ge(o,s);if(a!==0)return a}return 0},fe=(e,t)=>{let r=K(e),n=K(t),o=r.pop(),s=n.pop(),a=J(r,n);return a!==0?a:o&&s?J(o.split("."),s.split(".")):o?-1:s?1:0};function G(e){if(p("getOperationalEnvironment")()==="sandbox")return!0;let r=p("getTossAppVersion")(),o=p("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:fe(r,o)>=0}function X(e){return c("processProductGrant")(e)}var Jt={createOneTimePurchaseOrder:e=>{let t=G({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=G({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?E("requestOneTimePurchase")({options:{sku:i},onEvent:async l=>{if(l.type==="purchased"){let m=await o.processProductGrant({orderId:l.data.orderId});await X({orderId:l.data.orderId,isProductGranted:m}).catch(a)}else s(l)},onError:l=>{a(l)}}):(c("iapCreateOneTimePurchaseOrder")({productId:i}).then(m=>{Promise.resolve(o.processProductGrant({orderId:m.orderId})).then(()=>{s({type:"success",data:m})}).catch(f=>{a(f)})}).catch(m=>{a(m)}),r)},createSubscriptionPurchaseOrder:e=>{let t=G({android:"5.248.0",ios:"5.249.0"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:u}=n;return E("requestSubscriptionPurchase")({options:{sku:a,offerId:i??null},onEvent:async m=>{if(m.type==="purchased"){let f=await u({orderId:m.data.orderId,subscriptionId:m.data.subscriptionId});await X({orderId:m.data.orderId,isProductGranted:f}).catch(s)}else o(m)},onError:m=>{s(m)}})},getProductItemList:c("iapGetProductItemList"),getPendingOrders:c("getPendingOrders"),getCompletedOrRefundedOrders:c("getCompletedOrRefundedOrders"),completeProductGrant:c("completeProductGrant"),getSubscriptionInfo:c("getSubscriptionInfo")},Xt=p("getSafeAreaInsets");var Yt=p("getSafeAreaInsets");var Zt={loadAppsInTossAdMob:Object.assign(E("loadAppsInTossAdMob"),{isSupported:p("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(E("showAppsInTossAdMob"),{isSupported:p("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(c("isAppsInTossAdMobLoaded"),{isSupported:p("isAppsInTossAdMobLoaded_isSupported")})};var Qt={getDeploymentId:p("getDeploymentId")},er=p("deploymentId"),tr=p("brandDisplayName"),rr=p("brandIcon"),nr=p("brandPrimaryColor");var or={addAccessoryButton:c("addAccessoryButton"),removeAccessoryButton:c("removeAccessoryButton")},ve=c("requestPermission"),we=c("getPermission"),he=c("openPermissionDialog");function C({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await ve(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>we(e),n.openPermissionDialog=()=>he(e),n}var ar=C({handler:e=>c("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:V}),cr=C({handler:e=>c("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:H}),ur=C({handler:e=>c("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:k}),mr=C({handler:e=>c("openCamera")(e),permission:{name:"camera",access:"access"},error:q}),gr=C({handler:e=>c("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:z}),vr=C({handler:()=>c("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:W}),Ee=c("getPermission"),be=c("openPermissionDialog"),ne=e=>E("updateLocationEvent")({...e,onError:t=>{let r=new U;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ne.getPermission=()=>Ee({name:"geolocation",access:"access"});ne.openPermissionDialog=()=>be({name:"geolocation",access:"access"});var hr=Object.assign(E("loadFullScreenAd"),{isSupported:p("loadFullScreenAd_isSupported")}),Er=Object.assign(E("showFullScreenAd"),{isSupported:p("showFullScreenAd_isSupported")}),Ae=c("openURL");function _e(e){let t=Se(e);return Ae(t)}function Se(e){return["http://","https://"].some(r=>e.startsWith(r))?Ce(e):e}function Ce(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var Y="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",Z=15e3,P=null;function _(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ie(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=_();if(e)return Promise.resolve(e);if(P)return P;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(u),P=null},a=()=>{let l=_();if(l){s(),r(l);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${Y}.`))},u=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${Z}ms.`))},Z);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=Y,document.head.appendChild(o)});return P=t,t}var A=Object.assign(E("fetchTossAd"),{isSupported:p("fetchTossAd_isSupported")}),Te=c("tossAdEventLog"),ye=new Set(["1","2"]);function Le(e){return new Promise((t,r)=>{if(!A.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}return A({options:e,onEvent:t,onError:r})})}function Q(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>ye.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function Re(e){return Pe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:Q(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:xe(e)?{resultType:"SUCCESS",success:Q(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function Pe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function xe(e){return!!(e&&typeof e=="object"&&"ads"in e)}function De(){return async(e,t)=>{try{let r=await Le({adGroupId:t.spaceUnitId,sdkId:"108",availableStyleIds:["1","2"]});return Re(r)}catch(r){return{resultType:"FAIL",error:{reason:r instanceof Error?r.message:"Unknown fetchTossAd error"}}}}}var L=null;function Ne(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(_()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ie().then(a=>{if(a.isInitialized())return;let u={environment:"live",customAdFetcher:De(),opener:_e};a.init(u)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function Me(e,t,r={}){let{callbacks:n}=r,o=s=>{let a=s instanceof Error?s:new Error(String(s));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:a.message}})};try{let s=e,a=_();if(!a)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!a.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let i=typeof t=="string"?document.querySelector(t):t;if(!i)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let u={spaceId:s,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:oe(e,r.callbacks)};a.banner.createSlot(i,u)}catch(s){o(s)}}var Fe="16px 20px",ke="20px",Ge="auto",Oe="blackAndWhite",Be="expanded",v="toss-ads-attach",ee="toss-ads-attach-style";function Ve(e){let t=e.ownerDocument;if(!t||t.getElementById(ee))return;let r=t.createElement("style");r.id=ee,r.textContent=`\n .${v} { background: #ffffff; }\n .${v}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${v} { background: #17171c; }\n .${v}.toss-ads-tone-grey { background: #101013; }\n }\n .${v}.toss-ads-theme-light { background: #ffffff; }\n .${v}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${v}.toss-ads-theme-dark { background: #17171c; }\n .${v}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function He(e,t,r={}){let{callbacks:n,theme:o=Ge,tone:s=Oe,variant:a=Be}=r,i=document.createElement("div");i.style.width="100%",i.style.height="100%",i.style.boxSizing="border-box",i.style.display="flex",i.style.flexDirection="column",i.style.justifyContent="center",i.style.overflow="hidden",a==="card"&&(i.style.padding="0 10px");let u=document.createElement("div");u.classList.add(v),s==="grey"&&u.classList.add("toss-ads-tone-grey"),o==="light"?u.classList.add("toss-ads-theme-light"):o==="dark"&&u.classList.add("toss-ads-theme-dark"),a==="card"&&(u.style.borderRadius="16px",u.style.overflow="hidden"),i.appendChild(u);let l=!1,m=null,f=b=>{let y=b instanceof Error?b:new Error(String(b));n?.onAdFailedToRender?.({slotId:"",adGroupId:e,adMetadata:{},error:{code:0,message:y.message}})},ae=oe(e,n);try{let b=e,y=_();if(!y)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!y.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let F=typeof t=="string"?document.querySelector(t):t;if(!F)throw new Error(`[toss-ad] Failed to find target element: ${t}`);Ve(F),F.appendChild(i),l=!0;let ie={spaceId:b,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ce=>ce==="1"?Fe:ke,callbacks:ae};m=y.banner.createSlot(u,ie)}catch(b){l&&i.parentNode&&i.parentNode.removeChild(i),f(b)}return{destroy(){m?.destroy(),l&&i.parentNode&&i.parentNode.removeChild(i)}}}function qe(e){let t=_();t?.banner&&t.banner.destroy(e)}function Ue(){let e=_();e?.banner&&e.banner.destroyAll()}function oe(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Te({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var br={initialize:Object.assign(Ne,{isSupported:A.isSupported}),attach:Object.assign(Me,{isSupported:A.isSupported}),attachBanner:Object.assign(He,{isSupported:A.isSupported}),destroy:Object.assign(qe,{isSupported:A.isSupported}),destroyAll:Object.assign(Ue,{isSupported:A.isSupported})},Ar=Object.assign(c("getServerTime"),{isSupported:p("getServerTime_isSupported")}),_r=Object.assign(c("requestReview"),{isSupported:p("requestReview_isSupported")});var x=class{_log=c("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var D=class{callbacks={};on(t,r){return typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p("getAppName")(),deploymentId:p("getDeploymentId")(),webViewType:p("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new D,debugLogger:new x};var I=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function N(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),N(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!I.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get("ETag"),m=i.headers.get("Last-Modified");l&&s.headers.set("If-None-Match",l),m&&s.headers.set("If-Modified-Since",m);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let u=await r.call(n,s);return a.put(s,u.clone()),u})})();N(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit("fetchError",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit("webglGetContext",{canvas:t,context:n}),n}});var se=window.__appsInToss.debugLogger;se.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};se.log("load_complete",{isNavigationDebugSupported:r,...n})});function T(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:T(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:T(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:T(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.eventEmitter.on("webglGetContext",({canvas:t,context:r})=>{if(t.getAttribute("id")!=="unity-canvas")return;e();let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:n})=>{I.test(n.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log("game_resource_download_error",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:"Unknown Error"})}t.on("fetchResponse",async({request:n,requestAt:o,response:s})=>{if(!I.test(n.url))return;let a=await s.clone().blob().then(u=>T(u.size/1024,2)).catch(u=>(r({request:n,requestAt:o,error:u}),null));if(a===null)return;let i=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on("fetchError",async({request:n,requestAt:o,error:s})=>{I.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var M=[];function We(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){M.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function ze(){if(M.length===0)return;let e=M;M=[];let t=$e(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log("fps_every_300s",r)}function $e(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>We(),1e3);setInterval(()=>ze(),3e5);})();\n';export{e as afterDocumentLoad,t as beforeDocumentLoad};
10
+ `,t='"use strict";(()=>{var fe=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},E=new fe,q=()=>Math.random().toString(36).substring(2,15),z=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function c(e){return(...t)=>{let r=q(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(E.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(E.on(`${e}/reject/${r}`,i=>{o(),a(z(i))})),E.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function D(e){return t=>{let r=q(),n=[E.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),E.on(`${e}/onError/${r}`,o=>{t.onError(z(o))})];return E.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{E.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function v(e){return()=>E.getConstant(e)}var ve=function(){return{emit:function(t,r){for(var n=this.events[t]||[],o=0,s=n.length;o<s;o++)n[o](r)},events:{},on:function(t,r){var n=this,o,s;return((o=this.events)[s=t]||(o[s]=[])).push(r),function(){var a;n.events[t]=(a=n.events[t])===null||a===void 0?void 0:a.filter(function(i){return r!==i})}}}};typeof window<"u"&&(window.__GRANITE_NATIVE_EMITTER=ve());var at=c("closeView"),it=c("generateHapticFeedback"),dt=c("share"),ct=c("setSecureScreen"),ut=c("setScreenAwakeMode"),pt=c("getNetworkStatus"),mt=c("setIosSwipeGestureEnabled"),lt=c("openURL"),gt=c("openPermissionDialog"),ft=c("getPermission"),vt=c("requestPermission"),ht=v("setClipboardText"),wt=v("getClipboardText"),Et=v("fetchContacts"),bt=v("fetchAlbumPhotos"),At=v("getCurrentLocation"),_t=v("openCamera"),Ct=c("appLogin"),St=c("eventLog"),It=c("getTossShareLink"),Tt=c("setDeviceOrientation"),yt=c("checkoutPayment"),Rt=c("saveBase64Data"),Lt=c("appsInTossSignTossCert"),Pt=c("getGameCenterGameProfile"),xt=c("openGameCenterLeaderboard"),Dt=c("submitGameCenterLeaderBoardScore"),Nt=c("getUserKeyForGame"),Mt=c("grantPromotionReward"),Ft=c("grantPromotionRewardForGame"),Gt=c("getIsTossLoginIntegratedService"),Bt=c("getServerTime"),kt=c("requestReview"),Ot=v("getLocale"),Vt=v("getSchemeUri"),Ht=v("getPlatformOS"),Ut=v("getOperationalEnvironment"),Wt=v("getTossAppVersion"),qt=v("getDeviceId"),zt=v("getGroupId"),$t=D("contactsViral"),jt=D("startUpdateLocation"),Kt=D("onVisibilityChangedByTransparentServiceWeb");var S=class extends Error{constructor({methodName:e,message:t}){super(),this.name=`${e} permission error`,this.message=t}},$=class extends S{constructor(){super({methodName:"fetchAlbumPhotos",message:"\\uC0AC\\uC9C4\\uCCA9 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},j=class extends S{constructor(){super({methodName:"fetchContacts",message:"\\uC5F0\\uB77D\\uCC98 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},K=class extends S{constructor(){super({methodName:"openCamera",message:"\\uCE74\\uBA54\\uB77C \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var V=class extends S{constructor(){super({methodName:"getCurrentLocation",message:"\\uC704\\uCE58 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},J=V,X=class extends S{constructor(){super({methodName:"getClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC77D\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}},Y=class extends S{constructor(){super({methodName:"setClipboardText",message:"\\uD074\\uB9BD\\uBCF4\\uB4DC \\uC4F0\\uAE30 \\uAD8C\\uD55C\\uC774 \\uAC70\\uBD80\\uB418\\uC5C8\\uC5B4\\uC694."})}};var he=class{get _window(){return typeof window<"u"?window:{ReactNativeWebView:{postMessage:()=>{}},__GRANITE_NATIVE_EMITTER:{on:()=>()=>{}},__CONSTANT_HANDLER_MAP:{}}}postMessage(e){let t=this._window.ReactNativeWebView;if(!t)throw new Error("ReactNativeWebView is not available in browser environment");t.postMessage(JSON.stringify(e))}on(e,t){let r=this._window.__GRANITE_NATIVE_EMITTER;if(!r)throw new Error("__GRANITE_NATIVE_EMITTER is not available");return r.on(e,t)}getConstant(e){let t=this._window.__CONSTANT_HANDLER_MAP;if(t&&e in t)return t[e];throw new Error(`${e} is not a constant handler`)}},b=new he,ie=()=>Math.random().toString(36).substring(2,15),de=e=>{if(e&&e.__isError){let t=new Error(e.message);for(let[r,n]of Object.entries(e))t[r]=n;return t}return e};function d(e){return(...t)=>{let r=ie(),n=[],o=()=>{for(let s of n)s()};return new Promise((s,a)=>{n.push(b.on(`${e}/resolve/${r}`,i=>{o(),s(i)})),n.push(b.on(`${e}/reject/${r}`,i=>{o(),a(de(i))})),b.postMessage({type:"method",functionName:e,eventId:r,args:t})})}}function A(e){return t=>{let r=ie(),n=[b.on(`${e}/onEvent/${r}`,o=>{t.onEvent(o)}),b.on(`${e}/onError/${r}`,o=>{t.onError(de(o))})];return b.postMessage({type:"addEventListener",functionName:e,eventId:r,args:t.options}),()=>{b.postMessage({type:"removeEventListener",functionName:e,eventId:r}),n.forEach(o=>o())}}}function p(e){return()=>b.getConstant(e)}var or={getItem:d("getStorageItem"),setItem:d("setStorageItem"),removeItem:d("removeStorageItem"),clearItems:d("clearItems")},we=/^[v^~<>=]*?(\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+)(?:\\.([x*]|\\d+))?(?:-([\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*))?(?:\\+[\\da-z\\\\-]+(?:\\.[\\da-z\\\\-]+)*)?)?)?$/i,Z=e=>["*","x","X"].includes(e),Q=e=>{let t=parseInt(e,10);return isNaN(t)?e:t},Ee=(e,t)=>typeof e==typeof t?[e,t]:[String(e),String(t)],be=(e,t)=>{if(Z(e)||Z(t))return 0;let[r,n]=Ee(Q(e),Q(t));return r>n?1:r<n?-1:0},ee=e=>{if(typeof e!="string")throw new TypeError("Invalid argument: expected a string");let t=e.match(we);if(!t)throw new Error(`Invalid semver: \'${e}\'`);let[,r,n,o,s,a]=t;return[r,n,o,s,a]},te=(e,t)=>{let r=Math.max(e.length,t.length);for(let n=0;n<r;n++){let o=e[n]??"0",s=t[n]??"0",a=be(o,s);if(a!==0)return a}return 0},Ae=(e,t)=>{let r=ee(e),n=ee(t),o=r.pop(),s=n.pop(),a=te(r,n);return a!==0?a:o&&s?te(o.split("."),s.split(".")):o?-1:s?1:0};function H(e){if(p("getOperationalEnvironment")()==="sandbox")return!0;let r=p("getTossAppVersion")(),o=p("getPlatformOS")()==="ios"?e.ios:e.android;return o===void 0?!1:o==="always"?!0:o==="never"?!1:Ae(r,o)>=0}function re(e){return d("processProductGrant")(e)}var sr={createOneTimePurchaseOrder:e=>{let t=H({android:"5.219.0",ios:"5.219.0"}),r=()=>{};if(!t)return r;let n=H({android:"5.231.1",ios:"5.230.0"}),{options:o,onEvent:s,onError:a}=e,i=o.sku??o.productId;return n?A("requestOneTimePurchase")({options:{sku:i},onEvent:async l=>{if(l.type==="purchased"){let u=await o.processProductGrant({orderId:l.data.orderId});await re({orderId:l.data.orderId,isProductGranted:u}).catch(a)}else s(l)},onError:l=>{a(l)}}):(d("iapCreateOneTimePurchaseOrder")({productId:i}).then(u=>{Promise.resolve(o.processProductGrant({orderId:u.orderId})).then(()=>{s({type:"success",data:u})}).catch(f=>{a(f)})}).catch(u=>{a(u)}),r)},createSubscriptionPurchaseOrder:e=>{let t=H({android:"5.248.0",ios:"5.249.0"}),r=()=>{};if(!t)return r;let{options:n,onEvent:o,onError:s}=e,{sku:a,offerId:i,processProductGrant:m}=n;return A("requestSubscriptionPurchase")({options:{sku:a,offerId:i??null},onEvent:async u=>{if(u.type==="purchased"){let f=await m({orderId:u.data.orderId,subscriptionId:u.data.subscriptionId});await re({orderId:u.data.orderId,isProductGranted:f}).catch(s)}else o(u)},onError:u=>{s(u)}})},getProductItemList:d("iapGetProductItemList"),getPendingOrders:d("getPendingOrders"),getCompletedOrRefundedOrders:d("getCompletedOrRefundedOrders"),completeProductGrant:d("completeProductGrant"),getSubscriptionInfo:d("getSubscriptionInfo")},ar=p("getSafeAreaInsets");var ir=p("getSafeAreaInsets");var dr={loadAppsInTossAdMob:Object.assign(A("loadAppsInTossAdMob"),{isSupported:p("loadAppsInTossAdMob_isSupported")}),showAppsInTossAdMob:Object.assign(A("showAppsInTossAdMob"),{isSupported:p("showAppsInTossAdMob_isSupported")}),isAppsInTossAdMobLoaded:Object.assign(d("isAppsInTossAdMobLoaded"),{isSupported:p("isAppsInTossAdMobLoaded_isSupported")})};var cr={getDeploymentId:p("getDeploymentId")},ur=p("deploymentId"),pr=p("brandDisplayName"),mr=p("brandIcon"),lr=p("brandPrimaryColor");var gr={addAccessoryButton:d("addAccessoryButton"),removeAccessoryButton:d("removeAccessoryButton")},_e=d("requestPermission"),Ce=d("getPermission"),Se=d("openPermissionDialog");function I({permission:e,handler:t,error:r}){let n=async(...o)=>{if(await _e(e)==="denied")throw new r;return t(...o)};return n.getPermission=()=>Ce(e),n.openPermissionDialog=()=>Se(e),n}var vr=I({handler:e=>d("fetchAlbumPhotos")(e),permission:{name:"photos",access:"read"},error:$}),wr=I({handler:e=>d("fetchContacts")(e),permission:{name:"contacts",access:"read"},error:j}),br=I({handler:e=>d("getCurrentLocation")(e),permission:{name:"geolocation",access:"access"},error:V}),_r=I({handler:e=>d("openCamera")(e),permission:{name:"camera",access:"access"},error:K}),Sr=I({handler:e=>d("setClipboardText")(e),permission:{name:"clipboard",access:"write"},error:Y}),Tr=I({handler:()=>d("getClipboardText")(),permission:{name:"clipboard",access:"read"},error:X}),Ie=d("getPermission"),Te=d("openPermissionDialog"),ce=e=>A("updateLocationEvent")({...e,onError:t=>{let r=new J;return t instanceof Error&&t.name===r.name?e.onError(r):e.onError(t)}});ce.getPermission=()=>Ie({name:"geolocation",access:"access"});ce.openPermissionDialog=()=>Te({name:"geolocation",access:"access"});var Rr=Object.assign(A("loadFullScreenAd"),{isSupported:p("loadFullScreenAd_isSupported")}),Lr=Object.assign(A("showFullScreenAd"),{isSupported:p("showFullScreenAd_isSupported")}),P=new WeakMap;function ye(e,t){let r=P.get(e);if(r)return r;let n=t(),o=!1,s={destroy(){o||(o=!0,P.get(e)===s&&P.delete(e),n.destroy())}};return P.set(e,s),s}function Re(){P=new WeakMap}var Le=d("openURL");function Pe(e){let t=xe(e);return Le(t)}function xe(e){return["http://","https://"].some(r=>e.startsWith(r))?De(e):e}function De(e){return`supertoss://web?url=${encodeURIComponent(e)}&external=true`}var ne="https://static.toss.im/ads/sdk/toss-ads-space-kit-1.3.0.js",oe=15e3,N=null;function C(){if(!(typeof window>"u"))return window.TossAdsSpaceKit}function Ne(){if(typeof window>"u"||typeof document>"u")return Promise.reject(new Error("Ads SDK can only be loaded in a browser environment."));let e=C();if(e)return Promise.resolve(e);if(N)return N;let t=new Promise((r,n)=>{let o=document.createElement("script"),s=()=>{o.removeEventListener("load",a),o.removeEventListener("error",i),window.clearTimeout(m),N=null},a=()=>{let l=C();if(l){s(),r(l);return}s(),n(new Error("Ads SDK script loaded but window.TossAdsSpaceKit was not exposed."))},i=()=>{s(),n(new Error(`Failed to load Ads SDK script from ${ne}.`))},m=window.setTimeout(()=>{s(),n(new Error(`Loading Ads SDK timed out after ${oe}ms.`))},oe);o.addEventListener("load",a),o.addEventListener("error",i),o.async=!0,o.src=ne,document.head.appendChild(o)});return N=t,t}var _=Object.assign(A("fetchTossAd"),{isSupported:p("fetchTossAd_isSupported")}),Me=d("tossAdEventLog"),Fe=new Set(["1","2"]),ue="\\uC798\\uBABB\\uB41C \\uC694\\uCCAD\\uC774\\uC5D0\\uC694. \\uD544\\uC694\\uD55C \\uAC12\\uC774 \\uBE44\\uC5B4 \\uC788\\uC5B4\\uC694.";function M(e){return e.trim()}function U(){return new Error(ue)}function Ge(){return{resultType:"FAIL",error:{reason:ue}}}function Be(e){return new Promise((t,r)=>{if(!_.isSupported()){r(new Error("fetchTossAd is not supported in this environment."));return}let n=M(e.adGroupId);if(n.length===0){r(U());return}return _({options:{...e,adGroupId:n},onEvent:t,onError:r})})}function se(e){let t=Array.isArray(e.ads)?e.ads.filter(r=>Fe.has(String(r.styleId))):[];return{requestId:e.requestId??"",status:e.status??"OK",ads:t,ext:e.ext}}function ke(e){return Oe(e)?e.resultType!=="SUCCESS"?e:e.success?{...e,success:se(e.success)}:{resultType:"FAIL",error:{reason:"fetchTossAd returned SUCCESS without payload"}}:Ve(e)?{resultType:"SUCCESS",success:se(e)}:{resultType:"FAIL",error:{reason:"Invalid response from fetchTossAd"}}}function Oe(e){return!!(e&&typeof e=="object"&&"resultType"in e)}function Ve(e){return!!(e&&typeof e=="object"&&"ads"in e)}function He(){return async(e,t)=>{let r=M(t.spaceUnitId);if(r.length===0)return Ge();try{let n=await Be({adGroupId:r,sdkId:"108",availableStyleIds:["1","2"]});return ke(n)}catch(n){return{resultType:"FAIL",error:{reason:n instanceof Error?n.message:"Unknown fetchTossAd error"}}}}}var L=null;function Ue(e){let{callbacks:t}=e,r=()=>t?.onInitialized?.(),n=a=>{let i=a instanceof Error?a:new Error(String(a));t?.onInitializationFailed?.(i)};if(C()?.isInitialized()){r();return}if(L!=null){L.then(r).catch(n);return}let s=Ne().then(a=>{if(a.isInitialized())return;let m={environment:"live",customAdFetcher:He(),opener:Pe};a.init(m)});L=s,s.then(r).catch(n).finally(()=>{L===s&&(L=null)})}function We(e,t,r={}){let{callbacks:n}=r,o=M(e),s=a=>{let i=a instanceof Error?a:new Error(String(a));n?.onAdFailedToRender?.({slotId:"",adGroupId:o,adMetadata:{},error:{code:0,message:i.message}})};try{let a=o;if(a.length===0)throw U();let i=C();if(!i)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!i.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let m=typeof t=="string"?document.querySelector(t):t;if(!m)throw new Error(`[toss-ad] Failed to find target element: ${t}`);let l={spaceId:a,autoLoad:!0,theme:r.theme,padding:r.padding,callbacks:me(o,r.callbacks)};i.banner.createSlot(m,l)}catch(a){s(a)}}var qe="16px 20px",ze="20px",$e="auto",je="blackAndWhite",Ke="expanded",h="toss-ads-attach",ae="toss-ads-attach-style",pe="data-toss-ads-attach-banner-wrapper";function Je(e){let t=e.ownerDocument;if(!t||t.getElementById(ae))return;let r=t.createElement("style");r.id=ae,r.textContent=`\n .${h} { background: #ffffff; }\n .${h}.toss-ads-tone-grey { background: #f2f4f7; }\n @media (prefers-color-scheme: dark) {\n .${h} { background: #17171c; }\n .${h}.toss-ads-tone-grey { background: #101013; }\n }\n .${h}.toss-ads-theme-light { background: #ffffff; }\n .${h}.toss-ads-theme-light.toss-ads-tone-grey { background: #f2f4f7; }\n .${h}.toss-ads-theme-dark { background: #17171c; }\n .${h}.toss-ads-theme-dark.toss-ads-tone-grey { background: #101013; }\n `;let n=t.head??t.body??t.documentElement;n&&n.appendChild(r)}function Xe(e){Array.from(e.children).forEach(t=>{t instanceof HTMLElement&&t.getAttribute(pe)==="true"&&e.removeChild(t)})}function Ye(e,t,r={}){let{callbacks:n,theme:o=$e,tone:s=je,variant:a=Ke}=r,i=M(e),m=u=>{let f=u instanceof Error?u:new Error(String(u));n?.onAdFailedToRender?.({slotId:"",adGroupId:i,adMetadata:{},error:{code:0,message:f.message}})},l=me(i,n);try{let u=i;if(u.length===0)throw U();let f=C();if(!f)throw new Error("[toss-ad] Call initialize() before attaching an ad.");if(!f.banner)throw new Error("[toss-ad] Loaded TossAdsSpaceKit does not support banner ads.");let R=typeof t=="string"?document.querySelector(t):t;if(!R)throw new Error(`[toss-ad] Failed to find target element: ${t}`);return ye(R,()=>{let g=document.createElement("div");g.style.width="100%",g.style.height="100%",g.style.boxSizing="border-box",g.style.display="flex",g.style.flexDirection="column",g.style.justifyContent="center",g.style.overflow="hidden",g.setAttribute(pe,"true"),a==="card"&&(g.style.padding="0 10px");let w=document.createElement("div");w.classList.add(h),s==="grey"&&w.classList.add("toss-ads-tone-grey"),o==="light"?w.classList.add("toss-ads-theme-light"):o==="dark"&&w.classList.add("toss-ads-theme-dark"),a==="card"&&(w.style.borderRadius="16px",w.style.overflow="hidden"),g.appendChild(w);let x=!1,W=null;try{Je(R),Xe(R),R.appendChild(g),x=!0;let O={spaceId:u,autoLoad:!0,theme:o==="auto"?void 0:o,renderPadding:ge=>ge==="1"?qe:ze,callbacks:l};W=f.banner.createSlot(w,O)}catch(O){throw x&&g.parentNode&&g.parentNode.removeChild(g),O}return{destroy(){W?.destroy(),x&&g.parentNode&&g.parentNode.removeChild(g),x=!1}}})}catch(u){return m(u),{destroy(){}}}}function Ze(e){let t=C();t?.banner&&t.banner.destroy(e)}function Qe(){let e=C();e?.banner&&(e.banner.destroyAll(),Re())}function me(e,t){if(!t)return;let r=n=>{let o={...n??{}};return o.adGroupId=o.adGroupId??o.spaceId??e,delete o.spaceId,o};return{onAdRendered:n=>t.onAdRendered?.(r(n)),onAdViewable:n=>t.onAdViewable?.(r(n)),onAdClicked:n=>t.onAdClicked?.(r(n)),onAdImpression:n=>{Me({log_name:"display_ads_all::impression__1px_banner",log_type:"event",params:{event_type:"impression",schema_id:1812034,request_id:n?.adMetadata?.requestId??""}}),t.onAdImpression?.(r(n))},onAdFailedToRender:n=>t.onAdFailedToRender?.({...r(n),error:n?.error??{code:0,message:"UNKNOWN"}}),onNoFill:n=>t.onNoFill?.(r(n))}}var Pr={initialize:Object.assign(Ue,{isSupported:_.isSupported}),attach:Object.assign(We,{isSupported:_.isSupported}),attachBanner:Object.assign(Ye,{isSupported:_.isSupported}),destroy:Object.assign(Ze,{isSupported:_.isSupported}),destroyAll:Object.assign(Qe,{isSupported:_.isSupported})},xr=Object.assign(d("getServerTime"),{isSupported:p("getServerTime_isSupported")}),Dr=Object.assign(d("requestReview"),{isSupported:p("requestReview_isSupported")});var F=class{_log=d("debugLog");log(t,r){try{this._log({log_name:`apps_in_toss_webview_${t}`,log_type:"debug",params:{...r,...this.getCommonParams()}})}catch{}}getCommonParams(){return{...this.getLocationInfo(),...this.getNavigatorInfo(),...this.getScreenInfo(),appName:window.__appsInToss.appName,deploymentId:window.__appsInToss.deploymentId,sessionId:window.__appsInToss.sessionId,isGame:window.__appsInToss.webViewType==="game",timestampMs:Date.now()}}getLocationInfo(){return{url:window.location.href,urlOrigin:window.location.origin,urlHost:window.location.hostname,urlPath:window.location.pathname,urlSearch:window.location.search}}getNavigatorInfo(){return{userAgent:navigator.userAgent,platform:navigator.platform,language:navigator.language,cookieEnabled:navigator.cookieEnabled,hardwareConcurrency:navigator.hardwareConcurrency,deviceMemory:navigator.deviceMemory?navigator.deviceMemory*1024*1024:void 0,maxTouchPoints:navigator.maxTouchPoints}}getScreenInfo(){return{screenWidth:screen.width,screenHeight:screen.height,availableScreenWidth:screen.availWidth,availableScreenHeight:screen.availHeight,devicePixelRatio:window.devicePixelRatio,colorDepth:screen.colorDepth,pixelDepth:screen.pixelDepth,viewportWidth:window.innerWidth,viewportHeight:window.innerHeight}}};var G=class{callbacks={};on(t,r){return typeof this.callbacks[t]>"u"&&(this.callbacks[t]=[]),this.callbacks[t].push(r),()=>{this.callbacks[t]=this.callbacks[t]?.filter(n=>n!==r)??[]}}emit(t,r){this.callbacks[t]?.forEach(n=>n(r))}};window.__appsInToss={appName:p("getAppName")(),deploymentId:p("getDeploymentId")(),webViewType:p("getWebViewType")(),sessionId:Math.random().toString(36).substring(2),eventEmitter:new G,debugLogger:new F};var T=/\\.(data|wasm|framework\\.js)(?:\\.gz|\\.br|\\.unityweb)?$/;function B(e){window.fetch=new Proxy(window.fetch,{apply:e})}(()=>{if(window.__appsInToss.webViewType!=="game"||typeof caches>"u")return;let e="@apps-in-toss/caches/",t=`${e}${window.__appsInToss.deploymentId}`;window.addEventListener("load",async()=>{let r=await caches.keys();for(let n of r)n.startsWith(e)&&n!==t&&await caches.delete(n)}),B(async(r,n,o)=>{let s=new Request(o[0],o[1]);if(!T.test(s.url))return await r.call(n,s);let a=await caches.open(t),i=await a.match(s);if(i){let l=i.headers.get("ETag"),u=i.headers.get("Last-Modified");l&&s.headers.set("If-None-Match",l),u&&s.headers.set("If-Modified-Since",u);let f=await r.call(n,s);return f.status===304?(i.__revalidateResponse=f,i):(a.put(s,f.clone()),f)}let m=await r.call(n,s);return a.put(s,m.clone()),m})})();B(async(e,t,r)=>{let n=new Request(r[0],r[1]),o=Date.now();window.__appsInToss.eventEmitter.emit("fetchRequest",{request:n});try{let s=await e.call(t,n);return window.__appsInToss.eventEmitter.emit("fetchResponse",{request:n,response:s,requestAt:o}),s}catch(s){throw window.__appsInToss.eventEmitter.emit("fetchError",{request:n,requestAt:o,error:s}),s}});HTMLCanvasElement.prototype.getContext=new Proxy(HTMLCanvasElement.prototype.getContext,{apply:(e,t,r)=>{let n=e.apply(t,r);return(n instanceof WebGL2RenderingContext||n instanceof WebGLRenderingContext)&&window.__appsInToss.eventEmitter.emit("webglGetContext",{canvas:t,context:n}),n}});var le=window.__appsInToss.debugLogger;le.log("load_start",{});window.addEventListener("load",()=>{let e=performance.timeOrigin,t=performance.getEntriesByType?.("navigation")[0]??null,r=typeof e<"u"&&t!==null,n=r?{navigationStartAtMs:e+t.startTime,navigationRedirectStartAtMs:e+t.redirectStart,navigationRedirectEndAtMs:e+t.redirectEnd,navigationRedirectCount:t.redirectCount,navigationServiceWorkerStartAtMs:e+t.workerStart,navigationFetchStartAtMs:e+t.fetchStart,navigationDomainLookupStartAtMs:e+t.domainLookupStart,navigationDomainLookupEndAtMs:e+t.domainLookupEnd,navigationConnectStartAtMs:e+t.connectStart,navigationSecureConnectStartAtMs:e+t.secureConnectionStart,navigationConnectEndAtMs:e+t.connectEnd,navigationRequestStartAtMs:e+t.requestStart,navigationResponseStartAtMs:e+t.responseStart,navigationResponseEndAtMs:e+t.responseEnd,navigationDomInteractiveAtMs:e+t.domInteractive,navigationDomContentLoadedEventStartAtMs:e+t.domContentLoadedEventStart,navigationDomContentLoadedEventEndAtMs:e+t.domContentLoadedEventEnd,navigationDomCompleteAtMs:e+t.domComplete}:{};le.log("load_complete",{isNavigationDebugSupported:r,...n})});function y(e,t){return parseFloat(e.toFixed(t))}(()=>{if(typeof performance.memory>"u"||typeof performance.memory.usedJSHeapSize>"u"||typeof performance.memory.totalJSHeapSize>"u"||typeof performance.memory.jsHeapSizeLimit>"u")return;function e(t){window.__appsInToss.debugLogger.log(t,{usedJSHeapSize:y(performance.memory.usedJSHeapSize/1024,2),totalJSHeapSize:y(performance.memory.totalJSHeapSize/1024,2),jsHeapSizeLimit:y(performance.memory.jsHeapSizeLimit/1024,2)})}e("memory_usage_first_0s"),setTimeout(()=>e("memory_usage_first_1s"),1e3),setTimeout(()=>e("memory_usage_first_10s"),1e4),setTimeout(()=>e("memory_usage_first_30s"),3e4),setTimeout(()=>e("memory_usage_first_60s"),6e4),setInterval(()=>e("memory_usage_every_180s"),18e4)})();(()=>{let e=window.__appsInToss.debugLogger,t=performance.timeOrigin;if(typeof t>"u"||typeof PerformanceObserver>"u")return;new PerformanceObserver(o=>{o.getEntries().forEach(a=>{a.name==="first-paint"?e.log("first_paint",{fpStartAtMs:t+a.startTime}):a.name==="first-contentful-paint"&&e.log("first_contentful_paint",{fcpStartAtMs:t+a.startTime})})}).observe({type:"paint"}),new PerformanceObserver(o=>{o.getEntries().forEach(a=>{e.log("largest_contentful_paint",{lcpStartAtMs:t+a.startTime,lcpRenderSize:a.size})})}).observe({type:"largest-contentful-paint"})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.eventEmitter.on("webglGetContext",({canvas:t,context:r})=>{if(t.getAttribute("id")!=="unity-canvas")return;e();let n=r.getExtension("WEBGL_debug_renderer_info"),o=r.getParameter(r.MAX_VIEWPORT_DIMS),s={webGLRenderer:r.getParameter(r.RENDERER),webGLVendor:r.getParameter(r.VENDOR),webGLVersion:r.getParameter(r.VERSION),webGLShadingLanguageVersion:r.getParameter(r.SHADING_LANGUAGE_VERSION),webGLMaxTextureSize:r.getParameter(r.MAX_TEXTURE_SIZE),webGLMaxViewportWidth:o[0],webGLMaxViewportHeight:o[1],webGLMaxRenderbufferSize:r.getParameter(r.MAX_RENDERBUFFER_SIZE)},a=n?{webGLUnmaskedVendor:r.getParameter(n.UNMASKED_VENDOR_WEBGL),webGLUnmaskedRenderer:r.getParameter(n.UNMASKED_RENDERER_WEBGL)}:{};window.__appsInToss.debugLogger.log("unity_webgl_info",{...s,...a})})})();(()=>{if(window.__appsInToss.webViewType!=="game")return;let e=window.__appsInToss.debugLogger,t=window.__appsInToss.eventEmitter;t.on("fetchRequest",({request:n})=>{T.test(n.url)&&e.log("game_resource_download_start",{gameResourceRequestURL:n.url})});function r({request:n,requestAt:o,error:s}){e.log("game_resource_download_error",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceError:s instanceof Error?s.message:"Unknown Error"})}t.on("fetchResponse",async({request:n,requestAt:o,response:s})=>{if(!T.test(n.url))return;let a=await s.clone().blob().then(m=>y(m.size/1024,2)).catch(m=>(r({request:n,requestAt:o,error:m}),null));if(a===null)return;let i=Date.now();e.log("game_resource_download_end",{gameResourceRequestURL:n.url,gameResourceRequestAtMs:o,gameResourceResponseAtMs:i,gameResourceResponseSize:a,gameResourceResponseStatus:s.__revalidateResponse?.status??s.status,gameResourceDownloadDurationMs:i-o})}),t.on("fetchError",async({request:n,requestAt:o,error:s})=>{T.test(n.url)&&r({request:n,requestAt:o,error:s})})})();var k=[];function et(){let e=0;function t(r){let n=performance.now();if(r<n-1e3){k.push(e);return}e+=1,window.requestAnimationFrame(()=>t(r))}window.requestAnimationFrame(()=>t(performance.now()))}function tt(){if(k.length===0)return;let e=k;k=[];let t=rt(e).toSorted(),r={};for(let o=0;o<=100;o+=10){let s=t[Math.floor((t.length-1)*(o/100))];s&&(r[`fpsP${o}`]=s)}let n=t.reduce((o,s)=>o+s,0);r.fpsAverage=n/t.length,window.__appsInToss.debugLogger.log("fps_every_300s",r)}function rt(e){let t=new Set(e);return Array.from(t.values())}setInterval(()=>et(),1e3);setInterval(()=>tt(),3e5);})();\n';export{e as afterDocumentLoad,t as beforeDocumentLoad};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apps-in-toss/user-scripts",
3
- "version": "2.4.1",
3
+ "version": "2.4.2",
4
4
  "main": "./dist/index.js",
5
5
  "import": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",
@@ -23,8 +23,8 @@
23
23
  "build": "node ./build.mjs"
24
24
  },
25
25
  "devDependencies": {
26
- "@apps-in-toss/bridge-core": "^2.4.1",
27
- "@apps-in-toss/web-bridge": "^2.4.1",
26
+ "@apps-in-toss/bridge-core": "^2.4.2",
27
+ "@apps-in-toss/web-bridge": "^2.4.2",
28
28
  "tsup": "^8.3.5",
29
29
  "typescript": "5.8.3"
30
30
  }