@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.
@@ -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) */
@@ -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", "hoverZIndex", "renderBase", "renderEvent"]);
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); // 원래 z-index 저장 (hoverZIndex 사용 시 복원용)
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
- var prevHovered = hoveredItemRef.current;
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
- 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
+ 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; // hoverZIndex가 설정되어 있으면 원래 z-index로 복원
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); // z-index가 변경되었을 때 originalZIndexRef 업데이트
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: 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
- customStyle?: never;
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
- * 방식은 동시에 사용할 수 없습니다 (mutually exclusive).
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"]); // 세 가지 방식 중 하나만 선택: customStyle > renderStyle > 개별 props
42
+ options = tslib.__rest(props, ["data", "onClick", "enableMultiSelect", "enableViewportCulling", "cullingMargin", "maxCacheSize", "selectedItems", "selectedItem", "disableInteraction"]); // customStyle 다른 방식과 함께 사용 가능
43
43
 
44
44
 
45
- var isCustomStyleMode = 'customStyle' in props && props.customStyle !== undefined;
46
- var isObjectMode = !isCustomStyleMode && 'renderStyle' in props && props.renderStyle !== undefined;
47
- var isIndividualMode = !isCustomStyleMode && !isObjectMode; // 각 방식별 props 추출
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 customStyleProps = isCustomStyleMode ? props : undefined;
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 (isCustomStyleMode && customStyleProps) {
162
- renderBase = renderer.renderPolygonBaseWithCustomStyle(customStyleProps.customStyle);
163
- renderEvent = renderer.renderPolygonEventWithCustomStyle(customStyleProps.customStyle);
164
- } else if (isObjectMode && objectProps) {
165
- renderBase = renderer.renderPolygonBaseWithObject(objectProps.renderStyle);
166
- renderEvent = renderer.renderPolygonEventWithObject(objectProps.renderStyle);
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
- renderBase = renderer.renderPolygonBase(individualProps.baseFillColor, individualProps.baseStrokeColor, individualProps.baseLineWidth);
169
- 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);
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 {};