@apps-in-toss/framework 2.7.0 → 2.8.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
@@ -35,7 +35,7 @@ __export(src_exports, {
35
35
  AppsInToss: () => AppsInToss,
36
36
  INTERNAL__onVisibilityChangedByTransparentServiceWeb: () => INTERNAL__onVisibilityChangedByTransparentServiceWeb,
37
37
  InlineAd: () => InlineAd,
38
- OverlayProvider: () => import_private10.OverlayProvider,
38
+ OverlayProvider: () => import_private5.OverlayProvider,
39
39
  StartUpdateLocationPermissionError: () => import_types.StartUpdateLocationPermissionError,
40
40
  WebView: () => WebView,
41
41
  env: () => env,
@@ -45,7 +45,7 @@ __export(src_exports, {
45
45
  showFullScreenAd: () => showFullScreenAd,
46
46
  useCreateUserAgent: () => useCreateUserAgent,
47
47
  useGeolocation: () => useGeolocation,
48
- useOverlay: () => import_private10.useOverlay,
48
+ useOverlay: () => import_private5.useOverlay,
49
49
  useTopNavigation: () => useTopNavigation,
50
50
  useWaitForReturnNavigator: () => useWaitForReturnNavigator
51
51
  });
@@ -55,9 +55,9 @@ var import_analytics2 = require("@apps-in-toss/analytics");
55
55
  // src/core/registerApp.tsx
56
56
  var import_analytics = require("@apps-in-toss/analytics");
57
57
  var import_native_modules10 = require("@apps-in-toss/native-modules");
58
- var import_react_native21 = require("@granite-js/react-native");
59
- var import_tds_react_native9 = require("@toss/tds-react-native");
60
- var import_react_native22 = require("react-native");
58
+ var import_react_native27 = require("@granite-js/react-native");
59
+ var import_tds_react_native11 = require("@toss/tds-react-native");
60
+ var import_react_native28 = require("react-native");
61
61
 
62
62
  // src/core/components/AppEvent.tsx
63
63
  var import_react_native2 = require("@granite-js/react-native");
@@ -185,8 +185,8 @@ function useNavigationBarContext() {
185
185
 
186
186
  // src/components/RNAppContainer.tsx
187
187
  var import_native_modules9 = require("@apps-in-toss/native-modules");
188
- var import_react15 = require("react");
189
- var import_react_native20 = require("react-native");
188
+ var import_react16 = require("react");
189
+ var import_react_native26 = require("react-native");
190
190
 
191
191
  // src/components/GameInitializer.tsx
192
192
  var import_native_modules4 = require("@apps-in-toss/native-modules");
@@ -641,9 +641,6 @@ var overlayStyle = {
641
641
  zIndex: Z_INDEX.PROFILE_OVERLAY
642
642
  };
643
643
 
644
- // src/components/NavigationBar/RNNavigationBar/Default.tsx
645
- var import_private5 = require("@toss/tds-react-native/private");
646
-
647
644
  // src/components/NavigationBar/RNNavigationBar/hooks/useHardwareBackPress.ts
648
645
  var import_react11 = require("react");
649
646
  var import_react_native11 = require("react-native");
@@ -778,7 +775,7 @@ function useNavigationEvent() {
778
775
  if (homeEvent.hasSubscriptions()) {
779
776
  homeEvent.emit({});
780
777
  } else {
781
- navigation.navigate("/");
778
+ navigation.navigate("/", {}, { pop: true });
782
779
  }
783
780
  },
784
781
  handleCloseButtonClick: () => {
@@ -1148,100 +1145,325 @@ function BottomSheetImpressionArea({ children }) {
1148
1145
  return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_jsx_runtime9.Fragment, { children });
1149
1146
  }
1150
1147
 
1151
- // src/core/utils/toIcon.ts
1152
- function toIcon(source) {
1153
- return source.startsWith("http") ? { source: { uri: source } } : { name: source };
1148
+ // src/components/NavigationBar/TopNavigation/TopNavigation.tsx
1149
+ var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
1150
+ var import_react_native19 = require("@granite-js/react-native");
1151
+ var import_tds_react_native8 = require("@toss/tds-react-native");
1152
+ var import_react14 = require("react");
1153
+ var import_react_native20 = require("react-native");
1154
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1155
+ function TopNavigation({ left, center, right }) {
1156
+ const insets = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
1157
+ const navigation = (0, import_react_native19.useNavigation)();
1158
+ (0, import_react14.useEffect)(() => {
1159
+ const { navigationBar } = getAppsInTossGlobals();
1160
+ const parsedNavigationBar = navigationBar ? safeParseNavigationBar(navigationBar) : null;
1161
+ const transparent = parsedNavigationBar?.transparentBackground ?? false;
1162
+ const theme = parsedNavigationBar?.theme ?? "light";
1163
+ navigation.setOptions({
1164
+ headerTransparent: transparent,
1165
+ header: () => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1166
+ import_react_native20.View,
1167
+ {
1168
+ style: {
1169
+ width: "100%",
1170
+ backgroundColor: transparent ? void 0 : theme === "light" ? import_tds_react_native8.colors.lightThemeBackground : import_tds_react_native8.colors.darkThemeBackground
1171
+ },
1172
+ pointerEvents: "box-none",
1173
+ children: [
1174
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_native20.View, { style: { width: "100%", height: insets.top } }),
1175
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
1176
+ import_react_native20.View,
1177
+ {
1178
+ style: {
1179
+ width: "100%",
1180
+ height: 44,
1181
+ display: "flex",
1182
+ flexDirection: "row",
1183
+ alignItems: "center",
1184
+ paddingLeft: insets.left,
1185
+ paddingRight: insets.right
1186
+ },
1187
+ children: [
1188
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_react_native20.View, { children: left }),
1189
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1190
+ import_react_native20.View,
1191
+ {
1192
+ style: {
1193
+ flex: 1,
1194
+ display: "flex",
1195
+ flexDirection: "row",
1196
+ alignItems: "center"
1197
+ },
1198
+ children: center
1199
+ }
1200
+ ),
1201
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1202
+ import_react_native20.View,
1203
+ {
1204
+ style: {
1205
+ flexDirection: "row",
1206
+ alignItems: "center"
1207
+ },
1208
+ children: right
1209
+ }
1210
+ )
1211
+ ]
1212
+ }
1213
+ )
1214
+ ]
1215
+ }
1216
+ )
1217
+ });
1218
+ }, [navigation, insets, left, center, right]);
1219
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, {});
1220
+ }
1221
+
1222
+ // src/components/NavigationBar/TopNavigation/BackButton.tsx
1223
+ var import_react_native_svg = require("@granite-js/native/react-native-svg");
1224
+ var import_react_native21 = require("react-native");
1225
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1226
+ function BackButton({ theme = "light", onPress, ...restProps }) {
1227
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1228
+ import_react_native21.TouchableOpacity,
1229
+ {
1230
+ hitSlop: { top: 10, right: 10, bottom: 10, left: 10 },
1231
+ style: {
1232
+ width: 24,
1233
+ height: 24,
1234
+ marginRight: 14
1235
+ },
1236
+ onPress,
1237
+ accessibilityRole: "button",
1238
+ accessibilityLabel: "\uB4A4\uB85C\uAC00\uAE30",
1239
+ ...restProps,
1240
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_react_native21.View, { style: { width: 24, height: 24 }, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1241
+ import_react_native_svg.SvgXml,
1242
+ {
1243
+ width: 24,
1244
+ height: 24,
1245
+ xml: BACK_BUTTON_XML.replace(/__COLOR__/g, theme === "light" ? "#191F28" : "#FFFFFF")
1246
+ }
1247
+ ) })
1248
+ }
1249
+ );
1250
+ }
1251
+ var BACK_BUTTON_XML = `<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" viewBox="0 0 24 24"><path d="m20.8 20.7c-.3 0-.6-.1-.8-.4l-7.5-7.5c-.5-.5-.5-1.2 0-1.7l7.5-7.5c.5-.5 1.2-.5 1.7 0s.5 1.2 0 1.7l-6.8 6.7 6.7 6.7c.5.5.5 1.2 0 1.7-.2.2-.5.3-.8.3z" fill="__COLOR__"/></svg>`;
1252
+
1253
+ // src/components/NavigationBar/TopNavigation/HomeButton.tsx
1254
+ var import_tds_react_native9 = require("@toss/tds-react-native");
1255
+ var import_react_native22 = require("react-native");
1256
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1257
+ function HomeButton({ theme = "light", onPress, children }) {
1258
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
1259
+ import_react_native22.TouchableOpacity,
1260
+ {
1261
+ onPress,
1262
+ style: {
1263
+ flexDirection: "row",
1264
+ alignItems: "center",
1265
+ gap: 6,
1266
+ height: 34,
1267
+ paddingLeft: 10,
1268
+ paddingRight: 10,
1269
+ backgroundColor: theme === "light" ? import_tds_react_native9.colors.greyOpacity50 : "rgba(0, 0, 1, 0.58)",
1270
+ borderRadius: 99
1271
+ },
1272
+ children: [
1273
+ children,
1274
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_tds_react_native9.Icon, { name: "icon-home-mono", size: 18 })
1275
+ ]
1276
+ }
1277
+ );
1278
+ }
1279
+
1280
+ // src/components/NavigationBar/TopNavigation/AppTitle.tsx
1281
+ var import_react_native23 = require("@granite-js/react-native");
1282
+ var import_react_native24 = require("react-native");
1283
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1284
+ function AppTitle({ title, iconUrl, theme = "light" }) {
1285
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
1286
+ import_react_native24.View,
1287
+ {
1288
+ style: {
1289
+ flexDirection: "row",
1290
+ alignItems: "center",
1291
+ gap: 6
1292
+ },
1293
+ children: [
1294
+ iconUrl != null && iconUrl !== "" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1295
+ import_react_native23.Image,
1296
+ {
1297
+ source: { uri: iconUrl },
1298
+ style: {
1299
+ width: 18,
1300
+ height: 18,
1301
+ borderRadius: 6,
1302
+ overflow: "hidden"
1303
+ }
1304
+ }
1305
+ ),
1306
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1307
+ import_react_native24.Text,
1308
+ {
1309
+ numberOfLines: 1,
1310
+ ellipsizeMode: "tail",
1311
+ style: {
1312
+ color: theme === "light" ? "#191F28" : "#FFFFFF",
1313
+ fontSize: 16,
1314
+ fontWeight: "600"
1315
+ },
1316
+ children: title
1317
+ }
1318
+ )
1319
+ ]
1320
+ }
1321
+ );
1322
+ }
1323
+
1324
+ // src/components/NavigationBar/TopNavigation/Menu.tsx
1325
+ var import_tds_react_native10 = require("@toss/tds-react-native");
1326
+ var import_react_native25 = require("react-native");
1327
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1328
+ function Menu2({ theme = "light", accessoryButton, onPressDots, onLongPressDots, onPressClose }) {
1329
+ const backgroundColor = theme === "light" ? import_tds_react_native10.colors.greyOpacity50 : "rgba(0, 0, 1, 0.58)";
1330
+ const iconColor = theme === "light" ? import_tds_react_native10.colors.greyOpacity600 : "rgba(253, 253, 255, 0.75)";
1331
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_react_native25.View, { style: { flexDirection: "row", alignItems: "center", gap: 4 }, children: [
1332
+ accessoryButton && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1333
+ import_react_native25.View,
1334
+ {
1335
+ style: {
1336
+ borderRadius: 99,
1337
+ overflow: "hidden"
1338
+ },
1339
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1340
+ import_react_native25.TouchableOpacity,
1341
+ {
1342
+ style: {
1343
+ paddingVertical: 7,
1344
+ paddingHorizontal: 12,
1345
+ backgroundColor
1346
+ },
1347
+ onPress: () => {
1348
+ import_tds_react_native10.tdsEvent.emit("navigationAccessoryEvent", { id: accessoryButton.id });
1349
+ accessoryButton.onPress?.();
1350
+ },
1351
+ disabled: accessoryButton.disabled,
1352
+ children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1353
+ import_tds_react_native10.Icon,
1354
+ {
1355
+ name: accessoryButton.icon.name ?? "",
1356
+ accessibilityLabel: accessoryButton.title,
1357
+ color: iconColor,
1358
+ size: 20
1359
+ }
1360
+ )
1361
+ }
1362
+ )
1363
+ }
1364
+ ),
1365
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native25.View, { style: { borderRadius: 99, overflow: "hidden", marginRight: 12 }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1366
+ import_react_native25.View,
1367
+ {
1368
+ style: {
1369
+ flexDirection: "row",
1370
+ justifyContent: "center",
1371
+ alignItems: "center",
1372
+ gap: 12,
1373
+ height: 34,
1374
+ paddingHorizontal: 12,
1375
+ backgroundColor
1376
+ },
1377
+ children: [
1378
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native25.TouchableOpacity, { onPress: onPressDots, onLongPress: onLongPressDots, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native10.Icon, { name: "icon-dots-mono", accessibilityLabel: "\uB354\uBCF4\uAE30", color: iconColor, size: 20 }) }),
1379
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1380
+ import_react_native25.View,
1381
+ {
1382
+ style: {
1383
+ width: 1,
1384
+ height: 16,
1385
+ backgroundColor: theme === "light" ? import_tds_react_native10.colors.greyOpacity200 : "rgba(222, 222, 255, 0.19)"
1386
+ }
1387
+ }
1388
+ ),
1389
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react_native25.TouchableOpacity, { onPress: onPressClose, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native10.Icon, { name: "icon-appsintoss-close-mono", accessibilityLabel: "\uB2EB\uAE30", color: iconColor, size: 20 }) })
1390
+ ]
1391
+ }
1392
+ ) })
1393
+ ] });
1154
1394
  }
1155
1395
 
1156
1396
  // src/components/NavigationBar/common/NavigationBarImpressionArea.tsx
1157
- var import_react14 = require("react");
1158
- var import_jsx_runtime10 = require("react/jsx-runtime");
1397
+ var import_react15 = require("react");
1398
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1159
1399
  function NavigationBarImpressionArea({
1160
1400
  children,
1161
1401
  withHomeButton
1162
1402
  }) {
1163
- const hasLogged = (0, import_react14.useRef)(false);
1403
+ const hasLogged = (0, import_react15.useRef)(false);
1164
1404
  const logging = useNavigationBarLogging();
1165
- (0, import_react14.useEffect)(() => {
1405
+ (0, import_react15.useEffect)(() => {
1166
1406
  if (hasLogged.current === false) {
1167
1407
  logging.navBarImpression({ home_icon_yn: withHomeButton ? "Y" : "N" });
1168
1408
  hasLogged.current = true;
1169
1409
  }
1170
1410
  }, [logging, withHomeButton]);
1171
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children });
1411
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, { children });
1172
1412
  }
1173
1413
 
1174
1414
  // src/components/NavigationBar/RNNavigationBar/Default.tsx
1175
- var import_jsx_runtime11 = require("react/jsx-runtime");
1415
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1176
1416
  function DefaultNavigationBar() {
1177
1417
  const globals = getAppsInTossGlobals();
1178
1418
  const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
1179
1419
  const parsedNavigationBar = globals.navigationBar != null ? safeParseNavigationBar(globals.navigationBar) : null;
1180
1420
  const withHomeButton = parsedNavigationBar?.withHomeButton ?? false;
1181
1421
  const withBackButton = parsedNavigationBar?.withBackButton ?? true;
1422
+ const theme = parsedNavigationBar?.theme ?? "light";
1182
1423
  const { navigationRightButton } = useNavigationBarContext();
1183
1424
  const navigationEvent = useNavigationEvent();
1184
1425
  useHardwareBackPress(navigationEvent.handleBack);
1185
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1186
- import_private5.TopNavigation,
1426
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1427
+ TopNavigation,
1187
1428
  {
1188
- title: globals.brandDisplayName,
1189
- icon: toIcon(globals.brandIcon),
1190
- onPressDots: openMoreButtonBottomSheet,
1191
- contentVisible: true,
1192
- onPressTitle: withHomeButton ? navigationEvent.handleHomeButtonClick : void 0,
1193
- onPressClose: navigationEvent.handleCloseButtonClick,
1194
- withHome: withHomeButton,
1195
- fixedRightButton: navigationRightButton,
1196
- leftVisible: withBackButton,
1197
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_private5.NavigationLeft, { visible: withBackButton, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_private5.NavigationBackButton, { onPress: navigationEvent.handleBack, canGoBack: false }) })
1429
+ left: withBackButton ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(BackButton, { theme, onPress: navigationEvent.handleBack }) : null,
1430
+ center: withHomeButton ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(HomeButton, { theme, onPress: navigationEvent.handleHomeButtonClick, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(AppTitle, { theme, title: globals.brandDisplayName, iconUrl: globals.brandIcon }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(AppTitle, { theme, title: globals.brandDisplayName, iconUrl: globals.brandIcon }),
1431
+ right: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1432
+ Menu2,
1433
+ {
1434
+ theme,
1435
+ accessoryButton: navigationRightButton,
1436
+ onPressDots: openMoreButtonBottomSheet,
1437
+ onPressClose: navigationEvent.handleCloseButtonClick
1438
+ }
1439
+ )
1198
1440
  }
1199
1441
  ) });
1200
1442
  }
1201
1443
 
1202
1444
  // src/components/NavigationBar/RNNavigationBar/Game.tsx
1203
- var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
1204
- var import_tds_react_native8 = require("@toss/tds-react-native");
1205
- var import_private6 = require("@toss/tds-react-native/private");
1206
- var import_react_native19 = require("react-native");
1207
- var import_jsx_runtime12 = require("react/jsx-runtime");
1445
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1208
1446
  function GameNavigationBar() {
1209
- const safeAreaTop = (0, import_private6.useSafeAreaTop)();
1210
1447
  const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
1211
1448
  const navigationEvent = useNavigationEvent();
1212
1449
  const { navigationRightButton } = useNavigationBarContext();
1213
- const { right: safeAreaRight } = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
1450
+ const { navigationBar } = getAppsInTossGlobals();
1451
+ const parsedNavigationBar = navigationBar ? safeParseNavigationBar(navigationBar) : null;
1214
1452
  useHardwareBackPress(navigationEvent.handleBack);
1215
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
1216
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_tds_react_native8.PageNavbar, { preference: { type: "none" } }),
1217
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1218
- import_react_native19.View,
1219
- {
1220
- style: {
1221
- width: "100%",
1222
- // TODO: UI관련 스타일 설정은 TDS로 이관
1223
- height: import_react_native19.Platform.OS === "ios" ? 44 : 54,
1224
- flexDirection: "row",
1225
- alignItems: "center",
1226
- justifyContent: "flex-end",
1227
- position: "absolute",
1228
- zIndex: Z_INDEX.CLOSE_BUTTON,
1229
- marginTop: safeAreaTop,
1230
- paddingRight: safeAreaRight + 10
1231
- },
1232
- pointerEvents: "box-none",
1233
- children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1234
- import_private6.NavigationRightContent,
1235
- {
1236
- fixedRightButton: navigationRightButton,
1237
- onPressDots: openMoreButtonBottomSheet,
1238
- onPressClose: navigationEvent.handleCloseButtonClick,
1239
- theme: "dark"
1240
- }
1241
- )
1242
- }
1243
- )
1244
- ] });
1453
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1454
+ TopNavigation,
1455
+ {
1456
+ right: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1457
+ Menu2,
1458
+ {
1459
+ theme: parsedNavigationBar?.theme ?? "dark",
1460
+ accessoryButton: navigationRightButton,
1461
+ onPressDots: openMoreButtonBottomSheet,
1462
+ onPressClose: navigationEvent.handleCloseButtonClick
1463
+ }
1464
+ )
1465
+ }
1466
+ );
1245
1467
  }
1246
1468
 
1247
1469
  // src/components/NavigationBar/RNNavigationBar/index.tsx
@@ -1257,20 +1479,20 @@ __reExport(bridge_entry_exports, require("@apps-in-toss/native-modules/constant-
1257
1479
  __reExport(bridge_entry_exports, require("@apps-in-toss/native-modules/event-bridges"));
1258
1480
 
1259
1481
  // src/components/RNAppContainer.tsx
1260
- var import_jsx_runtime13 = require("react/jsx-runtime");
1482
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1261
1483
  function RNAppContainer({ children }) {
1262
1484
  const global2 = getAppsInTossGlobals();
1263
1485
  switch (global2.appType) {
1264
1486
  case "game":
1265
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(GameAppContainer, { children });
1487
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(GameAppContainer, { children });
1266
1488
  case "general":
1267
1489
  default:
1268
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(GeneralAppContainer, { children });
1490
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(GeneralAppContainer, { children });
1269
1491
  }
1270
1492
  }
1271
1493
  function GameAppContainer({ children }) {
1272
- (0, import_react15.useEffect)(() => {
1273
- if (import_react_native20.Platform.OS === "ios") {
1494
+ (0, import_react16.useEffect)(() => {
1495
+ if (import_react_native26.Platform.OS === "ios") {
1274
1496
  (0, import_native_modules9.setIosSwipeGestureEnabled)({ isEnabled: false });
1275
1497
  return () => {
1276
1498
  (0, import_native_modules9.setIosSwipeGestureEnabled)({ isEnabled: true });
@@ -1278,44 +1500,44 @@ function GameAppContainer({ children }) {
1278
1500
  }
1279
1501
  return;
1280
1502
  }, []);
1281
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
1282
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RNNavigationBar.Game, {}),
1283
- (0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(GameInitializer, { children }) : children
1503
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1504
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RNNavigationBar.Game, {}),
1505
+ (0, bridge_entry_exports.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(GameInitializer, { children }) : children
1284
1506
  ] });
1285
1507
  }
1286
1508
  function GeneralAppContainer({ children }) {
1287
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
1288
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(RNNavigationBar.Default, {}),
1509
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1510
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RNNavigationBar.Default, {}),
1289
1511
  children
1290
1512
  ] });
1291
1513
  }
1292
1514
 
1293
1515
  // src/core/registerApp.tsx
1294
- var import_jsx_runtime14 = require("react/jsx-runtime");
1516
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1295
1517
  function AppsInTossContainer(Container, { children, ...initialProps }) {
1296
1518
  if (!(0, import_native_modules10.isMinVersionSupported)({
1297
1519
  android: "5.220.0",
1298
1520
  ios: "5.221.0"
1299
1521
  })) {
1300
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
1301
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AppEvent.System, { ...initialProps }),
1302
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AppUpdate, {})
1522
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1523
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AppEvent.System, { ...initialProps }),
1524
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AppUpdate, {})
1303
1525
  ] });
1304
1526
  }
1305
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
1306
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AppEvent.System, { ...initialProps }),
1307
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_tds_react_native9.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children }) })
1527
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
1528
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AppEvent.System, { ...initialProps }),
1529
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_tds_react_native11.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children }) })
1308
1530
  ] });
1309
1531
  }
1310
1532
  function registerApp(container, { context, analytics }) {
1311
1533
  const appName = getAppName();
1312
- const isRegistered = import_react_native22.AppRegistry.getAppKeys().includes(appName);
1534
+ const isRegistered = import_react_native28.AppRegistry.getAppKeys().includes(appName);
1313
1535
  if (!isRegistered) {
1314
1536
  import_analytics.Analytics.init({
1315
1537
  logger: (params) => void (0, import_native_modules10.eventLog)(params),
1316
1538
  debug: analytics?.debug ?? __DEV__
1317
1539
  });
1318
- const App = import_react_native21.Granite.registerApp(AppsInTossContainer.bind(null, container), {
1540
+ const App = import_react_native27.Granite.registerApp(AppsInTossContainer.bind(null, container), {
1319
1541
  appName,
1320
1542
  context,
1321
1543
  initialScheme: (0, import_native_modules10.getSchemeUri)(),
@@ -1323,7 +1545,8 @@ function registerApp(container, { context, analytics }) {
1323
1545
  router: {
1324
1546
  screenContainer: AppsInTossScreenContainer,
1325
1547
  defaultScreenOption: {
1326
- statusBarStyle: "dark"
1548
+ statusBarStyle: "dark",
1549
+ header: () => null
1327
1550
  }
1328
1551
  }
1329
1552
  });
@@ -1333,7 +1556,7 @@ function registerApp(container, { context, analytics }) {
1333
1556
  }
1334
1557
  function AppsInTossScreenContainer({ children }) {
1335
1558
  const isRNApp = getAppsInTossGlobals().webViewType == null;
1336
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(NavigationBarContextProvider, { children: isRNApp ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1559
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(NavigationBarContextProvider, { children: isRNApp ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
1337
1560
  import_analytics.Analytics.Screen,
1338
1561
  {
1339
1562
  onLog: (params) => sendLog(
@@ -1343,13 +1566,13 @@ function AppsInTossScreenContainer({ children }) {
1343
1566
  params: {
1344
1567
  ...params.params,
1345
1568
  schema_id: 5175906,
1346
- app_name: import_react_native21.Granite.appName,
1569
+ app_name: import_react_native27.Granite.appName,
1347
1570
  log_name: params.log_name
1348
1571
  }
1349
1572
  },
1350
1573
  { pipelines: ["core"] }
1351
1574
  ),
1352
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RNAppContainer, { children })
1575
+ children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(RNAppContainer, { children })
1353
1576
  }
1354
1577
  ) : children });
1355
1578
  }
@@ -1373,77 +1596,55 @@ var appsInTossAsyncBridges = __toESM(require("@apps-in-toss/native-modules/async
1373
1596
  var appsInTossConstantBridges = __toESM(require("@apps-in-toss/native-modules/constant-bridges"), 1);
1374
1597
  var appsInTossEventBridges = __toESM(require("@apps-in-toss/native-modules/event-bridges"), 1);
1375
1598
  var import_user_scripts = require("@apps-in-toss/user-scripts");
1376
- var import_react_native_safe_area_context4 = require("@granite-js/native/react-native-safe-area-context");
1377
- var import_react_native36 = require("@granite-js/react-native");
1378
- var import_tds_react_native12 = require("@toss/tds-react-native");
1379
- var import_private9 = require("@toss/tds-react-native/private");
1380
- var import_react26 = require("react");
1381
- var import_react_native37 = require("react-native");
1599
+ var import_react_native_safe_area_context3 = require("@granite-js/native/react-native-safe-area-context");
1600
+ var import_react_native41 = require("@granite-js/react-native");
1601
+ var import_tds_react_native14 = require("@toss/tds-react-native");
1602
+ var import_react27 = require("react");
1603
+ var import_react_native42 = require("react-native");
1382
1604
 
1383
1605
  // src/components/GameWebView.tsx
1384
1606
  var import_native_modules11 = require("@apps-in-toss/native-modules");
1385
1607
  var import_react_native_webview = require("@granite-js/native/react-native-webview");
1386
- var import_react17 = require("react");
1387
- var import_react_native25 = require("react-native");
1608
+ var import_react18 = require("react");
1609
+ var import_react_native30 = require("react-native");
1388
1610
 
1389
1611
  // src/components/NavigationBar/GameWebviewNavigationBar.tsx
1390
- var import_react_native_safe_area_context2 = require("@granite-js/native/react-native-safe-area-context");
1391
- var import_react_native23 = require("@granite-js/react-native");
1392
- var import_tds_react_native10 = require("@toss/tds-react-native");
1393
- var import_private7 = require("@toss/tds-react-native/private");
1394
- var import_react16 = require("react");
1395
- var import_react_native24 = require("react-native");
1396
- var import_jsx_runtime15 = require("react/jsx-runtime");
1612
+ var import_react_native29 = require("@granite-js/react-native");
1613
+ var import_tds_react_native12 = require("@toss/tds-react-native");
1614
+ var import_react17 = require("react");
1615
+ var import_jsx_runtime20 = require("react/jsx-runtime");
1397
1616
  function GameWebviewNavigationBar() {
1398
- const safeAreaTop = (0, import_private7.useSafeAreaTop)();
1399
- const { openConfirm } = (0, import_tds_react_native10.useDialog)();
1617
+ const { openConfirm } = (0, import_tds_react_native12.useDialog)();
1400
1618
  const logging = useNavigationBarLogging();
1401
1619
  const { open: openMoreButtonBottomSheet } = useMoreButtonBottomSheet();
1402
1620
  const { navigationRightButton } = useNavigationBarContext();
1403
- const { right: safeAreaRight } = (0, import_react_native_safe_area_context2.useSafeAreaInsets)();
1404
- const handleGameWebviewClose = (0, import_react16.useCallback)(async () => {
1621
+ const { navigationBar } = getAppsInTossGlobals();
1622
+ const parsedNavigationBar = navigationBar ? safeParseNavigationBar(navigationBar) : null;
1623
+ const handleGameWebviewClose = (0, import_react17.useCallback)(async () => {
1405
1624
  logging.closeButtonClick();
1406
- (0, import_react_native23.closeView)();
1625
+ (0, import_react_native29.closeView)();
1407
1626
  }, [logging, openConfirm]);
1408
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1409
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_tds_react_native10.PageNavbar, { preference: { type: "none" } }),
1410
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1411
- import_react_native24.View,
1412
- {
1413
- style: {
1414
- width: "100%",
1415
- // TODO: UI관련 스타일 설정은 TDS로 이관
1416
- height: import_react_native24.Platform.OS === "ios" ? 44 : 54,
1417
- flexDirection: "row",
1418
- alignItems: "center",
1419
- justifyContent: "flex-end",
1420
- position: "absolute",
1421
- zIndex: Z_INDEX.CLOSE_BUTTON,
1422
- marginTop: safeAreaTop,
1423
- paddingRight: safeAreaRight + 10
1424
- },
1425
- pointerEvents: "box-none",
1426
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1427
- import_private7.NavigationRightContent,
1428
- {
1429
- fixedRightButton: navigationRightButton,
1430
- onPressDots: openMoreButtonBottomSheet,
1431
- onPressClose: () => {
1432
- handleGameWebviewClose();
1433
- },
1434
- theme: "dark"
1435
- }
1436
- )
1437
- }
1438
- )
1439
- ] });
1627
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1628
+ TopNavigation,
1629
+ {
1630
+ right: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
1631
+ Menu2,
1632
+ {
1633
+ theme: parsedNavigationBar?.theme ?? "dark",
1634
+ accessoryButton: navigationRightButton,
1635
+ onPressDots: openMoreButtonBottomSheet,
1636
+ onPressClose: handleGameWebviewClose
1637
+ }
1638
+ )
1639
+ }
1640
+ );
1440
1641
  }
1441
1642
 
1442
1643
  // src/components/GameWebView.tsx
1443
- var import_jsx_runtime16 = require("react/jsx-runtime");
1444
- var GameWebView = (0, import_react17.forwardRef)(function GameWebView2(props, ref) {
1445
- (0, import_react17.useEffect)(() => {
1446
- if (import_react_native25.Platform.OS === "ios") {
1644
+ var import_jsx_runtime21 = require("react/jsx-runtime");
1645
+ var GameWebView = (0, import_react18.forwardRef)(function GameWebView2(props, ref) {
1646
+ (0, import_react18.useEffect)(() => {
1647
+ if (import_react_native30.Platform.OS === "ios") {
1447
1648
  (0, import_native_modules11.setIosSwipeGestureEnabled)({ isEnabled: false });
1448
1649
  return () => {
1449
1650
  (0, import_native_modules11.setIosSwipeGestureEnabled)({ isEnabled: true });
@@ -1451,21 +1652,20 @@ var GameWebView = (0, import_react17.forwardRef)(function GameWebView2(props, re
1451
1652
  }
1452
1653
  return;
1453
1654
  }, []);
1454
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
1455
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(GameWebviewNavigationBar, {}),
1456
- (0, import_native_modules11.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(GameInitializer, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_react_native_webview.WebView, { ref, ...props })
1655
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
1656
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(GameWebviewNavigationBar, {}),
1657
+ (0, import_native_modules11.getOperationalEnvironment)() === "toss" ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(GameInitializer, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native_webview.WebView, { ref, ...props }) }) : /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native_webview.WebView, { ref, ...props })
1457
1658
  ] });
1458
1659
  });
1459
1660
 
1460
1661
  // src/components/PartnerWebView.tsx
1461
1662
  var import_react_native_webview2 = require("@granite-js/native/react-native-webview");
1462
- var import_react19 = require("react");
1663
+ var import_react20 = require("react");
1463
1664
 
1464
1665
  // src/components/NavigationBar/PartnerWebviewNavigationBar.tsx
1465
- var import_react_native26 = require("@granite-js/react-native");
1466
- var import_private8 = require("@toss/tds-react-native/private");
1467
- var import_react18 = require("react");
1468
- var import_jsx_runtime17 = require("react/jsx-runtime");
1666
+ var import_react_native31 = require("@granite-js/react-native");
1667
+ var import_react19 = require("react");
1668
+ var import_jsx_runtime22 = require("react/jsx-runtime");
1469
1669
  function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
1470
1670
  const globals = getAppsInTossGlobals();
1471
1671
  const logging = useNavigationBarLogging();
@@ -1473,34 +1673,36 @@ function PartnerWebviewNavigationBar({ onBackButtonClick, onHomeButtonClick }) {
1473
1673
  const parsedNavigationBar = globals.navigationBar != null ? safeParseNavigationBar(globals.navigationBar) : null;
1474
1674
  const withHomeButton = parsedNavigationBar?.withHomeButton ?? false;
1475
1675
  const withBackButton = parsedNavigationBar?.withBackButton ?? true;
1676
+ const theme = parsedNavigationBar?.theme ?? "light";
1476
1677
  const { navigationRightButton } = useNavigationBarContext();
1477
- const handleClose = (0, import_react18.useCallback)(async () => {
1678
+ const handleClose = (0, import_react19.useCallback)(async () => {
1478
1679
  logging.closeButtonClick();
1479
- (0, import_react_native26.closeView)();
1680
+ (0, import_react_native31.closeView)();
1480
1681
  }, [logging]);
1481
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1482
- import_private8.TopNavigation,
1682
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(NavigationBarImpressionArea, { withHomeButton, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1683
+ TopNavigation,
1483
1684
  {
1484
- title: globals.brandDisplayName,
1485
- icon: toIcon(globals.brandIcon),
1486
- onPressDots: openMoreButtonBottomSheet,
1487
- contentVisible: true,
1488
- onPressTitle: withHomeButton ? onHomeButtonClick : void 0,
1489
- onPressClose: handleClose,
1490
- withHome: withHomeButton,
1491
- fixedRightButton: navigationRightButton,
1492
- leftVisible: withBackButton,
1493
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_private8.NavigationLeft, { visible: withBackButton, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_private8.NavigationBackButton, { onPress: onBackButtonClick, canGoBack: false }) })
1685
+ left: withBackButton ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(BackButton, { theme, onPress: onBackButtonClick }) : null,
1686
+ center: withHomeButton ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(HomeButton, { theme, onPress: onHomeButtonClick, children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AppTitle, { theme, title: globals.brandDisplayName, iconUrl: globals.brandIcon }) }) : /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(AppTitle, { theme, title: globals.brandDisplayName, iconUrl: globals.brandIcon }),
1687
+ right: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
1688
+ Menu2,
1689
+ {
1690
+ theme,
1691
+ accessoryButton: navigationRightButton,
1692
+ onPressDots: openMoreButtonBottomSheet,
1693
+ onPressClose: handleClose
1694
+ }
1695
+ )
1494
1696
  }
1495
1697
  ) });
1496
1698
  }
1497
1699
 
1498
1700
  // src/components/PartnerWebView.tsx
1499
- var import_jsx_runtime18 = require("react/jsx-runtime");
1500
- var PartnerWebView = (0, import_react19.forwardRef)(function PartnerWebViewScreen({ onBackButtonClick, onHomeButtonClick, ...webViewProps }, ref) {
1501
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1502
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PartnerWebviewNavigationBar, { onBackButtonClick, onHomeButtonClick }),
1503
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react_native_webview2.WebView, { ref, ...webViewProps, style: { flex: 1 } })
1701
+ var import_jsx_runtime23 = require("react/jsx-runtime");
1702
+ var PartnerWebView = (0, import_react20.forwardRef)(function PartnerWebViewScreen({ onBackButtonClick, onHomeButtonClick, ...webViewProps }, ref) {
1703
+ return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(import_jsx_runtime23.Fragment, { children: [
1704
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(PartnerWebviewNavigationBar, { onBackButtonClick, onHomeButtonClick }),
1705
+ /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(import_react_native_webview2.WebView, { ref, ...webViewProps, style: { flex: 1 } })
1504
1706
  ] });
1505
1707
  });
1506
1708
 
@@ -1561,9 +1763,16 @@ function fetchTossAd(params) {
1561
1763
  params.onError(createInvalidAdGroupIdError());
1562
1764
  return noop;
1563
1765
  }
1766
+ const wireHeaders = options.headers;
1564
1767
  const unregisterCallbacks = import_native_modules12.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1565
1768
  "fetchTossAd",
1566
- { spaceUnitId: adGroupId, sessionId, sdkId: options.sdkId, availableStyleIds: options.availableStyleIds },
1769
+ {
1770
+ spaceUnitId: adGroupId,
1771
+ sessionId,
1772
+ sdkId: options.sdkId,
1773
+ availableStyleIds: options.availableStyleIds,
1774
+ ...wireHeaders ? { headers: wireHeaders } : {}
1775
+ },
1567
1776
  {
1568
1777
  onSuccess: (response) => {
1569
1778
  onEvent(response);
@@ -1596,10 +1805,10 @@ function generateRequestId() {
1596
1805
  }
1597
1806
 
1598
1807
  // src/ads/getReferrer.ts
1599
- var import_react_native27 = require("@granite-js/react-native");
1808
+ var import_react_native32 = require("@granite-js/react-native");
1600
1809
  function getReferrer() {
1601
1810
  try {
1602
- return new URL((0, import_react_native27.getSchemeUri)()).searchParams.get("referrer");
1811
+ return new URL((0, import_react_native32.getSchemeUri)()).searchParams.get("referrer");
1603
1812
  } catch {
1604
1813
  return null;
1605
1814
  }
@@ -1609,10 +1818,10 @@ function getReferrer() {
1609
1818
  var import_native_modules13 = require("@apps-in-toss/native-modules");
1610
1819
 
1611
1820
  // src/ads/getIsDev.ts
1612
- var import_react_native28 = require("@granite-js/react-native");
1821
+ var import_react_native33 = require("@granite-js/react-native");
1613
1822
  function getIsDev() {
1614
1823
  try {
1615
- return new URL((0, import_react_native28.getSchemeUri)()).searchParams.get("isDev") === "true";
1824
+ return new URL((0, import_react_native33.getSchemeUri)()).searchParams.get("isDev") === "true";
1616
1825
  } catch {
1617
1826
  return false;
1618
1827
  }
@@ -1680,8 +1889,11 @@ function generateLoadFullScreenAd(sdkId) {
1680
1889
  }
1681
1890
  };
1682
1891
  if (!integratedAdIsSupported()) {
1892
+ const fallbackOptions = { ...normalizedParams.options };
1893
+ delete fallbackOptions.headers;
1683
1894
  return import_native_modules14.GoogleAdMob.loadAppsInTossAdMob({
1684
1895
  ...normalizedParams,
1896
+ options: fallbackOptions,
1685
1897
  onEvent: (event) => {
1686
1898
  if (event.type === "loaded") {
1687
1899
  const requestId = generateRequestId();
@@ -1718,9 +1930,16 @@ function generateLoadFullScreenAd(sdkId) {
1718
1930
  const { onEvent, onError, options } = normalizedParams;
1719
1931
  const { adGroupId } = options;
1720
1932
  const referrer = getReferrer();
1933
+ const wireHeaders = options.headers;
1721
1934
  const unregisterCallbacks = import_native_modules14.INTERNAL__appBridgeHandler.invokeAppBridgeMethod(
1722
1935
  "loadTossAdOrAdmob",
1723
- { spaceUnitId: adGroupId, referrer, sessionId, sdkId },
1936
+ {
1937
+ spaceUnitId: adGroupId,
1938
+ referrer,
1939
+ sessionId,
1940
+ sdkId,
1941
+ ...wireHeaders ? { headers: wireHeaders } : {}
1942
+ },
1724
1943
  {
1725
1944
  onSuccess: () => {
1726
1945
  onEvent({ type: "loaded" });
@@ -1889,10 +2108,10 @@ function showFullScreenAd(params) {
1889
2108
  showFullScreenAd.isSupported = import_native_modules14.GoogleAdMob.showAppsInTossAdMob.isSupported;
1890
2109
 
1891
2110
  // src/ads/tossAdEventLog.ts
1892
- var import_react_native29 = require("@granite-js/react-native");
2111
+ var import_react_native34 = require("@granite-js/react-native");
1893
2112
  async function tossAdEventLog(params) {
1894
2113
  const referrer = getReferrer();
1895
- const appName = import_react_native29.Granite.appName;
2114
+ const appName = import_react_native34.Granite.appName;
1896
2115
  const eventLogParams = {
1897
2116
  ...params,
1898
2117
  params: {
@@ -1905,7 +2124,7 @@ async function tossAdEventLog(params) {
1905
2124
  }
1906
2125
 
1907
2126
  // src/bridge-handler/useBridgeHandler.tsx
1908
- var import_react20 = require("react");
2127
+ var import_react21 = require("react");
1909
2128
  function serializeError(error) {
1910
2129
  return JSON.stringify(error, (_, value) => {
1911
2130
  if (value instanceof Error) {
@@ -1957,8 +2176,8 @@ function useBridgeHandler({
1957
2176
  asyncHandlerMap,
1958
2177
  eventListenerMap
1959
2178
  }) {
1960
- const ref = (0, import_react20.useRef)(null);
1961
- const injectedJavaScript = (0, import_react20.useMemo)(
2179
+ const ref = (0, import_react21.useRef)(null);
2180
+ const injectedJavaScript = (0, import_react21.useMemo)(
1962
2181
  () => `window.__CONSTANT_HANDLER_MAP = ${JSON.stringify(
1963
2182
  Object.entries(constantHandlerMap).reduce(
1964
2183
  (acc, [key, value]) => {
@@ -1970,7 +2189,7 @@ function useBridgeHandler({
1970
2189
  )};`,
1971
2190
  [constantHandlerMap]
1972
2191
  );
1973
- (0, import_react20.useEffect)(() => {
2192
+ (0, import_react21.useEffect)(() => {
1974
2193
  ref.current?.injectJavaScript(injectedJavaScript);
1975
2194
  }, [injectedJavaScript]);
1976
2195
  const createHandleOnEvent = (functionName, eventId) => (response) => {
@@ -1984,7 +2203,7 @@ function useBridgeHandler({
1984
2203
  window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${serializedError});
1985
2204
  `);
1986
2205
  };
1987
- const $onMessage = (0, import_react20.useCallback)(
2206
+ const $onMessage = (0, import_react21.useCallback)(
1988
2207
  async (e) => {
1989
2208
  onMessage?.(e);
1990
2209
  const data = parseNativeEventData(e.nativeEvent.data);
@@ -2043,25 +2262,25 @@ function parseNativeEventData(data) {
2043
2262
  }
2044
2263
 
2045
2264
  // src/core/hooks/useSafeAreaInsetsEvent.tsx
2046
- var import_react_native_safe_area_context3 = require("@granite-js/native/react-native-safe-area-context");
2047
- var import_react21 = require("react");
2265
+ var import_react_native_safe_area_context2 = require("@granite-js/native/react-native-safe-area-context");
2266
+ var import_react22 = require("react");
2048
2267
  function useSafeAreaInsetsEvent() {
2049
- const insets = (0, import_react_native_safe_area_context3.useSafeAreaInsets)();
2050
- (0, import_react21.useEffect)(() => {
2268
+ const insets = (0, import_react_native_safe_area_context2.useSafeAreaInsets)();
2269
+ (0, import_react22.useEffect)(() => {
2051
2270
  safeAreaInsetsChange.emit(insets);
2052
2271
  }, [insets]);
2053
- (0, import_react21.useEffect)(() => {
2272
+ (0, import_react22.useEffect)(() => {
2054
2273
  return () => safeAreaInsetsChange.clearSubscriptions();
2055
2274
  }, []);
2056
2275
  return safeAreaInsetsChange;
2057
2276
  }
2058
2277
 
2059
2278
  // src/core/hooks/useWebBackHandler.tsx
2060
- var import_react_native30 = require("@granite-js/react-native");
2061
- var import_react23 = require("react");
2279
+ var import_react_native35 = require("@granite-js/react-native");
2280
+ var import_react24 = require("react");
2062
2281
 
2063
2282
  // src/hooks/useWebviewHistoryStack.tsx
2064
- var import_react22 = require("react");
2283
+ var import_react23 = require("react");
2065
2284
  var INITIAL_STATE = { stack: [], index: -1 };
2066
2285
  function reducer(state, action) {
2067
2286
  switch (action.type) {
@@ -2092,11 +2311,11 @@ function reducer(state, action) {
2092
2311
  }
2093
2312
  }
2094
2313
  function useWebViewHistory() {
2095
- const [state, dispatch] = (0, import_react22.useReducer)(reducer, INITIAL_STATE);
2096
- const onNavigationStateChange = (0, import_react22.useCallback)(({ url, canGoForward: canGoForward2 }) => {
2314
+ const [state, dispatch] = (0, import_react23.useReducer)(reducer, INITIAL_STATE);
2315
+ const onNavigationStateChange = (0, import_react23.useCallback)(({ url, canGoForward: canGoForward2 }) => {
2097
2316
  dispatch({ type: "NAVIGATION_CHANGE", url, canGoForward: canGoForward2 });
2098
2317
  }, []);
2099
- const { canGoBack, canGoForward } = (0, import_react22.useMemo)(() => {
2318
+ const { canGoBack, canGoForward } = (0, import_react23.useMemo)(() => {
2100
2319
  const canBack = state.index > 0;
2101
2320
  const canFwd = state.index >= 0 && state.index < state.stack.length - 1;
2102
2321
  return { canGoBack: canBack, canGoForward: canFwd };
@@ -2112,21 +2331,21 @@ function useWebBackHandler(webViewInitialURL, webViewRef) {
2112
2331
  hasBackEvent: hasWebBackEvent,
2113
2332
  addEventListener: addWebBackEventListener,
2114
2333
  removeEventListener: removeWebBackEventListener
2115
- } = (0, import_react_native30.useBackEventState)();
2334
+ } = (0, import_react_native35.useBackEventState)();
2116
2335
  const logging = useNavigationBarLogging();
2117
- const addEventListener = (0, import_react23.useCallback)(
2336
+ const addEventListener = (0, import_react24.useCallback)(
2118
2337
  (handler) => {
2119
2338
  addWebBackEventListener(handler);
2120
2339
  },
2121
2340
  [addWebBackEventListener]
2122
2341
  );
2123
- const removeEventListener = (0, import_react23.useCallback)(
2342
+ const removeEventListener = (0, import_react24.useCallback)(
2124
2343
  (handler) => {
2125
2344
  removeWebBackEventListener(handler);
2126
2345
  },
2127
2346
  [removeWebBackEventListener]
2128
2347
  );
2129
- const handleWebBack = (0, import_react23.useCallback)(async () => {
2348
+ const handleWebBack = (0, import_react24.useCallback)(async () => {
2130
2349
  if (hasWebBackEvent) {
2131
2350
  for (const handler of webBackHandlersRef) {
2132
2351
  handler();
@@ -2136,10 +2355,10 @@ function useWebBackHandler(webViewInitialURL, webViewRef) {
2136
2355
  if (hasHistory) {
2137
2356
  webViewRef.current?.injectJavaScript("window.history.back();");
2138
2357
  } else {
2139
- (0, import_react_native30.closeView)();
2358
+ (0, import_react_native35.closeView)();
2140
2359
  }
2141
2360
  }, [hasHistory, hasWebBackEvent, webBackHandlersRef, logging, webViewRef]);
2142
- const handleWebHome = (0, import_react23.useCallback)(() => {
2361
+ const handleWebHome = (0, import_react24.useCallback)(() => {
2143
2362
  logging.homeButtonClick();
2144
2363
  if (homeEvent.hasSubscriptions()) {
2145
2364
  homeEvent.emit({});
@@ -2152,7 +2371,7 @@ function useWebBackHandler(webViewInitialURL, webViewRef) {
2152
2371
  })();
2153
2372
  `);
2154
2373
  }, [hasWebBackEvent, webBackHandlersRef, logging, webViewInitialURL, webViewRef]);
2155
- return (0, import_react23.useMemo)(
2374
+ return (0, import_react24.useMemo)(
2156
2375
  () => ({ addEventListener, removeEventListener, handleWebBack, handleWebHome, onNavigationStateChange }),
2157
2376
  [addEventListener, removeEventListener, handleWebBack, handleWebHome, onNavigationStateChange]
2158
2377
  );
@@ -2173,7 +2392,7 @@ function mergeRefs(...refs) {
2173
2392
 
2174
2393
  // src/hooks/useCreateUserAgent.ts
2175
2394
  var import_native_modules15 = require("@apps-in-toss/native-modules");
2176
- var import_react_native31 = require("react-native");
2395
+ var import_react_native36 = require("react-native");
2177
2396
  var FontA11yCategory = {
2178
2397
  Large: "Large",
2179
2398
  xLarge: "xLarge",
@@ -2308,7 +2527,7 @@ function useCreateUserAgent({
2308
2527
  }) {
2309
2528
  const platform = (0, import_native_modules15.getPlatformOS)();
2310
2529
  const appVersion = (0, import_native_modules15.getTossAppVersion)();
2311
- const { fontScale } = (0, import_react_native31.useWindowDimensions)();
2530
+ const { fontScale } = (0, import_react_native36.useWindowDimensions)();
2312
2531
  const platformString = platform === "ios" ? "iPhone" : "Android phone";
2313
2532
  const fontA11y = mapFontScaleToCategory(fontScale, platform);
2314
2533
  const normalizedFontScale = convertToAndroidStyleScale(fontScale, platform);
@@ -2330,12 +2549,12 @@ function useCreateUserAgent({
2330
2549
 
2331
2550
  // src/hooks/useGeolocation.ts
2332
2551
  var import_native_modules16 = require("@apps-in-toss/native-modules");
2333
- var import_react_native32 = require("@granite-js/react-native");
2334
- var import_react24 = require("react");
2552
+ var import_react_native37 = require("@granite-js/react-native");
2553
+ var import_react25 = require("react");
2335
2554
  function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
2336
- const isVisible = (0, import_react_native32.useVisibility)();
2337
- const [location, setLocation] = (0, import_react24.useState)(null);
2338
- (0, import_react24.useEffect)(() => {
2555
+ const isVisible = (0, import_react_native37.useVisibility)();
2556
+ const [location, setLocation] = (0, import_react25.useState)(null);
2557
+ (0, import_react25.useEffect)(() => {
2339
2558
  if (!isVisible) {
2340
2559
  return;
2341
2560
  }
@@ -2353,12 +2572,12 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
2353
2572
  }
2354
2573
 
2355
2574
  // src/hooks/useWaitForReturnNavigator.tsx
2356
- var import_react_native33 = require("@granite-js/react-native");
2357
- var import_react25 = require("react");
2575
+ var import_react_native38 = require("@granite-js/react-native");
2576
+ var import_react26 = require("react");
2358
2577
  function useWaitForReturnNavigator() {
2359
- const callbacks = (0, import_react25.useRef)([]).current;
2360
- const navigation = (0, import_react_native33.useNavigation)();
2361
- const startNavigating = (0, import_react25.useCallback)(
2578
+ const callbacks = (0, import_react26.useRef)([]).current;
2579
+ const navigation = (0, import_react_native38.useNavigation)();
2580
+ const startNavigating = (0, import_react26.useCallback)(
2362
2581
  (route, params) => {
2363
2582
  return new Promise((resolve) => {
2364
2583
  callbacks.push(resolve);
@@ -2367,7 +2586,7 @@ function useWaitForReturnNavigator() {
2367
2586
  },
2368
2587
  [callbacks, navigation]
2369
2588
  );
2370
- const handleVisibilityChange = (0, import_react25.useCallback)(
2589
+ const handleVisibilityChange = (0, import_react26.useCallback)(
2371
2590
  (state) => {
2372
2591
  if (state === "visible" && callbacks.length > 0) {
2373
2592
  for (const callback of callbacks) {
@@ -2378,7 +2597,7 @@ function useWaitForReturnNavigator() {
2378
2597
  },
2379
2598
  [callbacks]
2380
2599
  );
2381
- (0, import_react_native33.useVisibilityChange)(handleVisibilityChange);
2600
+ (0, import_react_native38.useVisibilityChange)(handleVisibilityChange);
2382
2601
  return startNavigating;
2383
2602
  }
2384
2603
 
@@ -2393,10 +2612,10 @@ function useTopNavigation() {
2393
2612
 
2394
2613
  // src/hooks/useWebViewMemoryDebug.tsx
2395
2614
  var import_native_modules17 = require("@apps-in-toss/native-modules");
2396
- var import_react_native34 = require("@granite-js/react-native");
2397
- var import_tds_react_native11 = require("@toss/tds-react-native");
2615
+ var import_react_native39 = require("@granite-js/react-native");
2616
+ var import_tds_react_native13 = require("@toss/tds-react-native");
2398
2617
  function useHandleWebViewProcessDidTerminate(webViewRef) {
2399
- const toast = (0, import_tds_react_native11.useToast)();
2618
+ const toast = (0, import_tds_react_native13.useToast)();
2400
2619
  return () => {
2401
2620
  webViewDebugLog("AppsInTossWebViewProcessDidTerminate", {});
2402
2621
  toast.open("\uBB38\uC81C\uAC00 \uC0DD\uACA8\uC11C \uBBF8\uB2C8\uC571\uC744 \uB2E4\uC2DC \uC2DC\uC791\uD588\uC5B4\uC694.", {
@@ -2416,7 +2635,7 @@ function webViewDebugLog(logName, params) {
2416
2635
  log_type: "debug",
2417
2636
  params: {
2418
2637
  ...params,
2419
- app_name: import_react_native34.Granite.appName,
2638
+ app_name: import_react_native39.Granite.appName,
2420
2639
  deployment_id: global2.deploymentId
2421
2640
  }
2422
2641
  };
@@ -2428,7 +2647,7 @@ function webViewDebugLog(logName, params) {
2428
2647
  }
2429
2648
 
2430
2649
  // src/utils/log.ts
2431
- var import_react_native35 = require("@granite-js/react-native");
2650
+ var import_react_native40 = require("@granite-js/react-native");
2432
2651
 
2433
2652
  // src/utils/extractDateFromUUIDv7.ts
2434
2653
  var extractDateFromUUIDv7 = (uuid) => {
@@ -2454,7 +2673,7 @@ var getGroupId = (url) => {
2454
2673
  };
2455
2674
  var getReferrer2 = () => {
2456
2675
  try {
2457
- const referrer = new URL((0, import_react_native35.getSchemeUri)());
2676
+ const referrer = new URL((0, import_react_native40.getSchemeUri)());
2458
2677
  return referrer.searchParams.get("referrer");
2459
2678
  } catch {
2460
2679
  return "";
@@ -2468,7 +2687,7 @@ var trackScreen = (url, title) => {
2468
2687
  search,
2469
2688
  referrer: getReferrer2(),
2470
2689
  document_title: title,
2471
- app_name: import_react_native35.Granite.appName,
2690
+ app_name: import_react_native40.Granite.appName,
2472
2691
  deployment_id: env.getDeploymentId(),
2473
2692
  deployment_timestamp: extractDateFromUUIDv7(env.getDeploymentId()).getTime()
2474
2693
  };
@@ -2495,17 +2714,17 @@ var trackScreen = (url, title) => {
2495
2714
  };
2496
2715
 
2497
2716
  // src/components/WebView.tsx
2498
- var import_jsx_runtime19 = require("react/jsx-runtime");
2717
+ var import_jsx_runtime24 = require("react/jsx-runtime");
2499
2718
  var operationalEnvironment = appsInTossConstantBridges.getOperationalEnvironment();
2500
2719
  var TYPES = ["partner", "external", "game"];
2501
2720
  var WEBVIEW_TYPES = {
2502
2721
  partner: PartnerWebView,
2503
- external: import_tds_react_native12.ExternalWebViewScreen,
2722
+ external: import_tds_react_native14.ExternalWebViewScreen,
2504
2723
  game: GameWebView
2505
2724
  };
2506
2725
  function mergeSchemeQueryParamsInto(url) {
2507
2726
  const baseUrl = new URL(url);
2508
- const schemeUrl = new URL((0, import_react_native36.getSchemeUri)());
2727
+ const schemeUrl = new URL((0, import_react_native41.getSchemeUri)());
2509
2728
  const resultUrl = new URL(schemeUrl.pathname, baseUrl.origin);
2510
2729
  for (const [key, value] of baseUrl.searchParams.entries()) {
2511
2730
  resultUrl.searchParams.set(key, value);
@@ -2532,23 +2751,21 @@ function WebView({ type, local, onMessage, ...props }) {
2532
2751
  if (!TYPES.includes(type)) {
2533
2752
  throw new Error(`Invalid WebView type: '${type}'`);
2534
2753
  }
2535
- const webViewRef = (0, import_react26.useRef)(null);
2536
- const url = (0, import_react26.useMemo)(() => getWebViewURL(local), [local]);
2754
+ const webViewRef = (0, import_react27.useRef)(null);
2755
+ const url = (0, import_react27.useMemo)(() => getWebViewURL(local), [local]);
2537
2756
  const webBackHandler = useWebBackHandler(url, webViewRef);
2538
- const top = (0, import_private9.useSafeAreaTop)();
2539
- const bottom = (0, import_private9.useSafeAreaBottom)();
2540
- const insets = (0, import_react_native_safe_area_context4.useSafeAreaInsets)();
2541
2757
  const global2 = getAppsInTossGlobals();
2758
+ const insets = (0, import_react_native_safe_area_context3.useSafeAreaInsets)();
2542
2759
  const navigationBarContext = useNavigationBarContext();
2543
2760
  const safeAreaInsetsEvent = useSafeAreaInsetsEvent();
2544
- const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0, import_react26.useState)(
2761
+ const [allowsBackForwardNavigationGestures, setAllowsBackForwardNavigationGestures] = (0, import_react27.useState)(
2545
2762
  props.allowsBackForwardNavigationGestures
2546
2763
  );
2547
2764
  const handler = useBridgeHandler({
2548
2765
  onMessage,
2549
2766
  eventListenerMap: {
2550
2767
  ...appsInTossEventBridges,
2551
- navigationAccessoryEvent: ({ onEvent, onError }) => import_tds_react_native12.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
2768
+ navigationAccessoryEvent: ({ onEvent, onError }) => import_tds_react_native14.tdsEvent.addEventListener("navigationAccessoryEvent", { onEvent, onError }),
2552
2769
  backEvent: ({ onEvent }) => {
2553
2770
  webBackHandler.addEventListener(onEvent);
2554
2771
  return () => {
@@ -2576,12 +2793,7 @@ function WebView({ type, local, onMessage, ...props }) {
2576
2793
  },
2577
2794
  constantHandlerMap: {
2578
2795
  ...appsInTossConstantBridges,
2579
- getSafeAreaInsets: () => ({
2580
- top,
2581
- bottom,
2582
- left: insets.left,
2583
- right: insets.right
2584
- }),
2796
+ getSafeAreaInsets: () => insets,
2585
2797
  ...Object.fromEntries(Object.entries(global2).map(([key, value]) => [key, () => value])),
2586
2798
  getServerTime_isSupported: import_native_modules18.getServerTime.isSupported,
2587
2799
  requestReview_isSupported: import_native_modules18.requestReview.isSupported,
@@ -2642,7 +2854,7 @@ function WebView({ type, local, onMessage, ...props }) {
2642
2854
  }
2643
2855
  }
2644
2856
  });
2645
- const headerPropForExternalWebView = (0, import_react26.useMemo)(() => {
2857
+ const headerPropForExternalWebView = (0, import_react27.useMemo)(() => {
2646
2858
  const parsedNavigationBar = global2.navigationBar != null ? safeParseNavigationBar(global2.navigationBar) : null;
2647
2859
  const initialAccessoryButton = parsedNavigationBar?.initialAccessoryButton;
2648
2860
  const withBackButton = parsedNavigationBar?.withBackButton ?? true;
@@ -2663,16 +2875,16 @@ function WebView({ type, local, onMessage, ...props }) {
2663
2875
  colorPreference: "light"
2664
2876
  });
2665
2877
  const refs = mergeRefs(handler.ref, webViewRef);
2666
- (0, import_react26.useEffect)(() => {
2878
+ (0, import_react27.useEffect)(() => {
2667
2879
  const callback = () => {
2668
2880
  webBackHandler.handleWebBack();
2669
2881
  return true;
2670
2882
  };
2671
- const subscription = import_react_native37.BackHandler.addEventListener("hardwareBackPress", callback);
2883
+ const subscription = import_react_native42.BackHandler.addEventListener("hardwareBackPress", callback);
2672
2884
  return () => subscription.remove();
2673
2885
  }, [webBackHandler]);
2674
2886
  const handleWebViewProcessDidTerminate = useHandleWebViewProcessDidTerminate(webViewRef);
2675
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
2887
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
2676
2888
  BaseWebView,
2677
2889
  {
2678
2890
  ref: refs,
@@ -2695,14 +2907,14 @@ function WebView({ type, local, onMessage, ...props }) {
2695
2907
  webBackHandler.onNavigationStateChange(event);
2696
2908
  },
2697
2909
  textZoom: 100,
2698
- userAgent: import_react_native37.Platform.OS === "ios" ? userAgent : void 0,
2910
+ userAgent: import_react_native42.Platform.OS === "ios" ? userAgent : void 0,
2699
2911
  sharedCookiesEnabled: true,
2700
2912
  webviewDebuggingEnabled: webViewDebuggingEnabled,
2701
2913
  thirdPartyCookiesEnabled: true,
2702
2914
  onMessage: handler.onMessage,
2703
2915
  injectedJavaScript: import_user_scripts.afterDocumentLoad,
2704
2916
  injectedJavaScriptBeforeContentLoaded: [handler.injectedJavaScript, import_user_scripts.beforeDocumentLoad].join("\n"),
2705
- decelerationRate: import_react_native37.Platform.OS === "ios" ? 1 : void 0,
2917
+ decelerationRate: import_react_native42.Platform.OS === "ios" ? 1 : void 0,
2706
2918
  allowsBackForwardNavigationGestures,
2707
2919
  onShouldStartLoadWithRequest: (event) => {
2708
2920
  try {
@@ -2710,7 +2922,7 @@ function WebView({ type, local, onMessage, ...props }) {
2710
2922
  if (["https:", "http:"].includes(url2.protocol) || url2.href === "about:blank") {
2711
2923
  return true;
2712
2924
  } else {
2713
- import_react_native37.Linking.openURL(convertIntentURL(url2) ?? url2.href);
2925
+ import_react_native42.Linking.openURL(convertIntentURL(url2) ?? url2.href);
2714
2926
  return false;
2715
2927
  }
2716
2928
  } catch (error) {
@@ -2735,15 +2947,15 @@ function WebView({ type, local, onMessage, ...props }) {
2735
2947
 
2736
2948
  // src/index.ts
2737
2949
  __reExport(src_exports, require("@apps-in-toss/analytics"), module.exports);
2738
- var import_private10 = require("@toss/tds-react-native/private");
2950
+ var import_private5 = require("@toss/tds-react-native/private");
2739
2951
  __reExport(src_exports, require("@apps-in-toss/native-modules"), module.exports);
2740
2952
  __reExport(src_exports, require("@apps-in-toss/types"), module.exports);
2741
2953
  var import_types = require("@apps-in-toss/types");
2742
2954
 
2743
2955
  // src/ads/inlineAd/InlineAd.tsx
2744
- var import_react_native41 = require("@granite-js/react-native");
2745
- var import_react29 = require("react");
2746
- var import_react_native42 = require("react-native");
2956
+ var import_react_native46 = require("@granite-js/react-native");
2957
+ var import_react30 = require("react");
2958
+ var import_react_native47 = require("react-native");
2747
2959
 
2748
2960
  // src/ads/inlineAd/constants.ts
2749
2961
  var SDK_ID = "106";
@@ -3005,7 +3217,7 @@ async function loadAd(adGroupId) {
3005
3217
  }
3006
3218
 
3007
3219
  // src/ads/inlineAd/opener.ts
3008
- var import_react_native38 = require("@granite-js/react-native");
3220
+ var import_react_native43 = require("@granite-js/react-native");
3009
3221
  function isSafeUrl(url) {
3010
3222
  try {
3011
3223
  const parsed = new URL(url);
@@ -3037,7 +3249,7 @@ function openLandingUrl(url) {
3037
3249
  return;
3038
3250
  }
3039
3251
  try {
3040
- (0, import_react_native38.openURL)(getWebSchemeOrUri(url));
3252
+ (0, import_react_native43.openURL)(getWebSchemeOrUri(url));
3041
3253
  } catch (error) {
3042
3254
  console.error("[InlineAd] Failed to open landing URL:", error);
3043
3255
  }
@@ -3123,10 +3335,10 @@ var EventTracker = class {
3123
3335
  };
3124
3336
 
3125
3337
  // src/ads/inlineAd/ui/FeedBannerAdView.tsx
3126
- var import_react_native_svg = require("@granite-js/native/react-native-svg");
3127
- var import_react27 = require("react");
3128
- var import_react_native39 = require("react-native");
3129
- var import_jsx_runtime20 = require("react/jsx-runtime");
3338
+ var import_react_native_svg2 = require("@granite-js/native/react-native-svg");
3339
+ var import_react28 = require("react");
3340
+ var import_react_native44 = require("react-native");
3341
+ var import_jsx_runtime25 = require("react/jsx-runtime");
3130
3342
  var ARROW_PATH = "m7.5 20.4c-.5-.5-.5-1.2 0-1.7l6.7-6.7-6.8-6.7c-.5-.5-.5-1.2 0-1.7s1.2-.5 1.7 0l7.5 7.5c.5.5.5 1.2 0 1.7l-7.5 7.5c-.2.3-.5.4-.8.4s-.6-.1-.8-.3z";
3131
3343
  function FeedBannerAdView({
3132
3344
  brandName,
@@ -3138,17 +3350,17 @@ function FeedBannerAdView({
3138
3350
  ctaTextColor,
3139
3351
  ctaBackgroundColor,
3140
3352
  adClearanceText,
3141
- colors,
3353
+ colors: colors4,
3142
3354
  isAdBadgeEnabled,
3143
3355
  paddingStyle,
3144
3356
  onPress
3145
3357
  }) {
3146
- const scale = (0, import_react27.useRef)(new import_react_native39.Animated.Value(1)).current;
3358
+ const scale = (0, import_react28.useRef)(new import_react_native44.Animated.Value(1)).current;
3147
3359
  const animateScale = (toValue) => {
3148
- import_react_native39.Animated.timing(scale, {
3360
+ import_react_native44.Animated.timing(scale, {
3149
3361
  toValue,
3150
3362
  duration: 100,
3151
- easing: import_react_native39.Easing.inOut(import_react_native39.Easing.ease),
3363
+ easing: import_react_native44.Easing.inOut(import_react_native44.Easing.ease),
3152
3364
  useNativeDriver: true
3153
3365
  }).start();
3154
3366
  };
@@ -3160,90 +3372,90 @@ function FeedBannerAdView({
3160
3372
  };
3161
3373
  const resolvedCtaBackground = ctaBackgroundColor ?? "#3081F9";
3162
3374
  const resolvedCtaTextColor = ctaTextColor ?? "#ffffff";
3163
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3164
- import_react_native39.Pressable,
3375
+ return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3376
+ import_react_native44.Pressable,
3165
3377
  {
3166
3378
  accessibilityRole: "button",
3167
3379
  onPress: () => onPress(null),
3168
3380
  onPressIn: handlePressIn,
3169
3381
  onPressOut: handlePressOut,
3170
3382
  style: styles.pressable,
3171
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.Animated.View, { style: [styles.container, paddingStyle, { transform: [{ scale }] }], children: [
3172
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.View, { style: styles.profileContainer, children: [
3173
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.View, { style: styles.brandArea, children: [
3174
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3175
- import_react_native39.Pressable,
3383
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.Animated.View, { style: [styles.container, paddingStyle, { transform: [{ scale }] }], children: [
3384
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.View, { style: styles.profileContainer, children: [
3385
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.View, { style: styles.brandArea, children: [
3386
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3387
+ import_react_native44.Pressable,
3176
3388
  {
3177
3389
  accessibilityRole: "button",
3178
3390
  onPress: () => onPress("202"),
3179
3391
  onPressIn: handlePressIn,
3180
3392
  onPressOut: handlePressOut,
3181
3393
  style: styles.logoContainer,
3182
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.View, { style: [styles.logoWrapper, { backgroundColor: colors.brandLogoBg }], children: [
3183
- brandLogoUri ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Image, { source: { uri: brandLogoUri }, style: styles.logoImage, resizeMode: "cover" }) : null,
3184
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.View, { style: [styles.logoOverlay, { borderColor: colors.brandLogoBorder }] })
3394
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.View, { style: [styles.logoWrapper, { backgroundColor: colors4.brandLogoBg }], children: [
3395
+ brandLogoUri ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Image, { source: { uri: brandLogoUri }, style: styles.logoImage, resizeMode: "cover" }) : null,
3396
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.View, { style: [styles.logoOverlay, { borderColor: colors4.brandLogoBorder }] })
3185
3397
  ] })
3186
3398
  }
3187
3399
  ),
3188
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.View, { style: styles.brandTextContainer, children: [
3189
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3190
- import_react_native39.Pressable,
3400
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.View, { style: styles.brandTextContainer, children: [
3401
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3402
+ import_react_native44.Pressable,
3191
3403
  {
3192
3404
  accessibilityRole: "button",
3193
3405
  onPress: () => onPress("103"),
3194
3406
  onPressIn: handlePressIn,
3195
3407
  onPressOut: handlePressOut,
3196
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3197
- import_react_native39.Text,
3408
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3409
+ import_react_native44.Text,
3198
3410
  {
3199
3411
  allowFontScaling: false,
3200
3412
  numberOfLines: 1,
3201
- style: [styles.brandName, { color: colors.brandName }],
3413
+ style: [styles.brandName, { color: colors4.brandName }],
3202
3414
  children: brandName
3203
3415
  }
3204
3416
  )
3205
3417
  }
3206
3418
  ),
3207
- isAdBadgeEnabled ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Text, { allowFontScaling: false, numberOfLines: 1, style: [styles.adBadge, { color: colors.adBadge }], children: "\uAD11\uACE0" }) : null
3419
+ isAdBadgeEnabled ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Text, { allowFontScaling: false, numberOfLines: 1, style: [styles.adBadge, { color: colors4.adBadge }], children: "\uAD11\uACE0" }) : null
3208
3420
  ] })
3209
3421
  ] }),
3210
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.View, { style: styles.textArea, children: [
3211
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3212
- import_react_native39.Pressable,
3422
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.View, { style: styles.textArea, children: [
3423
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3424
+ import_react_native44.Pressable,
3213
3425
  {
3214
3426
  accessibilityRole: "button",
3215
3427
  onPress: () => onPress("101"),
3216
3428
  onPressIn: handlePressIn,
3217
3429
  onPressOut: handlePressOut,
3218
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Text, { allowFontScaling: false, style: [styles.title, { color: colors.title }], children: title })
3430
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Text, { allowFontScaling: false, style: [styles.title, { color: colors4.title }], children: title })
3219
3431
  }
3220
3432
  ),
3221
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3222
- import_react_native39.Pressable,
3433
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3434
+ import_react_native44.Pressable,
3223
3435
  {
3224
3436
  accessibilityRole: "button",
3225
3437
  onPress: () => onPress("102"),
3226
3438
  onPressIn: handlePressIn,
3227
3439
  onPressOut: handlePressOut,
3228
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Text, { allowFontScaling: false, style: [styles.subtitle, { color: colors.subtitle }], children: subtitle })
3440
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Text, { allowFontScaling: false, style: [styles.subtitle, { color: colors4.subtitle }], children: subtitle })
3229
3441
  }
3230
3442
  )
3231
3443
  ] })
3232
3444
  ] }),
3233
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_react_native39.View, { style: styles.card, children: [
3234
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
3235
- import_react_native39.Pressable,
3445
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(import_react_native44.View, { style: styles.card, children: [
3446
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(
3447
+ import_react_native44.Pressable,
3236
3448
  {
3237
3449
  accessibilityRole: "button",
3238
3450
  onPress: () => onPress("201"),
3239
3451
  onPressIn: handlePressIn,
3240
3452
  onPressOut: handlePressOut,
3241
3453
  style: styles.imageButton,
3242
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.View, { style: styles.imageContainer, children: mainImageUri ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Image, { source: { uri: mainImageUri }, style: styles.mainImage, resizeMode: "cover" }) : null })
3454
+ children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.View, { style: styles.imageContainer, children: mainImageUri ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Image, { source: { uri: mainImageUri }, style: styles.mainImage, resizeMode: "cover" }) : null })
3243
3455
  }
3244
3456
  ),
3245
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
3246
- import_react_native39.Pressable,
3457
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(
3458
+ import_react_native44.Pressable,
3247
3459
  {
3248
3460
  accessibilityRole: "button",
3249
3461
  onPress: () => onPress("0"),
@@ -3251,19 +3463,19 @@ function FeedBannerAdView({
3251
3463
  onPressOut: handlePressOut,
3252
3464
  style: [styles.cta, { backgroundColor: resolvedCtaBackground }],
3253
3465
  children: [
3254
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Text, { allowFontScaling: false, style: [styles.ctaText, { color: resolvedCtaTextColor }], children: ctaText }),
3255
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native_svg.Svg, { width: 20, height: 20, viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native_svg.Path, { d: ARROW_PATH, fill: resolvedCtaTextColor }) })
3466
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Text, { allowFontScaling: false, style: [styles.ctaText, { color: resolvedCtaTextColor }], children: ctaText }),
3467
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native_svg2.Svg, { width: 20, height: 20, viewBox: "0 0 24 24", children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native_svg2.Path, { d: ARROW_PATH, fill: resolvedCtaTextColor }) })
3256
3468
  ]
3257
3469
  }
3258
3470
  ),
3259
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.View, { style: [styles.cardOverlay, { borderColor: colors.imageOverlayBorder }] })
3471
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.View, { style: [styles.cardOverlay, { borderColor: colors4.imageOverlayBorder }] })
3260
3472
  ] }),
3261
- adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_react_native39.Text, { allowFontScaling: false, style: [styles.adClearance, { color: colors.adClearance }], children: adClearanceText }) : null
3473
+ adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_react_native44.Text, { allowFontScaling: false, style: [styles.adClearance, { color: colors4.adClearance }], children: adClearanceText }) : null
3262
3474
  ] })
3263
3475
  }
3264
3476
  );
3265
3477
  }
3266
- var styles = import_react_native39.StyleSheet.create({
3478
+ var styles = import_react_native44.StyleSheet.create({
3267
3479
  pressable: {
3268
3480
  width: "100%"
3269
3481
  },
@@ -3302,7 +3514,7 @@ var styles = import_react_native39.StyleSheet.create({
3302
3514
  borderRadius: 18
3303
3515
  },
3304
3516
  logoOverlay: {
3305
- ...import_react_native39.StyleSheet.absoluteFillObject,
3517
+ ...import_react_native44.StyleSheet.absoluteFillObject,
3306
3518
  borderWidth: 1,
3307
3519
  borderRadius: 18
3308
3520
  },
@@ -3365,7 +3577,7 @@ var styles = import_react_native39.StyleSheet.create({
3365
3577
  lineHeight: 22.5
3366
3578
  },
3367
3579
  cardOverlay: {
3368
- ...import_react_native39.StyleSheet.absoluteFillObject,
3580
+ ...import_react_native44.StyleSheet.absoluteFillObject,
3369
3581
  borderWidth: 2,
3370
3582
  borderRadius: 12,
3371
3583
  pointerEvents: "none"
@@ -3378,10 +3590,10 @@ var styles = import_react_native39.StyleSheet.create({
3378
3590
  });
3379
3591
 
3380
3592
  // src/ads/inlineAd/ui/ListBannerAdView.tsx
3381
- var import_react_native_svg2 = require("@granite-js/native/react-native-svg");
3382
- var import_react28 = require("react");
3383
- var import_react_native40 = require("react-native");
3384
- var import_jsx_runtime21 = require("react/jsx-runtime");
3593
+ var import_react_native_svg3 = require("@granite-js/native/react-native-svg");
3594
+ var import_react29 = require("react");
3595
+ var import_react_native45 = require("react-native");
3596
+ var import_jsx_runtime26 = require("react/jsx-runtime");
3385
3597
  var SQUIRCLE_PATH = "M0 17.352C0 3.564 3.564 0 17.352 0H18.648C32.436 0 36 3.564 36 17.352V18.648C36 32.436 32.436 36 18.648 36H17.352C3.564 36 0 32.436 0 18.648V17.352Z";
3386
3598
  function ListBannerAdView({
3387
3599
  title,
@@ -3390,16 +3602,16 @@ function ListBannerAdView({
3390
3602
  adClearanceFontSize,
3391
3603
  imageUri,
3392
3604
  paddingStyle,
3393
- colors,
3605
+ colors: colors4,
3394
3606
  onPress
3395
3607
  }) {
3396
- const scale = (0, import_react28.useRef)(new import_react_native40.Animated.Value(1)).current;
3397
- const clipIdRef = (0, import_react28.useRef)(`clip-${Math.random().toString(36).slice(2)}`);
3608
+ const scale = (0, import_react29.useRef)(new import_react_native45.Animated.Value(1)).current;
3609
+ const clipIdRef = (0, import_react29.useRef)(`clip-${Math.random().toString(36).slice(2)}`);
3398
3610
  const animateScale = (toValue) => {
3399
- import_react_native40.Animated.timing(scale, {
3611
+ import_react_native45.Animated.timing(scale, {
3400
3612
  toValue,
3401
3613
  duration: 100,
3402
- easing: import_react_native40.Easing.inOut(import_react_native40.Easing.ease),
3614
+ easing: import_react_native45.Easing.inOut(import_react_native45.Easing.ease),
3403
3615
  useNativeDriver: true
3404
3616
  }).start();
3405
3617
  };
@@ -3409,29 +3621,29 @@ function ListBannerAdView({
3409
3621
  const handlePressOut = () => {
3410
3622
  animateScale(1);
3411
3623
  };
3412
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3413
- import_react_native40.Pressable,
3624
+ return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3625
+ import_react_native45.Pressable,
3414
3626
  {
3415
3627
  accessibilityRole: "button",
3416
3628
  onPress: () => onPress(null),
3417
3629
  onPressIn: handlePressIn,
3418
3630
  onPressOut: handlePressOut,
3419
3631
  style: styles2.pressable,
3420
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native40.Animated.View, { style: [styles2.container, paddingStyle, { transform: [{ scale }] }], children: [
3421
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native40.View, { style: styles2.titleRow, children: [
3422
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3423
- import_react_native40.Pressable,
3632
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native45.Animated.View, { style: [styles2.container, paddingStyle, { transform: [{ scale }] }], children: [
3633
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native45.View, { style: styles2.titleRow, children: [
3634
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3635
+ import_react_native45.Pressable,
3424
3636
  {
3425
3637
  accessibilityRole: "button",
3426
3638
  onPress: () => onPress("202"),
3427
3639
  onPressIn: handlePressIn,
3428
3640
  onPressOut: handlePressOut,
3429
3641
  style: styles2.iconWrapper,
3430
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native_svg2.Svg, { width: 36, height: 36, viewBox: "0 0 36 36", children: [
3431
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native_svg2.Defs, { children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native_svg2.ClipPath, { id: clipIdRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native_svg2.Path, { d: SQUIRCLE_PATH }) }) }),
3432
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native_svg2.Path, { d: SQUIRCLE_PATH, fill: colors.iconBg }),
3433
- imageUri ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3434
- import_react_native_svg2.Image,
3642
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native_svg3.Svg, { width: 36, height: 36, viewBox: "0 0 36 36", children: [
3643
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native_svg3.Defs, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native_svg3.ClipPath, { id: clipIdRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native_svg3.Path, { d: SQUIRCLE_PATH }) }) }),
3644
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native_svg3.Path, { d: SQUIRCLE_PATH, fill: colors4.iconBg }),
3645
+ imageUri ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3646
+ import_react_native_svg3.Image,
3435
3647
  {
3436
3648
  href: { uri: imageUri },
3437
3649
  width: 36,
@@ -3440,12 +3652,12 @@ function ListBannerAdView({
3440
3652
  clipPath: `url(#${clipIdRef.current})`
3441
3653
  }
3442
3654
  ) : null,
3443
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3444
- import_react_native_svg2.Path,
3655
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3656
+ import_react_native_svg3.Path,
3445
3657
  {
3446
3658
  d: SQUIRCLE_PATH,
3447
3659
  fill: "none",
3448
- stroke: colors.iconBorder,
3660
+ stroke: colors4.iconBorder,
3449
3661
  strokeWidth: 2,
3450
3662
  clipPath: `url(#${clipIdRef.current})`
3451
3663
  }
@@ -3453,37 +3665,37 @@ function ListBannerAdView({
3453
3665
  ] })
3454
3666
  }
3455
3667
  ),
3456
- /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_react_native40.View, { style: styles2.textWrapper, children: [
3457
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3458
- import_react_native40.Pressable,
3668
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(import_react_native45.View, { style: styles2.textWrapper, children: [
3669
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3670
+ import_react_native45.Pressable,
3459
3671
  {
3460
3672
  accessibilityRole: "button",
3461
3673
  onPress: () => onPress("101"),
3462
3674
  onPressIn: handlePressIn,
3463
3675
  onPressOut: handlePressOut,
3464
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native40.Text, { allowFontScaling: false, style: [styles2.title, { color: colors.title }], children: title })
3676
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native45.Text, { allowFontScaling: false, style: [styles2.title, { color: colors4.title }], children: title })
3465
3677
  }
3466
3678
  ),
3467
- /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3468
- import_react_native40.Pressable,
3679
+ /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3680
+ import_react_native45.Pressable,
3469
3681
  {
3470
3682
  accessibilityRole: "button",
3471
3683
  onPress: () => onPress("102"),
3472
3684
  onPressIn: handlePressIn,
3473
3685
  onPressOut: handlePressOut,
3474
- children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(import_react_native40.Text, { allowFontScaling: false, style: [styles2.subtitle, { color: colors.subtitle }], children: subtitle })
3686
+ children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(import_react_native45.Text, { allowFontScaling: false, style: [styles2.subtitle, { color: colors4.subtitle }], children: subtitle })
3475
3687
  }
3476
3688
  )
3477
3689
  ] })
3478
3690
  ] }),
3479
- adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
3480
- import_react_native40.Text,
3691
+ adClearanceText ? /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
3692
+ import_react_native45.Text,
3481
3693
  {
3482
3694
  allowFontScaling: false,
3483
3695
  style: [
3484
3696
  styles2.adClearance,
3485
3697
  {
3486
- color: colors.adClearance,
3698
+ color: colors4.adClearance,
3487
3699
  fontSize: adClearanceFontSize,
3488
3700
  lineHeight: adClearanceFontSize * 1.2
3489
3701
  }
@@ -3495,7 +3707,7 @@ function ListBannerAdView({
3495
3707
  }
3496
3708
  );
3497
3709
  }
3498
- var styles2 = import_react_native40.StyleSheet.create({
3710
+ var styles2 = import_react_native45.StyleSheet.create({
3499
3711
  pressable: {
3500
3712
  width: "100%"
3501
3713
  },
@@ -3614,7 +3826,7 @@ function buildNoFillPayload(slotId, adGroupId) {
3614
3826
  }
3615
3827
 
3616
3828
  // src/ads/inlineAd/InlineAd.tsx
3617
- var import_jsx_runtime22 = require("react/jsx-runtime");
3829
+ var import_jsx_runtime27 = require("react/jsx-runtime");
3618
3830
  var themePalette = {
3619
3831
  light: {
3620
3832
  title: "#4e5968",
@@ -3702,21 +3914,21 @@ function InlineAd(props) {
3702
3914
  onAdFailedToRender,
3703
3915
  onNoFill
3704
3916
  } = props;
3705
- const slotIdRef = (0, import_react29.useRef)(createSlotId());
3706
- const [ad, setAd] = (0, import_react29.useState)(null);
3707
- const [isAdBadgeEnabled, setIsAdBadgeEnabled] = (0, import_react29.useState)(true);
3708
- const eventTrackerRef = (0, import_react29.useRef)(null);
3709
- const eventPayloadRef = (0, import_react29.useRef)(null);
3710
- const hasRenderedRef = (0, import_react29.useRef)(false);
3711
- const hasLoggedImp1pxRef = (0, import_react29.useRef)(false);
3712
- const hasLoggedImp100pRef = (0, import_react29.useRef)(false);
3713
- const hasNotifiedViewableRef = (0, import_react29.useRef)(false);
3714
- const viewableTimerRef = (0, import_react29.useRef)(null);
3715
- const refetchIntervalMsRef = (0, import_react29.useRef)(null);
3716
- const lastImp1pxAtRef = (0, import_react29.useRef)(null);
3717
- const loadingRef = (0, import_react29.useRef)(false);
3718
- const loadRef = (0, import_react29.useRef)(null);
3719
- const callbacksRef = (0, import_react29.useRef)({
3917
+ const slotIdRef = (0, import_react30.useRef)(createSlotId());
3918
+ const [ad, setAd] = (0, import_react30.useState)(null);
3919
+ const [isAdBadgeEnabled, setIsAdBadgeEnabled] = (0, import_react30.useState)(true);
3920
+ const eventTrackerRef = (0, import_react30.useRef)(null);
3921
+ const eventPayloadRef = (0, import_react30.useRef)(null);
3922
+ const hasRenderedRef = (0, import_react30.useRef)(false);
3923
+ const hasLoggedImp1pxRef = (0, import_react30.useRef)(false);
3924
+ const hasLoggedImp100pRef = (0, import_react30.useRef)(false);
3925
+ const hasNotifiedViewableRef = (0, import_react30.useRef)(false);
3926
+ const viewableTimerRef = (0, import_react30.useRef)(null);
3927
+ const refetchIntervalMsRef = (0, import_react30.useRef)(null);
3928
+ const lastImp1pxAtRef = (0, import_react30.useRef)(null);
3929
+ const loadingRef = (0, import_react30.useRef)(false);
3930
+ const loadRef = (0, import_react30.useRef)(null);
3931
+ const callbacksRef = (0, import_react30.useRef)({
3720
3932
  onAdRendered,
3721
3933
  onAdViewable,
3722
3934
  onAdClicked,
@@ -3724,13 +3936,13 @@ function InlineAd(props) {
3724
3936
  onAdFailedToRender,
3725
3937
  onNoFill
3726
3938
  });
3727
- const isMountedRef = (0, import_react29.useRef)(false);
3728
- const colorScheme = (0, import_react_native42.useColorScheme)();
3939
+ const isMountedRef = (0, import_react30.useRef)(false);
3940
+ const colorScheme = (0, import_react_native47.useColorScheme)();
3729
3941
  const selectedTheme = theme ?? DEFAULT_INLINE_AD_THEME;
3730
3942
  const resolvedTheme = selectedTheme === "auto" ? colorScheme === "dark" ? "dark" : "light" : selectedTheme;
3731
3943
  const resolvedTone = tone ?? DEFAULT_INLINE_AD_TONE;
3732
3944
  const resolvedVariant = variant ?? DEFAULT_INLINE_AD_VARIANT;
3733
- const colors = themePalette[resolvedTheme];
3945
+ const colors4 = themePalette[resolvedTheme];
3734
3946
  const feedColors = feedThemePalette[resolvedTheme];
3735
3947
  const backgroundColor = resolvedTone === "grey" ? resolvedTheme === "dark" ? "#101013" : "#f2f4f7" : resolvedTheme === "dark" ? "#17171c" : "#ffffff";
3736
3948
  callbacksRef.current = {
@@ -3741,7 +3953,7 @@ function InlineAd(props) {
3741
3953
  onAdFailedToRender,
3742
3954
  onNoFill
3743
3955
  };
3744
- (0, import_react29.useEffect)(() => {
3956
+ (0, import_react30.useEffect)(() => {
3745
3957
  isMountedRef.current = true;
3746
3958
  return () => {
3747
3959
  isMountedRef.current = false;
@@ -3751,7 +3963,7 @@ function InlineAd(props) {
3751
3963
  }
3752
3964
  };
3753
3965
  }, []);
3754
- (0, import_react29.useEffect)(() => {
3966
+ (0, import_react30.useEffect)(() => {
3755
3967
  const normalizedAdGroupId = normalizeAdGroupId(adGroupId);
3756
3968
  const loadAdRequest = () => {
3757
3969
  if (loadingRef.current) {
@@ -3823,7 +4035,7 @@ function InlineAd(props) {
3823
4035
  loadRef.current = null;
3824
4036
  };
3825
4037
  }, [adGroupId]);
3826
- (0, import_react_native41.useVisibilityChange)((documentVisibility) => {
4038
+ (0, import_react_native46.useVisibilityChange)((documentVisibility) => {
3827
4039
  if (documentVisibility !== "visible") {
3828
4040
  return;
3829
4041
  }
@@ -3836,7 +4048,7 @@ function InlineAd(props) {
3836
4048
  loadRef.current?.();
3837
4049
  }
3838
4050
  });
3839
- (0, import_react29.useEffect)(() => {
4051
+ (0, import_react30.useEffect)(() => {
3840
4052
  if (!ad || hasRenderedRef.current) {
3841
4053
  return;
3842
4054
  }
@@ -3921,28 +4133,28 @@ function InlineAd(props) {
3921
4133
  callbacksRef.current.onAdClicked?.(basePayload);
3922
4134
  }
3923
4135
  };
3924
- return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3925
- import_react_native41.ImpressionArea,
4136
+ return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4137
+ import_react_native46.ImpressionArea,
3926
4138
  {
3927
4139
  style: styles3.impressionArea,
3928
4140
  onImpressionStart: handleImpression1px,
3929
4141
  areaThreshold: 0,
3930
4142
  UNSAFE__impressFallbackOnMount: Boolean(impressFallbackOnMount),
3931
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3932
- import_react_native41.ImpressionArea,
4143
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4144
+ import_react_native46.ImpressionArea,
3933
4145
  {
3934
4146
  onImpressionStart: handleImpression100p,
3935
4147
  areaThreshold: 1,
3936
4148
  UNSAFE__impressFallbackOnMount: Boolean(impressFallbackOnMount),
3937
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
3938
- import_react_native41.ImpressionArea,
4149
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
4150
+ import_react_native46.ImpressionArea,
3939
4151
  {
3940
4152
  onImpressionStart: handleViewableStart,
3941
4153
  onImpressionEnd: handleViewableEnd,
3942
4154
  areaThreshold: 0.5,
3943
4155
  UNSAFE__impressFallbackOnMount: Boolean(impressFallbackOnMount),
3944
- children: /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(import_react_native42.View, { style: [styles3.wrapper, resolvedVariant === "card" && styles3.cardWrapper], children: /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(import_react_native42.View, { style: [styles3.surface, { backgroundColor }, resolvedVariant === "card" && styles3.cardSurface], children: [
3945
- isListBanner && listCreative ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
4156
+ children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(import_react_native47.View, { style: [styles3.wrapper, resolvedVariant === "card" && styles3.cardWrapper], children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(import_react_native47.View, { style: [styles3.surface, { backgroundColor }, resolvedVariant === "card" && styles3.cardSurface], children: [
4157
+ isListBanner && listCreative ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3946
4158
  ListBannerAdView,
3947
4159
  {
3948
4160
  title: listCreative.title,
@@ -3951,11 +4163,11 @@ function InlineAd(props) {
3951
4163
  adClearanceFontSize,
3952
4164
  imageUri,
3953
4165
  paddingStyle,
3954
- colors,
4166
+ colors: colors4,
3955
4167
  onPress: handleClick
3956
4168
  }
3957
4169
  ) : null,
3958
- isFeedBanner && feedCreative ? /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
4170
+ isFeedBanner && feedCreative ? /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(
3959
4171
  FeedBannerAdView,
3960
4172
  {
3961
4173
  brandName: feedCreative.brandName,
@@ -3982,7 +4194,7 @@ function InlineAd(props) {
3982
4194
  impressionKey
3983
4195
  );
3984
4196
  }
3985
- var styles3 = import_react_native42.StyleSheet.create({
4197
+ var styles3 = import_react_native47.StyleSheet.create({
3986
4198
  impressionArea: {
3987
4199
  width: "100%"
3988
4200
  },