@mint-ui/map 1.2.0-test.44 → 1.2.0-test.46

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.
@@ -85,6 +85,7 @@ export interface RenderBaseParams<T> {
85
85
  items: CanvasData<T>[];
86
86
  selectedIds: Set<string>;
87
87
  hoveredItem?: CanvasData<T> | null;
88
+ selectedItem?: CanvasData<T> | null;
88
89
  utils: RenderUtils<T>;
89
90
  }
90
91
  /**
@@ -72,7 +72,9 @@ var WoongCanvasMarker = function (props) {
72
72
  var accumTranslateRef = React.useRef({
73
73
  x: 0,
74
74
  y: 0
75
- }); // 성능 최적화 Refs
75
+ }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
76
+
77
+ var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
76
78
 
77
79
  var offsetCacheRef = React.useRef(new performance.LRUCache(maxCacheSize));
78
80
  var spatialIndexRef = React.useRef(new performance.SpatialHashGrid(performance.SPATIAL_GRID_CELL_SIZE));
@@ -271,14 +273,18 @@ var WoongCanvasMarker = function (props) {
271
273
  handleDragEndShared = _g.handleDragEnd;
272
274
 
273
275
  var handleDragStart = function () {
274
- handleDragStartShared();
276
+ handleDragStartShared(); // 드래그 시작 시점의 hover 상태 저장
277
+
278
+ dragStartHoveredItemRef.current = hoveredItemRef.current;
275
279
  draggingRef.current = true;
276
280
  controller.setMapCursor('grabbing');
277
281
  };
278
282
 
279
283
  var handleDragEnd = function () {
280
284
  handleDragEndShared();
281
- draggingRef.current = false;
285
+ draggingRef.current = false; // 드래그 종료 후 hover 상태 초기화 (다음 MOUSEMOVE에서 업데이트됨)
286
+
287
+ dragStartHoveredItemRef.current = null;
282
288
  controller.setMapCursor('grab');
283
289
  }; // Hit Test: 특정 좌표의 마커 찾기
284
290
 
@@ -309,6 +315,11 @@ var WoongCanvasMarker = function (props) {
309
315
 
310
316
 
311
317
  var setHovered = function (data) {
318
+ // 드래그 중에는 hover 상태 변경을 무시하고 드래그 시작 시점의 상태 유지
319
+ if (draggingRef.current) {
320
+ return;
321
+ }
322
+
312
323
  hoveredItemRef.current = data;
313
324
 
314
325
  if (draggingRef.current) {
@@ -358,6 +369,7 @@ var WoongCanvasMarker = function (props) {
358
369
 
359
370
 
360
371
  var handleClick = function (event) {
372
+ if (controller.isMapDragged()) return;
361
373
  if (disableInteractionRef.current) return;
362
374
  var clickedOffset = helpers.validateEvent(event, context$1, controller);
363
375
  if (!clickedOffset) return;
@@ -369,7 +381,9 @@ var WoongCanvasMarker = function (props) {
369
381
 
370
382
 
371
383
  var handleMouseMove = function (event) {
372
- if (disableInteractionRef.current) return;
384
+ if (disableInteractionRef.current) return; // 드래그 중에는 hover 상태를 업데이트하지 않음 (드래그 시작 시점의 hover 상태 유지)
385
+
386
+ if (draggingRef.current) return;
373
387
  var mouseOffset = helpers.validateEvent(event, context$1, controller);
374
388
  if (!mouseOffset) return;
375
389
  var hoveredItem = findData(mouseOffset);
@@ -82,7 +82,9 @@ var WoongCanvasPolygon = function (props) {
82
82
  var accumTranslateRef = React.useRef({
83
83
  x: 0,
84
84
  y: 0
85
- }); // 성능 최적화 Refs
85
+ }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
86
+
87
+ var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
86
88
 
87
89
  var offsetCacheRef = React.useRef(new performance.LRUCache(maxCacheSize));
88
90
  var spatialIndexRef = React.useRef(new performance.SpatialHashGrid(performance.SPATIAL_GRID_CELL_SIZE));
@@ -255,14 +257,18 @@ var WoongCanvasPolygon = function (props) {
255
257
  handleDragEndShared = _f.handleDragEnd;
256
258
 
257
259
  var handleDragStart = function () {
258
- handleDragStartShared();
260
+ handleDragStartShared(); // 드래그 시작 시점의 hover 상태 저장
261
+
262
+ dragStartHoveredItemRef.current = hoveredItemRef.current;
259
263
  draggingRef.current = true;
260
264
  controller.setMapCursor('grabbing');
261
265
  };
262
266
 
263
267
  var handleDragEnd = function () {
264
268
  handleDragEndShared();
265
- draggingRef.current = false;
269
+ draggingRef.current = false; // 드래그 종료 후 hover 상태 초기화 (다음 MOUSEMOVE에서 업데이트됨)
270
+
271
+ dragStartHoveredItemRef.current = null;
266
272
  controller.setMapCursor('grab');
267
273
  }; // Hit Test: 특정 좌표의 폴리곤 찾기
268
274
 
@@ -284,6 +290,11 @@ var WoongCanvasPolygon = function (props) {
284
290
 
285
291
 
286
292
  var setHovered = function (data) {
293
+ // 드래그 중에는 hover 상태 변경을 무시하고 드래그 시작 시점의 상태 유지
294
+ if (draggingRef.current) {
295
+ return;
296
+ }
297
+
287
298
  hoveredItemRef.current = data;
288
299
 
289
300
  if (draggingRef.current) {
@@ -323,12 +334,12 @@ var WoongCanvasPolygon = function (props) {
323
334
  selectedIdsRef.current = newSelected;
324
335
  }
325
336
 
326
- doRenderBase();
327
337
  doRenderEvent();
328
338
  }; // 클릭 이벤트 핸들러
329
339
 
330
340
 
331
341
  var handleClick = function (event) {
342
+ if (controller.isMapDragged()) return;
332
343
  if (disableInteractionRef.current) return;
333
344
  var clickedOffset = helpers.validateEvent(event, context$1, controller);
334
345
  if (!clickedOffset) return;
@@ -340,7 +351,9 @@ var WoongCanvasPolygon = function (props) {
340
351
 
341
352
 
342
353
  var handleMouseMove = function (event) {
343
- if (disableInteractionRef.current) return;
354
+ if (disableInteractionRef.current) return; // 드래그 중에는 hover 상태를 업데이트하지 않음 (드래그 시작 시점의 hover 상태 유지)
355
+
356
+ if (draggingRef.current) return;
344
357
  var mouseOffset = helpers.validateEvent(event, context$1, controller);
345
358
  if (!mouseOffset) return;
346
359
  var hoveredItem = findData(mouseOffset);
package/dist/index.es.js CHANGED
@@ -5712,7 +5712,9 @@ var WoongCanvasMarker = function (props) {
5712
5712
  var accumTranslateRef = useRef({
5713
5713
  x: 0,
5714
5714
  y: 0
5715
- }); // 성능 최적화 Refs
5715
+ }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
5716
+
5717
+ var dragStartHoveredItemRef = useRef(null); // 성능 최적화 Refs
5716
5718
 
5717
5719
  var offsetCacheRef = useRef(new LRUCache(maxCacheSize));
5718
5720
  var spatialIndexRef = useRef(new SpatialHashGrid(SPATIAL_GRID_CELL_SIZE));
@@ -5911,14 +5913,18 @@ var WoongCanvasMarker = function (props) {
5911
5913
  handleDragEndShared = _g.handleDragEnd;
5912
5914
 
5913
5915
  var handleDragStart = function () {
5914
- handleDragStartShared();
5916
+ handleDragStartShared(); // 드래그 시작 시점의 hover 상태 저장
5917
+
5918
+ dragStartHoveredItemRef.current = hoveredItemRef.current;
5915
5919
  draggingRef.current = true;
5916
5920
  controller.setMapCursor('grabbing');
5917
5921
  };
5918
5922
 
5919
5923
  var handleDragEnd = function () {
5920
5924
  handleDragEndShared();
5921
- draggingRef.current = false;
5925
+ draggingRef.current = false; // 드래그 종료 후 hover 상태 초기화 (다음 MOUSEMOVE에서 업데이트됨)
5926
+
5927
+ dragStartHoveredItemRef.current = null;
5922
5928
  controller.setMapCursor('grab');
5923
5929
  }; // Hit Test: 특정 좌표의 마커 찾기
5924
5930
 
@@ -5949,6 +5955,11 @@ var WoongCanvasMarker = function (props) {
5949
5955
 
5950
5956
 
5951
5957
  var setHovered = function (data) {
5958
+ // 드래그 중에는 hover 상태 변경을 무시하고 드래그 시작 시점의 상태 유지
5959
+ if (draggingRef.current) {
5960
+ return;
5961
+ }
5962
+
5952
5963
  hoveredItemRef.current = data;
5953
5964
 
5954
5965
  if (draggingRef.current) {
@@ -5998,6 +6009,7 @@ var WoongCanvasMarker = function (props) {
5998
6009
 
5999
6010
 
6000
6011
  var handleClick = function (event) {
6012
+ if (controller.isMapDragged()) return;
6001
6013
  if (disableInteractionRef.current) return;
6002
6014
  var clickedOffset = validateEvent(event, context, controller);
6003
6015
  if (!clickedOffset) return;
@@ -6009,7 +6021,9 @@ var WoongCanvasMarker = function (props) {
6009
6021
 
6010
6022
 
6011
6023
  var handleMouseMove = function (event) {
6012
- if (disableInteractionRef.current) return;
6024
+ if (disableInteractionRef.current) return; // 드래그 중에는 hover 상태를 업데이트하지 않음 (드래그 시작 시점의 hover 상태 유지)
6025
+
6026
+ if (draggingRef.current) return;
6013
6027
  var mouseOffset = validateEvent(event, context, controller);
6014
6028
  if (!mouseOffset) return;
6015
6029
  var hoveredItem = findData(mouseOffset);
@@ -6596,7 +6610,9 @@ var WoongCanvasPolygon = function (props) {
6596
6610
  var accumTranslateRef = useRef({
6597
6611
  x: 0,
6598
6612
  y: 0
6599
- }); // 성능 최적화 Refs
6613
+ }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
6614
+
6615
+ var dragStartHoveredItemRef = useRef(null); // 성능 최적화 Refs
6600
6616
 
6601
6617
  var offsetCacheRef = useRef(new LRUCache(maxCacheSize));
6602
6618
  var spatialIndexRef = useRef(new SpatialHashGrid(SPATIAL_GRID_CELL_SIZE));
@@ -6769,14 +6785,18 @@ var WoongCanvasPolygon = function (props) {
6769
6785
  handleDragEndShared = _f.handleDragEnd;
6770
6786
 
6771
6787
  var handleDragStart = function () {
6772
- handleDragStartShared();
6788
+ handleDragStartShared(); // 드래그 시작 시점의 hover 상태 저장
6789
+
6790
+ dragStartHoveredItemRef.current = hoveredItemRef.current;
6773
6791
  draggingRef.current = true;
6774
6792
  controller.setMapCursor('grabbing');
6775
6793
  };
6776
6794
 
6777
6795
  var handleDragEnd = function () {
6778
6796
  handleDragEndShared();
6779
- draggingRef.current = false;
6797
+ draggingRef.current = false; // 드래그 종료 후 hover 상태 초기화 (다음 MOUSEMOVE에서 업데이트됨)
6798
+
6799
+ dragStartHoveredItemRef.current = null;
6780
6800
  controller.setMapCursor('grab');
6781
6801
  }; // Hit Test: 특정 좌표의 폴리곤 찾기
6782
6802
 
@@ -6798,6 +6818,11 @@ var WoongCanvasPolygon = function (props) {
6798
6818
 
6799
6819
 
6800
6820
  var setHovered = function (data) {
6821
+ // 드래그 중에는 hover 상태 변경을 무시하고 드래그 시작 시점의 상태 유지
6822
+ if (draggingRef.current) {
6823
+ return;
6824
+ }
6825
+
6801
6826
  hoveredItemRef.current = data;
6802
6827
 
6803
6828
  if (draggingRef.current) {
@@ -6837,12 +6862,12 @@ var WoongCanvasPolygon = function (props) {
6837
6862
  selectedIdsRef.current = newSelected;
6838
6863
  }
6839
6864
 
6840
- doRenderBase();
6841
6865
  doRenderEvent();
6842
6866
  }; // 클릭 이벤트 핸들러
6843
6867
 
6844
6868
 
6845
6869
  var handleClick = function (event) {
6870
+ if (controller.isMapDragged()) return;
6846
6871
  if (disableInteractionRef.current) return;
6847
6872
  var clickedOffset = validateEvent(event, context, controller);
6848
6873
  if (!clickedOffset) return;
@@ -6854,7 +6879,9 @@ var WoongCanvasPolygon = function (props) {
6854
6879
 
6855
6880
 
6856
6881
  var handleMouseMove = function (event) {
6857
- if (disableInteractionRef.current) return;
6882
+ if (disableInteractionRef.current) return; // 드래그 중에는 hover 상태를 업데이트하지 않음 (드래그 시작 시점의 hover 상태 유지)
6883
+
6884
+ if (draggingRef.current) return;
6858
6885
  var mouseOffset = validateEvent(event, context, controller);
6859
6886
  if (!mouseOffset) return;
6860
6887
  var hoveredItem = findData(mouseOffset);
package/dist/index.umd.js CHANGED
@@ -5716,7 +5716,9 @@
5716
5716
  var accumTranslateRef = React.useRef({
5717
5717
  x: 0,
5718
5718
  y: 0
5719
- }); // 성능 최적화 Refs
5719
+ }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
5720
+
5721
+ var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
5720
5722
 
5721
5723
  var offsetCacheRef = React.useRef(new LRUCache(maxCacheSize));
5722
5724
  var spatialIndexRef = React.useRef(new SpatialHashGrid(SPATIAL_GRID_CELL_SIZE));
@@ -5915,14 +5917,18 @@
5915
5917
  handleDragEndShared = _g.handleDragEnd;
5916
5918
 
5917
5919
  var handleDragStart = function () {
5918
- handleDragStartShared();
5920
+ handleDragStartShared(); // 드래그 시작 시점의 hover 상태 저장
5921
+
5922
+ dragStartHoveredItemRef.current = hoveredItemRef.current;
5919
5923
  draggingRef.current = true;
5920
5924
  controller.setMapCursor('grabbing');
5921
5925
  };
5922
5926
 
5923
5927
  var handleDragEnd = function () {
5924
5928
  handleDragEndShared();
5925
- draggingRef.current = false;
5929
+ draggingRef.current = false; // 드래그 종료 후 hover 상태 초기화 (다음 MOUSEMOVE에서 업데이트됨)
5930
+
5931
+ dragStartHoveredItemRef.current = null;
5926
5932
  controller.setMapCursor('grab');
5927
5933
  }; // Hit Test: 특정 좌표의 마커 찾기
5928
5934
 
@@ -5953,6 +5959,11 @@
5953
5959
 
5954
5960
 
5955
5961
  var setHovered = function (data) {
5962
+ // 드래그 중에는 hover 상태 변경을 무시하고 드래그 시작 시점의 상태 유지
5963
+ if (draggingRef.current) {
5964
+ return;
5965
+ }
5966
+
5956
5967
  hoveredItemRef.current = data;
5957
5968
 
5958
5969
  if (draggingRef.current) {
@@ -6002,6 +6013,7 @@
6002
6013
 
6003
6014
 
6004
6015
  var handleClick = function (event) {
6016
+ if (controller.isMapDragged()) return;
6005
6017
  if (disableInteractionRef.current) return;
6006
6018
  var clickedOffset = validateEvent(event, context, controller);
6007
6019
  if (!clickedOffset) return;
@@ -6013,7 +6025,9 @@
6013
6025
 
6014
6026
 
6015
6027
  var handleMouseMove = function (event) {
6016
- if (disableInteractionRef.current) return;
6028
+ if (disableInteractionRef.current) return; // 드래그 중에는 hover 상태를 업데이트하지 않음 (드래그 시작 시점의 hover 상태 유지)
6029
+
6030
+ if (draggingRef.current) return;
6017
6031
  var mouseOffset = validateEvent(event, context, controller);
6018
6032
  if (!mouseOffset) return;
6019
6033
  var hoveredItem = findData(mouseOffset);
@@ -6600,7 +6614,9 @@
6600
6614
  var accumTranslateRef = React.useRef({
6601
6615
  x: 0,
6602
6616
  y: 0
6603
- }); // 성능 최적화 Refs
6617
+ }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
6618
+
6619
+ var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
6604
6620
 
6605
6621
  var offsetCacheRef = React.useRef(new LRUCache(maxCacheSize));
6606
6622
  var spatialIndexRef = React.useRef(new SpatialHashGrid(SPATIAL_GRID_CELL_SIZE));
@@ -6773,14 +6789,18 @@
6773
6789
  handleDragEndShared = _f.handleDragEnd;
6774
6790
 
6775
6791
  var handleDragStart = function () {
6776
- handleDragStartShared();
6792
+ handleDragStartShared(); // 드래그 시작 시점의 hover 상태 저장
6793
+
6794
+ dragStartHoveredItemRef.current = hoveredItemRef.current;
6777
6795
  draggingRef.current = true;
6778
6796
  controller.setMapCursor('grabbing');
6779
6797
  };
6780
6798
 
6781
6799
  var handleDragEnd = function () {
6782
6800
  handleDragEndShared();
6783
- draggingRef.current = false;
6801
+ draggingRef.current = false; // 드래그 종료 후 hover 상태 초기화 (다음 MOUSEMOVE에서 업데이트됨)
6802
+
6803
+ dragStartHoveredItemRef.current = null;
6784
6804
  controller.setMapCursor('grab');
6785
6805
  }; // Hit Test: 특정 좌표의 폴리곤 찾기
6786
6806
 
@@ -6802,6 +6822,11 @@
6802
6822
 
6803
6823
 
6804
6824
  var setHovered = function (data) {
6825
+ // 드래그 중에는 hover 상태 변경을 무시하고 드래그 시작 시점의 상태 유지
6826
+ if (draggingRef.current) {
6827
+ return;
6828
+ }
6829
+
6805
6830
  hoveredItemRef.current = data;
6806
6831
 
6807
6832
  if (draggingRef.current) {
@@ -6841,12 +6866,12 @@
6841
6866
  selectedIdsRef.current = newSelected;
6842
6867
  }
6843
6868
 
6844
- doRenderBase();
6845
6869
  doRenderEvent();
6846
6870
  }; // 클릭 이벤트 핸들러
6847
6871
 
6848
6872
 
6849
6873
  var handleClick = function (event) {
6874
+ if (controller.isMapDragged()) return;
6850
6875
  if (disableInteractionRef.current) return;
6851
6876
  var clickedOffset = validateEvent(event, context, controller);
6852
6877
  if (!clickedOffset) return;
@@ -6858,7 +6883,9 @@
6858
6883
 
6859
6884
 
6860
6885
  var handleMouseMove = function (event) {
6861
- if (disableInteractionRef.current) return;
6886
+ if (disableInteractionRef.current) return; // 드래그 중에는 hover 상태를 업데이트하지 않음 (드래그 시작 시점의 hover 상태 유지)
6887
+
6888
+ if (draggingRef.current) return;
6862
6889
  var mouseOffset = validateEvent(event, context, controller);
6863
6890
  if (!mouseOffset) return;
6864
6891
  var hoveredItem = findData(mouseOffset);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint-ui/map",
3
- "version": "1.2.0-test.44",
3
+ "version": "1.2.0-test.46",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",