@apps-in-toss/framework 1.5.2 → 1.6.0

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.cjs CHANGED
@@ -37,6 +37,8 @@ __export(src_exports, {
37
37
  OverlayProvider: () => import_private10.OverlayProvider,
38
38
  WebView: () => WebView,
39
39
  env: () => env,
40
+ loadFullScreenAd: () => loadFullScreenAd,
41
+ showFullScreenAd: () => showFullScreenAd,
40
42
  useCreateUserAgent: () => useCreateUserAgent,
41
43
  useGeolocation: () => useGeolocation,
42
44
  useOverlay: () => import_private10.useOverlay,
@@ -48,9 +50,9 @@ var import_analytics2 = require("@apps-in-toss/analytics");
48
50
 
49
51
  // src/core/registerApp.tsx
50
52
  var import_analytics = require("@apps-in-toss/analytics");
51
- var import_native_modules14 = require("@apps-in-toss/native-modules");
53
+ var import_native_modules13 = require("@apps-in-toss/native-modules");
52
54
  var import_react_native23 = require("@granite-js/react-native");
53
- var import_tds_react_native11 = require("@toss/tds-react-native");
55
+ var import_tds_react_native10 = require("@toss/tds-react-native");
54
56
  var import_react_native24 = require("react-native");
55
57
 
56
58
  // src/core/components/AppEvent.tsx
@@ -248,45 +250,17 @@ function useNavigationBarContext() {
248
250
  return context;
249
251
  }
250
252
 
251
- // src/core/hooks/useAppsInTossBridge.ts
252
- var import_native_modules3 = require("@apps-in-toss/native-modules");
253
- var import_tds_react_native = require("@toss/tds-react-native");
254
- var import_react6 = require("react");
255
-
256
- // src/core/utils/toIcon.ts
257
- function toIcon(source) {
258
- return source.startsWith("http") ? { source: { uri: source } } : { name: source };
259
- }
260
-
261
- // src/core/hooks/useAppsInTossBridge.ts
262
- function useAppsInTossBridge() {
263
- const controller = (0, import_tds_react_native.useBridge)();
264
- const appsInTossGlobals = getAppsInTossGlobals();
265
- (0, import_react6.useEffect)(() => {
266
- const isGameApp = appsInTossGlobals.webViewType === "game" || appsInTossGlobals.appType === "game";
267
- controller.open({
268
- serviceName: appsInTossGlobals.brandDisplayName,
269
- icon: toIcon(appsInTossGlobals.brandIcon),
270
- color: appsInTossGlobals.brandPrimaryColor,
271
- colorMode: isGameApp ? "inverted" : appsInTossGlobals.brandBridgeColorMode,
272
- onExited: () => {
273
- import_native_modules3.appsInTossEvent.emit("entryMessageExited", void 0);
274
- }
275
- });
276
- }, []);
277
- }
278
-
279
253
  // src/components/RNAppContainer.tsx
280
- var import_native_modules13 = require("@apps-in-toss/native-modules");
281
- var import_react18 = require("react");
254
+ var import_native_modules12 = require("@apps-in-toss/native-modules");
255
+ var import_react17 = require("react");
282
256
  var import_react_native22 = require("react-native");
283
257
 
284
258
  // src/components/GameInitializer.tsx
285
- var import_native_modules7 = require("@apps-in-toss/native-modules");
259
+ var import_native_modules6 = require("@apps-in-toss/native-modules");
286
260
  var import_react_native10 = require("@granite-js/react-native");
287
- var import_tds_react_native5 = require("@toss/tds-react-native");
261
+ var import_tds_react_native4 = require("@toss/tds-react-native");
288
262
  var import_es_hangul = require("es-hangul");
289
- var import_react12 = require("react");
263
+ var import_react11 = require("react");
290
264
  var import_react_native11 = require("react-native");
291
265
 
292
266
  // src/constant/game-center.ts
@@ -297,10 +271,10 @@ var GAME_MIN_VERSION = {
297
271
  };
298
272
 
299
273
  // src/hooks/useAppUpdateDialog.tsx
300
- var import_native_modules4 = require("@apps-in-toss/native-modules");
274
+ var import_native_modules3 = require("@apps-in-toss/native-modules");
301
275
  var import_react_native7 = require("@granite-js/react-native");
302
- var import_tds_react_native2 = require("@toss/tds-react-native");
303
- var import_react7 = require("react");
276
+ var import_tds_react_native = require("@toss/tds-react-native");
277
+ var import_react6 = require("react");
304
278
 
305
279
  // src/utils/market.ts
306
280
  var import_react_native6 = require("react-native");
@@ -312,9 +286,9 @@ var getMarketLink = () => {
312
286
 
313
287
  // src/hooks/useAppUpdateDialog.tsx
314
288
  function useAppUpdateDialog() {
315
- const { openConfirm } = (0, import_tds_react_native2.useDialog)();
289
+ const { openConfirm } = (0, import_tds_react_native.useDialog)();
316
290
  const logging = useAppUpdateDialogLogging();
317
- const openAppUpdateDialog = (0, import_react7.useCallback)(
291
+ const openAppUpdateDialog = (0, import_react6.useCallback)(
318
292
  async ({
319
293
  title,
320
294
  description,
@@ -356,7 +330,7 @@ function useAppUpdateDialogLogging() {
356
330
  app_name: import_react_native7.Granite.appName
357
331
  };
358
332
  const logUpdateClick = () => {
359
- import_native_modules4.INTERNAL__module.tossCoreEventLog({
333
+ import_native_modules3.INTERNAL__module.tossCoreEventLog({
360
334
  log_name: UPDATE_DIALOG_CTA_CLICK_LOG_NAME,
361
335
  log_type: "event",
362
336
  params: {
@@ -368,7 +342,7 @@ function useAppUpdateDialogLogging() {
368
342
  });
369
343
  };
370
344
  const logCloseClick = () => {
371
- import_native_modules4.INTERNAL__module.tossCoreEventLog({
345
+ import_native_modules3.INTERNAL__module.tossCoreEventLog({
372
346
  log_name: UPDATE_DIALOG_CTA_CLICK_LOG_NAME,
373
347
  log_type: "event",
374
348
  params: {
@@ -380,7 +354,7 @@ function useAppUpdateDialogLogging() {
380
354
  });
381
355
  };
382
356
  const logDialogShow = () => {
383
- import_native_modules4.INTERNAL__module.tossCoreEventLog({
357
+ import_native_modules3.INTERNAL__module.tossCoreEventLog({
384
358
  log_name: UPDATE_DIALOG_LOG_NAME,
385
359
  log_type: "popup",
386
360
  params: {
@@ -393,13 +367,13 @@ function useAppUpdateDialogLogging() {
393
367
  }
394
368
 
395
369
  // src/hooks/useGameCenterProfile.ts
396
- var import_native_modules6 = require("@apps-in-toss/native-modules");
397
- var import_react11 = require("react");
370
+ var import_native_modules5 = require("@apps-in-toss/native-modules");
371
+ var import_react10 = require("react");
398
372
 
399
373
  // src/hooks/useErrorAlert.ts
400
374
  var import_react_native8 = require("@granite-js/react-native");
401
- var import_tds_react_native3 = require("@toss/tds-react-native");
402
- var import_react8 = require("react");
375
+ var import_tds_react_native2 = require("@toss/tds-react-native");
376
+ var import_react7 = require("react");
403
377
 
404
378
  // src/utils/error.ts
405
379
  var DEFAULT_ERROR = {
@@ -409,8 +383,8 @@ var DEFAULT_ERROR = {
409
383
 
410
384
  // src/hooks/useErrorAlert.ts
411
385
  var useErrorAlert = () => {
412
- const { openAlert } = (0, import_tds_react_native3.useDialog)();
413
- const openErrorAlert = (0, import_react8.useCallback)(async () => {
386
+ const { openAlert } = (0, import_tds_react_native2.useDialog)();
387
+ const openErrorAlert = (0, import_react7.useCallback)(async () => {
414
388
  await openAlert({
415
389
  title: DEFAULT_ERROR.title,
416
390
  description: DEFAULT_ERROR.description
@@ -421,14 +395,14 @@ var useErrorAlert = () => {
421
395
  };
422
396
 
423
397
  // src/hooks/useTransparentWebview.tsx
424
- var import_react9 = require("react");
398
+ var import_react8 = require("react");
425
399
 
426
400
  // src/utils/openTransparentWebView.ts
427
401
  var import_react_native9 = require("@granite-js/react-native");
428
402
 
429
403
  // src/private.ts
430
- var import_native_modules5 = require("@apps-in-toss/native-modules");
431
- var INTERNAL__onVisibilityChangedByTransparentServiceWeb = import_native_modules5.onVisibilityChangedByTransparentServiceWeb;
404
+ var import_native_modules4 = require("@apps-in-toss/native-modules");
405
+ var INTERNAL__onVisibilityChangedByTransparentServiceWeb = import_native_modules4.onVisibilityChangedByTransparentServiceWeb;
432
406
 
433
407
  // src/utils/openTransparentWebView.ts
434
408
  var openTransparentWebView = ({
@@ -463,9 +437,9 @@ var openTransparentWebView = ({
463
437
 
464
438
  // src/hooks/useTransparentWebview.tsx
465
439
  var useTransparentWebview = () => {
466
- const [isWebviewLoading, setIsWebviewLoading] = (0, import_react9.useState)(false);
440
+ const [isWebviewLoading, setIsWebviewLoading] = (0, import_react8.useState)(false);
467
441
  const { open: openErrorAlert } = useErrorAlert();
468
- const _openTransparentWebview = (0, import_react9.useCallback)(
442
+ const _openTransparentWebview = (0, import_react8.useCallback)(
469
443
  ({ webUrl, onClose, onError }) => {
470
444
  if (isWebviewLoading) {
471
445
  return;
@@ -497,18 +471,18 @@ var useTransparentWebview = () => {
497
471
  };
498
472
 
499
473
  // src/components/GameProfileToast.tsx
500
- var import_tds_react_native4 = require("@toss/tds-react-native");
474
+ var import_tds_react_native3 = require("@toss/tds-react-native");
501
475
  var import_private2 = require("@toss/tds-react-native/private");
502
- var import_react10 = require("react");
476
+ var import_react9 = require("react");
503
477
  var import_jsx_runtime3 = require("react/jsx-runtime");
504
478
  var useGameProfileToast = () => {
505
479
  const overlay = (0, import_private2.useOverlay)();
506
- const openGameProfileToast = (0, import_react10.useCallback)(
480
+ const openGameProfileToast = (0, import_react9.useCallback)(
507
481
  (nickname, profileImageUri) => {
508
482
  return new Promise((resolve) => {
509
483
  overlay.open(({ isOpen, close, exit }) => {
510
484
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_private2.ColorPreferenceProvider, { colorPreference: "dark", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_private2.AdaptiveColorProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
511
- import_tds_react_native4.Toast,
485
+ import_tds_react_native3.Toast,
512
486
  {
513
487
  open: isOpen,
514
488
  onClose: () => {
@@ -519,10 +493,10 @@ var useGameProfileToast = () => {
519
493
  position: "top",
520
494
  text: `${nickname}\uB2D8 \uBC18\uAC00\uC6CC\uC694!`,
521
495
  icon: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
522
- import_tds_react_native4.Asset.Image,
496
+ import_tds_react_native3.Asset.Image,
523
497
  {
524
498
  style: { borderRadius: 64, overflow: "hidden" },
525
- frameShape: import_tds_react_native4.Asset.frameShape.CleanW32,
499
+ frameShape: import_tds_react_native3.Asset.frameShape.CleanW32,
526
500
  source: { uri: profileImageUri }
527
501
  }
528
502
  )
@@ -537,19 +511,19 @@ var useGameProfileToast = () => {
537
511
  };
538
512
 
539
513
  // src/hooks/useGameCenterProfile.ts
540
- var useGameCenterProfile = (isReadyForProfileUI) => {
541
- const [profileData, setProfileData] = (0, import_react11.useState)(void 0);
542
- const [isProfileDataLoading, setIsProfileDataLoading] = (0, import_react11.useState)(true);
543
- const [isProfileDataRefetching, setIsProfileDataRefetching] = (0, import_react11.useState)(false);
544
- const shouldShowProfileLoadingOverlay = isProfileDataLoading && isReadyForProfileUI || isProfileDataRefetching;
545
- const shouldShowProfileNotFoundOverlay = profileData?.statusCode === "PROFILE_NOT_FOUND" && isReadyForProfileUI && !isProfileDataRefetching;
546
- const canShowBottomSheetOrToast = !isProfileDataLoading && isReadyForProfileUI;
514
+ var useGameCenterProfile = () => {
515
+ const [profileData, setProfileData] = (0, import_react10.useState)(void 0);
516
+ const [isProfileDataLoading, setIsProfileDataLoading] = (0, import_react10.useState)(true);
517
+ const [isProfileDataRefetching, setIsProfileDataRefetching] = (0, import_react10.useState)(false);
518
+ const shouldShowProfileLoadingOverlay = isProfileDataLoading || isProfileDataRefetching;
519
+ const shouldShowProfileNotFoundOverlay = profileData?.statusCode === "PROFILE_NOT_FOUND" && !isProfileDataRefetching;
520
+ const canShowBottomSheetOrToast = !isProfileDataLoading;
547
521
  const { openGameProfileToast } = useGameProfileToast();
548
522
  const { open: openErrorAlert } = useErrorAlert();
549
523
  const { open: openTransparentWebView2 } = useTransparentWebview();
550
- const fetchProfileData = (0, import_react11.useCallback)(async () => {
524
+ const fetchProfileData = (0, import_react10.useCallback)(async () => {
551
525
  try {
552
- const data = await (0, import_native_modules6.getGameCenterGameProfile)();
526
+ const data = await (0, import_native_modules5.getGameCenterGameProfile)();
553
527
  setProfileData(data);
554
528
  setIsProfileDataLoading(false);
555
529
  } catch (_) {
@@ -557,10 +531,10 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
557
531
  setIsProfileDataLoading(false);
558
532
  }
559
533
  }, [openErrorAlert]);
560
- const refetchProfileData = (0, import_react11.useCallback)(async () => {
534
+ const refetchProfileData = (0, import_react10.useCallback)(async () => {
561
535
  try {
562
536
  setIsProfileDataRefetching(true);
563
- const data = await (0, import_native_modules6.getGameCenterGameProfile)();
537
+ const data = await (0, import_native_modules5.getGameCenterGameProfile)();
564
538
  setProfileData(data);
565
539
  setIsProfileDataRefetching(false);
566
540
  if (data?.statusCode === "SUCCESS") {
@@ -571,7 +545,7 @@ var useGameCenterProfile = (isReadyForProfileUI) => {
571
545
  openErrorAlert();
572
546
  }
573
547
  }, [openErrorAlert, openGameProfileToast]);
574
- const openProfileWebview = (0, import_react11.useCallback)(() => {
548
+ const openProfileWebview = (0, import_react10.useCallback)(() => {
575
549
  openTransparentWebView2({
576
550
  webUrl: `${GAME_PROFILE_WEBVIEW_URL}?appName=${getAppName()}&referrer=appsintoss.${getAppName()}`,
577
551
  onClose: async () => {
@@ -605,7 +579,7 @@ var Z_INDEX = {
605
579
 
606
580
  // src/components/GameInitializer.tsx
607
581
  var import_jsx_runtime4 = require("react/jsx-runtime");
608
- var GameInitializer = ({ children, isReadyForProfileUI }) => {
582
+ var GameInitializer = ({ children }) => {
609
583
  const {
610
584
  profileData,
611
585
  shouldShowProfileLoadingOverlay,
@@ -614,13 +588,13 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
614
588
  openProfileWebview,
615
589
  openGameProfileToast,
616
590
  fetchProfileData
617
- } = useGameCenterProfile(isReadyForProfileUI);
618
- const isCompletedFlow = (0, import_react12.useRef)(false);
591
+ } = useGameCenterProfile();
592
+ const isCompletedFlow = (0, import_react11.useRef)(false);
619
593
  const { open: openAppUpdateDialog } = useAppUpdateDialog();
620
- (0, import_react12.useEffect)(() => {
594
+ (0, import_react11.useEffect)(() => {
621
595
  fetchProfileData();
622
596
  }, []);
623
- (0, import_react12.useEffect)(() => {
597
+ (0, import_react11.useEffect)(() => {
624
598
  const handleGameProfileFlow = async () => {
625
599
  if (!canShowBottomSheetOrToast) {
626
600
  return;
@@ -629,7 +603,7 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
629
603
  return;
630
604
  }
631
605
  isCompletedFlow.current = true;
632
- if (!(0, import_native_modules7.isMinVersionSupported)(GAME_MIN_VERSION)) {
606
+ if (!(0, import_native_modules6.isMinVersionSupported)(GAME_MIN_VERSION)) {
633
607
  openAppUpdateDialog({
634
608
  title: `${(0, import_es_hangul.josa)(getAppsInTossGlobals().brandDisplayName, "\uC744/\uB97C")} \uD558\uB824\uBA74
635
609
  \uC571\uC744 \uC5C5\uB370\uC774\uD2B8\uD574\uC8FC\uC138\uC694`,
@@ -656,7 +630,7 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
656
630
  openProfileWebview,
657
631
  profileData
658
632
  ]);
659
- if (!(0, import_native_modules7.isMinVersionSupported)(GAME_MIN_VERSION)) {
633
+ if (!(0, import_native_modules6.isMinVersionSupported)(GAME_MIN_VERSION)) {
660
634
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
661
635
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native11.View, { style: { flex: 1, position: "relative" }, children }),
662
636
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
@@ -690,7 +664,7 @@ var GameInitializer = ({ children, isReadyForProfileUI }) => {
690
664
  alignItems: "center",
691
665
  backgroundColor: "rgba(0, 0, 0, 0.2)"
692
666
  },
693
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_tds_react_native5.Loader, { size: "large", type: "light" })
667
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_tds_react_native4.Loader, { size: "large", type: "light" })
694
668
  }
695
669
  )
696
670
  ] });
@@ -726,10 +700,10 @@ var overlayStyle = {
726
700
  var import_private5 = require("@toss/tds-react-native/private");
727
701
 
728
702
  // src/components/NavigationBar/RNNavigationBar/hooks/useHardwareBackPress.ts
729
- var import_react13 = require("react");
703
+ var import_react12 = require("react");
730
704
  var import_react_native12 = require("react-native");
731
705
  function useHardwareBackPress(handler) {
732
- (0, import_react13.useEffect)(() => {
706
+ (0, import_react12.useEffect)(() => {
733
707
  const handleBackPress = () => {
734
708
  handler();
735
709
  return true;
@@ -741,16 +715,16 @@ function useHardwareBackPress(handler) {
741
715
 
742
716
  // src/components/NavigationBar/RNNavigationBar/hooks/useNavigationEvent.ts
743
717
  var import_react_native14 = require("@granite-js/react-native");
744
- var import_react15 = require("react");
718
+ var import_react14 = require("react");
745
719
 
746
720
  // src/components/NavigationBar/RNNavigationBar/hooks/useCloseConfirm.ts
747
- var import_tds_react_native6 = require("@toss/tds-react-native");
721
+ var import_tds_react_native5 = require("@toss/tds-react-native");
748
722
  var import_es_hangul2 = require("es-hangul");
749
- var import_react14 = require("react");
723
+ var import_react13 = require("react");
750
724
  function useCloseConfirm() {
751
725
  const { brandDisplayName } = getAppsInTossGlobals();
752
- const { openConfirm } = (0, import_tds_react_native6.useDialog)();
753
- return (0, import_react14.useCallback)(async ({ onEntered }) => {
726
+ const { openConfirm } = (0, import_tds_react_native5.useDialog)();
727
+ return (0, import_react13.useCallback)(async ({ onEntered }) => {
754
728
  return await openConfirm({
755
729
  title: `${(0, import_es_hangul2.josa)(brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
756
730
  leftButton: "\uCDE8\uC18C",
@@ -762,7 +736,7 @@ function useCloseConfirm() {
762
736
  }
763
737
 
764
738
  // src/components/NavigationBar/common/useNavigationBarLogging.tsx
765
- var import_native_modules8 = require("@apps-in-toss/native-modules");
739
+ var import_native_modules7 = require("@apps-in-toss/native-modules");
766
740
  var import_react_native13 = require("@granite-js/react-native");
767
741
  var NAVI_BAR_IMPRESSION_SCHEMA_ID = 1596837;
768
742
  var NAVI_BAR_IMPRESSION_LOG_NAME = "appsintoss_app_visit__common_module::impression__navigation_bar";
@@ -781,7 +755,7 @@ function useNavigationBarLogging() {
781
755
  app_name: import_react_native13.Granite.appName
782
756
  };
783
757
  const logNavBarImpression = (naviBarConfig) => {
784
- import_native_modules8.INTERNAL__module.tossCoreEventLog({
758
+ import_native_modules7.INTERNAL__module.tossCoreEventLog({
785
759
  log_name: NAVI_BAR_IMPRESSION_LOG_NAME,
786
760
  log_type: "event",
787
761
  params: {
@@ -793,7 +767,7 @@ function useNavigationBarLogging() {
793
767
  });
794
768
  };
795
769
  const logHomeButtonClick = () => {
796
- import_native_modules8.INTERNAL__module.tossCoreEventLog({
770
+ import_native_modules7.INTERNAL__module.tossCoreEventLog({
797
771
  log_name: HOME_BUTTON_CLICK_LOG_NAME,
798
772
  log_type: "event",
799
773
  params: {
@@ -804,7 +778,7 @@ function useNavigationBarLogging() {
804
778
  });
805
779
  };
806
780
  const logCloseButtonClick = () => {
807
- import_native_modules8.INTERNAL__module.tossCoreEventLog({
781
+ import_native_modules7.INTERNAL__module.tossCoreEventLog({
808
782
  log_name: CLOSE_BUTTON_CLICK_LOG_NAME,
809
783
  log_type: "event",
810
784
  params: {
@@ -815,7 +789,7 @@ function useNavigationBarLogging() {
815
789
  });
816
790
  };
817
791
  const logClosePopupShow = () => {
818
- import_native_modules8.INTERNAL__module.tossCoreEventLog({
792
+ import_native_modules7.INTERNAL__module.tossCoreEventLog({
819
793
  log_name: CLOSE_POPUP_SHOW_LOG_NAME,
820
794
  log_type: "popup",
821
795
  params: {
@@ -825,7 +799,7 @@ function useNavigationBarLogging() {
825
799
  });
826
800
  };
827
801
  const logClosePopupCtaClick = (confirm) => {
828
- import_native_modules8.INTERNAL__module.tossCoreEventLog({
802
+ import_native_modules7.INTERNAL__module.tossCoreEventLog({
829
803
  log_name: CLOSE_POPUP_CTA_CLICK_LOG_NAME,
830
804
  log_type: "event",
831
805
  params: {
@@ -852,7 +826,7 @@ function useNavigationEvent() {
852
826
  const navigation = (0, import_react_native14.useNavigation)();
853
827
  const closeConfirm = useCloseConfirm();
854
828
  const { captureExitLog } = useCaptureExitLog();
855
- return (0, import_react15.useMemo)(() => {
829
+ return (0, import_react14.useMemo)(() => {
856
830
  const close = async () => {
857
831
  const hasConfirmed = await closeConfirm({
858
832
  onEntered: logging.closePopupShow
@@ -886,25 +860,25 @@ function useNavigationEvent() {
886
860
  }
887
861
 
888
862
  // src/core/hooks/useMoreButtonBottomSheet/index.tsx
889
- var import_native_modules12 = require("@apps-in-toss/native-modules");
863
+ var import_native_modules11 = require("@apps-in-toss/native-modules");
890
864
  var import_react_native20 = require("@granite-js/react-native");
891
- var import_tds_react_native9 = require("@toss/tds-react-native");
865
+ var import_tds_react_native8 = require("@toss/tds-react-native");
892
866
  var import_private4 = require("@toss/tds-react-native/private");
893
- var import_react16 = require("react");
867
+ var import_react15 = require("react");
894
868
 
895
869
  // src/core/hooks/useMoreButtonBottomSheet/AppShareListMenu.tsx
896
- var import_native_modules10 = require("@apps-in-toss/native-modules");
870
+ var import_native_modules9 = require("@apps-in-toss/native-modules");
897
871
  var import_react_native17 = require("@granite-js/react-native");
898
- var import_tds_react_native8 = require("@toss/tds-react-native");
872
+ var import_tds_react_native7 = require("@toss/tds-react-native");
899
873
  var import_react_native18 = require("react-native");
900
874
 
901
875
  // src/core/hooks/useMoreButtonBottomSheet/Menu.tsx
902
- var import_tds_react_native7 = require("@toss/tds-react-native");
876
+ var import_tds_react_native6 = require("@toss/tds-react-native");
903
877
  var import_private3 = require("@toss/tds-react-native/private");
904
878
  var import_react_native16 = require("react-native");
905
879
 
906
880
  // src/core/hooks/useMoreButtonBottomSheet/useMoreButtonBottomSheetLogging.tsx
907
- var import_native_modules9 = require("@apps-in-toss/native-modules");
881
+ var import_native_modules8 = require("@apps-in-toss/native-modules");
908
882
  var import_react_native15 = require("@granite-js/react-native");
909
883
  var BOTTOM_SHEET_SCHEMA_ID = 1596825;
910
884
  var BOTTOM_SHEET_LOG_NAME = "appsintoss_app_visit__common_module::bottomsheet__more";
@@ -921,7 +895,7 @@ function useMoreButtonBottomSheetLogging() {
921
895
  app_name: import_react_native15.Granite.appName
922
896
  };
923
897
  const logBottomSheetShow = () => {
924
- import_native_modules9.INTERNAL__module.tossCoreEventLog({
898
+ import_native_modules8.INTERNAL__module.tossCoreEventLog({
925
899
  log_name: BOTTOM_SHEET_LOG_NAME,
926
900
  log_type: "popup",
927
901
  params: {
@@ -931,7 +905,7 @@ function useMoreButtonBottomSheetLogging() {
931
905
  });
932
906
  };
933
907
  const logBottomSheetOpen = () => {
934
- import_native_modules9.INTERNAL__module.tossCoreEventLog({
908
+ import_native_modules8.INTERNAL__module.tossCoreEventLog({
935
909
  log_name: BOTTOM_SHEET_OPEN_LOG_NAME,
936
910
  log_type: "event",
937
911
  params: {
@@ -942,7 +916,7 @@ function useMoreButtonBottomSheetLogging() {
942
916
  });
943
917
  };
944
918
  const logBottomSheetCloseClick = () => {
945
- import_native_modules9.INTERNAL__module.tossCoreEventLog({
919
+ import_native_modules8.INTERNAL__module.tossCoreEventLog({
946
920
  log_name: BOTTOM_SHEET_CLOSE_CLICK_LOG_NAME,
947
921
  log_type: "event",
948
922
  params: {
@@ -953,7 +927,7 @@ function useMoreButtonBottomSheetLogging() {
953
927
  });
954
928
  };
955
929
  const logBottomSheetMenuClick = ({ title }) => {
956
- import_native_modules9.INTERNAL__module.tossCoreEventLog({
930
+ import_native_modules8.INTERNAL__module.tossCoreEventLog({
957
931
  log_name: BOTTOM_SHEET_MENU_CLICK_LOG_NAME,
958
932
  log_type: "event",
959
933
  params: {
@@ -982,7 +956,7 @@ function Menu({ title, iconURL, onPress }) {
982
956
  const brandPrimaryColorRGB = hexToRGB(globals.brandPrimaryColor);
983
957
  const iconBackgroundColor = brandPrimaryColorRGB ? `rgba(${brandPrimaryColorRGB.join(",")},0.1)` : adaptive.grey100;
984
958
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
985
- import_tds_react_native7.ListRow,
959
+ import_tds_react_native6.ListRow,
986
960
  {
987
961
  left: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
988
962
  import_react_native16.View,
@@ -998,14 +972,14 @@ function Menu({ title, iconURL, onPress }) {
998
972
  backgroundColor: iconBackgroundColor
999
973
  },
1000
974
  children: iconName ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1001
- import_tds_react_native7.Asset.Icon,
975
+ import_tds_react_native6.Asset.Icon,
1002
976
  {
1003
977
  frameShape: { width: 20, height: 20 },
1004
978
  color: globals.brandPrimaryColor,
1005
979
  name: iconName
1006
980
  }
1007
981
  ) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1008
- import_tds_react_native7.Asset.Image,
982
+ import_tds_react_native6.Asset.Image,
1009
983
  {
1010
984
  frameShape: { width: 20, height: 20 },
1011
985
  source: { uri: iconURL }
@@ -1014,7 +988,7 @@ function Menu({ title, iconURL, onPress }) {
1014
988
  }
1015
989
  ),
1016
990
  contents: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
1017
- import_tds_react_native7.ListRow.Texts,
991
+ import_tds_react_native6.ListRow.Texts,
1018
992
  {
1019
993
  type: "1RowTypeA",
1020
994
  top: title,
@@ -1066,8 +1040,8 @@ var APP_SHARE_MENU_INFO = {
1066
1040
  };
1067
1041
  function AppShareListMenu() {
1068
1042
  const initialScheme = (0, import_react_native17.getSchemeUri)();
1069
- const isSandbox = (0, import_native_modules10.getOperationalEnvironment)() === "sandbox";
1070
- const { openConfirm } = (0, import_tds_react_native8.useDialog)();
1043
+ const isSandbox = (0, import_native_modules9.getOperationalEnvironment)() === "sandbox";
1044
+ const { openConfirm } = (0, import_tds_react_native7.useDialog)();
1071
1045
  const schemeForShare = addParamsToUrl(initialScheme, {
1072
1046
  referrer: SHARE_SCHEME_REFERRER
1073
1047
  });
@@ -1097,12 +1071,12 @@ function AppShareListMenu() {
1097
1071
  }
1098
1072
 
1099
1073
  // src/core/hooks/useMoreButtonBottomSheet/PermissionsMenu.tsx
1100
- var import_native_modules11 = require("@apps-in-toss/native-modules");
1074
+ var import_native_modules10 = require("@apps-in-toss/native-modules");
1101
1075
  var import_react_native19 = require("@granite-js/react-native");
1102
1076
  var import_jsx_runtime7 = require("react/jsx-runtime");
1103
1077
  function PermissionsMenu() {
1104
1078
  const globals = getAppsInTossGlobals();
1105
- if ((0, import_native_modules11.getOperationalEnvironment)() === "sandbox") {
1079
+ if ((0, import_native_modules10.getOperationalEnvironment)() === "sandbox") {
1106
1080
  return null;
1107
1081
  }
1108
1082
  return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
@@ -1143,19 +1117,19 @@ var MIN_VERSION = {
1143
1117
  function useMoreButtonBottomSheet() {
1144
1118
  const globals = getAppsInTossGlobals();
1145
1119
  const adaptive = (0, import_private4.useAdaptive)();
1146
- const [itemList, setItemList] = (0, import_react16.useState)([]);
1120
+ const [itemList, setItemList] = (0, import_react15.useState)([]);
1147
1121
  const appUpdateDialog = useAppUpdateDialog();
1148
1122
  const logging = useMoreButtonBottomSheetLogging();
1149
1123
  const overlay = (0, import_private4.useOverlay)();
1150
1124
  const title = ensureValue(globals.brandDisplayName, "displayName");
1151
- const isBottomSheetSupported = (0, import_native_modules12.isMinVersionSupported)(MIN_VERSION.BOTTOM_SHEET);
1152
- const isShareListMenuSupported = (0, import_native_modules12.isMinVersionSupported)(MIN_VERSION.SHARE_LIST_MENU);
1153
- const [isPermissionsMenuSupported, setIsPermissionsMenuSupported] = (0, import_react16.useState)(false);
1154
- (0, import_react16.useEffect)(() => {
1125
+ const isBottomSheetSupported = (0, import_native_modules11.isMinVersionSupported)(MIN_VERSION.BOTTOM_SHEET);
1126
+ const isShareListMenuSupported = (0, import_native_modules11.isMinVersionSupported)(MIN_VERSION.SHARE_LIST_MENU);
1127
+ const [isPermissionsMenuSupported, setIsPermissionsMenuSupported] = (0, import_react15.useState)(false);
1128
+ (0, import_react15.useEffect)(() => {
1155
1129
  if (!isBottomSheetSupported) {
1156
1130
  return;
1157
1131
  }
1158
- import_native_modules12.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1132
+ import_native_modules11.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1159
1133
  APP_BRIDGE_METHOD_NAME,
1160
1134
  {},
1161
1135
  {
@@ -1163,8 +1137,8 @@ function useMoreButtonBottomSheet() {
1163
1137
  onError: (error) => console.error("\uBA54\uB274 \uBAA9\uB85D\uC744 \uAC00\uC838\uC624\uB294 \uB370 \uC2E4\uD328\uD588\uC5B4\uC694:", error)
1164
1138
  }
1165
1139
  );
1166
- if ((0, import_native_modules12.isMinVersionSupported)(MIN_VERSION.PERMISSIONS_MENU)) {
1167
- import_native_modules12.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1140
+ if ((0, import_native_modules11.isMinVersionSupported)(MIN_VERSION.PERMISSIONS_MENU)) {
1141
+ import_native_modules11.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1168
1142
  "getAllPermission",
1169
1143
  {},
1170
1144
  {
@@ -1189,17 +1163,17 @@ function useMoreButtonBottomSheet() {
1189
1163
  close();
1190
1164
  };
1191
1165
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BottomSheetImpressionArea, { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1192
- import_tds_react_native9.BottomSheet.Root,
1166
+ import_tds_react_native8.BottomSheet.Root,
1193
1167
  {
1194
1168
  header: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1195
- import_tds_react_native9.ListHeader,
1169
+ import_tds_react_native8.ListHeader,
1196
1170
  {
1197
- title: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tds_react_native9.ListHeader.TitleParagraph, { color: adaptive.grey800, fontWeight: "bold", typography: "t5", children: title })
1171
+ title: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_tds_react_native8.ListHeader.TitleParagraph, { color: adaptive.grey800, fontWeight: "bold", typography: "t5", children: title })
1198
1172
  }
1199
1173
  ),
1200
1174
  open: isOpen,
1201
1175
  cta: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1202
- import_tds_react_native9.BottomSheet.CTA,
1176
+ import_tds_react_native8.BottomSheet.CTA,
1203
1177
  {
1204
1178
  size: "large",
1205
1179
  type: "dark",
@@ -1212,7 +1186,7 @@ function useMoreButtonBottomSheet() {
1212
1186
  ),
1213
1187
  onClose: handleClose,
1214
1188
  onExited: exit,
1215
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_tds_react_native9.List, { rowSeparator: "none", children: [
1189
+ children: /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_tds_react_native8.List, { rowSeparator: "none", children: [
1216
1190
  itemList.map(
1217
1191
  (item) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1218
1192
  Menu,
@@ -1235,22 +1209,27 @@ function useMoreButtonBottomSheet() {
1235
1209
  }
1236
1210
  function BottomSheetImpressionArea({ children }) {
1237
1211
  const logging = useMoreButtonBottomSheetLogging();
1238
- (0, import_react16.useEffect)(() => {
1212
+ (0, import_react15.useEffect)(() => {
1239
1213
  logging.show();
1240
1214
  }, [logging]);
1241
1215
  return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_jsx_runtime8.Fragment, { children });
1242
1216
  }
1243
1217
 
1218
+ // src/core/utils/toIcon.ts
1219
+ function toIcon(source) {
1220
+ return source.startsWith("http") ? { source: { uri: source } } : { name: source };
1221
+ }
1222
+
1244
1223
  // src/components/NavigationBar/common/NavigationBarImpressionArea.tsx
1245
- var import_react17 = require("react");
1224
+ var import_react16 = require("react");
1246
1225
  var import_jsx_runtime9 = require("react/jsx-runtime");
1247
1226
  function NavigationBarImpressionArea({
1248
1227
  children,
1249
1228
  withHomeButton
1250
1229
  }) {
1251
- const hasLogged = (0, import_react17.useRef)(false);
1230
+ const hasLogged = (0, import_react16.useRef)(false);
1252
1231
  const logging = useNavigationBarLogging();
1253
- (0, import_react17.useEffect)(() => {
1232
+ (0, import_react16.useEffect)(() => {
1254
1233
  if (hasLogged.current === false) {
1255
1234
  logging.navBarImpression({ home_icon_yn: withHomeButton ? "Y" : "N" });
1256
1235
  hasLogged.current = true;
@@ -1289,7 +1268,7 @@ function DefaultNavigationBar() {
1289
1268
 
1290
1269
  // src/components/NavigationBar/RNNavigationBar/Game.tsx
1291
1270
  var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
1292
- var import_tds_react_native10 = require("@toss/tds-react-native");
1271
+ var import_tds_react_native9 = require("@toss/tds-react-native");
1293
1272
  var import_private6 = require("@toss/tds-react-native/private");
1294
1273
  var import_react_native21 = require("react-native");
1295
1274
  var import_jsx_runtime11 = require("react/jsx-runtime");
@@ -1301,7 +1280,7 @@ function GameNavigationBar() {
1301
1280
  const { right: safeAreaRight } = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
1302
1281
  useHardwareBackPress(navigationEvent.handleBack);
1303
1282
  return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
1304
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_tds_react_native10.PageNavbar, { preference: { type: "none" } }),
1283
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_tds_react_native9.PageNavbar, { preference: { type: "none" } }),
1305
1284
  /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1306
1285
  import_react_native21.View,
1307
1286
  {
@@ -1357,26 +1336,18 @@ function RNAppContainer({ children }) {
1357
1336
  }
1358
1337
  }
1359
1338
  function GameAppContainer({ children }) {
1360
- const [isEntryMessageExited, setIsEntryMessageExited] = (0, import_react18.useState)(false);
1361
- (0, import_react18.useEffect)(() => {
1339
+ (0, import_react17.useEffect)(() => {
1362
1340
  if (import_react_native22.Platform.OS === "ios") {
1363
- (0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: false });
1341
+ (0, import_native_modules12.setIosSwipeGestureEnabled)({ isEnabled: false });
1364
1342
  return () => {
1365
- (0, import_native_modules13.setIosSwipeGestureEnabled)({ isEnabled: true });
1343
+ (0, import_native_modules12.setIosSwipeGestureEnabled)({ isEnabled: true });
1366
1344
  };
1367
1345
  }
1368
1346
  return;
1369
1347
  }, []);
1370
- (0, import_react18.useEffect)(() => {
1371
- import_native_modules13.appsInTossEvent.addEventListener("entryMessageExited", {
1372
- onEvent: () => {
1373
- setIsEntryMessageExited(true);
1374
- }
1375
- });
1376
- }, []);
1377
1348
  return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
1378
1349
  /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(RNNavigationBar.Game, {}),
1379
- (0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GameInitializer, { isReadyForProfileUI: isEntryMessageExited, children }) : children
1350
+ (0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(GameInitializer, { children }) : children
1380
1351
  ] });
1381
1352
  }
1382
1353
  function GeneralAppContainer({ children }) {
@@ -1389,7 +1360,7 @@ function GeneralAppContainer({ children }) {
1389
1360
  // src/core/registerApp.tsx
1390
1361
  var import_jsx_runtime13 = require("react/jsx-runtime");
1391
1362
  function AppsInTossContainer(Container, { children, ...initialProps }) {
1392
- if (!(0, import_native_modules14.isMinVersionSupported)({
1363
+ if (!(0, import_native_modules13.isMinVersionSupported)({
1393
1364
  android: "5.220.0",
1394
1365
  ios: "5.221.0"
1395
1366
  })) {
@@ -1403,25 +1374,21 @@ function AppsInTossContainer(Container, { children, ...initialProps }) {
1403
1374
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.StayTime, {}),
1404
1375
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.Entry, {}),
1405
1376
  /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(AppEvent.System, { ...initialProps }),
1406
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tds_react_native11.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(TDSContainer, { ...initialProps, children }) }) })
1377
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_tds_react_native10.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children }) })
1407
1378
  ] });
1408
1379
  }
1409
- function TDSContainer({ children }) {
1410
- useAppsInTossBridge();
1411
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_jsx_runtime13.Fragment, { children });
1412
- }
1413
1380
  function registerApp(container, { context, analytics }) {
1414
1381
  const appName = getAppName();
1415
1382
  const isRegistered = import_react_native24.AppRegistry.getAppKeys().includes(appName);
1416
1383
  if (!isRegistered) {
1417
1384
  import_analytics.Analytics.init({
1418
- logger: (params) => void (0, import_native_modules14.eventLog)(params),
1385
+ logger: (params) => void (0, import_native_modules13.eventLog)(params),
1419
1386
  debug: analytics?.debug ?? __DEV__
1420
1387
  });
1421
1388
  const App = import_react_native23.Granite.registerApp(AppsInTossContainer.bind(null, container), {
1422
1389
  appName,
1423
1390
  context,
1424
- setIosSwipeGestureEnabled: import_native_modules14.setIosSwipeGestureEnabled,
1391
+ setIosSwipeGestureEnabled: import_native_modules13.setIosSwipeGestureEnabled,
1425
1392
  router: {
1426
1393
  screenContainer: AppsInTossScreenContainer,
1427
1394
  defaultScreenOption: {
@@ -1452,42 +1419,42 @@ var AppsInToss = {
1452
1419
  };
1453
1420
 
1454
1421
  // src/components/WebView.tsx
1455
- var import_native_modules19 = require("@apps-in-toss/native-modules");
1422
+ var import_native_modules22 = require("@apps-in-toss/native-modules");
1456
1423
  var appsInTossAsyncBridges = __toESM(require("@apps-in-toss/native-modules/async-bridges"), 1);
1457
1424
  var appsInTossConstantBridges = __toESM(require("@apps-in-toss/native-modules/constant-bridges"), 1);
1458
1425
  var appsInTossEventBridges = __toESM(require("@apps-in-toss/native-modules/event-bridges"), 1);
1459
1426
  var import_react_native_safe_area_context4 = require("@granite-js/native/react-native-safe-area-context");
1460
- var import_react_native34 = require("@granite-js/react-native");
1461
- var import_tds_react_native15 = require("@toss/tds-react-native");
1427
+ var import_react_native37 = require("@granite-js/react-native");
1428
+ var import_tds_react_native14 = require("@toss/tds-react-native");
1462
1429
  var import_private9 = require("@toss/tds-react-native/private");
1463
- var import_react29 = require("react");
1464
- var import_react_native35 = require("react-native");
1430
+ var import_react28 = require("react");
1431
+ var import_react_native38 = require("react-native");
1465
1432
 
1466
1433
  // src/components/GameWebView.tsx
1467
- var import_native_modules15 = require("@apps-in-toss/native-modules");
1434
+ var import_native_modules14 = require("@apps-in-toss/native-modules");
1468
1435
  var import_react_native_webview = require("@granite-js/native/react-native-webview");
1469
- var import_react20 = require("react");
1436
+ var import_react19 = require("react");
1470
1437
  var import_react_native27 = require("react-native");
1471
1438
 
1472
1439
  // src/components/NavigationBar/GameWebviewNavigationBar.tsx
1473
1440
  var import_react_native_safe_area_context2 = require("@granite-js/native/react-native-safe-area-context");
1474
1441
  var import_react_native25 = require("@granite-js/react-native");
1475
- var import_tds_react_native12 = require("@toss/tds-react-native");
1442
+ var import_tds_react_native11 = require("@toss/tds-react-native");
1476
1443
  var import_private7 = require("@toss/tds-react-native/private");
1477
1444
  var import_es_hangul3 = require("es-hangul");
1478
- var import_react19 = require("react");
1445
+ var import_react18 = require("react");
1479
1446
  var import_react_native26 = require("react-native");
1480
1447
  var import_jsx_runtime14 = require("react/jsx-runtime");
1481
1448
  function GameWebviewNavigationBar() {
1482
1449
  const safeAreaTop = (0, import_private7.useSafeAreaTop)();
1483
- const { openConfirm } = (0, import_tds_react_native12.useDialog)();
1450
+ const { openConfirm } = (0, import_tds_react_native11.useDialog)();
1484
1451
  const { captureExitLog } = useCaptureExitLog();
1485
1452
  const global2 = getAppsInTossGlobals();
1486
1453
  const logging = useNavigationBarLogging();
1487
1454
  const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
1488
1455
  const { navigationRightButton } = useNavigationBarContext();
1489
1456
  const { right: safeAreaRight } = (0, import_react_native_safe_area_context2.useSafeAreaInsets)();
1490
- const handleGameWebviewClose = (0, import_react19.useCallback)(async () => {
1457
+ const handleGameWebviewClose = (0, import_react18.useCallback)(async () => {
1491
1458
  logging.closeButtonClick();
1492
1459
  const isConfirmed = await openConfirm({
1493
1460
  title: `${(0, import_es_hangul3.josa)(global2.brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
@@ -1503,7 +1470,7 @@ function GameWebviewNavigationBar() {
1503
1470
  }
1504
1471
  }, [captureExitLog, global2.brandDisplayName, logging, openConfirm]);
1505
1472
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
1506
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native12.PageNavbar, { preference: { type: "none" } }),
1473
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native11.PageNavbar, { preference: { type: "none" } }),
1507
1474
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1508
1475
  import_react_native26.View,
1509
1476
  {
@@ -1538,52 +1505,44 @@ function GameWebviewNavigationBar() {
1538
1505
 
1539
1506
  // src/components/GameWebView.tsx
1540
1507
  var import_jsx_runtime15 = require("react/jsx-runtime");
1541
- var GameWebView = (0, import_react20.forwardRef)(function GameWebView2(props, ref) {
1542
- const [isEntryMessageExited, setIsEntryMessageExited] = (0, import_react20.useState)(false);
1543
- (0, import_react20.useEffect)(() => {
1508
+ var GameWebView = (0, import_react19.forwardRef)(function GameWebView2(props, ref) {
1509
+ (0, import_react19.useEffect)(() => {
1544
1510
  if (import_react_native27.Platform.OS === "ios") {
1545
- (0, import_native_modules15.setIosSwipeGestureEnabled)({ isEnabled: false });
1511
+ (0, import_native_modules14.setIosSwipeGestureEnabled)({ isEnabled: false });
1546
1512
  return () => {
1547
- (0, import_native_modules15.setIosSwipeGestureEnabled)({ isEnabled: true });
1513
+ (0, import_native_modules14.setIosSwipeGestureEnabled)({ isEnabled: true });
1548
1514
  };
1549
1515
  }
1550
1516
  return;
1551
1517
  }, []);
1552
- (0, import_react20.useEffect)(() => {
1553
- import_native_modules15.appsInTossEvent.addEventListener("entryMessageExited", {
1554
- onEvent: () => {
1555
- setIsEntryMessageExited(true);
1556
- }
1557
- });
1558
- }, []);
1559
1518
  return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1560
1519
  /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameWebviewNavigationBar, {}),
1561
- (0, import_native_modules15.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameInitializer, { isReadyForProfileUI: isEntryMessageExited, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props })
1520
+ (0, import_native_modules14.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(GameInitializer, { children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react_native_webview.WebView, { ref, ...props })
1562
1521
  ] });
1563
1522
  });
1564
1523
 
1565
1524
  // src/components/PartnerWebView.tsx
1566
1525
  var import_react_native_webview2 = require("@granite-js/native/react-native-webview");
1567
- var import_react22 = require("react");
1526
+ var import_react21 = require("react");
1568
1527
 
1569
1528
  // src/components/NavigationBar/PartnerWebviewNavigationBar.tsx
1570
1529
  var import_react_native28 = require("@granite-js/react-native");
1571
- var import_tds_react_native13 = require("@toss/tds-react-native");
1530
+ var import_tds_react_native12 = require("@toss/tds-react-native");
1572
1531
  var import_private8 = require("@toss/tds-react-native/private");
1573
1532
  var import_es_hangul4 = require("es-hangul");
1574
- var import_react21 = require("react");
1533
+ var import_react20 = require("react");
1575
1534
  var import_jsx_runtime16 = require("react/jsx-runtime");
1576
1535
  function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
1577
1536
  const globals = getAppsInTossGlobals();
1578
1537
  const { captureExitLog } = useCaptureExitLog();
1579
1538
  const logging = useNavigationBarLogging();
1580
- const { openConfirm } = (0, import_tds_react_native13.useDialog)();
1539
+ const { openConfirm } = (0, import_tds_react_native12.useDialog)();
1581
1540
  const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
1582
1541
  const parsedNavigationBar = globals.navigationBar != null ? safeParseNavigationBar(globals.navigationBar) : null;
1583
1542
  const withHomeButton = parsedNavigationBar?.withHomeButton ?? false;
1584
1543
  const withBackButton = parsedNavigationBar?.withBackButton ?? true;
1585
1544
  const { navigationRightButton } = useNavigationBarContext();
1586
- const handleClose = (0, import_react21.useCallback)(async () => {
1545
+ const handleClose = (0, import_react20.useCallback)(async () => {
1587
1546
  logging.closeButtonClick();
1588
1547
  const isConfirmed = await openConfirm({
1589
1548
  title: `${(0, import_es_hangul4.josa)(globals.brandDisplayName, "\uC744/\uB97C")} \uC885\uB8CC\uD560\uAE4C\uC694?`,
@@ -1617,7 +1576,7 @@ function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
1617
1576
 
1618
1577
  // src/components/PartnerWebView.tsx
1619
1578
  var import_jsx_runtime17 = require("react/jsx-runtime");
1620
- var PartnerWebView = (0, import_react22.forwardRef)(function PartnerWebViewScreen({ onBackButtonClick, onHomeButtonClick, ...webViewProps }, ref) {
1579
+ var PartnerWebView = (0, import_react21.forwardRef)(function PartnerWebViewScreen({ onBackButtonClick, onHomeButtonClick, ...webViewProps }, ref) {
1621
1580
  return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
1622
1581
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PartnerWebviewNavigationBar, { onBackButtonClick, onHomeButtonClick }),
1623
1582
  /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_react_native_webview2.WebView, { ref, ...webViewProps, style: { flex: 1 } })
@@ -1637,8 +1596,362 @@ function convertIntentURL(url) {
1637
1596
  return `${scheme}://${url.hostname}${url.pathname}${url.search}`;
1638
1597
  }
1639
1598
 
1599
+ // src/ads/fetchTossAd.ts
1600
+ var import_native_modules15 = require("@apps-in-toss/native-modules");
1601
+
1602
+ // ../../.yarn/cache/es-toolkit-npm-1.34.1-4cd6371dcb-aab6d07be3.zip/node_modules/es-toolkit/dist/function/noop.mjs
1603
+ function noop() {
1604
+ }
1605
+
1606
+ // src/ads/generateSessionId.ts
1607
+ function generateSessionId() {
1608
+ return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
1609
+ const r = Math.random() * 16 | 0;
1610
+ const v = c === "x" ? r : r & 3 | 8;
1611
+ return v.toString(16);
1612
+ });
1613
+ }
1614
+
1615
+ // src/ads/constants.ts
1616
+ var sessionId = generateSessionId();
1617
+
1618
+ // src/ads/fetchTossAd.ts
1619
+ var ANDROID_FETCH_TOSS_AD_SUPPORTED_VERSION = "5.241.0";
1620
+ var IOS_FETCH_TOSS_AD_SUPPORTED_VERSION = "5.241.0";
1621
+ var UNSUPPORTED_ERROR_MESSAGE = "This feature is not supported in the current environment";
1622
+ var ENVIRONMENT = (0, import_native_modules15.getOperationalEnvironment)();
1623
+ function fetchTossAd(params) {
1624
+ if (!fetchTossAd.isSupported()) {
1625
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
1626
+ return noop;
1627
+ }
1628
+ const { onEvent, onError, options } = params;
1629
+ const { adGroupId } = options;
1630
+ const unregisterCallbacks = import_native_modules15.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1631
+ "fetchTossAd",
1632
+ { spaceUnitId: adGroupId, sessionId, sdkId: options.sdkId, availableStyleIds: options.availableStyleIds },
1633
+ {
1634
+ onSuccess: (response) => {
1635
+ onEvent(response);
1636
+ },
1637
+ onError: (error) => {
1638
+ onError(error);
1639
+ }
1640
+ }
1641
+ );
1642
+ return unregisterCallbacks;
1643
+ }
1644
+ fetchTossAd.isSupported = () => {
1645
+ if (ENVIRONMENT !== "toss") {
1646
+ return false;
1647
+ }
1648
+ return (0, import_native_modules15.isMinVersionSupported)({
1649
+ android: ANDROID_FETCH_TOSS_AD_SUPPORTED_VERSION,
1650
+ ios: IOS_FETCH_TOSS_AD_SUPPORTED_VERSION
1651
+ });
1652
+ };
1653
+
1654
+ // src/ads/integratedAd.ts
1655
+ var import_native_modules17 = require("@apps-in-toss/native-modules");
1656
+
1657
+ // src/ads/generateRequestId.ts
1658
+ function generateRequestId() {
1659
+ const timestamp = Date.now().toString(36).toUpperCase();
1660
+ const random = Math.random().toString(36).substring(2, 7).toUpperCase();
1661
+ return `ait-${timestamp}${random}`;
1662
+ }
1663
+
1664
+ // src/ads/getReferrer.ts
1665
+ var import_react_native29 = require("@granite-js/react-native");
1666
+ function getReferrer() {
1667
+ try {
1668
+ return new URL((0, import_react_native29.getSchemeUri)()).searchParams.get("referrer");
1669
+ } catch {
1670
+ return null;
1671
+ }
1672
+ }
1673
+
1674
+ // src/ads/remotes.ts
1675
+ var import_native_modules16 = require("@apps-in-toss/native-modules");
1676
+
1677
+ // src/ads/getIsDev.ts
1678
+ var import_react_native30 = require("@granite-js/react-native");
1679
+ function getIsDev() {
1680
+ try {
1681
+ return new URL((0, import_react_native30.getSchemeUri)()).searchParams.get("isDev") === "true";
1682
+ } catch {
1683
+ return false;
1684
+ }
1685
+ }
1686
+
1687
+ // src/ads/remotes.ts
1688
+ var OPERATIONAL_ENVIRONMENT = (0, import_native_modules16.getOperationalEnvironment)();
1689
+ var OS = (0, import_native_modules16.getPlatformOS)();
1690
+ var APP_VER = (0, import_native_modules16.getTossAppVersion)();
1691
+ var ALPHA_EVENT_TRACKER_HTTP_ENDPOINT = "https://alpha-trillion.toss.im/trk/sdk-mediation/event";
1692
+ var LIVE_EVENT_TRACKER_HTTP_ENDPOINT = "https://trillion.toss.im/trk/sdk-mediation/event";
1693
+ function getPostEventTrackingUrl() {
1694
+ const isDev = getIsDev();
1695
+ if (OPERATIONAL_ENVIRONMENT === "sandbox" || isDev) {
1696
+ return ALPHA_EVENT_TRACKER_HTTP_ENDPOINT;
1697
+ }
1698
+ return LIVE_EVENT_TRACKER_HTTP_ENDPOINT;
1699
+ }
1700
+ function postEventTracking(params) {
1701
+ const endpoint = getPostEventTrackingUrl();
1702
+ const bodyJSON = JSON.stringify({
1703
+ ...params,
1704
+ os: OS,
1705
+ appVer: APP_VER,
1706
+ deviceIdType: "NONE",
1707
+ platform: "RN"
1708
+ });
1709
+ return fetch(
1710
+ endpoint,
1711
+ {
1712
+ method: "POST",
1713
+ headers: {
1714
+ "Content-Type": "application/json"
1715
+ },
1716
+ body: bodyJSON
1717
+ }
1718
+ ).catch(noop);
1719
+ }
1720
+
1721
+ // src/ads/integratedAd.ts
1722
+ var INTEGRATED_AD_SDK_VERSION = "0.0.0";
1723
+ var ANDROID_INTEGRATED_AD_SUPPORTED_VERSION = "5.241.0";
1724
+ var IOS_INTEGRATED_AD_SUPPORTED_VERSION = "5.241.0";
1725
+ var UNSUPPORTED_ERROR_MESSAGE2 = "This feature is not supported in the current environment";
1726
+ var INTG_AD_ADM_FALLBACK_RID_MAP = {};
1727
+ function integratedAdIsSupported() {
1728
+ return (0, import_native_modules17.isMinVersionSupported)({
1729
+ android: ANDROID_INTEGRATED_AD_SUPPORTED_VERSION,
1730
+ ios: IOS_INTEGRATED_AD_SUPPORTED_VERSION
1731
+ });
1732
+ }
1733
+ function generateLoadFullScreenAd(sdkId) {
1734
+ const fn = (params) => {
1735
+ if (!import_native_modules17.GoogleAdMob.loadAppsInTossAdMob.isSupported()) {
1736
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
1737
+ return noop;
1738
+ }
1739
+ if (!integratedAdIsSupported()) {
1740
+ return import_native_modules17.GoogleAdMob.loadAppsInTossAdMob({
1741
+ ...params,
1742
+ onEvent: (event) => {
1743
+ if (event.type === "loaded") {
1744
+ const requestId = generateRequestId();
1745
+ INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] = requestId;
1746
+ postEventTracking({
1747
+ eventName: "LOAD",
1748
+ spaceUnitId: params.options.adGroupId,
1749
+ requestId,
1750
+ responseId: event.data.responseInfo.responseId,
1751
+ mediationType: "ADMOB",
1752
+ format: "",
1753
+ adSourceName: event.data.responseInfo.loadedAdNetworkInfo?.adSourceName ?? "",
1754
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1755
+ });
1756
+ }
1757
+ return params.onEvent(event);
1758
+ },
1759
+ onError: (error) => {
1760
+ const requestId = INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] ?? "";
1761
+ postEventTracking({
1762
+ eventName: "FAILED_TO_LOAD",
1763
+ spaceUnitId: params.options.adGroupId,
1764
+ requestId,
1765
+ responseId: "",
1766
+ mediationType: "ADMOB",
1767
+ format: "",
1768
+ adSourceName: "",
1769
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1770
+ });
1771
+ return params.onError(error);
1772
+ }
1773
+ });
1774
+ }
1775
+ const { onEvent, onError, options } = params;
1776
+ const { adGroupId } = options;
1777
+ const referrer = getReferrer();
1778
+ const unregisterCallbacks = import_native_modules17.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1779
+ "loadTossAdOrAdmob",
1780
+ { spaceUnitId: adGroupId, referrer, sessionId, sdkId },
1781
+ {
1782
+ onSuccess: () => {
1783
+ onEvent({ type: "loaded" });
1784
+ },
1785
+ onError: (error) => {
1786
+ onError(error);
1787
+ }
1788
+ }
1789
+ );
1790
+ return unregisterCallbacks;
1791
+ };
1792
+ fn.isSupported = import_native_modules17.GoogleAdMob.loadAppsInTossAdMob.isSupported;
1793
+ return fn;
1794
+ }
1795
+ var loadFullScreenAd = generateLoadFullScreenAd("107");
1796
+ var loadFullScreenAdForWeb = generateLoadFullScreenAd("107");
1797
+ function showFullScreenAd(params) {
1798
+ if (!import_native_modules17.GoogleAdMob.showAppsInTossAdMob.isSupported()) {
1799
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE2));
1800
+ return noop;
1801
+ }
1802
+ if (!integratedAdIsSupported()) {
1803
+ return import_native_modules17.GoogleAdMob.showAppsInTossAdMob({
1804
+ ...params,
1805
+ onEvent: (event) => {
1806
+ const requestId = INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] ?? "";
1807
+ switch (event.type) {
1808
+ case "show":
1809
+ postEventTracking({
1810
+ eventName: "SHOW",
1811
+ spaceUnitId: params.options.adGroupId,
1812
+ requestId,
1813
+ responseId: "",
1814
+ mediationType: "ADMOB",
1815
+ format: "",
1816
+ adSourceName: "",
1817
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1818
+ });
1819
+ break;
1820
+ case "failedToShow":
1821
+ postEventTracking({
1822
+ eventName: "FAILED_TO_SHOW",
1823
+ spaceUnitId: params.options.adGroupId,
1824
+ requestId,
1825
+ responseId: "",
1826
+ mediationType: "ADMOB",
1827
+ format: "",
1828
+ adSourceName: "",
1829
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1830
+ });
1831
+ break;
1832
+ case "impression":
1833
+ postEventTracking({
1834
+ eventName: "IMP",
1835
+ spaceUnitId: params.options.adGroupId,
1836
+ requestId,
1837
+ responseId: "",
1838
+ mediationType: "ADMOB",
1839
+ format: "",
1840
+ adSourceName: "",
1841
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1842
+ });
1843
+ break;
1844
+ case "clicked":
1845
+ postEventTracking({
1846
+ eventName: "CLICK",
1847
+ spaceUnitId: params.options.adGroupId,
1848
+ requestId,
1849
+ responseId: "",
1850
+ mediationType: "ADMOB",
1851
+ format: "",
1852
+ adSourceName: "",
1853
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1854
+ });
1855
+ break;
1856
+ case "dismissed":
1857
+ postEventTracking({
1858
+ eventName: "DISMISS",
1859
+ spaceUnitId: params.options.adGroupId,
1860
+ requestId,
1861
+ responseId: "",
1862
+ mediationType: "ADMOB",
1863
+ format: "",
1864
+ adSourceName: "",
1865
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1866
+ });
1867
+ break;
1868
+ case "userEarnedReward":
1869
+ postEventTracking({
1870
+ eventName: "USER_EARNED_REWARD",
1871
+ spaceUnitId: params.options.adGroupId,
1872
+ requestId,
1873
+ responseId: "",
1874
+ mediationType: "ADMOB",
1875
+ format: "",
1876
+ adSourceName: "",
1877
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1878
+ });
1879
+ break;
1880
+ }
1881
+ return params.onEvent(event);
1882
+ },
1883
+ onError: (error) => {
1884
+ const requestId = INTG_AD_ADM_FALLBACK_RID_MAP[params.options.adGroupId] ?? "";
1885
+ postEventTracking({
1886
+ eventName: "FAILED_TO_SHOW",
1887
+ spaceUnitId: params.options.adGroupId,
1888
+ requestId,
1889
+ responseId: "",
1890
+ mediationType: "ADMOB",
1891
+ format: "",
1892
+ adSourceName: "",
1893
+ sdkVer: INTEGRATED_AD_SDK_VERSION
1894
+ });
1895
+ return params.onError(error);
1896
+ }
1897
+ });
1898
+ }
1899
+ const { onEvent, onError, options } = params;
1900
+ const { adGroupId } = options;
1901
+ const referrer = getReferrer();
1902
+ const unregisterCallbacks = import_native_modules17.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1903
+ "showTossAdOrAdmob",
1904
+ { spaceUnitId: adGroupId, referrer, sessionId },
1905
+ {
1906
+ onAdClicked: () => {
1907
+ onEvent({ type: "clicked" });
1908
+ },
1909
+ onAdDismissed: () => {
1910
+ onEvent({ type: "dismissed" });
1911
+ },
1912
+ onAdFailedToShow: () => {
1913
+ onEvent({ type: "failedToShow" });
1914
+ },
1915
+ onAdImpression: () => {
1916
+ onEvent({ type: "impression" });
1917
+ },
1918
+ onAdShow: () => {
1919
+ onEvent({ type: "show" });
1920
+ },
1921
+ onUserEarnedReward: (data) => {
1922
+ onEvent({ type: "userEarnedReward", data });
1923
+ },
1924
+ onSuccess: () => {
1925
+ onEvent({ type: "requested" });
1926
+ },
1927
+ onError: (error) => {
1928
+ onError(error);
1929
+ }
1930
+ }
1931
+ );
1932
+ return unregisterCallbacks;
1933
+ }
1934
+ showFullScreenAd.isSupported = import_native_modules17.GoogleAdMob.showAppsInTossAdMob.isSupported;
1935
+
1936
+ // src/ads/tossAdEventLog.ts
1937
+ var import_native_modules18 = require("@apps-in-toss/native-modules");
1938
+ var import_react_native31 = require("@granite-js/react-native");
1939
+ async function tossAdEventLog(params) {
1940
+ const referrer = getReferrer();
1941
+ const appName = import_react_native31.Granite.appName;
1942
+ const eventLogParams = {
1943
+ ...params,
1944
+ params: {
1945
+ ...params.params,
1946
+ referrer,
1947
+ app_name: appName
1948
+ }
1949
+ };
1950
+ return import_native_modules18.INTERNAL__module.tossCoreEventLog(eventLogParams);
1951
+ }
1952
+
1640
1953
  // src/bridge-handler/useBridgeHandler.tsx
1641
- var import_react23 = require("react");
1954
+ var import_react22 = require("react");
1642
1955
  function serializeError(error) {
1643
1956
  return JSON.stringify(error, (_, value) => {
1644
1957
  if (value instanceof Error) {
@@ -1690,8 +2003,8 @@ function useBridgeHandler({
1690
2003
  asyncHandlerMap,
1691
2004
  eventListenerMap
1692
2005
  }) {
1693
- const ref = (0, import_react23.useRef)(null);
1694
- const injectedJavaScript = (0, import_react23.useMemo)(
2006
+ const ref = (0, import_react22.useRef)(null);
2007
+ const injectedJavaScript = (0, import_react22.useMemo)(
1695
2008
  () => `window.__CONSTANT_HANDLER_MAP = ${JSON.stringify(
1696
2009
  Object.entries(constantHandlerMap).reduce(
1697
2010
  (acc, [key, value]) => {
@@ -1703,7 +2016,7 @@ function useBridgeHandler({
1703
2016
  )};`,
1704
2017
  [constantHandlerMap]
1705
2018
  );
1706
- (0, import_react23.useEffect)(() => {
2019
+ (0, import_react22.useEffect)(() => {
1707
2020
  ref.current?.injectJavaScript(injectedJavaScript);
1708
2021
  }, [injectedJavaScript]);
1709
2022
  const createHandleOnEvent = (functionName, eventId) => (response) => {
@@ -1717,7 +2030,7 @@ function useBridgeHandler({
1717
2030
  window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${serializedError});
1718
2031
  `);
1719
2032
  };
1720
- const $onMessage = (0, import_react23.useCallback)(
2033
+ const $onMessage = (0, import_react22.useCallback)(
1721
2034
  async (e) => {
1722
2035
  onMessage?.(e);
1723
2036
  const data = parseNativeEventData(e.nativeEvent.data);
@@ -1777,7 +2090,7 @@ function parseNativeEventData(data) {
1777
2090
 
1778
2091
  // src/core/hooks/useSafeAreaInsetsEmitter.tsx
1779
2092
  var import_react_native_safe_area_context3 = require("@granite-js/native/react-native-safe-area-context");
1780
- var import_react24 = require("react");
2093
+ var import_react23 = require("react");
1781
2094
  var EventEmitter = class {
1782
2095
  listeners = {};
1783
2096
  on(event, listener) {
@@ -1801,8 +2114,8 @@ var EventEmitter = class {
1801
2114
  };
1802
2115
  function useSafeAreaInsetsEmitter() {
1803
2116
  const insets = (0, import_react_native_safe_area_context3.useSafeAreaInsets)();
1804
- const emitter = (0, import_react24.useMemo)(() => new EventEmitter(), []);
1805
- (0, import_react24.useEffect)(() => {
2117
+ const emitter = (0, import_react23.useMemo)(() => new EventEmitter(), []);
2118
+ (0, import_react23.useEffect)(() => {
1806
2119
  emitter.emit("safeAreaInsetsChange", insets);
1807
2120
  return () => {
1808
2121
  emitter.off("safeAreaInsetsChange", (listener) => listener(insets));
@@ -1812,13 +2125,13 @@ function useSafeAreaInsetsEmitter() {
1812
2125
  }
1813
2126
 
1814
2127
  // src/core/hooks/useWebBackHandler.tsx
1815
- var import_react_native29 = require("@granite-js/react-native");
1816
- var import_tds_react_native14 = require("@toss/tds-react-native");
2128
+ var import_react_native32 = require("@granite-js/react-native");
2129
+ var import_tds_react_native13 = require("@toss/tds-react-native");
1817
2130
  var import_es_hangul5 = require("es-hangul");
1818
- var import_react26 = require("react");
2131
+ var import_react25 = require("react");
1819
2132
 
1820
2133
  // src/hooks/useWebviewHistoryStack.tsx
1821
- var import_react25 = require("react");
2134
+ var import_react24 = require("react");
1822
2135
  var INITIAL_STATE = { stack: [], index: -1 };
1823
2136
  function reducer(state, action) {
1824
2137
  switch (action.type) {
@@ -1849,11 +2162,11 @@ function reducer(state, action) {
1849
2162
  }
1850
2163
  }
1851
2164
  function useWebViewHistory() {
1852
- const [state, dispatch] = (0, import_react25.useReducer)(reducer, INITIAL_STATE);
1853
- const onNavigationStateChange = (0, import_react25.useCallback)(({ url, canGoForward: canGoForward2 }) => {
2165
+ const [state, dispatch] = (0, import_react24.useReducer)(reducer, INITIAL_STATE);
2166
+ const onNavigationStateChange = (0, import_react24.useCallback)(({ url, canGoForward: canGoForward2 }) => {
1854
2167
  dispatch({ type: "NAVIGATION_CHANGE", url, canGoForward: canGoForward2 });
1855
2168
  }, []);
1856
- const { canGoBack, canGoForward } = (0, import_react25.useMemo)(() => {
2169
+ const { canGoBack, canGoForward } = (0, import_react24.useMemo)(() => {
1857
2170
  const canBack = state.index > 0;
1858
2171
  const canFwd = state.index >= 0 && state.index < state.stack.length - 1;
1859
2172
  return { canGoBack: canBack, canGoForward: canFwd };
@@ -1882,23 +2195,23 @@ function useWebBackHandler(webViewRef) {
1882
2195
  hasBackEvent: hasWebBackEvent,
1883
2196
  addEventListener: addWebBackEventListener,
1884
2197
  removeEventListener: removeWebBackEventListener
1885
- } = (0, import_react_native29.useBackEventState)();
2198
+ } = (0, import_react_native32.useBackEventState)();
1886
2199
  const logging = useNavigationBarLogging();
1887
- const { openConfirm } = (0, import_tds_react_native14.useDialog)();
2200
+ const { openConfirm } = (0, import_tds_react_native13.useDialog)();
1888
2201
  const global2 = getAppsInTossGlobals();
1889
- const addEventListener = (0, import_react26.useCallback)(
2202
+ const addEventListener = (0, import_react25.useCallback)(
1890
2203
  (handler) => {
1891
2204
  addWebBackEventListener(handler);
1892
2205
  },
1893
2206
  [addWebBackEventListener]
1894
2207
  );
1895
- const removeEventListener = (0, import_react26.useCallback)(
2208
+ const removeEventListener = (0, import_react25.useCallback)(
1896
2209
  (handler) => {
1897
2210
  removeWebBackEventListener(handler);
1898
2211
  },
1899
2212
  [removeWebBackEventListener]
1900
2213
  );
1901
- const handleWebBack = (0, import_react26.useCallback)(async () => {
2214
+ const handleWebBack = (0, import_react25.useCallback)(async () => {
1902
2215
  if (hasWebBackEvent) {
1903
2216
  for (const handler of webBackHandlersRef) {
1904
2217
  handler();
@@ -1918,7 +2231,7 @@ function useWebBackHandler(webViewRef) {
1918
2231
  logging.closePopupCtaClick(isConfirmed);
1919
2232
  if (isConfirmed) {
1920
2233
  captureExitLog(Date.now());
1921
- (0, import_react_native29.closeView)();
2234
+ (0, import_react_native32.closeView)();
1922
2235
  }
1923
2236
  }
1924
2237
  }, [
@@ -1931,7 +2244,7 @@ function useWebBackHandler(webViewRef) {
1931
2244
  openConfirm,
1932
2245
  webViewRef
1933
2246
  ]);
1934
- const handleWebHome = (0, import_react26.useCallback)(() => {
2247
+ const handleWebHome = (0, import_react25.useCallback)(() => {
1935
2248
  logging.homeButtonClick();
1936
2249
  if (hasWebBackEvent) {
1937
2250
  for (const handler of webBackHandlersRef) {
@@ -1941,7 +2254,7 @@ function useWebBackHandler(webViewRef) {
1941
2254
  }
1942
2255
  webViewRef.current?.injectJavaScript(HISTORY_HOME_SCRIPT);
1943
2256
  }, [hasWebBackEvent, webBackHandlersRef, logging, webViewRef]);
1944
- return (0, import_react26.useMemo)(
2257
+ return (0, import_react25.useMemo)(
1945
2258
  () => ({ addEventListener, removeEventListener, handleWebBack, handleWebHome, onNavigationStateChange }),
1946
2259
  [addEventListener, removeEventListener, handleWebBack, handleWebHome, onNavigationStateChange]
1947
2260
  );
@@ -1961,8 +2274,8 @@ function mergeRefs(...refs) {
1961
2274
  }
1962
2275
 
1963
2276
  // src/hooks/useCreateUserAgent.ts
1964
- var import_native_modules16 = require("@apps-in-toss/native-modules");
1965
- var import_react_native30 = require("react-native");
2277
+ var import_native_modules19 = require("@apps-in-toss/native-modules");
2278
+ var import_react_native33 = require("react-native");
1966
2279
  var FontA11yCategory = {
1967
2280
  Large: "Large",
1968
2281
  xLarge: "xLarge",
@@ -2095,9 +2408,9 @@ function useCreateUserAgent({
2095
2408
  safeArea,
2096
2409
  safeAreaBottomTransparency
2097
2410
  }) {
2098
- const platform = (0, import_native_modules16.getPlatformOS)();
2099
- const appVersion = (0, import_native_modules16.getTossAppVersion)();
2100
- const { fontScale } = (0, import_react_native30.useWindowDimensions)();
2411
+ const platform = (0, import_native_modules19.getPlatformOS)();
2412
+ const appVersion = (0, import_native_modules19.getTossAppVersion)();
2413
+ const { fontScale } = (0, import_react_native33.useWindowDimensions)();
2101
2414
  const platformString = platform === "ios" ? "iPhone" : "Android phone";
2102
2415
  const fontA11y = mapFontScaleToCategory(fontScale, platform);
2103
2416
  const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
@@ -2118,17 +2431,17 @@ function useCreateUserAgent({
2118
2431
  }
2119
2432
 
2120
2433
  // src/hooks/useGeolocation.ts
2121
- var import_native_modules17 = require("@apps-in-toss/native-modules");
2122
- var import_react_native31 = require("@granite-js/react-native");
2123
- var import_react27 = require("react");
2434
+ var import_native_modules20 = require("@apps-in-toss/native-modules");
2435
+ var import_react_native34 = require("@granite-js/react-native");
2436
+ var import_react26 = require("react");
2124
2437
  function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
2125
- const isVisible = (0, import_react_native31.useVisibility)();
2126
- const [location, setLocation] = (0, import_react27.useState)(null);
2127
- (0, import_react27.useEffect)(() => {
2438
+ const isVisible = (0, import_react_native34.useVisibility)();
2439
+ const [location, setLocation] = (0, import_react26.useState)(null);
2440
+ (0, import_react26.useEffect)(() => {
2128
2441
  if (!isVisible) {
2129
2442
  return;
2130
2443
  }
2131
- return (0, import_native_modules17.startUpdateLocation)({
2444
+ return (0, import_native_modules20.startUpdateLocation)({
2132
2445
  options: {
2133
2446
  accuracy,
2134
2447
  distanceInterval,
@@ -2142,12 +2455,12 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
2142
2455
  }
2143
2456
 
2144
2457
  // src/hooks/useWaitForReturnNavigator.tsx
2145
- var import_react_native32 = require("@granite-js/react-native");
2146
- var import_react28 = require("react");
2458
+ var import_react_native35 = require("@granite-js/react-native");
2459
+ var import_react27 = require("react");
2147
2460
  function useWaitForReturnNavigator() {
2148
- const callbacks = (0, import_react28.useRef)([]).current;
2149
- const navigation = (0, import_react_native32.useNavigation)();
2150
- const startNavigating = (0, import_react28.useCallback)(
2461
+ const callbacks = (0, import_react27.useRef)([]).current;
2462
+ const navigation = (0, import_react_native35.useNavigation)();
2463
+ const startNavigating = (0, import_react27.useCallback)(
2151
2464
  (route, params) => {
2152
2465
  return new Promise((resolve) => {
2153
2466
  callbacks.push(resolve);
@@ -2156,7 +2469,7 @@ function useWaitForReturnNavigator() {
2156
2469
  },
2157
2470
  [callbacks, navigation]
2158
2471
  );
2159
- const handleVisibilityChange = (0, import_react28.useCallback)(
2472
+ const handleVisibilityChange = (0, import_react27.useCallback)(
2160
2473
  (state) => {
2161
2474
  if (state === "visible" && callbacks.length > 0) {
2162
2475
  for (const callback of callbacks) {
@@ -2167,7 +2480,7 @@ function useWaitForReturnNavigator() {
2167
2480
  },
2168
2481
  [callbacks]
2169
2482
  );
2170
- (0, import_react_native32.useVisibilityChange)(handleVisibilityChange);
2483
+ (0, import_react_native35.useVisibilityChange)(handleVisibilityChange);
2171
2484
  return startNavigating;
2172
2485
  }
2173
2486
 
@@ -2181,8 +2494,8 @@ function useTopNavigation() {
2181
2494
  }
2182
2495
 
2183
2496
  // src/utils/log.ts
2184
- var import_native_modules18 = require("@apps-in-toss/native-modules");
2185
- var import_react_native33 = require("@granite-js/react-native");
2497
+ var import_native_modules21 = require("@apps-in-toss/native-modules");
2498
+ var import_react_native36 = require("@granite-js/react-native");
2186
2499
 
2187
2500
  // src/utils/extractDateFromUUIDv7.ts
2188
2501
  var extractDateFromUUIDv7 = (uuid) => {
@@ -2206,9 +2519,9 @@ var getGroupId = (url) => {
2206
2519
  };
2207
2520
  }
2208
2521
  };
2209
- var getReferrer = () => {
2522
+ var getReferrer2 = () => {
2210
2523
  try {
2211
- const referrer = new URL((0, import_react_native33.getSchemeUri)());
2524
+ const referrer = new URL((0, import_react_native36.getSchemeUri)());
2212
2525
  return referrer.searchParams.get("referrer");
2213
2526
  } catch {
2214
2527
  return "";
@@ -2221,12 +2534,12 @@ var trackScreen = (url) => {
2221
2534
  log_name: `${groupId}::screen`,
2222
2535
  params: {
2223
2536
  search,
2224
- referrer: getReferrer(),
2537
+ referrer: getReferrer2(),
2225
2538
  deployment_id: env.getDeploymentId(),
2226
2539
  deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
2227
2540
  }
2228
2541
  };
2229
- return (0, import_native_modules18.eventLog)(log);
2542
+ return (0, import_native_modules21.eventLog)(log);
2230
2543
  };
2231
2544
 
2232
2545
  // src/components/WebView.tsx
@@ -2235,12 +2548,12 @@ var operationalEnvironment = appsInTossConstantBridges.getOperationalEnvironment
2235
2548
  var TYPES = ["partner", "external", "game"];
2236
2549
  var WEBVIEW_TYPES = {
2237
2550
  partner: PartnerWebView,
2238
- external: import_tds_react_native15.ExternalWebViewScreen,
2551
+ external: import_tds_react_native14.ExternalWebViewScreen,
2239
2552
  game: GameWebView
2240
2553
  };
2241
2554
  function mergeSchemeQueryParamsInto(url) {
2242
2555
  const baseUrl = new URL(url);
2243
- const schemeUrl = new URL((0, import_react_native34.getSchemeUri)());
2556
+ const schemeUrl = new URL((0, import_react_native37.getSchemeUri)());
2244
2557
  baseUrl.pathname = schemeUrl.pathname;
2245
2558
  for (const [key, value] of schemeUrl.searchParams.entries()) {
2246
2559
  baseUrl.searchParams.set(key, value);
@@ -2252,7 +2565,7 @@ function getWebViewUri(local) {
2252
2565
  const devUrl = `http://${local.host}:${local.port}`;
2253
2566
  return mergeSchemeQueryParamsInto(devUrl).toString();
2254
2567
  }
2255
- const { url: rawUrl } = import_native_modules19.AppsInTossModule.getWebBundleURL({});
2568
+ const { url: rawUrl } = import_native_modules22.AppsInTossModule.getWebBundleURL({});
2256
2569
  const url = mergeSchemeQueryParamsInto(rawUrl);
2257
2570
  const deploymentId = env.getDeploymentId();
2258
2571
  if (deploymentId) {
@@ -2264,31 +2577,30 @@ function WebView({ type, local, onMessage, ...props }) {
2264
2577
  if (!TYPES.includes(type)) {
2265
2578
  throw new Error(`Invalid WebView type: '${type}'`);
2266
2579
  }
2267
- const webViewRef = (0, import_react29.useRef)(null);
2580
+ const webViewRef = (0, import_react28.useRef)(null);
2268
2581
  const webBackHandler = useWebBackHandler(webViewRef);
2269
- const uri = (0, import_react29.useMemo)(() => getWebViewUri(local), [local]);
2582
+ const uri = (0, import_react28.useMemo)(() => getWebViewUri(local), [local]);
2270
2583
  const top = (0, import_private9.useSafeAreaTop)();
2271
2584
  const bottom = (0, import_private9.useSafeAreaBottom)();
2272
2585
  const insets = (0, import_react_native_safe_area_context4.useSafeAreaInsets)();
2273
2586
  const global2 = getAppsInTossGlobals();
2274
2587
  const navigationBarContext = useNavigationBarContext();
2275
2588
  const safeAreaInsetsEmitter = useSafeAreaInsetsEmitter();
2276
- const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0, import_react29.useState)(
2589
+ const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0, import_react28.useState)(
2277
2590
  props.allowsBackForwardNavigationGestures
2278
2591
  );
2279
2592
  const handler = useBridgeHandler({
2280
2593
  onMessage,
2281
2594
  eventListenerMap: {
2282
2595
  ...appsInTossEventBridges,
2283
- navigationAccessoryEvent: ({ onEvent, onError }) => import_tds_react_native15.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
2596
+ navigationAccessoryEvent: ({ onEvent, onError }) => import_tds_react_native14.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
2284
2597
  backEvent: ({ onEvent }) => {
2285
2598
  webBackHandler.addEventListener(onEvent);
2286
2599
  return () => {
2287
2600
  webBackHandler.removeEventListener(onEvent);
2288
2601
  };
2289
2602
  },
2290
- entryMessageExited: ({ onEvent, onError }) => import_native_modules19.appsInTossEvent.addEventListener("entryMessageExited", { onEvent, onError }),
2291
- updateLocationEvent: ({ onEvent, onError, options }) => import_native_modules19.appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
2603
+ updateLocationEvent: ({ onEvent, onError, options }) => import_native_modules22.appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
2292
2604
  safeAreaInsetsChange: ({ onEvent }) => {
2293
2605
  safeAreaInsetsEmitter.on("safeAreaInsetsChange", onEvent);
2294
2606
  return () => {
@@ -2296,18 +2608,23 @@ function WebView({ type, local, onMessage, ...props }) {
2296
2608
  };
2297
2609
  },
2298
2610
  /** @internal */
2299
- appBridgeCallbackEvent: ({ onEvent, onError, options }) => import_native_modules19.appsInTossEvent.addEventListener("appBridgeCallbackEvent", { onEvent, onError, options }),
2611
+ appBridgeCallbackEvent: ({ onEvent, onError, options }) => import_native_modules22.appsInTossEvent.addEventListener("appBridgeCallbackEvent", { onEvent, onError, options }),
2300
2612
  /** AdMob */
2301
- loadAdMobInterstitialAd: import_native_modules19.GoogleAdMob.loadAdMobInterstitialAd,
2302
- showAdMobInterstitialAd: import_native_modules19.GoogleAdMob.showAdMobInterstitialAd,
2303
- loadAdMobRewardedAd: import_native_modules19.GoogleAdMob.loadAdMobRewardedAd,
2304
- showAdMobRewardedAd: import_native_modules19.GoogleAdMob.showAdMobRewardedAd,
2613
+ loadAdMobInterstitialAd: import_native_modules22.GoogleAdMob.loadAdMobInterstitialAd,
2614
+ showAdMobInterstitialAd: import_native_modules22.GoogleAdMob.showAdMobInterstitialAd,
2615
+ loadAdMobRewardedAd: import_native_modules22.GoogleAdMob.loadAdMobRewardedAd,
2616
+ showAdMobRewardedAd: import_native_modules22.GoogleAdMob.showAdMobRewardedAd,
2305
2617
  /** AdMobV2 */
2306
- loadAppsInTossAdMob: import_native_modules19.GoogleAdMob.loadAppsInTossAdMob,
2307
- showAppsInTossAdMob: import_native_modules19.GoogleAdMob.showAppsInTossAdMob,
2618
+ loadAppsInTossAdMob: import_native_modules22.GoogleAdMob.loadAppsInTossAdMob,
2619
+ showAppsInTossAdMob: import_native_modules22.GoogleAdMob.showAppsInTossAdMob,
2620
+ /** IntegratedAd */
2621
+ loadFullScreenAd: loadFullScreenAdForWeb,
2622
+ showFullScreenAd,
2623
+ /** TossAd */
2624
+ fetchTossAd,
2308
2625
  /** IAP */
2309
- iapCreateOneTimePurchaseOrder: import_native_modules19.IAP.createOneTimePurchaseOrder,
2310
- requestOneTimePurchase: import_native_modules19.requestOneTimePurchase
2626
+ iapCreateOneTimePurchaseOrder: import_native_modules22.IAP.createOneTimePurchaseOrder,
2627
+ requestOneTimePurchase: import_native_modules22.requestOneTimePurchase
2311
2628
  },
2312
2629
  constantHandlerMap: {
2313
2630
  ...appsInTossConstantBridges,
@@ -2317,13 +2634,18 @@ function WebView({ type, local, onMessage, ...props }) {
2317
2634
  getSafeAreaRight: () => insets.right,
2318
2635
  ...Object.fromEntries(Object.entries(global2).map(([key, value]) => [key, () => value])),
2319
2636
  /** AdMob */
2320
- loadAdMobInterstitialAd_isSupported: import_native_modules19.GoogleAdMob.loadAdMobInterstitialAd.isSupported,
2321
- showAdMobInterstitialAd_isSupported: import_native_modules19.GoogleAdMob.showAdMobInterstitialAd.isSupported,
2322
- loadAdMobRewardedAd_isSupported: import_native_modules19.GoogleAdMob.loadAdMobRewardedAd.isSupported,
2323
- showAdMobRewardedAd_isSupported: import_native_modules19.GoogleAdMob.showAdMobRewardedAd.isSupported,
2637
+ loadAdMobInterstitialAd_isSupported: import_native_modules22.GoogleAdMob.loadAdMobInterstitialAd.isSupported,
2638
+ showAdMobInterstitialAd_isSupported: import_native_modules22.GoogleAdMob.showAdMobInterstitialAd.isSupported,
2639
+ loadAdMobRewardedAd_isSupported: import_native_modules22.GoogleAdMob.loadAdMobRewardedAd.isSupported,
2640
+ showAdMobRewardedAd_isSupported: import_native_modules22.GoogleAdMob.showAdMobRewardedAd.isSupported,
2324
2641
  /** AdMobV2 */
2325
- loadAppsInTossAdMob_isSupported: import_native_modules19.GoogleAdMob.loadAppsInTossAdMob.isSupported,
2326
- showAppsInTossAdMob_isSupported: import_native_modules19.GoogleAdMob.showAppsInTossAdMob.isSupported,
2642
+ loadAppsInTossAdMob_isSupported: import_native_modules22.GoogleAdMob.loadAppsInTossAdMob.isSupported,
2643
+ showAppsInTossAdMob_isSupported: import_native_modules22.GoogleAdMob.showAppsInTossAdMob.isSupported,
2644
+ /** IntegratedAd */
2645
+ loadFullScreenAd_isSupported: loadFullScreenAdForWeb.isSupported,
2646
+ showFullScreenAd_isSupported: showFullScreenAd.isSupported,
2647
+ /** TossAd */
2648
+ fetchTossAd_isSupported: fetchTossAd.isSupported,
2327
2649
  /** env */
2328
2650
  getDeploymentId: env.getDeploymentId
2329
2651
  },
@@ -2346,20 +2668,22 @@ function WebView({ type, local, onMessage, ...props }) {
2346
2668
  getCurrentLocation: appsInTossAsyncBridges.getCurrentLocation,
2347
2669
  openCamera: appsInTossAsyncBridges.openCamera,
2348
2670
  /** Storage */
2349
- getStorageItem: import_native_modules19.Storage.getItem,
2350
- setStorageItem: import_native_modules19.Storage.setItem,
2351
- removeStorageItem: import_native_modules19.Storage.removeItem,
2352
- clearItems: import_native_modules19.Storage.clearItems,
2671
+ getStorageItem: import_native_modules22.Storage.getItem,
2672
+ setStorageItem: import_native_modules22.Storage.setItem,
2673
+ removeStorageItem: import_native_modules22.Storage.removeItem,
2674
+ clearItems: import_native_modules22.Storage.clearItems,
2353
2675
  /** IAP */
2354
- iapGetProductItemList: import_native_modules19.IAP.getProductItemList,
2355
- iapCreateOneTimePurchaseOrder: import_native_modules19.iapCreateOneTimePurchaseOrder,
2356
- processProductGrant: import_native_modules19.processProductGrant,
2357
- getPendingOrders: import_native_modules19.IAP.getPendingOrders,
2358
- getCompletedOrRefundedOrders: import_native_modules19.IAP.getCompletedOrRefundedOrders,
2359
- completeProductGrant: import_native_modules19.IAP.completeProductGrant
2676
+ iapGetProductItemList: import_native_modules22.IAP.getProductItemList,
2677
+ iapCreateOneTimePurchaseOrder: import_native_modules22.iapCreateOneTimePurchaseOrder,
2678
+ processProductGrant: import_native_modules22.processProductGrant,
2679
+ getPendingOrders: import_native_modules22.IAP.getPendingOrders,
2680
+ getCompletedOrRefundedOrders: import_native_modules22.IAP.getCompletedOrRefundedOrders,
2681
+ completeProductGrant: import_native_modules22.IAP.completeProductGrant,
2682
+ /** Toss Ads */
2683
+ tossAdEventLog
2360
2684
  }
2361
2685
  });
2362
- const headerPropForExternalWebView = (0, import_react29.useMemo)(() => {
2686
+ const headerPropForExternalWebView = (0, import_react28.useMemo)(() => {
2363
2687
  const parsedNavigationBar = global2.navigationBar != null ? safeParseNavigationBar(global2.navigationBar) : null;
2364
2688
  const initialAccessoryButton = parsedNavigationBar?.initialAccessoryButton;
2365
2689
  const withBackButton = parsedNavigationBar?.withBackButton ?? true;
@@ -2380,13 +2704,13 @@ function WebView({ type, local, onMessage, ...props }) {
2380
2704
  colorPreference: "light"
2381
2705
  });
2382
2706
  const refs = mergeRefs(handler.ref, webViewRef);
2383
- (0, import_react29.useEffect)(() => {
2707
+ (0, import_react28.useEffect)(() => {
2384
2708
  const callback = () => {
2385
2709
  webBackHandler.handleWebBack();
2386
2710
  return true;
2387
2711
  };
2388
- import_react_native35.BackHandler.addEventListener("hardwareBackPress", callback);
2389
- return () => import_react_native35.BackHandler.removeEventListener("hardwareBackPress", callback);
2712
+ import_react_native38.BackHandler.addEventListener("hardwareBackPress", callback);
2713
+ return () => import_react_native38.BackHandler.removeEventListener("hardwareBackPress", callback);
2390
2714
  }, [webBackHandler]);
2391
2715
  const globalScripts = useGlobalScripts();
2392
2716
  return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
@@ -2411,14 +2735,14 @@ function WebView({ type, local, onMessage, ...props }) {
2411
2735
  props.onNavigationStateChange?.(event);
2412
2736
  webBackHandler.onNavigationStateChange(event);
2413
2737
  },
2414
- userAgent: import_react_native35.Platform.OS === "ios" ? userAgent : void 0,
2738
+ userAgent: import_react_native38.Platform.OS === "ios" ? userAgent : void 0,
2415
2739
  sharedCookiesEnabled: true,
2416
2740
  webviewDebuggingEnabled: webViewDebuggingEnabled,
2417
2741
  thirdPartyCookiesEnabled: true,
2418
2742
  onMessage: handler.onMessage,
2419
2743
  injectedJavaScript: globalScripts.afterLoad,
2420
2744
  injectedJavaScriptBeforeContentLoaded: mergeScripts(handler.injectedJavaScript, globalScripts.beforeLoad),
2421
- decelerationRate: import_react_native35.Platform.OS === "ios" ? 1 : void 0,
2745
+ decelerationRate: import_react_native38.Platform.OS === "ios" ? 1 : void 0,
2422
2746
  allowsBackForwardNavigationGestures,
2423
2747
  onShouldStartLoadWithRequest: (event) => {
2424
2748
  try {
@@ -2426,7 +2750,7 @@ function WebView({ type, local, onMessage, ...props }) {
2426
2750
  if (["https:", "http:"].includes(url.protocol)) {
2427
2751
  return true;
2428
2752
  } else {
2429
- import_react_native35.Linking.openURL(convertIntentURL(url) ?? url.href);
2753
+ import_react_native38.Linking.openURL(convertIntentURL(url) ?? url.href);
2430
2754
  return false;
2431
2755
  }
2432
2756
  } catch (error) {
@@ -2434,7 +2758,15 @@ function WebView({ type, local, onMessage, ...props }) {
2434
2758
  return false;
2435
2759
  }
2436
2760
  },
2437
- originWhitelist: ["https://*", "http://*", "intoss://*", "intoss-private://*", "servicetoss://*", "supertoss://*", "intent://*"]
2761
+ originWhitelist: [
2762
+ "https://*",
2763
+ "http://*",
2764
+ "intoss://*",
2765
+ "intoss-private://*",
2766
+ "servicetoss://*",
2767
+ "supertoss://*",
2768
+ "intent://*"
2769
+ ]
2438
2770
  }
2439
2771
  );
2440
2772
  }
@@ -2519,6 +2851,8 @@ var Analytics2 = {
2519
2851
  OverlayProvider,
2520
2852
  WebView,
2521
2853
  env,
2854
+ loadFullScreenAd,
2855
+ showFullScreenAd,
2522
2856
  useCreateUserAgent,
2523
2857
  useGeolocation,
2524
2858
  useOverlay,