@react-native-kakao/navi 3.0.0 → 3.1.0-next.1

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,33 @@
1
1
  # Change Log
2
2
 
3
+ ## 3.1.0-next.1
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
+ - Updated dependencies [d5c5fb8]
13
+ - Updated dependencies [3027207]
14
+ - Updated dependencies [dfd32ca]
15
+ - Updated dependencies [2b223bf]
16
+ - Updated dependencies [67cd4e2]
17
+ - Updated dependencies [d81f9b7]
18
+ - @react-native-kakao/core@3.1.0-next.1
19
+
20
+ ## 3.1.0-next.0
21
+
22
+ ### Patch Changes
23
+
24
+ - 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.
25
+ - 71700aa: Align web SDK options, response shapes, timestamps, and session errors with native APIs.
26
+ - Updated dependencies [20c253b]
27
+ - Updated dependencies [3260517]
28
+ - Updated dependencies [71700aa]
29
+ - @react-native-kakao/core@3.1.0-next.0
30
+
3
31
  ## 3.0.0
4
32
 
5
33
  ### 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,
@@ -41,7 +67,7 @@ class RNCKakaoNaviModule internal constructor(
41
67
  promise: Promise,
42
68
  ) = onMain {
43
69
  val context =
44
- currentActivity ?: run {
70
+ reactApplicationContext.currentActivity ?: run {
45
71
  promise.rejectWith(ActivityNotFoundException())
46
72
  return@onMain
47
73
  }
@@ -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*)
@@ -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,17 +58,24 @@ 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,
64
67
  option
65
68
  }) => {
66
69
  (0, _core.kAssert)(viaList ? viaList.length <= 3 : true, '[navigateTo] viaList length should equal or less then 3.');
70
+ if (!isMobileBrowser()) {
71
+ return false;
72
+ }
67
73
  try {
68
74
  Kakao.Navi.start((0, _jsUtil.filterNonNullishKeys)({
69
75
  name: destination.name,
70
76
  x: destination.x,
71
77
  y: destination.y,
78
+ rpflag: destination.rpflag,
72
79
  coordType: option?.coordType?.toLowerCase(),
73
80
  vehicleType: option?.vehicleType ? getVehicleType(option.vehicleType) : undefined,
74
81
  rpOption: option?.rpOption ? getRpOption(option.rpOption) : undefined,
@@ -77,10 +84,11 @@ const KakaoNavi = {
77
84
  sY: option?.startY,
78
85
  sAngle: option?.startAngle,
79
86
  returnUri: option?.returnUri,
80
- viaPoints: viaList?.map(v => ({
87
+ viaPoints: viaList?.map(v => (0, _jsUtil.filterNonNullishKeys)({
81
88
  name: v.name,
82
89
  x: v.x,
83
- y: v.y
90
+ y: v.y,
91
+ rpflag: v.rpflag
84
92
  }))
85
93
  }));
86
94
  return true;
@@ -92,11 +100,15 @@ const KakaoNavi = {
92
100
  destination,
93
101
  option
94
102
  }) => {
103
+ if (!isMobileBrowser()) {
104
+ return false;
105
+ }
95
106
  try {
96
107
  Kakao.Navi.share((0, _jsUtil.filterNonNullishKeys)({
97
108
  name: destination.name,
98
109
  x: destination.x,
99
110
  y: destination.y,
111
+ rpflag: destination.rpflag,
100
112
  coordType: option?.coordType?.toLowerCase()
101
113
  }));
102
114
  return true;
@@ -105,11 +117,26 @@ const KakaoNavi = {
105
117
  }
106
118
  }
107
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
+ }
126
+ function isMobileBrowser() {
127
+ return /android|iphone|ipad|ipod/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;
128
+ }
108
129
  const {
130
+ isKakaoNaviInstalled,
131
+ getNavigateUrl,
132
+ getShareUrl,
109
133
  navigateTo,
110
134
  shareTo
111
135
  } = KakaoNavi;
112
136
  exports.shareTo = shareTo;
113
137
  exports.navigateTo = navigateTo;
138
+ exports.getShareUrl = getShareUrl;
139
+ exports.getNavigateUrl = getNavigateUrl;
140
+ exports.isKakaoNaviInstalled = isKakaoNaviInstalled;
114
141
  var _default = exports.default = KakaoNavi;
115
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","Kakao","Navi","start","filterNonNullishKeys","name","x","y","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share","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":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAWA,SAASE,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,oBAAoB,EAAE,MAAAA,CAAA,KAAY,KAAK;EACvCC,cAAc,EAAEC,qBAAqB;EACrCC,WAAW,EAAED,qBAAqB;EAClCE,UAAU,EAAE,MAAAA,CAAO;IAAEC,OAAO;IAAEC,WAAW;IAAEC;EAAO,CAAC,KAAK;IACtD,IAAAC,aAAO,EACLH,OAAO,GAAGA,OAAO,CAACI,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,CACd,IAAAC,4BAAoB,EAAC;QACnBC,IAAI,EAAET,WAAW,CAACS,IAAI;QACtBC,CAAC,EAAEV,WAAW,CAACU,CAAC;QAChBC,CAAC,EAAEX,WAAW,CAACW,CAAC;QAChBC,MAAM,EAAEZ,WAAW,CAACY,MAAM;QAC1BC,SAAS,EAAEZ,MAAM,EAAEY,SAAS,EAAEC,WAAW,CAAC,CAAC;QAC3CC,WAAW,EAAEd,MAAM,EAAEc,WAAW,GAAGzB,cAAc,CAACW,MAAM,CAACc,WAAW,CAAC,GAAGC,SAAS;QACjFC,QAAQ,EAAEhB,MAAM,EAAEgB,QAAQ,GAAGzB,WAAW,CAACS,MAAM,CAACgB,QAAQ,CAAC,GAAGD,SAAS;QACrEE,SAAS,EAAEjB,MAAM,EAAEiB,SAAS;QAC5BC,EAAE,EAAElB,MAAM,EAAEmB,MAAM;QAClBC,EAAE,EAAEpB,MAAM,EAAEqB,MAAM;QAClBC,MAAM,EAAEtB,MAAM,EAAEuB,UAAU;QAC1BC,SAAS,EAAExB,MAAM,EAAEwB,SAAS;QAC5BC,SAAS,EAAE3B,OAAO,EAAE4B,GAAG,CAAEpC,CAAC,IACxB,IAAAiB,4BAAoB,EAAC;UACnBC,IAAI,EAAElB,CAAC,CAACkB,IAAI;UACZC,CAAC,EAAEnB,CAAC,CAACmB,CAAC;UACNC,CAAC,EAAEpB,CAAC,CAACoB,CAAC;UACNC,MAAM,EAAErB,CAAC,CAACqB;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;IAAE7B,WAAW;IAAEC;EAAO,CAAC,KAAK;IAC1C,IAAI,CAACG,eAAe,CAAC,CAAC,EAAE;MACtB,OAAO,KAAK;IACd;IAEA,IAAI;MACFC,KAAK,CAACC,IAAI,CAACwB,KAAK,CACd,IAAAtB,4BAAoB,EAAC;QACnBC,IAAI,EAAET,WAAW,CAACS,IAAI;QACtBC,CAAC,EAAEV,WAAW,CAACU,CAAC;QAChBC,CAAC,EAAEX,WAAW,CAACW,CAAC;QAChBC,MAAM,EAAEZ,WAAW,CAACY,MAAM;QAC1BC,SAAS,EAAEZ,MAAM,EAAEY,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,eAAehC,qBAAqBA,CAAA,EAAmB;EACrD,IAAAmC,qBAAe,EAAC;IACdC,IAAI,EAAE,6BAA6B;IACnCC,OAAO,EAAE;EACX,CAAC,CAAC;AACJ;AAEA,SAAS7B,eAAeA,CAAA,EAAG;EACzB,OACE,2BAA2B,CAAC8B,IAAI,CAACC,SAAS,CAACC,SAAS,CAAC,IACpD,YAAY,CAACF,IAAI,CAACC,SAAS,CAACC,SAAS,CAAC,IAAID,SAAS,CAACE,cAAc,GAAG,CAAE;AAE5E;AAEO,MAAM;EAAE3C,oBAAoB;EAAEC,cAAc;EAAEE,WAAW;EAAEC,UAAU;EAAE+B;AAAQ,CAAC,GAAGpC,SAAS;AAAC6C,OAAA,CAAAT,OAAA,GAAAA,OAAA;AAAAS,OAAA,CAAAxC,UAAA,GAAAA,UAAA;AAAAwC,OAAA,CAAAzC,WAAA,GAAAA,WAAA;AAAAyC,OAAA,CAAA3C,cAAA,GAAAA,cAAA;AAAA2C,OAAA,CAAA5C,oBAAA,GAAAA,oBAAA;AAAA,IAAA6C,QAAA,GAAAD,OAAA,CAAAE,OAAA,GACrF/C,SAAS","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,17 +54,24 @@ 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,
60
63
  option
61
64
  }) => {
62
65
  kAssert(viaList ? viaList.length <= 3 : true, '[navigateTo] viaList length should equal or less then 3.');
66
+ if (!isMobileBrowser()) {
67
+ return false;
68
+ }
63
69
  try {
64
70
  Kakao.Navi.start(filterNonNullishKeys({
65
71
  name: destination.name,
66
72
  x: destination.x,
67
73
  y: destination.y,
74
+ rpflag: destination.rpflag,
68
75
  coordType: option?.coordType?.toLowerCase(),
69
76
  vehicleType: option?.vehicleType ? getVehicleType(option.vehicleType) : undefined,
70
77
  rpOption: option?.rpOption ? getRpOption(option.rpOption) : undefined,
@@ -73,10 +80,11 @@ const KakaoNavi = {
73
80
  sY: option?.startY,
74
81
  sAngle: option?.startAngle,
75
82
  returnUri: option?.returnUri,
76
- viaPoints: viaList?.map(v => ({
83
+ viaPoints: viaList?.map(v => filterNonNullishKeys({
77
84
  name: v.name,
78
85
  x: v.x,
79
- y: v.y
86
+ y: v.y,
87
+ rpflag: v.rpflag
80
88
  }))
81
89
  }));
82
90
  return true;
@@ -88,11 +96,15 @@ const KakaoNavi = {
88
96
  destination,
89
97
  option
90
98
  }) => {
99
+ if (!isMobileBrowser()) {
100
+ return false;
101
+ }
91
102
  try {
92
103
  Kakao.Navi.share(filterNonNullishKeys({
93
104
  name: destination.name,
94
105
  x: destination.x,
95
106
  y: destination.y,
107
+ rpflag: destination.rpflag,
96
108
  coordType: option?.coordType?.toLowerCase()
97
109
  }));
98
110
  return true;
@@ -101,7 +113,19 @@ const KakaoNavi = {
101
113
  }
102
114
  }
103
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
+ }
122
+ function isMobileBrowser() {
123
+ return /android|iphone|ipad|ipod/i.test(navigator.userAgent) || /macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1;
124
+ }
104
125
  export const {
126
+ isKakaoNaviInstalled,
127
+ getNavigateUrl,
128
+ getShareUrl,
105
129
  navigateTo,
106
130
  shareTo
107
131
  } = KakaoNavi;
@@ -1 +1 @@
1
- {"version":3,"names":["filterNonNullishKeys","kAssert","getVehicleType","v","getRpOption","KakaoNavi","navigateTo","viaList","destination","option","length","Kakao","Navi","start","name","x","y","coordType","toLowerCase","vehicleType","undefined","rpOption","routeInfo","sX","startX","sY","startY","sAngle","startAngle","returnUri","viaPoints","map","e","shareTo","share"],"sourceRoot":"../../src","sources":["index.web.ts"],"mappings":"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","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.0.0",
4
+ "version": "3.1.0-next.1",
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.0.0",
60
+ "@react-native-kakao/core": "3.1.0-next.1",
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.0.0",
70
+ "@react-native-kakao/core": "3.1.0-next.1",
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,18 +79,26 @@ 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,
85
88
  '[navigateTo] viaList length should equal or less then 3.',
86
89
  );
87
90
 
91
+ if (!isMobileBrowser()) {
92
+ return false;
93
+ }
94
+
88
95
  try {
89
96
  Kakao.Navi.start(
90
97
  filterNonNullishKeys({
91
98
  name: destination.name,
92
99
  x: destination.x,
93
100
  y: destination.y,
101
+ rpflag: destination.rpflag,
94
102
  coordType: option?.coordType?.toLowerCase(),
95
103
  vehicleType: option?.vehicleType ? getVehicleType(option.vehicleType) : undefined,
96
104
  rpOption: option?.rpOption ? getRpOption(option.rpOption) : undefined,
@@ -99,11 +107,14 @@ const KakaoNavi: KakaoNaviAPI = {
99
107
  sY: option?.startY,
100
108
  sAngle: option?.startAngle,
101
109
  returnUri: option?.returnUri,
102
- viaPoints: viaList?.map((v) => ({
103
- name: v.name,
104
- x: v.x,
105
- y: v.y,
106
- })),
110
+ viaPoints: viaList?.map((v) =>
111
+ filterNonNullishKeys({
112
+ name: v.name,
113
+ x: v.x,
114
+ y: v.y,
115
+ rpflag: v.rpflag,
116
+ }),
117
+ ),
107
118
  }),
108
119
  );
109
120
 
@@ -113,12 +124,17 @@ const KakaoNavi: KakaoNaviAPI = {
113
124
  }
114
125
  },
115
126
  shareTo: async ({ destination, option }) => {
127
+ if (!isMobileBrowser()) {
128
+ return false;
129
+ }
130
+
116
131
  try {
117
132
  Kakao.Navi.share(
118
133
  filterNonNullishKeys({
119
134
  name: destination.name,
120
135
  x: destination.x,
121
136
  y: destination.y,
137
+ rpflag: destination.rpflag,
122
138
  coordType: option?.coordType?.toLowerCase(),
123
139
  }),
124
140
  );
@@ -130,5 +146,19 @@ const KakaoNavi: KakaoNaviAPI = {
130
146
  },
131
147
  };
132
148
 
133
- export const { navigateTo, shareTo } = KakaoNavi;
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
+
156
+ function isMobileBrowser() {
157
+ return (
158
+ /android|iphone|ipad|ipod/i.test(navigator.userAgent) ||
159
+ (/macintosh/i.test(navigator.userAgent) && navigator.maxTouchPoints > 1)
160
+ );
161
+ }
162
+
163
+ export const { isKakaoNaviInstalled, getNavigateUrl, getShareUrl, navigateTo, shareTo } = KakaoNavi;
134
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,