@mint-ui/map 1.2.0-test.57 → 1.2.0-test.58

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>) => void;
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,16 @@ 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
- if (hoveredItem) onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(hoveredItem);
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
+ onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(payload);
426
+ }
395
427
  }; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
396
428
 
397
429
 
@@ -500,6 +532,24 @@ var CanvasMarkerLayer = function (props) {
500
532
  var componentInstance = null;
501
533
 
502
534
  if (context$1) {
535
+ // context를 통한 onMouseOver 호출 시에도 boundingBox를 포함하도록 래핑
536
+ var wrappedOnMouseOver = onMouseOver ? function (payload) {
537
+ var boundingBox = getMarkerBoundingBoxCoordinates(payload);
538
+
539
+ if (boundingBox) {
540
+ var enhancedPayload = tslib.__assign(tslib.__assign({}, payload), {
541
+ boundingBox: boundingBox
542
+ });
543
+
544
+ onMouseOver(enhancedPayload);
545
+ } else {
546
+ var enhancedPayload = tslib.__assign(tslib.__assign({}, payload), {
547
+ boundingBox: undefined
548
+ });
549
+
550
+ onMouseOver(enhancedPayload);
551
+ }
552
+ } : undefined;
503
553
  componentInstance = {
504
554
  findData: findData,
505
555
  getSelectedIds: function () {
@@ -514,7 +564,7 @@ var CanvasMarkerLayer = function (props) {
514
564
  },
515
565
  onClick: onClick,
516
566
  onMouseOut: onMouseOut,
517
- onMouseOver: onMouseOver,
567
+ onMouseOver: wrappedOnMouseOver,
518
568
  setHovered: setHovered,
519
569
  zIndex: currentZIndex
520
570
  };
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,16 @@ 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
- if (hoveredItem) onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(hoveredItem);
4258
+
4259
+ if (hoveredItem) {
4260
+ var boundingBox = getMarkerBoundingBoxCoordinates(hoveredItem); // boundingBox를 항상 포함하도록 수정
4261
+
4262
+ var payload = __assign(__assign({}, hoveredItem), {
4263
+ boundingBox: boundingBox || undefined
4264
+ });
4265
+
4266
+ onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(payload);
4267
+ }
4236
4268
  }; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
4237
4269
 
4238
4270
 
@@ -4341,6 +4373,24 @@ var CanvasMarkerLayer = function (props) {
4341
4373
  var componentInstance = null;
4342
4374
 
4343
4375
  if (context) {
4376
+ // context를 통한 onMouseOver 호출 시에도 boundingBox를 포함하도록 래핑
4377
+ var wrappedOnMouseOver = onMouseOver ? function (payload) {
4378
+ var boundingBox = getMarkerBoundingBoxCoordinates(payload);
4379
+
4380
+ if (boundingBox) {
4381
+ var enhancedPayload = __assign(__assign({}, payload), {
4382
+ boundingBox: boundingBox
4383
+ });
4384
+
4385
+ onMouseOver(enhancedPayload);
4386
+ } else {
4387
+ var enhancedPayload = __assign(__assign({}, payload), {
4388
+ boundingBox: undefined
4389
+ });
4390
+
4391
+ onMouseOver(enhancedPayload);
4392
+ }
4393
+ } : undefined;
4344
4394
  componentInstance = {
4345
4395
  findData: findData,
4346
4396
  getSelectedIds: function () {
@@ -4355,7 +4405,7 @@ var CanvasMarkerLayer = function (props) {
4355
4405
  },
4356
4406
  onClick: onClick,
4357
4407
  onMouseOut: onMouseOut,
4358
- onMouseOver: onMouseOver,
4408
+ onMouseOver: wrappedOnMouseOver,
4359
4409
  setHovered: setHovered,
4360
4410
  zIndex: currentZIndex
4361
4411
  };
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,16 @@
4236
4259
  if (prevHovered === hoveredItem) return;
4237
4260
  setHovered(hoveredItem);
4238
4261
  if (prevHovered) onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
4239
- if (hoveredItem) onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(hoveredItem);
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
+ onMouseOver === null || onMouseOver === void 0 ? void 0 : onMouseOver(payload);
4271
+ }
4240
4272
  }; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
4241
4273
 
4242
4274
 
@@ -4345,6 +4377,24 @@
4345
4377
  var componentInstance = null;
4346
4378
 
4347
4379
  if (context) {
4380
+ // context를 통한 onMouseOver 호출 시에도 boundingBox를 포함하도록 래핑
4381
+ var wrappedOnMouseOver = onMouseOver ? function (payload) {
4382
+ var boundingBox = getMarkerBoundingBoxCoordinates(payload);
4383
+
4384
+ if (boundingBox) {
4385
+ var enhancedPayload = tslib.__assign(tslib.__assign({}, payload), {
4386
+ boundingBox: boundingBox
4387
+ });
4388
+
4389
+ onMouseOver(enhancedPayload);
4390
+ } else {
4391
+ var enhancedPayload = tslib.__assign(tslib.__assign({}, payload), {
4392
+ boundingBox: undefined
4393
+ });
4394
+
4395
+ onMouseOver(enhancedPayload);
4396
+ }
4397
+ } : undefined;
4348
4398
  componentInstance = {
4349
4399
  findData: findData,
4350
4400
  getSelectedIds: function () {
@@ -4359,7 +4409,7 @@
4359
4409
  },
4360
4410
  onClick: onClick,
4361
4411
  onMouseOut: onMouseOut,
4362
- onMouseOver: onMouseOver,
4412
+ onMouseOver: wrappedOnMouseOver,
4363
4413
  setHovered: setHovered,
4364
4414
  zIndex: currentZIndex
4365
4415
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint-ui/map",
3
- "version": "1.2.0-test.57",
3
+ "version": "1.2.0-test.58",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",