@apps-in-toss/framework 0.0.0-dev.1747216176095 → 0.0.0-dev.1752049503789

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
@@ -34,25 +34,43 @@ __export(src_exports, {
34
34
  Accuracy: () => Accuracy2,
35
35
  Analytics: () => Analytics2,
36
36
  AppsInToss: () => AppsInToss,
37
+ AppsInTossModule: () => AppsInTossModule,
38
+ BedrockCoreModule: () => BedrockCoreModule,
39
+ BedrockModule: () => BedrockModule,
37
40
  GoogleAdMob: () => GoogleAdMob,
41
+ INTERNAL__AppsInTossModule: () => AppsInTossModuleInstance,
42
+ INTERNAL__module: () => INTERNAL__module,
38
43
  Storage: () => Storage,
39
44
  TossPay: () => TossPay,
40
45
  WebView: () => WebView,
41
46
  appLogin: () => appLogin,
42
47
  appsInTossEvent: () => appsInTossEvent,
48
+ closeView: () => closeView,
43
49
  env: () => env,
44
50
  eventLog: () => eventLog,
45
51
  fetchAlbumPhotos: () => fetchAlbumPhotos,
46
52
  fetchContacts: () => fetchContacts,
53
+ generateHapticFeedback: () => generateHapticFeedback,
47
54
  getClipboardText: () => getClipboardText,
48
55
  getCurrentLocation: () => getCurrentLocation,
49
56
  getDeviceId: () => getDeviceId,
57
+ getLocale: () => getLocale,
58
+ getNetworkStatus: () => getNetworkStatus,
50
59
  getOperationalEnvironment: () => getOperationalEnvironment,
60
+ getPlatformOS: () => getPlatformOS,
61
+ getSchemeUri: () => getSchemeUri,
51
62
  getTossAppVersion: () => getTossAppVersion,
52
63
  getTossShareLink: () => getTossShareLink,
53
64
  isMinVersionSupported: () => isMinVersionSupported,
54
65
  openCamera: () => openCamera,
66
+ openURL: () => openURL,
67
+ saveBase64Data: () => saveBase64Data,
55
68
  setClipboardText: () => setClipboardText,
69
+ setDeviceOrientation: () => setDeviceOrientation,
70
+ setIosSwipeGestureEnabled: () => setIosSwipeGestureEnabled,
71
+ setScreenAwakeMode: () => setScreenAwakeMode,
72
+ setSecureScreen: () => setSecureScreen,
73
+ share: () => share,
56
74
  startUpdateLocation: () => startUpdateLocation,
57
75
  useGeolocation: () => useGeolocation
58
76
  });
@@ -61,210 +79,30 @@ var import_analytics2 = require("@apps-in-toss/analytics");
61
79
 
62
80
  // src/core/registerApp.tsx
63
81
  var import_analytics = require("@apps-in-toss/analytics");
64
- var import_react_native6 = require("@toss-design-system/react-native");
65
- var import_react_native_bedrock7 = require("react-native-bedrock");
82
+ var import_react_native28 = require("@granite-js/react-native");
83
+ var import_react_native29 = require("@toss-design-system/react-native");
66
84
 
67
- // src/core/components/AppEvent.tsx
68
- var import_react2 = require("react");
69
- var import_react_native_bedrock2 = require("react-native-bedrock");
70
-
71
- // src/env.ts
72
- var env = {
73
- getDeploymentId: () => __DEV__ ? "local" : global.__appsInToss?.deploymentId
74
- };
75
-
76
- // src/native-modules/tossCore.ts
77
- var import_react_native3 = require("react-native");
78
-
79
- // src/native-modules/AppsInTossModule.ts
80
- var import_react_native = require("react-native");
81
- var AppsInTossModuleInstance = import_react_native.NativeModules.AppsInTossModule;
82
- var AppsInTossModule = AppsInTossModuleInstance;
83
-
84
- // src/native-modules/getOperationalEnvironment.ts
85
- function getOperationalEnvironment() {
86
- return AppsInTossModule.operationalEnvironment;
87
- }
88
-
89
- // src/native-modules/isMinVersionSupported.ts
90
- var import_react_native2 = require("react-native");
91
-
92
- // src/utils/compareVersion.ts
93
- var SEMVER_REGEX = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\\-]+(?:\.[\da-z\\-]+)*))?(?:\+[\da-z\\-]+(?:\.[\da-z\\-]+)*)?)?)?$/i;
94
- var isWildcard = (val) => ["*", "x", "X"].includes(val);
95
- var tryParse = (val) => {
96
- const num = parseInt(val, 10);
97
- return isNaN(num) ? val : num;
98
- };
99
- var coerceTypes = (a, b) => {
100
- return typeof a === typeof b ? [a, b] : [String(a), String(b)];
101
- };
102
- var compareValues = (a, b) => {
103
- if (isWildcard(a) || isWildcard(b)) {
104
- return 0;
105
- }
106
- const [aVal, bVal] = coerceTypes(tryParse(a), tryParse(b));
107
- if (aVal > bVal) {
108
- return 1;
109
- }
110
- if (aVal < bVal) {
111
- return -1;
112
- }
113
- return 0;
114
- };
115
- var parseVersion = (version) => {
116
- if (typeof version !== "string") {
117
- throw new TypeError("Invalid argument: expected a string");
118
- }
119
- const match = version.match(SEMVER_REGEX);
120
- if (!match) {
121
- throw new Error(`Invalid semver: '${version}'`);
122
- }
123
- const [, major, minor, patch, build, preRelease] = match;
124
- return [major, minor, patch, build, preRelease];
125
- };
126
- var compareSegments = (a, b) => {
127
- const maxLength = Math.max(a.length, b.length);
128
- for (let i = 0; i < maxLength; i++) {
129
- const segA = a[i] ?? "0";
130
- const segB = b[i] ?? "0";
131
- const result = compareValues(segA, segB);
132
- if (result !== 0) {
133
- return result;
134
- }
135
- }
136
- return 0;
137
- };
138
- var compareVersions = (v1, v2) => {
139
- const seg1 = parseVersion(v1);
140
- const seg2 = parseVersion(v2);
141
- const preRelease1 = seg1.pop();
142
- const preRelease2 = seg2.pop();
143
- const mainCompare = compareSegments(seg1, seg2);
144
- if (mainCompare !== 0) {
145
- return mainCompare;
146
- }
147
- if (preRelease1 && preRelease2) {
148
- return compareSegments(preRelease1.split("."), preRelease2.split("."));
149
- }
150
- if (preRelease1) {
151
- return -1;
152
- }
153
- if (preRelease2) {
154
- return 1;
155
- }
156
- return 0;
157
- };
158
-
159
- // src/native-modules/isMinVersionSupported.ts
160
- function isMinVersionSupported(minVersions) {
161
- const operationalEnvironment2 = AppsInTossModule.operationalEnvironment;
162
- if (operationalEnvironment2 === "sandbox") {
163
- return true;
164
- }
165
- const currentVersion = AppsInTossModule.tossAppVersion;
166
- const isIOS = import_react_native2.Platform.OS === "ios";
167
- const minVersion = isIOS ? minVersions.ios : minVersions.android;
168
- if (minVersion === void 0) {
169
- return false;
170
- }
171
- if (minVersion === "always") {
172
- return true;
173
- }
174
- if (minVersion === "never") {
175
- return false;
176
- }
177
- return compareVersions(currentVersion, minVersion) >= 0;
178
- }
179
-
180
- // src/native-modules/tossCore.ts
181
- var TossCoreModule = import_react_native3.NativeModules.TossCoreModule;
182
- function tossCoreEventLog(params) {
183
- const supported = isMinVersionSupported({ ios: "5.210.0", android: "5.210.0" });
184
- const isSandbox = getOperationalEnvironment() === "sandbox";
185
- if (!supported || isSandbox) {
186
- return;
187
- }
188
- TossCoreModule.eventLog({
189
- params: {
190
- log_name: params.log_name,
191
- log_type: params.log_type,
192
- params: params.params
193
- }
194
- });
195
- }
196
-
197
- // src/core/hooks/useReferrer.ts
198
- var import_react = require("react");
199
- var import_react_native_bedrock = require("react-native-bedrock");
200
- function useReferrer() {
201
- return (0, import_react.useMemo)(() => {
202
- try {
203
- return new URL((0, import_react_native_bedrock.getSchemeUri)()).searchParams.get("referrer");
204
- } catch {
205
- return null;
206
- }
207
- }, []);
208
- }
85
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/dist/index.js
86
+ var import_react_native = require("@granite-js/react-native");
87
+ var import_react_native2 = require("@granite-js/react-native");
88
+ var import_react_native3 = require("@granite-js/react-native");
89
+ var import_react_native4 = require("react-native");
90
+ var import_react_native5 = require("react-native");
91
+ var import_react_native6 = require("@granite-js/react-native");
209
92
 
210
- // src/core/components/AppEvent.tsx
211
- var ENTRY_APP_EVENT_SCHEMA_ID = 1562181;
212
- function isPrivateScheme() {
213
- try {
214
- return new URL((0, import_react_native_bedrock2.getSchemeUri)()).protocol === "intoss-private:";
215
- } catch {
216
- return false;
217
- }
218
- }
219
- function EntryAppEvent() {
220
- const referrer = useReferrer() ?? "";
221
- (0, import_react2.useEffect)(() => {
222
- tossCoreEventLog({
223
- log_name: "appsintoss_app_visit::impression__enter_appsintoss",
224
- log_type: "info",
225
- params: {
226
- is_transform: true,
227
- schema_id: ENTRY_APP_EVENT_SCHEMA_ID,
228
- referrer,
229
- deployment_id: env.getDeploymentId(),
230
- app_name: import_react_native_bedrock2.Bedrock.appName,
231
- is_private: isPrivateScheme()
232
- }
233
- });
234
- }, [referrer]);
235
- return null;
236
- }
237
- function SystemAppEvent({ ...initialProps }) {
238
- (0, import_react2.useEffect)(() => {
239
- tossCoreEventLog({
240
- log_name: "AppsInTossInitialProps",
241
- log_type: "debug",
242
- params: {
243
- ...initialProps,
244
- schemeUri: (0, import_react_native_bedrock2.getSchemeUri)(),
245
- deployment_id: env.getDeploymentId(),
246
- app_name: import_react_native_bedrock2.Bedrock.appName,
247
- is_private: isPrivateScheme()
248
- }
249
- });
250
- }, [initialProps]);
251
- return null;
93
+ // ../../.yarn/cache/es-toolkit-npm-1.39.3-b94f623c91-1c85e518b1.zip/node_modules/es-toolkit/dist/function/noop.mjs
94
+ function noop() {
252
95
  }
253
- var AppEvent = {
254
- Entry: EntryAppEvent,
255
- System: SystemAppEvent
256
- };
257
-
258
- // src/core/hooks/useAppsInTossBridge.ts
259
- var import_react_native5 = require("@toss-design-system/react-native");
260
- var import_react3 = require("react");
261
96
 
262
- // src/native-event-emitter/appsInTossEvent.ts
263
- var import_react_native_bedrock6 = require("react-native-bedrock");
264
-
265
- // src/native-event-emitter/event-plugins/EntryMessageExitedEvent.ts
266
- var import_react_native_bedrock3 = require("react-native-bedrock");
267
- var EntryMessageExitedEvent = class extends import_react_native_bedrock3.BedrockEventDefinition {
97
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/dist/index.js
98
+ var import_react_native7 = require("react-native");
99
+ var import_react_native8 = require("react-native");
100
+ var import_react_native9 = require("react-native");
101
+ var import_react_native10 = require("react-native");
102
+ var import_react_native11 = require("react-native");
103
+ var import_react_native12 = require("react-native");
104
+ var import_react_native13 = require("react-native");
105
+ var EntryMessageExitedEvent = class extends import_react_native2.GraniteEventDefinition {
268
106
  name = "entryMessageExited";
269
107
  remove() {
270
108
  }
@@ -272,21 +110,15 @@ var EntryMessageExitedEvent = class extends import_react_native_bedrock3.Bedrock
272
110
  listener(_) {
273
111
  }
274
112
  };
275
-
276
- // src/native-event-emitter/event-plugins/UpdateLocationEvent.ts
277
- var import_react_native_bedrock4 = require("react-native-bedrock");
278
-
279
- // src/native-modules/getPermission.ts
113
+ var Module = import_react_native4.TurboModuleRegistry.getEnforcing("AppsInTossModule");
114
+ var AppsInTossModuleInstance = Module;
115
+ var AppsInTossModule = Module;
280
116
  function getPermission(permission) {
281
117
  return AppsInTossModule.getPermission(permission);
282
118
  }
283
-
284
- // src/native-modules/openPermissionDialog.ts
285
119
  function openPermissionDialog(permission) {
286
120
  return AppsInTossModule.openPermissionDialog(permission);
287
121
  }
288
-
289
- // src/native-modules/requestPermission.ts
290
122
  async function requestPermission(permission) {
291
123
  const permissionStatus = await getPermission(permission);
292
124
  switch (permissionStatus) {
@@ -297,13 +129,8 @@ async function requestPermission(permission) {
297
129
  return openPermissionDialog(permission);
298
130
  }
299
131
  }
300
-
301
- // src/native-event-emitter/nativeEventEmitter.ts
302
- var import_react_native4 = require("react-native");
303
- var nativeEventEmitter = new import_react_native4.NativeEventEmitter(AppsInTossModuleInstance);
304
-
305
- // src/native-event-emitter/event-plugins/UpdateLocationEvent.ts
306
- var UpdateLocationEvent = class extends import_react_native_bedrock4.BedrockEventDefinition {
132
+ var nativeEventEmitter = new import_react_native5.NativeEventEmitter(AppsInTossModuleInstance);
133
+ var UpdateLocationEvent = class extends import_react_native3.GraniteEventDefinition {
307
134
  name = "updateLocationEvent";
308
135
  subscriptionCount = 0;
309
136
  ref = {
@@ -331,16 +158,9 @@ var UpdateLocationEvent = class extends import_react_native_bedrock4.BedrockEven
331
158
  }).catch(onError);
332
159
  }
333
160
  };
334
-
335
- // src/native-event-emitter/internal/AppBridgeCallbackEvent.ts
336
- var import_react_native_bedrock5 = require("react-native-bedrock");
337
-
338
- // src/utils/generateUUID.ts
339
161
  function generateUUID(placeholder) {
340
162
  return placeholder ? (placeholder ^ Math.random() * 16 >> placeholder / 4).toString(16) : (String(1e7) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, generateUUID);
341
163
  }
342
-
343
- // src/native-event-emitter/internal/appBridge.ts
344
164
  var INTERNAL__callbacks = /* @__PURE__ */ new Map();
345
165
  function invokeAppBridgeCallback(id, ...args) {
346
166
  const callback = INTERNAL__callbacks.get(id);
@@ -387,10 +207,8 @@ var INTERNAL__appBridgeHandler = {
387
207
  unregisterCallback,
388
208
  getCallbackIds
389
209
  };
390
-
391
- // src/native-event-emitter/internal/AppBridgeCallbackEvent.ts
392
210
  var UNSAFE__nativeEventEmitter = nativeEventEmitter;
393
- var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_native_bedrock5.BedrockEventDefinition {
211
+ var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_native6.GraniteEventDefinition {
394
212
  static INTERNAL__appBridgeSubscription;
395
213
  name = "appBridgeCallbackEvent";
396
214
  constructor() {
@@ -418,103 +236,230 @@ var AppBridgeCallbackEvent = class _AppBridgeCallbackEvent extends import_react_
418
236
  }
419
237
  }
420
238
  };
421
-
422
- // src/native-event-emitter/appsInTossEvent.ts
423
- var appsInTossEvent = new import_react_native_bedrock6.BedrockEvent([
239
+ var appsInTossEvent = new import_react_native.GraniteEvent([
424
240
  new AppBridgeCallbackEvent(),
425
241
  new UpdateLocationEvent(),
426
242
  new EntryMessageExitedEvent()
427
243
  ]);
428
-
429
- // src/core/utils/getAppsInTossGlobals.ts
430
- function getAppsInTossGlobals() {
431
- if (global.__appsInToss == null) {
432
- throw new Error("invalid apps-in-toss globals");
433
- }
434
- return global.__appsInToss;
435
- }
436
-
437
- // src/core/utils/toIcon.ts
438
- function toIcon(source) {
439
- return source.startsWith("http") ? { source: { uri: source } } : { name: source };
244
+ function startUpdateLocation(eventParams) {
245
+ return appsInTossEvent.addEventListener("updateLocationEvent", eventParams);
440
246
  }
441
-
442
- // src/core/hooks/useAppsInTossBridge.ts
443
- function useAppsInTossBridge() {
444
- const controller = (0, import_react_native5.useBridge)();
445
- const appsInTossGlobals2 = getAppsInTossGlobals();
446
- (0, import_react3.useEffect)(() => {
447
- const commonProps = {
448
- serviceName: appsInTossGlobals2.brandDisplayName,
449
- icon: toIcon(appsInTossGlobals2.brandIcon),
450
- color: appsInTossGlobals2.brandPrimaryColor,
451
- colorMode: appsInTossGlobals2.brandBridgeColorMode
452
- };
453
- controller.open({
454
- ...commonProps,
455
- onExited: () => {
456
- appsInTossEvent.emit("entryMessageExited", void 0);
457
- }
458
- });
459
- }, []);
247
+ function getOperationalEnvironment() {
248
+ return AppsInTossModule.operationalEnvironment;
460
249
  }
461
-
462
- // src/async-bridges.ts
463
- var async_bridges_exports = {};
464
- __export(async_bridges_exports, {
465
- appLogin: () => appLogin,
466
- checkoutPayment: () => checkoutPayment,
467
- eventLog: () => eventLog,
468
- fetchAlbumPhotos: () => fetchAlbumPhotos,
469
- fetchContacts: () => fetchContacts,
470
- getClipboardText: () => getClipboardText,
471
- getCurrentLocation: () => getCurrentLocation,
472
- getTossShareLink: () => getTossShareLink,
473
- openCamera: () => openCamera,
474
- setClipboardText: () => setClipboardText
475
- });
476
-
477
- // src/native-modules/setClipboardText.ts
478
- async function setClipboardText(text) {
479
- const permissionStatus = await requestPermission({ name: "clipboard", access: "write" });
480
- if (permissionStatus === "denied") {
481
- throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC4F0\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
250
+ var SEMVER_REGEX = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\\-]+(?:\.[\da-z\\-]+)*))?(?:\+[\da-z\\-]+(?:\.[\da-z\\-]+)*)?)?)?$/i;
251
+ var isWildcard = (val) => ["*", "x", "X"].includes(val);
252
+ var tryParse = (val) => {
253
+ const num = parseInt(val, 10);
254
+ return isNaN(num) ? val : num;
255
+ };
256
+ var coerceTypes = (a, b) => {
257
+ return typeof a === typeof b ? [a, b] : [String(a), String(b)];
258
+ };
259
+ var compareValues = (a, b) => {
260
+ if (isWildcard(a) || isWildcard(b)) {
261
+ return 0;
482
262
  }
483
- return AppsInTossModule.setClipboardText({ text });
484
- }
485
-
486
- // src/native-modules/getClipboardText.ts
487
- async function getClipboardText() {
488
- const permissionStatus = await requestPermission({ name: "clipboard", access: "read" });
263
+ const [aVal, bVal] = coerceTypes(tryParse(a), tryParse(b));
264
+ if (aVal > bVal) {
265
+ return 1;
266
+ }
267
+ if (aVal < bVal) {
268
+ return -1;
269
+ }
270
+ return 0;
271
+ };
272
+ var parseVersion = (version) => {
273
+ if (typeof version !== "string") {
274
+ throw new TypeError("Invalid argument: expected a string");
275
+ }
276
+ const match = version.match(SEMVER_REGEX);
277
+ if (!match) {
278
+ throw new Error(`Invalid semver: '${version}'`);
279
+ }
280
+ const [, major, minor, patch, build, preRelease] = match;
281
+ return [major, minor, patch, build, preRelease];
282
+ };
283
+ var compareSegments = (a, b) => {
284
+ const maxLength = Math.max(a.length, b.length);
285
+ for (let i = 0; i < maxLength; i++) {
286
+ const segA = a[i] ?? "0";
287
+ const segB = b[i] ?? "0";
288
+ const result = compareValues(segA, segB);
289
+ if (result !== 0) {
290
+ return result;
291
+ }
292
+ }
293
+ return 0;
294
+ };
295
+ var compareVersions = (v1, v2) => {
296
+ const seg1 = parseVersion(v1);
297
+ const seg2 = parseVersion(v2);
298
+ const preRelease1 = seg1.pop();
299
+ const preRelease2 = seg2.pop();
300
+ const mainCompare = compareSegments(seg1, seg2);
301
+ if (mainCompare !== 0) {
302
+ return mainCompare;
303
+ }
304
+ if (preRelease1 && preRelease2) {
305
+ return compareSegments(preRelease1.split("."), preRelease2.split("."));
306
+ }
307
+ if (preRelease1) {
308
+ return -1;
309
+ }
310
+ if (preRelease2) {
311
+ return 1;
312
+ }
313
+ return 0;
314
+ };
315
+ function isMinVersionSupported(minVersions) {
316
+ const operationalEnvironment2 = AppsInTossModule.operationalEnvironment;
317
+ if (operationalEnvironment2 === "sandbox") {
318
+ return true;
319
+ }
320
+ const currentVersion = AppsInTossModule.tossAppVersion;
321
+ const isIOS = import_react_native7.Platform.OS === "ios";
322
+ const minVersion = isIOS ? minVersions.ios : minVersions.android;
323
+ if (minVersion === void 0) {
324
+ return false;
325
+ }
326
+ if (minVersion === "always") {
327
+ return true;
328
+ }
329
+ if (minVersion === "never") {
330
+ return false;
331
+ }
332
+ return compareVersions(currentVersion, minVersion) >= 0;
333
+ }
334
+ function loadAdMobInterstitialAd(params) {
335
+ if (!loadAdMobInterstitialAd.isSupported()) {
336
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
337
+ return noop;
338
+ }
339
+ const { onEvent, onError, options } = params;
340
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobInterstitialAd", options, {
341
+ onAdClicked: () => {
342
+ onEvent({ type: "clicked" });
343
+ },
344
+ onAdDismissed: () => {
345
+ onEvent({ type: "dismissed" });
346
+ },
347
+ onAdFailedToShow: () => {
348
+ onEvent({ type: "failedToShow" });
349
+ },
350
+ onAdImpression: () => {
351
+ onEvent({ type: "impression" });
352
+ },
353
+ onAdShow: () => {
354
+ onEvent({ type: "show" });
355
+ },
356
+ onSuccess: (result) => onEvent({ type: "loaded", data: result }),
357
+ onError
358
+ });
359
+ return unregisterCallbacks;
360
+ }
361
+ function showAdMobInterstitialAd(params) {
362
+ if (!showAdMobInterstitialAd.isSupported()) {
363
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
364
+ return noop;
365
+ }
366
+ const { onEvent, onError, options } = params;
367
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobInterstitialAd", options, {
368
+ onSuccess: () => onEvent({ type: "requested" }),
369
+ onError
370
+ });
371
+ return unregisterCallbacks;
372
+ }
373
+ function loadAdMobRewardedAd(params) {
374
+ if (!loadAdMobRewardedAd.isSupported()) {
375
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
376
+ return noop;
377
+ }
378
+ const { onEvent, onError, options } = params;
379
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobRewardedAd", options, {
380
+ onAdClicked: () => {
381
+ onEvent({ type: "clicked" });
382
+ },
383
+ onAdDismissed: () => {
384
+ onEvent({ type: "dismissed" });
385
+ },
386
+ onAdFailedToShow: () => {
387
+ onEvent({ type: "failedToShow" });
388
+ },
389
+ onAdImpression: () => {
390
+ onEvent({ type: "impression" });
391
+ },
392
+ onAdShow: () => {
393
+ onEvent({ type: "show" });
394
+ },
395
+ onUserEarnedReward: () => {
396
+ onEvent({ type: "userEarnedReward" });
397
+ },
398
+ onSuccess: (result) => onEvent({ type: "loaded", data: result }),
399
+ onError
400
+ });
401
+ return unregisterCallbacks;
402
+ }
403
+ function showAdMobRewardedAd(params) {
404
+ if (!showAdMobRewardedAd.isSupported()) {
405
+ params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
406
+ return noop;
407
+ }
408
+ const { onEvent, onError, options } = params;
409
+ const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobRewardedAd", options, {
410
+ onSuccess: () => onEvent({ type: "requested" }),
411
+ onError
412
+ });
413
+ return unregisterCallbacks;
414
+ }
415
+ var ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION = "5.209.0";
416
+ var IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION = "5.209.0";
417
+ var UNSUPPORTED_ERROR_MESSAGE = "This feature is not supported in the current environment";
418
+ var ENVIRONMENT = getOperationalEnvironment();
419
+ function createIsSupported() {
420
+ return () => {
421
+ if (ENVIRONMENT !== "toss") {
422
+ return false;
423
+ }
424
+ return isMinVersionSupported({
425
+ android: ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION,
426
+ ios: IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION
427
+ });
428
+ };
429
+ }
430
+ loadAdMobInterstitialAd.isSupported = createIsSupported();
431
+ loadAdMobRewardedAd.isSupported = createIsSupported();
432
+ showAdMobInterstitialAd.isSupported = createIsSupported();
433
+ showAdMobRewardedAd.isSupported = createIsSupported();
434
+ async function checkoutPayment(options) {
435
+ return AppsInTossModule.checkoutPayment({ params: options });
436
+ }
437
+ async function setClipboardText(text) {
438
+ const permissionStatus = await requestPermission({ name: "clipboard", access: "write" });
439
+ if (permissionStatus === "denied") {
440
+ throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC4F0\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
441
+ }
442
+ return AppsInTossModule.setClipboardText({ text });
443
+ }
444
+ async function getClipboardText() {
445
+ const permissionStatus = await requestPermission({ name: "clipboard", access: "read" });
489
446
  if (permissionStatus === "denied") {
490
447
  throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC77D\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
491
448
  }
492
449
  return AppsInTossModule.getClipboardText({});
493
450
  }
494
-
495
- // src/native-modules/fetchContacts.ts
496
- async function fetchContacts({
497
- size,
498
- offset,
499
- query
500
- }) {
451
+ async function fetchContacts(options) {
501
452
  const permissionStatus = await requestPermission({ name: "contacts", access: "read" });
502
453
  if (permissionStatus === "denied") {
503
454
  throw new Error("\uC5F0\uB77D\uCC98 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
504
455
  }
505
- const contacts = await AppsInTossModule.fetchContacts({
506
- size,
507
- offset,
508
- query
509
- });
456
+ const contacts = await AppsInTossModule.fetchContacts(options);
510
457
  return {
511
458
  result: contacts.result,
512
459
  nextOffset: contacts.nextOffset ?? null,
513
460
  done: contacts.done
514
461
  };
515
462
  }
516
-
517
- // src/native-modules/fetchAlbumPhotos.ts
518
463
  var DEFAULT_MAX_COUNT = 10;
519
464
  var DEFAULT_MAX_WIDTH = 1024;
520
465
  async function fetchAlbumPhotos(options) {
@@ -529,8 +474,6 @@ async function fetchAlbumPhotos(options) {
529
474
  });
530
475
  return albumPhotos;
531
476
  }
532
-
533
- // src/native-modules/getCurrentLocation.ts
534
477
  async function getCurrentLocation(options) {
535
478
  const permissionStatus = await requestPermission({ name: "geolocation", access: "access" });
536
479
  if (permissionStatus === "denied") {
@@ -539,8 +482,6 @@ async function getCurrentLocation(options) {
539
482
  const position = await AppsInTossModule.getCurrentLocation(options);
540
483
  return position;
541
484
  }
542
-
543
- // src/native-modules/openCamera.ts
544
485
  async function openCamera(options) {
545
486
  const permissionStatus = await requestPermission({ name: "camera", access: "access" });
546
487
  if (permissionStatus === "denied") {
@@ -549,53 +490,817 @@ async function openCamera(options) {
549
490
  const photo = await AppsInTossModule.openCamera({ base64: false, maxWidth: 1024, ...options });
550
491
  return photo;
551
492
  }
493
+ async function appLogin() {
494
+ return AppsInTossModule.appLogin({});
495
+ }
496
+ function getTossAppVersion() {
497
+ return AppsInTossModule.tossAppVersion;
498
+ }
499
+ function getDeviceId() {
500
+ return AppsInTossModule.deviceId;
501
+ }
502
+ function getItem(key) {
503
+ return AppsInTossModule.getStorageItem({ key });
504
+ }
505
+ function setItem(key, value) {
506
+ return AppsInTossModule.setStorageItem({
507
+ key,
508
+ value
509
+ });
510
+ }
511
+ function removeItem(key) {
512
+ return AppsInTossModule.removeStorageItem({ key });
513
+ }
514
+ function clearItems() {
515
+ return AppsInTossModule.clearStorage({});
516
+ }
517
+ var Storage = {
518
+ getItem,
519
+ setItem,
520
+ removeItem,
521
+ clearItems
522
+ };
523
+ function normalizeParams(params) {
524
+ return Object.fromEntries(
525
+ Object.entries(params).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)])
526
+ );
527
+ }
528
+ async function eventLog(params) {
529
+ if (AppsInTossModule.operationalEnvironment === "sandbox") {
530
+ console.log("[eventLogDebug]", {
531
+ log_name: params.log_name,
532
+ log_type: params.log_type,
533
+ params: normalizeParams(params.params)
534
+ });
535
+ return;
536
+ }
537
+ const isSupported = isMinVersionSupported({
538
+ android: "5.208.0",
539
+ ios: "5.208.0"
540
+ });
541
+ if (!isSupported) {
542
+ return;
543
+ }
544
+ return AppsInTossModule.eventLog({
545
+ log_name: params.log_name,
546
+ log_type: params.log_type,
547
+ params: normalizeParams(params.params)
548
+ });
549
+ }
550
+ async function getTossShareLink(path) {
551
+ const { shareLink } = await AppsInTossModule.getTossShareLink({});
552
+ const shareUrl = new URL(shareLink);
553
+ shareUrl.searchParams.set("deep_link_value", path);
554
+ shareUrl.searchParams.set("af_dp", path);
555
+ return shareUrl.toString();
556
+ }
557
+ async function setDeviceOrientation(options) {
558
+ const isSupported = isMinVersionSupported({
559
+ android: "5.215.0",
560
+ ios: "5.215.0"
561
+ });
562
+ if (!isSupported) {
563
+ return;
564
+ }
565
+ return AppsInTossModule.setDeviceOrientation(options);
566
+ }
567
+ async function saveBase64Data(params) {
568
+ const isSupported = isMinVersionSupported({
569
+ android: "5.218.0",
570
+ ios: "5.216.0"
571
+ });
572
+ if (!isSupported) {
573
+ console.warn("saveBase64Data is not supported in this app version");
574
+ return;
575
+ }
576
+ await AppsInTossModule.saveBase64Data(params);
577
+ }
578
+ var TossPay = {
579
+ checkoutPayment
580
+ };
581
+ var GoogleAdMob = {
582
+ loadAdMobInterstitialAd,
583
+ showAdMobInterstitialAd,
584
+ loadAdMobRewardedAd,
585
+ showAdMobRewardedAd
586
+ };
587
+ var BedrockModule = import_react_native8.NativeModules.BedrockModule;
588
+ async function closeView() {
589
+ return BedrockModule.closeView();
590
+ }
591
+ function getLocale() {
592
+ const locale = BedrockModule?.DeviceInfo?.locale ?? "ko-KR";
593
+ if (import_react_native9.Platform.OS === "android") {
594
+ return replaceUnderbarToHypen(locale);
595
+ }
596
+ return locale;
597
+ }
598
+ function replaceUnderbarToHypen(locale) {
599
+ return locale.replace(/_/g, "-");
600
+ }
601
+ function getSchemeUri() {
602
+ return BedrockModule.schemeUri;
603
+ }
604
+ function generateHapticFeedback(options) {
605
+ return BedrockModule.generateHapticFeedback(options);
606
+ }
607
+ async function share(message) {
608
+ BedrockModule.share(message);
609
+ }
610
+ function setSecureScreen(options) {
611
+ return BedrockModule.setSecureScreen(options);
612
+ }
613
+ async function setScreenAwakeMode(options) {
614
+ return BedrockModule.setScreenAwakeMode(options);
615
+ }
616
+ function getNetworkStatus() {
617
+ return BedrockModule.getNetworkStatus();
618
+ }
619
+ async function setIosSwipeGestureEnabled(options) {
620
+ if (BedrockModule.setIosSwipeGestureEnabled == null) {
621
+ return;
622
+ }
623
+ return BedrockModule.setIosSwipeGestureEnabled(options);
624
+ }
625
+ function openURL(url) {
626
+ return import_react_native10.Linking.openURL(url);
627
+ }
628
+ function getPlatformOS() {
629
+ return import_react_native11.Platform.OS;
630
+ }
631
+ var BedrockCoreModule = import_react_native12.NativeModules.BedrockCoreModule;
632
+ var Accuracy2 = /* @__PURE__ */ ((Accuracy3) => {
633
+ Accuracy3[Accuracy3["Lowest"] = 1] = "Lowest";
634
+ Accuracy3[Accuracy3["Low"] = 2] = "Low";
635
+ Accuracy3[Accuracy3["Balanced"] = 3] = "Balanced";
636
+ Accuracy3[Accuracy3["High"] = 4] = "High";
637
+ Accuracy3[Accuracy3["Highest"] = 5] = "Highest";
638
+ Accuracy3[Accuracy3["BestForNavigation"] = 6] = "BestForNavigation";
639
+ return Accuracy3;
640
+ })(Accuracy2 || {});
641
+ var TossCoreModule = import_react_native13.NativeModules.TossCoreModule;
642
+ function tossCoreEventLog(params) {
643
+ const supported = isMinVersionSupported({ ios: "5.210.0", android: "5.210.0" });
644
+ const isSandbox = getOperationalEnvironment() === "sandbox";
645
+ if (!supported || isSandbox) {
646
+ return;
647
+ }
648
+ TossCoreModule.eventLog({
649
+ params: {
650
+ log_name: params.log_name,
651
+ log_type: params.log_type,
652
+ params: params.params
653
+ }
654
+ });
655
+ }
656
+ var INTERNAL__module = {
657
+ tossCoreEventLog
658
+ };
659
+
660
+ // src/core/components/AppEvent.tsx
661
+ var import_react_native15 = require("@granite-js/react-native");
662
+ var import_react2 = require("react");
663
+
664
+ // src/env.ts
665
+ var env = {
666
+ getDeploymentId: () => __DEV__ ? "local" : global.__appsInToss?.deploymentId
667
+ };
668
+
669
+ // src/core/hooks/useReferrer.ts
670
+ var import_react_native14 = require("@granite-js/react-native");
671
+ var import_react = require("react");
672
+ function useReferrer() {
673
+ return (0, import_react.useMemo)(() => {
674
+ try {
675
+ return new URL((0, import_react_native14.getSchemeUri)()).searchParams.get("referrer");
676
+ } catch {
677
+ return null;
678
+ }
679
+ }, []);
680
+ }
681
+
682
+ // src/core/components/AppEvent.tsx
683
+ var ENTRY_APP_EVENT_SCHEMA_ID = 1562181;
684
+ function isPrivateScheme() {
685
+ try {
686
+ return new URL((0, import_react_native15.getSchemeUri)()).protocol === "intoss-private:";
687
+ } catch {
688
+ return false;
689
+ }
690
+ }
691
+ function EntryAppEvent() {
692
+ const referrer = useReferrer() ?? "";
693
+ (0, import_react2.useEffect)(() => {
694
+ INTERNAL__module.tossCoreEventLog({
695
+ log_name: "appsintoss_app_visit::impression__enter_appsintoss",
696
+ log_type: "info",
697
+ params: {
698
+ is_transform: true,
699
+ schema_id: ENTRY_APP_EVENT_SCHEMA_ID,
700
+ referrer,
701
+ deployment_id: env.getDeploymentId(),
702
+ app_name: import_react_native15.Granite.appName,
703
+ is_private: isPrivateScheme()
704
+ }
705
+ });
706
+ }, [referrer]);
707
+ return null;
708
+ }
709
+ function SystemAppEvent({ ...initialProps }) {
710
+ (0, import_react2.useEffect)(() => {
711
+ INTERNAL__module.tossCoreEventLog({
712
+ log_name: "AppsInTossInitialProps",
713
+ log_type: "debug",
714
+ params: {
715
+ ...initialProps,
716
+ schemeUri: (0, import_react_native15.getSchemeUri)(),
717
+ deployment_id: env.getDeploymentId(),
718
+ app_name: import_react_native15.Granite.appName,
719
+ is_private: isPrivateScheme()
720
+ }
721
+ });
722
+ }, [initialProps]);
723
+ return null;
724
+ }
725
+ var AppEvent = {
726
+ Entry: EntryAppEvent,
727
+ System: SystemAppEvent
728
+ };
729
+
730
+ // src/core/hooks/useAppsInTossBridge.ts
731
+ var import_react_native16 = require("@toss-design-system/react-native");
732
+ var import_react3 = require("react");
733
+
734
+ // src/core/utils/getAppsInTossGlobals.ts
735
+ function getAppsInTossGlobals() {
736
+ if (global.__appsInToss == null) {
737
+ throw new Error("invalid apps-in-toss globals");
738
+ }
739
+ return global.__appsInToss;
740
+ }
741
+
742
+ // src/core/utils/toIcon.ts
743
+ function toIcon(source) {
744
+ return source.startsWith("http") ? { source: { uri: source } } : { name: source };
745
+ }
746
+
747
+ // src/core/hooks/useAppsInTossBridge.ts
748
+ function useAppsInTossBridge() {
749
+ const controller = (0, import_react_native16.useBridge)();
750
+ const appsInTossGlobals2 = getAppsInTossGlobals();
751
+ (0, import_react3.useEffect)(() => {
752
+ const commonProps = {
753
+ serviceName: appsInTossGlobals2.brandDisplayName,
754
+ icon: toIcon(appsInTossGlobals2.brandIcon),
755
+ color: appsInTossGlobals2.brandPrimaryColor,
756
+ colorMode: appsInTossGlobals2.brandBridgeColorMode
757
+ };
758
+ controller.open({
759
+ ...commonProps,
760
+ onExited: () => {
761
+ appsInTossEvent.emit("entryMessageExited", void 0);
762
+ }
763
+ });
764
+ }, []);
765
+ }
766
+
767
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/async-bridges.ts
768
+ var async_bridges_exports = {};
769
+ __export(async_bridges_exports, {
770
+ appLogin: () => appLogin2,
771
+ checkoutPayment: () => checkoutPayment2,
772
+ closeView: () => closeView2,
773
+ eventLog: () => eventLog2,
774
+ fetchAlbumPhotos: () => fetchAlbumPhotos2,
775
+ fetchContacts: () => fetchContacts2,
776
+ generateHapticFeedback: () => generateHapticFeedback2,
777
+ getClipboardText: () => getClipboardText2,
778
+ getCurrentLocation: () => getCurrentLocation2,
779
+ getNetworkStatus: () => getNetworkStatus2,
780
+ getTossShareLink: () => getTossShareLink2,
781
+ openCamera: () => openCamera2,
782
+ openURL: () => openURL2,
783
+ saveBase64Data: () => saveBase64Data2,
784
+ setClipboardText: () => setClipboardText2,
785
+ setDeviceOrientation: () => setDeviceOrientation2,
786
+ setIosSwipeGestureEnabled: () => setIosSwipeGestureEnabled2,
787
+ setScreenAwakeMode: () => setScreenAwakeMode2,
788
+ setSecureScreen: () => setSecureScreen2,
789
+ share: () => share2
790
+ });
791
+
792
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/BedrockModule.ts
793
+ var import_react_native17 = require("react-native");
794
+ var BedrockModule2 = import_react_native17.NativeModules.BedrockModule;
795
+
796
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/closeView.ts
797
+ async function closeView2() {
798
+ return BedrockModule2.closeView();
799
+ }
800
+
801
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/generateHapticFeedback/index.ts
802
+ function generateHapticFeedback2(options) {
803
+ return BedrockModule2.generateHapticFeedback(options);
804
+ }
805
+
806
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/share.ts
807
+ async function share2(message) {
808
+ BedrockModule2.share(message);
809
+ }
810
+
811
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/setSecureScreen.ts
812
+ function setSecureScreen2(options) {
813
+ return BedrockModule2.setSecureScreen(options);
814
+ }
815
+
816
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/setScreenAwakeMode.ts
817
+ async function setScreenAwakeMode2(options) {
818
+ return BedrockModule2.setScreenAwakeMode(options);
819
+ }
820
+
821
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getNetworkStatus/index.ts
822
+ function getNetworkStatus2() {
823
+ return BedrockModule2.getNetworkStatus();
824
+ }
825
+
826
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/setIosSwipeGestureEnabled.ts
827
+ async function setIosSwipeGestureEnabled2(options) {
828
+ if (BedrockModule2.setIosSwipeGestureEnabled == null) {
829
+ return;
830
+ }
831
+ return BedrockModule2.setIosSwipeGestureEnabled(options);
832
+ }
833
+
834
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/openURL.ts
835
+ var import_react_native18 = require("react-native");
836
+ function openURL2(url) {
837
+ return import_react_native18.Linking.openURL(url);
838
+ }
839
+
840
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/AppsInTossModule.ts
841
+ var import_react_native19 = require("react-native");
842
+ var Module2 = import_react_native19.TurboModuleRegistry.getEnforcing("AppsInTossModule");
843
+ var AppsInTossModuleInstance2 = Module2;
844
+ var AppsInTossModule2 = Module2;
845
+
846
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getPermission.ts
847
+ function getPermission2(permission) {
848
+ return AppsInTossModule2.getPermission(permission);
849
+ }
850
+
851
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/openPermissionDialog.ts
852
+ function openPermissionDialog2(permission) {
853
+ return AppsInTossModule2.openPermissionDialog(permission);
854
+ }
855
+
856
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/requestPermission.ts
857
+ async function requestPermission2(permission) {
858
+ const permissionStatus = await getPermission2(permission);
859
+ switch (permissionStatus) {
860
+ case "allowed":
861
+ case "denied":
862
+ return permissionStatus;
863
+ default:
864
+ return openPermissionDialog2(permission);
865
+ }
866
+ }
867
+
868
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/setClipboardText.ts
869
+ async function setClipboardText2(text) {
870
+ const permissionStatus = await requestPermission2({ name: "clipboard", access: "write" });
871
+ if (permissionStatus === "denied") {
872
+ throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC4F0\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
873
+ }
874
+ return AppsInTossModule2.setClipboardText({ text });
875
+ }
876
+
877
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getClipboardText.ts
878
+ async function getClipboardText2() {
879
+ const permissionStatus = await requestPermission2({ name: "clipboard", access: "read" });
880
+ if (permissionStatus === "denied") {
881
+ throw new Error("\uD074\uB9BD\uBCF4\uB4DC \uC77D\uAE30 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
882
+ }
883
+ return AppsInTossModule2.getClipboardText({});
884
+ }
885
+
886
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/fetchContacts.ts
887
+ async function fetchContacts2(options) {
888
+ const permissionStatus = await requestPermission2({ name: "contacts", access: "read" });
889
+ if (permissionStatus === "denied") {
890
+ throw new Error("\uC5F0\uB77D\uCC98 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
891
+ }
892
+ const contacts = await AppsInTossModule2.fetchContacts(options);
893
+ return {
894
+ result: contacts.result,
895
+ nextOffset: contacts.nextOffset ?? null,
896
+ done: contacts.done
897
+ };
898
+ }
899
+
900
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/fetchAlbumPhotos.ts
901
+ var DEFAULT_MAX_COUNT2 = 10;
902
+ var DEFAULT_MAX_WIDTH2 = 1024;
903
+ async function fetchAlbumPhotos2(options) {
904
+ const permissionStatus = await requestPermission2({ name: "photos", access: "read" });
905
+ if (permissionStatus === "denied") {
906
+ throw new Error("\uC0AC\uC9C4\uCCA9 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
907
+ }
908
+ const albumPhotos = await AppsInTossModule2.fetchAlbumPhotos({
909
+ ...options,
910
+ maxCount: options.maxCount ?? DEFAULT_MAX_COUNT2,
911
+ maxWidth: options.maxWidth ?? DEFAULT_MAX_WIDTH2
912
+ });
913
+ return albumPhotos;
914
+ }
915
+
916
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getCurrentLocation.ts
917
+ async function getCurrentLocation2(options) {
918
+ const permissionStatus = await requestPermission2({ name: "geolocation", access: "access" });
919
+ if (permissionStatus === "denied") {
920
+ throw new Error("\uC704\uCE58 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
921
+ }
922
+ const position = await AppsInTossModule2.getCurrentLocation(options);
923
+ return position;
924
+ }
925
+
926
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/openCamera.ts
927
+ async function openCamera2(options) {
928
+ const permissionStatus = await requestPermission2({ name: "camera", access: "access" });
929
+ if (permissionStatus === "denied") {
930
+ throw new Error("\uCE74\uBA54\uB77C \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694.");
931
+ }
932
+ const photo = await AppsInTossModule2.openCamera({ base64: false, maxWidth: 1024, ...options });
933
+ return photo;
934
+ }
935
+
936
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/appLogin.ts
937
+ async function appLogin2() {
938
+ return AppsInTossModule2.appLogin({});
939
+ }
940
+
941
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/isMinVersionSupported.ts
942
+ var import_react_native20 = require("react-native");
943
+
944
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/utils/compareVersion.ts
945
+ var SEMVER_REGEX2 = /^[v^~<>=]*?(\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+)(?:\.([x*]|\d+))?(?:-([\da-z\\-]+(?:\.[\da-z\\-]+)*))?(?:\+[\da-z\\-]+(?:\.[\da-z\\-]+)*)?)?)?$/i;
946
+ var isWildcard2 = (val) => ["*", "x", "X"].includes(val);
947
+ var tryParse2 = (val) => {
948
+ const num = parseInt(val, 10);
949
+ return isNaN(num) ? val : num;
950
+ };
951
+ var coerceTypes2 = (a, b) => {
952
+ return typeof a === typeof b ? [a, b] : [String(a), String(b)];
953
+ };
954
+ var compareValues2 = (a, b) => {
955
+ if (isWildcard2(a) || isWildcard2(b)) {
956
+ return 0;
957
+ }
958
+ const [aVal, bVal] = coerceTypes2(tryParse2(a), tryParse2(b));
959
+ if (aVal > bVal) {
960
+ return 1;
961
+ }
962
+ if (aVal < bVal) {
963
+ return -1;
964
+ }
965
+ return 0;
966
+ };
967
+ var parseVersion2 = (version) => {
968
+ if (typeof version !== "string") {
969
+ throw new TypeError("Invalid argument: expected a string");
970
+ }
971
+ const match = version.match(SEMVER_REGEX2);
972
+ if (!match) {
973
+ throw new Error(`Invalid semver: '${version}'`);
974
+ }
975
+ const [, major, minor, patch, build, preRelease] = match;
976
+ return [major, minor, patch, build, preRelease];
977
+ };
978
+ var compareSegments2 = (a, b) => {
979
+ const maxLength = Math.max(a.length, b.length);
980
+ for (let i = 0; i < maxLength; i++) {
981
+ const segA = a[i] ?? "0";
982
+ const segB = b[i] ?? "0";
983
+ const result = compareValues2(segA, segB);
984
+ if (result !== 0) {
985
+ return result;
986
+ }
987
+ }
988
+ return 0;
989
+ };
990
+ var compareVersions2 = (v1, v2) => {
991
+ const seg1 = parseVersion2(v1);
992
+ const seg2 = parseVersion2(v2);
993
+ const preRelease1 = seg1.pop();
994
+ const preRelease2 = seg2.pop();
995
+ const mainCompare = compareSegments2(seg1, seg2);
996
+ if (mainCompare !== 0) {
997
+ return mainCompare;
998
+ }
999
+ if (preRelease1 && preRelease2) {
1000
+ return compareSegments2(preRelease1.split("."), preRelease2.split("."));
1001
+ }
1002
+ if (preRelease1) {
1003
+ return -1;
1004
+ }
1005
+ if (preRelease2) {
1006
+ return 1;
1007
+ }
1008
+ return 0;
1009
+ };
1010
+
1011
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/isMinVersionSupported.ts
1012
+ function isMinVersionSupported2(minVersions) {
1013
+ const operationalEnvironment2 = AppsInTossModule2.operationalEnvironment;
1014
+ if (operationalEnvironment2 === "sandbox") {
1015
+ return true;
1016
+ }
1017
+ const currentVersion = AppsInTossModule2.tossAppVersion;
1018
+ const isIOS = import_react_native20.Platform.OS === "ios";
1019
+ const minVersion = isIOS ? minVersions.ios : minVersions.android;
1020
+ if (minVersion === void 0) {
1021
+ return false;
1022
+ }
1023
+ if (minVersion === "always") {
1024
+ return true;
1025
+ }
1026
+ if (minVersion === "never") {
1027
+ return false;
1028
+ }
1029
+ return compareVersions2(currentVersion, minVersion) >= 0;
1030
+ }
1031
+
1032
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/eventLog.ts
1033
+ function normalizeParams2(params) {
1034
+ return Object.fromEntries(
1035
+ Object.entries(params).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)])
1036
+ );
1037
+ }
1038
+ async function eventLog2(params) {
1039
+ if (AppsInTossModule2.operationalEnvironment === "sandbox") {
1040
+ console.log("[eventLogDebug]", {
1041
+ log_name: params.log_name,
1042
+ log_type: params.log_type,
1043
+ params: normalizeParams2(params.params)
1044
+ });
1045
+ return;
1046
+ }
1047
+ const isSupported = isMinVersionSupported2({
1048
+ android: "5.208.0",
1049
+ ios: "5.208.0"
1050
+ });
1051
+ if (!isSupported) {
1052
+ return;
1053
+ }
1054
+ return AppsInTossModule2.eventLog({
1055
+ log_name: params.log_name,
1056
+ log_type: params.log_type,
1057
+ params: normalizeParams2(params.params)
1058
+ });
1059
+ }
1060
+
1061
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getTossShareLink.ts
1062
+ async function getTossShareLink2(path) {
1063
+ const { shareLink } = await AppsInTossModule2.getTossShareLink({});
1064
+ const shareUrl = new URL(shareLink);
1065
+ shareUrl.searchParams.set("deep_link_value", path);
1066
+ shareUrl.searchParams.set("af_dp", path);
1067
+ return shareUrl.toString();
1068
+ }
1069
+
1070
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/setDeviceOrientation.ts
1071
+ async function setDeviceOrientation2(options) {
1072
+ const isSupported = isMinVersionSupported2({
1073
+ android: "5.215.0",
1074
+ ios: "5.215.0"
1075
+ });
1076
+ if (!isSupported) {
1077
+ return;
1078
+ }
1079
+ return AppsInTossModule2.setDeviceOrientation(options);
1080
+ }
1081
+
1082
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/checkoutPayment.ts
1083
+ async function checkoutPayment2(options) {
1084
+ return AppsInTossModule2.checkoutPayment({ params: options });
1085
+ }
1086
+
1087
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/saveBase64Data.ts
1088
+ async function saveBase64Data2(params) {
1089
+ const isSupported = isMinVersionSupported2({
1090
+ android: "5.218.0",
1091
+ ios: "5.216.0"
1092
+ });
1093
+ if (!isSupported) {
1094
+ console.warn("saveBase64Data is not supported in this app version");
1095
+ return;
1096
+ }
1097
+ await AppsInTossModule2.saveBase64Data(params);
1098
+ }
1099
+
1100
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/constant-bridges.ts
1101
+ var constant_bridges_exports = {};
1102
+ __export(constant_bridges_exports, {
1103
+ getDeviceId: () => getDeviceId2,
1104
+ getLocale: () => getLocale2,
1105
+ getOperationalEnvironment: () => getOperationalEnvironment2,
1106
+ getPlatformOS: () => getPlatformOS2,
1107
+ getSchemeUri: () => getSchemeUri4,
1108
+ getTossAppVersion: () => getTossAppVersion2
1109
+ });
1110
+
1111
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getLocale.ts
1112
+ var import_react_native21 = require("react-native");
1113
+ function getLocale2() {
1114
+ const locale = BedrockModule2?.DeviceInfo?.locale ?? "ko-KR";
1115
+ if (import_react_native21.Platform.OS === "android") {
1116
+ return replaceUnderbarToHypen2(locale);
1117
+ }
1118
+ return locale;
1119
+ }
1120
+ function replaceUnderbarToHypen2(locale) {
1121
+ return locale.replace(/_/g, "-");
1122
+ }
1123
+
1124
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getSchemeUri.ts
1125
+ function getSchemeUri4() {
1126
+ return BedrockModule2.schemeUri;
1127
+ }
1128
+
1129
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/BedrockModule/native-modules/natives/getPlatformOS.ts
1130
+ var import_react_native22 = require("react-native");
1131
+ function getPlatformOS2() {
1132
+ return import_react_native22.Platform.OS;
1133
+ }
1134
+
1135
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getOperationalEnvironment.ts
1136
+ function getOperationalEnvironment2() {
1137
+ return AppsInTossModule2.operationalEnvironment;
1138
+ }
1139
+
1140
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getTossAppVersion.ts
1141
+ function getTossAppVersion2() {
1142
+ return AppsInTossModule2.tossAppVersion;
1143
+ }
1144
+
1145
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-modules/getDeviceId.ts
1146
+ function getDeviceId2() {
1147
+ return AppsInTossModule2.deviceId;
1148
+ }
1149
+
1150
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/event-bridges.ts
1151
+ var event_bridges_exports = {};
1152
+ __export(event_bridges_exports, {
1153
+ startUpdateLocation: () => startUpdateLocation2
1154
+ });
1155
+
1156
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/appsInTossEvent.ts
1157
+ var import_react_native27 = require("@granite-js/react-native");
1158
+
1159
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/event-plugins/EntryMessageExitedEvent.ts
1160
+ var import_react_native23 = require("@granite-js/react-native");
1161
+ var EntryMessageExitedEvent2 = class extends import_react_native23.GraniteEventDefinition {
1162
+ name = "entryMessageExited";
1163
+ remove() {
1164
+ }
1165
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
1166
+ listener(_) {
1167
+ }
1168
+ };
1169
+
1170
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/event-plugins/UpdateLocationEvent.ts
1171
+ var import_react_native25 = require("@granite-js/react-native");
1172
+
1173
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/nativeEventEmitter.ts
1174
+ var import_react_native24 = require("react-native");
1175
+ var nativeEventEmitter2 = new import_react_native24.NativeEventEmitter(AppsInTossModuleInstance2);
1176
+
1177
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/event-plugins/UpdateLocationEvent.ts
1178
+ var UpdateLocationEvent2 = class extends import_react_native25.GraniteEventDefinition {
1179
+ name = "updateLocationEvent";
1180
+ subscriptionCount = 0;
1181
+ ref = {
1182
+ remove: () => {
1183
+ }
1184
+ };
1185
+ remove() {
1186
+ if (--this.subscriptionCount === 0) {
1187
+ AppsInTossModuleInstance2.stopUpdateLocation({});
1188
+ }
1189
+ this.ref.remove();
1190
+ }
1191
+ listener(options, onEvent, onError) {
1192
+ requestPermission2({ name: "geolocation", access: "access" }).then((permissionStatus) => {
1193
+ if (permissionStatus === "denied") {
1194
+ onError(new Error("\uC704\uCE58 \uAD8C\uD55C\uC774 \uAC70\uBD80\uB418\uC5C8\uC5B4\uC694."));
1195
+ return;
1196
+ }
1197
+ void AppsInTossModuleInstance2.startUpdateLocation(options).catch(onError);
1198
+ const subscription = nativeEventEmitter2.addListener("updateLocation", onEvent);
1199
+ this.ref = {
1200
+ remove: () => subscription?.remove()
1201
+ };
1202
+ this.subscriptionCount++;
1203
+ }).catch(onError);
1204
+ }
1205
+ };
552
1206
 
553
- // src/native-modules/appLogin.ts
554
- async function appLogin() {
555
- return AppsInTossModule.appLogin({});
556
- }
1207
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/internal/AppBridgeCallbackEvent.ts
1208
+ var import_react_native26 = require("@granite-js/react-native");
557
1209
 
558
- // src/native-modules/checkoutPayment.ts
559
- async function checkoutPayment(options) {
560
- return AppsInTossModule.checkoutPayment({ params: options });
1210
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/utils/generateUUID.ts
1211
+ function generateUUID2(placeholder) {
1212
+ return placeholder ? (placeholder ^ Math.random() * 16 >> placeholder / 4).toString(16) : (String(1e7) + 1e3 + 4e3 + 8e3 + 1e11).replace(/[018]/g, generateUUID2);
561
1213
  }
562
1214
 
563
- // src/native-modules/eventLog.ts
564
- function normalizeParams(params) {
565
- return Object.fromEntries(
566
- Object.entries(params).filter(([, value]) => value !== void 0).map(([key, value]) => [key, String(value)])
567
- );
1215
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/internal/appBridge.ts
1216
+ var INTERNAL__callbacks2 = /* @__PURE__ */ new Map();
1217
+ function invokeAppBridgeCallback2(id, ...args) {
1218
+ const callback = INTERNAL__callbacks2.get(id);
1219
+ callback?.call(null, ...args);
1220
+ return Boolean(callback);
568
1221
  }
569
- async function eventLog(params) {
570
- if (AppsInTossModule.operationalEnvironment === "sandbox") {
571
- console.log("[eventLogDebug]", {
572
- log_name: params.log_name,
573
- log_type: params.log_type,
574
- params: normalizeParams(params.params)
575
- });
576
- return;
577
- }
578
- const isSupported = isMinVersionSupported({
579
- android: "5.208.0",
580
- ios: "5.208.0"
1222
+ function invokeAppBridgeMethod2(methodName, params, callbacks) {
1223
+ const { onSuccess, onError, ...appBridgeCallbacks } = callbacks;
1224
+ const { callbackMap, unregisterAll } = registerCallbacks2(appBridgeCallbacks);
1225
+ const promise = AppsInTossModuleInstance2[methodName]({
1226
+ params,
1227
+ callbacks: callbackMap
581
1228
  });
582
- if (!isSupported) {
583
- return;
1229
+ void promise.then(onSuccess).catch(onError);
1230
+ return unregisterAll;
1231
+ }
1232
+ function registerCallbacks2(callbacks) {
1233
+ const callbackMap = {};
1234
+ for (const [callbackName, callback] of Object.entries(callbacks)) {
1235
+ const id = registerCallback2(callback, callbackName);
1236
+ callbackMap[callbackName] = id;
584
1237
  }
585
- return AppsInTossModule.eventLog({
586
- log_name: params.log_name,
587
- log_type: params.log_type,
588
- params: normalizeParams(params.params)
589
- });
1238
+ const unregisterAll = () => {
1239
+ Object.values(callbackMap).forEach(unregisterCallback2);
1240
+ };
1241
+ return { callbackMap, unregisterAll };
1242
+ }
1243
+ function registerCallback2(callback, name = "unnamed") {
1244
+ const uniqueId = generateUUID2();
1245
+ const callbackId = `${uniqueId}__${name}`;
1246
+ INTERNAL__callbacks2.set(callbackId, callback);
1247
+ return callbackId;
1248
+ }
1249
+ function unregisterCallback2(id) {
1250
+ INTERNAL__callbacks2.delete(id);
590
1251
  }
1252
+ function getCallbackIds2() {
1253
+ return Array.from(INTERNAL__callbacks2.keys());
1254
+ }
1255
+ var INTERNAL__appBridgeHandler2 = {
1256
+ invokeAppBridgeCallback: invokeAppBridgeCallback2,
1257
+ invokeAppBridgeMethod: invokeAppBridgeMethod2,
1258
+ registerCallback: registerCallback2,
1259
+ unregisterCallback: unregisterCallback2,
1260
+ getCallbackIds: getCallbackIds2
1261
+ };
591
1262
 
592
- // src/native-modules/getTossShareLink.ts
593
- async function getTossShareLink(path) {
594
- const { shareLink } = await AppsInTossModule.getTossShareLink({});
595
- const shareUrl = new URL(shareLink);
596
- shareUrl.searchParams.set("deep_link_value", path);
597
- shareUrl.searchParams.set("af_dp", path);
598
- return shareUrl.toString();
1263
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/internal/AppBridgeCallbackEvent.ts
1264
+ var UNSAFE__nativeEventEmitter2 = nativeEventEmitter2;
1265
+ var AppBridgeCallbackEvent2 = class _AppBridgeCallbackEvent2 extends import_react_native26.GraniteEventDefinition {
1266
+ static INTERNAL__appBridgeSubscription;
1267
+ name = "appBridgeCallbackEvent";
1268
+ constructor() {
1269
+ super();
1270
+ this.registerAppBridgeCallbackEventListener();
1271
+ }
1272
+ remove() {
1273
+ }
1274
+ listener() {
1275
+ }
1276
+ registerAppBridgeCallbackEventListener() {
1277
+ if (_AppBridgeCallbackEvent2.INTERNAL__appBridgeSubscription != null) {
1278
+ return;
1279
+ }
1280
+ _AppBridgeCallbackEvent2.INTERNAL__appBridgeSubscription = UNSAFE__nativeEventEmitter2.addListener(
1281
+ "appBridgeCallback",
1282
+ this.ensureInvokeAppBridgeCallback
1283
+ );
1284
+ }
1285
+ ensureInvokeAppBridgeCallback(result) {
1286
+ if (typeof result === "object" && typeof result.name === "string") {
1287
+ INTERNAL__appBridgeHandler2.invokeAppBridgeCallback(result.name, result.params);
1288
+ } else {
1289
+ console.warn("Invalid app bridge callback result:", result);
1290
+ }
1291
+ }
1292
+ };
1293
+
1294
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/appsInTossEvent.ts
1295
+ var appsInTossEvent2 = new import_react_native27.GraniteEvent([
1296
+ new AppBridgeCallbackEvent2(),
1297
+ new UpdateLocationEvent2(),
1298
+ new EntryMessageExitedEvent2()
1299
+ ]);
1300
+
1301
+ // ../../.yarn/__virtual__/@apps-in-toss-native-modules-virtual-79d3aa8191/1/apps-in-toss-packages/native-modules/src/AppsInTossModule/native-event-emitter/startUpdateLocation.ts
1302
+ function startUpdateLocation2(eventParams) {
1303
+ return appsInTossEvent2.addEventListener("updateLocationEvent", eventParams);
599
1304
  }
600
1305
 
601
1306
  // src/core/registerApp.tsx
@@ -604,7 +1309,7 @@ function AppsInTossContainer(Container, { children, ...initialProps }) {
604
1309
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
605
1310
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppEvent.Entry, {}),
606
1311
  /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AppEvent.System, { ...initialProps }),
607
- /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native6.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TDSContainer, { ...initialProps, children }) }) })
1312
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Container, { ...initialProps, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native29.TDSProvider, { colorPreference: "light", token: { color: { primary: getAppsInTossGlobals().brandPrimaryColor } }, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TDSContainer, { ...initialProps, children }) }) })
608
1313
  ] });
609
1314
  }
610
1315
  function TDSContainer({ children }) {
@@ -613,10 +1318,10 @@ function TDSContainer({ children }) {
613
1318
  }
614
1319
  function registerApp(container, { context, analytics }) {
615
1320
  import_analytics.Analytics.init({
616
- logger: (params) => void eventLog(params),
1321
+ logger: (params) => void eventLog2(params),
617
1322
  debug: analytics?.debug ?? __DEV__
618
1323
  });
619
- return import_react_native_bedrock7.Bedrock.registerApp(AppsInTossContainer.bind(null, container), {
1324
+ return import_react_native28.Granite.registerApp(AppsInTossContainer.bind(null, container), {
620
1325
  appName: getAppName(),
621
1326
  context,
622
1327
  router: {
@@ -629,7 +1334,7 @@ function registerApp(container, { context, analytics }) {
629
1334
  }
630
1335
  function getAppName() {
631
1336
  try {
632
- return global.__bedrock.app.name;
1337
+ return global.__granite.app.name;
633
1338
  } catch (error) {
634
1339
  console.error("unexpected error occurred while getting app name");
635
1340
  throw error;
@@ -641,192 +1346,36 @@ var AppsInToss = {
641
1346
  registerApp
642
1347
  };
643
1348
 
644
- // src/native-event-emitter/startUpdateLocation.ts
645
- function startUpdateLocation(eventParams) {
646
- return appsInTossEvent.addEventListener("updateLocationEvent", eventParams);
647
- }
648
-
649
- // ../../.yarn/cache/es-toolkit-npm-1.34.1-4cd6371dcb-aab6d07be3.zip/node_modules/es-toolkit/dist/function/noop.mjs
650
- function noop() {
651
- }
652
-
653
- // src/native-modules/ads/googleAdMob.ts
654
- function loadAdMobInterstitialAd(params) {
655
- if (!loadAdMobInterstitialAd.isSupported()) {
656
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
657
- return noop;
658
- }
659
- const { onEvent, onError, options } = params;
660
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobInterstitialAd", options, {
661
- onAdClicked: () => {
662
- onEvent({ type: "clicked" });
663
- },
664
- onAdDismissed: () => {
665
- onEvent({ type: "dismissed" });
666
- },
667
- onAdFailedToShow: () => {
668
- onEvent({ type: "failedToShow" });
669
- },
670
- onAdImpression: () => {
671
- onEvent({ type: "impression" });
672
- },
673
- onAdShow: () => {
674
- onEvent({ type: "show" });
675
- },
676
- onSuccess: (result) => onEvent({ type: "loaded", data: result }),
677
- onError
678
- });
679
- return unregisterCallbacks;
680
- }
681
- function showAdMobInterstitialAd(params) {
682
- if (!showAdMobInterstitialAd.isSupported()) {
683
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
684
- return noop;
685
- }
686
- const { onEvent, onError, options } = params;
687
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobInterstitialAd", options, {
688
- onSuccess: () => onEvent({ type: "requested" }),
689
- onError
690
- });
691
- return unregisterCallbacks;
692
- }
693
- function loadAdMobRewardedAd(params) {
694
- if (!loadAdMobRewardedAd.isSupported()) {
695
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
696
- return noop;
697
- }
698
- const { onEvent, onError, options } = params;
699
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("loadAdMobRewardedAd", options, {
700
- onAdClicked: () => {
701
- onEvent({ type: "clicked" });
702
- },
703
- onAdDismissed: () => {
704
- onEvent({ type: "dismissed" });
705
- },
706
- onAdFailedToShow: () => {
707
- onEvent({ type: "failedToShow" });
708
- },
709
- onAdImpression: () => {
710
- onEvent({ type: "impression" });
711
- },
712
- onAdShow: () => {
713
- onEvent({ type: "show" });
714
- },
715
- onUserEarnedReward: () => {
716
- onEvent({ type: "userEarnedReward" });
717
- },
718
- onSuccess: (result) => onEvent({ type: "loaded", data: result }),
719
- onError
720
- });
721
- return unregisterCallbacks;
722
- }
723
- function showAdMobRewardedAd(params) {
724
- if (!showAdMobRewardedAd.isSupported()) {
725
- params.onError(new Error(UNSUPPORTED_ERROR_MESSAGE));
726
- return noop;
727
- }
728
- const { onEvent, onError, options } = params;
729
- const unregisterCallbacks = INTERNAL__appBridgeHandler.invokeAppBridgeMethod("showAdMobRewardedAd", options, {
730
- onSuccess: () => onEvent({ type: "requested" }),
731
- onError
732
- });
733
- return unregisterCallbacks;
734
- }
735
- var ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION = "5.209.0";
736
- var IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION = "5.209.0";
737
- var UNSUPPORTED_ERROR_MESSAGE = "This feature is not supported in the current environment";
738
- var ENVIRONMENT = getOperationalEnvironment();
739
- function createIsSupported() {
740
- return () => {
741
- if (ENVIRONMENT !== "toss") {
742
- console.warn("Google AdMob is not supported in the current environment");
743
- return false;
744
- }
745
- return isMinVersionSupported({
746
- android: ANDROID_GOOGLE_AD_MOB_SUPPORTED_VERSION,
747
- ios: IOS_GOOGLE_AD_MOB_SUPPORTED_VERSION
748
- });
749
- };
750
- }
751
- loadAdMobInterstitialAd.isSupported = createIsSupported();
752
- loadAdMobRewardedAd.isSupported = createIsSupported();
753
- showAdMobInterstitialAd.isSupported = createIsSupported();
754
- showAdMobRewardedAd.isSupported = createIsSupported();
755
-
756
- // src/native-modules/getTossAppVersion.ts
757
- function getTossAppVersion() {
758
- return AppsInTossModule.tossAppVersion;
759
- }
760
-
761
- // src/native-modules/getDeviceId.ts
762
- function getDeviceId() {
763
- return AppsInTossModule.deviceId;
764
- }
765
-
766
- // src/native-modules/storage.ts
767
- function getItem(key) {
768
- return AppsInTossModule.getStorageItem({ key });
769
- }
770
- function setItem(key, value) {
771
- return AppsInTossModule.setStorageItem({
772
- key,
773
- value
774
- });
775
- }
776
- function removeItem(key) {
777
- return AppsInTossModule.removeStorageItem({ key });
778
- }
779
- function clearItems() {
780
- return AppsInTossModule.clearStorage({});
781
- }
782
- var Storage = {
783
- getItem,
784
- setItem,
785
- removeItem,
786
- clearItems
787
- };
788
-
789
- // src/native-modules/index.ts
790
- var TossPay = {
791
- checkoutPayment
792
- };
793
- var GoogleAdMob = {
794
- loadAdMobInterstitialAd,
795
- showAdMobInterstitialAd,
796
- loadAdMobRewardedAd,
797
- showAdMobRewardedAd
798
- };
799
-
800
1349
  // src/components/WebView.tsx
801
- var import_react_native14 = require("@toss-design-system/react-native");
1350
+ var import_react_native39 = require("@granite-js/react-native");
1351
+ var graniteAsyncBridges = __toESM(require("@granite-js/react-native/async-bridges"), 1);
1352
+ var graniteConstantBridges = __toESM(require("@granite-js/react-native/constant-bridges"), 1);
1353
+ var import_react_native40 = require("@toss-design-system/react-native");
802
1354
  var import_private = require("@toss-design-system/react-native/private");
803
1355
  var import_react6 = require("react");
804
- var import_react_native_bedrock10 = require("react-native-bedrock");
805
- var bedrockAsyncBridges = __toESM(require("react-native-bedrock/async-bridges"), 1);
806
- var bedrockConstantBridges = __toESM(require("react-native-bedrock/constant-bridges"), 1);
807
1356
 
808
1357
  // src/components/GameWebView.tsx
809
- var import_react_native_webview = require("@react-native-bedrock/native/react-native-webview");
810
- var import_react_native12 = require("@toss-design-system/react-native");
1358
+ var import_react_native_webview = require("@granite-js/native/react-native-webview");
1359
+ var import_react_native35 = require("@granite-js/react-native");
1360
+ var import_react_native36 = require("@toss-design-system/react-native");
811
1361
  var import_es_hangul = require("es-hangul");
812
1362
  var import_react4 = require("react");
813
- var import_react_native13 = require("react-native");
814
- var import_react_native_bedrock8 = require("react-native-bedrock");
1363
+ var import_react_native37 = require("react-native");
815
1364
 
816
1365
  // src/components/GameWebViewNavigationBar/GameNavigationBar.tsx
817
- var import_react_native_svg = require("@react-native-bedrock/native/react-native-svg");
818
- var import_react_native10 = require("@toss-design-system/react-native");
819
- var import_react_native11 = require("react-native");
1366
+ var import_react_native_svg = require("@granite-js/native/react-native-svg");
1367
+ var import_react_native33 = require("@toss-design-system/react-native");
1368
+ var import_react_native34 = require("react-native");
820
1369
 
821
1370
  // src/components/GameWebViewNavigationBar/HeaderRight.tsx
822
- var import_react_native8 = require("react-native");
1371
+ var import_react_native31 = require("react-native");
823
1372
 
824
1373
  // src/components/GameWebViewNavigationBar/byPlatform.ts
825
- var import_react_native7 = require("react-native");
1374
+ var import_react_native30 = require("react-native");
826
1375
  function byPlatform({
827
1376
  ...props
828
1377
  }) {
829
- return (props[import_react_native7.Platform.OS] ?? props.fallback)();
1378
+ return (props[import_react_native30.Platform.OS] ?? props.fallback)();
830
1379
  }
831
1380
 
832
1381
  // src/components/GameWebViewNavigationBar/constants.ts
@@ -836,10 +1385,10 @@ var IOS_DEFAULT_MARGIN = 20;
836
1385
  // src/components/GameWebViewNavigationBar/HeaderRight.tsx
837
1386
  var import_jsx_runtime2 = require("react/jsx-runtime");
838
1387
  function IOSHeaderRight(props) {
839
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_native8.View, { style: styles.ios, ...props });
1388
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_native31.View, { style: styles.ios, ...props });
840
1389
  }
841
1390
  function AndroidHeaderRight(props) {
842
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_native8.View, { style: styles.android, ...props });
1391
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_native31.View, { style: styles.android, ...props });
843
1392
  }
844
1393
  function HeaderRight(props) {
845
1394
  return byPlatform({
@@ -848,7 +1397,7 @@ function HeaderRight(props) {
848
1397
  fallback: () => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(IOSHeaderRight, { ...props })
849
1398
  });
850
1399
  }
851
- var styles = import_react_native8.StyleSheet.create({
1400
+ var styles = import_react_native31.StyleSheet.create({
852
1401
  ios: {
853
1402
  marginRight: -IOS_DEFAULT_MARGIN + RIGHT_MARGIN,
854
1403
  flexDirection: "row"
@@ -859,11 +1408,11 @@ var styles = import_react_native8.StyleSheet.create({
859
1408
  });
860
1409
 
861
1410
  // src/components/GameWebViewNavigationBar/useSafeAreaTop.ts
862
- var import_react_native_safe_area_context = require("@react-native-bedrock/native/react-native-safe-area-context");
863
- var import_react_native9 = require("react-native");
1411
+ var import_react_native_safe_area_context = require("@granite-js/native/react-native-safe-area-context");
1412
+ var import_react_native32 = require("react-native");
864
1413
  function useSafeAreaTop() {
865
1414
  const safeAreaInsets = (0, import_react_native_safe_area_context.useSafeAreaInsets)();
866
- const hasDynamicIsland = import_react_native9.Platform.OS === "ios" && safeAreaInsets.top > 50;
1415
+ const hasDynamicIsland = import_react_native32.Platform.OS === "ios" && safeAreaInsets.top > 50;
867
1416
  const safeAreaTop = hasDynamicIsland ? safeAreaInsets.top - 5 : safeAreaInsets.top;
868
1417
  return safeAreaTop;
869
1418
  }
@@ -874,31 +1423,31 @@ var originXML = '<svg fill="none" height="30" viewBox="0 0 30 30" width="30" xml
874
1423
  function GameNavigationBar({ onClose }) {
875
1424
  const safeAreaTop = useSafeAreaTop();
876
1425
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
877
- /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native10.PageNavbar, { preference: { type: "none" } }),
1426
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native33.PageNavbar, { preference: { type: "none" } }),
878
1427
  /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
879
- import_react_native11.View,
1428
+ import_react_native34.View,
880
1429
  {
881
1430
  style: {
882
1431
  width: "100%",
883
- height: import_react_native11.Platform.OS === "ios" ? 44 : 54,
1432
+ height: import_react_native34.Platform.OS === "ios" ? 44 : 54,
884
1433
  flexDirection: "row",
885
1434
  alignItems: "center",
886
1435
  justifyContent: "flex-end",
887
1436
  position: "absolute",
888
1437
  zIndex: 9999,
889
1438
  marginTop: safeAreaTop,
890
- paddingRight: import_react_native11.Platform.OS === "ios" ? 10 : 8
1439
+ paddingRight: import_react_native34.Platform.OS === "ios" ? 10 : 8
891
1440
  },
892
1441
  pointerEvents: "box-none",
893
1442
  children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(HeaderRight, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
894
- import_react_native11.TouchableOpacity,
1443
+ import_react_native34.TouchableOpacity,
895
1444
  {
896
1445
  hitSlop: { left: 8, right: 8 },
897
1446
  accessibilityRole: "button",
898
1447
  accessible: true,
899
1448
  accessibilityLabel: "\uAC8C\uC784\uC885\uB8CC",
900
1449
  style: {
901
- padding: import_react_native11.Platform.OS === "ios" ? 7 : 9
1450
+ padding: import_react_native34.Platform.OS === "ios" ? 7 : 9
902
1451
  },
903
1452
  onPress: onClose,
904
1453
  children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_native_svg.SvgXml, { xml: originXML, width: 30, height: 30 })
@@ -912,7 +1461,7 @@ function GameNavigationBar({ onClose }) {
912
1461
  // src/components/GameWebView.tsx
913
1462
  var import_jsx_runtime4 = require("react/jsx-runtime");
914
1463
  var GameWebView = (0, import_react4.forwardRef)(function GameWebView2(props, ref) {
915
- const { openConfirm } = (0, import_react_native12.useDialog)();
1464
+ const { openConfirm } = (0, import_react_native36.useDialog)();
916
1465
  const { brandDisplayName } = getAppsInTossGlobals();
917
1466
  const handleClose = (0, import_react4.useCallback)(async () => {
918
1467
  const isConfirmed = await openConfirm({
@@ -922,14 +1471,14 @@ var GameWebView = (0, import_react4.forwardRef)(function GameWebView2(props, ref
922
1471
  closeOnDimmerClick: true
923
1472
  });
924
1473
  if (isConfirmed) {
925
- (0, import_react_native_bedrock8.closeView)();
1474
+ (0, import_react_native35.closeView)();
926
1475
  }
927
1476
  }, [brandDisplayName, openConfirm]);
928
1477
  (0, import_react4.useEffect)(() => {
929
- if (import_react_native13.Platform.OS === "ios") {
930
- (0, import_react_native_bedrock8.setIosSwipeGestureEnabled)({ isEnabled: false });
1478
+ if (import_react_native37.Platform.OS === "ios") {
1479
+ setIosSwipeGestureEnabled({ isEnabled: false });
931
1480
  return () => {
932
- (0, import_react_native_bedrock8.setIosSwipeGestureEnabled)({ isEnabled: true });
1481
+ setIosSwipeGestureEnabled({ isEnabled: true });
933
1482
  };
934
1483
  }
935
1484
  return;
@@ -939,14 +1488,14 @@ var GameWebView = (0, import_react4.forwardRef)(function GameWebView2(props, ref
939
1488
  handleClose();
940
1489
  return true;
941
1490
  };
942
- import_react_native13.BackHandler.addEventListener("hardwareBackPress", backHandler);
1491
+ import_react_native37.BackHandler.addEventListener("hardwareBackPress", backHandler);
943
1492
  return () => {
944
- import_react_native13.BackHandler.removeEventListener("hardwareBackPress", backHandler);
1493
+ import_react_native37.BackHandler.removeEventListener("hardwareBackPress", backHandler);
945
1494
  };
946
1495
  }, [handleClose]);
947
1496
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
948
1497
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(GameNavigationBar, { onClose: handleClose }),
949
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native13.View, { style: { flex: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native_webview.WebView, { ref, ...props }) })
1498
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native37.View, { style: { flex: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_native_webview.WebView, { ref, ...props }) })
950
1499
  ] });
951
1500
  });
952
1501
 
@@ -983,12 +1532,12 @@ function methodHandler({
983
1532
  };
984
1533
  wrappedFunc(...args).then((result) => {
985
1534
  injectJavaScript?.(`
986
- window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/resolve/${eventId}', ${JSON.stringify(result, null, 0)});
1535
+ window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/resolve/${eventId}', ${JSON.stringify(result, null, 0)});
987
1536
  `);
988
1537
  }).catch((error) => {
989
1538
  const serializedError = serializeError(error);
990
1539
  injectJavaScript?.(`
991
- window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/reject/${eventId}', ${serializedError});
1540
+ window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/reject/${eventId}', ${serializedError});
992
1541
  `);
993
1542
  });
994
1543
  }
@@ -1019,12 +1568,12 @@ function useBridgeHandler({
1019
1568
  );
1020
1569
  const createHandleOnEvent = (functionName, eventId) => (response) => {
1021
1570
  ref.current?.injectJavaScript(`
1022
- window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/onEvent/${eventId}', ${JSON.stringify(response, null, 0)});
1571
+ window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onEvent/${eventId}', ${JSON.stringify(response, null, 0)});
1023
1572
  `);
1024
1573
  };
1025
1574
  const createHandleOnError = (functionName, eventId) => (error) => {
1026
1575
  ref.current?.injectJavaScript(`
1027
- window.__BEDROCK_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${JSON.stringify(error, null, 0)});
1576
+ window.__GRANITE_NATIVE_EMITTER.emit('${functionName}/onError/${eventId}', ${JSON.stringify(error, null, 0)});
1028
1577
  `);
1029
1578
  };
1030
1579
  const $onMessage = (0, import_react5.useCallback)(
@@ -1077,22 +1626,8 @@ function useBridgeHandler({
1077
1626
  };
1078
1627
  }
1079
1628
 
1080
- // src/constant-bridges.ts
1081
- var constant_bridges_exports = {};
1082
- __export(constant_bridges_exports, {
1083
- getDeviceId: () => getDeviceId,
1084
- getOperationalEnvironment: () => getOperationalEnvironment,
1085
- getTossAppVersion: () => getTossAppVersion
1086
- });
1087
-
1088
- // src/event-bridges.ts
1089
- var event_bridges_exports = {};
1090
- __export(event_bridges_exports, {
1091
- startUpdateLocation: () => startUpdateLocation
1092
- });
1093
-
1094
1629
  // src/utils/log.ts
1095
- var import_react_native_bedrock9 = require("react-native-bedrock");
1630
+ var import_react_native38 = require("@granite-js/react-native");
1096
1631
 
1097
1632
  // src/utils/extractDateFromUUIDv7.ts
1098
1633
  var extractDateFromUUIDv7 = (uuid) => {
@@ -1118,7 +1653,7 @@ var getGroupId = (url) => {
1118
1653
  };
1119
1654
  var getReferrer = () => {
1120
1655
  try {
1121
- const referrer = new URL((0, import_react_native_bedrock9.getSchemeUri)());
1656
+ const referrer = new URL((0, import_react_native38.getSchemeUri)());
1122
1657
  return referrer.searchParams.get("referrer");
1123
1658
  } catch {
1124
1659
  return "";
@@ -1142,16 +1677,16 @@ var trackScreen = (url) => {
1142
1677
  // src/components/WebView.tsx
1143
1678
  var import_jsx_runtime5 = require("react/jsx-runtime");
1144
1679
  var appsInTossGlobals = getAppsInTossGlobals();
1145
- var operationalEnvironment = getOperationalEnvironment();
1680
+ var operationalEnvironment = getOperationalEnvironment2();
1146
1681
  var TYPES = ["partner", "external", "game"];
1147
1682
  var WEBVIEW_TYPES = {
1148
- partner: import_react_native14.PartnerWebViewScreen,
1149
- external: import_react_native14.ExternalWebViewScreen,
1683
+ partner: import_react_native40.PartnerWebViewScreen,
1684
+ external: import_react_native40.ExternalWebViewScreen,
1150
1685
  game: GameWebView
1151
1686
  };
1152
1687
  function mergeSchemeQueryParamsInto(url) {
1153
1688
  const baseUrl = new URL(url);
1154
- const schemeUrl = new URL((0, import_react_native_bedrock10.getSchemeUri)());
1689
+ const schemeUrl = new URL((0, import_react_native39.getSchemeUri)());
1155
1690
  baseUrl.pathname = schemeUrl.pathname;
1156
1691
  for (const [key, value] of schemeUrl.searchParams.entries()) {
1157
1692
  baseUrl.searchParams.set(key, value);
@@ -1175,7 +1710,7 @@ function WebView({ type, local, onMessage, ...props }) {
1175
1710
  if (!TYPES.includes(type)) {
1176
1711
  throw new Error(`Invalid WebView type: '${type}'`);
1177
1712
  }
1178
- const bedrockEvent = (0, import_react_native_bedrock10.useBedrockEvent)();
1713
+ const graniteEvent = (0, import_react_native39.useGraniteEvent)();
1179
1714
  const uri = (0, import_react6.useMemo)(() => getWebViewUri(local), [local]);
1180
1715
  const top = (0, import_private.useSafeAreaTop)();
1181
1716
  const bottom = (0, import_private.useSafeAreaBottom)();
@@ -1184,7 +1719,7 @@ function WebView({ type, local, onMessage, ...props }) {
1184
1719
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1185
1720
  eventListenerMap: {
1186
1721
  ...event_bridges_exports,
1187
- backEvent: ({ onEvent, onError, options }) => bedrockEvent.addEventListener("backEvent", { onEvent, onError, options }),
1722
+ backEvent: ({ onEvent, onError, options }) => graniteEvent.addEventListener("backEvent", { onEvent, onError, options }),
1188
1723
  entryMessageExited: ({ onEvent, onError }) => appsInTossEvent.addEventListener("entryMessageExited", { onEvent, onError }),
1189
1724
  updateLocationEvent: ({ onEvent, onError, options }) => appsInTossEvent.addEventListener("updateLocationEvent", { onEvent, onError, options }),
1190
1725
  /** @internal */
@@ -1196,7 +1731,7 @@ function WebView({ type, local, onMessage, ...props }) {
1196
1731
  showAdMobRewardedAd: GoogleAdMob.showAdMobRewardedAd
1197
1732
  },
1198
1733
  constantHandlerMap: {
1199
- ...bedrockConstantBridges,
1734
+ ...graniteConstantBridges,
1200
1735
  ...constant_bridges_exports,
1201
1736
  getSafeAreaTop: () => top,
1202
1737
  getSafeAreaBottom: () => bottom,
@@ -1209,7 +1744,7 @@ function WebView({ type, local, onMessage, ...props }) {
1209
1744
  getDeploymentId: env.getDeploymentId
1210
1745
  },
1211
1746
  asyncHandlerMap: {
1212
- ...bedrockAsyncBridges,
1747
+ ...graniteAsyncBridges,
1213
1748
  ...async_bridges_exports,
1214
1749
  /** internal */
1215
1750
  openPermissionDialog: AppsInTossModule.openPermissionDialog,
@@ -1281,10 +1816,10 @@ function ensureValue(value, name) {
1281
1816
  }
1282
1817
 
1283
1818
  // src/hooks/useGeolocation.ts
1819
+ var import_react_native41 = require("@granite-js/react-native");
1284
1820
  var import_react7 = require("react");
1285
- var import_react_native_bedrock11 = require("react-native-bedrock");
1286
1821
  function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
1287
- const isVisible = (0, import_react_native_bedrock11.useVisibility)();
1822
+ const isVisible = (0, import_react_native41.useVisibility)();
1288
1823
  const [location, setLocation] = (0, import_react7.useState)(null);
1289
1824
  (0, import_react7.useEffect)(() => {
1290
1825
  if (!isVisible) {
@@ -1303,17 +1838,6 @@ function useGeolocation({ accuracy, distanceInterval, timeInterval }) {
1303
1838
  return location;
1304
1839
  }
1305
1840
 
1306
- // src/types.ts
1307
- var Accuracy2 = /* @__PURE__ */ ((Accuracy3) => {
1308
- Accuracy3[Accuracy3["Lowest"] = 1] = "Lowest";
1309
- Accuracy3[Accuracy3["Low"] = 2] = "Low";
1310
- Accuracy3[Accuracy3["Balanced"] = 3] = "Balanced";
1311
- Accuracy3[Accuracy3["High"] = 4] = "High";
1312
- Accuracy3[Accuracy3["Highest"] = 5] = "Highest";
1313
- Accuracy3[Accuracy3["BestForNavigation"] = 6] = "BestForNavigation";
1314
- return Accuracy3;
1315
- })(Accuracy2 || {});
1316
-
1317
1841
  // src/index.ts
1318
1842
  __reExport(src_exports, require("@apps-in-toss/analytics"), module.exports);
1319
1843
  var Analytics2 = {
@@ -1327,25 +1851,43 @@ var Analytics2 = {
1327
1851
  Accuracy,
1328
1852
  Analytics,
1329
1853
  AppsInToss,
1854
+ AppsInTossModule,
1855
+ BedrockCoreModule,
1856
+ BedrockModule,
1330
1857
  GoogleAdMob,
1858
+ INTERNAL__AppsInTossModule,
1859
+ INTERNAL__module,
1331
1860
  Storage,
1332
1861
  TossPay,
1333
1862
  WebView,
1334
1863
  appLogin,
1335
1864
  appsInTossEvent,
1865
+ closeView,
1336
1866
  env,
1337
1867
  eventLog,
1338
1868
  fetchAlbumPhotos,
1339
1869
  fetchContacts,
1870
+ generateHapticFeedback,
1340
1871
  getClipboardText,
1341
1872
  getCurrentLocation,
1342
1873
  getDeviceId,
1874
+ getLocale,
1875
+ getNetworkStatus,
1343
1876
  getOperationalEnvironment,
1877
+ getPlatformOS,
1878
+ getSchemeUri,
1344
1879
  getTossAppVersion,
1345
1880
  getTossShareLink,
1346
1881
  isMinVersionSupported,
1347
1882
  openCamera,
1883
+ openURL,
1884
+ saveBase64Data,
1348
1885
  setClipboardText,
1886
+ setDeviceOrientation,
1887
+ setIosSwipeGestureEnabled,
1888
+ setScreenAwakeMode,
1889
+ setSecureScreen,
1890
+ share,
1349
1891
  startUpdateLocation,
1350
1892
  useGeolocation,
1351
1893
  ...require("@apps-in-toss/analytics")