@mint-ui/map 1.2.0-test.23 → 1.2.0-test.25

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 (26) hide show
  1. package/dist/components/mint-map/core/MintMapController.d.ts +1 -0
  2. package/dist/components/mint-map/core/advanced/woongCanvas/WoongCanvasLayer.d.ts +8 -73
  3. package/dist/components/mint-map/core/advanced/woongCanvas/WoongCanvasLayer.js +38 -88
  4. package/dist/components/mint-map/core/advanced/woongCanvas/index.d.ts +0 -10
  5. package/dist/components/mint-map/core/advanced/woongCanvas/shared/context.d.ts +5 -73
  6. package/dist/components/mint-map/core/advanced/woongCanvas/shared/context.js +14 -81
  7. package/dist/components/mint-map/core/advanced/woongCanvas/shared/index.d.ts +0 -11
  8. package/dist/components/mint-map/core/advanced/woongCanvas/shared/performance.d.ts +13 -62
  9. package/dist/components/mint-map/core/advanced/woongCanvas/shared/performance.js +13 -62
  10. package/dist/components/mint-map/core/advanced/woongCanvas/shared/renderer.d.ts +24 -78
  11. package/dist/components/mint-map/core/advanced/woongCanvas/shared/renderer.js +23 -77
  12. package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.d.ts +4 -21
  13. package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.js +0 -6
  14. package/dist/components/mint-map/core/advanced/woongCanvas/shared/utils.d.ts +20 -142
  15. package/dist/components/mint-map/core/advanced/woongCanvas/shared/utils.js +23 -146
  16. package/dist/components/mint-map/core/wrapper/MapMarkerWrapper.js +22 -1
  17. package/dist/components/mint-map/google/GoogleMintMapController.d.ts +1 -0
  18. package/dist/components/mint-map/google/GoogleMintMapController.js +4 -0
  19. package/dist/components/mint-map/kakao/KakaoMintMapController.d.ts +1 -0
  20. package/dist/components/mint-map/kakao/KakaoMintMapController.js +4 -0
  21. package/dist/components/mint-map/naver/NaverMintMapController.d.ts +3 -0
  22. package/dist/components/mint-map/naver/NaverMintMapController.js +37 -3
  23. package/dist/index.es.js +630 -916
  24. package/dist/index.js +0 -4
  25. package/dist/index.umd.js +629 -918
  26. package/package.json +1 -1
@@ -9,50 +9,18 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
9
9
 
10
10
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
11
 
12
- /** 다중 레이어 관리를 위한 React Context */
13
-
14
12
  var KonvaMarkerContext = React.createContext(null);
15
- /**
16
- * 다중 WoongCanvasLayer 관리를 위한 Context Provider
17
- *
18
- * 여러 개의 WoongCanvasLayer가 동시에 사용될 때 이벤트 우선순위를 관리하고
19
- * 전역 클릭/호버 이벤트를 조정합니다.
20
- *
21
- * @param children - Provider로 감쌀 React 컴포넌트들
22
- * @returns Context Provider 컴포넌트
23
- *
24
- * @example
25
- * ```tsx
26
- * <KonvaMarkerProvider>
27
- * <WoongCanvasLayer zIndex={1} data={markers1} ... />
28
- * <WoongCanvasLayer zIndex={2} data={markers2} ... />
29
- * </KonvaMarkerProvider>
30
- * ```
31
- */
32
-
33
13
  var KonvaMarkerProvider = function (_a) {
34
14
  var children = _a.children;
35
- var controller = MintMapProvider.useMintMapController(); // === Refs ===
36
-
37
- /** 등록된 모든 컴포넌트 인스턴스들 (zIndex 내림차순 정렬) */
15
+ var controller = MintMapProvider.useMintMapController(); // Refs
38
16
 
39
17
  var componentsRef = React.useRef([]);
40
- /** 현재 호버된 컴포넌트 인스턴스 */
41
-
42
18
  var currentHoveredRef = React.useRef(null);
43
- /** 현재 호버된 데이터 */
44
-
45
19
  var currentHoveredDataRef = React.useRef(null);
46
- /** 드래그/줌 여부 (마우스 이동 이벤트 무시용) */
47
-
48
- var draggingRef = React.useRef(false); // === 컴포넌트 관리 함수들 ===
49
-
20
+ var draggingRef = React.useRef(false);
50
21
  /**
51
- * 컴포넌트 인스턴스 등록
52
- *
53
- * zIndex 내림차순으로 정렬하여 높은 우선순위의 컴포넌트가 먼저 이벤트를 처리하도록 합니다.
54
- *
55
- * @param instance - 등록할 컴포넌트 인스턴스
22
+ * 컴포넌트 등록 (zIndex 내림차순 정렬)
23
+ * 높은 zIndex가 먼저 처리됨
56
24
  */
57
25
 
58
26
  var registerComponent = React.useCallback(function (instance) {
@@ -62,12 +30,7 @@ var KonvaMarkerProvider = function (_a) {
62
30
  });
63
31
  }, []);
64
32
  /**
65
- * 컴포넌트 인스턴스 등록 해제
66
- *
67
- * 컴포넌트가 언마운트될 때 호출되어 Context에서 제거합니다.
68
- * 현재 호버 중인 컴포넌트라면 호버 상태도 초기화합니다.
69
- *
70
- * @param instance - 등록 해제할 컴포넌트 인스턴스
33
+ * 컴포넌트 등록 해제
71
34
  */
72
35
 
73
36
  var unregisterComponent = React.useCallback(function (instance) {
@@ -80,15 +43,9 @@ var KonvaMarkerProvider = function (_a) {
80
43
  componentsRef.current = componentsRef.current.filter(function (c) {
81
44
  return c !== instance;
82
45
  });
83
- }, []); // === 전역 이벤트 핸들러들 ===
84
-
46
+ }, []);
85
47
  /**
86
- * 전역 클릭 이벤트 핸들러
87
- *
88
- * zIndex 우선순위에 따라 등록된 컴포넌트들을 순회하며 클릭된 데이터를 찾습니다.
89
- * 첫 번째로 히트된 컴포넌트의 이벤트만 처리합니다.
90
- *
91
- * @param event - 지도 클릭 이벤트 파라미터
48
+ * 전역 클릭 핸들러 (zIndex 우선순위)
92
49
  */
93
50
 
94
51
  var handleGlobalClick = React.useCallback(function (event) {
@@ -98,7 +55,7 @@ var KonvaMarkerProvider = function (_a) {
98
55
  var clickedOffset = controller.positionToOffset(event.param.position); // zIndex 순서대로 순회 (높은 것부터)
99
56
 
100
57
  for (var _i = 0, _b = componentsRef.current; _i < _b.length; _i++) {
101
- var component = _b[_i]; // 상호작용이 비활성화된 컴포넌트는 스킵
58
+ var component = _b[_i]; // 🚫 상호작용이 비활성화된 컴포넌트는 스킵
102
59
 
103
60
  if (component.isInteractionDisabled()) continue;
104
61
  var data = component.findData(clickedOffset);
@@ -115,12 +72,7 @@ var KonvaMarkerProvider = function (_a) {
115
72
  }
116
73
  }, [controller]);
117
74
  /**
118
- * 전역 마우스 이동 이벤트 핸들러
119
- *
120
- * zIndex 우선순위에 따라 호버된 데이터를 찾고, 호버 상태가 변경되면
121
- * 이전 호버를 해제하고 새로운 호버를 설정합니다.
122
- *
123
- * @param event - 지도 마우스 이동 이벤트 파라미터
75
+ * 전역 마우스 이동 핸들러 (zIndex 우선순위)
124
76
  */
125
77
 
126
78
  var handleGlobalMouseMove = React.useCallback(function (event) {
@@ -133,7 +85,7 @@ var KonvaMarkerProvider = function (_a) {
133
85
  var newHoveredData = null;
134
86
 
135
87
  for (var _i = 0, _b = componentsRef.current; _i < _b.length; _i++) {
136
- var component = _b[_i]; // 상호작용이 비활성화된 컴포넌트는 스킵
88
+ var component = _b[_i]; // 🚫 상호작용이 비활성화된 컴포넌트는 스킵
137
89
 
138
90
  if (component.isInteractionDisabled()) continue;
139
91
  var data = component.findData(mouseOffset);
@@ -170,24 +122,19 @@ var KonvaMarkerProvider = function (_a) {
170
122
  }
171
123
  }, [controller]);
172
124
  /**
173
- * 줌/드래그 시작 이벤트 핸들러
174
- *
175
- * 지도가 줌이나 드래그를 시작할 때 마우스 이동 이벤트를 무시하도록 설정합니다.
176
- * 이는 성능 최적화와 불필요한 호버 이벤트 방지를 위한 것입니다.
125
+ * 줌/드래그 시작 (마우스 이동 이벤트 무시)
177
126
  */
178
127
 
179
128
  var handleZoomStart = React.useCallback(function () {
180
129
  draggingRef.current = true;
181
130
  }, []);
182
131
  /**
183
- * 지도 idle 이벤트 핸들러
184
- *
185
- * 지도가 idle 상태가 되면 마우스 이동 이벤트를 다시 활성화합니다.
132
+ * 지도 idle (마우스 이동 이벤트 재개)
186
133
  */
187
134
 
188
135
  var handleIdle = React.useCallback(function () {
189
136
  draggingRef.current = false;
190
- }, []); // === 이벤트 리스너 등록 ===
137
+ }, []); // 이벤트 리스너 등록
191
138
 
192
139
  React.useEffect(function () {
193
140
  controller.addEventListener('CLICK', handleGlobalClick);
@@ -200,7 +147,7 @@ var KonvaMarkerProvider = function (_a) {
200
147
  controller.removeEventListener('ZOOMSTART', handleZoomStart);
201
148
  controller.removeEventListener('IDLE', handleIdle);
202
149
  };
203
- }, [controller, handleGlobalClick, handleGlobalMouseMove, handleZoomStart, handleIdle]); // === Context value 메모이제이션 ===
150
+ }, [controller, handleGlobalClick, handleGlobalMouseMove, handleZoomStart, handleIdle]); // Context value 메모이제이션
204
151
 
205
152
  var contextValue = React.useMemo(function () {
206
153
  return {
@@ -212,20 +159,6 @@ var KonvaMarkerProvider = function (_a) {
212
159
  value: contextValue
213
160
  }, children);
214
161
  };
215
- /**
216
- * KonvaMarkerContext를 사용하기 위한 Hook
217
- *
218
- * @returns Context 값 또는 null (Provider 외부에서 사용 시)
219
- *
220
- * @example
221
- * ```tsx
222
- * const context = useKonvaMarkerContext();
223
- * if (context) {
224
- * context.registerComponent(instance);
225
- * }
226
- * ```
227
- */
228
-
229
162
  var useKonvaMarkerContext = function () {
230
163
  var context = React.useContext(KonvaMarkerContext);
231
164
  return context;
@@ -1,15 +1,4 @@
1
- /**
2
- * @fileoverview WoongCanvasLayer의 공유 유틸리티 모듈
3
- *
4
- * 이 파일은 WoongCanvasLayer에서 사용하는 모든 공통 타입, 유틸리티 함수,
5
- * 성능 최적화 클래스, Context Provider를 외부로 노출합니다.
6
- *
7
- * @version 2.2.1
8
- * @since 2.0.0
9
- * @author 박건웅
10
- */
11
1
  export * from './types';
12
2
  export * from './utils';
13
3
  export * from './context';
14
4
  export * from './performance';
15
- export * from './renderer';
@@ -1,18 +1,3 @@
1
- /**
2
- * @fileoverview WoongCanvasLayer 성능 최적화를 위한 상수 및 클래스
3
- *
4
- * 이 파일은 30,000개 이상의 마커/폴리곤을 60fps로 렌더링하기 위한
5
- * 성능 최적화 상수와 최적화된 자료구조들을 제공합니다.
6
- *
7
- * ## 주요 구성 요소
8
- * - **성능 최적화 상수**: 그리드 셀 크기, 캐시 크기, 컬링 여유 공간
9
- * - **LRUCache**: 좌표 변환 결과 캐싱을 위한 LRU 캐시 구현
10
- * - **SpatialHashGrid**: O(1) 수준의 빠른 Hit Test를 위한 공간 해시 그리드
11
- *
12
- * @version 2.2.1
13
- * @since 2.0.0
14
- * @author 박건웅
15
- */
16
1
  /**
17
2
  * 공간 인덱스 그리드 셀 크기 (px)
18
3
  *
@@ -55,29 +40,12 @@ export declare const DEFAULT_CULLING_MARGIN = 100;
55
40
  export declare const DEFAULT_MAX_CACHE_SIZE = 30000;
56
41
  /**
57
42
  * LRU (Least Recently Used) Cache
43
+ * 메모리 제한을 위한 캐시 구현 (최적화 버전)
58
44
  *
59
- * 메모리 제한을 위한 캐시 구현으로, 좌표 변환 결과를 캐싱하여
60
- * 성능을 최적화합니다. WoongCanvasLayer의 특성에 맞게 최적화되었습니다.
61
- *
62
- * ## 주요 특징
63
- * - **빠른 조회**: O(1) 해시 조회로 성능 최적화
64
- * - **메모리 제한**: 최대 크기 초과 시 자동 eviction
65
- * - **FIFO 방식**: 삽입 순서 기반 eviction (접근 빈도 추적 없음)
66
- *
67
- * ## 개선 사항
68
- * 1. **get() 성능 향상**: 접근 빈도 추적 없이 단순 조회만 수행
69
- * 2. **set() 버그 수정**: 기존 키 업데이트 시 maxSize 체크 로직 개선
70
- * 3. **메모리 효율**: 단순 FIFO 캐시로 동작하여 오버헤드 최소화
71
- *
72
- * @template K 캐시 키 타입
73
- * @template V 캐시 값 타입
74
- *
75
- * @example
76
- * ```typescript
77
- * const cache = new LRUCache<string, Offset>(1000);
78
- * cache.set('marker-1', { x: 100, y: 200 });
79
- * const offset = cache.get('marker-1'); // { x: 100, y: 200 }
80
- * ```
45
+ * 개선 사항:
46
+ * 1. get() 성능 향상: 접근 빈도 추적 없이 단순 조회만 수행 (delete+set 제거)
47
+ * 2. set() 버그 수정: 기존 키 업데이트 시 maxSize 체크 로직 개선
48
+ * 3. 메모리 효율: 단순 FIFO 캐시로 동작하여 오버헤드 최소화
81
49
  */
82
50
  export declare class LRUCache<K, V> {
83
51
  private cache;
@@ -113,33 +81,16 @@ export declare class LRUCache<K, V> {
113
81
  }
114
82
  /**
115
83
  * Spatial Hash Grid (공간 해시 그리드)
84
+ * 공간 인덱싱을 위한 그리드 기반 자료구조 (개선 버전)
116
85
  *
117
- * 공간 인덱싱을 위한 그리드 기반 자료구조로, 2D 공간을 격자로 나누어
118
- * 특정 영역에 있는 객체들을 빠르게 찾을 있게 해줍니다.
119
- *
120
- * ## 주요 특징
121
- * - **O(1) 조회**: 클릭 위치 주변의 객체들만 체크하여 성능 최적화
122
- * - **메모리 효율**: 격자 기반으로 필요한 영역만 인덱싱
123
- * - **중복 방지**: 같은 항목을 여러 번 삽입해도 안전
124
- *
125
- * ## 성능 비교
126
- * - **일반 검색**: 30,000개 항목 전체 체크 → O(n)
127
- * - **Spatial Hash**: 클릭 위치 주변 ~10개만 체크 → O(1) + O(10)
128
- * - **성능 향상**: 약 3,000배 빠름! 🚀
129
- *
130
- * ## 개선 사항
131
- * 1. **중복 삽입 방지**: 같은 항목을 여러 번 insert 해도 안전
132
- * 2. **메모리 누수 방지**: 기존 항목 자동 제거
133
- * 3. **성능 최적화**: 불필요한 배열 생성 최소화
134
- *
135
- * @template T 그리드에 저장할 객체 타입
86
+ * 개선 사항:
87
+ * 1. 중복 삽입 방지: 같은 항목을 여러 insert 해도 안전
88
+ * 2. 메모리 누수 방지: 기존 항목 자동 제거
89
+ * 3. 성능 최적화: 불필요한 배열 생성 최소화
136
90
  *
137
- * @example
138
- * ```typescript
139
- * const grid = new SpatialHashGrid<Marker>(50);
140
- * grid.insert(marker, { x: 100, y: 200, width: 30, height: 40 });
141
- * const nearby = grid.query(105, 205, 10); // (105, 205) 주변 10px 반경
142
- * ```
91
+ * 사용 사례:
92
+ * - 빠른 Hit Test (마우스 클릭 시 어떤 마커/폴리곤인지 찾기)
93
+ * - 30,000개 항목 클릭 위치 주변 ~10개만 체크 (3,000배 빠름)
143
94
  */
144
95
  export declare class SpatialHashGrid<T> {
145
96
  private cellSize;
@@ -2,21 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- /**
6
- * @fileoverview WoongCanvasLayer 성능 최적화를 위한 상수 및 클래스
7
- *
8
- * 이 파일은 30,000개 이상의 마커/폴리곤을 60fps로 렌더링하기 위한
9
- * 성능 최적화 상수와 최적화된 자료구조들을 제공합니다.
10
- *
11
- * ## 주요 구성 요소
12
- * - **성능 최적화 상수**: 그리드 셀 크기, 캐시 크기, 컬링 여유 공간
13
- * - **LRUCache**: 좌표 변환 결과 캐싱을 위한 LRU 캐시 구현
14
- * - **SpatialHashGrid**: O(1) 수준의 빠른 Hit Test를 위한 공간 해시 그리드
15
- *
16
- * @version 2.2.1
17
- * @since 2.0.0
18
- * @author 박건웅
19
- */
20
5
  // ============================================================================
21
6
  // 성능 최적화 상수 (30,000개 마커/폴리곤 기준 최적화)
22
7
  // ============================================================================
@@ -65,29 +50,12 @@ var DEFAULT_CULLING_MARGIN = 100;
65
50
  var DEFAULT_MAX_CACHE_SIZE = 30000;
66
51
  /**
67
52
  * LRU (Least Recently Used) Cache
53
+ * 메모리 제한을 위한 캐시 구현 (최적화 버전)
68
54
  *
69
- * 메모리 제한을 위한 캐시 구현으로, 좌표 변환 결과를 캐싱하여
70
- * 성능을 최적화합니다. WoongCanvasLayer의 특성에 맞게 최적화되었습니다.
71
- *
72
- * ## 주요 특징
73
- * - **빠른 조회**: O(1) 해시 조회로 성능 최적화
74
- * - **메모리 제한**: 최대 크기 초과 시 자동 eviction
75
- * - **FIFO 방식**: 삽입 순서 기반 eviction (접근 빈도 추적 없음)
76
- *
77
- * ## 개선 사항
78
- * 1. **get() 성능 향상**: 접근 빈도 추적 없이 단순 조회만 수행
79
- * 2. **set() 버그 수정**: 기존 키 업데이트 시 maxSize 체크 로직 개선
80
- * 3. **메모리 효율**: 단순 FIFO 캐시로 동작하여 오버헤드 최소화
81
- *
82
- * @template K 캐시 키 타입
83
- * @template V 캐시 값 타입
84
- *
85
- * @example
86
- * ```typescript
87
- * const cache = new LRUCache<string, Offset>(1000);
88
- * cache.set('marker-1', { x: 100, y: 200 });
89
- * const offset = cache.get('marker-1'); // { x: 100, y: 200 }
90
- * ```
55
+ * 개선 사항:
56
+ * 1. get() 성능 향상: 접근 빈도 추적 없이 단순 조회만 수행 (delete+set 제거)
57
+ * 2. set() 버그 수정: 기존 키 업데이트 시 maxSize 체크 로직 개선
58
+ * 3. 메모리 효율: 단순 FIFO 캐시로 동작하여 오버헤드 최소화
91
59
  */
92
60
 
93
61
  var LRUCache =
@@ -167,33 +135,16 @@ function () {
167
135
  }();
168
136
  /**
169
137
  * Spatial Hash Grid (공간 해시 그리드)
138
+ * 공간 인덱싱을 위한 그리드 기반 자료구조 (개선 버전)
170
139
  *
171
- * 공간 인덱싱을 위한 그리드 기반 자료구조로, 2D 공간을 격자로 나누어
172
- * 특정 영역에 있는 객체들을 빠르게 찾을 있게 해줍니다.
173
- *
174
- * ## 주요 특징
175
- * - **O(1) 조회**: 클릭 위치 주변의 객체들만 체크하여 성능 최적화
176
- * - **메모리 효율**: 격자 기반으로 필요한 영역만 인덱싱
177
- * - **중복 방지**: 같은 항목을 여러 번 삽입해도 안전
178
- *
179
- * ## 성능 비교
180
- * - **일반 검색**: 30,000개 항목 전체 체크 → O(n)
181
- * - **Spatial Hash**: 클릭 위치 주변 ~10개만 체크 → O(1) + O(10)
182
- * - **성능 향상**: 약 3,000배 빠름! 🚀
183
- *
184
- * ## 개선 사항
185
- * 1. **중복 삽입 방지**: 같은 항목을 여러 번 insert 해도 안전
186
- * 2. **메모리 누수 방지**: 기존 항목 자동 제거
187
- * 3. **성능 최적화**: 불필요한 배열 생성 최소화
188
- *
189
- * @template T 그리드에 저장할 객체 타입
140
+ * 개선 사항:
141
+ * 1. 중복 삽입 방지: 같은 항목을 여러 insert 해도 안전
142
+ * 2. 메모리 누수 방지: 기존 항목 자동 제거
143
+ * 3. 성능 최적화: 불필요한 배열 생성 최소화
190
144
  *
191
- * @example
192
- * ```typescript
193
- * const grid = new SpatialHashGrid<Marker>(50);
194
- * grid.insert(marker, { x: 100, y: 200, width: 30, height: 40 });
195
- * const nearby = grid.query(105, 205, 10); // (105, 205) 주변 10px 반경
196
- * ```
145
+ * 사용 사례:
146
+ * - 빠른 Hit Test (마우스 클릭 시 어떤 마커/폴리곤인지 찾기)
147
+ * - 30,000개 항목 클릭 위치 주변 ~10개만 체크 (3,000배 빠름)
197
148
  */
198
149
 
199
150
  var SpatialHashGrid =
@@ -1,45 +1,11 @@
1
1
  /**
2
- * @fileoverview 폴리곤 렌더링을 위한 유틸리티 및 팩토리 함수
2
+ * 폴리곤 렌더링 유틸리티
3
3
  *
4
- * 이 파일은 WoongCanvasLayer의 POLYGON 모드에서 사용하는 폴리곤 렌더링
5
- * 함수들을 제공합니다. 다양한 상태(기본, 선택, 호버)에 따른 렌더링과
6
- * 도넛 폴리곤(구멍이 있는 폴리곤) 지원을 포함합니다.
7
- *
8
- * ## 주요 기능
9
- * - **폴리곤 그리기**: Canvas 2D API를 사용한 폴리곤 렌더링
10
- * - **도넛 폴리곤 지원**: evenodd fill rule을 사용한 구멍 처리
11
- * - **상태별 렌더링**: 기본/선택/호버 상태에 따른 색상 및 스타일 적용
12
- * - **팩토리 함수**: 렌더링 함수를 쉽게 생성할 수 있는 헬퍼
13
- *
14
- * @version 2.2.1
15
- * @since 2.0.0
16
- * @author 박건웅
4
+ * 이 파일은 폴리곤 렌더링을 위한 헬퍼 함수와 팩토리 함수를 제공합니다.
17
5
  */
18
6
  import { CustomRenderBase, CustomRenderEvent, KonvaCanvasData } from "./types";
19
7
  /**
20
- * 폴리곤 그리기 헬퍼 함수
21
- *
22
- * Canvas 2D API를 사용하여 폴리곤을 그리는 핵심 함수입니다.
23
- * 도넛 폴리곤(구멍이 있는 폴리곤)도 지원합니다.
24
- *
25
- * @param ctx - Canvas 2D 렌더링 컨텍스트
26
- * @param polygonOffsets - 변환된 폴리곤 좌표 배열
27
- * @param isDonutPolygon - 도넛 폴리곤 여부
28
- * @param fillColor - 채우기 색상
29
- * @param strokeColor - 테두리 색상
30
- * @param lineWidth - 테두리 두께
31
- *
32
- * @example
33
- * ```typescript
34
- * drawPolygon({
35
- * ctx,
36
- * polygonOffsets: [[[[100, 200], [200, 200], [200, 300], [100, 300]]]],
37
- * isDonutPolygon: false,
38
- * fillColor: 'rgba(255, 0, 0, 0.5)',
39
- * strokeColor: 'rgba(255, 0, 0, 1)',
40
- * lineWidth: 2
41
- * });
42
- * ```
8
+ * 폴리곤 그리기 헬퍼 함수 (도넛 폴리곤 지원)
43
9
  */
44
10
  export declare const drawPolygon: ({ ctx, polygonOffsets, isDonutPolygon, fillColor, strokeColor, lineWidth }: {
45
11
  ctx: CanvasRenderingContext2D;
@@ -50,58 +16,39 @@ export declare const drawPolygon: ({ ctx, polygonOffsets, isDonutPolygon, fillCo
50
16
  lineWidth: number;
51
17
  }) => void;
52
18
  /**
53
- * 폴리곤 Base Layer 렌더링 함수 팩토리
19
+ * 폴리곤 Base 렌더링 함수
54
20
  *
55
- * 기본 상태의 폴리곤들을 렌더링하는 함수를 생성합니다.
56
- * 선택된 폴리곤들은 Event Layer에서 렌더링되므로 제외됩니다.
57
- *
58
- * @param baseFillColor - 기본 폴리곤 채우기 색상
59
- * @param baseStrokeColor - 기본 폴리곤 테두리 색상
60
- * @param baseLineWidth - 기본 폴리곤 테두리 두께
21
+ * @param baseFillColor 기본 폴리곤 채우기 색상
22
+ * @param baseStrokeColor 기본 폴리곤 테두리 색상
23
+ * @param baseLineWidth 기본 폴리곤 테두리 두께
61
24
  * @returns Base Layer 렌더링 함수
62
25
  *
63
- * @template T 마커/폴리곤 데이터의 추가 속성 타입
64
- *
65
26
  * @example
66
- * ```typescript
67
27
  * const renderBase = renderPolygonBase(
68
- * 'rgba(255, 100, 100, 0.5)', // 기본 채우기 색상
69
- * 'rgba(200, 50, 50, 0.8)', // 기본 테두리 색상
70
- * 2 // 기본 테두리 두께
28
+ * 'rgba(255, 100, 100, 0.5)',
29
+ * 'rgba(200, 50, 50, 0.8)',
30
+ * 2
71
31
  * );
72
- * ```
73
32
  */
74
33
  export declare const renderPolygonBase: <T = any>(baseFillColor: string, baseStrokeColor: string, baseLineWidth: number) => CustomRenderBase<KonvaCanvasData<T>>;
75
34
  /**
76
- * 폴리곤 Event Layer 렌더링 함수 팩토리
77
- *
78
- * 선택, 호버, 활성 상태의 폴리곤들을 렌더링하는 함수를 생성합니다.
79
- * 다양한 상태에 따른 색상과 스타일을 지원하며, fallback 메커니즘을 제공합니다.
80
- *
81
- * ## 상태별 렌더링 우선순위
82
- * 1. **Hovered**: 마우스가 올라간 폴리곤 (최우선)
83
- * 2. **Active**: 마지막으로 선택된 폴리곤
84
- * 3. **Selected**: 선택된 폴리곤들
85
- * 4. **Base**: 기본 상태 (fallback)
86
- *
87
- * @param baseFillColor - 기본 폴리곤 채우기 색상 (필수, fallback용)
88
- * @param baseStrokeColor - 기본 폴리곤 테두리 색상 (필수, fallback용)
89
- * @param baseLineWidth - 기본 폴리곤 테두리 두께 (필수, fallback용)
90
- * @param selectedFillColor - 선택된 폴리곤 채우기 색상 (선택, 기본값: baseFillColor)
91
- * @param selectedStrokeColor - 선택된 폴리곤 테두리 색상 (선택, 기본값: baseStrokeColor)
92
- * @param selectedLineWidth - 선택된 폴리곤 테두리 두께 (선택, 기본값: baseLineWidth)
93
- * @param activeFillColor - 마지막 선택된 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
94
- * @param activeStrokeColor - 마지막 선택된 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
95
- * @param activeLineWidth - 마지막 선택된 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
96
- * @param hoveredFillColor - Hover 시 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
97
- * @param hoveredStrokeColor - Hover 시 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
98
- * @param hoveredLineWidth - Hover 시 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
35
+ * 폴리곤 Event 렌더링 함수
36
+ *
37
+ * @param baseFillColor 기본 폴리곤 채우기 색상 (필수, fallback용)
38
+ * @param baseStrokeColor 기본 폴리곤 테두리 색상 (필수, fallback용)
39
+ * @param baseLineWidth 기본 폴리곤 테두리 두께 (필수, fallback용)
40
+ * @param selectedFillColor 선택된 폴리곤 채우기 색상 (선택, 기본값: baseFillColor)
41
+ * @param selectedStrokeColor 선택된 폴리곤 테두리 색상 (선택, 기본값: baseStrokeColor)
42
+ * @param selectedLineWidth 선택된 폴리곤 테두리 두께 (선택, 기본값: baseLineWidth)
43
+ * @param activeFillColor 마지막 선택된 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
44
+ * @param activeStrokeColor 마지막 선택된 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
45
+ * @param activeLineWidth 마지막 선택된 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
46
+ * @param hoveredFillColor Hover 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
47
+ * @param hoveredStrokeColor Hover 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
48
+ * @param hoveredLineWidth Hover 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
99
49
  * @returns Event Layer 렌더링 함수
100
50
  *
101
- * @template T 마커/폴리곤 데이터의 추가 속성 타입
102
- *
103
51
  * @example
104
- * ```typescript
105
52
  * const renderEvent = renderPolygonEvent(
106
53
  * 'rgba(255, 100, 100, 0.5)', // baseFillColor
107
54
  * 'rgba(200, 50, 50, 0.8)', // baseStrokeColor
@@ -110,6 +57,5 @@ export declare const renderPolygonBase: <T = any>(baseFillColor: string, baseStr
110
57
  * 'rgba(255, 152, 0, 1)', // selectedStrokeColor
111
58
  * 4 // selectedLineWidth
112
59
  * );
113
- * ```
114
60
  */
115
61
  export declare const renderPolygonEvent: <T = any>(baseFillColor: string, baseStrokeColor: string, baseLineWidth: number, selectedFillColor?: string, selectedStrokeColor?: string, selectedLineWidth?: number, activeFillColor?: string, activeStrokeColor?: string, activeLineWidth?: number, hoveredFillColor?: string, hoveredStrokeColor?: string, hoveredLineWidth?: number) => CustomRenderEvent<KonvaCanvasData<T>>;
@@ -3,47 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  /**
6
- * @fileoverview 폴리곤 렌더링을 위한 유틸리티 및 팩토리 함수
6
+ * 폴리곤 렌더링 유틸리티
7
7
  *
8
- * 이 파일은 WoongCanvasLayer의 POLYGON 모드에서 사용하는 폴리곤 렌더링
9
- * 함수들을 제공합니다. 다양한 상태(기본, 선택, 호버)에 따른 렌더링과
10
- * 도넛 폴리곤(구멍이 있는 폴리곤) 지원을 포함합니다.
11
- *
12
- * ## 주요 기능
13
- * - **폴리곤 그리기**: Canvas 2D API를 사용한 폴리곤 렌더링
14
- * - **도넛 폴리곤 지원**: evenodd fill rule을 사용한 구멍 처리
15
- * - **상태별 렌더링**: 기본/선택/호버 상태에 따른 색상 및 스타일 적용
16
- * - **팩토리 함수**: 렌더링 함수를 쉽게 생성할 수 있는 헬퍼
17
- *
18
- * @version 2.2.1
19
- * @since 2.0.0
20
- * @author 박건웅
8
+ * 이 파일은 폴리곤 렌더링을 위한 헬퍼 함수와 팩토리 함수를 제공합니다.
21
9
  */
22
10
 
23
11
  /**
24
- * 폴리곤 그리기 헬퍼 함수
25
- *
26
- * Canvas 2D API를 사용하여 폴리곤을 그리는 핵심 함수입니다.
27
- * 도넛 폴리곤(구멍이 있는 폴리곤)도 지원합니다.
28
- *
29
- * @param ctx - Canvas 2D 렌더링 컨텍스트
30
- * @param polygonOffsets - 변환된 폴리곤 좌표 배열
31
- * @param isDonutPolygon - 도넛 폴리곤 여부
32
- * @param fillColor - 채우기 색상
33
- * @param strokeColor - 테두리 색상
34
- * @param lineWidth - 테두리 두께
35
- *
36
- * @example
37
- * ```typescript
38
- * drawPolygon({
39
- * ctx,
40
- * polygonOffsets: [[[[100, 200], [200, 200], [200, 300], [100, 300]]]],
41
- * isDonutPolygon: false,
42
- * fillColor: 'rgba(255, 0, 0, 0.5)',
43
- * strokeColor: 'rgba(255, 0, 0, 1)',
44
- * lineWidth: 2
45
- * });
46
- * ```
12
+ * 폴리곤 그리기 헬퍼 함수 (도넛 폴리곤 지원)
47
13
  */
48
14
  var drawPolygon = function (_a) {
49
15
  var ctx = _a.ctx,
@@ -114,26 +80,19 @@ var drawPolygon = function (_a) {
114
80
  }
115
81
  };
116
82
  /**
117
- * 폴리곤 Base Layer 렌더링 함수 팩토리
83
+ * 폴리곤 Base 렌더링 함수
118
84
  *
119
- * 기본 상태의 폴리곤들을 렌더링하는 함수를 생성합니다.
120
- * 선택된 폴리곤들은 Event Layer에서 렌더링되므로 제외됩니다.
121
- *
122
- * @param baseFillColor - 기본 폴리곤 채우기 색상
123
- * @param baseStrokeColor - 기본 폴리곤 테두리 색상
124
- * @param baseLineWidth - 기본 폴리곤 테두리 두께
85
+ * @param baseFillColor 기본 폴리곤 채우기 색상
86
+ * @param baseStrokeColor 기본 폴리곤 테두리 색상
87
+ * @param baseLineWidth 기본 폴리곤 테두리 두께
125
88
  * @returns Base Layer 렌더링 함수
126
89
  *
127
- * @template T 마커/폴리곤 데이터의 추가 속성 타입
128
- *
129
90
  * @example
130
- * ```typescript
131
91
  * const renderBase = renderPolygonBase(
132
- * 'rgba(255, 100, 100, 0.5)', // 기본 채우기 색상
133
- * 'rgba(200, 50, 50, 0.8)', // 기본 테두리 색상
134
- * 2 // 기본 테두리 두께
92
+ * 'rgba(255, 100, 100, 0.5)',
93
+ * 'rgba(200, 50, 50, 0.8)',
94
+ * 2
135
95
  * );
136
- * ```
137
96
  */
138
97
 
139
98
  var renderPolygonBase = function (baseFillColor, baseStrokeColor, baseLineWidth) {
@@ -162,35 +121,23 @@ var renderPolygonBase = function (baseFillColor, baseStrokeColor, baseLineWidth)
162
121
  };
163
122
  };
164
123
  /**
165
- * 폴리곤 Event Layer 렌더링 함수 팩토리
166
- *
167
- * 선택, 호버, 활성 상태의 폴리곤들을 렌더링하는 함수를 생성합니다.
168
- * 다양한 상태에 따른 색상과 스타일을 지원하며, fallback 메커니즘을 제공합니다.
124
+ * 폴리곤 Event 렌더링 함수
169
125
  *
170
- * ## 상태별 렌더링 우선순위
171
- * 1. **Hovered**: 마우스가 올라간 폴리곤 (최우선)
172
- * 2. **Active**: 마지막으로 선택된 폴리곤
173
- * 3. **Selected**: 선택된 폴리곤들
174
- * 4. **Base**: 기본 상태 (fallback)
175
- *
176
- * @param baseFillColor - 기본 폴리곤 채우기 색상 (필수, fallback용)
177
- * @param baseStrokeColor - 기본 폴리곤 테두리 색상 (필수, fallback용)
178
- * @param baseLineWidth - 기본 폴리곤 테두리 두께 (필수, fallback용)
179
- * @param selectedFillColor - 선택된 폴리곤 채우기 색상 (선택, 기본값: baseFillColor)
180
- * @param selectedStrokeColor - 선택된 폴리곤 테두리 색상 (선택, 기본값: baseStrokeColor)
181
- * @param selectedLineWidth - 선택된 폴리곤 테두리 두께 (선택, 기본값: baseLineWidth)
182
- * @param activeFillColor - 마지막 선택된 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
183
- * @param activeStrokeColor - 마지막 선택된 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
184
- * @param activeLineWidth - 마지막 선택된 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
185
- * @param hoveredFillColor - Hover 시 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
186
- * @param hoveredStrokeColor - Hover 시 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
187
- * @param hoveredLineWidth - Hover 시 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
126
+ * @param baseFillColor 기본 폴리곤 채우기 색상 (필수, fallback용)
127
+ * @param baseStrokeColor 기본 폴리곤 테두리 색상 (필수, fallback용)
128
+ * @param baseLineWidth 기본 폴리곤 테두리 두께 (필수, fallback용)
129
+ * @param selectedFillColor 선택된 폴리곤 채우기 색상 (선택, 기본값: baseFillColor)
130
+ * @param selectedStrokeColor 선택된 폴리곤 테두리 색상 (선택, 기본값: baseStrokeColor)
131
+ * @param selectedLineWidth 선택된 폴리곤 테두리 두께 (선택, 기본값: baseLineWidth)
132
+ * @param activeFillColor 마지막 선택된 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
133
+ * @param activeStrokeColor 마지막 선택된 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
134
+ * @param activeLineWidth 마지막 선택된 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
135
+ * @param hoveredFillColor Hover 폴리곤 채우기 색상 (선택, 기본값: selectedFillColor)
136
+ * @param hoveredStrokeColor Hover 폴리곤 테두리 색상 (선택, 기본값: selectedStrokeColor)
137
+ * @param hoveredLineWidth Hover 폴리곤 테두리 두께 (선택, 기본값: selectedLineWidth)
188
138
  * @returns Event Layer 렌더링 함수
189
139
  *
190
- * @template T 마커/폴리곤 데이터의 추가 속성 타입
191
- *
192
140
  * @example
193
- * ```typescript
194
141
  * const renderEvent = renderPolygonEvent(
195
142
  * 'rgba(255, 100, 100, 0.5)', // baseFillColor
196
143
  * 'rgba(200, 50, 50, 0.8)', // baseStrokeColor
@@ -199,7 +146,6 @@ var renderPolygonBase = function (baseFillColor, baseStrokeColor, baseLineWidth)
199
146
  * 'rgba(255, 152, 0, 1)', // selectedStrokeColor
200
147
  * 4 // selectedLineWidth
201
148
  * );
202
- * ```
203
149
  */
204
150
 
205
151
  var renderPolygonEvent = function (baseFillColor, baseStrokeColor, baseLineWidth, selectedFillColor, selectedStrokeColor, selectedLineWidth, activeFillColor, activeStrokeColor, activeLineWidth, hoveredFillColor, hoveredStrokeColor, hoveredLineWidth) {