@mint-ui/map 1.2.0-test.19 โ 1.2.0-test.20
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/woongCanvas/WoongCanvasLayer.d.ts +73 -8
- package/dist/components/mint-map/core/advanced/woongCanvas/WoongCanvasLayer.js +41 -7
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.d.ts +21 -4
- package/dist/components/mint-map/core/advanced/woongCanvas/shared/types.js +6 -0
- package/dist/index.es.js +47 -7
- package/dist/index.umd.js +47 -7
- package/package.json +1 -1
|
@@ -84,13 +84,54 @@ declare const WoongCanvasLayer: <T>(props: WoongCanvasLayerProps<T>) => React.Re
|
|
|
84
84
|
/**
|
|
85
85
|
* ๐ WoongCanvasLayer - Konva ๊ธฐ๋ฐ ์ด๊ณ ์ฑ๋ฅ ๋ง์ปค/ํด๋ฆฌ๊ณค ๋ ๋๋ง ์ปดํฌ๋ํธ
|
|
86
86
|
*
|
|
87
|
-
*
|
|
87
|
+
* 30,000๊ฐ ์ด์์ ๋ง์ปค/ํด๋ฆฌ๊ณค์ 60fps๋ก ๋ ๋๋งํ๋ ์ต์ ํ๋ Canvas ๋ ์ด์ด ์์คํ
์
๋๋ค.
|
|
88
|
+
*
|
|
89
|
+
* ## ๐ฏ ์ฃผ์ ํน์ง
|
|
88
90
|
* - **30,000๊ฐ ์ด์์ ํด๋ฆฌ๊ณค/๋ง์ปค๋ฅผ 60fps๋ก ๋ ๋๋ง**
|
|
89
91
|
* - **Multi-Layer ์ํคํ
์ฒ**: Base/Animation/Event ๋ ์ด์ด ๋ถ๋ฆฌ
|
|
90
92
|
* - **Spatial Hash Grid**: O(1) ์์ค์ ๋น ๋ฅธ Hit Test
|
|
91
93
|
* - **LRU ์บ์**: ์ขํ ๋ณํ ๊ฒฐ๊ณผ ์บ์ฑ์ผ๋ก ์ฑ๋ฅ ์ต์ ํ
|
|
92
94
|
* - **Viewport Culling**: ํ๋ฉด์ ๋ณด์ด๋ ์์ญ๋ง ๋ ๋๋ง
|
|
93
95
|
* - **Discriminated Union Props**: ํ์
์์ ํ MARKER/POLYGON ๋ชจ๋
|
|
96
|
+
* - **topOnHover + renderEvent ์กฐํฉ**: hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ํ์
|
|
97
|
+
*
|
|
98
|
+
* ## ๐ Props API
|
|
99
|
+
*
|
|
100
|
+
* ### ๊ณตํต Props (MARKER & POLYGON ๋ชจ๋ ์ฌ์ฉ)
|
|
101
|
+
* @param data - ๋ ๋๋งํ ๋ฐ์ดํฐ ๋ฐฐ์ด
|
|
102
|
+
* @param dataType - 'MARKER' ๋๋ 'POLYGON'
|
|
103
|
+
* @param onClick - ํด๋ฆญ ์ ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์
|
|
104
|
+
* @param onMouseOver - Hover ์์ ์ ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์
|
|
105
|
+
* @param onMouseOut - Hover ์ข
๋ฃ ์ ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์
|
|
106
|
+
* @param enableMultiSelect - ๋ค์ค ์ ํ ํ์ฑํ ์ฌ๋ถ (๊ธฐ๋ณธ: false)
|
|
107
|
+
* @param topOnHover - Hover ์ ์ต์๋จ ํ์ ์ฌ๋ถ (๊ธฐ๋ณธ: false)
|
|
108
|
+
* @param enableViewportCulling - ๋ทฐํฌํธ ์ปฌ๋ง ํ์ฑํ ์ฌ๋ถ (๊ธฐ๋ณธ: true)
|
|
109
|
+
* @param cullingMargin - ์ปฌ๋ง ์ฌ์ ๊ณต๊ฐ (๊ธฐ๋ณธ: 100px)
|
|
110
|
+
* @param maxCacheSize - LRU ์บ์ ์ต๋ ํฌ๊ธฐ (๊ธฐ๋ณธ: 30000)
|
|
111
|
+
* @param selectedItems - ์ธ๋ถ ์ ์ด ์ ํ ์ํ
|
|
112
|
+
* @param selectedItem - ๋จ์ผ ์ ํ ์์ดํ
|
|
113
|
+
* @param disableInteraction - ๋ชจ๋ ์ํธ์์ฉ ๋นํ์ฑํ (๊ธฐ๋ณธ: false)
|
|
114
|
+
* @param zIndex - ๋ ์ด์ด ์์ (๊ธฐ๋ณธ: 0)
|
|
115
|
+
* @param visible - ํ์ ์ฌ๋ถ (๊ธฐ๋ณธ: true)
|
|
116
|
+
*
|
|
117
|
+
* ### MARKER ํ์
์ ์ฉ Props
|
|
118
|
+
* @param renderBase - Base Layer ๋ ๋๋ง ํจ์ (ํ์)
|
|
119
|
+
* @param renderAnimation - Animation Layer ๋ ๋๋ง ํจ์ (์ ํ)
|
|
120
|
+
* @param renderEvent - Event Layer ๋ ๋๋ง ํจ์ (์ ํ)
|
|
121
|
+
*
|
|
122
|
+
* ### POLYGON ํ์
์ ์ฉ Props
|
|
123
|
+
* @param baseFillColor - ๊ธฐ๋ณธ ์ฑ์ฐ๊ธฐ ์์ (ํ์)
|
|
124
|
+
* @param baseStrokeColor - ๊ธฐ๋ณธ ํ
๋๋ฆฌ ์์ (ํ์)
|
|
125
|
+
* @param baseLineWidth - ๊ธฐ๋ณธ ํ
๋๋ฆฌ ๋๊ป (ํ์)
|
|
126
|
+
* @param selectedFillColor - ์ ํ ์ฑ์ฐ๊ธฐ ์์ (์ ํ)
|
|
127
|
+
* @param selectedStrokeColor - ์ ํ ํ
๋๋ฆฌ ์์ (์ ํ)
|
|
128
|
+
* @param selectedLineWidth - ์ ํ ํ
๋๋ฆฌ ๋๊ป (์ ํ)
|
|
129
|
+
* @param activeFillColor - ๋ง์ง๋ง ์ ํ ์ฑ์ฐ๊ธฐ ์์ (์ ํ)
|
|
130
|
+
* @param activeStrokeColor - ๋ง์ง๋ง ์ ํ ํ
๋๋ฆฌ ์์ (์ ํ)
|
|
131
|
+
* @param activeLineWidth - ๋ง์ง๋ง ์ ํ ํ
๋๋ฆฌ ๋๊ป (์ ํ)
|
|
132
|
+
* @param hoveredFillColor - Hover ์ฑ์ฐ๊ธฐ ์์ (์ ํ)
|
|
133
|
+
* @param hoveredStrokeColor - Hover ํ
๋๋ฆฌ ์์ (์ ํ)
|
|
134
|
+
* @param hoveredLineWidth - Hover ํ
๋๋ฆฌ ๋๊ป (์ ํ)
|
|
94
135
|
*
|
|
95
136
|
* ## ๐ฏ ์ฌ์ฉ ๋ฐฉ๋ฒ
|
|
96
137
|
*
|
|
@@ -105,9 +146,9 @@ declare const WoongCanvasLayer: <T>(props: WoongCanvasLayerProps<T>) => React.Re
|
|
|
105
146
|
* selectedFillColor="rgba(255, 193, 7, 0.7)"
|
|
106
147
|
* selectedStrokeColor="rgba(255, 152, 0, 1)"
|
|
107
148
|
* selectedLineWidth={4}
|
|
108
|
-
* hoveredFillColor="rgba(100, 150, 255, 0.8)"
|
|
109
|
-
* hoveredStrokeColor="rgba(0, 100, 200, 1)"
|
|
110
|
-
* hoveredLineWidth={3}
|
|
149
|
+
* hoveredFillColor="rgba(100, 150, 255, 0.8)"
|
|
150
|
+
* hoveredStrokeColor="rgba(0, 100, 200, 1)"
|
|
151
|
+
* hoveredLineWidth={3}
|
|
111
152
|
* enableMultiSelect={true}
|
|
112
153
|
* onClick={handleClick}
|
|
113
154
|
* />
|
|
@@ -118,14 +159,35 @@ declare const WoongCanvasLayer: <T>(props: WoongCanvasLayerProps<T>) => React.Re
|
|
|
118
159
|
* <WoongCanvasLayer
|
|
119
160
|
* dataType={CanvasDataType.MARKER}
|
|
120
161
|
* data={markers}
|
|
121
|
-
* renderBase={renderMarkerBase}
|
|
122
|
-
* renderAnimation={renderMarkerAnimation}
|
|
123
|
-
* renderEvent={renderMarkerEvent}
|
|
162
|
+
* renderBase={renderMarkerBase}
|
|
163
|
+
* renderAnimation={renderMarkerAnimation}
|
|
164
|
+
* renderEvent={renderMarkerEvent}
|
|
124
165
|
* topOnHover={true}
|
|
125
166
|
* onClick={handleClick}
|
|
126
167
|
* />
|
|
127
168
|
* ```
|
|
128
169
|
*
|
|
170
|
+
* ### 3๏ธโฃ topOnHover + renderEvent ์กฐํฉ
|
|
171
|
+
*
|
|
172
|
+
* `topOnHover={true}`์ `renderEvent`๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด hover๋ ํญ๋ชฉ์ด ์ต์๋จ์ ํ์๋ฉ๋๋ค:
|
|
173
|
+
*
|
|
174
|
+
* ```tsx
|
|
175
|
+
* <WoongCanvasLayer
|
|
176
|
+
* dataType={CanvasDataType.MARKER}
|
|
177
|
+
* data={markers}
|
|
178
|
+
* renderBase={renderMarkerBase}
|
|
179
|
+
* renderEvent={renderMarkerEvent}
|
|
180
|
+
* topOnHover={true}
|
|
181
|
+
* onClick={handleClick}
|
|
182
|
+
* />
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* **๋์ ๋ฐฉ์:**
|
|
186
|
+
* 1. **Base Layer**: hover๋ ํญ๋ชฉ์ ์ ์ธํ๊ณ ์ผ๋ฐ ํญ๋ชฉ๋ค ๋ ๋๋ง
|
|
187
|
+
* 2. **Event Layer**:
|
|
188
|
+
* - ๋จผ์ hover๋ ํญ๋ชฉ์ ์ ์ธํ ๋๋จธ์ง ํญ๋ชฉ๋ค ๋ ๋๋ง
|
|
189
|
+
* - ๊ทธ ๋ค์ hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง (์๊ฐ์ ์ฐ์ ์์)
|
|
190
|
+
*
|
|
129
191
|
* ## ๐ ๋ฐ์ดํฐ ํ์
|
|
130
192
|
* ```typescript
|
|
131
193
|
* const data: KonvaCanvasData<T>[] = [
|
|
@@ -137,6 +199,7 @@ declare const WoongCanvasLayer: <T>(props: WoongCanvasLayerProps<T>) => React.Re
|
|
|
137
199
|
* // MARKER: boxWidth/boxHeight ๊ถ์ฅ (Hit Test ์ ํ๋)
|
|
138
200
|
* boxWidth: 60,
|
|
139
201
|
* boxHeight: 75,
|
|
202
|
+
* tailHeight: 9, // ๊ผฌ๋ฆฌ ๋์ด (Viewport Culling์ฉ, Hit Test ์ ์ธ)
|
|
140
203
|
* // ์ปค์คํ
๋ฐ์ดํฐ
|
|
141
204
|
* ...customData
|
|
142
205
|
* }
|
|
@@ -157,6 +220,8 @@ declare const WoongCanvasLayer: <T>(props: WoongCanvasLayerProps<T>) => React.Re
|
|
|
157
220
|
* tempCtx.font = 'bold 15px Arial';
|
|
158
221
|
* const boxWidth = Math.max(60, tempCtx.measureText(text).width + 20);
|
|
159
222
|
*
|
|
160
|
-
* @see {@link
|
|
223
|
+
* @see {@link ./README.md} ์ ์ฒด ๋ฌธ์
|
|
224
|
+
* @version 2.2.1
|
|
225
|
+
* @since 2.0.0
|
|
161
226
|
*/
|
|
162
227
|
export default WoongCanvasLayer;
|
|
@@ -428,6 +428,12 @@ var WoongCanvasLayer = function (props) {
|
|
|
428
428
|
* 1. Shape ์ฌ์ฌ์ฉ์ผ๋ก ๊ฐ์ฒด ์์ฑ/ํ๊ดด ์ค๋ฒํค๋ ์ ๊ฑฐ
|
|
429
429
|
* 2. sceneFunc ํ ๋ฒ๋ง ์ค์ (ํจ์ ์ฌ์์ฑ ์ ๊ฑฐ)
|
|
430
430
|
* 3. ํด๋ก์ ๋ก ์ต์ ๋ฐ์ดํฐ ์ฐธ์กฐ
|
|
431
|
+
*
|
|
432
|
+
* ๐ฏ topOnHover + renderEvent ์กฐํฉ ์ง์:
|
|
433
|
+
* - topOnHover๊ฐ true์ด๊ณ renderEvent๊ฐ ์์ผ๋ฉด:
|
|
434
|
+
* 1. ๋จผ์ hover๋ ํญ๋ชฉ์ ์ ์ธํ ๋๋จธ์ง ํญ๋ชฉ๋ค ๋ ๋๋ง
|
|
435
|
+
* 2. ๊ทธ ๋ค์ hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง (์๊ฐ์ ์ฐ์ ์์)
|
|
436
|
+
* - topOnHover๊ฐ false์ด๊ฑฐ๋ renderEvent๊ฐ ์์ผ๋ฉด ์ผ๋ฐ ๋ ๋๋ง
|
|
431
437
|
*/
|
|
432
438
|
|
|
433
439
|
|
|
@@ -447,13 +453,41 @@ var WoongCanvasLayer = function (props) {
|
|
|
447
453
|
var ctx = context; // ํด๋ก์ ๋ก ์ต์ ref ๊ฐ ์ฐธ์กฐ
|
|
448
454
|
|
|
449
455
|
var selectedItems = Array.from(selectedItemsMapRef.current.values());
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
456
|
+
var hovered = hoveredItemRef.current; // topOnHover๊ฐ true์ด๋ฉด hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง
|
|
457
|
+
|
|
458
|
+
if (topOnHover && hovered) {
|
|
459
|
+
// 1. ๋จผ์ ์ผ๋ฐ ํญ๋ชฉ๋ค ๋ ๋๋ง (hover๋ ํญ๋ชฉ ์ ์ธ)
|
|
460
|
+
renderEvent({
|
|
461
|
+
ctx: ctx,
|
|
462
|
+
hoveredItem: null,
|
|
463
|
+
utils: renderUtils,
|
|
464
|
+
selectedItems: selectedItems.filter(function (item) {
|
|
465
|
+
return item.id !== hovered.id;
|
|
466
|
+
}),
|
|
467
|
+
selectedItem: selectedItemRef.current
|
|
468
|
+
}); // 2. hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง
|
|
469
|
+
|
|
470
|
+
var isHoveredInViewport = enableViewportCulling ? isInViewport(hovered) : true;
|
|
471
|
+
|
|
472
|
+
if (isHoveredInViewport) {
|
|
473
|
+
renderEvent({
|
|
474
|
+
ctx: ctx,
|
|
475
|
+
hoveredItem: hovered,
|
|
476
|
+
utils: renderUtils,
|
|
477
|
+
selectedItems: selectedItems,
|
|
478
|
+
selectedItem: selectedItemRef.current
|
|
479
|
+
});
|
|
480
|
+
}
|
|
481
|
+
} else {
|
|
482
|
+
// topOnHover๊ฐ false์ด๊ฑฐ๋ hover๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ์ผ๋ฐ ๋ ๋๋ง
|
|
483
|
+
renderEvent({
|
|
484
|
+
ctx: ctx,
|
|
485
|
+
hoveredItem: hovered,
|
|
486
|
+
utils: renderUtils,
|
|
487
|
+
selectedItems: selectedItems,
|
|
488
|
+
selectedItem: selectedItemRef.current
|
|
489
|
+
});
|
|
490
|
+
}
|
|
457
491
|
},
|
|
458
492
|
perfectDrawEnabled: false,
|
|
459
493
|
listening: false,
|
|
@@ -3,32 +3,49 @@ import { Position, Offset } from "../../../../types";
|
|
|
3
3
|
/**
|
|
4
4
|
* ์บ๋ฒ์ค ๋ฐ์ดํฐ ํ์
Enum
|
|
5
5
|
* ๋ง์ปค์ธ์ง ํด๋ฆฌ๊ณค์ธ์ง ๊ตฌ๋ถํ๋ ์์
|
|
6
|
+
*
|
|
7
|
+
* @enum {string}
|
|
8
|
+
* @memberof WoongCanvasLayer
|
|
6
9
|
*/
|
|
7
10
|
export declare enum CanvasDataType {
|
|
11
|
+
/** ๋ง์ปค ํ์
- ์ปค์คํ
๋ ๋๋ง ํ์ */
|
|
8
12
|
MARKER = "MARKER",
|
|
13
|
+
/** ํด๋ฆฌ๊ณค ํ์
- ์๋ ๋ ๋๋ง ์ง์ */
|
|
9
14
|
POLYGON = "POLYGON"
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
|
-
* ํด๋ฆฌ๊ณค ๊ฒฝ๋ก ์ ์
|
|
17
|
+
* ํด๋ฆฌ๊ณค ๊ฒฝ๋ก ์ ์ (GeoJSON MultiPolygon ํ์)
|
|
18
|
+
*
|
|
19
|
+
* @interface Paths
|
|
20
|
+
* @memberof WoongCanvasLayer
|
|
13
21
|
*/
|
|
14
22
|
export interface Paths {
|
|
23
|
+
/** GeoJSON ํ์
(MultiPolygon) */
|
|
15
24
|
type: string;
|
|
25
|
+
/** 4์ฐจ์ ์ขํ ๋ฐฐ์ด [MultiPolygon][Polygon][Point][x/y] */
|
|
16
26
|
coordinates: number[][][][];
|
|
17
27
|
}
|
|
18
|
-
/**
|
|
19
|
-
* ์บ๋ฒ์ค ๋ง์ปค/ํด๋ฆฌ๊ณค ๊ธฐ๋ณธ ์ต์
|
|
20
|
-
*/
|
|
21
28
|
/**
|
|
22
29
|
* Konva ์บ๋ฒ์ค ๋ง์ปค/ํด๋ฆฌ๊ณค์ ๊ธฐ๋ณธ ํ์ ์์ฑ
|
|
23
30
|
* (๋ ๋๋ง์ ํ์ํ ์ต์ ์ ๋ณด)
|
|
31
|
+
*
|
|
32
|
+
* @interface KonvaCanvasOption
|
|
33
|
+
* @memberof WoongCanvasLayer
|
|
24
34
|
*/
|
|
25
35
|
export interface KonvaCanvasOption {
|
|
36
|
+
/** ๊ณ ์ ์๋ณ์ */
|
|
26
37
|
id: string;
|
|
38
|
+
/** ์ง๋์ ์์น (์๊ฒฝ๋) */
|
|
27
39
|
position: Position;
|
|
40
|
+
/** ๋ง์ปค ๋ณธ์ฒด ๋๋น (Hit Test ์์ญ) */
|
|
28
41
|
boxWidth?: number;
|
|
42
|
+
/** ๋ง์ปค ๋ณธ์ฒด ๋์ด (Hit Test ์์ญ) */
|
|
29
43
|
boxHeight?: number;
|
|
44
|
+
/** ๋ง์ปค ๊ผฌ๋ฆฌ ๋์ด (Viewport Culling์ฉ, Hit Test์์๋ ์ ์ธ) */
|
|
30
45
|
tailHeight?: number;
|
|
46
|
+
/** ํด๋ฆฌ๊ณค ๊ฒฝ๋ก (GeoJSON MultiPolygon) */
|
|
31
47
|
paths?: Paths;
|
|
48
|
+
/** ๋๋ ํด๋ฆฌ๊ณค ์ฌ๋ถ (๊ตฌ๋ฉ์ด ์๋ ํด๋ฆฌ๊ณค) */
|
|
32
49
|
isDonutPolygon?: boolean;
|
|
33
50
|
}
|
|
34
51
|
/**
|
|
@@ -5,10 +5,16 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
/**
|
|
6
6
|
* ์บ๋ฒ์ค ๋ฐ์ดํฐ ํ์
Enum
|
|
7
7
|
* ๋ง์ปค์ธ์ง ํด๋ฆฌ๊ณค์ธ์ง ๊ตฌ๋ถํ๋ ์์
|
|
8
|
+
*
|
|
9
|
+
* @enum {string}
|
|
10
|
+
* @memberof WoongCanvasLayer
|
|
8
11
|
*/
|
|
9
12
|
exports.CanvasDataType = void 0;
|
|
10
13
|
|
|
11
14
|
(function (CanvasDataType) {
|
|
15
|
+
/** ๋ง์ปค ํ์
- ์ปค์คํ
๋ ๋๋ง ํ์ */
|
|
12
16
|
CanvasDataType["MARKER"] = "MARKER";
|
|
17
|
+
/** ํด๋ฆฌ๊ณค ํ์
- ์๋ ๋ ๋๋ง ์ง์ */
|
|
18
|
+
|
|
13
19
|
CanvasDataType["POLYGON"] = "POLYGON";
|
|
14
20
|
})(exports.CanvasDataType || (exports.CanvasDataType = {}));
|
package/dist/index.es.js
CHANGED
|
@@ -653,11 +653,17 @@ styleInject(css_248z$1);
|
|
|
653
653
|
/**
|
|
654
654
|
* ์บ๋ฒ์ค ๋ฐ์ดํฐ ํ์
Enum
|
|
655
655
|
* ๋ง์ปค์ธ์ง ํด๋ฆฌ๊ณค์ธ์ง ๊ตฌ๋ถํ๋ ์์
|
|
656
|
+
*
|
|
657
|
+
* @enum {string}
|
|
658
|
+
* @memberof WoongCanvasLayer
|
|
656
659
|
*/
|
|
657
660
|
var CanvasDataType;
|
|
658
661
|
|
|
659
662
|
(function (CanvasDataType) {
|
|
663
|
+
/** ๋ง์ปค ํ์
- ์ปค์คํ
๋ ๋๋ง ํ์ */
|
|
660
664
|
CanvasDataType["MARKER"] = "MARKER";
|
|
665
|
+
/** ํด๋ฆฌ๊ณค ํ์
- ์๋ ๋ ๋๋ง ์ง์ */
|
|
666
|
+
|
|
661
667
|
CanvasDataType["POLYGON"] = "POLYGON";
|
|
662
668
|
})(CanvasDataType || (CanvasDataType = {}));
|
|
663
669
|
|
|
@@ -6055,6 +6061,12 @@ var WoongCanvasLayer = function (props) {
|
|
|
6055
6061
|
* 1. Shape ์ฌ์ฌ์ฉ์ผ๋ก ๊ฐ์ฒด ์์ฑ/ํ๊ดด ์ค๋ฒํค๋ ์ ๊ฑฐ
|
|
6056
6062
|
* 2. sceneFunc ํ ๋ฒ๋ง ์ค์ (ํจ์ ์ฌ์์ฑ ์ ๊ฑฐ)
|
|
6057
6063
|
* 3. ํด๋ก์ ๋ก ์ต์ ๋ฐ์ดํฐ ์ฐธ์กฐ
|
|
6064
|
+
*
|
|
6065
|
+
* ๐ฏ topOnHover + renderEvent ์กฐํฉ ์ง์:
|
|
6066
|
+
* - topOnHover๊ฐ true์ด๊ณ renderEvent๊ฐ ์์ผ๋ฉด:
|
|
6067
|
+
* 1. ๋จผ์ hover๋ ํญ๋ชฉ์ ์ ์ธํ ๋๋จธ์ง ํญ๋ชฉ๋ค ๋ ๋๋ง
|
|
6068
|
+
* 2. ๊ทธ ๋ค์ hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง (์๊ฐ์ ์ฐ์ ์์)
|
|
6069
|
+
* - topOnHover๊ฐ false์ด๊ฑฐ๋ renderEvent๊ฐ ์์ผ๋ฉด ์ผ๋ฐ ๋ ๋๋ง
|
|
6058
6070
|
*/
|
|
6059
6071
|
|
|
6060
6072
|
|
|
@@ -6074,13 +6086,41 @@ var WoongCanvasLayer = function (props) {
|
|
|
6074
6086
|
var ctx = context; // ํด๋ก์ ๋ก ์ต์ ref ๊ฐ ์ฐธ์กฐ
|
|
6075
6087
|
|
|
6076
6088
|
var selectedItems = Array.from(selectedItemsMapRef.current.values());
|
|
6077
|
-
|
|
6078
|
-
|
|
6079
|
-
|
|
6080
|
-
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
|
|
6089
|
+
var hovered = hoveredItemRef.current; // topOnHover๊ฐ true์ด๋ฉด hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง
|
|
6090
|
+
|
|
6091
|
+
if (topOnHover && hovered) {
|
|
6092
|
+
// 1. ๋จผ์ ์ผ๋ฐ ํญ๋ชฉ๋ค ๋ ๋๋ง (hover๋ ํญ๋ชฉ ์ ์ธ)
|
|
6093
|
+
renderEvent({
|
|
6094
|
+
ctx: ctx,
|
|
6095
|
+
hoveredItem: null,
|
|
6096
|
+
utils: renderUtils,
|
|
6097
|
+
selectedItems: selectedItems.filter(function (item) {
|
|
6098
|
+
return item.id !== hovered.id;
|
|
6099
|
+
}),
|
|
6100
|
+
selectedItem: selectedItemRef.current
|
|
6101
|
+
}); // 2. hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง
|
|
6102
|
+
|
|
6103
|
+
var isHoveredInViewport = enableViewportCulling ? isInViewport(hovered) : true;
|
|
6104
|
+
|
|
6105
|
+
if (isHoveredInViewport) {
|
|
6106
|
+
renderEvent({
|
|
6107
|
+
ctx: ctx,
|
|
6108
|
+
hoveredItem: hovered,
|
|
6109
|
+
utils: renderUtils,
|
|
6110
|
+
selectedItems: selectedItems,
|
|
6111
|
+
selectedItem: selectedItemRef.current
|
|
6112
|
+
});
|
|
6113
|
+
}
|
|
6114
|
+
} else {
|
|
6115
|
+
// topOnHover๊ฐ false์ด๊ฑฐ๋ hover๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ์ผ๋ฐ ๋ ๋๋ง
|
|
6116
|
+
renderEvent({
|
|
6117
|
+
ctx: ctx,
|
|
6118
|
+
hoveredItem: hovered,
|
|
6119
|
+
utils: renderUtils,
|
|
6120
|
+
selectedItems: selectedItems,
|
|
6121
|
+
selectedItem: selectedItemRef.current
|
|
6122
|
+
});
|
|
6123
|
+
}
|
|
6084
6124
|
},
|
|
6085
6125
|
perfectDrawEnabled: false,
|
|
6086
6126
|
listening: false,
|
package/dist/index.umd.js
CHANGED
|
@@ -657,11 +657,17 @@
|
|
|
657
657
|
/**
|
|
658
658
|
* ์บ๋ฒ์ค ๋ฐ์ดํฐ ํ์
Enum
|
|
659
659
|
* ๋ง์ปค์ธ์ง ํด๋ฆฌ๊ณค์ธ์ง ๊ตฌ๋ถํ๋ ์์
|
|
660
|
+
*
|
|
661
|
+
* @enum {string}
|
|
662
|
+
* @memberof WoongCanvasLayer
|
|
660
663
|
*/
|
|
661
664
|
exports.CanvasDataType = void 0;
|
|
662
665
|
|
|
663
666
|
(function (CanvasDataType) {
|
|
667
|
+
/** ๋ง์ปค ํ์
- ์ปค์คํ
๋ ๋๋ง ํ์ */
|
|
664
668
|
CanvasDataType["MARKER"] = "MARKER";
|
|
669
|
+
/** ํด๋ฆฌ๊ณค ํ์
- ์๋ ๋ ๋๋ง ์ง์ */
|
|
670
|
+
|
|
665
671
|
CanvasDataType["POLYGON"] = "POLYGON";
|
|
666
672
|
})(exports.CanvasDataType || (exports.CanvasDataType = {}));
|
|
667
673
|
|
|
@@ -6059,6 +6065,12 @@
|
|
|
6059
6065
|
* 1. Shape ์ฌ์ฌ์ฉ์ผ๋ก ๊ฐ์ฒด ์์ฑ/ํ๊ดด ์ค๋ฒํค๋ ์ ๊ฑฐ
|
|
6060
6066
|
* 2. sceneFunc ํ ๋ฒ๋ง ์ค์ (ํจ์ ์ฌ์์ฑ ์ ๊ฑฐ)
|
|
6061
6067
|
* 3. ํด๋ก์ ๋ก ์ต์ ๋ฐ์ดํฐ ์ฐธ์กฐ
|
|
6068
|
+
*
|
|
6069
|
+
* ๐ฏ topOnHover + renderEvent ์กฐํฉ ์ง์:
|
|
6070
|
+
* - topOnHover๊ฐ true์ด๊ณ renderEvent๊ฐ ์์ผ๋ฉด:
|
|
6071
|
+
* 1. ๋จผ์ hover๋ ํญ๋ชฉ์ ์ ์ธํ ๋๋จธ์ง ํญ๋ชฉ๋ค ๋ ๋๋ง
|
|
6072
|
+
* 2. ๊ทธ ๋ค์ hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง (์๊ฐ์ ์ฐ์ ์์)
|
|
6073
|
+
* - topOnHover๊ฐ false์ด๊ฑฐ๋ renderEvent๊ฐ ์์ผ๋ฉด ์ผ๋ฐ ๋ ๋๋ง
|
|
6062
6074
|
*/
|
|
6063
6075
|
|
|
6064
6076
|
|
|
@@ -6078,13 +6090,41 @@
|
|
|
6078
6090
|
var ctx = context; // ํด๋ก์ ๋ก ์ต์ ref ๊ฐ ์ฐธ์กฐ
|
|
6079
6091
|
|
|
6080
6092
|
var selectedItems = Array.from(selectedItemsMapRef.current.values());
|
|
6081
|
-
|
|
6082
|
-
|
|
6083
|
-
|
|
6084
|
-
|
|
6085
|
-
|
|
6086
|
-
|
|
6087
|
-
|
|
6093
|
+
var hovered = hoveredItemRef.current; // topOnHover๊ฐ true์ด๋ฉด hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง
|
|
6094
|
+
|
|
6095
|
+
if (topOnHover && hovered) {
|
|
6096
|
+
// 1. ๋จผ์ ์ผ๋ฐ ํญ๋ชฉ๋ค ๋ ๋๋ง (hover๋ ํญ๋ชฉ ์ ์ธ)
|
|
6097
|
+
renderEvent({
|
|
6098
|
+
ctx: ctx,
|
|
6099
|
+
hoveredItem: null,
|
|
6100
|
+
utils: renderUtils,
|
|
6101
|
+
selectedItems: selectedItems.filter(function (item) {
|
|
6102
|
+
return item.id !== hovered.id;
|
|
6103
|
+
}),
|
|
6104
|
+
selectedItem: selectedItemRef.current
|
|
6105
|
+
}); // 2. hover๋ ํญ๋ชฉ์ ์ต์๋จ์ ๋ ๋๋ง
|
|
6106
|
+
|
|
6107
|
+
var isHoveredInViewport = enableViewportCulling ? isInViewport(hovered) : true;
|
|
6108
|
+
|
|
6109
|
+
if (isHoveredInViewport) {
|
|
6110
|
+
renderEvent({
|
|
6111
|
+
ctx: ctx,
|
|
6112
|
+
hoveredItem: hovered,
|
|
6113
|
+
utils: renderUtils,
|
|
6114
|
+
selectedItems: selectedItems,
|
|
6115
|
+
selectedItem: selectedItemRef.current
|
|
6116
|
+
});
|
|
6117
|
+
}
|
|
6118
|
+
} else {
|
|
6119
|
+
// topOnHover๊ฐ false์ด๊ฑฐ๋ hover๋ ํญ๋ชฉ์ด ์์ผ๋ฉด ์ผ๋ฐ ๋ ๋๋ง
|
|
6120
|
+
renderEvent({
|
|
6121
|
+
ctx: ctx,
|
|
6122
|
+
hoveredItem: hovered,
|
|
6123
|
+
utils: renderUtils,
|
|
6124
|
+
selectedItems: selectedItems,
|
|
6125
|
+
selectedItem: selectedItemRef.current
|
|
6126
|
+
});
|
|
6127
|
+
}
|
|
6088
6128
|
},
|
|
6089
6129
|
perfectDrawEnabled: false,
|
|
6090
6130
|
listening: false,
|