@mint-ui/map 1.2.0-test.40 → 1.2.0-test.41

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,26 +33,41 @@ export interface CanvasOption {
33
33
  /**
34
34
  * 서버 데이터와 캔버스 옵션을 결합한 타입
35
35
  *
36
- * 서버 데이터의 필드가 CanvasOption과 충돌하는 경우, CanvasOption의 필드가 우선됩니다.
37
- *
38
36
  * @template T 서버에서 받은 원본 데이터 타입
39
37
  *
38
+ * @remarks
39
+ * 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
40
+ * 변환 시 명시적으로 매핑해야 합니다. createCanvasData 헬퍼 함수를 사용하세요.
41
+ *
40
42
  * @example
43
+ * ```typescript
41
44
  * // 서버 데이터에 id가 number 타입인 경우
42
45
  * interface ServerData {
43
46
  * id: number;
44
47
  * name: string;
45
48
  * }
46
49
  *
47
- * // CanvasData<ServerData>는 다음과 같이 됩니다:
48
- * // {
49
- * // id: string; // CanvasOption의 id가 우선
50
- * // name: string; // 서버 데이터의 name
51
- * // position: Position;
52
- * // ...CanvasOption의 다른 필드들
53
- * // }
50
+ * // 잘못된 사용 (타입 에러 발생)
51
+ * const data: CanvasData<ServerData> = {
52
+ * ...serverData,
53
+ * id: String(serverData.id), // 명시적 변환 필요
54
+ * position: new Position(lat, lng)
55
+ * };
56
+ *
57
+ * // ✅ 올바른 사용 (헬퍼 함수 사용)
58
+ * const data = createCanvasData(serverData, {
59
+ * id: String(serverData.id),
60
+ * position: new Position(lat, lng)
61
+ * });
62
+ * ```
63
+ */
64
+ export declare type CanvasData<T = {}> = T & CanvasOption;
65
+ /**
66
+ * 서버 데이터를 CanvasData로 변환하는 헬퍼 함수
67
+ *
68
+ * @see createCanvasData in ./utils.ts
54
69
  */
55
- export declare type CanvasData<T = {}> = Omit<T, keyof CanvasOption> & CanvasOption;
70
+ export { createCanvasData } from './utils';
56
71
  /**
57
72
  * 렌더링 유틸리티 함수들 (좌표 변환)
58
73
  *
@@ -2,6 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var utils = require('./utils.js');
6
+
5
7
  /**
6
8
  * 캔버스 데이터 타입 Enum
7
9
  */
@@ -11,3 +13,5 @@ exports.CanvasDataType = void 0;
11
13
  CanvasDataType["MARKER"] = "MARKER";
12
14
  CanvasDataType["POLYGON"] = "POLYGON";
13
15
  })(exports.CanvasDataType || (exports.CanvasDataType = {}));
16
+
17
+ exports.createCanvasData = utils.createCanvasData;
@@ -1,6 +1,6 @@
1
1
  import { Offset } from "../../../types";
2
2
  import { MintMapController } from "../../MintMapController";
3
- import { CanvasData } from "./types";
3
+ import { CanvasData, CanvasOption } from "./types";
4
4
  /**
5
5
  * 폴리곤 좌표 변환 (위경도 → 화면 좌표)
6
6
  *
@@ -60,3 +60,36 @@ export declare const calculateTextBoxWidth: ({ text, fontConfig, padding, minWid
60
60
  padding: number;
61
61
  minWidth: number;
62
62
  }) => number;
63
+ /**
64
+ * 서버 데이터를 CanvasData로 변환하는 헬퍼 함수
65
+ *
66
+ * 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
67
+ * 이 함수를 사용하여 명시적으로 매핑할 수 있습니다.
68
+ *
69
+ * @template T 서버에서 받은 원본 데이터 타입
70
+ * @param serverData 서버에서 받은 원본 데이터
71
+ * @param canvasOptions CanvasOption 필드들 (충돌하는 필드는 여기서 명시적으로 지정)
72
+ * @returns CanvasData<T> 타입의 데이터
73
+ *
74
+ * @example
75
+ * ```typescript
76
+ * interface ServerData {
77
+ * id: number; // CanvasOption의 id와 충돌
78
+ * name: string;
79
+ * }
80
+ *
81
+ * const serverData: ServerData = { id: 123, name: "Test" };
82
+ *
83
+ * // ✅ 올바른 사용
84
+ * const canvasData = createCanvasData(serverData, {
85
+ * id: String(serverData.id), // 명시적으로 변환
86
+ * position: new Position(37.5, 127.0)
87
+ * });
88
+ *
89
+ * // canvasData는 CanvasData<ServerData> 타입이며:
90
+ * // - id: string (CanvasOption의 id)
91
+ * // - name: string (서버 데이터의 name)
92
+ * // - position: Position (CanvasOption의 position)
93
+ * ```
94
+ */
95
+ export declare function createCanvasData<T extends Record<string, any>>(serverData: T, canvasOptions: CanvasOption): CanvasData<T>;
@@ -2,6 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var tslib = require('tslib');
5
6
  require('../../../types/MapDrawables.js');
6
7
  var MapTypes = require('../../../types/MapTypes.js');
7
8
  require('../../../types/MapEventTypes.js');
@@ -211,10 +212,49 @@ var calculateTextBoxWidth = function (_a) {
211
212
  var textWidth = tempCtx.measureText(text).width;
212
213
  return Math.max(minWidth, textWidth + padding);
213
214
  };
215
+ /**
216
+ * 서버 데이터를 CanvasData로 변환하는 헬퍼 함수
217
+ *
218
+ * 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
219
+ * 이 함수를 사용하여 명시적으로 매핑할 수 있습니다.
220
+ *
221
+ * @template T 서버에서 받은 원본 데이터 타입
222
+ * @param serverData 서버에서 받은 원본 데이터
223
+ * @param canvasOptions CanvasOption 필드들 (충돌하는 필드는 여기서 명시적으로 지정)
224
+ * @returns CanvasData<T> 타입의 데이터
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * interface ServerData {
229
+ * id: number; // CanvasOption의 id와 충돌
230
+ * name: string;
231
+ * }
232
+ *
233
+ * const serverData: ServerData = { id: 123, name: "Test" };
234
+ *
235
+ * // ✅ 올바른 사용
236
+ * const canvasData = createCanvasData(serverData, {
237
+ * id: String(serverData.id), // 명시적으로 변환
238
+ * position: new Position(37.5, 127.0)
239
+ * });
240
+ *
241
+ * // canvasData는 CanvasData<ServerData> 타입이며:
242
+ * // - id: string (CanvasOption의 id)
243
+ * // - name: string (서버 데이터의 name)
244
+ * // - position: Position (CanvasOption의 position)
245
+ * ```
246
+ */
247
+
248
+ function createCanvasData(serverData, canvasOptions) {
249
+ // 서버 데이터와 CanvasOption을 결합
250
+ // CanvasOption의 필드가 우선되므로 충돌하는 필드는 canvasOptions의 값이 사용됨
251
+ return tslib.__assign(tslib.__assign({}, serverData), canvasOptions);
252
+ }
214
253
 
215
254
  exports.calculateTextBoxWidth = calculateTextBoxWidth;
216
255
  exports.computeMarkerOffset = computeMarkerOffset;
217
256
  exports.computePolygonOffsets = computePolygonOffsets;
257
+ exports.createCanvasData = createCanvasData;
218
258
  exports.hexToRgba = hexToRgba;
219
259
  exports.isPointInMarkerData = isPointInMarkerData;
220
260
  exports.isPointInPolygon = isPointInPolygon;
package/dist/index.es.js CHANGED
@@ -650,16 +650,6 @@ var css_248z$1 = ".MintMapCore-module_mint-map-root__SMfwn {\n position: relati
650
650
  var styles$1 = {"mint-map-root":"MintMapCore-module_mint-map-root__SMfwn","mint-map-container":"MintMapCore-module_mint-map-container__8MIIr"};
651
651
  styleInject(css_248z$1);
652
652
 
653
- /**
654
- * 캔버스 데이터 타입 Enum
655
- */
656
- var CanvasDataType;
657
-
658
- (function (CanvasDataType) {
659
- CanvasDataType["MARKER"] = "MARKER";
660
- CanvasDataType["POLYGON"] = "POLYGON";
661
- })(CanvasDataType || (CanvasDataType = {}));
662
-
663
653
  var Drawable =
664
654
  /** @class */
665
655
  function () {
@@ -998,6 +988,54 @@ var calculateTextBoxWidth = function (_a) {
998
988
  var textWidth = tempCtx.measureText(text).width;
999
989
  return Math.max(minWidth, textWidth + padding);
1000
990
  };
991
+ /**
992
+ * 서버 데이터를 CanvasData로 변환하는 헬퍼 함수
993
+ *
994
+ * 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
995
+ * 이 함수를 사용하여 명시적으로 매핑할 수 있습니다.
996
+ *
997
+ * @template T 서버에서 받은 원본 데이터 타입
998
+ * @param serverData 서버에서 받은 원본 데이터
999
+ * @param canvasOptions CanvasOption 필드들 (충돌하는 필드는 여기서 명시적으로 지정)
1000
+ * @returns CanvasData<T> 타입의 데이터
1001
+ *
1002
+ * @example
1003
+ * ```typescript
1004
+ * interface ServerData {
1005
+ * id: number; // CanvasOption의 id와 충돌
1006
+ * name: string;
1007
+ * }
1008
+ *
1009
+ * const serverData: ServerData = { id: 123, name: "Test" };
1010
+ *
1011
+ * // ✅ 올바른 사용
1012
+ * const canvasData = createCanvasData(serverData, {
1013
+ * id: String(serverData.id), // 명시적으로 변환
1014
+ * position: new Position(37.5, 127.0)
1015
+ * });
1016
+ *
1017
+ * // canvasData는 CanvasData<ServerData> 타입이며:
1018
+ * // - id: string (CanvasOption의 id)
1019
+ * // - name: string (서버 데이터의 name)
1020
+ * // - position: Position (CanvasOption의 position)
1021
+ * ```
1022
+ */
1023
+
1024
+ function createCanvasData(serverData, canvasOptions) {
1025
+ // 서버 데이터와 CanvasOption을 결합
1026
+ // CanvasOption의 필드가 우선되므로 충돌하는 필드는 canvasOptions의 값이 사용됨
1027
+ return __assign(__assign({}, serverData), canvasOptions);
1028
+ }
1029
+
1030
+ /**
1031
+ * 캔버스 데이터 타입 Enum
1032
+ */
1033
+ var CanvasDataType;
1034
+
1035
+ (function (CanvasDataType) {
1036
+ CanvasDataType["MARKER"] = "MARKER";
1037
+ CanvasDataType["POLYGON"] = "POLYGON";
1038
+ })(CanvasDataType || (CanvasDataType = {}));
1001
1039
 
1002
1040
  var WoongCanvasContext = createContext(null);
1003
1041
  /**
@@ -9842,4 +9880,4 @@ function MintMap(_a) {
9842
9880
  }), loading));
9843
9881
  }
9844
9882
 
9845
- export { AnimationPlayer, Bounds, CanvasDataType, CanvasMarker, CanvasMarkerClaude, CanvasMarkerHanquf, CircleMarker, DEFAULT_CULLING_MARGIN, DEFAULT_MAX_CACHE_SIZE, Drawable, GeoCalulator, GoogleMintMapController, LRUCache, MapBuildingProjection, MapCanvasMarkerWrapper, MapCanvasWrapper, MapControlWrapper, MapEvent, MapLoadingWithImage, MapMarkerWrapper, MapPolygonWrapper, MapPolylineWrapper, MapUIEvent, Marker, MintMap, MintMapCanvasRenderer, MintMapController, MintMapCore, MintMapProvider, NaverMintMapController, Offset, PointLoading, Polygon, PolygonCalculator, PolygonMarker, Polyline, Position, SPATIAL_GRID_CELL_SIZE, SVGCircle, SVGPolygon, SVGRect, Spacing, SpatialHashGrid, Status, WoongCanvasMarker, WoongCanvasPolygon, WoongCanvasProvider, buildSpatialIndex, calculateTextBoxWidth, computeMarkerOffset, computePolygonOffsets, createMapEventHandlers, getClusterInfo, getMapOfType, hexToRgba, isInViewport, isPointInMarkerData, isPointInPolygon, isPointInPolygonData, log, mapValuesToArray, syncExternalSelectedItems, syncSelectedItems, updateViewport, useMarkerMoving, useMintMapController, useWoongCanvasContext, validateEvent, waiting };
9883
+ export { AnimationPlayer, Bounds, CanvasDataType, CanvasMarker, CanvasMarkerClaude, CanvasMarkerHanquf, CircleMarker, DEFAULT_CULLING_MARGIN, DEFAULT_MAX_CACHE_SIZE, Drawable, GeoCalulator, GoogleMintMapController, LRUCache, MapBuildingProjection, MapCanvasMarkerWrapper, MapCanvasWrapper, MapControlWrapper, MapEvent, MapLoadingWithImage, MapMarkerWrapper, MapPolygonWrapper, MapPolylineWrapper, MapUIEvent, Marker, MintMap, MintMapCanvasRenderer, MintMapController, MintMapCore, MintMapProvider, NaverMintMapController, Offset, PointLoading, Polygon, PolygonCalculator, PolygonMarker, Polyline, Position, SPATIAL_GRID_CELL_SIZE, SVGCircle, SVGPolygon, SVGRect, Spacing, SpatialHashGrid, Status, WoongCanvasMarker, WoongCanvasPolygon, WoongCanvasProvider, buildSpatialIndex, calculateTextBoxWidth, computeMarkerOffset, computePolygonOffsets, createCanvasData, createMapEventHandlers, getClusterInfo, getMapOfType, hexToRgba, isInViewport, isPointInMarkerData, isPointInPolygon, isPointInPolygonData, log, mapValuesToArray, syncExternalSelectedItems, syncSelectedItems, updateViewport, useMarkerMoving, useMintMapController, useWoongCanvasContext, validateEvent, waiting };
package/dist/index.js CHANGED
@@ -72,6 +72,7 @@ Object.defineProperty(exports, 'CanvasDataType', {
72
72
  exports.calculateTextBoxWidth = utils.calculateTextBoxWidth;
73
73
  exports.computeMarkerOffset = utils.computeMarkerOffset;
74
74
  exports.computePolygonOffsets = utils.computePolygonOffsets;
75
+ exports.createCanvasData = utils.createCanvasData;
75
76
  exports.hexToRgba = utils.hexToRgba;
76
77
  exports.isPointInMarkerData = utils.isPointInMarkerData;
77
78
  exports.isPointInPolygon = utils.isPointInPolygon;
package/dist/index.umd.js CHANGED
@@ -654,16 +654,6 @@
654
654
  var styles$1 = {"mint-map-root":"MintMapCore-module_mint-map-root__SMfwn","mint-map-container":"MintMapCore-module_mint-map-container__8MIIr"};
655
655
  styleInject__default["default"](css_248z$1);
656
656
 
657
- /**
658
- * 캔버스 데이터 타입 Enum
659
- */
660
- exports.CanvasDataType = void 0;
661
-
662
- (function (CanvasDataType) {
663
- CanvasDataType["MARKER"] = "MARKER";
664
- CanvasDataType["POLYGON"] = "POLYGON";
665
- })(exports.CanvasDataType || (exports.CanvasDataType = {}));
666
-
667
657
  var Drawable =
668
658
  /** @class */
669
659
  function () {
@@ -1002,6 +992,54 @@
1002
992
  var textWidth = tempCtx.measureText(text).width;
1003
993
  return Math.max(minWidth, textWidth + padding);
1004
994
  };
995
+ /**
996
+ * 서버 데이터를 CanvasData로 변환하는 헬퍼 함수
997
+ *
998
+ * 서버 데이터의 필드가 CanvasOption과 충돌하는 경우 (예: id, position 등),
999
+ * 이 함수를 사용하여 명시적으로 매핑할 수 있습니다.
1000
+ *
1001
+ * @template T 서버에서 받은 원본 데이터 타입
1002
+ * @param serverData 서버에서 받은 원본 데이터
1003
+ * @param canvasOptions CanvasOption 필드들 (충돌하는 필드는 여기서 명시적으로 지정)
1004
+ * @returns CanvasData<T> 타입의 데이터
1005
+ *
1006
+ * @example
1007
+ * ```typescript
1008
+ * interface ServerData {
1009
+ * id: number; // CanvasOption의 id와 충돌
1010
+ * name: string;
1011
+ * }
1012
+ *
1013
+ * const serverData: ServerData = { id: 123, name: "Test" };
1014
+ *
1015
+ * // ✅ 올바른 사용
1016
+ * const canvasData = createCanvasData(serverData, {
1017
+ * id: String(serverData.id), // 명시적으로 변환
1018
+ * position: new Position(37.5, 127.0)
1019
+ * });
1020
+ *
1021
+ * // canvasData는 CanvasData<ServerData> 타입이며:
1022
+ * // - id: string (CanvasOption의 id)
1023
+ * // - name: string (서버 데이터의 name)
1024
+ * // - position: Position (CanvasOption의 position)
1025
+ * ```
1026
+ */
1027
+
1028
+ function createCanvasData(serverData, canvasOptions) {
1029
+ // 서버 데이터와 CanvasOption을 결합
1030
+ // CanvasOption의 필드가 우선되므로 충돌하는 필드는 canvasOptions의 값이 사용됨
1031
+ return tslib.__assign(tslib.__assign({}, serverData), canvasOptions);
1032
+ }
1033
+
1034
+ /**
1035
+ * 캔버스 데이터 타입 Enum
1036
+ */
1037
+ exports.CanvasDataType = void 0;
1038
+
1039
+ (function (CanvasDataType) {
1040
+ CanvasDataType["MARKER"] = "MARKER";
1041
+ CanvasDataType["POLYGON"] = "POLYGON";
1042
+ })(exports.CanvasDataType || (exports.CanvasDataType = {}));
1005
1043
 
1006
1044
  var WoongCanvasContext = React.createContext(null);
1007
1045
  /**
@@ -9896,6 +9934,7 @@
9896
9934
  exports.calculateTextBoxWidth = calculateTextBoxWidth;
9897
9935
  exports.computeMarkerOffset = computeMarkerOffset;
9898
9936
  exports.computePolygonOffsets = computePolygonOffsets;
9937
+ exports.createCanvasData = createCanvasData;
9899
9938
  exports.createMapEventHandlers = createMapEventHandlers;
9900
9939
  exports.getClusterInfo = getClusterInfo;
9901
9940
  exports.getMapOfType = getMapOfType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mint-ui/map",
3
- "version": "1.2.0-test.40",
3
+ "version": "1.2.0-test.41",
4
4
  "main": "./dist/index.js",
5
5
  "module": "./dist/index.es.js",
6
6
  "browser": "./dist/index.umd.js",