@mint-ui/map 1.2.0-test.57 → 1.2.0-test.59
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { MarkerOptions } from '../../../types';
|
|
2
|
+
import { MarkerOptions, Position } from '../../../types';
|
|
3
3
|
import { CanvasData, CustomRenderBase, CustomRenderEvent } from '../shared';
|
|
4
4
|
export { CanvasDataType, CanvasProvider, LRUCache, SpatialHashGrid } from '../shared';
|
|
5
5
|
export type { CanvasData, CanvasOption, CustomRenderBase, CustomRenderEvent, RenderBaseParams, RenderEventParams, RenderUtils } from '../shared';
|
|
@@ -14,7 +14,12 @@ export interface CanvasMarkerLayerProps<T> extends Pick<MarkerOptions, 'zIndex'
|
|
|
14
14
|
/** 마커 클릭 시 호출되는 콜백 함수 */
|
|
15
15
|
onClick?: (payload: CanvasData<T>, selectedIds: Set<string>) => void;
|
|
16
16
|
/** 마커에 마우스 오버 시 호출되는 콜백 함수 */
|
|
17
|
-
onMouseOver?: (payload: CanvasData<T>
|
|
17
|
+
onMouseOver?: (payload: CanvasData<T> & {
|
|
18
|
+
boundingBox?: {
|
|
19
|
+
bottomRight: Position;
|
|
20
|
+
leftTop: Position;
|
|
21
|
+
};
|
|
22
|
+
}) => void;
|
|
18
23
|
/** 마커에서 마우스 아웃 시 호출되는 콜백 함수 */
|
|
19
24
|
onMouseOut?: (payload: CanvasData<T>) => void;
|
|
20
25
|
/** 다중 선택 활성화 여부 (기본값: false) */
|
|
@@ -7,7 +7,7 @@ var Konva = require('konva');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var reactDom = require('react-dom');
|
|
9
9
|
var MapDrawables = require('../../../types/MapDrawables.js');
|
|
10
|
-
require('../../../types/MapTypes.js');
|
|
10
|
+
var MapTypes = require('../../../types/MapTypes.js');
|
|
11
11
|
require('../../../types/MapEventTypes.js');
|
|
12
12
|
var MintMapProvider = require('../../provider/MintMapProvider.js');
|
|
13
13
|
var context = require('../shared/context.js');
|
|
@@ -377,6 +377,29 @@ var CanvasMarkerLayer = function (props) {
|
|
|
377
377
|
if (!clickedData) return;
|
|
378
378
|
handleLocalClick(clickedData);
|
|
379
379
|
onClick === null || onClick === void 0 ? void 0 : onClick(clickedData, selectedIdsRef.current);
|
|
380
|
+
}; // 마커 바운딩 박스의 왼쪽 상단과 우측 하단을 위도/경도로 변환
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
var getMarkerBoundingBoxCoordinates = function (item) {
|
|
384
|
+
try {
|
|
385
|
+
var offset = getOrComputeMarkerOffset(item);
|
|
386
|
+
if (!offset) return null;
|
|
387
|
+
var boundingBox = computeBoundingBox(item);
|
|
388
|
+
if (!boundingBox) return null; // 왼쪽 상단 좌표 (minX, minY)
|
|
389
|
+
|
|
390
|
+
var leftTopOffset = new MapTypes.Offset(boundingBox.minX, boundingBox.minY);
|
|
391
|
+
var leftTop = controller.offsetToPosition(leftTopOffset); // 우측 하단 좌표 (maxX, maxY)
|
|
392
|
+
|
|
393
|
+
var bottomRightOffset = new MapTypes.Offset(boundingBox.maxX, boundingBox.maxY);
|
|
394
|
+
var bottomRight = controller.offsetToPosition(bottomRightOffset);
|
|
395
|
+
return {
|
|
396
|
+
bottomRight: bottomRight,
|
|
397
|
+
leftTop: leftTop
|
|
398
|
+
};
|
|
399
|
+
} catch (error) {
|
|
400
|
+
console.error('[CanvasMarkerLayer] getMarkerBoundingBoxCoordinates error:', error, item);
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
380
403
|
}; // 마우스 이동 이벤트 핸들러 (hover 감지)
|
|
381
404
|
|
|
382
405
|
|
|
@@ -391,7 +414,17 @@ var CanvasMarkerLayer = function (props) {
|
|
|
391
414
|
if (prevHovered === hoveredItem) return;
|
|
392
415
|
setHovered(hoveredItem);
|
|
393
416
|
if (prevHovered) onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
|
|
394
|
-
|
|
417
|
+
|
|
418
|
+
if (hoveredItem) {
|
|
419
|
+
var boundingBox = getMarkerBoundingBoxCoordinates(hoveredItem); // boundingBox를 명시적으로 포함 (빌드 후에도 확실히 포함되도록)
|
|
420
|
+
|
|
421
|
+
var payload = tslib.__assign(tslib.__assign({}, hoveredItem), {
|
|
422
|
+
boundingBox: boundingBox || undefined
|
|
423
|
+
}); // 타입 체크를 통과하도록 타입 단언 추가
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(payload);
|
|
427
|
+
}
|
|
395
428
|
}; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
|
|
396
429
|
|
|
397
430
|
|
|
@@ -500,6 +533,17 @@ var CanvasMarkerLayer = function (props) {
|
|
|
500
533
|
var componentInstance = null;
|
|
501
534
|
|
|
502
535
|
if (context$1) {
|
|
536
|
+
// context를 통한 onMouseOver 호출 시에도 boundingBox를 포함하도록 래핑
|
|
537
|
+
var wrappedOnMouseOver = onMouseOver ? function (payload) {
|
|
538
|
+
var boundingBox = getMarkerBoundingBoxCoordinates(payload); // boundingBox를 명시적으로 포함 (빌드 후에도 확실히 포함되도록)
|
|
539
|
+
|
|
540
|
+
var enhancedPayload = tslib.__assign(tslib.__assign({}, payload), {
|
|
541
|
+
boundingBox: boundingBox || undefined
|
|
542
|
+
}); // 타입 체크를 통과하도록 타입 단언 추가
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
onMouseOver(enhancedPayload);
|
|
546
|
+
} : undefined;
|
|
503
547
|
componentInstance = {
|
|
504
548
|
findData: findData,
|
|
505
549
|
getSelectedIds: function () {
|
|
@@ -514,7 +558,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
514
558
|
},
|
|
515
559
|
onClick: onClick,
|
|
516
560
|
onMouseOut: onMouseOut,
|
|
517
|
-
onMouseOver:
|
|
561
|
+
onMouseOver: wrappedOnMouseOver,
|
|
518
562
|
setHovered: setHovered,
|
|
519
563
|
zIndex: currentZIndex
|
|
520
564
|
};
|
package/dist/index.es.js
CHANGED
|
@@ -4218,6 +4218,29 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4218
4218
|
if (!clickedData) return;
|
|
4219
4219
|
handleLocalClick(clickedData);
|
|
4220
4220
|
onClick === null || onClick === void 0 ? void 0 : onClick(clickedData, selectedIdsRef.current);
|
|
4221
|
+
}; // 마커 바운딩 박스의 왼쪽 상단과 우측 하단을 위도/경도로 변환
|
|
4222
|
+
|
|
4223
|
+
|
|
4224
|
+
var getMarkerBoundingBoxCoordinates = function (item) {
|
|
4225
|
+
try {
|
|
4226
|
+
var offset = getOrComputeMarkerOffset(item);
|
|
4227
|
+
if (!offset) return null;
|
|
4228
|
+
var boundingBox = computeBoundingBox(item);
|
|
4229
|
+
if (!boundingBox) return null; // 왼쪽 상단 좌표 (minX, minY)
|
|
4230
|
+
|
|
4231
|
+
var leftTopOffset = new Offset(boundingBox.minX, boundingBox.minY);
|
|
4232
|
+
var leftTop = controller.offsetToPosition(leftTopOffset); // 우측 하단 좌표 (maxX, maxY)
|
|
4233
|
+
|
|
4234
|
+
var bottomRightOffset = new Offset(boundingBox.maxX, boundingBox.maxY);
|
|
4235
|
+
var bottomRight = controller.offsetToPosition(bottomRightOffset);
|
|
4236
|
+
return {
|
|
4237
|
+
bottomRight: bottomRight,
|
|
4238
|
+
leftTop: leftTop
|
|
4239
|
+
};
|
|
4240
|
+
} catch (error) {
|
|
4241
|
+
console.error('[CanvasMarkerLayer] getMarkerBoundingBoxCoordinates error:', error, item);
|
|
4242
|
+
return null;
|
|
4243
|
+
}
|
|
4221
4244
|
}; // 마우스 이동 이벤트 핸들러 (hover 감지)
|
|
4222
4245
|
|
|
4223
4246
|
|
|
@@ -4232,7 +4255,17 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4232
4255
|
if (prevHovered === hoveredItem) return;
|
|
4233
4256
|
setHovered(hoveredItem);
|
|
4234
4257
|
if (prevHovered) onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
|
|
4235
|
-
|
|
4258
|
+
|
|
4259
|
+
if (hoveredItem) {
|
|
4260
|
+
var boundingBox = getMarkerBoundingBoxCoordinates(hoveredItem); // boundingBox를 명시적으로 포함 (빌드 후에도 확실히 포함되도록)
|
|
4261
|
+
|
|
4262
|
+
var payload = __assign(__assign({}, hoveredItem), {
|
|
4263
|
+
boundingBox: boundingBox || undefined
|
|
4264
|
+
}); // 타입 체크를 통과하도록 타입 단언 추가
|
|
4265
|
+
|
|
4266
|
+
|
|
4267
|
+
onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(payload);
|
|
4268
|
+
}
|
|
4236
4269
|
}; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
|
|
4237
4270
|
|
|
4238
4271
|
|
|
@@ -4341,6 +4374,17 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4341
4374
|
var componentInstance = null;
|
|
4342
4375
|
|
|
4343
4376
|
if (context) {
|
|
4377
|
+
// context를 통한 onMouseOver 호출 시에도 boundingBox를 포함하도록 래핑
|
|
4378
|
+
var wrappedOnMouseOver = onMouseOver ? function (payload) {
|
|
4379
|
+
var boundingBox = getMarkerBoundingBoxCoordinates(payload); // boundingBox를 명시적으로 포함 (빌드 후에도 확실히 포함되도록)
|
|
4380
|
+
|
|
4381
|
+
var enhancedPayload = __assign(__assign({}, payload), {
|
|
4382
|
+
boundingBox: boundingBox || undefined
|
|
4383
|
+
}); // 타입 체크를 통과하도록 타입 단언 추가
|
|
4384
|
+
|
|
4385
|
+
|
|
4386
|
+
onMouseOver(enhancedPayload);
|
|
4387
|
+
} : undefined;
|
|
4344
4388
|
componentInstance = {
|
|
4345
4389
|
findData: findData,
|
|
4346
4390
|
getSelectedIds: function () {
|
|
@@ -4355,7 +4399,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4355
4399
|
},
|
|
4356
4400
|
onClick: onClick,
|
|
4357
4401
|
onMouseOut: onMouseOut,
|
|
4358
|
-
onMouseOver:
|
|
4402
|
+
onMouseOver: wrappedOnMouseOver,
|
|
4359
4403
|
setHovered: setHovered,
|
|
4360
4404
|
zIndex: currentZIndex
|
|
4361
4405
|
};
|
package/dist/index.umd.js
CHANGED
|
@@ -4222,6 +4222,29 @@
|
|
|
4222
4222
|
if (!clickedData) return;
|
|
4223
4223
|
handleLocalClick(clickedData);
|
|
4224
4224
|
onClick === null || onClick === void 0 ? void 0 : onClick(clickedData, selectedIdsRef.current);
|
|
4225
|
+
}; // 마커 바운딩 박스의 왼쪽 상단과 우측 하단을 위도/경도로 변환
|
|
4226
|
+
|
|
4227
|
+
|
|
4228
|
+
var getMarkerBoundingBoxCoordinates = function (item) {
|
|
4229
|
+
try {
|
|
4230
|
+
var offset = getOrComputeMarkerOffset(item);
|
|
4231
|
+
if (!offset) return null;
|
|
4232
|
+
var boundingBox = computeBoundingBox(item);
|
|
4233
|
+
if (!boundingBox) return null; // 왼쪽 상단 좌표 (minX, minY)
|
|
4234
|
+
|
|
4235
|
+
var leftTopOffset = new Offset(boundingBox.minX, boundingBox.minY);
|
|
4236
|
+
var leftTop = controller.offsetToPosition(leftTopOffset); // 우측 하단 좌표 (maxX, maxY)
|
|
4237
|
+
|
|
4238
|
+
var bottomRightOffset = new Offset(boundingBox.maxX, boundingBox.maxY);
|
|
4239
|
+
var bottomRight = controller.offsetToPosition(bottomRightOffset);
|
|
4240
|
+
return {
|
|
4241
|
+
bottomRight: bottomRight,
|
|
4242
|
+
leftTop: leftTop
|
|
4243
|
+
};
|
|
4244
|
+
} catch (error) {
|
|
4245
|
+
console.error('[CanvasMarkerLayer] getMarkerBoundingBoxCoordinates error:', error, item);
|
|
4246
|
+
return null;
|
|
4247
|
+
}
|
|
4225
4248
|
}; // 마우스 이동 이벤트 핸들러 (hover 감지)
|
|
4226
4249
|
|
|
4227
4250
|
|
|
@@ -4236,7 +4259,17 @@
|
|
|
4236
4259
|
if (prevHovered === hoveredItem) return;
|
|
4237
4260
|
setHovered(hoveredItem);
|
|
4238
4261
|
if (prevHovered) onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
|
|
4239
|
-
|
|
4262
|
+
|
|
4263
|
+
if (hoveredItem) {
|
|
4264
|
+
var boundingBox = getMarkerBoundingBoxCoordinates(hoveredItem); // boundingBox를 명시적으로 포함 (빌드 후에도 확실히 포함되도록)
|
|
4265
|
+
|
|
4266
|
+
var payload = tslib.__assign(tslib.__assign({}, hoveredItem), {
|
|
4267
|
+
boundingBox: boundingBox || undefined
|
|
4268
|
+
}); // 타입 체크를 통과하도록 타입 단언 추가
|
|
4269
|
+
|
|
4270
|
+
|
|
4271
|
+
onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(payload);
|
|
4272
|
+
}
|
|
4240
4273
|
}; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
|
|
4241
4274
|
|
|
4242
4275
|
|
|
@@ -4345,6 +4378,17 @@
|
|
|
4345
4378
|
var componentInstance = null;
|
|
4346
4379
|
|
|
4347
4380
|
if (context) {
|
|
4381
|
+
// context를 통한 onMouseOver 호출 시에도 boundingBox를 포함하도록 래핑
|
|
4382
|
+
var wrappedOnMouseOver = onMouseOver ? function (payload) {
|
|
4383
|
+
var boundingBox = getMarkerBoundingBoxCoordinates(payload); // boundingBox를 명시적으로 포함 (빌드 후에도 확실히 포함되도록)
|
|
4384
|
+
|
|
4385
|
+
var enhancedPayload = tslib.__assign(tslib.__assign({}, payload), {
|
|
4386
|
+
boundingBox: boundingBox || undefined
|
|
4387
|
+
}); // 타입 체크를 통과하도록 타입 단언 추가
|
|
4388
|
+
|
|
4389
|
+
|
|
4390
|
+
onMouseOver(enhancedPayload);
|
|
4391
|
+
} : undefined;
|
|
4348
4392
|
componentInstance = {
|
|
4349
4393
|
findData: findData,
|
|
4350
4394
|
getSelectedIds: function () {
|
|
@@ -4359,7 +4403,7 @@
|
|
|
4359
4403
|
},
|
|
4360
4404
|
onClick: onClick,
|
|
4361
4405
|
onMouseOut: onMouseOut,
|
|
4362
|
-
onMouseOver:
|
|
4406
|
+
onMouseOver: wrappedOnMouseOver,
|
|
4363
4407
|
setHovered: setHovered,
|
|
4364
4408
|
zIndex: currentZIndex
|
|
4365
4409
|
};
|