react-confetti-burst 1.0.0
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/LICENSE +21 -0
- package/README.md +303 -0
- package/dist/cjs/components.d.ts +219 -0
- package/dist/cjs/components.d.ts.map +1 -0
- package/dist/cjs/components.js +341 -0
- package/dist/cjs/components.js.map +1 -0
- package/dist/cjs/confetti-engine.d.ts +122 -0
- package/dist/cjs/confetti-engine.d.ts.map +1 -0
- package/dist/cjs/confetti-engine.js +589 -0
- package/dist/cjs/confetti-engine.js.map +1 -0
- package/dist/cjs/confetti.d.ts +50 -0
- package/dist/cjs/confetti.d.ts.map +1 -0
- package/dist/cjs/confetti.js +446 -0
- package/dist/cjs/confetti.js.map +1 -0
- package/dist/cjs/constants.d.ts +147 -0
- package/dist/cjs/constants.d.ts.map +1 -0
- package/dist/cjs/constants.js +609 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/hooks.d.ts +94 -0
- package/dist/cjs/hooks.d.ts.map +1 -0
- package/dist/cjs/hooks.js +225 -0
- package/dist/cjs/hooks.js.map +1 -0
- package/dist/cjs/index.d.ts +34 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +180 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/particle.d.ts +50 -0
- package/dist/cjs/particle.d.ts.map +1 -0
- package/dist/cjs/particle.js +475 -0
- package/dist/cjs/particle.js.map +1 -0
- package/dist/cjs/shapes.d.ts +190 -0
- package/dist/cjs/shapes.d.ts.map +1 -0
- package/dist/cjs/shapes.js +272 -0
- package/dist/cjs/shapes.js.map +1 -0
- package/dist/cjs/types.d.ts +720 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +25 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +90 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +330 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/components.js +334 -0
- package/dist/esm/components.js.map +1 -0
- package/dist/esm/confetti-engine.js +581 -0
- package/dist/esm/confetti-engine.js.map +1 -0
- package/dist/esm/confetti.js +443 -0
- package/dist/esm/confetti.js.map +1 -0
- package/dist/esm/constants.js +605 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/hooks.js +218 -0
- package/dist/esm/hooks.js.map +1 -0
- package/dist/esm/index.js +146 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/particle.js +465 -0
- package/dist/esm/particle.js.map +1 -0
- package/dist/esm/shapes.js +265 -0
- package/dist/esm/shapes.js.map +1 -0
- package/dist/esm/types.js +24 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.js +309 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/types/components.d.ts +219 -0
- package/dist/types/components.d.ts.map +1 -0
- package/dist/types/confetti-engine.d.ts +122 -0
- package/dist/types/confetti-engine.d.ts.map +1 -0
- package/dist/types/confetti.d.ts +50 -0
- package/dist/types/confetti.d.ts.map +1 -0
- package/dist/types/constants.d.ts +147 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/hooks.d.ts +94 -0
- package/dist/types/hooks.d.ts.map +1 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/particle.d.ts +50 -0
- package/dist/types/particle.d.ts.map +1 -0
- package/dist/types/shapes.d.ts +190 -0
- package/dist/types/shapes.d.ts.map +1 -0
- package/dist/types/types.d.ts +720 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils.d.ts +90 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shape helper functions
|
|
4
|
+
*
|
|
5
|
+
* Provides canvas-confetti compatible shape creation utilities
|
|
6
|
+
* for custom SVG paths, text, and emoji shapes.
|
|
7
|
+
*
|
|
8
|
+
* @module shapes
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.emojiShapes = exports.pathShapes = void 0;
|
|
12
|
+
exports.shapeFromPath = shapeFromPath;
|
|
13
|
+
exports.shapeFromText = shapeFromText;
|
|
14
|
+
exports.shapeFromImage = shapeFromImage;
|
|
15
|
+
exports.shapesFromEmoji = shapesFromEmoji;
|
|
16
|
+
/**
|
|
17
|
+
* Create a custom shape from an SVG path string.
|
|
18
|
+
*
|
|
19
|
+
* This is compatible with canvas-confetti's shapeFromPath function.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Simple star shape
|
|
24
|
+
* const star = shapeFromPath({
|
|
25
|
+
* path: 'M0,-1 L0.588,0.809 L-0.951,-0.309 L0.951,-0.309 L-0.588,0.809 Z'
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // With transformation matrix
|
|
29
|
+
* const scaledStar = shapeFromPath({
|
|
30
|
+
* path: 'M0,-1 L0.588,0.809 L-0.951,-0.309 L0.951,-0.309 L-0.588,0.809 Z',
|
|
31
|
+
* matrix: [2, 0, 0, 2, 0, 0] // Scale 2x
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Usage with confetti
|
|
35
|
+
* fire({ x: 0.5, y: 0.5 }, {
|
|
36
|
+
* particle: { shapes: [star, 'circle'] }
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @param options - Shape configuration options
|
|
41
|
+
* @returns PathShape object for use in confetti configuration
|
|
42
|
+
*/
|
|
43
|
+
function shapeFromPath(options) {
|
|
44
|
+
const { path, matrix, fillColor, strokeColor, strokeWidth } = options;
|
|
45
|
+
// Parse the path to extract bounds for proper scaling
|
|
46
|
+
const bounds = getPathBounds(path);
|
|
47
|
+
return {
|
|
48
|
+
type: 'path',
|
|
49
|
+
path,
|
|
50
|
+
matrix: matrix ? [...matrix] : undefined,
|
|
51
|
+
fillColor,
|
|
52
|
+
strokeColor,
|
|
53
|
+
strokeWidth,
|
|
54
|
+
bounds,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Create a custom shape from text or an emoji.
|
|
59
|
+
*
|
|
60
|
+
* This is compatible with canvas-confetti's shapeFromText function.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* // Emoji confetti
|
|
65
|
+
* const heart = shapeFromText({ text: '❤️' });
|
|
66
|
+
* const party = shapeFromText({ text: '🎉', scalar: 2 });
|
|
67
|
+
*
|
|
68
|
+
* // Custom text
|
|
69
|
+
* const yay = shapeFromText({
|
|
70
|
+
* text: 'YAY',
|
|
71
|
+
* fontFamily: 'Impact',
|
|
72
|
+
* color: '#ff0000'
|
|
73
|
+
* });
|
|
74
|
+
*
|
|
75
|
+
* // Usage with confetti
|
|
76
|
+
* fire({ x: 0.5, y: 0.5 }, {
|
|
77
|
+
* particle: { shapes: [heart, party, yay] }
|
|
78
|
+
* });
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* @param options - Text shape configuration options
|
|
82
|
+
* @returns TextShape object for use in confetti configuration
|
|
83
|
+
*/
|
|
84
|
+
function shapeFromText(options) {
|
|
85
|
+
const { text, scalar = 1, color, fontFamily = 'serif', fontWeight = 'normal', fontStyle = 'normal', } = options;
|
|
86
|
+
return {
|
|
87
|
+
type: 'text',
|
|
88
|
+
text,
|
|
89
|
+
scalar,
|
|
90
|
+
color,
|
|
91
|
+
fontFamily,
|
|
92
|
+
fontWeight: String(fontWeight),
|
|
93
|
+
fontStyle,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Create a bitmap shape from an image URL or HTMLImageElement.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const logo = await shapeFromImage({
|
|
102
|
+
* src: '/logo.png',
|
|
103
|
+
* width: 32,
|
|
104
|
+
* height: 32
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* fire({ x: 0.5, y: 0.5 }, {
|
|
108
|
+
* particle: { shapes: [logo] }
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* @param options - Image shape configuration options
|
|
113
|
+
* @returns Promise resolving to a custom shape
|
|
114
|
+
*/
|
|
115
|
+
async function shapeFromImage(options) {
|
|
116
|
+
const { src, scalar = 1 } = options;
|
|
117
|
+
// If it's already an image element, use it directly
|
|
118
|
+
if (typeof src !== 'string') {
|
|
119
|
+
return {
|
|
120
|
+
type: 'text', // Reuse text type for simplicity in renderer
|
|
121
|
+
text: '',
|
|
122
|
+
scalar,
|
|
123
|
+
// Store image reference in a custom way
|
|
124
|
+
fontFamily: `url(${src.src})`,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// Load the image to validate it exists
|
|
128
|
+
await loadImage(src);
|
|
129
|
+
return {
|
|
130
|
+
type: 'text',
|
|
131
|
+
text: '',
|
|
132
|
+
scalar,
|
|
133
|
+
fontFamily: `url(${src})`,
|
|
134
|
+
color: undefined,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Create multiple shapes from an array of emoji.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* const partyEmoji = shapesFromEmoji(['🎉', '🎊', '✨', '🥳']);
|
|
143
|
+
*
|
|
144
|
+
* fire({ x: 0.5, y: 0.5 }, {
|
|
145
|
+
* particle: { shapes: partyEmoji }
|
|
146
|
+
* });
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @param emojis - Array of emoji strings
|
|
150
|
+
* @param options - Optional common options for all emoji
|
|
151
|
+
* @returns Array of TextShape objects
|
|
152
|
+
*/
|
|
153
|
+
function shapesFromEmoji(emojis, options = {}) {
|
|
154
|
+
return emojis.map(emoji => shapeFromText({ ...options, text: emoji }));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Common predefined path shapes
|
|
158
|
+
*/
|
|
159
|
+
exports.pathShapes = {
|
|
160
|
+
/** Five-pointed star */
|
|
161
|
+
star: shapeFromPath({
|
|
162
|
+
path: 'M0,-1 L0.588,0.809 L-0.951,-0.309 L0.951,-0.309 L-0.588,0.809 Z',
|
|
163
|
+
}),
|
|
164
|
+
/** Heart shape */
|
|
165
|
+
heart: shapeFromPath({
|
|
166
|
+
path: 'M0,0.8 C-0.5,0.4 -1,-0.2 -1,-0.6 C-1,-1 -0.5,-1.2 0,-0.8 C0.5,-1.2 1,-1 1,-0.6 C1,-0.2 0.5,0.4 0,0.8 Z',
|
|
167
|
+
}),
|
|
168
|
+
/** Diamond shape */
|
|
169
|
+
diamond: shapeFromPath({
|
|
170
|
+
path: 'M0,-1 L0.7,0 L0,1 L-0.7,0 Z',
|
|
171
|
+
}),
|
|
172
|
+
/** Hexagon shape */
|
|
173
|
+
hexagon: shapeFromPath({
|
|
174
|
+
path: 'M0.866,-0.5 L0.866,0.5 L0,1 L-0.866,0.5 L-0.866,-0.5 L0,-1 Z',
|
|
175
|
+
}),
|
|
176
|
+
/** Triangle shape */
|
|
177
|
+
triangle: shapeFromPath({
|
|
178
|
+
path: 'M0,-1 L0.866,0.5 L-0.866,0.5 Z',
|
|
179
|
+
}),
|
|
180
|
+
/** Plus/cross shape */
|
|
181
|
+
plus: shapeFromPath({
|
|
182
|
+
path: 'M-0.25,-1 L0.25,-1 L0.25,-0.25 L1,-0.25 L1,0.25 L0.25,0.25 L0.25,1 L-0.25,1 L-0.25,0.25 L-1,0.25 L-1,-0.25 L-0.25,-0.25 Z',
|
|
183
|
+
}),
|
|
184
|
+
/** Moon/crescent shape */
|
|
185
|
+
moon: shapeFromPath({
|
|
186
|
+
path: 'M0,-1 A1,1 0 1,1 0,1 A0.6,0.6 0 1,0 0,-1 Z',
|
|
187
|
+
}),
|
|
188
|
+
/** Lightning bolt */
|
|
189
|
+
lightning: shapeFromPath({
|
|
190
|
+
path: 'M0.4,-1 L-0.2,0 L0.2,0 L-0.4,1 L0,0.2 L-0.3,0.2 L0.4,-1 Z',
|
|
191
|
+
}),
|
|
192
|
+
/** Spiral shape */
|
|
193
|
+
spiral: shapeFromPath({
|
|
194
|
+
path: 'M0,0 Q0.3,-0.3 0,-0.5 Q-0.5,-0.5 -0.5,0 Q-0.5,0.7 0,0.7 Q0.7,0.7 0.7,0 Q0.7,-0.9 0,-0.9',
|
|
195
|
+
}),
|
|
196
|
+
/** Ribbon/wave shape */
|
|
197
|
+
ribbon: shapeFromPath({
|
|
198
|
+
path: 'M-1,0 Q-0.5,-0.5 0,0 Q0.5,0.5 1,0 Q0.5,-0.3 0,0 Q-0.5,0.3 -1,0 Z',
|
|
199
|
+
}),
|
|
200
|
+
};
|
|
201
|
+
/**
|
|
202
|
+
* Common emoji sets for quick use
|
|
203
|
+
*/
|
|
204
|
+
exports.emojiShapes = {
|
|
205
|
+
/** Party/celebration emoji */
|
|
206
|
+
party: shapesFromEmoji(['🎉', '🎊', '🥳', '✨', '🎈']),
|
|
207
|
+
/** Heart emoji */
|
|
208
|
+
hearts: shapesFromEmoji(['❤️', '💕', '💖', '💗', '💝']),
|
|
209
|
+
/** Star emoji */
|
|
210
|
+
stars: shapesFromEmoji(['⭐', '🌟', '✨', '💫', '🌠']),
|
|
211
|
+
/** Nature emoji */
|
|
212
|
+
nature: shapesFromEmoji(['🌸', '🌺', '🌻', '🌼', '🌷']),
|
|
213
|
+
/** Food emoji */
|
|
214
|
+
food: shapesFromEmoji(['🍕', '🍔', '🍟', '🍩', '🧁']),
|
|
215
|
+
/** Sports emoji */
|
|
216
|
+
sports: shapesFromEmoji(['⚽', '🏀', '🏈', '⚾', '🎾']),
|
|
217
|
+
/** Weather emoji */
|
|
218
|
+
weather: shapesFromEmoji(['☀️', '⛅', '🌈', '❄️', '💨']),
|
|
219
|
+
/** Money emoji */
|
|
220
|
+
money: shapesFromEmoji(['💰', '💵', '💎', '🪙', '💳']),
|
|
221
|
+
/** Animals emoji */
|
|
222
|
+
animals: shapesFromEmoji(['🦋', '🐝', '🐞', '🦄', '🐱']),
|
|
223
|
+
/** Holiday emoji */
|
|
224
|
+
holiday: shapesFromEmoji(['🎄', '🎃', '🎅', '🐰', '🦃']),
|
|
225
|
+
};
|
|
226
|
+
// ============================================================================
|
|
227
|
+
// Internal helper functions
|
|
228
|
+
// ============================================================================
|
|
229
|
+
/**
|
|
230
|
+
* Parse SVG path and extract bounds for proper scaling
|
|
231
|
+
*/
|
|
232
|
+
function getPathBounds(path) {
|
|
233
|
+
// Simple bounds extraction - this is a basic implementation
|
|
234
|
+
// A full implementation would parse all path commands
|
|
235
|
+
const numbers = path.match(/-?\d*\.?\d+/g);
|
|
236
|
+
if (!numbers || numbers.length < 2) {
|
|
237
|
+
return { minX: -1, minY: -1, maxX: 1, maxY: 1 };
|
|
238
|
+
}
|
|
239
|
+
let minX = Infinity;
|
|
240
|
+
let minY = Infinity;
|
|
241
|
+
let maxX = -Infinity;
|
|
242
|
+
let maxY = -Infinity;
|
|
243
|
+
// Assume alternating x,y pairs (simplified)
|
|
244
|
+
for (let i = 0; i < numbers.length - 1; i += 2) {
|
|
245
|
+
const x = parseFloat(numbers[i]);
|
|
246
|
+
const y = parseFloat(numbers[i + 1]);
|
|
247
|
+
if (!isNaN(x) && !isNaN(y)) {
|
|
248
|
+
minX = Math.min(minX, x);
|
|
249
|
+
minY = Math.min(minY, y);
|
|
250
|
+
maxX = Math.max(maxX, x);
|
|
251
|
+
maxY = Math.max(maxY, y);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
// Handle case where we couldn't parse valid bounds
|
|
255
|
+
if (!isFinite(minX)) {
|
|
256
|
+
return { minX: -1, minY: -1, maxX: 1, maxY: 1 };
|
|
257
|
+
}
|
|
258
|
+
return { minX, minY, maxX, maxY };
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Load an image and return a promise
|
|
262
|
+
*/
|
|
263
|
+
function loadImage(src) {
|
|
264
|
+
return new Promise((resolve, reject) => {
|
|
265
|
+
const img = new Image();
|
|
266
|
+
img.crossOrigin = 'anonymous';
|
|
267
|
+
img.onload = () => resolve(img);
|
|
268
|
+
img.onerror = () => reject(new Error(`Failed to load image: ${src}`));
|
|
269
|
+
img.src = src;
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=shapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../src/shapes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAiEH,sCAeC;AA6BD,sCAmBC;AAqBD,wCA6BC;AAkBD,0CAKC;AAnKD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,aAAa,CAAC,OAA6B;IACzD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAEtE,sDAAsD;IACtD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACxC,SAAS;QACT,WAAW;QACX,WAAW;QACX,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAgB,aAAa,CAAC,OAA6B;IACzD,MAAM,EACJ,IAAI,EACJ,MAAM,GAAG,CAAC,EACV,KAAK,EACL,UAAU,GAAG,OAAO,EACpB,UAAU,GAAG,QAAQ,EACrB,SAAS,GAAG,QAAQ,GACrB,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,MAAM;QACN,KAAK;QACL,UAAU;QACV,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;QAC9B,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACI,KAAK,UAAU,cAAc,CAAC,OAKpC;IACC,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEpC,oDAAoD;IACpD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,MAAM,EAAE,6CAA6C;YAC3D,IAAI,EAAE,EAAE;YACR,MAAM;YACN,wCAAwC;YACxC,UAAU,EAAE,OAAO,GAAG,CAAC,GAAG,GAAG;SACjB,CAAC;IACjB,CAAC;IAED,uCAAuC;IACvC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IAErB,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,EAAE;QACR,MAAM;QACN,UAAU,EAAE,OAAO,GAAG,GAAG;QACzB,KAAK,EAAE,SAAS;KACJ,CAAC;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,eAAe,CAC7B,MAAyB,EACzB,UAA8C,EAAE;IAEhD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC;AAED;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,wBAAwB;IACxB,IAAI,EAAE,aAAa,CAAC;QAClB,IAAI,EAAE,iEAAiE;KACxE,CAAC;IAEF,kBAAkB;IAClB,KAAK,EAAE,aAAa,CAAC;QACnB,IAAI,EAAE,wGAAwG;KAC/G,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE,aAAa,CAAC;QACrB,IAAI,EAAE,6BAA6B;KACpC,CAAC;IAEF,oBAAoB;IACpB,OAAO,EAAE,aAAa,CAAC;QACrB,IAAI,EAAE,8DAA8D;KACrE,CAAC;IAEF,qBAAqB;IACrB,QAAQ,EAAE,aAAa,CAAC;QACtB,IAAI,EAAE,gCAAgC;KACvC,CAAC;IAEF,uBAAuB;IACvB,IAAI,EAAE,aAAa,CAAC;QAClB,IAAI,EAAE,2HAA2H;KAClI,CAAC;IAEF,0BAA0B;IAC1B,IAAI,EAAE,aAAa,CAAC;QAClB,IAAI,EAAE,4CAA4C;KACnD,CAAC;IAEF,qBAAqB;IACrB,SAAS,EAAE,aAAa,CAAC;QACvB,IAAI,EAAE,2DAA2D;KAClE,CAAC;IAEF,mBAAmB;IACnB,MAAM,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,yFAAyF;KAChG,CAAC;IAEF,wBAAwB;IACxB,MAAM,EAAE,aAAa,CAAC;QACpB,IAAI,EAAE,kEAAkE;KACzE,CAAC;CACH,CAAC;AAEF;;GAEG;AACU,QAAA,WAAW,GAAG;IACzB,8BAA8B;IAC9B,KAAK,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAErD,kBAAkB;IAClB,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEvD,iBAAiB;IACjB,KAAK,EAAE,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEpD,mBAAmB;IACnB,MAAM,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEvD,iBAAiB;IACjB,IAAI,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAErD,mBAAmB;IACnB,MAAM,EAAE,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAErD,oBAAoB;IACpB,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEvD,kBAAkB;IAClB,KAAK,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAEtD,oBAAoB;IACpB,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAExD,oBAAoB;IACpB,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;CACzD,CAAC;AAEF,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E;;GAEG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,4DAA4D;IAC5D,sDAAsD;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,IAAI,GAAG,QAAQ,CAAC;IACpB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IACrB,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC;IAErB,4CAA4C;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAErC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACzB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAC9B,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,GAAG,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC,CAAC;QACtE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC"}
|