@rousen/react-naver-maps 0.0.7 → 0.0.9

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/README.md CHANGED
@@ -1,271 +1,112 @@
1
- # react-naver-maps
2
-
3
- 네이버 지도 API를 React에서 쉽게 사용할 수 있도록 만든 라이브러리입니다.
4
-
5
- ## 설치
6
-
7
- ```bash
8
- npm install @rousen/react-naver-maps
9
- # 또는
10
- yarn add @rousen/react-naver-maps
11
- # 또는
12
- pnpm add @rousen/react-naver-maps
13
- ```
14
-
15
- ## 사용법
16
-
17
- ### 기본 사용법
18
-
19
- ```tsx
20
- import { Map, MapProvider, Marker } from "react-naver-maps";
21
-
22
- function App() {
23
- return (
24
- <MapProvider>
25
- <Map ncpKeyId="your-ncp-key-id">
26
- <Marker position={[127.0276, 37.4979]} />
27
- </Map>
28
- </MapProvider>
29
- );
30
- }
31
- ```
32
-
33
- ### MapProvider로 감싸기
34
-
35
- `MapProvider`는 여러 맵 인스턴스를 관리하고 `useMap` 훅을 통해 접근할 수 있게 해줍니다.
36
-
37
- ```tsx
38
- import { Map, MapProvider, Marker, useMap } from "react-naver-maps";
39
-
40
- function MyComponent() {
41
- const { current } = useMap(); // 현재 맵 인스턴스 접근
42
-
43
- const handleClick = () => {
44
- if (current) {
45
- current.setCenter(new naver.maps.LatLng(37.4979, 127.0276));
46
- }
47
- };
48
-
49
- return <button onClick={handleClick}>중심 이동</button>;
50
- }
51
- ```
52
-
53
- ### 주요 컴포넌트
54
-
55
- - **Map**: 네이버 지도 컨테이너 컴포넌트
56
- - **Marker**: 지도에 마커를 표시하는 컴포넌트
57
- - **Overlay**: 커스텀 오버레이 컴포넌트 (React 컴포넌트를 지도에 표시)
58
- - **Polygon**: 다각형 영역을 표시하는 컴포넌트
59
- - **Polyline**: 선을 표시하는 컴포넌트
60
-
61
- ### Map 컴포넌트 Props
62
-
63
- ```tsx
64
- interface MapProps {
65
- ncpKeyId: string; // 필수: NCP 클라이언트 ID
66
- id?: string; // 맵 인스턴스 ID (여러 맵 관리 시 사용)
67
- mapTypeId?: naver.maps.MapTypeId; // 지도 타입 (기본값: "normal")
68
- mapOptions?: naver.maps.MapOptions; // 네이버 맵 옵션
69
- submodules?: NaverMapsSubmodule[]; // 서브모듈 (gl, traffic, transit 등)
70
- style?: React.CSSProperties; // 컨테이너 스타일
71
- onLoad?: (map: naver.maps.Map) => void;
72
- onZoomStart?: (map: naver.maps.Map) => void;
73
- onZoomEnd?: (map: naver.maps.Map) => void;
74
- onDragStart?: (map: naver.maps.Map) => void;
75
- onDragEnd?: (map: naver.maps.Map) => void;
76
- }
77
- ```
78
-
79
- ### Marker 컴포넌트 예제
80
-
81
- ```tsx
82
- <Marker
83
- position={[127.0276, 37.4979]}
84
- title="마커 제목"
85
- onClick={(event) => console.log("마커 클릭", event)}
86
- onMouseEnter={(marker) => console.log("마우스 진입", marker)}
87
- />
88
- ```
89
-
90
- ### Overlay 컴포넌트 예제
91
-
92
- ```tsx
93
- <Overlay position={[127.0276, 37.4979]} zIndex={100} anchor="center">
94
- <div style={{ background: "white", padding: "10px" }}>
95
- 커스텀 오버레이 내용
96
- </div>
97
- </Overlay>
98
- ```
99
-
100
- ### Polygon 컴포넌트 예제
101
-
102
- ```tsx
103
- <Polygon
104
- paths={[
105
- [127.0276, 37.4979],
106
- [127.0286, 37.4989],
107
- [127.0296, 37.4979],
108
- ]}
109
- fillColor="#ff0000"
110
- fillOpacity={0.3}
111
- strokeColor="#0000ff"
112
- strokeWeight={2}
113
- />
114
- ```
115
-
116
- ### Polyline 컴포넌트 예제
117
-
118
- ```tsx
119
- <Polyline
120
- path={[
121
- [127.0276, 37.4979],
122
- [127.0286, 37.4989],
123
- [127.0296, 37.4979],
124
- ]}
125
- strokeColor="#ff0000"
126
- strokeWeight={3}
127
- onClick={(event) => console.log("선 클릭", event)}
128
- />
129
- ```
130
-
131
- ## API
132
-
133
- ### 컴포넌트
134
-
135
- - `Map` - 네이버 지도 컨테이너 컴포넌트
136
- - `MapProvider` - 맵 인스턴스 관리 프로바이더
137
- - `Marker` - 마커 컴포넌트
138
- - `Overlay` - 커스텀 오버레이 컴포넌트
139
- - `Polygon` - 다각형 컴포넌트
140
- - `Polyline` - 선 컴포넌트
141
-
142
- ### 훅
143
-
144
- - `useMap()` - 현재 맵 인스턴스 및 모든 맵 인스턴스에 접근
145
-
146
- ### 타입
147
-
148
- - `MapProps` - Map 컴포넌트 props 타입
149
- - `MarkerProps` - Marker 컴포넌트 props 타입
150
- - `PolylineProps` - Polyline 컴포넌트 props 타입
151
-
152
- ## 개발
153
-
154
- ### 의존성 설치
155
-
156
- ```bash
157
- npm install
158
- ```
159
-
160
- ### 개발 모드 실행
161
-
162
- ```bash
163
- npm run dev
164
- ```
165
-
166
- ### 빌드
167
-
168
- ```bash
169
- npm run build
170
- ```
171
-
172
- ### Storybook 실행
173
-
174
- ```bash
175
- npm run storybook
176
- ```
177
-
178
- ### Storybook 빌드
179
-
180
- ```bash
181
- npm run build-storybook
182
- ```
183
-
184
- ### 타입 체크
185
-
186
- ```bash
187
- npm run type-check
188
- ```
189
-
190
- ### 린트
191
-
192
- ```bash
193
- npm run lint
194
- ```
195
-
196
- ## 프로젝트 구조
197
-
198
- ```
199
- src/
200
- ├── components/ # React 컴포넌트들
201
- │ ├── Map.tsx # 지도 컴포넌트
202
- │ ├── Map.stories.tsx # Map Storybook 스토리
203
- │ ├── MapProvider.tsx # 맵 컨텍스트 프로바이더 및 useMap 훅
204
- │ ├── Marker.tsx # 마커 컴포넌트
205
- │ ├── Marker.stories.tsx
206
- │ ├── Overlay.tsx # 커스텀 오버레이 컴포넌트
207
- │ ├── Overlay.stories.tsx
208
- │ ├── Polygon.tsx # 다각형 컴포넌트
209
- │ └── Polyline.tsx # 선 컴포넌트
210
- ├── hooks/ # 커스텀 훅들
211
- │ └── useScriptLoader.ts # 네이버 맵스 SDK 스크립트 로더 훅
212
- ├── utils/ # 유틸리티 함수들
213
- │ ├── scriptLoader.ts # 네이버 맵스 SDK 동적 로딩
214
- │ └── customOverlay.ts # 커스텀 오버레이 클래스 생성
215
- ├── const.ts # 상수 정의
216
- └── index.ts # 라이브러리 진입점 (공개 API)
217
- ```
218
-
219
- ### 폴더 구조 설명
220
-
221
- - **`components/`**: 모든 React 컴포넌트와 Storybook 스토리 파일
222
- - `Map.tsx`: 네이버 지도 컨테이너 컴포넌트 및 MapContext 제공
223
- - `MapProvider.tsx`: 여러 맵 인스턴스를 관리하는 Provider와 `useMap` 훅
224
- - `Marker.tsx`, `Overlay.tsx`, `Polygon.tsx`, `Polyline.tsx`: 각종 오버레이 컴포넌트
225
- - **`hooks/`**: 재사용 가능한 커스텀 훅들
226
- - `useScriptLoader.ts`: 네이버 맵스 SDK 스크립트를 동적으로 로드하는 훅
227
- - **`utils/`**: 순수 함수 유틸리티들
228
- - `scriptLoader.ts`: 네이버 맵스 SDK 스크립트 동적 로딩 로직
229
- - `customOverlay.ts`: React 컴포넌트를 네이버 맵스 오버레이로 변환하는 유틸리티
230
- - **`index.ts`**: 라이브러리의 공개 API 진입점
231
-
232
- ## 주요 기능
233
-
234
- - 🗺️ **네이버 지도 통합**: 네이버 지도 API를 React 컴포넌트로 쉽게 사용
235
- - 📍 **다양한 오버레이 지원**: Marker, Overlay, Polygon, Polyline 컴포넌트 제공
236
- - 🎯 **타입 안정성**: TypeScript로 작성되어 완전한 타입 정의 제공
237
- - 🔄 **동적 스크립트 로딩**: 네이버 맵스 SDK를 자동으로 로드
238
- - 🎨 **커스텀 오버레이**: React 컴포넌트를 지도 오버레이로 사용 가능
239
- - 📦 **트리 쉐이킹 지원**: 사용하지 않는 코드는 번들에서 제외
240
- - 🔌 **서브모듈 지원**: GL, Traffic, Transit 등 네이버 맵스 서브모듈 지원
241
- - 🎭 **Storybook**: 컴포넌트 예제 및 문서화
242
-
243
- ## 호환성
244
-
245
- 이 라이브러리는 다음 환경에서 테스트되었습니다:
246
-
247
- - ✅ **Vite** - 완전 지원
248
- - ✅ **Webpack 5** - 완전 지원
249
- - ✅ **Next.js** - 완전 지원
250
- - ✅ **Create React App** - 완전 지원
251
- - ✅ **TypeScript** - 타입 정의 포함
252
- - ✅ **ESM & CommonJS** - 양쪽 모두 지원
253
- - ✅ **트리 쉐이킹** - 지원
254
-
255
- ## 요구사항
256
-
257
- - React >= 16.8.0 (Hooks 지원 필요)
258
- - React DOM >= 16.8.0
259
- - 네이버 클라우드 플랫폼(NCP) 클라이언트 ID
260
-
261
- ## 기술 스택
262
-
263
- - **React** - UI 라이브러리
264
- - **TypeScript** - 타입 안정성
265
- - **Rollup** - 번들러
266
- - **Storybook** - 컴포넌트 문서화 및 개발 환경
267
- - **ESLint** - 코드 품질 관리
268
-
269
- ## 라이선스
270
-
271
- MIT
1
+ # react-naver-maps
2
+
3
+ 네이버 지도 API를 React에서 쉽게 사용할 수 있도록 만든 라이브러리입니다.
4
+
5
+ ## 설치
6
+
7
+ ```bash
8
+ npm install @rousen/react-naver-maps
9
+ # 또는
10
+ yarn add @rousen/react-naver-maps
11
+ # 또는
12
+ pnpm add @rousen/react-naver-maps
13
+ ```
14
+
15
+ ## 빠른 시작
16
+
17
+ ```tsx
18
+ import { Map, MapProvider, Marker } from "@rousen/react-naver-maps";
19
+
20
+ function App() {
21
+ return (
22
+ <Map ncpKeyId="your-ncp-key-id">
23
+ <Marker position={{ x: 127.0276, y: 37.4979 }} />
24
+ </Map>
25
+ );
26
+ }
27
+ ```
28
+
29
+ 더 자세한 사용법과 API 문서는 [문서 사이트](https://your-docusaurus-site.com)를 참고하세요.
30
+
31
+ ## 개발
32
+
33
+ ### 의존성 설치
34
+
35
+ ```bash
36
+ npm install
37
+ ```
38
+
39
+ ### 개발 모드 실행
40
+
41
+ ```bash
42
+ npm run dev
43
+ ```
44
+
45
+ ### 빌드
46
+
47
+ ```bash
48
+ npm run build
49
+ ```
50
+
51
+ ### 타입 체크
52
+
53
+ ```bash
54
+ npm run type-check
55
+ ```
56
+
57
+ ### 린트
58
+
59
+ ```bash
60
+ npm run lint
61
+ ```
62
+
63
+ ## 문서
64
+
65
+ 상세한 사용법, API 문서, 예제는 [문서 사이트](https://your-docusaurus-site.com)에서 확인할 수 있습니다.
66
+
67
+ 로컬에서 문서를 실행하려면:
68
+
69
+ ```bash
70
+ npm run docs:dev
71
+ ```
72
+
73
+ ## 주요 기능
74
+
75
+ - 🗺️ 네이버 지도 API를 React 컴포넌트로 쉽게 사용
76
+ - 📍 Marker, Overlay, Polygon, Polyline 등 다양한 오버레이 지원
77
+ - 🎯 TypeScript로 작성되어 완전한 타입 정의 제공
78
+ - 🔄 네이버 맵스 SDK 자동 로드
79
+ - 🎨 React 컴포넌트를 지도 오버레이로 사용 가능
80
+ - 📦 트리 쉐이킹 지원
81
+ - 🔌 GL, Traffic, Transit 등 서브모듈 지원
82
+ - ⚡ 풍부한 이벤트 핸들러 지원
83
+
84
+ ## 호환성
85
+
86
+ 라이브러리는 다음 환경에서 테스트되었습니다:
87
+
88
+ - ✅ **Vite** - 완전 지원
89
+ - ✅ **Webpack 5** - 완전 지원
90
+ - **Next.js** - 완전 지원
91
+ - ✅ **Create React App** - 완전 지원
92
+ - ✅ **TypeScript** - 타입 정의 포함
93
+ - **ESM & CommonJS** - 양쪽 모두 지원
94
+ - **트리 쉐이킹** - 지원
95
+
96
+ ## 요구사항
97
+
98
+ - React >= 16.8.0 (Hooks 지원 필요)
99
+ - React DOM >= 16.8.0
100
+ - 네이버 클라우드 플랫폼(NCP) 클라이언트 ID
101
+
102
+ ## 기술 스택
103
+
104
+ - **React** - UI 라이브러리
105
+ - **TypeScript** - 타입 안정성
106
+ - **Rollup** - 번들러
107
+ - **Docusaurus** - 문서 사이트 생성
108
+ - **ESLint** - 코드 품질 관리
109
+
110
+ ## 라이선스
111
+
112
+ MIT
@@ -1,31 +1,93 @@
1
1
  import { ReactNode } from "react";
2
2
  import { NaverMapsSubmodule } from "../utils/scriptLoader";
3
+ declare const EVENT_TO_PROP: {
4
+ readonly init: "onInit";
5
+ readonly zoomstart: "onZoomStart";
6
+ readonly zoomend: "onZoomEnd";
7
+ readonly bounds_changed: "onBoundsChanged";
8
+ readonly dragstart: "onDragStart";
9
+ readonly dragend: "onDragEnd";
10
+ readonly idle: "onIdle";
11
+ readonly resize: "onResize";
12
+ readonly scroll: "onScroll";
13
+ readonly addLayer: "onAddLayer";
14
+ readonly center_changed: "onCenterChanged";
15
+ readonly centerPoint_changed: "onCenterPointChanged";
16
+ readonly click: "onClick";
17
+ readonly dbclick: "onDbclick";
18
+ readonly doubletap: "onDoubletap";
19
+ readonly mapType_changed: "onMapTypeChanged";
20
+ readonly mapTypeId_changed: "onMapTypeIdChanged";
21
+ readonly mousedown: "onMousedown";
22
+ readonly mousemove: "onMousemove";
23
+ readonly mouseout: "onMouseout";
24
+ readonly mouseover: "onMouseover";
25
+ readonly mouseup: "onMouseup";
26
+ readonly panning: "onPanning";
27
+ readonly pinch: "onPinch";
28
+ readonly pinch_start: "onPinchStart";
29
+ readonly projection_changed: "onProjectionChanged";
30
+ readonly removeLayer: "onRemoveLayer";
31
+ readonly size_changed: "onSizeChanged";
32
+ };
33
+ type EventKey = keyof typeof EVENT_TO_PROP;
34
+ type PropKey = (typeof EVENT_TO_PROP)[EventKey];
3
35
  interface MapCallbacks {
4
- load?: (map: naver.maps.Map) => void;
5
- zoomstart?: (map: naver.maps.Map) => void;
6
- zoomend?: (map: naver.maps.Map) => void;
7
- dragstart?: (map: naver.maps.Map) => void;
8
- dragend?: (map: naver.maps.Map) => void;
9
- idle?: (event: "idle", map: naver.maps.Map) => void;
10
- resize?: (event: "resize", map: naver.maps.Map) => void;
11
- scroll?: (event: "scroll", map: naver.maps.Map) => void;
36
+ addLayer?: (layer: naver.maps.Layer) => void;
37
+ center_changed?: (center: naver.maps.Coord) => void;
38
+ centerPoint_changed?: (centerPoint: naver.maps.LatLng) => void;
39
+ click?: (event: naver.maps.PointerEvent) => void;
40
+ dbclick?: (event: naver.maps.PointerEvent) => void;
41
+ doubletap?: (event: naver.maps.PointerEvent) => void;
42
+ bounds_changed?: (bounds: naver.maps.Bounds) => void;
43
+ zoomstart?: () => void;
44
+ zoomend?: () => void;
45
+ zoom_changed?: (zoom: number) => void;
46
+ drag?: (event: naver.maps.PointerEvent) => void;
47
+ dragstart?: (event: naver.maps.PointerEvent) => void;
48
+ dragend?: (event: naver.maps.PointerEvent) => void;
49
+ idle?: () => void;
50
+ init?: () => void;
51
+ scroll?: () => void;
52
+ rightclick?: (event: naver.maps.PointerEvent) => void;
53
+ tap?: (event: naver.maps.PointerEvent) => void;
54
+ tiles_loaded?: () => void;
55
+ touchend?: (event: naver.maps.PointerEvent) => void;
56
+ touchstart?: (event: naver.maps.PointerEvent) => void;
57
+ touchmove?: (event: naver.maps.PointerEvent) => void;
58
+ twofintertap?: (event: naver.maps.PointerEvent) => void;
59
+ keydown?: (event: naver.maps.DOMEvent) => void;
60
+ keyup?: (event: naver.maps.DOMEvent) => void;
61
+ longtap?: (event: naver.maps.PointerEvent) => void;
62
+ mapType_changed?: (mapType: naver.maps.MapType) => void;
63
+ mapTypeId_changed?: (mapTypeId: naver.maps.MapTypeId) => void;
64
+ mousedown?: (event: naver.maps.PointerEvent) => void;
65
+ mousemove?: (event: naver.maps.PointerEvent) => void;
66
+ mouseout?: (event: naver.maps.PointerEvent) => void;
67
+ mouseover?: (event: naver.maps.PointerEvent) => void;
68
+ mouseup?: (event: naver.maps.PointerEvent) => void;
69
+ panning?: () => void;
70
+ pinch?: (event: naver.maps.PointerEvent) => void;
71
+ pinch_start?: (event: naver.maps.PointerEvent) => void;
72
+ projection_changed?: (projection: naver.maps.Projection) => void;
73
+ removeLayer?: (layerName: naver.maps.Layer["name"]) => void;
74
+ resize?: () => void;
75
+ size_changed?: (size: naver.maps.Size) => void;
12
76
  }
13
- export interface MapProps {
77
+ type HandlerOfProp<P extends PropKey> = MapCallbacks[{
78
+ [E in EventKey]: (typeof EVENT_TO_PROP)[E] extends P ? E : never;
79
+ }[EventKey]];
80
+ type MapEventProps = {
81
+ [P in PropKey]?: HandlerOfProp<P>;
82
+ };
83
+ export interface MapProps extends MapEventProps {
14
84
  ncpKeyId: string;
15
85
  id?: string;
16
86
  mapTypeId?: naver.maps.MapTypeId;
17
87
  mapOptions?: naver.maps.MapOptions;
18
- children: ReactNode;
88
+ children?: ReactNode;
19
89
  submodules?: NaverMapsSubmodule[];
20
90
  style?: React.CSSProperties;
21
- onLoad?: MapCallbacks["load"];
22
- onZoomStart?: MapCallbacks["zoomstart"];
23
- onZoomEnd?: MapCallbacks["zoomend"];
24
- onDragEnd?: MapCallbacks["dragend"];
25
- onDragStart?: MapCallbacks["dragstart"];
26
- onIdle?: MapCallbacks["idle"];
27
- onResize?: MapCallbacks["resize"];
28
- onScroll?: MapCallbacks["scroll"];
29
91
  }
30
92
  declare const Map: import("react").ForwardRefExoticComponent<MapProps & import("react").RefAttributes<naver.maps.Map>>;
31
93
  export default Map;
@@ -1 +1 @@
1
- {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../src/components/Map.tsx"],"names":[],"mappings":"AACA,OAAO,EAKL,SAAS,EAIV,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAI3D,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IACrC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IAC1C,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IACxC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;IACxD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACpC,WAAW,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;CACnC;AAED,QAAA,MAAM,GAAG,qGAyHR,CAAC;AAIF,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../src/components/Map.tsx"],"names":[],"mappings":"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"}
@@ -1,19 +1,47 @@
1
- interface MarkerClickEvent extends naver.maps.PointerEvent {
2
- overlay: naver.maps.Marker;
3
- domEvent: naver.maps.DOMEvent;
4
- }
1
+ declare const EVENT_TO_PROP: {
2
+ readonly click: "onClick";
3
+ readonly position_changed: "onPositionChanged";
4
+ readonly rightclick: "onRightclick";
5
+ readonly title_changed: "onTitleChanged";
6
+ readonly touchend: "onTouchEnd";
7
+ readonly touchstart: "onTouchStart";
8
+ readonly visible_changed: "onVisibleChanged";
9
+ readonly zindex_changed: "onZIndexChanged";
10
+ readonly clickable_changed: "onClickableChanged";
11
+ readonly dblclick: "onDblclick";
12
+ readonly draggable_changed: "onDraggableChanged";
13
+ readonly icon_changed: "onIconChanged";
14
+ readonly icon_loaded: "onIconLoaded";
15
+ readonly mousedown: "onMousedown";
16
+ readonly mouseup: "onMouseup";
17
+ };
18
+ type EventKey = keyof typeof EVENT_TO_PROP;
19
+ type PropKey = (typeof EVENT_TO_PROP)[EventKey];
5
20
  interface MarkerCallbacks {
6
- click?: (marker: MarkerClickEvent) => void;
7
- mouseenter?: (marker: naver.maps.Marker) => void;
8
- mouseleave?: (marker: naver.maps.Marker) => void;
9
- positionchanged?: (marker: naver.maps.Marker) => void;
21
+ click?: (event: naver.maps.PointerEvent) => void;
22
+ clickable_changed?: (clickable: boolean) => void;
23
+ dblclick?: (event: naver.maps.PointerEvent) => void;
24
+ draggable_changed?: (draggable: boolean) => void;
25
+ icon_changed?: (icon: string | naver.maps.ImageIcon | naver.maps.SymbolIcon | naver.maps.HtmlIcon) => void;
26
+ icon_loaded?: (marker: naver.maps.Marker) => void;
27
+ mousedown?: (event: naver.maps.PointerEvent) => void;
28
+ mouseup?: (event: naver.maps.PointerEvent) => void;
29
+ position_changed?: (position: naver.maps.Coord) => void;
30
+ rightclick?: (event: naver.maps.PointerEvent) => void;
31
+ title_changed?: (title: string) => void;
32
+ touchend?: (event: naver.maps.PointerEvent) => void;
33
+ touchstart?: (event: naver.maps.PointerEvent) => void;
34
+ visible_changed?: (visible: boolean) => void;
35
+ zindex_changed?: (zIndex: number) => void;
10
36
  }
11
- export interface MarkerProps extends naver.maps.MarkerOptions {
12
- onClick?: MarkerCallbacks["click"];
13
- onMouseEnter?: MarkerCallbacks["mouseenter"];
14
- onMouseLeave?: MarkerCallbacks["mouseleave"];
15
- onPositionChanged?: MarkerCallbacks["positionchanged"];
37
+ type HandlerOfProp<P extends PropKey> = MarkerCallbacks[{
38
+ [E in EventKey]: (typeof EVENT_TO_PROP)[E] extends P ? E : never;
39
+ }[EventKey]];
40
+ type MarkerEventProps = {
41
+ [P in PropKey]?: HandlerOfProp<P>;
42
+ };
43
+ export interface MarkerProps extends naver.maps.MarkerOptions, MarkerEventProps {
16
44
  }
17
- declare const Marker: ({ onClick, onMouseEnter, onMouseLeave, onPositionChanged, ...markerOptions }: MarkerProps) => null;
45
+ declare const Marker: ({ position, zIndex, animation, clickable, cursor, draggable, icon, shape, title, visible, ...eventProps }: MarkerProps) => null;
18
46
  export default Marker;
19
47
  //# sourceMappingURL=Marker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../src/components/Marker.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAiB,SAAQ,KAAK,CAAC,IAAI,CAAC,YAAY;IACxD,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;CAC/B;AAED,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC3C,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IACjD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IACjD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;CACvD;AACD,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,IAAI,CAAC,aAAa;IAC3D,OAAO,CAAC,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7C,iBAAiB,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;CACxD;AAED,QAAA,MAAM,MAAM,GAAI,8EAMb,WAAW,SAkDb,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Marker.d.ts","sourceRoot":"","sources":["../../src/components/Marker.tsx"],"names":[],"mappings":"AAIA,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;CAgBT,CAAC;AAEX,KAAK,QAAQ,GAAG,MAAM,OAAO,aAAa,CAAC;AAC3C,KAAK,OAAO,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC;AAEhD,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACpD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,YAAY,CAAC,EAAE,CACb,IAAI,EACA,MAAM,GACN,KAAK,CAAC,IAAI,CAAC,SAAS,GACpB,KAAK,CAAC,IAAI,CAAC,UAAU,GACrB,KAAK,CAAC,IAAI,CAAC,QAAQ,KACpB,IAAI,CAAC;IACV,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAClD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;IACxD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACtD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACpD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACtD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED,KAAK,aAAa,CAAC,CAAC,SAAS,OAAO,IAAI,eAAe,CAAC;KACrD,CAAC,IAAI,QAAQ,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK;CACjE,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEb,KAAK,gBAAgB,GAAG;KACrB,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,IAAI,CAAC,aAAa,EAC9B,gBAAgB;CAAG;AAEvB,QAAA,MAAM,MAAM,GAAI,2GAYb,WAAW,SA6Gb,CAAC;AAEF,eAAe,MAAM,CAAC"}