@granite-js/naver-map 1.0.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/GraniteNaverMap.podspec +81 -0
  3. package/android/build.gradle +160 -0
  4. package/android/gradle.properties +5 -0
  5. package/android/src/builtinProvider/java/run/granite/navermap/builtinProvider/BuiltInGraniteNaverMapProvider.kt +549 -0
  6. package/android/src/main/AndroidManifest.xml +3 -0
  7. package/android/src/main/java/run/granite/navermap/GraniteNaverMapEvents.kt +91 -0
  8. package/android/src/main/java/run/granite/navermap/GraniteNaverMapPackage.kt +16 -0
  9. package/android/src/main/java/run/granite/navermap/GraniteNaverMapProvider.kt +242 -0
  10. package/android/src/main/java/run/granite/navermap/GraniteNaverMapRegistry.kt +116 -0
  11. package/android/src/main/java/run/granite/navermap/GraniteNaverMapView.kt +732 -0
  12. package/android/src/newarch/java/run/granite/navermap/GraniteNaverMapViewManager.kt +446 -0
  13. package/android/src/oldarch/java/run/granite/navermap/GraniteNaverMapViewManager.kt +249 -0
  14. package/dist/module/NaverMapView.js +110 -0
  15. package/dist/module/NaverMapView.js.map +1 -0
  16. package/dist/module/index.js +6 -0
  17. package/dist/module/index.js.map +1 -0
  18. package/dist/module/internals/colorUtils.js +624 -0
  19. package/dist/module/internals/colorUtils.js.map +1 -0
  20. package/dist/module/internals/context.js +8 -0
  21. package/dist/module/internals/context.js.map +1 -0
  22. package/dist/module/internals/id.js +10 -0
  23. package/dist/module/internals/id.js.map +1 -0
  24. package/dist/module/internals/useMapOverlay.js +44 -0
  25. package/dist/module/internals/useMapOverlay.js.map +1 -0
  26. package/dist/module/internals/usePreservedReference.js +36 -0
  27. package/dist/module/internals/usePreservedReference.js.map +1 -0
  28. package/dist/module/overlays/ArrowheadPath.js +37 -0
  29. package/dist/module/overlays/ArrowheadPath.js.map +1 -0
  30. package/dist/module/overlays/Circle.js +35 -0
  31. package/dist/module/overlays/Circle.js.map +1 -0
  32. package/dist/module/overlays/GroundOverlay.js +30 -0
  33. package/dist/module/overlays/GroundOverlay.js.map +1 -0
  34. package/dist/module/overlays/InfoWindow.js +32 -0
  35. package/dist/module/overlays/InfoWindow.js.map +1 -0
  36. package/dist/module/overlays/Marker.js +37 -0
  37. package/dist/module/overlays/Marker.js.map +1 -0
  38. package/dist/module/overlays/Path.js +41 -0
  39. package/dist/module/overlays/Path.js.map +1 -0
  40. package/dist/module/overlays/Polygon.js +51 -0
  41. package/dist/module/overlays/Polygon.js.map +1 -0
  42. package/dist/module/overlays/Polyline.js +60 -0
  43. package/dist/module/overlays/Polyline.js.map +1 -0
  44. package/dist/module/overlays/index.js +11 -0
  45. package/dist/module/overlays/index.js.map +1 -0
  46. package/dist/module/package.json +1 -0
  47. package/dist/module/specs/GraniteNaverMapViewNativeComponent.ts +352 -0
  48. package/dist/module/types/Coord.js +2 -0
  49. package/dist/module/types/Coord.js.map +1 -0
  50. package/dist/module/types/index.js +29 -0
  51. package/dist/module/types/index.js.map +1 -0
  52. package/dist/typescript/NaverMapView.d.ts +41 -0
  53. package/dist/typescript/index.d.ts +3 -0
  54. package/dist/typescript/internals/colorUtils.d.ts +10 -0
  55. package/dist/typescript/internals/context.d.ts +8 -0
  56. package/dist/typescript/internals/id.d.ts +1 -0
  57. package/dist/typescript/internals/useMapOverlay.d.ts +15 -0
  58. package/dist/typescript/internals/usePreservedReference.d.ts +6 -0
  59. package/dist/typescript/overlays/ArrowheadPath.d.ts +11 -0
  60. package/dist/typescript/overlays/Circle.d.ts +10 -0
  61. package/dist/typescript/overlays/GroundOverlay.d.ts +11 -0
  62. package/dist/typescript/overlays/InfoWindow.d.ts +14 -0
  63. package/dist/typescript/overlays/Marker.d.ts +16 -0
  64. package/dist/typescript/overlays/Path.d.ts +15 -0
  65. package/dist/typescript/overlays/Polygon.d.ts +10 -0
  66. package/dist/typescript/overlays/Polyline.d.ts +11 -0
  67. package/dist/typescript/overlays/index.d.ts +16 -0
  68. package/dist/typescript/specs/GraniteNaverMapViewNativeComponent.d.ts +92 -0
  69. package/dist/typescript/types/Coord.d.ts +4 -0
  70. package/dist/typescript/types/index.d.ts +55 -0
  71. package/ios/GraniteNaverMap-Bridging-Header.h +20 -0
  72. package/ios/GraniteNaverMapProvider.swift +312 -0
  73. package/ios/GraniteNaverMapRegistry.swift +91 -0
  74. package/ios/GraniteNaverMapView.h +15 -0
  75. package/ios/GraniteNaverMapView.mm +390 -0
  76. package/ios/GraniteNaverMapViewImpl.swift +496 -0
  77. package/ios/GraniteNaverMapViewManager.m +67 -0
  78. package/ios/GraniteNaverMapViewManager.swift +133 -0
  79. package/ios/GraniteNaverMapViewWrapper.swift +215 -0
  80. package/ios/builtinProvider/BuiltInNaverMapProvider.swift +489 -0
  81. package/ios/builtinProvider/GraniteNaverMapMarkerData.swift +66 -0
  82. package/ios/builtinProvider/NMFMarker+Extension.swift +65 -0
  83. package/ios/builtinProvider/RCTConvert+NMFMapView.h +17 -0
  84. package/ios/builtinProvider/RCTConvert+NMFMapView.m +67 -0
  85. package/package.json +103 -0
  86. package/src/NaverMapView.tsx +168 -0
  87. package/src/index.tsx +3 -0
  88. package/src/internals/colorUtils.ts +697 -0
  89. package/src/internals/context.ts +14 -0
  90. package/src/internals/id.ts +9 -0
  91. package/src/internals/useMapOverlay.ts +59 -0
  92. package/src/internals/usePreservedReference.ts +41 -0
  93. package/src/overlays/ArrowheadPath.ts +71 -0
  94. package/src/overlays/Circle.ts +68 -0
  95. package/src/overlays/GroundOverlay.ts +62 -0
  96. package/src/overlays/InfoWindow.ts +68 -0
  97. package/src/overlays/Marker.ts +83 -0
  98. package/src/overlays/Path.ts +87 -0
  99. package/src/overlays/Polygon.ts +83 -0
  100. package/src/overlays/Polyline.ts +93 -0
  101. package/src/overlays/index.ts +23 -0
  102. package/src/specs/GraniteNaverMapViewNativeComponent.ts +352 -0
  103. package/src/types/Coord.ts +4 -0
  104. package/src/types/index.ts +78 -0
@@ -0,0 +1,93 @@
1
+ import { type View } from 'react-native';
2
+ import { processColorInput } from '../internals/colorUtils';
3
+ import { useMapOverlay } from '../internals/useMapOverlay';
4
+ import { usePreservedReference } from '../internals/usePreservedReference';
5
+ import { Commands } from '../specs/GraniteNaverMapViewNativeComponent';
6
+ import type { Coord } from '../types/Coord';
7
+
8
+ export interface PolylineProps {
9
+ coordinates: Coord[];
10
+ strokeColor?: number | string;
11
+ strokeWidth?: number;
12
+ zIndex?: number;
13
+ lineCap?: 'butt' | 'round' | 'square';
14
+ lineJoin?: 'bevel' | 'miter' | 'round';
15
+ pattern?: number[];
16
+ }
17
+
18
+ const lineCapToInt = (cap?: string): number => {
19
+ switch (cap) {
20
+ case 'round':
21
+ return 1;
22
+ case 'square':
23
+ return 2;
24
+ default:
25
+ return 0; // butt
26
+ }
27
+ };
28
+
29
+ const lineJoinToInt = (join?: string): number => {
30
+ switch (join) {
31
+ case 'miter':
32
+ return 1;
33
+ case 'round':
34
+ return 2;
35
+ default:
36
+ return 0; // bevel
37
+ }
38
+ };
39
+
40
+ const add = (v: View, id: string, args: PolylineProps) => {
41
+ const strokeColor = processColorInput(args.strokeColor, 0xff000000);
42
+ const coordsJson = JSON.stringify(args.coordinates);
43
+ const patternJson = JSON.stringify(args.pattern ?? []);
44
+
45
+ Commands.addPolyline(
46
+ v as any,
47
+ id,
48
+ coordsJson,
49
+ args.strokeWidth ?? 1,
50
+ strokeColor,
51
+ args.zIndex ?? 0,
52
+ lineCapToInt(args.lineCap),
53
+ lineJoinToInt(args.lineJoin),
54
+ patternJson
55
+ );
56
+ };
57
+
58
+ const update = (v: View, id: string, args: PolylineProps) => {
59
+ const strokeColor = processColorInput(args.strokeColor, 0xff000000);
60
+ const coordsJson = JSON.stringify(args.coordinates);
61
+ const patternJson = JSON.stringify(args.pattern ?? []);
62
+
63
+ Commands.updatePolyline(
64
+ v as any,
65
+ id,
66
+ coordsJson,
67
+ args.strokeWidth ?? 1,
68
+ strokeColor,
69
+ args.zIndex ?? 0,
70
+ lineCapToInt(args.lineCap),
71
+ lineJoinToInt(args.lineJoin),
72
+ patternJson
73
+ );
74
+ };
75
+
76
+ const remove = (v: View, id: string) => {
77
+ Commands.removePolyline(v as any, id);
78
+ };
79
+
80
+ const methods = { add, update, remove };
81
+
82
+ export function Polyline(props: PolylineProps) {
83
+ const preserved = usePreservedReference(props);
84
+
85
+ useMapOverlay<object, PolylineProps>({
86
+ registrySelector: (c) => c.markers, // reuse markers registry for now
87
+ methods,
88
+ props: preserved,
89
+ eventListeners: {},
90
+ });
91
+
92
+ return null;
93
+ }
@@ -0,0 +1,23 @@
1
+ export { Marker } from './Marker';
2
+ export type { MarkerProps, MarkerEventListeners } from './Marker';
3
+
4
+ export { Polyline } from './Polyline';
5
+ export type { PolylineProps } from './Polyline';
6
+
7
+ export { Polygon } from './Polygon';
8
+ export type { PolygonProps } from './Polygon';
9
+
10
+ export { Circle } from './Circle';
11
+ export type { CircleProps } from './Circle';
12
+
13
+ export { Path } from './Path';
14
+ export type { PathProps } from './Path';
15
+
16
+ export { ArrowheadPath } from './ArrowheadPath';
17
+ export type { ArrowheadPathProps } from './ArrowheadPath';
18
+
19
+ export { GroundOverlay } from './GroundOverlay';
20
+ export type { GroundOverlayProps } from './GroundOverlay';
21
+
22
+ export { InfoWindow } from './InfoWindow';
23
+ export type { InfoWindowProps, InfoWindowEventListeners } from './InfoWindow';
@@ -0,0 +1,352 @@
1
+ import type { HostComponent, ViewProps } from 'react-native';
2
+ import type { DirectEventHandler, Double, Float, Int32, WithDefault } 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
+ // ============================================================
7
+ // Event Types
8
+ // ============================================================
9
+
10
+ export type OnCameraChangeEvent = Readonly<{
11
+ latitude: Double;
12
+ longitude: Double;
13
+ zoom: Double;
14
+ }>;
15
+
16
+ export type OnTouchEvent = Readonly<{
17
+ reason: Int32;
18
+ animated: boolean;
19
+ }>;
20
+
21
+ export type OnMapClickEvent = Readonly<{
22
+ x: Double;
23
+ y: Double;
24
+ latitude: Double;
25
+ longitude: Double;
26
+ }>;
27
+
28
+ export type OnMarkerClickEvent = Readonly<{
29
+ id: string;
30
+ }>;
31
+
32
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
33
+ export type OnInitializedEvent = Readonly<{}>;
34
+
35
+ // Center prop type
36
+ type CenterProp = Readonly<{
37
+ latitude: Double;
38
+ longitude: Double;
39
+ zoom?: Double;
40
+ tilt?: Double;
41
+ bearing?: Double;
42
+ }>;
43
+
44
+ // Padding prop type
45
+ type PaddingProp = Readonly<{
46
+ top?: Double;
47
+ left?: Double;
48
+ bottom?: Double;
49
+ right?: Double;
50
+ }>;
51
+
52
+ export interface NativeProps extends ViewProps {
53
+ // Camera
54
+ center?: CenterProp;
55
+
56
+ // UI Controls
57
+ showsMyLocationButton?: boolean;
58
+ compass?: boolean;
59
+ scaleBar?: boolean;
60
+ zoomControl?: boolean;
61
+
62
+ // Map settings
63
+ mapType?: WithDefault<Int32, 0>;
64
+ minZoomLevel?: WithDefault<Double, 0>;
65
+ maxZoomLevel?: WithDefault<Double, 21>;
66
+ buildingHeight?: WithDefault<Float, 1>;
67
+ nightMode?: boolean;
68
+ mapPadding?: PaddingProp;
69
+ locationTrackingMode?: WithDefault<Int32, 0>;
70
+
71
+ // Gestures
72
+ scrollGesturesEnabled?: WithDefault<boolean, true>;
73
+ zoomGesturesEnabled?: WithDefault<boolean, true>;
74
+ tiltGesturesEnabled?: WithDefault<boolean, true>;
75
+ rotateGesturesEnabled?: WithDefault<boolean, true>;
76
+ stopGesturesEnabled?: WithDefault<boolean, true>;
77
+
78
+ // Events
79
+ onInitialized?: DirectEventHandler<OnInitializedEvent>;
80
+ onCameraChange?: DirectEventHandler<OnCameraChangeEvent>;
81
+ onTouch?: DirectEventHandler<OnTouchEvent>;
82
+ onMapClick?: DirectEventHandler<OnMapClickEvent>;
83
+ onMarkerClick?: DirectEventHandler<OnMarkerClickEvent>;
84
+ }
85
+
86
+ type ComponentType = HostComponent<NativeProps>;
87
+
88
+ interface NativeCommands {
89
+ animateToCoordinate: (viewRef: React.ElementRef<ComponentType>, latitude: Double, longitude: Double) => void;
90
+ animateToTwoCoordinates: (
91
+ viewRef: React.ElementRef<ComponentType>,
92
+ lat1: Double,
93
+ lng1: Double,
94
+ lat2: Double,
95
+ lng2: Double
96
+ ) => void;
97
+ animateToRegion: (
98
+ viewRef: React.ElementRef<ComponentType>,
99
+ latitude: Double,
100
+ longitude: Double,
101
+ latitudeDelta: Double,
102
+ longitudeDelta: Double
103
+ ) => void;
104
+ setLayerGroupEnabled: (viewRef: React.ElementRef<ComponentType>, group: string, enabled: boolean) => void;
105
+ // Marker
106
+ addMarker: (
107
+ viewRef: React.ElementRef<ComponentType>,
108
+ identifier: string,
109
+ latitude: Double,
110
+ longitude: Double,
111
+ width: Int32,
112
+ height: Int32,
113
+ zIndex: Int32,
114
+ rotation: Float,
115
+ flat: boolean,
116
+ alpha: Float,
117
+ pinColor: Int32,
118
+ image: string
119
+ ) => void;
120
+ updateMarker: (
121
+ viewRef: React.ElementRef<ComponentType>,
122
+ identifier: string,
123
+ latitude: Double,
124
+ longitude: Double,
125
+ width: Int32,
126
+ height: Int32,
127
+ zIndex: Int32,
128
+ rotation: Float,
129
+ flat: boolean,
130
+ alpha: Float,
131
+ pinColor: Int32,
132
+ image: string
133
+ ) => void;
134
+ removeMarker: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
135
+ // Polyline
136
+ addPolyline: (
137
+ viewRef: React.ElementRef<ComponentType>,
138
+ identifier: string,
139
+ coordsJson: string,
140
+ strokeWidth: Float,
141
+ strokeColor: Int32,
142
+ zIndex: Int32,
143
+ lineCap: Int32,
144
+ lineJoin: Int32,
145
+ patternJson: string
146
+ ) => void;
147
+ updatePolyline: (
148
+ viewRef: React.ElementRef<ComponentType>,
149
+ identifier: string,
150
+ coordsJson: string,
151
+ strokeWidth: Float,
152
+ strokeColor: Int32,
153
+ zIndex: Int32,
154
+ lineCap: Int32,
155
+ lineJoin: Int32,
156
+ patternJson: string
157
+ ) => void;
158
+ removePolyline: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
159
+ // Polygon
160
+ addPolygon: (
161
+ viewRef: React.ElementRef<ComponentType>,
162
+ identifier: string,
163
+ coordsJson: string,
164
+ holesJson: string,
165
+ fillColor: Int32,
166
+ strokeColor: Int32,
167
+ strokeWidth: Float,
168
+ zIndex: Int32
169
+ ) => void;
170
+ updatePolygon: (
171
+ viewRef: React.ElementRef<ComponentType>,
172
+ identifier: string,
173
+ coordsJson: string,
174
+ holesJson: string,
175
+ fillColor: Int32,
176
+ strokeColor: Int32,
177
+ strokeWidth: Float,
178
+ zIndex: Int32
179
+ ) => void;
180
+ removePolygon: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
181
+ // Circle
182
+ addCircle: (
183
+ viewRef: React.ElementRef<ComponentType>,
184
+ identifier: string,
185
+ latitude: Double,
186
+ longitude: Double,
187
+ radius: Double,
188
+ fillColor: Int32,
189
+ strokeColor: Int32,
190
+ strokeWidth: Float,
191
+ zIndex: Int32
192
+ ) => void;
193
+ updateCircle: (
194
+ viewRef: React.ElementRef<ComponentType>,
195
+ identifier: string,
196
+ latitude: Double,
197
+ longitude: Double,
198
+ radius: Double,
199
+ fillColor: Int32,
200
+ strokeColor: Int32,
201
+ strokeWidth: Float,
202
+ zIndex: Int32
203
+ ) => void;
204
+ removeCircle: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
205
+ // Path
206
+ addPath: (
207
+ viewRef: React.ElementRef<ComponentType>,
208
+ identifier: string,
209
+ coordsJson: string,
210
+ width: Float,
211
+ outlineWidth: Float,
212
+ color: Int32,
213
+ outlineColor: Int32,
214
+ passedColor: Int32,
215
+ passedOutlineColor: Int32,
216
+ patternImage: string,
217
+ patternInterval: Int32,
218
+ progress: Float,
219
+ zIndex: Int32
220
+ ) => void;
221
+ updatePath: (
222
+ viewRef: React.ElementRef<ComponentType>,
223
+ identifier: string,
224
+ coordsJson: string,
225
+ width: Float,
226
+ outlineWidth: Float,
227
+ color: Int32,
228
+ outlineColor: Int32,
229
+ passedColor: Int32,
230
+ passedOutlineColor: Int32,
231
+ patternImage: string,
232
+ patternInterval: Int32,
233
+ progress: Float,
234
+ zIndex: Int32
235
+ ) => void;
236
+ removePath: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
237
+ // ArrowheadPath
238
+ addArrowheadPath: (
239
+ viewRef: React.ElementRef<ComponentType>,
240
+ identifier: string,
241
+ coordsJson: string,
242
+ width: Float,
243
+ outlineWidth: Float,
244
+ color: Int32,
245
+ outlineColor: Int32,
246
+ headSizeRatio: Float,
247
+ zIndex: Int32
248
+ ) => void;
249
+ updateArrowheadPath: (
250
+ viewRef: React.ElementRef<ComponentType>,
251
+ identifier: string,
252
+ coordsJson: string,
253
+ width: Float,
254
+ outlineWidth: Float,
255
+ color: Int32,
256
+ outlineColor: Int32,
257
+ headSizeRatio: Float,
258
+ zIndex: Int32
259
+ ) => void;
260
+ removeArrowheadPath: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
261
+ // GroundOverlay
262
+ addGroundOverlay: (
263
+ viewRef: React.ElementRef<ComponentType>,
264
+ identifier: string,
265
+ southWestLat: Double,
266
+ southWestLng: Double,
267
+ northEastLat: Double,
268
+ northEastLng: Double,
269
+ image: string,
270
+ alpha: Float,
271
+ zIndex: Int32
272
+ ) => void;
273
+ updateGroundOverlay: (
274
+ viewRef: React.ElementRef<ComponentType>,
275
+ identifier: string,
276
+ southWestLat: Double,
277
+ southWestLng: Double,
278
+ northEastLat: Double,
279
+ northEastLng: Double,
280
+ image: string,
281
+ alpha: Float,
282
+ zIndex: Int32
283
+ ) => void;
284
+ removeGroundOverlay: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
285
+ // InfoWindow
286
+ addInfoWindow: (
287
+ viewRef: React.ElementRef<ComponentType>,
288
+ identifier: string,
289
+ latitude: Double,
290
+ longitude: Double,
291
+ text: string,
292
+ alpha: Float,
293
+ zIndex: Int32,
294
+ offsetX: Int32,
295
+ offsetY: Int32
296
+ ) => void;
297
+ updateInfoWindow: (
298
+ viewRef: React.ElementRef<ComponentType>,
299
+ identifier: string,
300
+ latitude: Double,
301
+ longitude: Double,
302
+ text: string,
303
+ alpha: Float,
304
+ zIndex: Int32,
305
+ offsetX: Int32,
306
+ offsetY: Int32
307
+ ) => void;
308
+ removeInfoWindow: (viewRef: React.ElementRef<ComponentType>, identifier: string) => void;
309
+ }
310
+
311
+ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
312
+ supportedCommands: [
313
+ 'animateToCoordinate',
314
+ 'animateToTwoCoordinates',
315
+ 'animateToRegion',
316
+ 'setLayerGroupEnabled',
317
+ // Marker
318
+ 'addMarker',
319
+ 'updateMarker',
320
+ 'removeMarker',
321
+ // Polyline
322
+ 'addPolyline',
323
+ 'updatePolyline',
324
+ 'removePolyline',
325
+ // Polygon
326
+ 'addPolygon',
327
+ 'updatePolygon',
328
+ 'removePolygon',
329
+ // Circle
330
+ 'addCircle',
331
+ 'updateCircle',
332
+ 'removeCircle',
333
+ // Path
334
+ 'addPath',
335
+ 'updatePath',
336
+ 'removePath',
337
+ // ArrowheadPath
338
+ 'addArrowheadPath',
339
+ 'updateArrowheadPath',
340
+ 'removeArrowheadPath',
341
+ // GroundOverlay
342
+ 'addGroundOverlay',
343
+ 'updateGroundOverlay',
344
+ 'removeGroundOverlay',
345
+ // InfoWindow
346
+ 'addInfoWindow',
347
+ 'updateInfoWindow',
348
+ 'removeInfoWindow',
349
+ ],
350
+ });
351
+
352
+ export default codegenNativeComponent<NativeProps>('GraniteNaverMapView') as ComponentType;
@@ -0,0 +1,4 @@
1
+ export interface Coord {
2
+ latitude: number;
3
+ longitude: number;
4
+ }
@@ -0,0 +1,78 @@
1
+ import type { NativeSyntheticEvent } from 'react-native';
2
+ import type {
3
+ OnCameraChangeEvent,
4
+ OnTouchEvent,
5
+ OnMapClickEvent,
6
+ OnMarkerClickEvent,
7
+ } from '../specs/GraniteNaverMapViewNativeComponent';
8
+
9
+ export * from './Coord';
10
+
11
+ // ============================================================
12
+ // Event Types
13
+ // ============================================================
14
+
15
+ /**
16
+ * Camera change event data
17
+ */
18
+ export interface CameraChangeEvent {
19
+ latitude: number;
20
+ longitude: number;
21
+ zoom: number;
22
+ }
23
+
24
+ /**
25
+ * Touch event data
26
+ */
27
+ export interface TouchEvent {
28
+ reason: number;
29
+ animated: boolean;
30
+ }
31
+
32
+ /**
33
+ * Map click event data
34
+ */
35
+ export interface MapClickEvent {
36
+ x: number;
37
+ y: number;
38
+ latitude: number;
39
+ longitude: number;
40
+ }
41
+
42
+ /**
43
+ * Marker click event data
44
+ */
45
+ export interface MarkerClickEvent {
46
+ id: string;
47
+ }
48
+
49
+ // ============================================================
50
+ // Component Props
51
+ // ============================================================
52
+
53
+ export interface NaverMapViewProps {
54
+ /**
55
+ * Callback when map is initialized
56
+ */
57
+ onInitialized?: () => void;
58
+
59
+ /**
60
+ * Callback when camera changes
61
+ */
62
+ onCameraChange?: (event: NativeSyntheticEvent<OnCameraChangeEvent>) => void;
63
+
64
+ /**
65
+ * Callback when map is touched
66
+ */
67
+ onTouch?: (event: NativeSyntheticEvent<OnTouchEvent>) => void;
68
+
69
+ /**
70
+ * Callback when map is clicked
71
+ */
72
+ onMapClick?: (event: NativeSyntheticEvent<OnMapClickEvent>) => void;
73
+
74
+ /**
75
+ * Callback when marker is clicked
76
+ */
77
+ onMarkerClick?: (event: NativeSyntheticEvent<OnMarkerClickEvent>) => void;
78
+ }