@mint-ui/map 1.2.0-test.56 → 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.
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/CanvasMarkerLayer.d.ts +7 -4
- package/dist/components/mint-map/core/advanced/CanvasMarkerLayer/CanvasMarkerLayer.js +58 -40
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/CanvasPolygonLayer.d.ts +16 -3
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/CanvasPolygonLayer.js +30 -15
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/renderer.d.ts +61 -0
- package/dist/components/mint-map/core/advanced/CanvasPolygonLayer/renderer.js +433 -0
- package/dist/index.es.js +516 -54
- package/dist/index.umd.js +516 -54
- package/package.json +1 -1
|
@@ -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>
|
|
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) */
|
|
@@ -33,8 +38,6 @@ export interface CanvasMarkerLayerProps<T> extends Pick<MarkerOptions, 'zIndex'
|
|
|
33
38
|
selectedItem?: CanvasData<T> | null;
|
|
34
39
|
/** 상호작용 비활성화 여부 (기본값: false) */
|
|
35
40
|
disableInteraction?: boolean;
|
|
36
|
-
/** hover 시 레이어의 z-index를 변경할 값 (지정 시 hover 시에만 적용) */
|
|
37
|
-
hoverZIndex?: number;
|
|
38
41
|
/** Base Layer 렌더링 함수 (필수) */
|
|
39
42
|
renderBase: CustomRenderBase<T>;
|
|
40
43
|
/** Event Layer 렌더링 함수 (선택) */
|
|
@@ -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');
|
|
@@ -42,10 +42,9 @@ var CanvasMarkerLayer = function (props) {
|
|
|
42
42
|
externalSelectedItem = props.selectedItem,
|
|
43
43
|
_f = props.disableInteraction,
|
|
44
44
|
disableInteraction = _f === void 0 ? false : _f,
|
|
45
|
-
hoverZIndex = props.hoverZIndex,
|
|
46
45
|
renderBase = props.renderBase,
|
|
47
46
|
renderEvent = props.renderEvent,
|
|
48
|
-
options = tslib.__rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "
|
|
47
|
+
options = tslib.__rest(props, ["data", "onClick", "onMouseOver", "onMouseOut", "enableMultiSelect", "topOnHover", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction", "renderBase", "renderEvent"]);
|
|
49
48
|
|
|
50
49
|
var controller = MintMapProvider.useMintMapController();
|
|
51
50
|
var context$1 = context.useCanvasContext();
|
|
@@ -75,9 +74,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
75
74
|
y: 0
|
|
76
75
|
}); // 드래그 시작 시점의 hover 상태 저장 (드래그 중 hover 고정용)
|
|
77
76
|
|
|
78
|
-
var dragStartHoveredItemRef = React.useRef(null); //
|
|
79
|
-
|
|
80
|
-
var originalZIndexRef = React.useRef(currentZIndex); // 성능 최적화 Refs
|
|
77
|
+
var dragStartHoveredItemRef = React.useRef(null); // 성능 최적화 Refs
|
|
81
78
|
|
|
82
79
|
var offsetCacheRef = React.useRef(new performance.LRUCache(maxCacheSize));
|
|
83
80
|
var spatialIndexRef = React.useRef(new performance.SpatialHashGrid(performance.SPATIAL_GRID_CELL_SIZE));
|
|
@@ -323,21 +320,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
323
320
|
return;
|
|
324
321
|
}
|
|
325
322
|
|
|
326
|
-
|
|
327
|
-
hoveredItemRef.current = hoveredData; // hoverZIndex가 설정되어 있고 마커가 존재할 때 z-index 변경
|
|
328
|
-
|
|
329
|
-
if (hoverZIndex !== undefined && markerRef.current) {
|
|
330
|
-
// hover 상태가 변경될 때만 z-index 업데이트
|
|
331
|
-
if (prevHovered !== hoveredData) {
|
|
332
|
-
// 이전 hover가 끝났을 때 원래 z-index로 복원
|
|
333
|
-
if (prevHovered && !hoveredData) {
|
|
334
|
-
controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
|
|
335
|
-
} // 새로운 hover가 시작될 때 hoverZIndex로 변경
|
|
336
|
-
else if (hoveredData && !prevHovered) {
|
|
337
|
-
controller.setMarkerZIndex(markerRef.current, hoverZIndex);
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
}
|
|
323
|
+
hoveredItemRef.current = hoveredData;
|
|
341
324
|
|
|
342
325
|
if (draggingRef.current) {
|
|
343
326
|
controller.setMapCursor('grabbing');
|
|
@@ -394,6 +377,29 @@ var CanvasMarkerLayer = function (props) {
|
|
|
394
377
|
if (!clickedData) return;
|
|
395
378
|
handleLocalClick(clickedData);
|
|
396
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
|
+
}
|
|
397
403
|
}; // 마우스 이동 이벤트 핸들러 (hover 감지)
|
|
398
404
|
|
|
399
405
|
|
|
@@ -408,7 +414,16 @@ var CanvasMarkerLayer = function (props) {
|
|
|
408
414
|
if (prevHovered === hoveredItem) return;
|
|
409
415
|
setHovered(hoveredItem);
|
|
410
416
|
if (prevHovered) onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
|
|
411
|
-
|
|
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
|
+
}
|
|
412
427
|
}; // 마우스가 맵 영역을 벗어날 때 hover 상태 초기화
|
|
413
428
|
|
|
414
429
|
|
|
@@ -416,12 +431,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
416
431
|
if (disableInteractionRef.current) return;
|
|
417
432
|
var prevHovered = hoveredItemRef.current;
|
|
418
433
|
if (!prevHovered) return;
|
|
419
|
-
hoveredItemRef.current = null;
|
|
420
|
-
|
|
421
|
-
if (hoverZIndex !== undefined && markerRef.current) {
|
|
422
|
-
controller.setMarkerZIndex(markerRef.current, originalZIndexRef.current);
|
|
423
|
-
}
|
|
424
|
-
|
|
434
|
+
hoveredItemRef.current = null;
|
|
425
435
|
controller.setMapCursor('grab');
|
|
426
436
|
doRenderEvent();
|
|
427
437
|
onMouseOut === null || onMouseOut === void 0 ? void 0 : onMouseOut(prevHovered);
|
|
@@ -446,16 +456,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
446
456
|
}, options);
|
|
447
457
|
|
|
448
458
|
if (markerRef.current) {
|
|
449
|
-
controller.updateMarker(markerRef.current, markerOptions);
|
|
450
|
-
|
|
451
|
-
if (options.zIndex !== undefined) {
|
|
452
|
-
originalZIndexRef.current = options.zIndex; // hover 상태가 아닐 때만 z-index 업데이트 (hover 중이면 hoverZIndex 유지)
|
|
453
|
-
|
|
454
|
-
if (!hoveredItemRef.current || hoverZIndex === undefined) {
|
|
455
|
-
controller.setMarkerZIndex(markerRef.current, options.zIndex);
|
|
456
|
-
}
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
+
controller.updateMarker(markerRef.current, markerOptions);
|
|
459
460
|
return;
|
|
460
461
|
}
|
|
461
462
|
|
|
@@ -468,7 +469,6 @@ var CanvasMarkerLayer = function (props) {
|
|
|
468
469
|
}
|
|
469
470
|
|
|
470
471
|
if (options.zIndex !== undefined) {
|
|
471
|
-
originalZIndexRef.current = options.zIndex;
|
|
472
472
|
controller.setMarkerZIndex(markerRef.current, options.zIndex);
|
|
473
473
|
}
|
|
474
474
|
}, [options]); // Konva 초기화 및 이벤트 리스너 등록
|
|
@@ -532,6 +532,24 @@ var CanvasMarkerLayer = function (props) {
|
|
|
532
532
|
var componentInstance = null;
|
|
533
533
|
|
|
534
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;
|
|
535
553
|
componentInstance = {
|
|
536
554
|
findData: findData,
|
|
537
555
|
getSelectedIds: function () {
|
|
@@ -546,7 +564,7 @@ var CanvasMarkerLayer = function (props) {
|
|
|
546
564
|
},
|
|
547
565
|
onClick: onClick,
|
|
548
566
|
onMouseOut: onMouseOut,
|
|
549
|
-
onMouseOver:
|
|
567
|
+
onMouseOver: wrappedOnMouseOver,
|
|
550
568
|
setHovered: setHovered,
|
|
551
569
|
zIndex: currentZIndex
|
|
552
570
|
};
|
|
@@ -139,7 +139,13 @@ interface CanvasPolygonLayerPropsWithIndividualStyles<T> extends CanvasPolygonLa
|
|
|
139
139
|
hoveredLineWidth?: number;
|
|
140
140
|
/** 다른 방식 props는 사용 불가 */
|
|
141
141
|
renderStyle?: never;
|
|
142
|
-
|
|
142
|
+
/**
|
|
143
|
+
* 폴리곤 스타일 커스터마이징 함수 (선택)
|
|
144
|
+
*
|
|
145
|
+
* customStyle이 제공되면 우선적으로 사용되며, null/undefined를 반환하면 개별 props로 정의된 기본 스타일을 사용합니다.
|
|
146
|
+
* item 데이터와 상태 정보를 기반으로 자유롭게 스타일을 커스터마이징할 수 있습니다.
|
|
147
|
+
*/
|
|
148
|
+
customStyle?: PolygonStyleCustomizer<T>;
|
|
143
149
|
}
|
|
144
150
|
/**
|
|
145
151
|
* 객체 Props 방식
|
|
@@ -171,13 +177,19 @@ interface CanvasPolygonLayerPropsWithObjectStyle<T> extends CanvasPolygonLayerBa
|
|
|
171
177
|
baseFillColor?: never;
|
|
172
178
|
baseLineWidth?: never;
|
|
173
179
|
baseStrokeColor?: never;
|
|
174
|
-
customStyle?: never;
|
|
175
180
|
hoveredFillColor?: never;
|
|
176
181
|
hoveredLineWidth?: never;
|
|
177
182
|
hoveredStrokeColor?: never;
|
|
178
183
|
selectedFillColor?: never;
|
|
179
184
|
selectedLineWidth?: never;
|
|
180
185
|
selectedStrokeColor?: never;
|
|
186
|
+
/**
|
|
187
|
+
* 폴리곤 스타일 커스터마이징 함수 (선택)
|
|
188
|
+
*
|
|
189
|
+
* customStyle이 제공되면 우선적으로 사용되며, null/undefined를 반환하면 renderStyle로 정의된 기본 스타일을 사용합니다.
|
|
190
|
+
* item 데이터와 상태 정보를 기반으로 자유롭게 스타일을 커스터마이징할 수 있습니다.
|
|
191
|
+
*/
|
|
192
|
+
customStyle?: PolygonStyleCustomizer<T>;
|
|
181
193
|
}
|
|
182
194
|
/**
|
|
183
195
|
* 함수 Props 방식 (커스터마이징 방식)
|
|
@@ -240,7 +252,8 @@ interface CanvasPolygonLayerPropsWithCustomStyle<T> extends CanvasPolygonLayerBa
|
|
|
240
252
|
* 2. 객체 방식: renderStyle 객체가 있으면 자동으로 객체 방식
|
|
241
253
|
* 3. 함수 방식: customStyle 함수가 있으면 자동으로 함수 방식
|
|
242
254
|
*
|
|
243
|
-
*
|
|
255
|
+
* customStyle은 개별 props 방식 또는 renderStyle 객체 방식과 함께 사용할 수 있습니다.
|
|
256
|
+
* customStyle이 제공되면 우선적으로 사용되며, null/undefined를 반환하면 기본 스타일을 사용합니다.
|
|
244
257
|
* styleMode prop은 필요 없으며, 각 prop의 존재 여부로 자동 판단됩니다.
|
|
245
258
|
*
|
|
246
259
|
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
@@ -39,14 +39,14 @@ var CanvasPolygonLayer = function (props) {
|
|
|
39
39
|
externalSelectedItem = props.selectedItem,
|
|
40
40
|
_e = props.disableInteraction,
|
|
41
41
|
disableInteraction = _e === void 0 ? false : _e,
|
|
42
|
-
options = tslib.__rest(props, ["data", "onClick", "enableMultiSelect", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); //
|
|
42
|
+
options = tslib.__rest(props, ["data", "onClick", "enableMultiSelect", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); // customStyle은 다른 방식과 함께 사용 가능
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
var
|
|
46
|
-
var isObjectMode =
|
|
47
|
-
var isIndividualMode =
|
|
45
|
+
var hasCustomStyle = 'customStyle' in props && props.customStyle !== undefined;
|
|
46
|
+
var isObjectMode = 'renderStyle' in props && props.renderStyle !== undefined;
|
|
47
|
+
var isIndividualMode = 'baseFillColor' in props && props.baseFillColor !== undefined; // 각 방식별 props 추출
|
|
48
48
|
|
|
49
|
-
var
|
|
49
|
+
var customStyle = hasCustomStyle ? props.customStyle : undefined;
|
|
50
50
|
var individualProps = isIndividualMode ? props : undefined;
|
|
51
51
|
var objectProps = isObjectMode ? props : undefined; // --------------------------------------------------------------------------
|
|
52
52
|
// Hooks & Context
|
|
@@ -156,17 +156,32 @@ var CanvasPolygonLayer = function (props) {
|
|
|
156
156
|
}; // 렌더링 함수 생성 (스타일 지정 방식에 따라 분기)
|
|
157
157
|
|
|
158
158
|
var renderBase;
|
|
159
|
-
var renderEvent;
|
|
160
|
-
|
|
161
|
-
if (
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
159
|
+
var renderEvent; // customStyle이 있으면 하이브리드 방식 사용, 없으면 기존 방식 사용
|
|
160
|
+
|
|
161
|
+
if (isObjectMode && objectProps) {
|
|
162
|
+
if (hasCustomStyle) {
|
|
163
|
+
// customStyle + renderStyle 하이브리드
|
|
164
|
+
renderBase = renderer.renderPolygonBaseWithHybridObject(customStyle, objectProps.renderStyle);
|
|
165
|
+
renderEvent = renderer.renderPolygonEventWithHybridObject(customStyle, objectProps.renderStyle);
|
|
166
|
+
} else {
|
|
167
|
+
// renderStyle만 사용
|
|
168
|
+
renderBase = renderer.renderPolygonBaseWithObject(objectProps.renderStyle);
|
|
169
|
+
renderEvent = renderer.renderPolygonEventWithObject(objectProps.renderStyle);
|
|
170
|
+
}
|
|
167
171
|
} else if (isIndividualMode && individualProps) {
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
if (hasCustomStyle) {
|
|
173
|
+
// customStyle + 개별 props 하이브리드
|
|
174
|
+
renderBase = renderer.renderPolygonBaseWithHybrid(customStyle, individualProps.baseFillColor, individualProps.baseStrokeColor, individualProps.baseLineWidth);
|
|
175
|
+
renderEvent = renderer.renderPolygonEventWithHybrid(customStyle, individualProps.baseFillColor, individualProps.baseStrokeColor, individualProps.baseLineWidth, individualProps.selectedFillColor, individualProps.selectedStrokeColor, individualProps.selectedLineWidth, individualProps.activeFillColor, individualProps.activeStrokeColor, individualProps.activeLineWidth, individualProps.hoveredFillColor, individualProps.hoveredStrokeColor, individualProps.hoveredLineWidth);
|
|
176
|
+
} else {
|
|
177
|
+
// 개별 props만 사용
|
|
178
|
+
renderBase = renderer.renderPolygonBase(individualProps.baseFillColor, individualProps.baseStrokeColor, individualProps.baseLineWidth);
|
|
179
|
+
renderEvent = renderer.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);
|
|
180
|
+
}
|
|
181
|
+
} else if (hasCustomStyle && customStyle) {
|
|
182
|
+
// customStyle만 사용 (기존 방식)
|
|
183
|
+
renderBase = renderer.renderPolygonBaseWithCustomStyle(customStyle);
|
|
184
|
+
renderEvent = renderer.renderPolygonEventWithCustomStyle(customStyle);
|
|
170
185
|
} else {
|
|
171
186
|
throw new Error('Invalid props: one of customStyle, renderStyle, or individual style props must be provided');
|
|
172
187
|
} // Base Layer 렌더링 (뷰포트 컬링 적용)
|
|
@@ -239,4 +239,65 @@ export declare const renderPolygonBaseWithCustomStyle: <T = unknown>(customStyle
|
|
|
239
239
|
* ```
|
|
240
240
|
*/
|
|
241
241
|
export declare const renderPolygonEventWithCustomStyle: <T = unknown>(customStyle: PolygonStyleCustomizer<T>) => CustomRenderEvent<T>;
|
|
242
|
+
/**
|
|
243
|
+
* 폴리곤 Base 렌더링 함수 팩토리 (하이브리드 방식: customStyle + 개별 props)
|
|
244
|
+
*
|
|
245
|
+
* Base Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
246
|
+
* customStyle이 제공되면 우선적으로 사용하며, null/undefined를 반환하면 개별 props로 정의된 기본 스타일을 사용합니다.
|
|
247
|
+
*
|
|
248
|
+
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
249
|
+
* @param customStyle 폴리곤 스타일 커스터마이징 함수 (선택)
|
|
250
|
+
* @param baseFillColor 기본 폴리곤 채우기 색상 (fallback용)
|
|
251
|
+
* @param baseStrokeColor 기본 폴리곤 테두리 색상 (fallback용)
|
|
252
|
+
* @param baseLineWidth 기본 폴리곤 테두리 두께 (fallback용)
|
|
253
|
+
* @returns Base Layer 렌더링 함수
|
|
254
|
+
*/
|
|
255
|
+
export declare const renderPolygonBaseWithHybrid: <T = unknown>(customStyle: PolygonStyleCustomizer<T> | undefined, baseFillColor: string, baseStrokeColor: string, baseLineWidth: number) => CustomRenderBase<T>;
|
|
256
|
+
/**
|
|
257
|
+
* 폴리곤 Event 렌더링 함수 팩토리 (하이브리드 방식: customStyle + 개별 props)
|
|
258
|
+
*
|
|
259
|
+
* Event Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
260
|
+
* customStyle이 제공되면 우선적으로 사용하며, null/undefined를 반환하면 개별 props로 정의된 기본 스타일을 사용합니다.
|
|
261
|
+
*
|
|
262
|
+
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
263
|
+
* @param customStyle 폴리곤 스타일 커스터마이징 함수 (선택)
|
|
264
|
+
* @param baseFillColor 기본 폴리곤 채우기 색상 (fallback용)
|
|
265
|
+
* @param baseStrokeColor 기본 폴리곤 테두리 색상 (fallback용)
|
|
266
|
+
* @param baseLineWidth 기본 폴리곤 테두리 두께 (fallback용)
|
|
267
|
+
* @param selectedFillColor 선택된 폴리곤 채우기 색상 (fallback용)
|
|
268
|
+
* @param selectedStrokeColor 선택된 폴리곤 테두리 색상 (fallback용)
|
|
269
|
+
* @param selectedLineWidth 선택된 폴리곤 테두리 두께 (fallback용)
|
|
270
|
+
* @param activeFillColor 마지막 선택된 폴리곤 채우기 색상 (fallback용)
|
|
271
|
+
* @param activeStrokeColor 마지막 선택된 폴리곤 테두리 색상 (fallback용)
|
|
272
|
+
* @param activeLineWidth 마지막 선택된 폴리곤 테두리 두께 (fallback용)
|
|
273
|
+
* @param hoveredFillColor Hover 시 폴리곤 채우기 색상 (fallback용)
|
|
274
|
+
* @param hoveredStrokeColor Hover 시 폴리곤 테두리 색상 (fallback용)
|
|
275
|
+
* @param hoveredLineWidth Hover 시 폴리곤 테두리 두께 (fallback용)
|
|
276
|
+
* @returns Event Layer 렌더링 함수
|
|
277
|
+
*/
|
|
278
|
+
export declare const renderPolygonEventWithHybrid: <T = unknown>(customStyle: PolygonStyleCustomizer<T> | undefined, baseFillColor: string, baseStrokeColor: string, baseLineWidth: number, selectedFillColor: string | undefined, selectedStrokeColor: string | undefined, selectedLineWidth: number | undefined, activeFillColor: string | undefined, activeStrokeColor: string | undefined, activeLineWidth: number | undefined, hoveredFillColor: string | undefined, hoveredStrokeColor: string | undefined, hoveredLineWidth: number | undefined) => CustomRenderEvent<T>;
|
|
279
|
+
/**
|
|
280
|
+
* 폴리곤 Base 렌더링 함수 팩토리 (하이브리드 방식: customStyle + renderStyle)
|
|
281
|
+
*
|
|
282
|
+
* Base Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
283
|
+
* customStyle이 제공되면 우선적으로 사용하며, null/undefined를 반환하면 renderStyle로 정의된 기본 스타일을 사용합니다.
|
|
284
|
+
*
|
|
285
|
+
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
286
|
+
* @param customStyle 폴리곤 스타일 커스터마이징 함수 (선택)
|
|
287
|
+
* @param renderStyle 폴리곤 스타일 객체 (fallback용)
|
|
288
|
+
* @returns Base Layer 렌더링 함수
|
|
289
|
+
*/
|
|
290
|
+
export declare const renderPolygonBaseWithHybridObject: <T = unknown>(customStyle: PolygonStyleCustomizer<T> | undefined, renderStyle: PolygonStyleObject) => CustomRenderBase<T>;
|
|
291
|
+
/**
|
|
292
|
+
* 폴리곤 Event 렌더링 함수 팩토리 (하이브리드 방식: customStyle + renderStyle)
|
|
293
|
+
*
|
|
294
|
+
* Event Layer에서 사용할 렌더링 함수를 생성합니다.
|
|
295
|
+
* customStyle이 제공되면 우선적으로 사용하며, null/undefined를 반환하면 renderStyle로 정의된 기본 스타일을 사용합니다.
|
|
296
|
+
*
|
|
297
|
+
* @template T 폴리곤 데이터의 추가 속성 타입
|
|
298
|
+
* @param customStyle 폴리곤 스타일 커스터마이징 함수 (선택)
|
|
299
|
+
* @param renderStyle 폴리곤 스타일 객체 (fallback용)
|
|
300
|
+
* @returns Event Layer 렌더링 함수
|
|
301
|
+
*/
|
|
302
|
+
export declare const renderPolygonEventWithHybridObject: <T = unknown>(customStyle: PolygonStyleCustomizer<T> | undefined, renderStyle: PolygonStyleObject) => CustomRenderEvent<T>;
|
|
242
303
|
export {};
|