@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.
- package/dist/components/mint-map/core/MintMapCore.d.ts +2 -2
- package/dist/components/mint-map/core/MintMapCore.js +14 -10
- package/dist/components/mint-map/core/advanced/shared/context.js +113 -49
- package/dist/components/mint-map/core/index.d.ts +5 -6
- package/dist/components/mint-map/google/GoogleMintMapController.js +1 -1
- package/dist/components/mint-map/index.d.ts +2 -3
- package/dist/components/mint-map/kakao/KakaoMintMapController.js +1 -1
- package/dist/components/mint-map/naver/NaverMintMapController.js +1 -1
- package/dist/index.es.js +6004 -5940
- package/dist/index.js +10 -10
- package/dist/index.umd.js +8443 -8379
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { PropsWithChildren } from
|
|
2
|
-
import { MintMapProps } from
|
|
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; //
|
|
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; //
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
74
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
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
|
|
101
|
-
|
|
102
|
-
}
|
|
103
|
-
|
|
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
|
-
|
|
107
|
-
|
|
149
|
+
if (newHoveredComponent && newHoveredData) {
|
|
150
|
+
try {
|
|
151
|
+
newHoveredComponent.setHovered(newHoveredData);
|
|
108
152
|
|
|
109
|
-
|
|
110
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
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
|
|
2
|
-
export * from
|
|
1
|
+
export * from "./MintMapCore";
|
|
2
|
+
export * from "./MintMapController";
|
|
3
3
|
export * from './MintMapCanvasRenderer';
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
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 =
|