@mint-ui/map 1.2.0-test.5 → 1.2.0-test.6
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/advanced/woongCanvas/WoongKonvaMarker.d.ts +3 -1
- package/dist/components/mint-map/core/advanced/woongCanvas/WoongKonvaMarker.js +16 -7
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.d.ts +2 -2
- package/dist/index.es.js +16 -7
- package/dist/index.umd.js +16 -7
- package/package.json +1 -1
|
@@ -36,6 +36,8 @@ export interface WoongKonvaMarkerProps<T> extends Pick<MarkerOptions, 'zIndex' |
|
|
|
36
36
|
maxCacheSize?: number;
|
|
37
37
|
/** 외부에서 제어하는 선택된 항목 배열 (선택) */
|
|
38
38
|
selectedItems?: KonvaCanvasMarkerData<T>[];
|
|
39
|
+
/** 외부에서 전달된 단일 선택 아이템 (특별한 효과용) */
|
|
40
|
+
selectedItem?: KonvaCanvasMarkerData<T> | null;
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* 🔥 React.memo 최적화: 마커 배열과 selectedItems 변경 체크
|
|
@@ -46,5 +48,5 @@ export interface WoongKonvaMarkerProps<T> extends Pick<MarkerOptions, 'zIndex' |
|
|
|
46
48
|
*
|
|
47
49
|
* 주의: JSON.stringify() 사용 금지! (매우 느림)
|
|
48
50
|
*/
|
|
49
|
-
declare const WoongKonvaMarker: <T>({ markers, dataType, onClick, onMouseOver, onMouseOut, renderBase, renderAnimation, renderEvent, enableMultiSelect, topOnHover, enableViewportCulling, cullingMargin, maxCacheSize, selectedItems: externalSelectedItems, ...options }: WoongKonvaMarkerProps<T>) => React.ReactPortal;
|
|
51
|
+
declare const WoongKonvaMarker: <T>({ markers, dataType, onClick, onMouseOver, onMouseOut, renderBase, renderAnimation, renderEvent, enableMultiSelect, topOnHover, enableViewportCulling, cullingMargin, maxCacheSize, selectedItems: externalSelectedItems, selectedItem: externalSelectedItem, ...options }: WoongKonvaMarkerProps<T>) => React.ReactPortal;
|
|
50
52
|
export default WoongKonvaMarker;
|
|
@@ -55,7 +55,8 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
55
55
|
_f = _a.maxCacheSize,
|
|
56
56
|
maxCacheSize = _f === void 0 ? performance.DEFAULT_MAX_CACHE_SIZE : _f,
|
|
57
57
|
externalSelectedItems = _a.selectedItems,
|
|
58
|
-
|
|
58
|
+
externalSelectedItem = _a.selectedItem,
|
|
59
|
+
options = tslib.__rest(_a, ["markers", "dataType", "onClick", "onMouseOver", "onMouseOut", "renderBase", "renderAnimation", "renderEvent", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem"]); // --------------------------------------------------------------------------
|
|
59
60
|
// Hooks & Context
|
|
60
61
|
// --------------------------------------------------------------------------
|
|
61
62
|
|
|
@@ -89,9 +90,9 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
89
90
|
/** 현재 Hover 중인 항목 */
|
|
90
91
|
|
|
91
92
|
var hoveredItemRef = React.useRef(null);
|
|
92
|
-
/**
|
|
93
|
+
/** 외부에서 전달된 선택 항목 (Ref로 관리하여 클로저 문제 해결) */
|
|
93
94
|
|
|
94
|
-
var
|
|
95
|
+
var selectedItemRef = React.useRef(externalSelectedItem);
|
|
95
96
|
/**
|
|
96
97
|
* 선택된 항목의 ID Set
|
|
97
98
|
*
|
|
@@ -439,7 +440,7 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
439
440
|
hoveredItem: hoveredItemRef.current,
|
|
440
441
|
utils: renderUtils,
|
|
441
442
|
selectedItems: selectedItems,
|
|
442
|
-
|
|
443
|
+
selectedItem: selectedItemRef.current
|
|
443
444
|
});
|
|
444
445
|
},
|
|
445
446
|
perfectDrawEnabled: false,
|
|
@@ -643,9 +644,7 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
643
644
|
|
|
644
645
|
|
|
645
646
|
var handleLocalClick = function (data) {
|
|
646
|
-
//
|
|
647
|
-
lastClickedItemRef.current = data; // 1. 선택 상태 업데이트
|
|
648
|
-
|
|
647
|
+
// 1. 선택 상태 업데이트
|
|
649
648
|
if (enableMultiSelect) {
|
|
650
649
|
// 다중 선택: Set과 Map 동시 업데이트
|
|
651
650
|
var newSelected = new Set(selectedIdsRef.current);
|
|
@@ -953,6 +952,16 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
953
952
|
doRenderEvent();
|
|
954
953
|
}, [externalSelectedItems]); // 배열 자체를 dependency로 사용
|
|
955
954
|
// --------------------------------------------------------------------------
|
|
955
|
+
// Lifecycle: 외부 selectedItem 변경 시 Event Layer 리렌더링
|
|
956
|
+
// --------------------------------------------------------------------------
|
|
957
|
+
|
|
958
|
+
React.useEffect(function () {
|
|
959
|
+
if (!stageRef.current) return; // Ref 동기화
|
|
960
|
+
|
|
961
|
+
selectedItemRef.current = externalSelectedItem; // selectedItem이 변경되면 Event Layer만 다시 그림
|
|
962
|
+
|
|
963
|
+
doRenderEvent();
|
|
964
|
+
}, [externalSelectedItem]); // --------------------------------------------------------------------------
|
|
956
965
|
// Lifecycle: 마커 데이터 변경 시 렌더링
|
|
957
966
|
// --------------------------------------------------------------------------
|
|
958
967
|
|
|
@@ -111,8 +111,8 @@ export interface RenderEventParams<T> {
|
|
|
111
111
|
utils: RenderUtils<T>;
|
|
112
112
|
/** 현재 선택된 마커 데이터 배열 (선택 강조용) */
|
|
113
113
|
selectedItems?: KonvaCanvasMarkerData<T>[];
|
|
114
|
-
/**
|
|
115
|
-
|
|
114
|
+
/** 외부에서 전달된 단일 선택 아이템 (특별한 효과용) */
|
|
115
|
+
selectedItem?: KonvaCanvasMarkerData<T> | null;
|
|
116
116
|
}
|
|
117
117
|
/**
|
|
118
118
|
* 커스텀 렌더링 함수 타입 - Event Layer
|
package/dist/index.es.js
CHANGED
|
@@ -5405,7 +5405,8 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
5405
5405
|
_f = _a.maxCacheSize,
|
|
5406
5406
|
maxCacheSize = _f === void 0 ? DEFAULT_MAX_CACHE_SIZE : _f,
|
|
5407
5407
|
externalSelectedItems = _a.selectedItems,
|
|
5408
|
-
|
|
5408
|
+
externalSelectedItem = _a.selectedItem,
|
|
5409
|
+
options = __rest(_a, ["markers", "dataType", "onClick", "onMouseOver", "onMouseOut", "renderBase", "renderAnimation", "renderEvent", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem"]); // --------------------------------------------------------------------------
|
|
5409
5410
|
// Hooks & Context
|
|
5410
5411
|
// --------------------------------------------------------------------------
|
|
5411
5412
|
|
|
@@ -5439,9 +5440,9 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
5439
5440
|
/** 현재 Hover 중인 항목 */
|
|
5440
5441
|
|
|
5441
5442
|
var hoveredItemRef = useRef(null);
|
|
5442
|
-
/**
|
|
5443
|
+
/** 외부에서 전달된 선택 항목 (Ref로 관리하여 클로저 문제 해결) */
|
|
5443
5444
|
|
|
5444
|
-
var
|
|
5445
|
+
var selectedItemRef = useRef(externalSelectedItem);
|
|
5445
5446
|
/**
|
|
5446
5447
|
* 선택된 항목의 ID Set
|
|
5447
5448
|
*
|
|
@@ -5789,7 +5790,7 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
5789
5790
|
hoveredItem: hoveredItemRef.current,
|
|
5790
5791
|
utils: renderUtils,
|
|
5791
5792
|
selectedItems: selectedItems,
|
|
5792
|
-
|
|
5793
|
+
selectedItem: selectedItemRef.current
|
|
5793
5794
|
});
|
|
5794
5795
|
},
|
|
5795
5796
|
perfectDrawEnabled: false,
|
|
@@ -5993,9 +5994,7 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
5993
5994
|
|
|
5994
5995
|
|
|
5995
5996
|
var handleLocalClick = function (data) {
|
|
5996
|
-
//
|
|
5997
|
-
lastClickedItemRef.current = data; // 1. 선택 상태 업데이트
|
|
5998
|
-
|
|
5997
|
+
// 1. 선택 상태 업데이트
|
|
5999
5998
|
if (enableMultiSelect) {
|
|
6000
5999
|
// 다중 선택: Set과 Map 동시 업데이트
|
|
6001
6000
|
var newSelected = new Set(selectedIdsRef.current);
|
|
@@ -6303,6 +6302,16 @@ var WoongKonvaMarkerComponent = function (_a) {
|
|
|
6303
6302
|
doRenderEvent();
|
|
6304
6303
|
}, [externalSelectedItems]); // 배열 자체를 dependency로 사용
|
|
6305
6304
|
// --------------------------------------------------------------------------
|
|
6305
|
+
// Lifecycle: 외부 selectedItem 변경 시 Event Layer 리렌더링
|
|
6306
|
+
// --------------------------------------------------------------------------
|
|
6307
|
+
|
|
6308
|
+
useEffect(function () {
|
|
6309
|
+
if (!stageRef.current) return; // Ref 동기화
|
|
6310
|
+
|
|
6311
|
+
selectedItemRef.current = externalSelectedItem; // selectedItem이 변경되면 Event Layer만 다시 그림
|
|
6312
|
+
|
|
6313
|
+
doRenderEvent();
|
|
6314
|
+
}, [externalSelectedItem]); // --------------------------------------------------------------------------
|
|
6306
6315
|
// Lifecycle: 마커 데이터 변경 시 렌더링
|
|
6307
6316
|
// --------------------------------------------------------------------------
|
|
6308
6317
|
|
package/dist/index.umd.js
CHANGED
|
@@ -5409,7 +5409,8 @@
|
|
|
5409
5409
|
_f = _a.maxCacheSize,
|
|
5410
5410
|
maxCacheSize = _f === void 0 ? DEFAULT_MAX_CACHE_SIZE : _f,
|
|
5411
5411
|
externalSelectedItems = _a.selectedItems,
|
|
5412
|
-
|
|
5412
|
+
externalSelectedItem = _a.selectedItem,
|
|
5413
|
+
options = tslib.__rest(_a, ["markers", "dataType", "onClick", "onMouseOver", "onMouseOut", "renderBase", "renderAnimation", "renderEvent", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem"]); // --------------------------------------------------------------------------
|
|
5413
5414
|
// Hooks & Context
|
|
5414
5415
|
// --------------------------------------------------------------------------
|
|
5415
5416
|
|
|
@@ -5443,9 +5444,9 @@
|
|
|
5443
5444
|
/** 현재 Hover 중인 항목 */
|
|
5444
5445
|
|
|
5445
5446
|
var hoveredItemRef = React.useRef(null);
|
|
5446
|
-
/**
|
|
5447
|
+
/** 외부에서 전달된 선택 항목 (Ref로 관리하여 클로저 문제 해결) */
|
|
5447
5448
|
|
|
5448
|
-
var
|
|
5449
|
+
var selectedItemRef = React.useRef(externalSelectedItem);
|
|
5449
5450
|
/**
|
|
5450
5451
|
* 선택된 항목의 ID Set
|
|
5451
5452
|
*
|
|
@@ -5793,7 +5794,7 @@
|
|
|
5793
5794
|
hoveredItem: hoveredItemRef.current,
|
|
5794
5795
|
utils: renderUtils,
|
|
5795
5796
|
selectedItems: selectedItems,
|
|
5796
|
-
|
|
5797
|
+
selectedItem: selectedItemRef.current
|
|
5797
5798
|
});
|
|
5798
5799
|
},
|
|
5799
5800
|
perfectDrawEnabled: false,
|
|
@@ -5997,9 +5998,7 @@
|
|
|
5997
5998
|
|
|
5998
5999
|
|
|
5999
6000
|
var handleLocalClick = function (data) {
|
|
6000
|
-
//
|
|
6001
|
-
lastClickedItemRef.current = data; // 1. 선택 상태 업데이트
|
|
6002
|
-
|
|
6001
|
+
// 1. 선택 상태 업데이트
|
|
6003
6002
|
if (enableMultiSelect) {
|
|
6004
6003
|
// 다중 선택: Set과 Map 동시 업데이트
|
|
6005
6004
|
var newSelected = new Set(selectedIdsRef.current);
|
|
@@ -6307,6 +6306,16 @@
|
|
|
6307
6306
|
doRenderEvent();
|
|
6308
6307
|
}, [externalSelectedItems]); // 배열 자체를 dependency로 사용
|
|
6309
6308
|
// --------------------------------------------------------------------------
|
|
6309
|
+
// Lifecycle: 외부 selectedItem 변경 시 Event Layer 리렌더링
|
|
6310
|
+
// --------------------------------------------------------------------------
|
|
6311
|
+
|
|
6312
|
+
React.useEffect(function () {
|
|
6313
|
+
if (!stageRef.current) return; // Ref 동기화
|
|
6314
|
+
|
|
6315
|
+
selectedItemRef.current = externalSelectedItem; // selectedItem이 변경되면 Event Layer만 다시 그림
|
|
6316
|
+
|
|
6317
|
+
doRenderEvent();
|
|
6318
|
+
}, [externalSelectedItem]); // --------------------------------------------------------------------------
|
|
6310
6319
|
// Lifecycle: 마커 데이터 변경 시 렌더링
|
|
6311
6320
|
// --------------------------------------------------------------------------
|
|
6312
6321
|
|