@mint-ui/map 1.2.0-test.66 → 1.2.0-test.68
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/CanvasMarkerLayer/CanvasMarkerLayer.d.ts +1 -1
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/CanvasMarkerLayer.js +28 -49
- package/dist/components/mint-map/core/advanced/shared/types.d.ts +13 -3
- package/dist/components/mint-map/core/advanced/shared/types.js +12 -0
- package/dist/index.es.js +37 -50
- package/dist/index.js +4 -0
- package/dist/index.umd.js +36 -49
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import type { CanvasMarkerLayerProps } from './types';
|
|
3
|
-
export { CanvasDataType, CanvasProvider, LRUCache, SpatialHashGrid } from '../shared';
|
|
3
|
+
export { CanvasDataType, CanvasProvider, LRUCache, RenderSource, SpatialHashGrid } from '../shared';
|
|
4
4
|
export type { CanvasData, CanvasOption, CustomRenderBase, CustomRenderEvent, MarkerBoundingBox, RenderBaseParams, RenderEventParams, RenderUtils } from '../shared';
|
|
5
5
|
export type { CanvasMarkerLayerProps, CanvasMarkerLayerPropsWithEvent, CanvasMarkerLayerPropsWithEventWithoutSelection, CanvasMarkerLayerPropsWithEventWithSelectedItem, CanvasMarkerLayerPropsWithEventWithSelectedItems, CanvasMarkerLayerPropsWithEventWithTopStageWithoutSelection, CanvasMarkerLayerPropsWithEventWithTopStageWithSelectedItem, CanvasMarkerLayerPropsWithEventWithTopStageWithSelectedItems, CanvasMarkerLayerPropsWithoutEvent } from './types';
|
|
6
6
|
declare const CanvasMarkerLayer: <T>(props: CanvasMarkerLayerProps<T>) => JSX.Element;
|
|
@@ -164,20 +164,12 @@ var CanvasMarkerLayer = function (props) {
|
|
|
164
164
|
name: 'base-render-shape',
|
|
165
165
|
perfectDrawEnabled: false,
|
|
166
166
|
sceneFunc: function (konvaContext) {
|
|
167
|
-
var ctx = konvaContext;
|
|
168
|
-
var hovered = hoveredItemRef.current; // 뷰포트 컬링: 화면에 보이는 항목만 필터링
|
|
167
|
+
var ctx = konvaContext; // 뷰포트 컬링: 화면에 보이는 항목만 필터링
|
|
169
168
|
|
|
170
169
|
var visibleItems = enableViewportCullingRef.current ? dataRef.current.filter(function (item) {
|
|
171
170
|
return isInViewport(item);
|
|
172
|
-
}) : dataRef.current; //
|
|
173
|
-
|
|
174
|
-
if (topStageZIndex !== undefined && hovered) {
|
|
175
|
-
visibleItems = visibleItems.filter(function (item) {
|
|
176
|
-
return item.id !== hovered.id;
|
|
177
|
-
});
|
|
178
|
-
} // Base Layer는 기본 마커만 렌더링 (성능 최적화)
|
|
179
|
-
// hover/selected는 Event Layer에서 덧그리므로 Base Layer에서는 제외
|
|
180
|
-
|
|
171
|
+
}) : dataRef.current; // Base Layer는 기본 마커만 렌더링 (hover된 항목도 포함)
|
|
172
|
+
// hover 스타일은 Event Layer와 Top Layer에서 덧그려짐
|
|
181
173
|
|
|
182
174
|
renderBase({
|
|
183
175
|
ctx: ctx,
|
|
@@ -185,8 +177,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
185
177
|
items: visibleItems,
|
|
186
178
|
selectedIds: new Set(),
|
|
187
179
|
utils: renderUtils
|
|
188
|
-
});
|
|
189
|
-
// topStageZIndex가 없으면 성능 우선으로 Base Layer 재렌더링 안 함 (hover된 항목이 뒤편 마커 위로 올라갈 수 있음)
|
|
180
|
+
});
|
|
190
181
|
}
|
|
191
182
|
});
|
|
192
183
|
layer.add(shape);
|
|
@@ -221,37 +212,20 @@ var CanvasMarkerLayer = function (props) {
|
|
|
221
212
|
})) {
|
|
222
213
|
selectedItems = tslib.__spreadArray(tslib.__spreadArray([], selectedItems, true), [selectedItemRef.current], false);
|
|
223
214
|
}
|
|
224
|
-
} //
|
|
225
|
-
//
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
selectedItems: selectedItemsWithoutHovered,
|
|
239
|
-
topOnHover: true,
|
|
240
|
-
utils: renderUtils
|
|
241
|
-
});
|
|
242
|
-
} else {
|
|
243
|
-
// topStageZIndex가 없으면 hover된 항목을 selectedItems에 추가하지 않음 (성능 우선)
|
|
244
|
-
// renderEvent 함수가 hoveredItem을 별도로 처리하므로, selectedItems는 그대로 전달
|
|
245
|
-
// 이렇게 하면 hover 변경 시 선택된 항목들을 다시 그리지 않고 hover된 항목만 업데이트됨
|
|
246
|
-
renderEvent({
|
|
247
|
-
ctx: ctx,
|
|
248
|
-
hoveredItem: hovered,
|
|
249
|
-
selectedItem: selectedItemRef.current,
|
|
250
|
-
selectedItems: selectedItems,
|
|
251
|
-
topOnHover: false,
|
|
252
|
-
utils: renderUtils
|
|
253
|
-
});
|
|
254
|
-
}
|
|
215
|
+
} // Event Layer는 hover 효과 및 선택 상태를 덧그림
|
|
216
|
+
// topStageZIndex가 있으면 hover된 항목은 Top Stage에서도 처리되지만,
|
|
217
|
+
// Event Layer에서도 hover 스타일을 덧그려서 Base Layer 위에 표시됨
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
renderEvent({
|
|
221
|
+
ctx: ctx,
|
|
222
|
+
hasTopStage: topStageZIndex !== undefined,
|
|
223
|
+
hoveredItem: hovered,
|
|
224
|
+
renderSource: types.RenderSource.EVENT,
|
|
225
|
+
selectedItem: selectedItemRef.current,
|
|
226
|
+
selectedItems: selectedItems,
|
|
227
|
+
utils: renderUtils
|
|
228
|
+
});
|
|
255
229
|
}
|
|
256
230
|
});
|
|
257
231
|
layer.add(shape);
|
|
@@ -316,10 +290,11 @@ var CanvasMarkerLayer = function (props) {
|
|
|
316
290
|
var hoverSelectedItems = hoveredIsSelected ? [currentHovered] : [];
|
|
317
291
|
renderEvent({
|
|
318
292
|
ctx: ctx,
|
|
293
|
+
hasTopStage: true,
|
|
319
294
|
hoveredItem: currentHovered,
|
|
295
|
+
renderSource: types.RenderSource.TOP,
|
|
320
296
|
selectedItem: selectedItemRef.current,
|
|
321
297
|
selectedItems: hoverSelectedItems,
|
|
322
|
-
topOnHover: true,
|
|
323
298
|
utils: renderUtils
|
|
324
299
|
});
|
|
325
300
|
} else {
|
|
@@ -458,8 +433,8 @@ var CanvasMarkerLayer = function (props) {
|
|
|
458
433
|
|
|
459
434
|
if (topStageZIndex !== undefined) {
|
|
460
435
|
// topStageZIndex가 설정된 경우 Top Layer에서 hover된 항목 렌더링
|
|
461
|
-
// Base Layer는 hover 상태 변경 시 재렌더링 불필요
|
|
462
|
-
// Event Layer는 선택된
|
|
436
|
+
// Base Layer는 모든 마커를 포함하므로 hover 상태 변경 시 재렌더링 불필요
|
|
437
|
+
// Event Layer는 hover 스타일과 선택된 항목을 렌더링하므로 업데이트 필요
|
|
463
438
|
doRenderEvent();
|
|
464
439
|
doRenderTop();
|
|
465
440
|
} else if (renderEvent) {
|
|
@@ -554,8 +529,8 @@ var CanvasMarkerLayer = function (props) {
|
|
|
554
529
|
controller.setMapCursor('grab');
|
|
555
530
|
|
|
556
531
|
if (topStageZIndex !== undefined) {
|
|
557
|
-
// Base Layer는 hover 상태 변경 시 재렌더링 불필요
|
|
558
|
-
// Event Layer는 선택된
|
|
532
|
+
// Base Layer는 모든 마커를 포함하므로 hover 상태 변경 시 재렌더링 불필요
|
|
533
|
+
// Event Layer는 hover 스타일과 선택된 항목을 렌더링하므로 업데이트 필요
|
|
559
534
|
doRenderEvent();
|
|
560
535
|
doRenderTop();
|
|
561
536
|
} else if (renderEvent) {
|
|
@@ -995,4 +970,8 @@ Object.defineProperty(exports, 'CanvasDataType', {
|
|
|
995
970
|
enumerable: true,
|
|
996
971
|
get: function () { return types.CanvasDataType; }
|
|
997
972
|
});
|
|
973
|
+
Object.defineProperty(exports, 'RenderSource', {
|
|
974
|
+
enumerable: true,
|
|
975
|
+
get: function () { return types.RenderSource; }
|
|
976
|
+
});
|
|
998
977
|
exports["default"] = CanvasMarkerLayer;
|
|
@@ -120,17 +120,27 @@ export interface RenderAnimationParams<T> {
|
|
|
120
120
|
* @template T 마커/폴리곤 데이터의 추가 속성 타입
|
|
121
121
|
*/
|
|
122
122
|
export declare type CustomRenderAnimation<T> = (params: RenderAnimationParams<T>) => void;
|
|
123
|
+
/**
|
|
124
|
+
* 렌더링 소스 Enum
|
|
125
|
+
*/
|
|
126
|
+
export declare enum RenderSource {
|
|
127
|
+
BASE = "BASE",
|
|
128
|
+
EVENT = "EVENT",
|
|
129
|
+
TOP = "TOP"
|
|
130
|
+
}
|
|
123
131
|
/**
|
|
124
132
|
* 커스텀 렌더링 함수 파라미터 - Event Layer
|
|
125
133
|
*/
|
|
126
134
|
export interface RenderEventParams<T> {
|
|
127
135
|
ctx: CanvasRenderingContext2D;
|
|
136
|
+
/** topStageZIndex가 설정되어 있는지 여부 */
|
|
137
|
+
hasTopStage: boolean;
|
|
128
138
|
hoveredItem: CanvasData<T> | null;
|
|
129
|
-
|
|
139
|
+
/** 렌더링 소스 (BASE, EVENT, TOP) */
|
|
140
|
+
renderSource: RenderSource;
|
|
130
141
|
selectedItems?: CanvasData<T>[];
|
|
131
142
|
selectedItem?: CanvasData<T> | null;
|
|
132
|
-
|
|
133
|
-
topOnHover?: boolean;
|
|
143
|
+
utils: RenderUtils<T>;
|
|
134
144
|
}
|
|
135
145
|
/**
|
|
136
146
|
* 커스텀 렌더링 함수 타입 - Event Layer
|
|
@@ -14,6 +14,18 @@ exports.CanvasDataType = void 0;
|
|
|
14
14
|
CanvasDataType["MARKER"] = "MARKER";
|
|
15
15
|
CanvasDataType["POLYGON"] = "POLYGON";
|
|
16
16
|
})(exports.CanvasDataType || (exports.CanvasDataType = {}));
|
|
17
|
+
/**
|
|
18
|
+
* 렌더링 소스 Enum
|
|
19
|
+
*/
|
|
20
|
+
// eslint-disable-next-line no-shadow
|
|
21
|
+
|
|
22
|
+
exports.RenderSource = void 0;
|
|
23
|
+
|
|
24
|
+
(function (RenderSource) {
|
|
25
|
+
RenderSource["BASE"] = "BASE";
|
|
26
|
+
RenderSource["EVENT"] = "EVENT";
|
|
27
|
+
RenderSource["TOP"] = "TOP";
|
|
28
|
+
})(exports.RenderSource || (exports.RenderSource = {}));
|
|
17
29
|
|
|
18
30
|
exports.createCanvasData = utils.createCanvasData;
|
|
19
31
|
exports.createCanvasDataArray = utils.createCanvasDataArray;
|
package/dist/index.es.js
CHANGED
|
@@ -1842,6 +1842,18 @@ var CanvasDataType;
|
|
|
1842
1842
|
CanvasDataType["MARKER"] = "MARKER";
|
|
1843
1843
|
CanvasDataType["POLYGON"] = "POLYGON";
|
|
1844
1844
|
})(CanvasDataType || (CanvasDataType = {}));
|
|
1845
|
+
/**
|
|
1846
|
+
* 렌더링 소스 Enum
|
|
1847
|
+
*/
|
|
1848
|
+
// eslint-disable-next-line no-shadow
|
|
1849
|
+
|
|
1850
|
+
var RenderSource;
|
|
1851
|
+
|
|
1852
|
+
(function (RenderSource) {
|
|
1853
|
+
RenderSource["BASE"] = "BASE";
|
|
1854
|
+
RenderSource["EVENT"] = "EVENT";
|
|
1855
|
+
RenderSource["TOP"] = "TOP";
|
|
1856
|
+
})(RenderSource || (RenderSource = {}));
|
|
1845
1857
|
|
|
1846
1858
|
/**
|
|
1847
1859
|
* 현재 뷰포트 영역 계산
|
|
@@ -4075,20 +4087,12 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4075
4087
|
name: 'base-render-shape',
|
|
4076
4088
|
perfectDrawEnabled: false,
|
|
4077
4089
|
sceneFunc: function (konvaContext) {
|
|
4078
|
-
var ctx = konvaContext;
|
|
4079
|
-
var hovered = hoveredItemRef.current; // 뷰포트 컬링: 화면에 보이는 항목만 필터링
|
|
4090
|
+
var ctx = konvaContext; // 뷰포트 컬링: 화면에 보이는 항목만 필터링
|
|
4080
4091
|
|
|
4081
4092
|
var visibleItems = enableViewportCullingRef.current ? dataRef.current.filter(function (item) {
|
|
4082
4093
|
return isInViewport$1(item);
|
|
4083
|
-
}) : dataRef.current; //
|
|
4084
|
-
|
|
4085
|
-
if (topStageZIndex !== undefined && hovered) {
|
|
4086
|
-
visibleItems = visibleItems.filter(function (item) {
|
|
4087
|
-
return item.id !== hovered.id;
|
|
4088
|
-
});
|
|
4089
|
-
} // Base Layer는 기본 마커만 렌더링 (성능 최적화)
|
|
4090
|
-
// hover/selected는 Event Layer에서 덧그리므로 Base Layer에서는 제외
|
|
4091
|
-
|
|
4094
|
+
}) : dataRef.current; // Base Layer는 기본 마커만 렌더링 (hover된 항목도 포함)
|
|
4095
|
+
// hover 스타일은 Event Layer와 Top Layer에서 덧그려짐
|
|
4092
4096
|
|
|
4093
4097
|
renderBase({
|
|
4094
4098
|
ctx: ctx,
|
|
@@ -4096,8 +4100,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4096
4100
|
items: visibleItems,
|
|
4097
4101
|
selectedIds: new Set(),
|
|
4098
4102
|
utils: renderUtils
|
|
4099
|
-
});
|
|
4100
|
-
// topStageZIndex가 없으면 성능 우선으로 Base Layer 재렌더링 안 함 (hover된 항목이 뒤편 마커 위로 올라갈 수 있음)
|
|
4103
|
+
});
|
|
4101
4104
|
}
|
|
4102
4105
|
});
|
|
4103
4106
|
layer.add(shape);
|
|
@@ -4132,37 +4135,20 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4132
4135
|
})) {
|
|
4133
4136
|
selectedItems = __spreadArray(__spreadArray([], selectedItems, true), [selectedItemRef.current], false);
|
|
4134
4137
|
}
|
|
4135
|
-
} //
|
|
4136
|
-
//
|
|
4137
|
-
|
|
4138
|
-
|
|
4139
|
-
|
|
4140
|
-
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
selectedItems: selectedItemsWithoutHovered,
|
|
4150
|
-
topOnHover: true,
|
|
4151
|
-
utils: renderUtils
|
|
4152
|
-
});
|
|
4153
|
-
} else {
|
|
4154
|
-
// topStageZIndex가 없으면 hover된 항목을 selectedItems에 추가하지 않음 (성능 우선)
|
|
4155
|
-
// renderEvent 함수가 hoveredItem을 별도로 처리하므로, selectedItems는 그대로 전달
|
|
4156
|
-
// 이렇게 하면 hover 변경 시 선택된 항목들을 다시 그리지 않고 hover된 항목만 업데이트됨
|
|
4157
|
-
renderEvent({
|
|
4158
|
-
ctx: ctx,
|
|
4159
|
-
hoveredItem: hovered,
|
|
4160
|
-
selectedItem: selectedItemRef.current,
|
|
4161
|
-
selectedItems: selectedItems,
|
|
4162
|
-
topOnHover: false,
|
|
4163
|
-
utils: renderUtils
|
|
4164
|
-
});
|
|
4165
|
-
}
|
|
4138
|
+
} // Event Layer는 hover 효과 및 선택 상태를 덧그림
|
|
4139
|
+
// topStageZIndex가 있으면 hover된 항목은 Top Stage에서도 처리되지만,
|
|
4140
|
+
// Event Layer에서도 hover 스타일을 덧그려서 Base Layer 위에 표시됨
|
|
4141
|
+
|
|
4142
|
+
|
|
4143
|
+
renderEvent({
|
|
4144
|
+
ctx: ctx,
|
|
4145
|
+
hasTopStage: topStageZIndex !== undefined,
|
|
4146
|
+
hoveredItem: hovered,
|
|
4147
|
+
renderSource: RenderSource.EVENT,
|
|
4148
|
+
selectedItem: selectedItemRef.current,
|
|
4149
|
+
selectedItems: selectedItems,
|
|
4150
|
+
utils: renderUtils
|
|
4151
|
+
});
|
|
4166
4152
|
}
|
|
4167
4153
|
});
|
|
4168
4154
|
layer.add(shape);
|
|
@@ -4227,10 +4213,11 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4227
4213
|
var hoverSelectedItems = hoveredIsSelected ? [currentHovered] : [];
|
|
4228
4214
|
renderEvent({
|
|
4229
4215
|
ctx: ctx,
|
|
4216
|
+
hasTopStage: true,
|
|
4230
4217
|
hoveredItem: currentHovered,
|
|
4218
|
+
renderSource: RenderSource.TOP,
|
|
4231
4219
|
selectedItem: selectedItemRef.current,
|
|
4232
4220
|
selectedItems: hoverSelectedItems,
|
|
4233
|
-
topOnHover: true,
|
|
4234
4221
|
utils: renderUtils
|
|
4235
4222
|
});
|
|
4236
4223
|
} else {
|
|
@@ -4369,8 +4356,8 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4369
4356
|
|
|
4370
4357
|
if (topStageZIndex !== undefined) {
|
|
4371
4358
|
// topStageZIndex가 설정된 경우 Top Layer에서 hover된 항목 렌더링
|
|
4372
|
-
// Base Layer는 hover 상태 변경 시 재렌더링 불필요
|
|
4373
|
-
// Event Layer는 선택된
|
|
4359
|
+
// Base Layer는 모든 마커를 포함하므로 hover 상태 변경 시 재렌더링 불필요
|
|
4360
|
+
// Event Layer는 hover 스타일과 선택된 항목을 렌더링하므로 업데이트 필요
|
|
4374
4361
|
doRenderEvent();
|
|
4375
4362
|
doRenderTop();
|
|
4376
4363
|
} else if (renderEvent) {
|
|
@@ -4465,8 +4452,8 @@ var CanvasMarkerLayer = function (props) {
|
|
|
4465
4452
|
controller.setMapCursor('grab');
|
|
4466
4453
|
|
|
4467
4454
|
if (topStageZIndex !== undefined) {
|
|
4468
|
-
// Base Layer는 hover 상태 변경 시 재렌더링 불필요
|
|
4469
|
-
// Event Layer는 선택된
|
|
4455
|
+
// Base Layer는 모든 마커를 포함하므로 hover 상태 변경 시 재렌더링 불필요
|
|
4456
|
+
// Event Layer는 hover 스타일과 선택된 항목을 렌더링하므로 업데이트 필요
|
|
4470
4457
|
doRenderEvent();
|
|
4471
4458
|
doRenderTop();
|
|
4472
4459
|
} else if (renderEvent) {
|
|
@@ -10792,4 +10779,4 @@ function MintMap(_a) {
|
|
|
10792
10779
|
}), loading));
|
|
10793
10780
|
}
|
|
10794
10781
|
|
|
10795
|
-
export { AnimationPlayer, Bounds, CanvasDataType, CanvasMarker, CanvasMarkerClaude, CanvasMarkerLayer, CanvasPolygonLayer, CanvasProvider, 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, buildSpatialIndex, calculateMarkerBoundingBox, calculateTextBoxWidth, computeMarkerOffset, computePolygonOffsets, createCanvasData, createCanvasDataArray, createMapEventHandlers, getClusterInfo, getMapOfType, hexToRgba, isInViewport, isPointInMarkerData, isPointInPolygon, isPointInPolygonData, log, mapValuesToArray, syncExternalSelectedItems, syncSelectedItems, updateViewport, useCanvasContext, useMarkerMoving, useMintMapController, validateEvent, waiting };
|
|
10782
|
+
export { AnimationPlayer, Bounds, CanvasDataType, CanvasMarker, CanvasMarkerClaude, CanvasMarkerLayer, CanvasPolygonLayer, CanvasProvider, 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, RenderSource, SPATIAL_GRID_CELL_SIZE, SVGCircle, SVGPolygon, SVGRect, Spacing, SpatialHashGrid, Status, buildSpatialIndex, calculateMarkerBoundingBox, calculateTextBoxWidth, computeMarkerOffset, computePolygonOffsets, createCanvasData, createCanvasDataArray, createMapEventHandlers, getClusterInfo, getMapOfType, hexToRgba, isInViewport, isPointInMarkerData, isPointInPolygon, isPointInPolygonData, log, mapValuesToArray, syncExternalSelectedItems, syncSelectedItems, updateViewport, useCanvasContext, useMarkerMoving, useMintMapController, validateEvent, waiting };
|
package/dist/index.js
CHANGED
|
@@ -71,6 +71,10 @@ Object.defineProperty(exports, 'CanvasDataType', {
|
|
|
71
71
|
enumerable: true,
|
|
72
72
|
get: function () { return types.CanvasDataType; }
|
|
73
73
|
});
|
|
74
|
+
Object.defineProperty(exports, 'RenderSource', {
|
|
75
|
+
enumerable: true,
|
|
76
|
+
get: function () { return types.RenderSource; }
|
|
77
|
+
});
|
|
74
78
|
exports.calculateMarkerBoundingBox = utils.calculateMarkerBoundingBox;
|
|
75
79
|
exports.calculateTextBoxWidth = utils.calculateTextBoxWidth;
|
|
76
80
|
exports.computeMarkerOffset = utils.computeMarkerOffset;
|
package/dist/index.umd.js
CHANGED
|
@@ -1846,6 +1846,18 @@
|
|
|
1846
1846
|
CanvasDataType["MARKER"] = "MARKER";
|
|
1847
1847
|
CanvasDataType["POLYGON"] = "POLYGON";
|
|
1848
1848
|
})(exports.CanvasDataType || (exports.CanvasDataType = {}));
|
|
1849
|
+
/**
|
|
1850
|
+
* 렌더링 소스 Enum
|
|
1851
|
+
*/
|
|
1852
|
+
// eslint-disable-next-line no-shadow
|
|
1853
|
+
|
|
1854
|
+
exports.RenderSource = void 0;
|
|
1855
|
+
|
|
1856
|
+
(function (RenderSource) {
|
|
1857
|
+
RenderSource["BASE"] = "BASE";
|
|
1858
|
+
RenderSource["EVENT"] = "EVENT";
|
|
1859
|
+
RenderSource["TOP"] = "TOP";
|
|
1860
|
+
})(exports.RenderSource || (exports.RenderSource = {}));
|
|
1849
1861
|
|
|
1850
1862
|
/**
|
|
1851
1863
|
* 현재 뷰포트 영역 계산
|
|
@@ -4079,20 +4091,12 @@
|
|
|
4079
4091
|
name: 'base-render-shape',
|
|
4080
4092
|
perfectDrawEnabled: false,
|
|
4081
4093
|
sceneFunc: function (konvaContext) {
|
|
4082
|
-
var ctx = konvaContext;
|
|
4083
|
-
var hovered = hoveredItemRef.current; // 뷰포트 컬링: 화면에 보이는 항목만 필터링
|
|
4094
|
+
var ctx = konvaContext; // 뷰포트 컬링: 화면에 보이는 항목만 필터링
|
|
4084
4095
|
|
|
4085
4096
|
var visibleItems = enableViewportCullingRef.current ? dataRef.current.filter(function (item) {
|
|
4086
4097
|
return isInViewport$1(item);
|
|
4087
|
-
}) : dataRef.current; //
|
|
4088
|
-
|
|
4089
|
-
if (topStageZIndex !== undefined && hovered) {
|
|
4090
|
-
visibleItems = visibleItems.filter(function (item) {
|
|
4091
|
-
return item.id !== hovered.id;
|
|
4092
|
-
});
|
|
4093
|
-
} // Base Layer는 기본 마커만 렌더링 (성능 최적화)
|
|
4094
|
-
// hover/selected는 Event Layer에서 덧그리므로 Base Layer에서는 제외
|
|
4095
|
-
|
|
4098
|
+
}) : dataRef.current; // Base Layer는 기본 마커만 렌더링 (hover된 항목도 포함)
|
|
4099
|
+
// hover 스타일은 Event Layer와 Top Layer에서 덧그려짐
|
|
4096
4100
|
|
|
4097
4101
|
renderBase({
|
|
4098
4102
|
ctx: ctx,
|
|
@@ -4100,8 +4104,7 @@
|
|
|
4100
4104
|
items: visibleItems,
|
|
4101
4105
|
selectedIds: new Set(),
|
|
4102
4106
|
utils: renderUtils
|
|
4103
|
-
});
|
|
4104
|
-
// topStageZIndex가 없으면 성능 우선으로 Base Layer 재렌더링 안 함 (hover된 항목이 뒤편 마커 위로 올라갈 수 있음)
|
|
4107
|
+
});
|
|
4105
4108
|
}
|
|
4106
4109
|
});
|
|
4107
4110
|
layer.add(shape);
|
|
@@ -4136,37 +4139,20 @@
|
|
|
4136
4139
|
})) {
|
|
4137
4140
|
selectedItems = tslib.__spreadArray(tslib.__spreadArray([], selectedItems, true), [selectedItemRef.current], false);
|
|
4138
4141
|
}
|
|
4139
|
-
} //
|
|
4140
|
-
//
|
|
4141
|
-
|
|
4142
|
-
|
|
4143
|
-
|
|
4144
|
-
|
|
4145
|
-
|
|
4146
|
-
|
|
4147
|
-
|
|
4148
|
-
|
|
4149
|
-
|
|
4150
|
-
|
|
4151
|
-
|
|
4152
|
-
|
|
4153
|
-
selectedItems: selectedItemsWithoutHovered,
|
|
4154
|
-
topOnHover: true,
|
|
4155
|
-
utils: renderUtils
|
|
4156
|
-
});
|
|
4157
|
-
} else {
|
|
4158
|
-
// topStageZIndex가 없으면 hover된 항목을 selectedItems에 추가하지 않음 (성능 우선)
|
|
4159
|
-
// renderEvent 함수가 hoveredItem을 별도로 처리하므로, selectedItems는 그대로 전달
|
|
4160
|
-
// 이렇게 하면 hover 변경 시 선택된 항목들을 다시 그리지 않고 hover된 항목만 업데이트됨
|
|
4161
|
-
renderEvent({
|
|
4162
|
-
ctx: ctx,
|
|
4163
|
-
hoveredItem: hovered,
|
|
4164
|
-
selectedItem: selectedItemRef.current,
|
|
4165
|
-
selectedItems: selectedItems,
|
|
4166
|
-
topOnHover: false,
|
|
4167
|
-
utils: renderUtils
|
|
4168
|
-
});
|
|
4169
|
-
}
|
|
4142
|
+
} // Event Layer는 hover 효과 및 선택 상태를 덧그림
|
|
4143
|
+
// topStageZIndex가 있으면 hover된 항목은 Top Stage에서도 처리되지만,
|
|
4144
|
+
// Event Layer에서도 hover 스타일을 덧그려서 Base Layer 위에 표시됨
|
|
4145
|
+
|
|
4146
|
+
|
|
4147
|
+
renderEvent({
|
|
4148
|
+
ctx: ctx,
|
|
4149
|
+
hasTopStage: topStageZIndex !== undefined,
|
|
4150
|
+
hoveredItem: hovered,
|
|
4151
|
+
renderSource: exports.RenderSource.EVENT,
|
|
4152
|
+
selectedItem: selectedItemRef.current,
|
|
4153
|
+
selectedItems: selectedItems,
|
|
4154
|
+
utils: renderUtils
|
|
4155
|
+
});
|
|
4170
4156
|
}
|
|
4171
4157
|
});
|
|
4172
4158
|
layer.add(shape);
|
|
@@ -4231,10 +4217,11 @@
|
|
|
4231
4217
|
var hoverSelectedItems = hoveredIsSelected ? [currentHovered] : [];
|
|
4232
4218
|
renderEvent({
|
|
4233
4219
|
ctx: ctx,
|
|
4220
|
+
hasTopStage: true,
|
|
4234
4221
|
hoveredItem: currentHovered,
|
|
4222
|
+
renderSource: exports.RenderSource.TOP,
|
|
4235
4223
|
selectedItem: selectedItemRef.current,
|
|
4236
4224
|
selectedItems: hoverSelectedItems,
|
|
4237
|
-
topOnHover: true,
|
|
4238
4225
|
utils: renderUtils
|
|
4239
4226
|
});
|
|
4240
4227
|
} else {
|
|
@@ -4373,8 +4360,8 @@
|
|
|
4373
4360
|
|
|
4374
4361
|
if (topStageZIndex !== undefined) {
|
|
4375
4362
|
// topStageZIndex가 설정된 경우 Top Layer에서 hover된 항목 렌더링
|
|
4376
|
-
// Base Layer는 hover 상태 변경 시 재렌더링 불필요
|
|
4377
|
-
// Event Layer는 선택된
|
|
4363
|
+
// Base Layer는 모든 마커를 포함하므로 hover 상태 변경 시 재렌더링 불필요
|
|
4364
|
+
// Event Layer는 hover 스타일과 선택된 항목을 렌더링하므로 업데이트 필요
|
|
4378
4365
|
doRenderEvent();
|
|
4379
4366
|
doRenderTop();
|
|
4380
4367
|
} else if (renderEvent) {
|
|
@@ -4469,8 +4456,8 @@
|
|
|
4469
4456
|
controller.setMapCursor('grab');
|
|
4470
4457
|
|
|
4471
4458
|
if (topStageZIndex !== undefined) {
|
|
4472
|
-
// Base Layer는 hover 상태 변경 시 재렌더링 불필요
|
|
4473
|
-
// Event Layer는 선택된
|
|
4459
|
+
// Base Layer는 모든 마커를 포함하므로 hover 상태 변경 시 재렌더링 불필요
|
|
4460
|
+
// Event Layer는 hover 스타일과 선택된 항목을 렌더링하므로 업데이트 필요
|
|
4474
4461
|
doRenderEvent();
|
|
4475
4462
|
doRenderTop();
|
|
4476
4463
|
} else if (renderEvent) {
|