@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>) => 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,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
- 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
+
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: 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
- 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
+
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: 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
- 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
+
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: onMouseOver,
4406
+ onMouseOver: wrappedOnMouseOver,
4363
4407
  setHovered: setHovered,
4364
4408
  zIndex: currentZIndex
4365
4409
  };
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.59",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",