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

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.
@@ -33,6 +33,8 @@ export interface CanvasMarkerLayerProps<T> extends Pick<MarkerOptions, 'zIndex'
33
33
  selectedItem?: CanvasData<T> | null;
34
34
  /** 상호작용 비활성화 여부 (기본값: false) */
35
35
  disableInteraction?: boolean;
36
+ /** hover 시 레이어의 z-index를 변경할 값 (지정 시 hover 시에만 적용) */
37
+ hoverZIndex?: number;
36
38
  /** Base Layer 렌더링 함수 (필수) */
37
39
  renderBase: CustomRenderBase<T>;
38
40
  /** Event Layer 렌더링 함수 (선택) */
@@ -42,9 +42,10 @@ var CanvasMarkerLayer = function (props) {
42
42
  externalSelectedItem = props.selectedItem,
43
43
  _f = props.disableInteraction,
44
44
  disableInteraction = _f === void 0 ? false : _f,
45
+ hoverZIndex = props.hoverZIndex,
45
46
  renderBase = props.renderBase,
46
47
  renderEvent = props.renderEvent,
47
- options = tslib.__rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "renderBase", "renderEvent"]);
48
+ options = tslib.__rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "hoverZIndex", "renderBase", "renderEvent"]);
48
49
 
49
50
  var controller = MintMapProvider.useMintMapController();
50
51
  var context$1 = context.useCanvasContext();
@@ -74,7 +75,9 @@ var CanvasMarkerLayer = function (props) {
74
75
  y: 0
75
76
  }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
76
77
 
77
- var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
78
+ var dragStartHoveredItemRef = React.useRef(null); // 원래 z-index 저장 (hoverZIndex 사용 시 복원용)
79
+
80
+ var originalZIndexRef = React.useRef(currentZIndex); // 성능 최적화 Refs
78
81
 
79
82
  var offsetCacheRef = React.useRef(new performance.LRUCache(maxCacheSize));
80
83
  var spatialIndexRef = React.useRef(new performance.SpatialHashGrid(performance.SPATIAL_GRID_CELL_SIZE));
@@ -320,7 +323,21 @@ var CanvasMarkerLayer = function (props) {
320
323
  return;
321
324
  }
322
325
 
323
- hoveredItemRef.current = hoveredData;
326
+ var prevHovered = hoveredItemRef.current;
327
+ hoveredItemRef.current = hoveredData; // hoverZIndex가 설정되어 있고 마커가 존재할 때 z-index 변경
328
+
329
+ if (hoverZIndex !== undefined && markerRef.current) {
330
+ // hover 상태가 변경될 때만 z-index 업데이트
331
+ if (prevHovered !== hoveredData) {
332
+ // 이전 hover가 끝났을 때 원래 z-index로 복원
333
+ if (prevHovered && !hoveredData) {
334
+ controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
335
+ } // 새로운 hover가 시작될 때 hoverZIndex로 변경
336
+ else if (hoveredData && !prevHovered) {
337
+ controller.setMarkerZIndex(markerRef.current, hoverZIndex);
338
+ }
339
+ }
340
+ }
324
341
 
325
342
  if (draggingRef.current) {
326
343
  controller.setMapCursor('grabbing');
@@ -399,7 +416,12 @@ var CanvasMarkerLayer = function (props) {
399
416
  if (disableInteractionRef.current) return;
400
417
  var prevHovered = hoveredItemRef.current;
401
418
  if (!prevHovered) return;
402
- hoveredItemRef.current = null;
419
+ hoveredItemRef.current = null; // hoverZIndex가 설정되어 있으면 원래 z-index로 복원
420
+
421
+ if (hoverZIndex !== undefined && markerRef.current) {
422
+ controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
423
+ }
424
+
403
425
  controller.setMapCursor('grab');
404
426
  doRenderEvent();
405
427
  onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
@@ -424,7 +446,16 @@ var CanvasMarkerLayer = function (props) {
424
446
  }, options);
425
447
 
426
448
  if (markerRef.current) {
427
- controller.updateMarker(markerRef.current, markerOptions);
449
+ controller.updateMarker(markerRef.current, markerOptions); // z-index가 변경되었을 때 originalZIndexRef 업데이트
450
+
451
+ if (options.zIndex !== undefined) {
452
+ originalZIndexRef.current = options.zIndex; // hover 상태가 아닐 때만 z-index 업데이트 (hover 중이면 hoverZIndex 유지)
453
+
454
+ if (!hoveredItemRef.current || hoverZIndex === undefined) {
455
+ controller.setMarkerZIndex(markerRef.current, options.zIndex);
456
+ }
457
+ }
458
+
428
459
  return;
429
460
  }
430
461
 
@@ -437,6 +468,7 @@ var CanvasMarkerLayer = function (props) {
437
468
  }
438
469
 
439
470
  if (options.zIndex !== undefined) {
471
+ originalZIndexRef.current = options.zIndex;
440
472
  controller.setMarkerZIndex(markerRef.current, options.zIndex);
441
473
  }
442
474
  }, [options]); // Konva 초기화 및 이벤트 리스너 등록
package/dist/index.es.js CHANGED
@@ -3883,9 +3883,10 @@ var CanvasMarkerLayer = function (props) {
3883
3883
  externalSelectedItem = props.selectedItem,
3884
3884
  _f = props.disableInteraction,
3885
3885
  disableInteraction = _f === void 0 ? false : _f,
3886
+ hoverZIndex = props.hoverZIndex,
3886
3887
  renderBase = props.renderBase,
3887
3888
  renderEvent = props.renderEvent,
3888
- options = __rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "renderBase", "renderEvent"]);
3889
+ options = __rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "hoverZIndex", "renderBase", "renderEvent"]);
3889
3890
 
3890
3891
  var controller = useMintMapController();
3891
3892
  var context = useCanvasContext();
@@ -3915,7 +3916,9 @@ var CanvasMarkerLayer = function (props) {
3915
3916
  y: 0
3916
3917
  }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
3917
3918
 
3918
- var dragStartHoveredItemRef = useRef(null); // 성능 최적화 Refs
3919
+ var dragStartHoveredItemRef = useRef(null); // 원래 z-index 저장 (hoverZIndex 사용 시 복원용)
3920
+
3921
+ var originalZIndexRef = useRef(currentZIndex); // 성능 최적화 Refs
3919
3922
 
3920
3923
  var offsetCacheRef = useRef(new LRUCache(maxCacheSize));
3921
3924
  var spatialIndexRef = useRef(new SpatialHashGrid(SPATIAL_GRID_CELL_SIZE));
@@ -4161,7 +4164,21 @@ var CanvasMarkerLayer = function (props) {
4161
4164
  return;
4162
4165
  }
4163
4166
 
4164
- hoveredItemRef.current = hoveredData;
4167
+ var prevHovered = hoveredItemRef.current;
4168
+ hoveredItemRef.current = hoveredData; // hoverZIndex가 설정되어 있고 마커가 존재할 때 z-index 변경
4169
+
4170
+ if (hoverZIndex !== undefined && markerRef.current) {
4171
+ // hover 상태가 변경될 때만 z-index 업데이트
4172
+ if (prevHovered !== hoveredData) {
4173
+ // 이전 hover가 끝났을 때 원래 z-index로 복원
4174
+ if (prevHovered && !hoveredData) {
4175
+ controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
4176
+ } // 새로운 hover가 시작될 때 hoverZIndex로 변경
4177
+ else if (hoveredData && !prevHovered) {
4178
+ controller.setMarkerZIndex(markerRef.current, hoverZIndex);
4179
+ }
4180
+ }
4181
+ }
4165
4182
 
4166
4183
  if (draggingRef.current) {
4167
4184
  controller.setMapCursor('grabbing');
@@ -4240,7 +4257,12 @@ var CanvasMarkerLayer = function (props) {
4240
4257
  if (disableInteractionRef.current) return;
4241
4258
  var prevHovered = hoveredItemRef.current;
4242
4259
  if (!prevHovered) return;
4243
- hoveredItemRef.current = null;
4260
+ hoveredItemRef.current = null; // hoverZIndex가 설정되어 있으면 원래 z-index로 복원
4261
+
4262
+ if (hoverZIndex !== undefined && markerRef.current) {
4263
+ controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
4264
+ }
4265
+
4244
4266
  controller.setMapCursor('grab');
4245
4267
  doRenderEvent();
4246
4268
  onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
@@ -4265,7 +4287,16 @@ var CanvasMarkerLayer = function (props) {
4265
4287
  }, options);
4266
4288
 
4267
4289
  if (markerRef.current) {
4268
- controller.updateMarker(markerRef.current, markerOptions);
4290
+ controller.updateMarker(markerRef.current, markerOptions); // z-index가 변경되었을 때 originalZIndexRef 업데이트
4291
+
4292
+ if (options.zIndex !== undefined) {
4293
+ originalZIndexRef.current = options.zIndex; // hover 상태가 아닐 때만 z-index 업데이트 (hover 중이면 hoverZIndex 유지)
4294
+
4295
+ if (!hoveredItemRef.current || hoverZIndex === undefined) {
4296
+ controller.setMarkerZIndex(markerRef.current, options.zIndex);
4297
+ }
4298
+ }
4299
+
4269
4300
  return;
4270
4301
  }
4271
4302
 
@@ -4278,6 +4309,7 @@ var CanvasMarkerLayer = function (props) {
4278
4309
  }
4279
4310
 
4280
4311
  if (options.zIndex !== undefined) {
4312
+ originalZIndexRef.current = options.zIndex;
4281
4313
  controller.setMarkerZIndex(markerRef.current, options.zIndex);
4282
4314
  }
4283
4315
  }, [options]); // Konva 초기화 및 이벤트 리스너 등록
package/dist/index.umd.js CHANGED
@@ -3887,9 +3887,10 @@
3887
3887
  externalSelectedItem = props.selectedItem,
3888
3888
  _f = props.disableInteraction,
3889
3889
  disableInteraction = _f === void 0 ? false : _f,
3890
+ hoverZIndex = props.hoverZIndex,
3890
3891
  renderBase = props.renderBase,
3891
3892
  renderEvent = props.renderEvent,
3892
- options = tslib.__rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "renderBase", "renderEvent"]);
3893
+ options = tslib.__rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "hoverZIndex", "renderBase", "renderEvent"]);
3893
3894
 
3894
3895
  var controller = useMintMapController();
3895
3896
  var context = useCanvasContext();
@@ -3919,7 +3920,9 @@
3919
3920
  y: 0
3920
3921
  }); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
3921
3922
 
3922
- var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
3923
+ var dragStartHoveredItemRef = React.useRef(null); // 원래 z-index 저장 (hoverZIndex 사용 시 복원용)
3924
+
3925
+ var originalZIndexRef = React.useRef(currentZIndex); // 성능 최적화 Refs
3923
3926
 
3924
3927
  var offsetCacheRef = React.useRef(new LRUCache(maxCacheSize));
3925
3928
  var spatialIndexRef = React.useRef(new SpatialHashGrid(SPATIAL_GRID_CELL_SIZE));
@@ -4165,7 +4168,21 @@
4165
4168
  return;
4166
4169
  }
4167
4170
 
4168
- hoveredItemRef.current = hoveredData;
4171
+ var prevHovered = hoveredItemRef.current;
4172
+ hoveredItemRef.current = hoveredData; // hoverZIndex가 설정되어 있고 마커가 존재할 때 z-index 변경
4173
+
4174
+ if (hoverZIndex !== undefined && markerRef.current) {
4175
+ // hover 상태가 변경될 때만 z-index 업데이트
4176
+ if (prevHovered !== hoveredData) {
4177
+ // 이전 hover가 끝났을 때 원래 z-index로 복원
4178
+ if (prevHovered && !hoveredData) {
4179
+ controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
4180
+ } // 새로운 hover가 시작될 때 hoverZIndex로 변경
4181
+ else if (hoveredData && !prevHovered) {
4182
+ controller.setMarkerZIndex(markerRef.current, hoverZIndex);
4183
+ }
4184
+ }
4185
+ }
4169
4186
 
4170
4187
  if (draggingRef.current) {
4171
4188
  controller.setMapCursor('grabbing');
@@ -4244,7 +4261,12 @@
4244
4261
  if (disableInteractionRef.current) return;
4245
4262
  var prevHovered = hoveredItemRef.current;
4246
4263
  if (!prevHovered) return;
4247
- hoveredItemRef.current = null;
4264
+ hoveredItemRef.current = null; // hoverZIndex가 설정되어 있으면 원래 z-index로 복원
4265
+
4266
+ if (hoverZIndex !== undefined && markerRef.current) {
4267
+ controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
4268
+ }
4269
+
4248
4270
  controller.setMapCursor('grab');
4249
4271
  doRenderEvent();
4250
4272
  onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
@@ -4269,7 +4291,16 @@
4269
4291
  }, options);
4270
4292
 
4271
4293
  if (markerRef.current) {
4272
- controller.updateMarker(markerRef.current, markerOptions);
4294
+ controller.updateMarker(markerRef.current, markerOptions); // z-index가 변경되었을 때 originalZIndexRef 업데이트
4295
+
4296
+ if (options.zIndex !== undefined) {
4297
+ originalZIndexRef.current = options.zIndex; // hover 상태가 아닐 때만 z-index 업데이트 (hover 중이면 hoverZIndex 유지)
4298
+
4299
+ if (!hoveredItemRef.current || hoverZIndex === undefined) {
4300
+ controller.setMarkerZIndex(markerRef.current, options.zIndex);
4301
+ }
4302
+ }
4303
+
4273
4304
  return;
4274
4305
  }
4275
4306
 
@@ -4282,6 +4313,7 @@
4282
4313
  }
4283
4314
 
4284
4315
  if (options.zIndex !== undefined) {
4316
+ originalZIndexRef.current = options.zIndex;
4285
4317
  controller.setMarkerZIndex(markerRef.current, options.zIndex);
4286
4318
  }
4287
4319
  }, [options]); // Konva 초기화 및 이벤트 리스너 등록
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint-ui/map",
3
- "version": "1.2.0-test.55",
3
+ "version": "1.2.0-test.56",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",