@react-native-kakao/navi 3.1.0 → 3.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,60 @@
1
1
  # Change Log
2
2
 
3
+ ## 3.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - dabddfa: Expose native navigation and destination-sharing URL builders without launching Kakao Navi.
8
+ - 1efca29: Expose Kakao Talk sharing availability and Kakao Navi installation checks on Android and iOS, with explicit false results on web.
9
+
10
+ ### Patch Changes
11
+
12
+ - 109b2f3: Preserve optional boolean values when forwarding iOS navigation and web-install options to Swift.
13
+ - Updated dependencies [d5c5fb8]
14
+ - Updated dependencies [3027207]
15
+ - Updated dependencies [dfd32ca]
16
+ - Updated dependencies [2b223bf]
17
+ - Updated dependencies [20c253b]
18
+ - Updated dependencies [67cd4e2]
19
+ - Updated dependencies [d81f9b7]
20
+ - Updated dependencies [3260517]
21
+ - @react-native-kakao/core@3.2.0
22
+
23
+ ## 3.1.0-next.2
24
+
25
+ ### Patch Changes
26
+
27
+ - 109b2f3: Preserve optional boolean values when forwarding iOS navigation and web-install options to Swift.
28
+ - @react-native-kakao/core@3.1.0-next.2
29
+
30
+ ## 3.1.0-next.1
31
+
32
+ ### Minor Changes
33
+
34
+ - dabddfa: Expose native navigation and destination-sharing URL builders without launching Kakao Navi.
35
+ - 1efca29: Expose Kakao Talk sharing availability and Kakao Navi installation checks on Android and iOS, with explicit false results on web.
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [d5c5fb8]
40
+ - Updated dependencies [3027207]
41
+ - Updated dependencies [dfd32ca]
42
+ - Updated dependencies [2b223bf]
43
+ - Updated dependencies [67cd4e2]
44
+ - Updated dependencies [d81f9b7]
45
+ - @react-native-kakao/core@3.1.0-next.1
46
+
47
+ ## 3.1.0-next.0
48
+
49
+ ### Patch Changes
50
+
51
+ - 4772981: Use `reactApplicationContext.currentActivity` in the Android modules instead of the bare `currentActivity` getter, so they compile on React Native releases where `ReactContextBaseJavaModule` no longer exposes it to Kotlin subclasses.
52
+ - 71700aa: Align web SDK options, response shapes, timestamps, and session errors with native APIs.
53
+ - Updated dependencies [20c253b]
54
+ - Updated dependencies [3260517]
55
+ - Updated dependencies [71700aa]
56
+ - @react-native-kakao/core@3.1.0-next.0
57
+
3
58
  ## 3.1.0
4
59
 
5
60
  ### Patch Changes
@@ -9,6 +64,7 @@
9
64
  - Updated dependencies [3afe0d3]
10
65
  - @react-native-kakao/core@3.1.0
11
66
 
67
+
12
68
  ## 3.0.0
13
69
 
14
70
  ### Major Changes
@@ -31,6 +31,32 @@ import net.mjstudio.rnkakao.core.util.rejectWith
31
31
  class RNCKakaoNaviModule internal constructor(
32
32
  context: ReactApplicationContext,
33
33
  ) : NativeKakaoNaviSpec(context) {
34
+ @ReactMethod
35
+ override fun isKakaoNaviInstalled(promise: Promise) =
36
+ onMain {
37
+ promise.resolve(NaviClient.instance.isKakaoNaviInstalled(reactApplicationContext))
38
+ }
39
+
40
+ @ReactMethod
41
+ override fun makeNaviUrl(
42
+ destination: ReadableMap,
43
+ isShare: Boolean,
44
+ option: ReadableMap?,
45
+ viaList: ReadableArray?,
46
+ promise: Promise,
47
+ ) = onMain {
48
+ runCatching {
49
+ val stops = viaList?.filterIsReadableMap()?.map { it.toLocation() }
50
+ val intent =
51
+ if (isShare) {
52
+ NaviClient.instance.shareDestinationIntent(destination.toLocation(), option?.toOption(), stops)
53
+ } else {
54
+ NaviClient.instance.navigateIntent(destination.toLocation(), option?.toOption(), stops)
55
+ }
56
+ checkNotNull(intent.dataString) { "Failed to create Navi URL" }
57
+ }.onSuccess { promise.resolve(it) }.onFailure { promise.rejectWith(it) }
58
+ }
59
+
34
60
  @ReactMethod
35
61
  override fun navigateOrShareTo(
36
62
  destination: ReadableMap,
@@ -12,6 +12,22 @@
12
12
 
13
13
  RCT_EXPORT_MODULE()
14
14
 
15
+ RCT_EXPORT_METHOD(isKakaoNaviInstalled : (RCTPromiseResolveBlock)
16
+ resolve reject : (RCTPromiseRejectBlock)reject) {
17
+ [[self manager] isKakaoNaviInstalled:resolve];
18
+ }
19
+
20
+ RCT_EXPORT_METHOD(makeNaviUrl : (NSDictionary*)destination isShare : (BOOL)isShare option : (
21
+ NSDictionary*)option viaList : (NSArray*)viaList resolve : (RCTPromiseResolveBlock)
22
+ resolve reject : (RCTPromiseRejectBlock)reject) {
23
+ [[self manager] makeNaviUrl:destination
24
+ isShare:isShare
25
+ option:option
26
+ viaList:viaList
27
+ resolve:resolve
28
+ reject:reject];
29
+ }
30
+
15
31
  RCT_EXPORT_METHOD(navigateOrShareTo : (NSDictionary*)destination option : (NSDictionary*)
16
32
  option viaList : (NSArray*)viaList openWebInstallUrlIfNaviAppNotAvailable : (
17
33
  NSNumber*)openWebInstallUrlIfNaviAppNotAvailable isShare : (NSNumber*)
@@ -20,8 +36,8 @@ RCT_EXPORT_METHOD(navigateOrShareTo : (NSDictionary*)destination option : (NSDic
20
36
  [[self manager] navigateOrShareTo:destination
21
37
  option:option
22
38
  viaList:viaList
23
- openWebInstallUrlIfNaviAppNotAvailable:openWebInstallUrlIfNaviAppNotAvailable
24
- isShare:isShare
39
+ openWebInstallUrlIfNaviAppNotAvailable:[openWebInstallUrlIfNaviAppNotAvailable boolValue]
40
+ isShare:[isShare boolValue]
25
41
  resolve:resolve
26
42
  reject:reject];
27
43
  }
@@ -2,10 +2,41 @@ import Foundation
2
2
  import KakaoSDKNavi
3
3
  import React
4
4
  import RNCKakaoCore
5
+ import UIKit
6
+
7
+ private let naviUrlCreationErrorMessage = "Failed to create Navi URL"
5
8
 
6
9
  @objc public class RNCKakaoNaviManager: NSObject {
7
10
  @objc public static let shared = RNCKakaoNaviManager()
8
11
 
12
+ @objc public func isKakaoNaviInstalled(_ resolve: @escaping RCTPromiseResolveBlock) {
13
+ onMain {
14
+ resolve(UIApplication.shared.canOpenURL(URL(string: "kakaonavi-sdk://")!))
15
+ }
16
+ }
17
+
18
+ @objc public func makeNaviUrl(
19
+ _ dest: [String: Any],
20
+ isShare: Bool,
21
+ option opts: [String: Any]?,
22
+ viaList via: [[String: Any]]?,
23
+ resolve: @escaping RCTPromiseResolveBlock,
24
+ reject: @escaping RCTPromiseRejectBlock
25
+ ) {
26
+ onMain {
27
+ guard let url = createNaviUrl(
28
+ destination: dest,
29
+ option: opts,
30
+ viaList: via,
31
+ isShare: isShare
32
+ ) else {
33
+ RNCKakaoUtil.reject(reject, RNCKakaoError.unknown(naviUrlCreationErrorMessage))
34
+ return
35
+ }
36
+ resolve(url.absoluteString)
37
+ }
38
+ }
39
+
9
40
  @objc public func navigateOrShareTo(
10
41
  _ dest: [String: Any],
11
42
  option opts: [String: Any]?,
@@ -16,16 +47,10 @@ import RNCKakaoCore
16
47
  reject: @escaping RCTPromiseRejectBlock
17
48
  ) {
18
49
  onMain {
19
- guard let navigateUrl = isShare ? NaviApi.shared.shareUrl(
20
- destination: createLocation(dest),
21
- option: createOption(options: opts),
22
- viaList: via?.map { createLocation($0) }
23
- ) : NaviApi.shared.navigateUrl(
24
- destination: createLocation(dest),
25
- option: createOption(options: opts),
26
- viaList: via?.map { createLocation($0) }
50
+ guard let navigateUrl = createNaviUrl(
51
+ destination: dest, option: opts, viaList: via, isShare: isShare
27
52
  ) else {
28
- RNCKakaoUtil.reject(reject, RNCKakaoError.unknown("Failed to create construct navigateUrl"))
53
+ RNCKakaoUtil.reject(reject, RNCKakaoError.unknown(naviUrlCreationErrorMessage))
29
54
  return
30
55
  }
31
56
 
@@ -55,6 +80,20 @@ import RNCKakaoCore
55
80
  }
56
81
  }
57
82
 
83
+ private func createNaviUrl(
84
+ destination: [String: Any],
85
+ option: [String: Any]?,
86
+ viaList: [[String: Any]]?,
87
+ isShare: Bool
88
+ ) -> URL? {
89
+ let destination = createLocation(destination)
90
+ let option = createOption(options: option)
91
+ let viaList = viaList?.map { createLocation($0) }
92
+ return isShare
93
+ ? NaviApi.shared.shareUrl(destination: destination, option: option, viaList: viaList)
94
+ : NaviApi.shared.navigateUrl(destination: destination, option: option, viaList: viaList)
95
+ }
96
+
58
97
  private func createOption(options: [String: Any]?) -> NaviOption? {
59
98
  guard let options else { return nil }
60
99
 
@@ -4,10 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ exports.getNavigateUrl = getNavigateUrl;
8
+ exports.getShareUrl = getShareUrl;
9
+ exports.isKakaoNaviInstalled = isKakaoNaviInstalled;
7
10
  exports.navigateTo = navigateTo;
8
11
  exports.shareTo = shareTo;
12
+ var _core = require("@react-native-kakao/core");
9
13
  var _NativeKakaoNavi = _interopRequireDefault(require("./spec/NativeKakaoNavi"));
10
14
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ function isKakaoNaviInstalled() {
16
+ return _NativeKakaoNavi.default.isKakaoNaviInstalled();
17
+ }
18
+ function getNavigateUrl(params) {
19
+ return makeNaviUrl(params, false);
20
+ }
21
+ function getShareUrl(params) {
22
+ return makeNaviUrl(params, true);
23
+ }
24
+ async function makeNaviUrl({
25
+ destination,
26
+ option,
27
+ viaList
28
+ }, isShare) {
29
+ (0, _core.kAssert)(viaList == null || viaList.length <= 3, 'viaList must contain at most 3 stops.');
30
+ return _NativeKakaoNavi.default.makeNaviUrl(destination, isShare, option, viaList);
31
+ }
11
32
  function navigateTo({
12
33
  destination,
13
34
  option,
@@ -25,6 +46,9 @@ function shareTo({
25
46
  return _NativeKakaoNavi.default.navigateOrShareTo(destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable ?? true, true);
26
47
  }
27
48
  const KakaoNavi = {
49
+ isKakaoNaviInstalled,
50
+ getNavigateUrl,
51
+ getShareUrl,
28
52
  navigateTo,
29
53
  shareTo
30
54
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_NativeKakaoNavi","_interopRequireDefault","require","e","__esModule","default","navigateTo","destination","option","viaList","openWebInstallUrlIfNaviAppNotAvailable","Native","navigateOrShareTo","shareTo","KakaoNavi","_default","exports"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;AACA,IAAAA,gBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA4C,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAIrC,SAASG,UAAUA,CAAC;EACzBC,WAAW;EACXC,MAAM;EACNC,OAAO;EACPC;AAMF,CAAC,EAAoB;EACnB,OAAOC,wBAAM,CAACC,iBAAiB,CAC7BL,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,sCAAsC,IAAI,IAAI,EAC9C,KACF,CAAC;AACH;AAEO,SAASG,OAAOA,CAAC;EACtBN,WAAW;EACXC,MAAM;EACNC,OAAO;EACPC;AAMF,CAAC,EAAoB;EACnB,OAAOC,wBAAM,CAACC,iBAAiB,CAC7BL,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,sCAAsC,IAAI,IAAI,EAC9C,IACF,CAAC;AACH;AAEA,MAAMI,SAAS,GAAG;EAAER,UAAU;EAAEO;AAAQ,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAX,OAAA,GAC3BS,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["_core","require","_NativeKakaoNavi","_interopRequireDefault","e","__esModule","default","isKakaoNaviInstalled","Native","getNavigateUrl","params","makeNaviUrl","getShareUrl","destination","option","viaList","isShare","kAssert","length","navigateTo","openWebInstallUrlIfNaviAppNotAvailable","navigateOrShareTo","shareTo","KakaoNavi","_default","exports"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAOA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA4C,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQrC,SAASG,oBAAoBA,CAAA,EAAqB;EACvD,OAAOC,wBAAM,CAACD,oBAAoB,CAAC,CAAC;AACtC;AAEO,SAASE,cAAcA,CAACC,MAA4B,EAAmB;EAC5E,OAAOC,WAAW,CAACD,MAAM,EAAE,KAAK,CAAC;AACnC;AAEO,SAASE,WAAWA,CAACF,MAA4B,EAAmB;EACzE,OAAOC,WAAW,CAACD,MAAM,EAAE,IAAI,CAAC;AAClC;AAEA,eAAeC,WAAWA,CACxB;EAAEE,WAAW;EAAEC,MAAM;EAAEC;AAA8B,CAAC,EACtDC,OAAgB,EAChB;EACA,IAAAC,aAAO,EAACF,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACG,MAAM,IAAI,CAAC,EAAE,uCAAuC,CAAC;EAExF,OAAOV,wBAAM,CAACG,WAAW,CAACE,WAAW,EAAEG,OAAO,EAAEF,MAAM,EAAEC,OAAO,CAAC;AAClE;AAEO,SAASI,UAAUA,CAAC;EACzBN,WAAW;EACXC,MAAM;EACNC,OAAO;EACPK;AAMF,CAAC,EAAoB;EACnB,OAAOZ,wBAAM,CAACa,iBAAiB,CAC7BR,WAAW,EACXC,MAAM,EACNC,OAAO,EACPK,sCAAsC,IAAI,IAAI,EAC9C,KACF,CAAC;AACH;AAEO,SAASE,OAAOA,CAAC;EACtBT,WAAW;EACXC,MAAM;EACNC,OAAO;EACPK;AAMF,CAAC,EAAoB;EACnB,OAAOZ,wBAAM,CAACa,iBAAiB,CAC7BR,WAAW,EACXC,MAAM,EACNC,OAAO,EACPK,sCAAsC,IAAI,IAAI,EAC9C,IACF,CAAC;AACH;AAEA,MAAMG,SAAS,GAAG;EAAEhB,oBAAoB;EAAEE,cAAc;EAAEG,WAAW;EAAEO,UAAU;EAAEG;AAAQ,CAAC;AAAC,IAAAE,QAAA,GAAAC,OAAA,CAAAnB,OAAA,GAC9EiB,SAAS","ignoreList":[]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.shareTo = exports.navigateTo = exports.default = void 0;
6
+ exports.shareTo = exports.navigateTo = exports.isKakaoNaviInstalled = exports.getShareUrl = exports.getNavigateUrl = exports.default = void 0;
7
7
  var _jsUtil = require("@mj-studio/js-util");
8
8
  var _core = require("@react-native-kakao/core");
9
9
  function getVehicleType(v) {
@@ -58,6 +58,9 @@ function getRpOption(v) {
58
58
  return 100;
59
59
  }
60
60
  const KakaoNavi = {
61
+ isKakaoNaviInstalled: async () => false,
62
+ getNavigateUrl: unsupportedUrlBuilder,
63
+ getShareUrl: unsupportedUrlBuilder,
61
64
  navigateTo: async ({
62
65
  viaList,
63
66
  destination,
@@ -114,14 +117,26 @@ const KakaoNavi = {
114
117
  }
115
118
  }
116
119
  };
120
+ async function unsupportedUrlBuilder() {
121
+ (0, _core.kCreateWebError)({
122
+ code: 'Package-UnsupportedPlatform',
123
+ message: 'The Kakao JavaScript SDK does not provide Navi URL builders.'
124
+ });
125
+ }
117
126
  function isMobileBrowser() {
118
127
  return /android|iphone|ipad|ipod/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;
119
128
  }
120
129
  const {
130
+ isKakaoNaviInstalled,
131
+ getNavigateUrl,
132
+ getShareUrl,
121
133
  navigateTo,
122
134
  shareTo
123
135
  } = KakaoNavi;
124
136
  exports.shareTo = shareTo;
125
137
  exports.navigateTo = navigateTo;
138
+ exports.getShareUrl = getShareUrl;
139
+ exports.getNavigateUrl = getNavigateUrl;
140
+ exports.isKakaoNaviInstalled = isKakaoNaviInstalled;
126
141
  var _default = exports.default = KakaoNavi;
127
142
  //# sourceMappingURL=index.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_jsUtil","require","_core","getVehicleType","v","getRpOption","KakaoNavi","navigateTo","viaList","destination","option","kAssert","length","isMobileBrowser","Kakao","Navi","start","filterNonNullishKeys","name","x","y","rpflag","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","test","navigator","userAgent","maxTouchPoints","exports","_default","default"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_jsUtil","require","_core","getVehicleType","v","getRpOption","KakaoNavi","isKakaoNaviInstalled","getNavigateUrl","unsupportedUrlBuilder","getShareUrl","navigateTo","viaList","destination","option","kAssert","length","isMobileBrowser","Kakao","Navi","start","filterNonNullishKeys","name","x","y","rpflag","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","kCreateWebError","code","message","test","navigator","userAgent","maxTouchPoints","exports","_default","default"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","ignoreList":[]}
@@ -27,7 +27,20 @@ export interface KakaoNaviLocation {
27
27
  rpflag?: string;
28
28
  }
29
29
 
30
+ export type KakaoNaviRouteParams = {
31
+ destination: KakaoNaviLocation;
32
+ option?: KakaoNaviOption;
33
+ viaList?: KakaoNaviLocation[];
34
+ };
35
+
30
36
  export interface Spec extends TurboModule {
37
+ isKakaoNaviInstalled(): Promise<boolean>;
38
+ makeNaviUrl(
39
+ destination: UnsafeObject,
40
+ isShare: boolean,
41
+ option?: UnsafeObject,
42
+ viaList?: ReadonlyArray<UnsafeObject>,
43
+ ): Promise<string>;
31
44
  navigateOrShareTo(
32
45
  destination: UnsafeObject,
33
46
  option?: UnsafeObject,
@@ -1,6 +1,24 @@
1
1
  "use strict";
2
2
 
3
+ import { kAssert } from '@react-native-kakao/core';
3
4
  import Native from './spec/NativeKakaoNavi';
5
+ export function isKakaoNaviInstalled() {
6
+ return Native.isKakaoNaviInstalled();
7
+ }
8
+ export function getNavigateUrl(params) {
9
+ return makeNaviUrl(params, false);
10
+ }
11
+ export function getShareUrl(params) {
12
+ return makeNaviUrl(params, true);
13
+ }
14
+ async function makeNaviUrl({
15
+ destination,
16
+ option,
17
+ viaList
18
+ }, isShare) {
19
+ kAssert(viaList == null || viaList.length <= 3, 'viaList must contain at most 3 stops.');
20
+ return Native.makeNaviUrl(destination, isShare, option, viaList);
21
+ }
4
22
  export function navigateTo({
5
23
  destination,
6
24
  option,
@@ -18,6 +36,9 @@ export function shareTo({
18
36
  return Native.navigateOrShareTo(destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable ?? true, true);
19
37
  }
20
38
  const KakaoNavi = {
39
+ isKakaoNaviInstalled,
40
+ getNavigateUrl,
41
+ getShareUrl,
21
42
  navigateTo,
22
43
  shareTo
23
44
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Native","navigateTo","destination","option","viaList","openWebInstallUrlIfNaviAppNotAvailable","navigateOrShareTo","shareTo","KakaoNavi"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AACA,OAAOA,MAAM,MAAM,wBAAwB;AAI3C,OAAO,SAASC,UAAUA,CAAC;EACzBC,WAAW;EACXC,MAAM;EACNC,OAAO;EACPC;AAMF,CAAC,EAAoB;EACnB,OAAOL,MAAM,CAACM,iBAAiB,CAC7BJ,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,sCAAsC,IAAI,IAAI,EAC9C,KACF,CAAC;AACH;AAEA,OAAO,SAASE,OAAOA,CAAC;EACtBL,WAAW;EACXC,MAAM;EACNC,OAAO;EACPC;AAMF,CAAC,EAAoB;EACnB,OAAOL,MAAM,CAACM,iBAAiB,CAC7BJ,WAAW,EACXC,MAAM,EACNC,OAAO,EACPC,sCAAsC,IAAI,IAAI,EAC9C,IACF,CAAC;AACH;AAEA,MAAMG,SAAS,GAAG;EAAEP,UAAU;EAAEM;AAAQ,CAAC;AACzC,eAAeC,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["kAssert","Native","isKakaoNaviInstalled","getNavigateUrl","params","makeNaviUrl","getShareUrl","destination","option","viaList","isShare","length","navigateTo","openWebInstallUrlIfNaviAppNotAvailable","navigateOrShareTo","shareTo","KakaoNavi"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,0BAA0B;AAOlD,OAAOC,MAAM,MAAM,wBAAwB;AAQ3C,OAAO,SAASC,oBAAoBA,CAAA,EAAqB;EACvD,OAAOD,MAAM,CAACC,oBAAoB,CAAC,CAAC;AACtC;AAEA,OAAO,SAASC,cAAcA,CAACC,MAA4B,EAAmB;EAC5E,OAAOC,WAAW,CAACD,MAAM,EAAE,KAAK,CAAC;AACnC;AAEA,OAAO,SAASE,WAAWA,CAACF,MAA4B,EAAmB;EACzE,OAAOC,WAAW,CAACD,MAAM,EAAE,IAAI,CAAC;AAClC;AAEA,eAAeC,WAAWA,CACxB;EAAEE,WAAW;EAAEC,MAAM;EAAEC;AAA8B,CAAC,EACtDC,OAAgB,EAChB;EACAV,OAAO,CAACS,OAAO,IAAI,IAAI,IAAIA,OAAO,CAACE,MAAM,IAAI,CAAC,EAAE,uCAAuC,CAAC;EAExF,OAAOV,MAAM,CAACI,WAAW,CAACE,WAAW,EAAEG,OAAO,EAAEF,MAAM,EAAEC,OAAO,CAAC;AAClE;AAEA,OAAO,SAASG,UAAUA,CAAC;EACzBL,WAAW;EACXC,MAAM;EACNC,OAAO;EACPI;AAMF,CAAC,EAAoB;EACnB,OAAOZ,MAAM,CAACa,iBAAiB,CAC7BP,WAAW,EACXC,MAAM,EACNC,OAAO,EACPI,sCAAsC,IAAI,IAAI,EAC9C,KACF,CAAC;AACH;AAEA,OAAO,SAASE,OAAOA,CAAC;EACtBR,WAAW;EACXC,MAAM;EACNC,OAAO;EACPI;AAMF,CAAC,EAAoB;EACnB,OAAOZ,MAAM,CAACa,iBAAiB,CAC7BP,WAAW,EACXC,MAAM,EACNC,OAAO,EACPI,sCAAsC,IAAI,IAAI,EAC9C,IACF,CAAC;AACH;AAEA,MAAMG,SAAS,GAAG;EAAEd,oBAAoB;EAAEC,cAAc;EAAEG,WAAW;EAAEM,UAAU;EAAEG;AAAQ,CAAC;AAC5F,eAAeC,SAAS","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { filterNonNullishKeys } from '@mj-studio/js-util';
4
- import { kAssert } from '@react-native-kakao/core';
4
+ import { kAssert, kCreateWebError } from '@react-native-kakao/core';
5
5
  function getVehicleType(v) {
6
6
  if (v === 'First') {
7
7
  return 1;
@@ -54,6 +54,9 @@ function getRpOption(v) {
54
54
  return 100;
55
55
  }
56
56
  const KakaoNavi = {
57
+ isKakaoNaviInstalled: async () => false,
58
+ getNavigateUrl: unsupportedUrlBuilder,
59
+ getShareUrl: unsupportedUrlBuilder,
57
60
  navigateTo: async ({
58
61
  viaList,
59
62
  destination,
@@ -110,10 +113,19 @@ const KakaoNavi = {
110
113
  }
111
114
  }
112
115
  };
116
+ async function unsupportedUrlBuilder() {
117
+ kCreateWebError({
118
+ code: 'Package-UnsupportedPlatform',
119
+ message: 'The Kakao JavaScript SDK does not provide Navi URL builders.'
120
+ });
121
+ }
113
122
  function isMobileBrowser() {
114
123
  return /android|iphone|ipad|ipod/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;
115
124
  }
116
125
  export const {
126
+ isKakaoNaviInstalled,
127
+ getNavigateUrl,
128
+ getShareUrl,
117
129
  navigateTo,
118
130
  shareTo
119
131
  } = KakaoNavi;
@@ -1 +1 @@
1
- {"version":3,"names":["filterNonNullishKeys","kAssert","getVehicleType","v","getRpOption","KakaoNavi","navigateTo","viaList","destination","option","length","isMobileBrowser","Kakao","Navi","start","name","x","y","rpflag","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","test","navigator","userAgent","maxTouchPoints"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,oBAAoB;AACzD,SAASC,OAAO,QAAQ,0BAA0B;AAWlD,SAASC,cAAcA,CAACC,CAAiC,EAAU;EACjE,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,OAAO,EAAE;IACjB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,UAAU,EAAE;IACpB,OAAO,CAAC;EACV;EAEA,OAAO,CAAC;AACV;AAEA,SAASC,WAAWA,CAACD,CAA8B,EAAU;EAC3D,IAAIA,CAAC,KAAK,MAAM,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,MAAM,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,UAAU,EAAE;IACpB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,MAAM,EAAE;IAChB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,SAAS,EAAE;IACnB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,QAAQ,EAAE;IAClB,OAAO,CAAC;EACV;EAEA,IAAIA,CAAC,KAAK,aAAa,EAAE;IACvB,OAAO,GAAG;EACZ;EAEA,OAAO,GAAG;AACZ;AAEA,MAAME,SAAuB,GAAG;EAC9BC,UAAU,EAAE,MAAAA,CAAO;IAAEC,OAAO;IAAEC,WAAW;IAAEC;EAAO,CAAC,KAAK;IACtDR,OAAO,CACLM,OAAO,GAAGA,OAAO,CAACG,MAAM,IAAI,CAAC,GAAG,IAAI,EACpC,0DACF,CAAC;IAED,IAAI,CAACC,eAAe,CAAC,CAAC,EAAE;MACtB,OAAO,KAAK;IACd;IAEA,IAAI;MACFC,KAAK,CAACC,IAAI,CAACC,KAAK,CACdd,oBAAoB,CAAC;QACnBe,IAAI,EAAEP,WAAW,CAACO,IAAI;QACtBC,CAAC,EAAER,WAAW,CAACQ,CAAC;QAChBC,CAAC,EAAET,WAAW,CAACS,CAAC;QAChBC,MAAM,EAAEV,WAAW,CAACU,MAAM;QAC1BC,SAAS,EAAEV,MAAM,EAAEU,SAAS,EAAEC,WAAW,CAAC,CAAC;QAC3CC,WAAW,EAAEZ,MAAM,EAAEY,WAAW,GAAGnB,cAAc,CAACO,MAAM,CAACY,WAAW,CAAC,GAAGC,SAAS;QACjFC,QAAQ,EAAEd,MAAM,EAAEc,QAAQ,GAAGnB,WAAW,CAACK,MAAM,CAACc,QAAQ,CAAC,GAAGD,SAAS;QACrEE,SAAS,EAAEf,MAAM,EAAEe,SAAS;QAC5BC,EAAE,EAAEhB,MAAM,EAAEiB,MAAM;QAClBC,EAAE,EAAElB,MAAM,EAAEmB,MAAM;QAClBC,MAAM,EAAEpB,MAAM,EAAEqB,UAAU;QAC1BC,SAAS,EAAEtB,MAAM,EAAEsB,SAAS;QAC5BC,SAAS,EAAEzB,OAAO,EAAE0B,GAAG,CAAE9B,CAAC,IACxBH,oBAAoB,CAAC;UACnBe,IAAI,EAAEZ,CAAC,CAACY,IAAI;UACZC,CAAC,EAAEb,CAAC,CAACa,CAAC;UACNC,CAAC,EAAEd,CAAC,CAACc,CAAC;UACNC,MAAM,EAAEf,CAAC,CAACe;QACZ,CAAC,CACH;MACF,CAAC,CACH,CAAC;MAED,OAAO,IAAI;IACb,CAAC,CAAC,OAAOgB,CAAM,EAAE;MACf,OAAO,KAAK;IACd;EACF,CAAC;EACDC,OAAO,EAAE,MAAAA,CAAO;IAAE3B,WAAW;IAAEC;EAAO,CAAC,KAAK;IAC1C,IAAI,CAACE,eAAe,CAAC,CAAC,EAAE;MACtB,OAAO,KAAK;IACd;IAEA,IAAI;MACFC,KAAK,CAACC,IAAI,CAACuB,KAAK,CACdpC,oBAAoB,CAAC;QACnBe,IAAI,EAAEP,WAAW,CAACO,IAAI;QACtBC,CAAC,EAAER,WAAW,CAACQ,CAAC;QAChBC,CAAC,EAAET,WAAW,CAACS,CAAC;QAChBC,MAAM,EAAEV,WAAW,CAACU,MAAM;QAC1BC,SAAS,EAAEV,MAAM,EAAEU,SAAS,EAAEC,WAAW,CAAC;MAC5C,CAAC,CACH,CAAC;MAED,OAAO,IAAI;IACb,CAAC,CAAC,OAAOc,CAAM,EAAE;MACf,OAAO,KAAK;IACd;EACF;AACF,CAAC;AAED,SAASvB,eAAeA,CAAA,EAAG;EACzB,OACE,2BAA2B,CAAC0B,IAAI,CAACC,SAAS,CAACC,SAAS,CAAC,IACpD,YAAY,CAACF,IAAI,CAACC,SAAS,CAACC,SAAS,CAAC,IAAID,SAAS,CAACE,cAAc,GAAG,CAAE;AAE5E;AAEA,OAAO,MAAM;EAAElC,UAAU;EAAE6B;AAAQ,CAAC,GAAG9B,SAAS;AAChD,eAAeA,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["filterNonNullishKeys","kAssert","kCreateWebError","getVehicleType","v","getRpOption","KakaoNavi","isKakaoNaviInstalled","getNavigateUrl","unsupportedUrlBuilder","getShareUrl","navigateTo","viaList","destination","option","length","isMobileBrowser","Kakao","Navi","start","name","x","y","rpflag","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","code","message","test","navigator","userAgent","maxTouchPoints"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","ignoreList":[]}
@@ -27,7 +27,20 @@ export interface KakaoNaviLocation {
27
27
  rpflag?: string;
28
28
  }
29
29
 
30
+ export type KakaoNaviRouteParams = {
31
+ destination: KakaoNaviLocation;
32
+ option?: KakaoNaviOption;
33
+ viaList?: KakaoNaviLocation[];
34
+ };
35
+
30
36
  export interface Spec extends TurboModule {
37
+ isKakaoNaviInstalled(): Promise<boolean>;
38
+ makeNaviUrl(
39
+ destination: UnsafeObject,
40
+ isShare: boolean,
41
+ option?: UnsafeObject,
42
+ viaList?: ReadonlyArray<UnsafeObject>,
43
+ ): Promise<string>;
31
44
  navigateOrShareTo(
32
45
  destination: UnsafeObject,
33
46
  option?: UnsafeObject,
@@ -1,5 +1,8 @@
1
- import type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
2
- export type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
1
+ import type { KakaoNaviLocation, KakaoNaviOption, KakaoNaviRouteParams } from './spec/NativeKakaoNavi';
2
+ export type { KakaoNaviLocation, KakaoNaviOption, KakaoNaviRouteParams, } from './spec/NativeKakaoNavi';
3
+ export declare function isKakaoNaviInstalled(): Promise<boolean>;
4
+ export declare function getNavigateUrl(params: KakaoNaviRouteParams): Promise<string>;
5
+ export declare function getShareUrl(params: KakaoNaviRouteParams): Promise<string>;
3
6
  export declare function navigateTo({ destination, option, viaList, openWebInstallUrlIfNaviAppNotAvailable, }: {
4
7
  destination: KakaoNaviLocation;
5
8
  option?: KakaoNaviOption;
@@ -13,6 +16,9 @@ export declare function shareTo({ destination, option, viaList, openWebInstallUr
13
16
  openWebInstallUrlIfNaviAppNotAvailable?: boolean;
14
17
  }): Promise<boolean>;
15
18
  declare const KakaoNavi: {
19
+ isKakaoNaviInstalled: typeof isKakaoNaviInstalled;
20
+ getNavigateUrl: typeof getNavigateUrl;
21
+ getShareUrl: typeof getShareUrl;
16
22
  navigateTo: typeof navigateTo;
17
23
  shareTo: typeof shareTo;
18
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGjF,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEjF,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,MAAM,EACN,OAAO,EACP,sCAAsC,GACvC,EAAE;IACD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAED,wBAAgB,OAAO,CAAC,EACtB,WAAW,EACX,MAAM,EACN,OAAO,EACP,sCAAsC,GACvC,EAAE;IACD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAED,QAAA,MAAM,SAAS;;;CAA0B,CAAC;AAC1C,eAAe,SAAS,CAAC;AACzB,MAAM,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEvD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzE;AAWD,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,MAAM,EACN,OAAO,EACP,sCAAsC,GACvC,EAAE;IACD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAED,wBAAgB,OAAO,CAAC,EACtB,WAAW,EACX,MAAM,EACN,OAAO,EACP,sCAAsC,GACvC,EAAE;IACD,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnB;AAED,QAAA,MAAM,SAAS;;;;;;CAA6E,CAAC;AAC7F,eAAe,SAAS,CAAC;AACzB,MAAM,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC"}
@@ -16,7 +16,14 @@ export interface KakaoNaviLocation {
16
16
  y: Double;
17
17
  rpflag?: string;
18
18
  }
19
+ export type KakaoNaviRouteParams = {
20
+ destination: KakaoNaviLocation;
21
+ option?: KakaoNaviOption;
22
+ viaList?: KakaoNaviLocation[];
23
+ };
19
24
  export interface Spec extends TurboModule {
25
+ isKakaoNaviInstalled(): Promise<boolean>;
26
+ makeNaviUrl(destination: UnsafeObject, isShare: boolean, option?: UnsafeObject, viaList?: ReadonlyArray<UnsafeObject>): Promise<string>;
20
27
  navigateOrShareTo(destination: UnsafeObject, option?: UnsafeObject, viaList?: ReadonlyArray<UnsafeObject>, openWebInstallUrlIfNaviAppNotAvailable?: boolean, isShare?: boolean): Promise<boolean>;
21
28
  }
22
29
  declare const _default: Spec;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeKakaoNavi.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoNavi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACvF,QAAQ,CAAC,EACL,MAAM,GACN,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,GACR,aAAa,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,iBAAiB,CACf,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,sCAAsC,CAAC,EAAE,OAAO,EAChD,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;;AAED,wBAAsE"}
1
+ {"version":3,"file":"NativeKakaoNavi.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoNavi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAEtF,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IACvF,QAAQ,CAAC,EACL,MAAM,GACN,MAAM,GACN,UAAU,GACV,QAAQ,GACR,MAAM,GACN,SAAS,GACT,QAAQ,GACR,aAAa,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/B,CAAC;AAEF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,WAAW,CACT,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,GACpC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,iBAAiB,CACf,WAAW,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,EACrC,sCAAsC,CAAC,EAAE,OAAO,EAChD,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;;AAED,wBAAsE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-native-kakao/navi",
3
3
  "description": "React Native Kakao Navi SDK",
4
- "version": "3.1.0",
4
+ "version": "3.2.0",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/src/index.d.ts",
@@ -57,17 +57,17 @@
57
57
  "access": "public"
58
58
  },
59
59
  "devDependencies": {
60
- "@react-native-kakao/core": "3.1.0",
60
+ "@react-native-kakao/core": "3.2.0",
61
61
  "@types/invariant": "^2",
62
62
  "@types/react": "~19.2.2",
63
63
  "del-cli": "^5.1.0",
64
- "react": "19.2.3",
65
- "react-native": "0.86.3",
64
+ "react": "19.3.0",
65
+ "react-native": "0.88.0",
66
66
  "react-native-builder-bob": "0.40.7",
67
67
  "typescript": "~6.0.3"
68
68
  },
69
69
  "peerDependencies": {
70
- "@react-native-kakao/core": "3.1.0",
70
+ "@react-native-kakao/core": "3.2.0",
71
71
  "react": "*",
72
72
  "react-native": ">=0.76.0"
73
73
  },
package/src/index.ts CHANGED
@@ -1,7 +1,38 @@
1
- import type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
1
+ import { kAssert } from '@react-native-kakao/core';
2
+
3
+ import type {
4
+ KakaoNaviLocation,
5
+ KakaoNaviOption,
6
+ KakaoNaviRouteParams,
7
+ } from './spec/NativeKakaoNavi';
2
8
  import Native from './spec/NativeKakaoNavi';
3
9
 
4
- export type { KakaoNaviLocation, KakaoNaviOption } from './spec/NativeKakaoNavi';
10
+ export type {
11
+ KakaoNaviLocation,
12
+ KakaoNaviOption,
13
+ KakaoNaviRouteParams,
14
+ } from './spec/NativeKakaoNavi';
15
+
16
+ export function isKakaoNaviInstalled(): Promise<boolean> {
17
+ return Native.isKakaoNaviInstalled();
18
+ }
19
+
20
+ export function getNavigateUrl(params: KakaoNaviRouteParams): Promise<string> {
21
+ return makeNaviUrl(params, false);
22
+ }
23
+
24
+ export function getShareUrl(params: KakaoNaviRouteParams): Promise<string> {
25
+ return makeNaviUrl(params, true);
26
+ }
27
+
28
+ async function makeNaviUrl(
29
+ { destination, option, viaList }: KakaoNaviRouteParams,
30
+ isShare: boolean,
31
+ ) {
32
+ kAssert(viaList == null || viaList.length <= 3, 'viaList must contain at most 3 stops.');
33
+
34
+ return Native.makeNaviUrl(destination, isShare, option, viaList);
35
+ }
5
36
 
6
37
  export function navigateTo({
7
38
  destination,
@@ -43,6 +74,6 @@ export function shareTo({
43
74
  );
44
75
  }
45
76
 
46
- const KakaoNavi = { navigateTo, shareTo };
77
+ const KakaoNavi = { isKakaoNaviInstalled, getNavigateUrl, getShareUrl, navigateTo, shareTo };
47
78
  export default KakaoNavi;
48
79
  export type KakaoNaviAPI = typeof KakaoNavi;
package/src/index.web.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { filterNonNullishKeys } from '@mj-studio/js-util';
2
- import { kAssert } from '@react-native-kakao/core';
2
+ import { kAssert, kCreateWebError } from '@react-native-kakao/core';
3
3
 
4
4
  import type { KakaoNaviAPI, KakaoNaviOption } from './index';
5
5
 
@@ -79,6 +79,9 @@ function getRpOption(v: KakaoNaviOption['rpOption']): number {
79
79
  }
80
80
 
81
81
  const KakaoNavi: KakaoNaviAPI = {
82
+ isKakaoNaviInstalled: async () => false,
83
+ getNavigateUrl: unsupportedUrlBuilder,
84
+ getShareUrl: unsupportedUrlBuilder,
82
85
  navigateTo: async ({ viaList, destination, option }) => {
83
86
  kAssert(
84
87
  viaList ? viaList.length <= 3 : true,
@@ -143,6 +146,13 @@ const KakaoNavi: KakaoNaviAPI = {
143
146
  },
144
147
  };
145
148
 
149
+ async function unsupportedUrlBuilder(): Promise<never> {
150
+ kCreateWebError({
151
+ code: 'Package-UnsupportedPlatform',
152
+ message: 'The Kakao JavaScript SDK does not provide Navi URL builders.',
153
+ });
154
+ }
155
+
146
156
  function isMobileBrowser() {
147
157
  return (
148
158
  /android|iphone|ipad|ipod/i.test(navigator.userAgent) ||
@@ -150,5 +160,5 @@ function isMobileBrowser() {
150
160
  );
151
161
  }
152
162
 
153
- export const { navigateTo, shareTo } = KakaoNavi;
163
+ export const { isKakaoNaviInstalled, getNavigateUrl, getShareUrl, navigateTo, shareTo } = KakaoNavi;
154
164
  export default KakaoNavi;
@@ -27,7 +27,20 @@ export interface KakaoNaviLocation {
27
27
  rpflag?: string;
28
28
  }
29
29
 
30
+ export type KakaoNaviRouteParams = {
31
+ destination: KakaoNaviLocation;
32
+ option?: KakaoNaviOption;
33
+ viaList?: KakaoNaviLocation[];
34
+ };
35
+
30
36
  export interface Spec extends TurboModule {
37
+ isKakaoNaviInstalled(): Promise<boolean>;
38
+ makeNaviUrl(
39
+ destination: UnsafeObject,
40
+ isShare: boolean,
41
+ option?: UnsafeObject,
42
+ viaList?: ReadonlyArray<UnsafeObject>,
43
+ ): Promise<string>;
31
44
  navigateOrShareTo(
32
45
  destination: UnsafeObject,
33
46
  option?: UnsafeObject,