@mint-ui/map 1.2.0-test.50 → 1.2.0-test.51
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.
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/CanvasPolygonLayer.d.ts +107 -38
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/CanvasPolygonLayer.js +11 -8
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/renderer.d.ts +76 -22
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/renderer.js +202 -39
- package/dist/index.es.js +209 -45
- package/dist/index.umd.js +209 -45
- package/package.json +1 -1
package/dist/index.umd.js
CHANGED
|
@@ -5761,7 +5761,12 @@
|
|
|
5761
5761
|
* 이 파일은 폴리곤 렌더링을 위한 헬퍼 함수와 팩토리 함수를 제공합니다.
|
|
5762
5762
|
* GeoJSON MultiPolygon 형식을 지원하며, 도넛 폴리곤(구멍이 있는 폴리곤)도 처리할 수 있습니다.
|
|
5763
5763
|
*/
|
|
5764
|
-
|
|
5764
|
+
// 기본 스타일 상수 (customStyle 방식에서 사용)
|
|
5765
|
+
var DEFAULT_BASE_STYLE = {
|
|
5766
|
+
fillColor: 'rgba(128, 128, 128, 0.5)',
|
|
5767
|
+
strokeColor: 'rgba(0, 0, 0, 0.8)',
|
|
5768
|
+
lineWidth: 2
|
|
5769
|
+
};
|
|
5765
5770
|
/**
|
|
5766
5771
|
* 폴리곤 그리기 헬퍼 함수 (도넛 폴리곤 지원)
|
|
5767
5772
|
*
|
|
@@ -5789,6 +5794,7 @@
|
|
|
5789
5794
|
* });
|
|
5790
5795
|
* ```
|
|
5791
5796
|
*/
|
|
5797
|
+
|
|
5792
5798
|
var drawPolygon = function (_a) {
|
|
5793
5799
|
var ctx = _a.ctx,
|
|
5794
5800
|
polygonOffsets = _a.polygonOffsets,
|
|
@@ -6043,13 +6049,13 @@
|
|
|
6043
6049
|
};
|
|
6044
6050
|
};
|
|
6045
6051
|
/**
|
|
6046
|
-
* 폴리곤 Base 렌더링 함수 팩토리 (
|
|
6052
|
+
* 폴리곤 Base 렌더링 함수 팩토리 (객체 방식)
|
|
6047
6053
|
*
|
|
6048
6054
|
* Base Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
6049
|
-
* renderStyle
|
|
6055
|
+
* renderStyle 객체를 사용하여 기본 스타일을 적용합니다.
|
|
6050
6056
|
*
|
|
6051
6057
|
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
6052
|
-
* @param renderStyle 폴리곤 스타일
|
|
6058
|
+
* @param renderStyle 폴리곤 스타일 객체
|
|
6053
6059
|
* @returns Base Layer 렌더링 함수
|
|
6054
6060
|
*
|
|
6055
6061
|
* @remarks
|
|
@@ -6059,17 +6065,13 @@
|
|
|
6059
6065
|
*
|
|
6060
6066
|
* @example
|
|
6061
6067
|
* ```typescript
|
|
6062
|
-
* const renderBase =
|
|
6063
|
-
* (
|
|
6064
|
-
*
|
|
6065
|
-
* strokeColor: 'rgba(200, 50, 50, 0.8)',
|
|
6066
|
-
* lineWidth: 2
|
|
6067
|
-
* })
|
|
6068
|
-
* );
|
|
6068
|
+
* const renderBase = renderPolygonBaseWithObject<MyDataType>({
|
|
6069
|
+
* base: { fillColor: 'rgba(255, 100, 100, 0.5)', strokeColor: 'rgba(200, 50, 50, 0.8)', lineWidth: 2 }
|
|
6070
|
+
* });
|
|
6069
6071
|
* ```
|
|
6070
6072
|
*/
|
|
6071
6073
|
|
|
6072
|
-
var
|
|
6074
|
+
var renderPolygonBaseWithObject = function (renderStyle) {
|
|
6073
6075
|
return function (_a) {
|
|
6074
6076
|
var ctx = _a.ctx,
|
|
6075
6077
|
items = _a.items,
|
|
@@ -6084,14 +6086,177 @@
|
|
|
6084
6086
|
if (!item.paths) continue; // 좌표 변환 (자동 캐싱)
|
|
6085
6087
|
|
|
6086
6088
|
var polygonOffsets = utils.getOrComputePolygonOffsets(item);
|
|
6087
|
-
if (!polygonOffsets) continue; //
|
|
6089
|
+
if (!polygonOffsets) continue; // Base Layer는 선택되지 않은 항목만 그리므로 base 스타일 사용
|
|
6090
|
+
|
|
6091
|
+
var style = renderStyle.base; // 폴리곤 그리기
|
|
6092
|
+
|
|
6093
|
+
drawPolygon({
|
|
6094
|
+
ctx: ctx,
|
|
6095
|
+
polygonOffsets: polygonOffsets,
|
|
6096
|
+
isDonutPolygon: item.isDonutPolygon || false,
|
|
6097
|
+
fillColor: style.fillColor,
|
|
6098
|
+
strokeColor: style.strokeColor,
|
|
6099
|
+
lineWidth: style.lineWidth
|
|
6100
|
+
});
|
|
6101
|
+
}
|
|
6102
|
+
};
|
|
6103
|
+
};
|
|
6104
|
+
/**
|
|
6105
|
+
* 폴리곤 Event 렌더링 함수 팩토리 (객체 방식)
|
|
6106
|
+
*
|
|
6107
|
+
* Event Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
6108
|
+
* renderStyle 객체를 사용하여 개별 props 방식과 동일한 알고리즘으로 스타일을 적용합니다.
|
|
6109
|
+
*
|
|
6110
|
+
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
6111
|
+
* @param renderStyle 폴리곤 스타일 객체
|
|
6112
|
+
* @returns Event Layer 렌더링 함수
|
|
6113
|
+
*
|
|
6114
|
+
* @remarks
|
|
6115
|
+
* - **렌더링 순서**: 선택된 항목 → 마지막 선택된 항목 → hover된 항목 (최상단)
|
|
6116
|
+
* - **성능**: O(m), m은 선택된 항목 수 + hover된 항목 수
|
|
6117
|
+
* - 좌표 변환은 자동으로 캐싱되어 성능 최적화됨
|
|
6118
|
+
* - **알고리즘**: 개별 props 방식과 동일
|
|
6119
|
+
* - 기본값 설정: selected/active/hovered가 없으면 base 또는 상위 값 사용
|
|
6120
|
+
* - 선택된 항목: selected 스타일
|
|
6121
|
+
* - 마지막 선택된 항목 (호버 안 됨): active 스타일
|
|
6122
|
+
* - 호버된 항목: 선택되어 있으면 active, 아니면 hovered 스타일
|
|
6123
|
+
*
|
|
6124
|
+
* @example
|
|
6125
|
+
* ```typescript
|
|
6126
|
+
* const renderEvent = renderPolygonEventWithObject<MyDataType>({
|
|
6127
|
+
* base: { fillColor: 'rgba(255, 100, 100, 0.5)', strokeColor: 'rgba(200, 50, 50, 0.8)', lineWidth: 2 },
|
|
6128
|
+
* selected: { fillColor: 'rgba(255, 193, 7, 0.7)', strokeColor: 'rgba(255, 152, 0, 1)', lineWidth: 4 },
|
|
6129
|
+
* active: { fillColor: 'rgba(255, 152, 0, 0.8)', strokeColor: 'rgba(255, 87, 34, 1)', lineWidth: 5 },
|
|
6130
|
+
* hovered: { fillColor: 'rgba(100, 150, 255, 0.8)', strokeColor: 'rgba(0, 100, 200, 1)', lineWidth: 3 }
|
|
6131
|
+
* });
|
|
6132
|
+
* ```
|
|
6133
|
+
*/
|
|
6134
|
+
|
|
6135
|
+
var renderPolygonEventWithObject = function (renderStyle) {
|
|
6136
|
+
// 기본값 설정 (개별 props 방식과 동일한 로직)
|
|
6137
|
+
var _selectedStyle = renderStyle.selected || renderStyle.base;
|
|
6138
|
+
|
|
6139
|
+
var _activeStyle = renderStyle.active || _selectedStyle;
|
|
6140
|
+
|
|
6141
|
+
var _hoveredStyle = renderStyle.hovered || _selectedStyle;
|
|
6142
|
+
|
|
6143
|
+
return function (_a) {
|
|
6144
|
+
var ctx = _a.ctx,
|
|
6145
|
+
hoveredItem = _a.hoveredItem,
|
|
6146
|
+
utils = _a.utils,
|
|
6147
|
+
selectedItems = _a.selectedItems,
|
|
6148
|
+
selectedItem = _a.selectedItem; // 성능 최적화: selectedItems를 Set으로 변환하여 O(1) 조회 (매번 some() 체크 방지)
|
|
6149
|
+
|
|
6150
|
+
var selectedIdsSet = selectedItems ? new Set(selectedItems.map(function (item) {
|
|
6151
|
+
return item.id;
|
|
6152
|
+
})) : new Set();
|
|
6153
|
+
var hoveredItemId = hoveredItem === null || hoveredItem === void 0 ? void 0 : hoveredItem.id;
|
|
6154
|
+
var selectedItemId = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id; // 1. 선택된 항목들 그리기 (마지막 선택 항목과 호버된 항목 제외)
|
|
6155
|
+
|
|
6156
|
+
if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) {
|
|
6157
|
+
for (var _i = 0, selectedItems_2 = selectedItems; _i < selectedItems_2.length; _i++) {
|
|
6158
|
+
var item = selectedItems_2[_i]; // 마지막 선택 항목과 호버된 항목은 나중에 따로 그림
|
|
6159
|
+
|
|
6160
|
+
if (item.id === selectedItemId || item.id === hoveredItemId) continue;
|
|
6161
|
+
if (!item.paths) continue;
|
|
6162
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(item);
|
|
6163
|
+
if (!polygonOffsets) continue;
|
|
6164
|
+
drawPolygon({
|
|
6165
|
+
ctx: ctx,
|
|
6166
|
+
polygonOffsets: polygonOffsets,
|
|
6167
|
+
isDonutPolygon: item.isDonutPolygon || false,
|
|
6168
|
+
fillColor: _selectedStyle.fillColor,
|
|
6169
|
+
strokeColor: _selectedStyle.strokeColor,
|
|
6170
|
+
lineWidth: _selectedStyle.lineWidth
|
|
6171
|
+
});
|
|
6172
|
+
}
|
|
6173
|
+
} // 2. 마지막 선택된 항목 그리기 (호버되지 않은 경우)
|
|
6174
|
+
|
|
6175
|
+
|
|
6176
|
+
if ((selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.paths) && hoveredItemId !== selectedItemId) {
|
|
6177
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(selectedItem);
|
|
6178
|
+
|
|
6179
|
+
if (polygonOffsets) {
|
|
6180
|
+
drawPolygon({
|
|
6181
|
+
ctx: ctx,
|
|
6182
|
+
polygonOffsets: polygonOffsets,
|
|
6183
|
+
isDonutPolygon: selectedItem.isDonutPolygon || false,
|
|
6184
|
+
fillColor: _activeStyle.fillColor,
|
|
6185
|
+
strokeColor: _activeStyle.strokeColor,
|
|
6186
|
+
lineWidth: _activeStyle.lineWidth
|
|
6187
|
+
});
|
|
6188
|
+
}
|
|
6189
|
+
} // 3. 호버된 항목 그리기 (가장 위에 표시)
|
|
6190
|
+
|
|
6191
|
+
|
|
6192
|
+
if (hoveredItem === null || hoveredItem === void 0 ? void 0 : hoveredItem.paths) {
|
|
6193
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(hoveredItem);
|
|
6194
|
+
if (!polygonOffsets) return; // 좌표 변환 실패 시 스킵 (return은 렌더링 함수 종료)
|
|
6195
|
+
// 성능 최적화: Set을 사용하여 O(1) 조회 (이전: O(m) some() 체크)
|
|
6196
|
+
|
|
6197
|
+
var isSelected = selectedIdsSet.has(hoveredItem.id);
|
|
6198
|
+
drawPolygon({
|
|
6199
|
+
ctx: ctx,
|
|
6200
|
+
polygonOffsets: polygonOffsets,
|
|
6201
|
+
isDonutPolygon: hoveredItem.isDonutPolygon || false,
|
|
6202
|
+
fillColor: isSelected ? _activeStyle.fillColor : _hoveredStyle.fillColor,
|
|
6203
|
+
strokeColor: isSelected ? _activeStyle.strokeColor : _hoveredStyle.strokeColor,
|
|
6204
|
+
lineWidth: isSelected ? _activeStyle.lineWidth : _hoveredStyle.lineWidth
|
|
6205
|
+
});
|
|
6206
|
+
}
|
|
6207
|
+
};
|
|
6208
|
+
};
|
|
6209
|
+
/**
|
|
6210
|
+
* 폴리곤 Base 렌더링 함수 팩토리 (커스터마이징 방식)
|
|
6211
|
+
*
|
|
6212
|
+
* Base Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
6213
|
+
* customStyle 함수를 사용하여 각 폴리곤의 스타일을 자유롭게 커스터마이징합니다.
|
|
6214
|
+
*
|
|
6215
|
+
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
6216
|
+
* @param customStyle 폴리곤 스타일 커스터마이징 함수
|
|
6217
|
+
* @returns Base Layer 렌더링 함수
|
|
6218
|
+
*
|
|
6219
|
+
* @remarks
|
|
6220
|
+
* - 선택된 항목은 Event Layer에서 그려지므로 Base Layer에서는 스킵
|
|
6221
|
+
* - 성능: O(n), n은 렌더링할 폴리곤 개수
|
|
6222
|
+
* - 좌표 변환은 자동으로 캐싱되어 성능 최적화됨
|
|
6223
|
+
*
|
|
6224
|
+
* @example
|
|
6225
|
+
* ```typescript
|
|
6226
|
+
* const renderBase = renderPolygonBaseWithCustomStyle<MyDataType>(
|
|
6227
|
+
* (item, context, defaultStyle) => {
|
|
6228
|
+
* if (item.someProperty > 100) {
|
|
6229
|
+
* return { fillColor: 'red', strokeColor: 'darkred', lineWidth: 3 };
|
|
6230
|
+
* }
|
|
6231
|
+
* return defaultStyle;
|
|
6232
|
+
* }
|
|
6233
|
+
* );
|
|
6234
|
+
* ```
|
|
6235
|
+
*/
|
|
6236
|
+
|
|
6237
|
+
var renderPolygonBaseWithCustomStyle = function (customStyle) {
|
|
6238
|
+
return function (_a) {
|
|
6239
|
+
var ctx = _a.ctx,
|
|
6240
|
+
items = _a.items,
|
|
6241
|
+
selectedIds = _a.selectedIds,
|
|
6242
|
+
utils = _a.utils;
|
|
6243
|
+
|
|
6244
|
+
for (var _i = 0, items_3 = items; _i < items_3.length; _i++) {
|
|
6245
|
+
var item = items_3[_i]; // 선택된 항목은 Event Layer에서 그림 (중복 렌더링 방지)
|
|
6246
|
+
|
|
6247
|
+
if (selectedIds.has(item.id)) continue; // paths가 없으면 스킵
|
|
6248
|
+
|
|
6249
|
+
if (!item.paths) continue; // 좌표 변환 (자동 캐싱)
|
|
6250
|
+
|
|
6251
|
+
var polygonOffsets = utils.getOrComputePolygonOffsets(item);
|
|
6252
|
+
if (!polygonOffsets) continue; // Base Layer는 선택되지 않은 항목만 그리므로 기본 스타일 사용
|
|
6088
6253
|
|
|
6089
6254
|
var context = {
|
|
6090
6255
|
isSelected: false,
|
|
6091
6256
|
isHovered: false,
|
|
6092
6257
|
isActive: false
|
|
6093
6258
|
};
|
|
6094
|
-
var style =
|
|
6259
|
+
var style = customStyle(item, context, DEFAULT_BASE_STYLE); // 폴리곤 그리기
|
|
6095
6260
|
|
|
6096
6261
|
drawPolygon({
|
|
6097
6262
|
ctx: ctx,
|
|
@@ -6105,47 +6270,47 @@
|
|
|
6105
6270
|
};
|
|
6106
6271
|
};
|
|
6107
6272
|
/**
|
|
6108
|
-
* 폴리곤 Event 렌더링 함수 팩토리 (
|
|
6273
|
+
* 폴리곤 Event 렌더링 함수 팩토리 (커스터마이징 방식)
|
|
6109
6274
|
*
|
|
6110
6275
|
* Event Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
6111
|
-
*
|
|
6276
|
+
* customStyle 함수를 사용하여 각 폴리곤의 스타일을 자유롭게 커스터마이징합니다.
|
|
6112
6277
|
*
|
|
6113
6278
|
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
6114
|
-
* @param
|
|
6279
|
+
* @param customStyle 폴리곤 스타일 커스터마이징 함수
|
|
6115
6280
|
* @returns Event Layer 렌더링 함수
|
|
6116
6281
|
*
|
|
6117
6282
|
* @remarks
|
|
6118
6283
|
* - **렌더링 순서**: 선택된 항목 → 마지막 선택된 항목 → hover된 항목 (최상단)
|
|
6119
6284
|
* - **성능**: O(m), m은 선택된 항목 수 + hover된 항목 수
|
|
6120
6285
|
* - 좌표 변환은 자동으로 캐싱되어 성능 최적화됨
|
|
6121
|
-
* - hover된 항목이 선택되어 있으면 active 스타일 적용
|
|
6122
6286
|
*
|
|
6123
6287
|
* @example
|
|
6124
6288
|
* ```typescript
|
|
6125
|
-
* const renderEvent =
|
|
6126
|
-
* (item, context) => {
|
|
6289
|
+
* const renderEvent = renderPolygonEventWithCustomStyle<MyDataType>(
|
|
6290
|
+
* (item, context, defaultStyle) => {
|
|
6127
6291
|
* if (context.isActive) {
|
|
6128
|
-
* return { fillColor: '
|
|
6292
|
+
* return { fillColor: 'yellow', strokeColor: 'orange', lineWidth: 5 };
|
|
6129
6293
|
* }
|
|
6130
6294
|
* if (context.isHovered) {
|
|
6131
|
-
* return { fillColor: '
|
|
6295
|
+
* return { fillColor: 'blue', strokeColor: 'darkblue', lineWidth: 3 };
|
|
6132
6296
|
* }
|
|
6133
6297
|
* if (context.isSelected) {
|
|
6134
|
-
* return { fillColor: '
|
|
6298
|
+
* return { fillColor: 'green', strokeColor: 'darkgreen', lineWidth: 4 };
|
|
6135
6299
|
* }
|
|
6136
|
-
* return
|
|
6300
|
+
* return defaultStyle;
|
|
6137
6301
|
* }
|
|
6138
6302
|
* );
|
|
6139
6303
|
* ```
|
|
6140
6304
|
*/
|
|
6141
6305
|
|
|
6142
|
-
var
|
|
6306
|
+
var renderPolygonEventWithCustomStyle = function (customStyle) {
|
|
6143
6307
|
return function (_a) {
|
|
6144
6308
|
var ctx = _a.ctx,
|
|
6145
6309
|
hoveredItem = _a.hoveredItem,
|
|
6146
6310
|
utils = _a.utils,
|
|
6147
6311
|
selectedItems = _a.selectedItems,
|
|
6148
|
-
selectedItem = _a.selectedItem;
|
|
6312
|
+
selectedItem = _a.selectedItem; // 성능 최적화: selectedItems를 Set으로 변환하여 O(1) 조회 (매번 some() 체크 방지)
|
|
6313
|
+
|
|
6149
6314
|
var selectedIdsSet = selectedItems ? new Set(selectedItems.map(function (item) {
|
|
6150
6315
|
return item.id;
|
|
6151
6316
|
})) : new Set();
|
|
@@ -6153,8 +6318,8 @@
|
|
|
6153
6318
|
var selectedItemId = selectedItem === null || selectedItem === void 0 ? void 0 : selectedItem.id; // 1. 선택된 항목들 그리기 (마지막 선택 항목과 호버된 항목 제외)
|
|
6154
6319
|
|
|
6155
6320
|
if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) {
|
|
6156
|
-
for (var _i = 0,
|
|
6157
|
-
var item =
|
|
6321
|
+
for (var _i = 0, selectedItems_3 = selectedItems; _i < selectedItems_3.length; _i++) {
|
|
6322
|
+
var item = selectedItems_3[_i]; // 마지막 선택 항목과 호버된 항목은 나중에 따로 그림
|
|
6158
6323
|
|
|
6159
6324
|
if (item.id === selectedItemId || item.id === hoveredItemId) continue;
|
|
6160
6325
|
if (!item.paths) continue;
|
|
@@ -6165,7 +6330,7 @@
|
|
|
6165
6330
|
isHovered: false,
|
|
6166
6331
|
isActive: false
|
|
6167
6332
|
};
|
|
6168
|
-
var style =
|
|
6333
|
+
var style = customStyle(item, context, DEFAULT_BASE_STYLE);
|
|
6169
6334
|
drawPolygon({
|
|
6170
6335
|
ctx: ctx,
|
|
6171
6336
|
polygonOffsets: polygonOffsets,
|
|
@@ -6187,7 +6352,7 @@
|
|
|
6187
6352
|
isHovered: false,
|
|
6188
6353
|
isActive: true
|
|
6189
6354
|
};
|
|
6190
|
-
var style =
|
|
6355
|
+
var style = customStyle(selectedItem, context, DEFAULT_BASE_STYLE);
|
|
6191
6356
|
drawPolygon({
|
|
6192
6357
|
ctx: ctx,
|
|
6193
6358
|
polygonOffsets: polygonOffsets,
|
|
@@ -6203,19 +6368,15 @@
|
|
|
6203
6368
|
if (hoveredItem === null || hoveredItem === void 0 ? void 0 : hoveredItem.paths) {
|
|
6204
6369
|
var polygonOffsets = utils.getOrComputePolygonOffsets(hoveredItem);
|
|
6205
6370
|
if (!polygonOffsets) return; // 좌표 변환 실패 시 스킵 (return은 렌더링 함수 종료)
|
|
6206
|
-
//
|
|
6371
|
+
// 성능 최적화: Set을 사용하여 O(1) 조회 (이전: O(m) some() 체크)
|
|
6207
6372
|
|
|
6208
6373
|
var isSelected = selectedIdsSet.has(hoveredItem.id);
|
|
6209
|
-
var isActive = isSelected && hoveredItem.id === selectedItemId; // 개별 props 방식과 동일한 로직: 선택된 항목이 hover되면 active 스타일을 사용
|
|
6210
|
-
// 따라서 선택된 항목이 hover될 때는 isHovered를 false로 설정하여
|
|
6211
|
-
// renderStyle 함수에서 isActive를 우선적으로 체크할 수 있도록 함
|
|
6212
|
-
|
|
6213
6374
|
var context = {
|
|
6214
6375
|
isSelected: isSelected,
|
|
6215
6376
|
isHovered: !isSelected,
|
|
6216
|
-
isActive:
|
|
6377
|
+
isActive: isSelected && hoveredItem.id === selectedItemId
|
|
6217
6378
|
};
|
|
6218
|
-
var style =
|
|
6379
|
+
var style = customStyle(hoveredItem, context, DEFAULT_BASE_STYLE);
|
|
6219
6380
|
drawPolygon({
|
|
6220
6381
|
ctx: ctx,
|
|
6221
6382
|
polygonOffsets: polygonOffsets,
|
|
@@ -6243,13 +6404,16 @@
|
|
|
6243
6404
|
externalSelectedItem = props.selectedItem,
|
|
6244
6405
|
_e = props.disableInteraction,
|
|
6245
6406
|
disableInteraction = _e === void 0 ? false : _e,
|
|
6246
|
-
options = tslib.__rest(props, ["data", "onClick", "enableMultiSelect", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); //
|
|
6407
|
+
options = tslib.__rest(props, ["data", "onClick", "enableMultiSelect", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); // 세 가지 방식 중 하나만 선택: customStyle > renderStyle > 개별 props
|
|
6247
6408
|
|
|
6248
6409
|
|
|
6249
|
-
var
|
|
6410
|
+
var isCustomStyleMode = 'customStyle' in props && props.customStyle !== undefined;
|
|
6411
|
+
var isObjectMode = !isCustomStyleMode && 'renderStyle' in props && props.renderStyle !== undefined;
|
|
6412
|
+
var isIndividualMode = !isCustomStyleMode && !isObjectMode; // 각 방식별 props 추출
|
|
6250
6413
|
|
|
6251
|
-
var
|
|
6252
|
-
var
|
|
6414
|
+
var customStyleProps = isCustomStyleMode ? props : undefined;
|
|
6415
|
+
var objectProps = isObjectMode ? props : undefined;
|
|
6416
|
+
var individualProps = isIndividualMode ? props : undefined; // --------------------------------------------------------------------------
|
|
6253
6417
|
// Hooks & Context
|
|
6254
6418
|
// --------------------------------------------------------------------------
|
|
6255
6419
|
|
|
@@ -6356,11 +6520,11 @@
|
|
|
6356
6520
|
}
|
|
6357
6521
|
}; // 렌더링 함수 생성 (스타일 지정 방식에 따라 분기)
|
|
6358
6522
|
|
|
6359
|
-
var renderBase =
|
|
6360
|
-
throw new Error('Invalid props:
|
|
6523
|
+
var renderBase = isCustomStyleMode && customStyleProps ? renderPolygonBaseWithCustomStyle(customStyleProps.customStyle) : isObjectMode && objectProps ? renderPolygonBaseWithObject(objectProps.renderStyle) : isIndividualMode && individualProps ? renderPolygonBase(individualProps.baseFillColor, individualProps.baseStrokeColor, individualProps.baseLineWidth) : function () {
|
|
6524
|
+
throw new Error('Invalid props: one of customStyle, renderStyle, or individual style props must be provided');
|
|
6361
6525
|
}();
|
|
6362
|
-
var renderEvent =
|
|
6363
|
-
throw new Error('Invalid props:
|
|
6526
|
+
var renderEvent = isCustomStyleMode && customStyleProps ? renderPolygonEventWithCustomStyle(customStyleProps.customStyle) : isObjectMode && objectProps ? renderPolygonEventWithObject(objectProps.renderStyle) : isIndividualMode && individualProps ? renderPolygonEvent(individualProps.baseFillColor, individualProps.baseStrokeColor, individualProps.baseLineWidth, individualProps.selectedFillColor, individualProps.selectedStrokeColor, individualProps.selectedLineWidth, individualProps.activeFillColor, individualProps.activeStrokeColor, individualProps.activeLineWidth, individualProps.hoveredFillColor, individualProps.hoveredStrokeColor, individualProps.hoveredLineWidth) : function () {
|
|
6527
|
+
throw new Error('Invalid props: one of customStyle, renderStyle, or individual style props must be provided');
|
|
6364
6528
|
}(); // Base Layer 렌더링 (뷰포트 컬링 적용)
|
|
6365
6529
|
|
|
6366
6530
|
var doRenderBase = function () {
|