@nice2dev/ui-graphics 1.0.0 → 1.0.3
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/CHANGELOG.md +147 -1
- package/dist/cjs/animation/AnimatedPerson.js +2 -2
- package/dist/cjs/animation/AnimatedPerson.js.map +1 -1
- package/dist/cjs/animation/AnimationEditor.js +11 -6
- package/dist/cjs/animation/AnimationEditor.js.map +1 -1
- package/dist/cjs/animation/Audience.js +4 -3
- package/dist/cjs/animation/Audience.js.map +1 -1
- package/dist/cjs/animation/BodyRenderer.js +5 -2
- package/dist/cjs/animation/BodyRenderer.js.map +1 -1
- package/dist/cjs/animation/rig/RigPlayer.js +2 -2
- package/dist/cjs/animation/rig/RigPlayer.js.map +1 -1
- package/dist/cjs/animation/rig/RiggedBody.js +2 -2
- package/dist/cjs/animation/rig/RiggedBody.js.map +1 -1
- package/dist/cjs/animation/shapes/heads.js +4 -1
- package/dist/cjs/animation/shapes/heads.js.map +1 -1
- package/dist/cjs/core/LocalUI.js +1 -1
- package/dist/cjs/core/NiceBrushEngine.js +446 -0
- package/dist/cjs/core/NiceBrushEngine.js.map +1 -0
- package/dist/cjs/core/yjsCollaboration.js +292 -0
- package/dist/cjs/core/yjsCollaboration.js.map +1 -0
- package/dist/cjs/font/NiceFontEditor.js +89 -85
- package/dist/cjs/font/NiceFontEditor.js.map +1 -1
- package/dist/cjs/font/fontFormatUtils.js +468 -0
- package/dist/cjs/font/fontFormatUtils.js.map +1 -0
- package/dist/cjs/game/GameAsset2dEditor.js +38 -24
- package/dist/cjs/game/GameAsset2dEditor.js.map +1 -1
- package/dist/cjs/icon/NiceIconEditor.js +218 -133
- package/dist/cjs/icon/NiceIconEditor.js.map +1 -1
- package/dist/cjs/index.js +83 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/nice2dev-ui-graphics.css +1 -1
- package/dist/cjs/photo/NiceAITools.js +446 -0
- package/dist/cjs/photo/NiceAITools.js.map +1 -0
- package/dist/cjs/photo/PhotoEditor.js +2 -2
- package/dist/cjs/photo/PhotoEditor.js.map +1 -1
- package/dist/cjs/pixel/PixelEditor.js +16 -5
- package/dist/cjs/pixel/PixelEditor.js.map +1 -1
- package/dist/cjs/pixel/PixelEditor.module.css.js +1 -1
- package/dist/cjs/pixel/PixelEditorMenuBar.js +2 -1
- package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -1
- package/dist/cjs/pixel/PixelEditorRightPanel.js +3 -2
- package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -1
- package/dist/cjs/pixel/PixelEditorTimeline.js +2 -1
- package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -1
- package/dist/cjs/pixel/PixelEditorToolbar.js +2 -1
- package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -1
- package/dist/cjs/pixel/SpriteGeneratorPanel.js +224 -0
- package/dist/cjs/pixel/SpriteGeneratorPanel.js.map +1 -0
- package/dist/cjs/pixel/animalGeneratorPresets.js +654 -0
- package/dist/cjs/pixel/animalGeneratorPresets.js.map +1 -0
- package/dist/cjs/pixel/buildingGeneratorPresets.js +573 -0
- package/dist/cjs/pixel/buildingGeneratorPresets.js.map +1 -0
- package/dist/cjs/pixel/characterGeneratorPresets.js +563 -0
- package/dist/cjs/pixel/characterGeneratorPresets.js.map +1 -0
- package/dist/cjs/pixel/spriteGeneratorCore.js +297 -0
- package/dist/cjs/pixel/spriteGeneratorCore.js.map +1 -0
- package/dist/cjs/pixel/usePixelEditor.js +16 -0
- package/dist/cjs/pixel/usePixelEditor.js.map +1 -1
- package/dist/cjs/texture/Nice3DTexturePainter.js +123 -79
- package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -1
- package/dist/cjs/ui/NiceUIDesigner.js +175 -62
- package/dist/cjs/ui/NiceUIDesigner.js.map +1 -1
- package/dist/cjs/ui/dist/index.js +50089 -0
- package/dist/cjs/ui/dist/index.js.map +1 -0
- package/dist/cjs/vector/NiceSvgToCode.js +427 -0
- package/dist/cjs/vector/NiceSvgToCode.js.map +1 -0
- package/dist/cjs/vector/VectorEditor.js +7 -3
- package/dist/cjs/vector/VectorEditor.js.map +1 -1
- package/dist/cjs/vector/VectorEditor.module.css.js +1 -1
- package/dist/cjs/vector/VectorEditorMenuBar.js +5 -1
- package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -1
- package/dist/cjs/vector/VectorEditorRightPanel.js +23 -19
- package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -1
- package/dist/esm/animation/AnimatedPerson.js +2 -2
- package/dist/esm/animation/AnimatedPerson.js.map +1 -1
- package/dist/esm/animation/AnimationEditor.js +12 -8
- package/dist/esm/animation/AnimationEditor.js.map +1 -1
- package/dist/esm/animation/Audience.js +5 -4
- package/dist/esm/animation/Audience.js.map +1 -1
- package/dist/esm/animation/BodyRenderer.js +4 -2
- package/dist/esm/animation/BodyRenderer.js.map +1 -1
- package/dist/esm/animation/rig/RigPlayer.js +4 -4
- package/dist/esm/animation/rig/RigPlayer.js.map +1 -1
- package/dist/esm/animation/rig/RiggedBody.js +2 -2
- package/dist/esm/animation/rig/RiggedBody.js.map +1 -1
- package/dist/esm/animation/shapes/heads.js +4 -2
- package/dist/esm/animation/shapes/heads.js.map +1 -1
- package/dist/esm/core/LocalUI.js +4 -4
- package/dist/esm/core/NiceBrushEngine.js +442 -0
- package/dist/esm/core/NiceBrushEngine.js.map +1 -0
- package/dist/esm/core/yjsCollaboration.js +283 -0
- package/dist/esm/core/yjsCollaboration.js.map +1 -0
- package/dist/esm/font/NiceFontEditor.js +89 -85
- package/dist/esm/font/NiceFontEditor.js.map +1 -1
- package/dist/esm/font/fontFormatUtils.js +461 -0
- package/dist/esm/font/fontFormatUtils.js.map +1 -0
- package/dist/esm/game/GameAsset2dEditor.js +38 -25
- package/dist/esm/game/GameAsset2dEditor.js.map +1 -1
- package/dist/esm/icon/NiceIconEditor.js +218 -133
- package/dist/esm/icon/NiceIconEditor.js.map +1 -1
- package/dist/esm/index.js +21 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/nice2dev-ui-graphics.css +1 -1
- package/dist/esm/photo/NiceAITools.js +439 -0
- package/dist/esm/photo/NiceAITools.js.map +1 -0
- package/dist/esm/photo/PhotoEditor.js +2 -2
- package/dist/esm/photo/PhotoEditor.js.map +1 -1
- package/dist/esm/pixel/PixelEditor.js +16 -6
- package/dist/esm/pixel/PixelEditor.js.map +1 -1
- package/dist/esm/pixel/PixelEditor.module.css.js +1 -1
- package/dist/esm/pixel/PixelEditorMenuBar.js +2 -1
- package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -1
- package/dist/esm/pixel/PixelEditorRightPanel.js +3 -2
- package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -1
- package/dist/esm/pixel/PixelEditorTimeline.js +2 -1
- package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -1
- package/dist/esm/pixel/PixelEditorToolbar.js +2 -1
- package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -1
- package/dist/esm/pixel/SpriteGeneratorPanel.js +222 -0
- package/dist/esm/pixel/SpriteGeneratorPanel.js.map +1 -0
- package/dist/esm/pixel/animalGeneratorPresets.js +647 -0
- package/dist/esm/pixel/animalGeneratorPresets.js.map +1 -0
- package/dist/esm/pixel/buildingGeneratorPresets.js +566 -0
- package/dist/esm/pixel/buildingGeneratorPresets.js.map +1 -0
- package/dist/esm/pixel/characterGeneratorPresets.js +556 -0
- package/dist/esm/pixel/characterGeneratorPresets.js.map +1 -0
- package/dist/esm/pixel/spriteGeneratorCore.js +279 -0
- package/dist/esm/pixel/spriteGeneratorCore.js.map +1 -0
- package/dist/esm/pixel/usePixelEditor.js +16 -0
- package/dist/esm/pixel/usePixelEditor.js.map +1 -1
- package/dist/esm/texture/Nice3DTexturePainter.js +123 -79
- package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -1
- package/dist/esm/ui/NiceUIDesigner.js +175 -62
- package/dist/esm/ui/NiceUIDesigner.js.map +1 -1
- package/dist/esm/ui/dist/index.js +49686 -0
- package/dist/esm/ui/dist/index.js.map +1 -0
- package/dist/esm/vector/NiceSvgToCode.js +423 -0
- package/dist/esm/vector/NiceSvgToCode.js.map +1 -0
- package/dist/esm/vector/VectorEditor.js +7 -4
- package/dist/esm/vector/VectorEditor.js.map +1 -1
- package/dist/esm/vector/VectorEditor.module.css.js +1 -1
- package/dist/esm/vector/VectorEditorMenuBar.js +5 -1
- package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -1
- package/dist/esm/vector/VectorEditorRightPanel.js +23 -19
- package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,446 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
function luminance(r, g, b) {
|
|
7
|
+
return 0.299 * r + 0.587 * g + 0.114 * b;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Auto-colorize a grayscale image using heuristic color mapping.
|
|
11
|
+
* Maps luminance regions to plausible colors (sky-blue for bright areas,
|
|
12
|
+
* earth tones for dark areas, greens for mid-tones).
|
|
13
|
+
*/
|
|
14
|
+
function autoColorize(source, options) {
|
|
15
|
+
const { intensity, temperature, saturation } = options;
|
|
16
|
+
const result = new ImageData(new Uint8ClampedArray(source.data), source.width, source.height);
|
|
17
|
+
const data = result.data;
|
|
18
|
+
// Temperature bias
|
|
19
|
+
const tempBias = temperature === 'warm' ? [20, 5, -15] : temperature === 'cool' ? [-10, 0, 15] : [0, 0, 0];
|
|
20
|
+
for (let i = 0; i < data.length; i += 4) {
|
|
21
|
+
const lum = luminance(data[i], data[i + 1], data[i + 2]);
|
|
22
|
+
const isGray = Math.abs(data[i] - data[i + 1]) < 15 && Math.abs(data[i + 1] - data[i + 2]) < 15;
|
|
23
|
+
if (isGray) {
|
|
24
|
+
// Map grayscale to heuristic colors based on luminance
|
|
25
|
+
let cr, cg, cb;
|
|
26
|
+
if (lum > 200) {
|
|
27
|
+
// Very bright → sky blue / white
|
|
28
|
+
cr = 200 + (lum - 200) * 0.8;
|
|
29
|
+
cg = 210 + (lum - 200) * 0.6;
|
|
30
|
+
cb = 230;
|
|
31
|
+
}
|
|
32
|
+
else if (lum > 140) {
|
|
33
|
+
// Upper mid → warm tones
|
|
34
|
+
cr = lum * 1.05;
|
|
35
|
+
cg = lum * 0.95;
|
|
36
|
+
cb = lum * 0.85;
|
|
37
|
+
}
|
|
38
|
+
else if (lum > 80) {
|
|
39
|
+
// Mid tones → greenish
|
|
40
|
+
cr = lum * 0.85;
|
|
41
|
+
cg = lum * 1.1;
|
|
42
|
+
cb = lum * 0.8;
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// Dark → earth/brown
|
|
46
|
+
cr = lum * 1.15;
|
|
47
|
+
cg = lum * 0.9;
|
|
48
|
+
cb = lum * 0.7;
|
|
49
|
+
}
|
|
50
|
+
// Apply temperature bias
|
|
51
|
+
cr = Math.max(0, Math.min(255, cr + tempBias[0]));
|
|
52
|
+
cg = Math.max(0, Math.min(255, cg + tempBias[1]));
|
|
53
|
+
cb = Math.max(0, Math.min(255, cb + tempBias[2]));
|
|
54
|
+
// Apply saturation
|
|
55
|
+
const avg = (cr + cg + cb) / 3;
|
|
56
|
+
cr = avg + (cr - avg) * saturation;
|
|
57
|
+
cg = avg + (cg - avg) * saturation;
|
|
58
|
+
cb = avg + (cb - avg) * saturation;
|
|
59
|
+
// Blend with original based on intensity
|
|
60
|
+
data[i] = Math.max(0, Math.min(255, data[i] * (1 - intensity) + cr * intensity));
|
|
61
|
+
data[i + 1] = Math.max(0, Math.min(255, data[i + 1] * (1 - intensity) + cg * intensity));
|
|
62
|
+
data[i + 2] = Math.max(0, Math.min(255, data[i + 2] * (1 - intensity) + cb * intensity));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Remove background using edge-based foreground detection.
|
|
69
|
+
* Uses Sobel edge detection + flood fill from edges to find background.
|
|
70
|
+
*/
|
|
71
|
+
function removeBackground(source, options) {
|
|
72
|
+
const { threshold, iterations, featherRadius, replacementColor } = options;
|
|
73
|
+
const w = source.width;
|
|
74
|
+
const h = source.height;
|
|
75
|
+
const result = new ImageData(new Uint8ClampedArray(source.data), w, h);
|
|
76
|
+
const data = result.data;
|
|
77
|
+
// 1. Compute edge magnitude (Sobel)
|
|
78
|
+
const edges = new Float32Array(w * h);
|
|
79
|
+
for (let y = 1; y < h - 1; y++) {
|
|
80
|
+
for (let x = 1; x < w - 1; x++) {
|
|
81
|
+
const idx = (y * w + x) * 4;
|
|
82
|
+
const tl = luminance(source.data[idx - w * 4 - 4], source.data[idx - w * 4 - 3], source.data[idx - w * 4 - 2]);
|
|
83
|
+
const tc = luminance(source.data[idx - w * 4], source.data[idx - w * 4 + 1], source.data[idx - w * 4 + 2]);
|
|
84
|
+
const tr = luminance(source.data[idx - w * 4 + 4], source.data[idx - w * 4 + 5], source.data[idx - w * 4 + 6]);
|
|
85
|
+
const ml = luminance(source.data[idx - 4], source.data[idx - 3], source.data[idx - 2]);
|
|
86
|
+
const mr = luminance(source.data[idx + 4], source.data[idx + 5], source.data[idx + 6]);
|
|
87
|
+
const bl = luminance(source.data[idx + w * 4 - 4], source.data[idx + w * 4 - 3], source.data[idx + w * 4 - 2]);
|
|
88
|
+
const bc = luminance(source.data[idx + w * 4], source.data[idx + w * 4 + 1], source.data[idx + w * 4 + 2]);
|
|
89
|
+
const br = luminance(source.data[idx + w * 4 + 4], source.data[idx + w * 4 + 5], source.data[idx + w * 4 + 6]);
|
|
90
|
+
const gx = -tl - 2 * ml - bl + tr + 2 * mr + br;
|
|
91
|
+
const gy = -tl - 2 * tc - tr + bl + 2 * bc + br;
|
|
92
|
+
edges[y * w + x] = Math.sqrt(gx * gx + gy * gy) / 255;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 2. Create foreground mask from edge density
|
|
96
|
+
const mask = new Float32Array(w * h);
|
|
97
|
+
const edgeThreshold = threshold * 0.5;
|
|
98
|
+
// Mark edges as definite foreground
|
|
99
|
+
for (let i = 0; i < edges.length; i++) {
|
|
100
|
+
mask[i] = edges[i] > edgeThreshold ? 1 : 0;
|
|
101
|
+
}
|
|
102
|
+
// 3. Dilate foreground mask (iterations)
|
|
103
|
+
for (let iter = 0; iter < iterations; iter++) {
|
|
104
|
+
const temp = new Float32Array(mask);
|
|
105
|
+
for (let y = 1; y < h - 1; y++) {
|
|
106
|
+
for (let x = 1; x < w - 1; x++) {
|
|
107
|
+
const idx = y * w + x;
|
|
108
|
+
if (temp[idx] > 0)
|
|
109
|
+
continue;
|
|
110
|
+
// Check 4-neighbors
|
|
111
|
+
if (temp[idx - 1] > 0 || temp[idx + 1] > 0 || temp[idx - w] > 0 || temp[idx + w] > 0) {
|
|
112
|
+
// Check color similarity with neighbor
|
|
113
|
+
const pi = idx * 4;
|
|
114
|
+
let isFg = false;
|
|
115
|
+
for (const ni of [idx - 1, idx + 1, idx - w, idx + w]) {
|
|
116
|
+
if (temp[ni] > 0) {
|
|
117
|
+
const npi = ni * 4;
|
|
118
|
+
const diff = (Math.abs(source.data[pi] - source.data[npi]) +
|
|
119
|
+
Math.abs(source.data[pi + 1] - source.data[npi + 1]) +
|
|
120
|
+
Math.abs(source.data[pi + 2] - source.data[npi + 2])) / 3;
|
|
121
|
+
if (diff < threshold * 255) {
|
|
122
|
+
isFg = true;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (isFg)
|
|
128
|
+
mask[idx] = 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
// 4. Flood fill from border pixels as background (anything not foreground and reachable from edge)
|
|
134
|
+
const visited = new Uint8Array(w * h);
|
|
135
|
+
const queue = [];
|
|
136
|
+
// Seed from border
|
|
137
|
+
for (let x = 0; x < w; x++) {
|
|
138
|
+
if (mask[x] === 0) {
|
|
139
|
+
queue.push(x);
|
|
140
|
+
visited[x] = 1;
|
|
141
|
+
}
|
|
142
|
+
const bi = (h - 1) * w + x;
|
|
143
|
+
if (mask[bi] === 0) {
|
|
144
|
+
queue.push(bi);
|
|
145
|
+
visited[bi] = 1;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
for (let y = 0; y < h; y++) {
|
|
149
|
+
const li = y * w;
|
|
150
|
+
if (mask[li] === 0) {
|
|
151
|
+
queue.push(li);
|
|
152
|
+
visited[li] = 1;
|
|
153
|
+
}
|
|
154
|
+
const ri = y * w + w - 1;
|
|
155
|
+
if (mask[ri] === 0) {
|
|
156
|
+
queue.push(ri);
|
|
157
|
+
visited[ri] = 1;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// BFS flood fill
|
|
161
|
+
let head = 0;
|
|
162
|
+
while (head < queue.length) {
|
|
163
|
+
const idx = queue[head++];
|
|
164
|
+
const x = idx % w;
|
|
165
|
+
const y = (idx - x) / w;
|
|
166
|
+
for (const [dx, dy] of [[0, -1], [0, 1], [-1, 0], [1, 0]]) {
|
|
167
|
+
const nx = x + dx;
|
|
168
|
+
const ny = y + dy;
|
|
169
|
+
if (nx < 0 || nx >= w || ny < 0 || ny >= h)
|
|
170
|
+
continue;
|
|
171
|
+
const ni = ny * w + nx;
|
|
172
|
+
if (visited[ni] || mask[ni] > 0)
|
|
173
|
+
continue;
|
|
174
|
+
visited[ni] = 1;
|
|
175
|
+
queue.push(ni);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// 5. Apply mask with optional feathering
|
|
179
|
+
const replacement = replacementColor ? hexToRGB(replacementColor) : null;
|
|
180
|
+
for (let i = 0; i < w * h; i++) {
|
|
181
|
+
let alpha = visited[i] ? 0 : 1; // background = 0, foreground = 1
|
|
182
|
+
// Feather edges
|
|
183
|
+
if (featherRadius > 0 && alpha > 0) {
|
|
184
|
+
const x = i % w;
|
|
185
|
+
const y = (i - x) / w;
|
|
186
|
+
let minDistSq = featherRadius * featherRadius + 1;
|
|
187
|
+
for (let fy = -featherRadius; fy <= featherRadius; fy++) {
|
|
188
|
+
for (let fx = -featherRadius; fx <= featherRadius; fx++) {
|
|
189
|
+
const nx = x + fx;
|
|
190
|
+
const ny = y + fy;
|
|
191
|
+
if (nx >= 0 && nx < w && ny >= 0 && ny < h) {
|
|
192
|
+
if (visited[ny * w + nx]) {
|
|
193
|
+
const d = fx * fx + fy * fy;
|
|
194
|
+
if (d < minDistSq)
|
|
195
|
+
minDistSq = d;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (minDistSq <= featherRadius * featherRadius) {
|
|
201
|
+
alpha = Math.sqrt(minDistSq) / featherRadius;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const pi = i * 4;
|
|
205
|
+
if (replacement) {
|
|
206
|
+
data[pi] = Math.round(data[pi] * alpha + replacement[0] * (1 - alpha));
|
|
207
|
+
data[pi + 1] = Math.round(data[pi + 1] * alpha + replacement[1] * (1 - alpha));
|
|
208
|
+
data[pi + 2] = Math.round(data[pi + 2] * alpha + replacement[2] * (1 - alpha));
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
data[pi + 3] = Math.round(alpha * 255);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return result;
|
|
215
|
+
}
|
|
216
|
+
function hexToRGB(hex) {
|
|
217
|
+
const h = hex.replace('#', '');
|
|
218
|
+
return [parseInt(h.slice(0, 2), 16), parseInt(h.slice(2, 4), 16), parseInt(h.slice(4, 6), 16)];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Upscale image using Lanczos interpolation.
|
|
222
|
+
*/
|
|
223
|
+
function upscaleImage(source, options) {
|
|
224
|
+
const { scale, sharpen } = options;
|
|
225
|
+
const sw = source.width;
|
|
226
|
+
const sh = source.height;
|
|
227
|
+
const dw = sw * scale;
|
|
228
|
+
const dh = sh * scale;
|
|
229
|
+
const result = new ImageData(dw, dh);
|
|
230
|
+
const srcData = source.data;
|
|
231
|
+
const dstData = result.data;
|
|
232
|
+
// Lanczos kernel
|
|
233
|
+
const a = 3; // Lanczos-3
|
|
234
|
+
function lanczos(x) {
|
|
235
|
+
if (x === 0)
|
|
236
|
+
return 1;
|
|
237
|
+
if (Math.abs(x) >= a)
|
|
238
|
+
return 0;
|
|
239
|
+
const pix = Math.PI * x;
|
|
240
|
+
return (a * Math.sin(pix) * Math.sin(pix / a)) / (pix * pix);
|
|
241
|
+
}
|
|
242
|
+
// Bicubic Lanczos resampling
|
|
243
|
+
for (let dy = 0; dy < dh; dy++) {
|
|
244
|
+
const sy = (dy + 0.5) / scale - 0.5;
|
|
245
|
+
const sy0 = Math.floor(sy) - a + 1;
|
|
246
|
+
const sy1 = Math.floor(sy) + a;
|
|
247
|
+
for (let dx = 0; dx < dw; dx++) {
|
|
248
|
+
const sx = (dx + 0.5) / scale - 0.5;
|
|
249
|
+
const sx0 = Math.floor(sx) - a + 1;
|
|
250
|
+
const sx1 = Math.floor(sx) + a;
|
|
251
|
+
let r = 0, g = 0, b = 0, aa = 0, wSum = 0;
|
|
252
|
+
for (let iy = sy0; iy <= sy1; iy++) {
|
|
253
|
+
const wy = lanczos(sy - iy);
|
|
254
|
+
const cy = Math.max(0, Math.min(sh - 1, iy));
|
|
255
|
+
for (let ix = sx0; ix <= sx1; ix++) {
|
|
256
|
+
const wx = lanczos(sx - ix);
|
|
257
|
+
const w = wx * wy;
|
|
258
|
+
const cx = Math.max(0, Math.min(sw - 1, ix));
|
|
259
|
+
const si = (cy * sw + cx) * 4;
|
|
260
|
+
r += srcData[si] * w;
|
|
261
|
+
g += srcData[si + 1] * w;
|
|
262
|
+
b += srcData[si + 2] * w;
|
|
263
|
+
aa += srcData[si + 3] * w;
|
|
264
|
+
wSum += w;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const di = (dy * dw + dx) * 4;
|
|
268
|
+
if (wSum > 0) {
|
|
269
|
+
dstData[di] = Math.max(0, Math.min(255, r / wSum));
|
|
270
|
+
dstData[di + 1] = Math.max(0, Math.min(255, g / wSum));
|
|
271
|
+
dstData[di + 2] = Math.max(0, Math.min(255, b / wSum));
|
|
272
|
+
dstData[di + 3] = Math.max(0, Math.min(255, aa / wSum));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Post-sharpen with unsharp mask
|
|
277
|
+
if (sharpen > 0) {
|
|
278
|
+
const blurred = new Float32Array(dw * dh * 4);
|
|
279
|
+
// Quick box blur
|
|
280
|
+
for (let y = 1; y < dh - 1; y++) {
|
|
281
|
+
for (let x = 1; x < dw - 1; x++) {
|
|
282
|
+
const di = (y * dw + x) * 4;
|
|
283
|
+
for (let c = 0; c < 3; c++) {
|
|
284
|
+
blurred[di + c] = (dstData[di + c - dw * 4] +
|
|
285
|
+
dstData[di + c + dw * 4] +
|
|
286
|
+
dstData[di + c - 4] +
|
|
287
|
+
dstData[di + c + 4] +
|
|
288
|
+
dstData[di + c] * 4) / 8;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Apply unsharp mask
|
|
293
|
+
for (let i = 0; i < dstData.length; i += 4) {
|
|
294
|
+
for (let c = 0; c < 3; c++) {
|
|
295
|
+
const sharp = dstData[i + c] + (dstData[i + c] - blurred[i + c]) * sharpen * 2;
|
|
296
|
+
dstData[i + c] = Math.max(0, Math.min(255, sharp));
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Denoise image using bilateral filter approximation.
|
|
304
|
+
*/
|
|
305
|
+
function denoiseImage(source, options) {
|
|
306
|
+
const { strength, detailPreservation, luminanceWeight } = options;
|
|
307
|
+
const w = source.width;
|
|
308
|
+
const h = source.height;
|
|
309
|
+
const result = new ImageData(new Uint8ClampedArray(source.data), w, h);
|
|
310
|
+
const data = result.data;
|
|
311
|
+
const radius = Math.max(1, Math.round(strength * 5));
|
|
312
|
+
const sigmaSpace = radius * 0.5;
|
|
313
|
+
const sigmaColor = (1 - detailPreservation) * 150 + 10;
|
|
314
|
+
for (let y = 0; y < h; y++) {
|
|
315
|
+
for (let x = 0; x < w; x++) {
|
|
316
|
+
const ci = (y * w + x) * 4;
|
|
317
|
+
let rSum = 0, gSum = 0, bSum = 0, wSum = 0;
|
|
318
|
+
for (let dy = -radius; dy <= radius; dy++) {
|
|
319
|
+
for (let dx = -radius; dx <= radius; dx++) {
|
|
320
|
+
const nx = x + dx;
|
|
321
|
+
const ny = y + dy;
|
|
322
|
+
if (nx < 0 || nx >= w || ny < 0 || ny >= h)
|
|
323
|
+
continue;
|
|
324
|
+
const ni = (ny * w + nx) * 4;
|
|
325
|
+
const spatialDist = Math.sqrt(dx * dx + dy * dy);
|
|
326
|
+
const spatialW = Math.exp(-(spatialDist * spatialDist) / (2 * sigmaSpace * sigmaSpace));
|
|
327
|
+
// Color distance (weighted luminance vs chroma)
|
|
328
|
+
const lumDiff = luminance(source.data[ni], source.data[ni + 1], source.data[ni + 2]) -
|
|
329
|
+
luminance(source.data[ci], source.data[ci + 1], source.data[ci + 2]);
|
|
330
|
+
const chromaDiff = Math.sqrt((source.data[ni] - source.data[ci]) ** 2 +
|
|
331
|
+
(source.data[ni + 1] - source.data[ci + 1]) ** 2 +
|
|
332
|
+
(source.data[ni + 2] - source.data[ci + 2]) ** 2);
|
|
333
|
+
const colorDiff = lumDiff * luminanceWeight + chromaDiff * (1 - luminanceWeight);
|
|
334
|
+
const colorW = Math.exp(-(colorDiff * colorDiff) / (2 * sigmaColor * sigmaColor));
|
|
335
|
+
const weight = spatialW * colorW;
|
|
336
|
+
rSum += source.data[ni] * weight;
|
|
337
|
+
gSum += source.data[ni + 1] * weight;
|
|
338
|
+
bSum += source.data[ni + 2] * weight;
|
|
339
|
+
wSum += weight;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (wSum > 0) {
|
|
343
|
+
data[ci] = Math.round(rSum / wSum);
|
|
344
|
+
data[ci + 1] = Math.round(gSum / wSum);
|
|
345
|
+
data[ci + 2] = Math.round(bSum / wSum);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return result;
|
|
350
|
+
}
|
|
351
|
+
/* ── Hook ── */
|
|
352
|
+
function useAITools(sourceImage) {
|
|
353
|
+
const [isProcessing, setIsProcessing] = React.useState(false);
|
|
354
|
+
const [activeTool, setActiveTool] = React.useState('colorize');
|
|
355
|
+
const [lastResult, setLastResult] = React.useState(null);
|
|
356
|
+
const [colorizeOptions, setColorizeOptions] = React.useState({
|
|
357
|
+
intensity: 0.7, temperature: 'neutral', saturation: 1.2,
|
|
358
|
+
});
|
|
359
|
+
const [bgRemoveOptions, setBgRemoveOptions] = React.useState({
|
|
360
|
+
edgeSoftness: 2, threshold: 0.35, iterations: 8, featherRadius: 3, replacementColor: null,
|
|
361
|
+
});
|
|
362
|
+
const [upscaleOptions, setUpscaleOptions] = React.useState({
|
|
363
|
+
scale: 2, method: 'lanczos', sharpen: 0.3,
|
|
364
|
+
});
|
|
365
|
+
const [denoiseOptions, setDenoiseOptions] = React.useState({
|
|
366
|
+
strength: 0.5, detailPreservation: 0.6, luminanceWeight: 0.7,
|
|
367
|
+
});
|
|
368
|
+
const process = React.useCallback(async () => {
|
|
369
|
+
if (!sourceImage)
|
|
370
|
+
return null;
|
|
371
|
+
setIsProcessing(true);
|
|
372
|
+
const start = performance.now();
|
|
373
|
+
let imageData;
|
|
374
|
+
try {
|
|
375
|
+
switch (activeTool) {
|
|
376
|
+
case 'colorize':
|
|
377
|
+
imageData = autoColorize(sourceImage, colorizeOptions);
|
|
378
|
+
break;
|
|
379
|
+
case 'background-remove':
|
|
380
|
+
imageData = removeBackground(sourceImage, bgRemoveOptions);
|
|
381
|
+
break;
|
|
382
|
+
case 'upscale':
|
|
383
|
+
imageData = upscaleImage(sourceImage, upscaleOptions);
|
|
384
|
+
break;
|
|
385
|
+
case 'denoise':
|
|
386
|
+
imageData = denoiseImage(sourceImage, denoiseOptions);
|
|
387
|
+
break;
|
|
388
|
+
default:
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
const result = {
|
|
392
|
+
imageData,
|
|
393
|
+
processingTimeMs: performance.now() - start,
|
|
394
|
+
tool: activeTool,
|
|
395
|
+
};
|
|
396
|
+
setLastResult(result);
|
|
397
|
+
return result;
|
|
398
|
+
}
|
|
399
|
+
finally {
|
|
400
|
+
setIsProcessing(false);
|
|
401
|
+
}
|
|
402
|
+
}, [sourceImage, activeTool, colorizeOptions, bgRemoveOptions, upscaleOptions, denoiseOptions]);
|
|
403
|
+
return {
|
|
404
|
+
activeTool, setActiveTool,
|
|
405
|
+
colorizeOptions, setColorizeOptions,
|
|
406
|
+
bgRemoveOptions, setBgRemoveOptions,
|
|
407
|
+
upscaleOptions, setUpscaleOptions,
|
|
408
|
+
denoiseOptions, setDenoiseOptions,
|
|
409
|
+
process, isProcessing, lastResult,
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
/* ── Component ── */
|
|
413
|
+
const TOOL_LABELS = {
|
|
414
|
+
colorize: '🎨 Auto-Colorize',
|
|
415
|
+
'background-remove': '✂️ Remove Background',
|
|
416
|
+
upscale: '🔍 Upscale (ESRGAN)',
|
|
417
|
+
denoise: '🔇 Denoise',
|
|
418
|
+
};
|
|
419
|
+
const NiceAITools = ({ sourceImage, onResult, className = '' }) => {
|
|
420
|
+
var _a;
|
|
421
|
+
const ai = useAITools(sourceImage);
|
|
422
|
+
const handleProcess = async () => {
|
|
423
|
+
const result = await ai.process();
|
|
424
|
+
if (result && onResult)
|
|
425
|
+
onResult(result);
|
|
426
|
+
};
|
|
427
|
+
return (jsxRuntime.jsxs("div", { className: `nice-ai-tools ${className}`, style: { display: 'grid', gap: 8, fontSize: 13 }, children: [jsxRuntime.jsx("strong", { children: "\uD83E\uDD16 AI Tools" }), jsxRuntime.jsx("div", { style: { display: 'flex', gap: 2, flexWrap: 'wrap' }, children: Object.entries(TOOL_LABELS).map(([key, label]) => (jsxRuntime.jsx("button", { type: "button", onClick: () => ai.setActiveTool(key), style: {
|
|
428
|
+
flex: 1, padding: '4px 6px', fontSize: 11, cursor: 'pointer', borderRadius: 4,
|
|
429
|
+
border: '1px solid var(--border, #e2e8f0)',
|
|
430
|
+
background: ai.activeTool === key ? 'var(--accent, #6366f1)' : 'transparent',
|
|
431
|
+
color: ai.activeTool === key ? '#fff' : 'inherit',
|
|
432
|
+
minWidth: 100,
|
|
433
|
+
}, children: label }, key))) }), ai.activeTool === 'colorize' && (jsxRuntime.jsxs("div", { style: { display: 'grid', gap: 4 }, children: [jsxRuntime.jsxs("label", { children: ["Intensity: ", ai.colorizeOptions.intensity.toFixed(2), jsxRuntime.jsx("input", { type: "range", min: 0, max: 1, step: 0.05, value: ai.colorizeOptions.intensity, onChange: (e) => ai.setColorizeOptions({ ...ai.colorizeOptions, intensity: +e.target.value }), style: { width: '100%' } })] }), jsxRuntime.jsxs("label", { children: ["Saturation: ", ai.colorizeOptions.saturation.toFixed(1), jsxRuntime.jsx("input", { type: "range", min: 0, max: 2, step: 0.1, value: ai.colorizeOptions.saturation, onChange: (e) => ai.setColorizeOptions({ ...ai.colorizeOptions, saturation: +e.target.value }), style: { width: '100%' } })] }), jsxRuntime.jsxs("label", { children: ["Temperature:", jsxRuntime.jsxs("select", { value: ai.colorizeOptions.temperature, onChange: (e) => ai.setColorizeOptions({ ...ai.colorizeOptions, temperature: e.target.value }), style: { width: '100%' }, children: [jsxRuntime.jsx("option", { value: "warm", children: "Warm" }), jsxRuntime.jsx("option", { value: "neutral", children: "Neutral" }), jsxRuntime.jsx("option", { value: "cool", children: "Cool" })] })] })] })), ai.activeTool === 'background-remove' && (jsxRuntime.jsxs("div", { style: { display: 'grid', gap: 4 }, children: [jsxRuntime.jsxs("label", { children: ["Threshold: ", ai.bgRemoveOptions.threshold.toFixed(2), jsxRuntime.jsx("input", { type: "range", min: 0.1, max: 0.9, step: 0.05, value: ai.bgRemoveOptions.threshold, onChange: (e) => ai.setBgRemoveOptions({ ...ai.bgRemoveOptions, threshold: +e.target.value }), style: { width: '100%' } })] }), jsxRuntime.jsxs("label", { children: ["Iterations: ", ai.bgRemoveOptions.iterations, jsxRuntime.jsx("input", { type: "range", min: 1, max: 20, step: 1, value: ai.bgRemoveOptions.iterations, onChange: (e) => ai.setBgRemoveOptions({ ...ai.bgRemoveOptions, iterations: +e.target.value }), style: { width: '100%' } })] }), jsxRuntime.jsxs("label", { children: ["Feather: ", ai.bgRemoveOptions.featherRadius, "px", jsxRuntime.jsx("input", { type: "range", min: 0, max: 10, step: 1, value: ai.bgRemoveOptions.featherRadius, onChange: (e) => ai.setBgRemoveOptions({ ...ai.bgRemoveOptions, featherRadius: +e.target.value }), style: { width: '100%' } })] }), jsxRuntime.jsxs("label", { style: { display: 'flex', gap: 4, alignItems: 'center' }, children: ["Replace BG:", jsxRuntime.jsx("input", { type: "color", value: (_a = ai.bgRemoveOptions.replacementColor) !== null && _a !== void 0 ? _a : '#ffffff', onChange: (e) => ai.setBgRemoveOptions({ ...ai.bgRemoveOptions, replacementColor: e.target.value }) }), jsxRuntime.jsx("button", { type: "button", onClick: () => ai.setBgRemoveOptions({ ...ai.bgRemoveOptions, replacementColor: null }), style: { fontSize: 10 }, children: "Transparent" })] })] })), ai.activeTool === 'upscale' && (jsxRuntime.jsxs("div", { style: { display: 'grid', gap: 4 }, children: [jsxRuntime.jsxs("label", { children: ["Scale:", jsxRuntime.jsxs("select", { value: ai.upscaleOptions.scale, onChange: (e) => ai.setUpscaleOptions({ ...ai.upscaleOptions, scale: +e.target.value }), style: { width: '100%' }, children: [jsxRuntime.jsx("option", { value: 2, children: "2x" }), jsxRuntime.jsx("option", { value: 3, children: "3x" }), jsxRuntime.jsx("option", { value: 4, children: "4x" })] })] }), jsxRuntime.jsxs("label", { children: ["Sharpen: ", ai.upscaleOptions.sharpen.toFixed(2), jsxRuntime.jsx("input", { type: "range", min: 0, max: 1, step: 0.05, value: ai.upscaleOptions.sharpen, onChange: (e) => ai.setUpscaleOptions({ ...ai.upscaleOptions, sharpen: +e.target.value }), style: { width: '100%' } })] })] })), ai.activeTool === 'denoise' && (jsxRuntime.jsxs("div", { style: { display: 'grid', gap: 4 }, children: [jsxRuntime.jsxs("label", { children: ["Strength: ", ai.denoiseOptions.strength.toFixed(2), jsxRuntime.jsx("input", { type: "range", min: 0, max: 1, step: 0.05, value: ai.denoiseOptions.strength, onChange: (e) => ai.setDenoiseOptions({ ...ai.denoiseOptions, strength: +e.target.value }), style: { width: '100%' } })] }), jsxRuntime.jsxs("label", { children: ["Detail: ", ai.denoiseOptions.detailPreservation.toFixed(2), jsxRuntime.jsx("input", { type: "range", min: 0, max: 1, step: 0.05, value: ai.denoiseOptions.detailPreservation, onChange: (e) => ai.setDenoiseOptions({ ...ai.denoiseOptions, detailPreservation: +e.target.value }), style: { width: '100%' } })] })] })), jsxRuntime.jsx("button", { type: "button", onClick: handleProcess, disabled: ai.isProcessing || !sourceImage, style: {
|
|
434
|
+
background: ai.isProcessing ? '#94a3b8' : 'var(--accent, #6366f1)',
|
|
435
|
+
color: '#fff', border: 'none', borderRadius: 4, padding: '8px 12px',
|
|
436
|
+
cursor: ai.isProcessing ? 'wait' : 'pointer',
|
|
437
|
+
}, children: ai.isProcessing ? '⏳ Processing…' : `▶️ ${TOOL_LABELS[ai.activeTool]}` }), ai.lastResult && (jsxRuntime.jsxs("div", { style: { fontSize: 11, color: 'var(--muted, #64748b)' }, children: ["Processed in ", ai.lastResult.processingTimeMs.toFixed(0), "ms", ai.activeTool === 'upscale' && ` → ${ai.lastResult.imageData.width}×${ai.lastResult.imageData.height}`] }))] }));
|
|
438
|
+
};
|
|
439
|
+
|
|
440
|
+
exports.NiceAITools = NiceAITools;
|
|
441
|
+
exports.autoColorize = autoColorize;
|
|
442
|
+
exports.denoiseImage = denoiseImage;
|
|
443
|
+
exports.removeBackground = removeBackground;
|
|
444
|
+
exports.upscaleImage = upscaleImage;
|
|
445
|
+
exports.useAITools = useAITools;
|
|
446
|
+
//# sourceMappingURL=NiceAITools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NiceAITools.js","sources":["../../../src/photo/NiceAITools.tsx"],"sourcesContent":[null],"names":["useState","useCallback","_jsxs","_jsx"],"mappings":";;;;;AAiFA,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAA;IAChD,OAAO,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;AAC1C;AAEA;;;;AAIG;AACG,SAAU,YAAY,CAAC,MAAiB,EAAE,OAAwB,EAAA;IACtE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,OAAO;IACtD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AAC7F,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;;AAGxB,IAAA,MAAM,QAAQ,GAAG,WAAW,KAAK,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,WAAW,KAAK,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAE1G,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACvC,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;QAE/F,IAAI,MAAM,EAAE;;AAEV,YAAA,IAAI,EAAU,EAAE,EAAU,EAAE,EAAU;AAEtC,YAAA,IAAI,GAAG,GAAG,GAAG,EAAE;;gBAEb,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG;gBAC5B,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG;gBAC5B,EAAE,GAAG,GAAG;YACV;AAAO,iBAAA,IAAI,GAAG,GAAG,GAAG,EAAE;;AAEpB,gBAAA,EAAE,GAAG,GAAG,GAAG,IAAI;AACf,gBAAA,EAAE,GAAG,GAAG,GAAG,IAAI;AACf,gBAAA,EAAE,GAAG,GAAG,GAAG,IAAI;YACjB;AAAO,iBAAA,IAAI,GAAG,GAAG,EAAE,EAAE;;AAEnB,gBAAA,EAAE,GAAG,GAAG,GAAG,IAAI;AACf,gBAAA,EAAE,GAAG,GAAG,GAAG,GAAG;AACd,gBAAA,EAAE,GAAG,GAAG,GAAG,GAAG;YAChB;iBAAO;;AAEL,gBAAA,EAAE,GAAG,GAAG,GAAG,IAAI;AACf,gBAAA,EAAE,GAAG,GAAG,GAAG,GAAG;AACd,gBAAA,EAAE,GAAG,GAAG,GAAG,GAAG;YAChB;;YAGA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;;YAGjD,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;YAC9B,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,UAAU;YAClC,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,UAAU;YAClC,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,UAAU;;AAGlC,YAAA,IAAI,CAAC,CAAC,CAAC,GAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;AACpF,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;AACxF,YAAA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QAC1F;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;;AAGG;AACG,SAAU,gBAAgB,CAAC,MAAiB,EAAE,OAAgC,EAAA;IAClF,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,GAAG,OAAO;AAC1E,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK;AACtB,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM;AACvB,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;;IAGxB,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;AACrC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3B,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9G,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1G,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9G,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtF,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACtF,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC9G,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1G,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAE9G,YAAA,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/C,YAAA,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE;YAC/C,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG;QACvD;IACF;;IAGA,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;AACpC,IAAA,MAAM,aAAa,GAAG,SAAS,GAAG,GAAG;;AAGrC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrC,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,GAAG,CAAC;IAC5C;;AAGA,IAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE;AAC5C,QAAA,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC;AACnC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,gBAAA,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACrB,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE;;AAEnB,gBAAA,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;;AAEpF,oBAAA,MAAM,EAAE,GAAG,GAAG,GAAG,CAAC;oBAClB,IAAI,IAAI,GAAG,KAAK;oBAChB,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,EAAE;AACrD,wBAAA,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;AAChB,4BAAA,MAAM,GAAG,GAAG,EAAE,GAAG,CAAC;4BAClB,MAAM,IAAI,GAAG,CACX,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gCACpD,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAClD,CAAC;AACL,4BAAA,IAAI,IAAI,GAAG,SAAS,GAAG,GAAG,EAAE;gCAC1B,IAAI,GAAG,IAAI;gCACX;4BACF;wBACF;oBACF;AACA,oBAAA,IAAI,IAAI;AAAE,wBAAA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBACzB;YACF;QACF;IACF;;IAGA,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,KAAK,GAAa,EAAE;;AAG1B,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,QAAA,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAAE,YAAA,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAAE;QACpD,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;QAAE;IACzD;AACA,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,QAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;QAAE;QACvD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;AAAE,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;QAAE;IACzD;;IAGA,IAAI,IAAI,GAAG,CAAC;AACZ,IAAA,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE;AAC1B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACzB,QAAA,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;AACvB,QAAA,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAU,EAAE;AAClE,YAAA,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;AACjB,YAAA,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;AACjB,YAAA,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;gBAAE;AAC5C,YAAA,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;YACtB,IAAI,OAAO,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;gBAAE;AACjC,YAAA,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;AACf,YAAA,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAChB;IACF;;AAGA,IAAA,MAAM,WAAW,GAAG,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI;AAExE,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,QAAA,IAAI,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;QAG/B,IAAI,aAAa,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;AAClC,YAAA,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,CAAC;AACjD,YAAA,KAAK,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,EAAE,IAAI,aAAa,EAAE,EAAE,EAAE,EAAE;AACvD,gBAAA,KAAK,IAAI,EAAE,GAAG,CAAC,aAAa,EAAE,EAAE,IAAI,aAAa,EAAE,EAAE,EAAE,EAAE;AACvD,oBAAA,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;AACjB,oBAAA,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;AACjB,oBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;wBAC1C,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE;4BACxB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;4BAC3B,IAAI,CAAC,GAAG,SAAS;gCAAE,SAAS,GAAG,CAAC;wBAClC;oBACF;gBACF;YACF;AACA,YAAA,IAAI,SAAS,IAAI,aAAa,GAAG,aAAa,EAAE;gBAC9C,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,aAAa;YAC9C;QACF;AAEA,QAAA,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;QAChB,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,EAAE,CAAC,GAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AAC1E,YAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QAChF;aAAO;AACL,YAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,QAAQ,CAAC,GAAW,EAAA;IAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAC9B,IAAA,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChG;AAEA;;AAEG;AACG,SAAU,YAAY,CAAC,MAAiB,EAAE,OAAuB,EAAA;AACrE,IAAA,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO;AAClC,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK;AACvB,IAAA,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM;AACxB,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;AACrB,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK;IACrB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC;AACpC,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI;AAC3B,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI;;AAG3B,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC;IACZ,SAAS,OAAO,CAAC,CAAS,EAAA;QACxB,IAAI,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAAE,YAAA,OAAO,CAAC;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC;QACvB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,CAAC;IAC9D;;AAGA,IAAA,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;QAC9B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG;AACnC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AAE9B,QAAA,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;YAC9B,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG;AACnC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC;AAE9B,YAAA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC;AACzC,YAAA,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;gBAClC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;AAC3B,gBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC5C,gBAAA,KAAK,IAAI,EAAE,GAAG,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,EAAE;oBAClC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;AAC3B,oBAAA,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;AACjB,oBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7B,oBAAA,CAAC,IAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC;oBACpB,CAAC,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;oBACxB,CAAC,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;oBACxB,EAAE,IAAI,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC;oBACzB,IAAI,IAAI,CAAC;gBACX;YACF;YAEA,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;AAC7B,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;gBACZ,OAAO,CAAC,EAAE,CAAC,GAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtD,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtD,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;gBACtD,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;YACzD;QACF;IACF;;AAGA,IAAA,IAAI,OAAO,GAAG,CAAC,EAAE;QACf,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;;AAE7C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;AAC3B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,oBAAA,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAChB,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACxB,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACxB,wBAAA,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,wBAAA,OAAO,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;wBACnB,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IACjB,CAAC;gBACP;YACF;QACF;;AAEA,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;AAC1C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,gBAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC;gBAC9E,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACpD;QACF;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;;AAEG;AACG,SAAU,YAAY,CAAC,MAAiB,EAAE,OAAuB,EAAA;IACrE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,eAAe,EAAE,GAAG,OAAO;AACjE,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK;AACtB,IAAA,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM;AACvB,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtE,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI;AAExB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACpD,IAAA,MAAM,UAAU,GAAG,MAAM,GAAG,GAAG;IAC/B,MAAM,UAAU,GAAG,CAAC,CAAC,GAAG,kBAAkB,IAAI,GAAG,GAAG,EAAE;AAEtD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC1B,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC;AAE1C,YAAA,KAAK,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,EAAE,EAAE;AACzC,gBAAA,KAAK,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,EAAE,EAAE,EAAE;AACzC,oBAAA,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;AACjB,oBAAA,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE;AACjB,oBAAA,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;wBAAE;oBAE5C,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAC5B,oBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;oBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;;AAGvF,oBAAA,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACrE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACnF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACxC,wBAAA,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC;wBAChD,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CACjD;AACD,oBAAA,MAAM,SAAS,GAAG,OAAO,GAAG,eAAe,GAAG,UAAU,IAAI,CAAC,GAAG,eAAe,CAAC;oBAChF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;AAEjF,oBAAA,MAAM,MAAM,GAAG,QAAQ,GAAG,MAAM;oBAChC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM;oBAChC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM;oBACpC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM;oBACpC,IAAI,IAAI,MAAM;gBAChB;YACF;AAEA,YAAA,IAAI,IAAI,GAAG,CAAC,EAAE;AACZ,gBAAA,IAAI,CAAC,EAAE,CAAC,GAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AACtC,gBAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;AACtC,gBAAA,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YACxC;QACF;IACF;AAEA,IAAA,OAAO,MAAM;AACf;AAEA;AAEM,SAAU,UAAU,CAAC,WAA6B,EAAA;IACtD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAAa,UAAU,CAAC;IACpE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,cAAQ,CAA4B,IAAI,CAAC;AAE7E,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAkB;QACtE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG;AACxD,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAA0B;AAC9E,QAAA,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,gBAAgB,EAAE,IAAI;AAC1F,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAiB;QACnE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG;AAC1C,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAiB;QACnE,QAAQ,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG;AAC7D,KAAA,CAAC;AAEF,IAAA,MAAM,OAAO,GAAGC,iBAAW,CAAC,YAA+C;AACzE,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,IAAI;QAC7B,eAAe,CAAC,IAAI,CAAC;AAErB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;AAC/B,QAAA,IAAI,SAAoB;AAExB,QAAA,IAAI;YACF,QAAQ,UAAU;AAChB,gBAAA,KAAK,UAAU;AACb,oBAAA,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC;oBACtD;AACF,gBAAA,KAAK,mBAAmB;AACtB,oBAAA,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,eAAe,CAAC;oBAC1D;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC;oBACrD;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,SAAS,GAAG,YAAY,CAAC,WAAW,EAAE,cAAc,CAAC;oBACrD;AACF,gBAAA;AACE,oBAAA,OAAO,IAAI;;AAGf,YAAA,MAAM,MAAM,GAAuB;gBACjC,SAAS;AACT,gBAAA,gBAAgB,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK;AAC3C,gBAAA,IAAI,EAAE,UAAU;aACjB;YACD,aAAa,CAAC,MAAM,CAAC;AACrB,YAAA,OAAO,MAAM;QACf;gBAAU;YACR,eAAe,CAAC,KAAK,CAAC;QACxB;AACF,IAAA,CAAC,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IAE/F,OAAO;AACL,QAAA,UAAU,EAAE,aAAa;AACzB,QAAA,eAAe,EAAE,kBAAkB;AACnC,QAAA,eAAe,EAAE,kBAAkB;AACnC,QAAA,cAAc,EAAE,iBAAiB;AACjC,QAAA,cAAc,EAAE,iBAAiB;QACjC,OAAO,EAAE,YAAY,EAAE,UAAU;KAClC;AACH;AAEA;AAEA,MAAM,WAAW,GAA+B;AAC9C,IAAA,QAAQ,EAAE,kBAAkB;AAC5B,IAAA,mBAAmB,EAAE,sBAAsB;AAC3C,IAAA,OAAO,EAAE,qBAAqB;AAC9B,IAAA,OAAO,EAAE,YAAY;CACtB;AAEM,MAAM,WAAW,GAA+B,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,KAAI;;AACnG,IAAA,MAAM,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC;AAElC,IAAA,MAAM,aAAa,GAAG,YAAW;AAC/B,QAAA,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;QACjC,IAAI,MAAM,IAAI,QAAQ;YAAE,QAAQ,CAAC,MAAM,CAAC;AAC1C,IAAA,CAAC;AAED,IAAA,QACEC,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,CAAA,cAAA,EAAiB,SAAS,CAAA,CAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAA,QAAA,EAAA,CAC5FC,cAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,CAA4B,EAG5BA,wBAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YACrD,MAAM,CAAC,OAAO,CAAC,WAAW,CAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MACxEA,cAAA,CAAA,QAAA,EAAA,EAAkB,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,MAAM,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EAClE,KAAK,EAAE;AACL,wBAAA,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAC7E,wBAAA,MAAM,EAAE,kCAAkC;AAC1C,wBAAA,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,GAAG,wBAAwB,GAAG,aAAa;AAC5E,wBAAA,KAAK,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,GAAG,MAAM,GAAG,SAAS;AACjD,wBAAA,QAAQ,EAAE,GAAG;qBACd,EAAA,QAAA,EACA,KAAK,EAAA,EARK,GAAG,CASP,CACV,CAAC,EAAA,CACE,EAGL,EAAE,CAAC,UAAU,KAAK,UAAU,KAC3BD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,aACrCA,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAmB,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EACxDC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EACjF,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAC7F,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,CAAA,EAAA,CACxB,EACRD,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAoB,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAC1DC,0BAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EACjF,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAC9F,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACxB,EACRD,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EACEA,eAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,WAAW,EAC3C,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,KAAoC,EAAE,CAAC,EAC7H,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACxBC,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,EAAA,QAAA,EAAA,MAAA,EAAA,CAAc,EAClCA,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,SAAS,EAAA,QAAA,EAAA,SAAA,EAAA,CAAiB,EACxCA,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAC,MAAM,qBAAc,CAAA,EAAA,CAC3B,CAAA,EAAA,CACH,CAAA,EAAA,CACJ,CACP,EAEA,EAAE,CAAC,UAAU,KAAK,mBAAmB,KACpCD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACrCA,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAmB,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EACxDC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EACrF,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAC7F,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACxB,EACRD,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAoB,EAAE,CAAC,eAAe,CAAC,UAAU,EAC/CC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,EAChF,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAC9F,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAI,CAAA,EAAA,CACxB,EACRD,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAiB,EAAE,CAAC,eAAe,CAAC,aAAa,EAAA,IAAA,EAC/CC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,aAAa,EACnF,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EACjG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACxB,EACRD,2BAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA,QAAA,EAAA,CAAA,aAAA,EAE7DC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,CAAA,EAAA,GAAA,EAAE,CAAC,eAAe,CAAC,gBAAgB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,SAAS,EACzE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAA,CAAI,EACzGA,cAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,EAC3G,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAA,QAAA,EAAA,aAAA,EAAA,CAAsB,CAAA,EAAA,CACzC,CAAA,EAAA,CACJ,CACP,EAEA,EAAE,CAAC,UAAU,KAAK,SAAS,KAC1BD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACrCA,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,QAAA,EACEA,eAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAkB,EAAE,CAAC,EACpG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,CACxBC,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,CAAC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAa,EAC7BA,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,CAAC,mBAAa,EAC7BA,cAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,CAAC,EAAA,QAAA,EAAA,IAAA,EAAA,CAAa,CAAA,EAAA,CACtB,CAAA,EAAA,CACH,EACRD,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAiB,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EACnDC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAC9E,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EACzF,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACxB,CAAA,EAAA,CACJ,CACP,EAEA,EAAE,CAAC,UAAU,KAAK,SAAS,KAC1BD,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,EAAA,QAAA,EAAA,CACrCA,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,EAAkB,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EACrDC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,QAAQ,EAC/E,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAC1F,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACxB,EACRD,eAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAgB,EAAE,CAAC,cAAc,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAC7DC,cAAA,CAAA,OAAA,EAAA,EAAO,IAAI,EAAC,OAAO,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,kBAAkB,EACzF,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EACpG,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAA,CAAI,CAAA,EAAA,CACxB,CAAA,EAAA,CACJ,CACP,EAGDA,cAAA,CAAA,QAAA,EAAA,EAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,aAAa,EAC1C,QAAQ,EAAE,EAAE,CAAC,YAAY,IAAI,CAAC,WAAW,EACzC,KAAK,EAAE;oBACL,UAAU,EAAE,EAAE,CAAC,YAAY,GAAG,SAAS,GAAG,wBAAwB;AAClE,oBAAA,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU;oBACnE,MAAM,EAAE,EAAE,CAAC,YAAY,GAAG,MAAM,GAAG,SAAS;AAC7C,iBAAA,EAAA,QAAA,EACA,EAAE,CAAC,YAAY,GAAG,eAAe,GAAG,MAAM,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA,CAAE,EAAA,CAChE,EAER,EAAE,CAAC,UAAU,KACZD,yBAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAAA,CAAA,eAAA,EAC5C,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAA,IAAA,EACtD,EAAE,CAAC,UAAU,KAAK,SAAS,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAA,CAAA,EAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAA,CAAE,CAAA,EAAA,CACnG,CACP,CAAA,EAAA,CACG;AAEV;;;;;;;;;"}
|
|
@@ -8,7 +8,7 @@ var PhotoEditorCanvas = require('./PhotoEditorCanvas.js');
|
|
|
8
8
|
var PhotoEditor_module = require('./PhotoEditor.module.css.js');
|
|
9
9
|
|
|
10
10
|
// ── Component ──
|
|
11
|
-
function
|
|
11
|
+
function NicePhotoEditor(props) {
|
|
12
12
|
const api = usePhotoEditor.usePhotoEditor(props);
|
|
13
13
|
if (api.loading || !api.image) {
|
|
14
14
|
return (jsxRuntime.jsx("div", { className: PhotoEditor_module.loadingWrap, children: jsxRuntime.jsx("i", { className: "fa fa-spinner fa-spin fa-2x" }) }));
|
|
@@ -16,5 +16,5 @@ function PhotoEditor(props) {
|
|
|
16
16
|
return (jsxRuntime.jsxs("div", { className: PhotoEditor_module.wrapper, children: [jsxRuntime.jsx(PhotoEditorToolbar, { api: api }), jsxRuntime.jsxs("div", { className: PhotoEditor_module.mainContent, children: [jsxRuntime.jsx(PhotoEditorLeftPanel, { api: api }), jsxRuntime.jsx(PhotoEditorCanvas, { api: api })] })] }));
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
module.exports =
|
|
19
|
+
module.exports = NicePhotoEditor;
|
|
20
20
|
//# sourceMappingURL=PhotoEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhotoEditor.js","sources":["../../../src/photo/PhotoEditor.tsx"],"sourcesContent":[null],"names":["usePhotoEditor","_jsx","cs","_jsxs"],"mappings":";;;;;;;;;AAaA;AAEc,SAAU,
|
|
1
|
+
{"version":3,"file":"PhotoEditor.js","sources":["../../../src/photo/PhotoEditor.tsx"],"sourcesContent":[null],"names":["usePhotoEditor","_jsx","cs","_jsxs"],"mappings":";;;;;;;;;AAaA;AAEc,SAAU,eAAe,CAAC,KAAuB,EAAA;AAC3D,IAAA,MAAM,GAAG,GAAGA,6BAAc,CAAC,KAAK,CAAC;IAEjC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC3B,QAAA,QACIC,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAEC,kBAAE,CAAC,WAAW,EAAA,QAAA,EAC1BD,cAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,6BAA6B,EAAA,CAAG,EAAA,CAC3C;IAEd;AAEA,IAAA,QACIE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,kBAAE,CAAC,OAAO,EAAA,QAAA,EAAA,CACtBD,cAAA,CAAC,kBAAkB,EAAA,EAAC,GAAG,EAAE,GAAG,GAAI,EAChCE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAED,kBAAE,CAAC,WAAW,aAC1BD,cAAA,CAAC,oBAAoB,IAAC,GAAG,EAAE,GAAG,EAAA,CAAI,EAClCA,eAAC,iBAAiB,EAAA,EAAC,GAAG,EAAE,GAAG,GAAI,CAAA,EAAA,CAC7B,CAAA,EAAA,CACJ;AAEd;;;;"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
4
5
|
var PixelEditor_module = require('./PixelEditor.module.css.js');
|
|
6
|
+
var index = require('../ui/dist/index.js');
|
|
5
7
|
var usePixelEditor = require('./usePixelEditor.js');
|
|
6
8
|
var PixelEditorMenuBar = require('./PixelEditorMenuBar.js');
|
|
7
9
|
var PixelEditorToolbar = require('./PixelEditorToolbar.js');
|
|
@@ -9,20 +11,29 @@ var PixelEditorCanvas = require('./PixelEditorCanvas.js');
|
|
|
9
11
|
var PixelEditorRightPanel = require('./PixelEditorRightPanel.js');
|
|
10
12
|
var PixelEditorTimeline = require('./PixelEditorTimeline.js');
|
|
11
13
|
var PixelEditorStatusBar = require('./PixelEditorStatusBar.js');
|
|
14
|
+
var SpriteGeneratorPanel = require('./SpriteGeneratorPanel.js');
|
|
12
15
|
|
|
13
|
-
const
|
|
16
|
+
const NicePixelEditor = ({ initialWidth = 64, initialHeight = 64, className, onSaveToLibrary, }) => {
|
|
14
17
|
const api = usePixelEditor.usePixelEditor({ initialWidth, initialHeight, onSaveToLibrary });
|
|
18
|
+
const [showGenerator, setShowGenerator] = React.useState(false);
|
|
19
|
+
const handleGeneratorSend = React.useCallback((imageData) => {
|
|
20
|
+
var _a;
|
|
21
|
+
(_a = api.importImageData) === null || _a === void 0 ? void 0 : _a.call(api, imageData);
|
|
22
|
+
}, [api]);
|
|
15
23
|
return (jsxRuntime.jsxs("div", { className: `${PixelEditor_module.root} ${className || ""}`, children: [jsxRuntime.jsx("input", { ref: api.fInp, type: "file", accept: ".ase,.aseprite,.png,.jpg,.jpeg,.gif,.bmp,.webp,.svg,.tga,.ico,.tiff,.tif,.avif", style: { display: "none" }, onChange: (e) => {
|
|
16
24
|
var _a;
|
|
17
25
|
const f = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
|
|
18
26
|
if (f)
|
|
19
27
|
api.openFile(f);
|
|
20
28
|
e.target.value = "";
|
|
21
|
-
} }), jsxRuntime.jsx(PixelEditorMenuBar, { api: api, hasOnSaveToLibrary: !!onSaveToLibrary }), jsxRuntime.jsxs("div", { className: PixelEditor_module.mainArea, children: [jsxRuntime.jsx(PixelEditorToolbar, { api: api }), jsxRuntime.jsx(PixelEditorCanvas, { api: api }), jsxRuntime.jsx(PixelEditorRightPanel, { api: api })] }), jsxRuntime.jsx(PixelEditorTimeline, { api: api }), jsxRuntime.jsx(PixelEditorStatusBar, { api: api }),
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
} }), jsxRuntime.jsx(PixelEditorMenuBar, { api: api, hasOnSaveToLibrary: !!onSaveToLibrary, onOpenGenerator: () => setShowGenerator(true) }), jsxRuntime.jsxs("div", { className: PixelEditor_module.mainArea, children: [jsxRuntime.jsx(PixelEditorToolbar, { api: api }), jsxRuntime.jsx(PixelEditorCanvas, { api: api }), jsxRuntime.jsx(PixelEditorRightPanel, { api: api })] }), jsxRuntime.jsx(PixelEditorTimeline, { api: api }), jsxRuntime.jsx(PixelEditorStatusBar, { api: api }), showGenerator && (jsxRuntime.jsx(SpriteGeneratorPanel, { onSendToCanvas: handleGeneratorSend, onClose: () => setShowGenerator(false) })), jsxRuntime.jsxs(index.NiceModal, { open: api.dlgNew, onClose: () => api.setDlgNew(false), title: "New Document", children: [jsxRuntime.jsx("label", { children: "Width (px)" }), jsxRuntime.jsx(index.NiceNumberInput, { min: 1, max: 4096, value: api.nw, onChange: (val) => api.setNw(val !== null && val !== void 0 ? val : 64), "aria-label": "Document width" }), jsxRuntime.jsx("label", { children: "Height (px)" }), jsxRuntime.jsx(index.NiceNumberInput, { min: 1, max: 4096, value: api.nh, onChange: (val) => api.setNh(val !== null && val !== void 0 ? val : 64), "aria-label": "Document height" }), jsxRuntime.jsx("div", { style: { display: "flex", gap: 4, flexWrap: "wrap", marginTop: 8 }, children: [
|
|
30
|
+
[16, 16], [32, 32], [48, 48], [64, 64], [128, 128],
|
|
31
|
+
[256, 256], [16, 32], [32, 64], [48, 16], [64, 32],
|
|
32
|
+
].map(([w, h]) => (jsxRuntime.jsxs(index.NiceButton, { className: PixelEditor_module.btnSecondary, variant: "ghost", size: "sm", style: { fontSize: 10, padding: "2px 6px" }, onClick: () => { api.setNw(w); api.setNh(h); }, children: [w, "x", h] }, `${w}x${h}`))) }), jsxRuntime.jsxs("div", { className: PixelEditor_module.dialogActions, children: [jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.btnSecondary, variant: "ghost", onClick: () => api.setDlgNew(false), children: "Cancel" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.btnPrimary, variant: "primary", onClick: () => api.newDoc(api.nw, api.nh), children: "Create" })] })] })] }));
|
|
25
33
|
};
|
|
34
|
+
/** @deprecated Use NicePixelEditor */
|
|
35
|
+
const PixelEditor = NicePixelEditor;
|
|
26
36
|
|
|
37
|
+
exports.NicePixelEditor = NicePixelEditor;
|
|
27
38
|
exports.PixelEditor = PixelEditor;
|
|
28
39
|
//# sourceMappingURL=PixelEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PixelEditor.js","sources":["../../../src/pixel/PixelEditor.tsx"],"sourcesContent":[null],"names":["usePixelEditor","_jsxs","styles","_jsx"],"mappings":"
|
|
1
|
+
{"version":3,"file":"PixelEditor.js","sources":["../../../src/pixel/PixelEditor.tsx"],"sourcesContent":[null],"names":["usePixelEditor","useState","useCallback","_jsxs","styles","_jsx","NiceModal","NiceNumberInput","NiceButton"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var styles = {"root":"PixelEditor-module_root__3gidG","menuBar":"PixelEditor-module_menuBar__8JFld","menuBtn":"PixelEditor-module_menuBtn__w-GQC","menuSep":"PixelEditor-module_menuSep__pNZsR","toolbar":"PixelEditor-module_toolbar__paCGq","toolBtn":"PixelEditor-module_toolBtn__wD1Kj","toolBtnActive":"PixelEditor-module_toolBtnActive__R51U0","mainArea":"PixelEditor-module_mainArea__Z0x6l","canvasContainer":"PixelEditor-module_canvasContainer__8z2AY","rightPanel":"PixelEditor-module_rightPanel__ZjrCh","panelSection":"PixelEditor-module_panelSection__3l225","panelTitle":"PixelEditor-module_panelTitle__vYyeO","layerItem":"PixelEditor-module_layerItem__J-gtn","layerItemActive":"PixelEditor-module_layerItemActive__yPt29","layerVis":"PixelEditor-module_layerVis__Uj7n2","layerName":"PixelEditor-module_layerName__HovwJ","layerOpacity":"PixelEditor-module_layerOpacity__qmWvu","paletteGrid":"PixelEditor-module_paletteGrid__knY-n","paletteSwatch":"PixelEditor-module_paletteSwatch__MUbha","paletteSwatchActive":"PixelEditor-module_paletteSwatchActive__wDR4T","bottomPanel":"PixelEditor-module_bottomPanel__rviLF","timelineControls":"PixelEditor-module_timelineControls__Laroq","timelineFrames":"PixelEditor-module_timelineFrames__dw06F","frameThumb":"PixelEditor-module_frameThumb__2E9mG","frameThumbActive":"PixelEditor-module_frameThumbActive__Z0eK4","frameNum":"PixelEditor-module_frameNum__PoGQC","statusBar":"PixelEditor-module_statusBar__QnphD","
|
|
3
|
+
var styles = {"root":"PixelEditor-module_root__3gidG","menuBar":"PixelEditor-module_menuBar__8JFld","menuBtn":"PixelEditor-module_menuBtn__w-GQC","menuSep":"PixelEditor-module_menuSep__pNZsR","toolbar":"PixelEditor-module_toolbar__paCGq","toolBtn":"PixelEditor-module_toolBtn__wD1Kj","toolBtnActive":"PixelEditor-module_toolBtnActive__R51U0","mainArea":"PixelEditor-module_mainArea__Z0x6l","canvasContainer":"PixelEditor-module_canvasContainer__8z2AY","rightPanel":"PixelEditor-module_rightPanel__ZjrCh","panelSection":"PixelEditor-module_panelSection__3l225","panelTitle":"PixelEditor-module_panelTitle__vYyeO","layerItem":"PixelEditor-module_layerItem__J-gtn","layerItemActive":"PixelEditor-module_layerItemActive__yPt29","layerVis":"PixelEditor-module_layerVis__Uj7n2","layerName":"PixelEditor-module_layerName__HovwJ","layerOpacity":"PixelEditor-module_layerOpacity__qmWvu","paletteGrid":"PixelEditor-module_paletteGrid__knY-n","paletteSwatch":"PixelEditor-module_paletteSwatch__MUbha","paletteSwatchActive":"PixelEditor-module_paletteSwatchActive__wDR4T","bottomPanel":"PixelEditor-module_bottomPanel__rviLF","timelineControls":"PixelEditor-module_timelineControls__Laroq","timelineFrames":"PixelEditor-module_timelineFrames__dw06F","frameThumb":"PixelEditor-module_frameThumb__2E9mG","frameThumbActive":"PixelEditor-module_frameThumbActive__Z0eK4","frameNum":"PixelEditor-module_frameNum__PoGQC","statusBar":"PixelEditor-module_statusBar__QnphD","dialogActions":"PixelEditor-module_dialogActions__fOa7a","btnPrimary":"PixelEditor-module_btnPrimary__FYlTy","btnSecondary":"PixelEditor-module_btnSecondary__qLfyJ","brushSlider":"PixelEditor-module_brushSlider__UxQ38","toolSep":"PixelEditor-module_toolSep__YIu-E","toolGroup":"PixelEditor-module_toolGroup__xA2lN","miniBtn":"PixelEditor-module_miniBtn__tg5N0","miniBtnActive":"PixelEditor-module_miniBtnActive__gpveu","colorSwatches":"PixelEditor-module_colorSwatches__jFuRX","brushShapes":"PixelEditor-module_brushShapes__2bBfl","pressureToggles":"PixelEditor-module_pressureToggles__AITuh","checkLabel":"PixelEditor-module_checkLabel__-d-TA","hsvPicker":"PixelEditor-module_hsvPicker__0ERIh","layerLock":"PixelEditor-module_layerLock__xeWnc","layerNameInput":"PixelEditor-module_layerNameInput__ZiOKv","layerControls":"PixelEditor-module_layerControls__MrpXo","blendSelect":"PixelEditor-module_blendSelect__QCwns","layerOpSlider":"PixelEditor-module_layerOpSlider__Vw-qs","genPanel":"PixelEditor-module_genPanel__99Md8","genHeader":"PixelEditor-module_genHeader__xN4FZ","genTabs":"PixelEditor-module_genTabs__No5Za","genTabBtn":"PixelEditor-module_genTabBtn__e2VhB","genTabBtnActive":"PixelEditor-module_genTabBtnActive__Rt3jQ","genBody":"PixelEditor-module_genBody__MuiQy","genLeft":"PixelEditor-module_genLeft__JdEw6","genCenter":"PixelEditor-module_genCenter__c5X0S","genRight":"PixelEditor-module_genRight__qFz11","genPreviewWrap":"PixelEditor-module_genPreviewWrap__360F-","genPreviewCanvas":"PixelEditor-module_genPreviewCanvas__75Lw2","genDirGrid":"PixelEditor-module_genDirGrid__xjEp7","genRow":"PixelEditor-module_genRow__awCw9","genPresetGrid":"PixelEditor-module_genPresetGrid__f9XK6","genPresetBtn":"PixelEditor-module_genPresetBtn__5C2We","genPresetBtnActive":"PixelEditor-module_genPresetBtnActive__WAGew","genPartGrid":"PixelEditor-module_genPartGrid__l17oc","genColorSwatches":"PixelEditor-module_genColorSwatches__acI6q","genColorSwatch":"PixelEditor-module_genColorSwatch__JE8BO","genAssemblyItem":"PixelEditor-module_genAssemblyItem__zNL2P","genAssemblyName":"PixelEditor-module_genAssemblyName__GU-kr","genFooter":"PixelEditor-module_genFooter__WkyJp","btnIcon":"PixelEditor-module_btnIcon__O59l9","propSelect":"PixelEditor-module_propSelect__4P0Qi","propInput":"PixelEditor-module_propInput__Q-kr2"};
|
|
4
4
|
|
|
5
5
|
module.exports = styles;
|
|
6
6
|
//# sourceMappingURL=PixelEditor.module.css.js.map
|