@mint-ui/map 1.2.0-test.54 → 1.2.0-test.55

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.
@@ -1,3 +1,3 @@
1
- import { PropsWithChildren } from 'react';
2
- import { MintMapProps } from '../types/MintMapProps';
1
+ import { PropsWithChildren } from "react";
2
+ import { MintMapProps } from "../types/MintMapProps";
3
3
  export declare function MintMapCore({ onLoad, visible, zoomLevel, center, centerMoveWithPanning, children }: PropsWithChildren<MintMapProps>): JSX.Element;
@@ -5,9 +5,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var classNames = require('classnames/bind');
7
7
  var React = require('react');
8
- var MintMapCore_module = require('./MintMapCore.module.scss.js');
9
- var MintMapProvider = require('./provider/MintMapProvider.js');
10
8
  var MapTypes = require('../types/MapTypes.js');
9
+ var MintMapProvider = require('./provider/MintMapProvider.js');
10
+ var MintMapCore_module = require('./MintMapCore.module.scss.js');
11
+ var context = require('./advanced/shared/context.js');
12
+ require('./advanced/shared/performance.js');
13
+ require('./advanced/shared/types.js');
14
+ require('./advanced/shared/utils.js');
11
15
 
12
16
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
17
 
@@ -25,9 +29,9 @@ function MintMapCore(_a) {
25
29
  center = _a.center,
26
30
  _c = _a.centerMoveWithPanning,
27
31
  centerMoveWithPanning = _c === void 0 ? false : _c,
28
- children = _a.children; // controller
32
+ children = _a.children; //controller
29
33
 
30
- var controller = MintMapProvider.useMintMapController(); // 초기화
34
+ var controller = MintMapProvider.useMintMapController(); //맵 초기화
31
35
 
32
36
  var elementRef = React.useRef(null);
33
37
 
@@ -54,7 +58,7 @@ function MintMapCore(_a) {
54
58
  map_1 = _a.sent();
55
59
 
56
60
  if (!currMapInitialized.current) {
57
- currMapInitialized.current = true; // onload callback (setTimeout 으로 맵이 초기화 될 텀을 준다. 특히 google map..)
61
+ currMapInitialized.current = true; //onload callback (setTimeout 으로 맵이 초기화 될 텀을 준다. 특히 google map..)
58
62
 
59
63
  setTimeout(function () {
60
64
  // console.log('setMapInitialized true');
@@ -73,7 +77,7 @@ function MintMapCore(_a) {
73
77
  });
74
78
  });
75
79
  })();
76
- }, [controller, elementRef]); // 줌레벨
80
+ }, [controller, elementRef]); //줌레벨
77
81
 
78
82
  React.useEffect(function () {
79
83
  if (zoomLevel && controller && mapInitialized) {
@@ -83,7 +87,7 @@ function MintMapCore(_a) {
83
87
  controller === null || controller === void 0 ? void 0 : controller.setZoomLevel(zoomLevel);
84
88
  }
85
89
  }
86
- }, [zoomLevel]); // 센터
90
+ }, [zoomLevel]); //센터
87
91
 
88
92
  React.useEffect(function () {
89
93
  if (center && controller && mapInitialized) {
@@ -96,12 +100,12 @@ function MintMapCore(_a) {
96
100
  }, [center]);
97
101
  return React__default["default"].createElement("div", {
98
102
  className: cn('mint-map-root')
99
- }, mapInitialized && children, React__default["default"].createElement("div", {
103
+ }, mapInitialized && React__default["default"].createElement(context.CanvasProvider, null, children), React__default["default"].createElement("div", {
100
104
  className: cn('mint-map-container'),
101
- ref: elementRef,
102
105
  style: {
103
106
  visibility: visible ? 'inherit' : 'hidden'
104
- }
107
+ },
108
+ ref: elementRef
105
109
  }));
106
110
  }
107
111
 
@@ -52,67 +52,119 @@ var CanvasProvider = function (_a) {
52
52
  var handleGlobalClick = React.useCallback(function (event) {
53
53
  var _a, _b;
54
54
 
55
- if (!((_a = event === null || event === void 0 ? void 0 : event.param) === null || _a === void 0 ? void 0 : _a.position)) return;
56
- var clickedOffset = controller.positionToOffset(event.param.position); // zIndex 내림차순으로 정렬된 컴포넌트 순회 (높은 zIndex가 먼저 처리)
57
-
58
- for (var _i = 0, _c = componentsRef.current; _i < _c.length; _i++) {
59
- var component = _c[_i];
60
- if (component.isInteractionDisabled()) continue;
61
- var data = component.findData(clickedOffset);
62
- if (!data) continue; // 번째로 찾은 항목만 처리하고 종료 (zIndex 우선순위)
63
-
64
- component.handleLocalClick(data);
65
- (_b = component.onClick) === null || _b === void 0 ? void 0 : _b.call(component, data, component.getSelectedIds());
66
- return;
55
+ try {
56
+ if (!((_a = event === null || event === void 0 ? void 0 : event.param) === null || _a === void 0 ? void 0 : _a.position)) return;
57
+ var clickedOffset = void 0;
58
+
59
+ try {
60
+ clickedOffset = controller.positionToOffset(event.param.position);
61
+ } catch (error) {
62
+ // positionToOffset 실패 조용히 종료 (기존 동작 보장)
63
+ console.warn('[CanvasProvider] positionToOffset failed:', error);
64
+ return;
65
+ } // zIndex 내림차순으로 정렬된 컴포넌트 순회 (높은 zIndex가 먼저 처리)
66
+
67
+
68
+ for (var _i = 0, _c = componentsRef.current; _i < _c.length; _i++) {
69
+ var component = _c[_i];
70
+
71
+ try {
72
+ if (component.isInteractionDisabled()) continue;
73
+ var data = component.findData(clickedOffset);
74
+ if (!data) continue; // 첫 번째로 찾은 항목만 처리하고 종료 (zIndex 우선순위)
75
+
76
+ component.handleLocalClick(data);
77
+ (_b = component.onClick) === null || _b === void 0 ? void 0 : _b.call(component, data, component.getSelectedIds());
78
+ return;
79
+ } catch (error) {
80
+ // 개별 컴포넌트 처리 중 에러 발생 시 다음 컴포넌트로 계속 진행
81
+ console.warn('[CanvasProvider] Component click handler error:', error);
82
+ continue;
83
+ }
84
+ }
85
+ } catch (error) {
86
+ // 전체 핸들러 에러 시 조용히 종료 (앱 크래시 방지)
87
+ console.error('[CanvasProvider] handleGlobalClick error:', error);
67
88
  }
68
89
  }, [controller]); // 전역 마우스 이동 핸들러 (zIndex 우선순위)
69
90
 
70
91
  var handleGlobalMouseMove = React.useCallback(function (event) {
71
92
  var _a;
72
93
 
73
- if (draggingRef.current || !((_a = event === null || event === void 0 ? void 0 : event.param) === null || _a === void 0 ? void 0 : _a.position)) return;
74
- var mouseOffset = controller.positionToOffset(event.param.position); // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ try {
95
+ if (draggingRef.current || !((_a = event === null || event === void 0 ? void 0 : event.param) === null || _a === void 0 ? void 0 : _a.position)) return;
96
+ var mouseOffset = void 0;
75
97
 
76
- var newHoveredComponent = null; // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
+ try {
99
+ mouseOffset = controller.positionToOffset(event.param.position);
100
+ } catch (error) {
101
+ // positionToOffset 실패 시 조용히 종료 (기존 동작 보장)
102
+ console.warn('[CanvasProvider] positionToOffset failed:', error);
103
+ return;
104
+ } // eslint-disable-next-line @typescript-eslint/no-explicit-any
77
105
 
78
- var newHoveredData = null; // zIndex 내림차순으로 정렬된 컴포넌트 순회 (높은 zIndex가 먼저 처리)
79
106
 
80
- for (var _i = 0, _b = componentsRef.current; _i < _b.length; _i++) {
81
- var component = _b[_i];
82
- if (component.isInteractionDisabled()) continue;
83
- var data = component.findData(mouseOffset);
84
- if (!data) continue; // 첫 번째로 찾은 항목만 hover 처리 (zIndex 우선순위)
107
+ var newHoveredComponent = null; // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
108
 
86
- newHoveredComponent = component;
87
- newHoveredData = data;
88
- break;
89
- } // hover 상태가 변경되지 않았으면 종료 (불필요한 렌더링 방지)
109
+ var newHoveredData = null; // zIndex 내림차순으로 정렬된 컴포넌트 순회 (높은 zIndex가 먼저 처리)
90
110
 
111
+ for (var _i = 0, _b = componentsRef.current; _i < _b.length; _i++) {
112
+ var component = _b[_i];
91
113
 
92
- if (currentHoveredRef.current === newHoveredComponent && currentHoveredDataRef.current === newHoveredData) {
93
- return;
94
- } // 기존 hover 항목에 mouseOut 이벤트 발생
114
+ try {
115
+ if (component.isInteractionDisabled()) continue;
116
+ var data = component.findData(mouseOffset);
117
+ if (!data) continue; // 첫 번째로 찾은 항목만 hover 처리 (zIndex 우선순위)
95
118
 
119
+ newHoveredComponent = component;
120
+ newHoveredData = data;
121
+ break;
122
+ } catch (error) {
123
+ // 개별 컴포넌트 처리 중 에러 발생 시 다음 컴포넌트로 계속 진행
124
+ console.warn('[CanvasProvider] Component mouse move handler error:', error);
125
+ continue;
126
+ }
127
+ } // hover 상태가 변경되지 않았으면 종료 (불필요한 렌더링 방지)
96
128
 
97
- if (currentHoveredRef.current) {
98
- currentHoveredRef.current.setHovered(null);
99
129
 
100
- if (currentHoveredRef.current.onMouseOut && currentHoveredDataRef.current) {
101
- currentHoveredRef.current.onMouseOut(currentHoveredDataRef.current);
102
- }
103
- } // 새 hover 항목에 mouseOver 이벤트 발생
130
+ if (currentHoveredRef.current === newHoveredComponent && currentHoveredDataRef.current === newHoveredData) {
131
+ return;
132
+ } // 기존 hover 항목에 mouseOut 이벤트 발생
133
+
134
+
135
+ if (currentHoveredRef.current) {
136
+ try {
137
+ currentHoveredRef.current.setHovered(null);
138
+
139
+ if (currentHoveredRef.current.onMouseOut && currentHoveredDataRef.current) {
140
+ currentHoveredRef.current.onMouseOut(currentHoveredDataRef.current);
141
+ }
142
+ } catch (error) {
143
+ // mouseOut 이벤트 에러 시 조용히 처리 (기존 동작 보장)
144
+ console.warn('[CanvasProvider] mouseOut handler error:', error);
145
+ }
146
+ } // 새 hover 항목에 mouseOver 이벤트 발생
104
147
 
105
148
 
106
- if (newHoveredComponent && newHoveredData) {
107
- newHoveredComponent.setHovered(newHoveredData);
149
+ if (newHoveredComponent && newHoveredData) {
150
+ try {
151
+ newHoveredComponent.setHovered(newHoveredData);
108
152
 
109
- if (newHoveredComponent.onMouseOver) {
110
- newHoveredComponent.onMouseOver(newHoveredData);
153
+ if (newHoveredComponent.onMouseOver) {
154
+ newHoveredComponent.onMouseOver(newHoveredData);
155
+ }
156
+ } catch (error) {
157
+ // mouseOver 이벤트 에러 시 조용히 처리 (기존 동작 보장)
158
+ console.warn('[CanvasProvider] mouseOver handler error:', error);
159
+ }
111
160
  }
112
- }
113
161
 
114
- currentHoveredRef.current = newHoveredComponent;
115
- currentHoveredDataRef.current = newHoveredData;
162
+ currentHoveredRef.current = newHoveredComponent;
163
+ currentHoveredDataRef.current = newHoveredData;
164
+ } catch (error) {
165
+ // 전체 핸들러 에러 시 조용히 종료 (앱 크래시 방지)
166
+ console.error('[CanvasProvider] handleGlobalMouseMove error:', error);
167
+ }
116
168
  }, [controller]);
117
169
  var handleZoomStart = React.useCallback(function () {
118
170
  draggingRef.current = true;
@@ -121,15 +173,27 @@ var CanvasProvider = function (_a) {
121
173
  draggingRef.current = false;
122
174
  }, []);
123
175
  React.useEffect(function () {
124
- controller.addEventListener('CLICK', handleGlobalClick);
125
- controller.addEventListener('MOUSEMOVE', handleGlobalMouseMove);
126
- controller.addEventListener('ZOOMSTART', handleZoomStart);
127
- controller.addEventListener('IDLE', handleIdle);
176
+ try {
177
+ controller.addEventListener('CLICK', handleGlobalClick);
178
+ controller.addEventListener('MOUSEMOVE', handleGlobalMouseMove);
179
+ controller.addEventListener('ZOOMSTART', handleZoomStart);
180
+ controller.addEventListener('IDLE', handleIdle);
181
+ } catch (error) {
182
+ // 이벤트 리스너 등록 실패 시 경고만 출력 (기존 동작 보장)
183
+ console.warn('[CanvasProvider] Failed to add event listeners:', error);
184
+ }
185
+
128
186
  return function () {
129
- controller.removeEventListener('CLICK', handleGlobalClick);
130
- controller.removeEventListener('MOUSEMOVE', handleGlobalMouseMove);
131
- controller.removeEventListener('ZOOMSTART', handleZoomStart);
132
- controller.removeEventListener('IDLE', handleIdle);
187
+ try {
188
+ controller.removeEventListener('CLICK', handleGlobalClick);
189
+ controller.removeEventListener('MOUSEMOVE', handleGlobalMouseMove);
190
+ controller.removeEventListener('ZOOMSTART', handleZoomStart);
191
+ controller.removeEventListener('IDLE', handleIdle);
192
+ } catch (error) {
193
+ // cleanup 중 에러 발생 시 조용히 처리 (controller가 이미 destroy된 경우 등)
194
+ // 에러를 무시해도 메모리 누수는 발생하지 않음 (이벤트 리스너는 자동으로 정리됨)
195
+ console.warn('[CanvasProvider] Failed to remove event listeners:', error);
196
+ }
133
197
  };
134
198
  }, [controller, handleGlobalClick, handleGlobalMouseMove, handleZoomStart, handleIdle]);
135
199
  var contextValue = React.useMemo(function () {
@@ -1,9 +1,8 @@
1
- export * from './advanced';
2
- export * from './hooks';
1
+ export * from "./MintMapCore";
2
+ export * from "./MintMapController";
3
3
  export * from './MintMapCanvasRenderer';
4
- export * from './MintMapController';
5
- export * from './MintMapCore';
6
- export * from './provider';
4
+ export * from "./advanced";
5
+ export * from "./hooks";
6
+ export * from "./provider";
7
7
  export * from './util';
8
8
  export * from './wrapper';
9
- export { CanvasProvider, useCanvasContext } from './advanced/shared/context';
@@ -9,6 +9,7 @@ var MintMapController = require('../core/MintMapController.js');
9
9
  var waiting = require('../core/util/waiting.js');
10
10
  var MapEventTypes = require('../types/MapEventTypes.js');
11
11
  var MapTypes = require('../types/MapTypes.js');
12
+ require('../core/MintMapCore.js');
12
13
  require('react');
13
14
  require('../core/provider/MintMapProvider.js');
14
15
  require('../types/MapDrawables.js');
@@ -24,7 +25,6 @@ require('../core/util/animation.js');
24
25
  require('../core/advanced/MapLoadingComponents.js');
25
26
  var polygon = require('../core/util/polygon.js');
26
27
  require('../naver/NaverMintMapController.js');
27
- require('../core/MintMapCore.js');
28
28
  require('../core/wrapper/MapControlWrapper.js');
29
29
 
30
30
  var GoogleMintMapController =
@@ -1,6 +1,5 @@
1
- export * from './core';
2
- export * from './google/GoogleMintMapController';
3
1
  export * from './MintMap';
2
+ export * from './core';
4
3
  export * from './naver/NaverMintMapController';
4
+ export * from './google/GoogleMintMapController';
5
5
  export * from './types';
6
- export { CanvasProvider, useCanvasContext } from './core/advanced/shared/context';
@@ -10,6 +10,7 @@ var MapTypes = require('../types/MapTypes.js');
10
10
  var MapEventTypes = require('../types/MapEventTypes.js');
11
11
  var log = require('../core/util/log.js');
12
12
  var status = require('../core/util/status.js');
13
+ require('../core/MintMapCore.js');
13
14
  require('react');
14
15
  require('../core/provider/MintMapProvider.js');
15
16
  require('../types/MapDrawables.js');
@@ -25,7 +26,6 @@ require('../core/util/animation.js');
25
26
  require('../core/advanced/MapLoadingComponents.js');
26
27
  var polygon = require('../core/util/polygon.js');
27
28
  require('../naver/NaverMintMapController.js');
28
- require('../core/MintMapCore.js');
29
29
  require('../core/wrapper/MapControlWrapper.js');
30
30
 
31
31
  var KakaoMintMapController =
@@ -10,6 +10,7 @@ var MapTypes = require('../types/MapTypes.js');
10
10
  var MapEventTypes = require('../types/MapEventTypes.js');
11
11
  var log = require('../core/util/log.js');
12
12
  var status = require('../core/util/status.js');
13
+ require('../core/MintMapCore.js');
13
14
  require('react');
14
15
  require('../core/provider/MintMapProvider.js');
15
16
  require('../types/MapDrawables.js');
@@ -24,7 +25,6 @@ require('../core/util/geo.js');
24
25
  require('../core/util/animation.js');
25
26
  require('../core/advanced/MapLoadingComponents.js');
26
27
  var polygon = require('../core/util/polygon.js');
27
- require('../core/MintMapCore.js');
28
28
  require('../core/wrapper/MapControlWrapper.js');
29
29
 
30
30
  var NaverMintMapController =