@react-native-kakao/map 2.2.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/LICENSE +20 -0
- package/README.md +42 -0
- package/RNCKakaoMap.podspec +56 -0
- package/android/build.gradle +117 -0
- package/android/gradle.properties +1 -0
- package/android/src/main/AndroidManifest.xml +1 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapModule.kt +24 -0
- package/android/src/main/java/net/mjstudio/rnkakao/map/RNCKakaoMapPackage.kt +37 -0
- package/android/src/newarch/KakaoMapSpec.kt +6 -0
- package/android/src/oldarch/KakaoMapSpec.kt +13 -0
- package/ios/Component/Map/RNCKakaoMapView.h +24 -0
- package/ios/Component/Map/RNCKakaoMapView.mm +208 -0
- package/ios/Component/Map/RNCKakaoMapViewManager.mm +19 -0
- package/ios/NativeModule/RNCKakaoMap.h +7 -0
- package/ios/NativeModule/RNCKakaoMap.mm +19 -0
- package/ios/NativeModule/RNCKakaoMapManager.swift +7 -0
- package/ios/Util/Util.h +97 -0
- package/lib/commonjs/component/KakaoMapView.js +54 -0
- package/lib/commonjs/component/KakaoMapView.js.map +1 -0
- package/lib/commonjs/index.js +38 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/spec/NativeKakaoMap.js +9 -0
- package/lib/commonjs/spec/NativeKakaoMap.js.map +1 -0
- package/lib/commonjs/spec/RNCKakaoMapViewNativeComponent.js +15 -0
- package/lib/commonjs/spec/RNCKakaoMapViewNativeComponent.js.map +1 -0
- package/lib/commonjs/type/type.js +2 -0
- package/lib/commonjs/type/type.js.map +1 -0
- package/lib/commonjs/util/Const.js +14 -0
- package/lib/commonjs/util/Const.js.map +1 -0
- package/lib/commonjs/util/Util.js +15 -0
- package/lib/commonjs/util/Util.js.map +1 -0
- package/lib/module/component/KakaoMapView.js +48 -0
- package/lib/module/component/KakaoMapView.js.map +1 -0
- package/lib/module/index.js +26 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/spec/NativeKakaoMap.js +3 -0
- package/lib/module/spec/NativeKakaoMap.js.map +1 -0
- package/lib/module/spec/RNCKakaoMapViewNativeComponent.js +10 -0
- package/lib/module/spec/RNCKakaoMapViewNativeComponent.js.map +1 -0
- package/lib/module/type/type.js +2 -0
- package/lib/module/type/type.js.map +1 -0
- package/lib/module/util/Const.js +8 -0
- package/lib/module/util/Const.js.map +1 -0
- package/lib/module/util/Util.js +9 -0
- package/lib/module/util/Util.js.map +1 -0
- package/lib/typescript/src/component/KakaoMapView.d.ts +25 -0
- package/lib/typescript/src/component/KakaoMapView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/spec/NativeKakaoMap.d.ts +7 -0
- package/lib/typescript/src/spec/NativeKakaoMap.d.ts.map +1 -0
- package/lib/typescript/src/spec/RNCKakaoMapViewNativeComponent.d.ts +32 -0
- package/lib/typescript/src/spec/RNCKakaoMapViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/type/type.d.ts +8 -0
- package/lib/typescript/src/type/type.d.ts.map +1 -0
- package/lib/typescript/src/util/Const.d.ts +8 -0
- package/lib/typescript/src/util/Const.d.ts.map +1 -0
- package/lib/typescript/src/util/Util.d.ts +3 -0
- package/lib/typescript/src/util/Util.d.ts.map +1 -0
- package/package.json +117 -0
- package/src/component/KakaoMapView.tsx +82 -0
- package/src/index.ts +43 -0
- package/src/spec/NativeKakaoMap.ts +8 -0
- package/src/spec/RNCKakaoMapViewNativeComponent.ts +38 -0
- package/src/type/type.ts +7 -0
- package/src/util/Const.ts +7 -0
- package/src/util/Util.ts +11 -0
package/package.json
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@react-native-kakao/map",
|
|
3
|
+
"description": "React Native Kakao Map SDK",
|
|
4
|
+
"version": "2.2.1",
|
|
5
|
+
"main": "lib/commonjs/index",
|
|
6
|
+
"module": "lib/module/index",
|
|
7
|
+
"types": "lib/typescript/src/index.d.ts",
|
|
8
|
+
"react-native": "src/index",
|
|
9
|
+
"source": "src/index",
|
|
10
|
+
"files": [
|
|
11
|
+
"src",
|
|
12
|
+
"lib",
|
|
13
|
+
"android",
|
|
14
|
+
"ios",
|
|
15
|
+
"cpp",
|
|
16
|
+
"*.podspec",
|
|
17
|
+
"!ios/build",
|
|
18
|
+
"!android/build",
|
|
19
|
+
"!android/gradle",
|
|
20
|
+
"!android/gradlew",
|
|
21
|
+
"!android/gradlew.bat",
|
|
22
|
+
"!android/local.properties",
|
|
23
|
+
"!**/__tests__",
|
|
24
|
+
"!**/__fixtures__",
|
|
25
|
+
"!**/__mocks__",
|
|
26
|
+
"!**/.*"
|
|
27
|
+
],
|
|
28
|
+
"author": "MJ Studio <mym0404@gmail.com> (https://github.com/mym0404)",
|
|
29
|
+
"homepage": "https://rnkakao.dev",
|
|
30
|
+
"scripts": {
|
|
31
|
+
"test": "jest",
|
|
32
|
+
"prepare": "husky",
|
|
33
|
+
"release": "./script/release.sh",
|
|
34
|
+
"codegen:android": "cd ../../example/android && ./gradlew generateCodegenArtifactsFromSchema",
|
|
35
|
+
"codegen:ios": "node ../../example/node_modules/react-native/scripts/generate-codegen-artifacts.js --path example/ --outputPath ../../example/ios",
|
|
36
|
+
"codegen": "yarn codegen:android && yarn codegen:ios",
|
|
37
|
+
"prepack": "bob build",
|
|
38
|
+
"clean": "del-cli android/ lib"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [
|
|
41
|
+
"react-native",
|
|
42
|
+
"kakao",
|
|
43
|
+
"kakao-sdk",
|
|
44
|
+
"typescript",
|
|
45
|
+
"javascript",
|
|
46
|
+
"react",
|
|
47
|
+
"expo",
|
|
48
|
+
"kakao-navi",
|
|
49
|
+
"kakao-navigation",
|
|
50
|
+
"kakao-api",
|
|
51
|
+
"login",
|
|
52
|
+
"auth"
|
|
53
|
+
],
|
|
54
|
+
"repository": {
|
|
55
|
+
"type": "git",
|
|
56
|
+
"url": "https://github.com/mym0404/react-native-kakao.git",
|
|
57
|
+
"directory": "packages/navi"
|
|
58
|
+
},
|
|
59
|
+
"license": "MIT",
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"registry": "https://registry.npmjs.org/",
|
|
62
|
+
"access": "public"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@react-native-kakao/core": "2.2.1",
|
|
66
|
+
"@types/invariant": "^2",
|
|
67
|
+
"@types/jest": "^29.5.5",
|
|
68
|
+
"@types/react": "^18.2.44",
|
|
69
|
+
"del-cli": "^5.1.0",
|
|
70
|
+
"jest": "^29.7.0",
|
|
71
|
+
"react": "18.2.0",
|
|
72
|
+
"react-native": "0.74.0",
|
|
73
|
+
"react-native-builder-bob": "^0.20.0",
|
|
74
|
+
"typescript": "5.1.6"
|
|
75
|
+
},
|
|
76
|
+
"peerDependencies": {
|
|
77
|
+
"@react-native-kakao/core": "2.2.1",
|
|
78
|
+
"react": "*",
|
|
79
|
+
"react-native": "*"
|
|
80
|
+
},
|
|
81
|
+
"workspaces": [
|
|
82
|
+
"example",
|
|
83
|
+
"packages/*"
|
|
84
|
+
],
|
|
85
|
+
"jest": {
|
|
86
|
+
"preset": "react-native",
|
|
87
|
+
"modulePathIgnorePatterns": [
|
|
88
|
+
"<rootDir>/lib/"
|
|
89
|
+
]
|
|
90
|
+
},
|
|
91
|
+
"react-native-builder-bob": {
|
|
92
|
+
"source": "src",
|
|
93
|
+
"output": "lib",
|
|
94
|
+
"targets": [
|
|
95
|
+
"commonjs",
|
|
96
|
+
"module",
|
|
97
|
+
[
|
|
98
|
+
"typescript",
|
|
99
|
+
{
|
|
100
|
+
"project": "tsconfig.build.json"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
]
|
|
104
|
+
},
|
|
105
|
+
"codegenConfig": {
|
|
106
|
+
"name": "RNCKakaoMapSpec",
|
|
107
|
+
"type": "all",
|
|
108
|
+
"jsSrcsDir": "src",
|
|
109
|
+
"android": {
|
|
110
|
+
"javaPackageName": "net.mjstudio.rnkakao.map"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
"dependencies": {
|
|
114
|
+
"@mj-studio/js-util": "1.1.3"
|
|
115
|
+
},
|
|
116
|
+
"gitHead": "81df793e8ca1eeae3ab278a0dcbc665ceda54b51"
|
|
117
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { type ForwardedRef, forwardRef, useImperativeHandle, useMemo } from 'react';
|
|
2
|
+
import type { ViewProps } from 'react-native';
|
|
3
|
+
import { kAssert } from '@react-native-kakao/core';
|
|
4
|
+
|
|
5
|
+
import NativeKakaoMapComponent from '../spec/RNCKakaoMapViewNativeComponent';
|
|
6
|
+
import type { Camera } from '../type/type';
|
|
7
|
+
import { Const } from '../util/Const';
|
|
8
|
+
import { nullCamera } from '../util/Util';
|
|
9
|
+
|
|
10
|
+
interface KakaoMapProps extends ViewProps {
|
|
11
|
+
baseMapType?: 'map' | 'skyview';
|
|
12
|
+
overlays?: ('hill_shading' | 'roadview_line' | 'bicycle_road' | 'hybrid')[];
|
|
13
|
+
camera?: Camera;
|
|
14
|
+
initialCamera?: Camera;
|
|
15
|
+
cameraMinLevel?: number;
|
|
16
|
+
cameraMaxLevel?: number;
|
|
17
|
+
cameraAnimationDuration?: number;
|
|
18
|
+
|
|
19
|
+
buildingScale?: number;
|
|
20
|
+
poiEnabled?: boolean;
|
|
21
|
+
poiClickable?: boolean;
|
|
22
|
+
poiScale?: 'small' | 'regular' | 'large' | 'xlarge';
|
|
23
|
+
language?: 'ko' | 'en';
|
|
24
|
+
|
|
25
|
+
isShowScaleBar?: boolean;
|
|
26
|
+
isShowCompass?: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface KakaoMapRef {}
|
|
29
|
+
|
|
30
|
+
const KakaoMapView = forwardRef(
|
|
31
|
+
(
|
|
32
|
+
{
|
|
33
|
+
baseMapType = 'map',
|
|
34
|
+
buildingScale = 0.5,
|
|
35
|
+
poiEnabled = true,
|
|
36
|
+
poiClickable = true,
|
|
37
|
+
poiScale = 'regular',
|
|
38
|
+
language,
|
|
39
|
+
overlays,
|
|
40
|
+
camera: cameraProp,
|
|
41
|
+
cameraMinLevel = Const.nullNumber,
|
|
42
|
+
cameraMaxLevel = Const.nullNumber,
|
|
43
|
+
cameraAnimationDuration = 0,
|
|
44
|
+
isShowScaleBar = true,
|
|
45
|
+
isShowCompass = true,
|
|
46
|
+
...rest
|
|
47
|
+
}: KakaoMapProps,
|
|
48
|
+
ref: ForwardedRef<KakaoMapRef>,
|
|
49
|
+
) => {
|
|
50
|
+
kAssert(
|
|
51
|
+
buildingScale >= 0 && buildingScale <= 1,
|
|
52
|
+
'[KakaoMapView] buildingScale range should be 0..1',
|
|
53
|
+
);
|
|
54
|
+
useImperativeHandle(ref, () => ({}), []);
|
|
55
|
+
|
|
56
|
+
const camera: Camera = useMemo(() => {
|
|
57
|
+
return { ...nullCamera, ...cameraProp };
|
|
58
|
+
}, [cameraProp]);
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<NativeKakaoMapComponent
|
|
62
|
+
baseMapType={baseMapType}
|
|
63
|
+
buildingScale={buildingScale}
|
|
64
|
+
camera={camera}
|
|
65
|
+
cameraMinLevel={cameraMinLevel}
|
|
66
|
+
cameraMaxLevel={cameraMaxLevel}
|
|
67
|
+
cameraAnimationDuration={cameraAnimationDuration}
|
|
68
|
+
poiEnabled={poiEnabled}
|
|
69
|
+
poiClickable={poiClickable}
|
|
70
|
+
poiScale={poiScale}
|
|
71
|
+
language={language}
|
|
72
|
+
overlays={overlays}
|
|
73
|
+
isShowScaleBar={isShowScaleBar}
|
|
74
|
+
isShowCompass={isShowCompass}
|
|
75
|
+
{...rest}
|
|
76
|
+
/>
|
|
77
|
+
);
|
|
78
|
+
},
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
export { KakaoMapView };
|
|
82
|
+
export type { KakaoMapProps, KakaoMapRef };
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Platform } from 'react-native';
|
|
2
|
+
|
|
3
|
+
import type { KakaoMapProps, KakaoMapRef } from './component/KakaoMapView';
|
|
4
|
+
import { KakaoMapView } from './component/KakaoMapView';
|
|
5
|
+
import type { Spec } from './spec/NativeKakaoMap';
|
|
6
|
+
|
|
7
|
+
const LINKING_ERROR =
|
|
8
|
+
"The package '@react-native-kakao/map' doesn't seem to be linked. Make sure: \n\n" +
|
|
9
|
+
Platform.select({ ios: "- You have run 'pod install'\n", default: '' }) +
|
|
10
|
+
'- You rebuilt the app after installing the package\n' +
|
|
11
|
+
'- You are not using Expo Go\n';
|
|
12
|
+
|
|
13
|
+
const isTurboModuleEnabled = global.__turboModuleProxy != null;
|
|
14
|
+
|
|
15
|
+
if (!isTurboModuleEnabled) {
|
|
16
|
+
throw new Error('The package @react-native-kakao/map only supports fabric');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const Module = require('./spec/NativeKakaoMap').default;
|
|
20
|
+
|
|
21
|
+
const Native: Spec = Module
|
|
22
|
+
? Module
|
|
23
|
+
: new Proxy(
|
|
24
|
+
{},
|
|
25
|
+
{
|
|
26
|
+
get() {
|
|
27
|
+
throw new Error(LINKING_ERROR);
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
);
|
|
31
|
+
// todo remove
|
|
32
|
+
console.log(Native);
|
|
33
|
+
|
|
34
|
+
const KakaoMap = {
|
|
35
|
+
initializeKakaoMapSDK: async (appKey: string) => {
|
|
36
|
+
return await Native.initializeKakaoMapSDK(appKey);
|
|
37
|
+
},
|
|
38
|
+
};
|
|
39
|
+
export default KakaoMapView;
|
|
40
|
+
export type KakaoMapAPI = typeof KakaoMap;
|
|
41
|
+
|
|
42
|
+
export { KakaoMapView, KakaoMap };
|
|
43
|
+
export type { KakaoMapProps, KakaoMapRef };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export interface Spec extends TurboModule {
|
|
5
|
+
initializeKakaoMapSDK(appKey: string): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('RNCKakaoMap');
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
import type { Double } from 'react-native/Libraries/Types/CodegenTypes';
|
|
3
|
+
import codegenNativeCommands from 'react-native/Libraries/Utilities/codegenNativeCommands';
|
|
4
|
+
import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';
|
|
5
|
+
|
|
6
|
+
interface Camera {
|
|
7
|
+
lat: Double;
|
|
8
|
+
lng: Double;
|
|
9
|
+
tilt?: Double;
|
|
10
|
+
rotation?: Double;
|
|
11
|
+
zoomLevel?: Double;
|
|
12
|
+
}
|
|
13
|
+
interface Props extends ViewProps {
|
|
14
|
+
buildingScale?: Double;
|
|
15
|
+
overlays?: ReadonlyArray<string>;
|
|
16
|
+
poiEnabled?: boolean;
|
|
17
|
+
poiClickable?: boolean;
|
|
18
|
+
poiScale?: string;
|
|
19
|
+
language?: string;
|
|
20
|
+
baseMapType?: string;
|
|
21
|
+
camera?: Camera;
|
|
22
|
+
initialCamera?: Camera;
|
|
23
|
+
cameraMinLevel?: Double;
|
|
24
|
+
cameraMaxLevel?: Double;
|
|
25
|
+
cameraAnimationDuration?: Double;
|
|
26
|
+
|
|
27
|
+
isShowScaleBar?: boolean;
|
|
28
|
+
isShowCompass?: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// type ComponentType = HostComponent<Props>;
|
|
32
|
+
|
|
33
|
+
interface NativeCommands {}
|
|
34
|
+
|
|
35
|
+
export default codegenNativeComponent<Props>('RNCKakaoMapView');
|
|
36
|
+
export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
|
|
37
|
+
supportedCommands: [],
|
|
38
|
+
});
|
package/src/type/type.ts
ADDED
package/src/util/Util.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Camera } from '../type/type';
|
|
2
|
+
|
|
3
|
+
import { Const } from './Const';
|
|
4
|
+
|
|
5
|
+
export const nullCamera: Required<Camera> = {
|
|
6
|
+
lat: Const.nullNumber,
|
|
7
|
+
lng: Const.nullNumber,
|
|
8
|
+
tilt: Const.nullNumber,
|
|
9
|
+
rotation: Const.nullNumber,
|
|
10
|
+
zoomLevel: Const.nullNumber,
|
|
11
|
+
};
|