@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); //
|
|
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
|
|
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); //
|
|
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
|
|
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); //
|
|
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
|
|
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 초기화 및 이벤트 리스너 등록
|