@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.
Files changed (146) hide show
  1. package/CHANGELOG.md +147 -1
  2. package/dist/cjs/animation/AnimatedPerson.js +2 -2
  3. package/dist/cjs/animation/AnimatedPerson.js.map +1 -1
  4. package/dist/cjs/animation/AnimationEditor.js +11 -6
  5. package/dist/cjs/animation/AnimationEditor.js.map +1 -1
  6. package/dist/cjs/animation/Audience.js +4 -3
  7. package/dist/cjs/animation/Audience.js.map +1 -1
  8. package/dist/cjs/animation/BodyRenderer.js +5 -2
  9. package/dist/cjs/animation/BodyRenderer.js.map +1 -1
  10. package/dist/cjs/animation/rig/RigPlayer.js +2 -2
  11. package/dist/cjs/animation/rig/RigPlayer.js.map +1 -1
  12. package/dist/cjs/animation/rig/RiggedBody.js +2 -2
  13. package/dist/cjs/animation/rig/RiggedBody.js.map +1 -1
  14. package/dist/cjs/animation/shapes/heads.js +4 -1
  15. package/dist/cjs/animation/shapes/heads.js.map +1 -1
  16. package/dist/cjs/core/LocalUI.js +1 -1
  17. package/dist/cjs/core/NiceBrushEngine.js +446 -0
  18. package/dist/cjs/core/NiceBrushEngine.js.map +1 -0
  19. package/dist/cjs/core/yjsCollaboration.js +292 -0
  20. package/dist/cjs/core/yjsCollaboration.js.map +1 -0
  21. package/dist/cjs/font/NiceFontEditor.js +89 -85
  22. package/dist/cjs/font/NiceFontEditor.js.map +1 -1
  23. package/dist/cjs/font/fontFormatUtils.js +468 -0
  24. package/dist/cjs/font/fontFormatUtils.js.map +1 -0
  25. package/dist/cjs/game/GameAsset2dEditor.js +38 -24
  26. package/dist/cjs/game/GameAsset2dEditor.js.map +1 -1
  27. package/dist/cjs/icon/NiceIconEditor.js +218 -133
  28. package/dist/cjs/icon/NiceIconEditor.js.map +1 -1
  29. package/dist/cjs/index.js +83 -1
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/nice2dev-ui-graphics.css +1 -1
  32. package/dist/cjs/photo/NiceAITools.js +446 -0
  33. package/dist/cjs/photo/NiceAITools.js.map +1 -0
  34. package/dist/cjs/photo/PhotoEditor.js +2 -2
  35. package/dist/cjs/photo/PhotoEditor.js.map +1 -1
  36. package/dist/cjs/pixel/PixelEditor.js +16 -5
  37. package/dist/cjs/pixel/PixelEditor.js.map +1 -1
  38. package/dist/cjs/pixel/PixelEditor.module.css.js +1 -1
  39. package/dist/cjs/pixel/PixelEditorMenuBar.js +2 -1
  40. package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -1
  41. package/dist/cjs/pixel/PixelEditorRightPanel.js +3 -2
  42. package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -1
  43. package/dist/cjs/pixel/PixelEditorTimeline.js +2 -1
  44. package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -1
  45. package/dist/cjs/pixel/PixelEditorToolbar.js +2 -1
  46. package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -1
  47. package/dist/cjs/pixel/SpriteGeneratorPanel.js +224 -0
  48. package/dist/cjs/pixel/SpriteGeneratorPanel.js.map +1 -0
  49. package/dist/cjs/pixel/animalGeneratorPresets.js +654 -0
  50. package/dist/cjs/pixel/animalGeneratorPresets.js.map +1 -0
  51. package/dist/cjs/pixel/buildingGeneratorPresets.js +573 -0
  52. package/dist/cjs/pixel/buildingGeneratorPresets.js.map +1 -0
  53. package/dist/cjs/pixel/characterGeneratorPresets.js +563 -0
  54. package/dist/cjs/pixel/characterGeneratorPresets.js.map +1 -0
  55. package/dist/cjs/pixel/spriteGeneratorCore.js +297 -0
  56. package/dist/cjs/pixel/spriteGeneratorCore.js.map +1 -0
  57. package/dist/cjs/pixel/usePixelEditor.js +16 -0
  58. package/dist/cjs/pixel/usePixelEditor.js.map +1 -1
  59. package/dist/cjs/texture/Nice3DTexturePainter.js +123 -79
  60. package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -1
  61. package/dist/cjs/ui/NiceUIDesigner.js +175 -62
  62. package/dist/cjs/ui/NiceUIDesigner.js.map +1 -1
  63. package/dist/cjs/ui/dist/index.js +50089 -0
  64. package/dist/cjs/ui/dist/index.js.map +1 -0
  65. package/dist/cjs/vector/NiceSvgToCode.js +427 -0
  66. package/dist/cjs/vector/NiceSvgToCode.js.map +1 -0
  67. package/dist/cjs/vector/VectorEditor.js +7 -3
  68. package/dist/cjs/vector/VectorEditor.js.map +1 -1
  69. package/dist/cjs/vector/VectorEditor.module.css.js +1 -1
  70. package/dist/cjs/vector/VectorEditorMenuBar.js +5 -1
  71. package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -1
  72. package/dist/cjs/vector/VectorEditorRightPanel.js +23 -19
  73. package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -1
  74. package/dist/esm/animation/AnimatedPerson.js +2 -2
  75. package/dist/esm/animation/AnimatedPerson.js.map +1 -1
  76. package/dist/esm/animation/AnimationEditor.js +12 -8
  77. package/dist/esm/animation/AnimationEditor.js.map +1 -1
  78. package/dist/esm/animation/Audience.js +5 -4
  79. package/dist/esm/animation/Audience.js.map +1 -1
  80. package/dist/esm/animation/BodyRenderer.js +4 -2
  81. package/dist/esm/animation/BodyRenderer.js.map +1 -1
  82. package/dist/esm/animation/rig/RigPlayer.js +4 -4
  83. package/dist/esm/animation/rig/RigPlayer.js.map +1 -1
  84. package/dist/esm/animation/rig/RiggedBody.js +2 -2
  85. package/dist/esm/animation/rig/RiggedBody.js.map +1 -1
  86. package/dist/esm/animation/shapes/heads.js +4 -2
  87. package/dist/esm/animation/shapes/heads.js.map +1 -1
  88. package/dist/esm/core/LocalUI.js +4 -4
  89. package/dist/esm/core/NiceBrushEngine.js +442 -0
  90. package/dist/esm/core/NiceBrushEngine.js.map +1 -0
  91. package/dist/esm/core/yjsCollaboration.js +283 -0
  92. package/dist/esm/core/yjsCollaboration.js.map +1 -0
  93. package/dist/esm/font/NiceFontEditor.js +89 -85
  94. package/dist/esm/font/NiceFontEditor.js.map +1 -1
  95. package/dist/esm/font/fontFormatUtils.js +461 -0
  96. package/dist/esm/font/fontFormatUtils.js.map +1 -0
  97. package/dist/esm/game/GameAsset2dEditor.js +38 -25
  98. package/dist/esm/game/GameAsset2dEditor.js.map +1 -1
  99. package/dist/esm/icon/NiceIconEditor.js +218 -133
  100. package/dist/esm/icon/NiceIconEditor.js.map +1 -1
  101. package/dist/esm/index.js +21 -11
  102. package/dist/esm/index.js.map +1 -1
  103. package/dist/esm/nice2dev-ui-graphics.css +1 -1
  104. package/dist/esm/photo/NiceAITools.js +439 -0
  105. package/dist/esm/photo/NiceAITools.js.map +1 -0
  106. package/dist/esm/photo/PhotoEditor.js +2 -2
  107. package/dist/esm/photo/PhotoEditor.js.map +1 -1
  108. package/dist/esm/pixel/PixelEditor.js +16 -6
  109. package/dist/esm/pixel/PixelEditor.js.map +1 -1
  110. package/dist/esm/pixel/PixelEditor.module.css.js +1 -1
  111. package/dist/esm/pixel/PixelEditorMenuBar.js +2 -1
  112. package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -1
  113. package/dist/esm/pixel/PixelEditorRightPanel.js +3 -2
  114. package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -1
  115. package/dist/esm/pixel/PixelEditorTimeline.js +2 -1
  116. package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -1
  117. package/dist/esm/pixel/PixelEditorToolbar.js +2 -1
  118. package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -1
  119. package/dist/esm/pixel/SpriteGeneratorPanel.js +222 -0
  120. package/dist/esm/pixel/SpriteGeneratorPanel.js.map +1 -0
  121. package/dist/esm/pixel/animalGeneratorPresets.js +647 -0
  122. package/dist/esm/pixel/animalGeneratorPresets.js.map +1 -0
  123. package/dist/esm/pixel/buildingGeneratorPresets.js +566 -0
  124. package/dist/esm/pixel/buildingGeneratorPresets.js.map +1 -0
  125. package/dist/esm/pixel/characterGeneratorPresets.js +556 -0
  126. package/dist/esm/pixel/characterGeneratorPresets.js.map +1 -0
  127. package/dist/esm/pixel/spriteGeneratorCore.js +279 -0
  128. package/dist/esm/pixel/spriteGeneratorCore.js.map +1 -0
  129. package/dist/esm/pixel/usePixelEditor.js +16 -0
  130. package/dist/esm/pixel/usePixelEditor.js.map +1 -1
  131. package/dist/esm/texture/Nice3DTexturePainter.js +123 -79
  132. package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -1
  133. package/dist/esm/ui/NiceUIDesigner.js +175 -62
  134. package/dist/esm/ui/NiceUIDesigner.js.map +1 -1
  135. package/dist/esm/ui/dist/index.js +49686 -0
  136. package/dist/esm/ui/dist/index.js.map +1 -0
  137. package/dist/esm/vector/NiceSvgToCode.js +423 -0
  138. package/dist/esm/vector/NiceSvgToCode.js.map +1 -0
  139. package/dist/esm/vector/VectorEditor.js +7 -4
  140. package/dist/esm/vector/VectorEditor.js.map +1 -1
  141. package/dist/esm/vector/VectorEditor.module.css.js +1 -1
  142. package/dist/esm/vector/VectorEditorMenuBar.js +5 -1
  143. package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -1
  144. package/dist/esm/vector/VectorEditorRightPanel.js +23 -19
  145. package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -1
  146. 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":"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"}
@@ -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 PhotoEditor(props) {
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 = PhotoEditor;
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,WAAW,CAAC,KAAuB,EAAA;AACvD,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
+ {"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 PixelEditor = ({ initialWidth = 64, initialHeight = 64, className, onSaveToLibrary, }) => {
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 }), api.dlgNew && (jsxRuntime.jsx("div", { className: PixelEditor_module.dialogOverlay, onClick: () => api.setDlgNew(false), children: jsxRuntime.jsxs("div", { className: PixelEditor_module.dialog, onClick: (e) => e.stopPropagation(), children: [jsxRuntime.jsx("h3", { children: "New Document" }), jsxRuntime.jsx("label", { children: "Width (px)" }), jsxRuntime.jsx("input", { type: "number", min: 1, max: 4096, value: api.nw, onChange: (e) => api.setNw(+e.target.value || 64), "aria-label": "Document width" }), jsxRuntime.jsx("label", { children: "Height (px)" }), jsxRuntime.jsx("input", { type: "number", min: 1, max: 4096, value: api.nh, onChange: (e) => api.setNh(+e.target.value || 64), "aria-label": "Document height" }), jsxRuntime.jsx("div", { style: { display: "flex", gap: 4, flexWrap: "wrap", marginTop: 8 }, children: [
22
- [16, 16], [32, 32], [48, 48], [64, 64], [128, 128],
23
- [256, 256], [16, 32], [32, 64], [48, 16], [64, 32],
24
- ].map(([w, h]) => (jsxRuntime.jsxs("button", { className: PixelEditor_module.btnSecondary, 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("button", { className: PixelEditor_module.btnSecondary, onClick: () => api.setDlgNew(false), children: "Cancel" }), jsxRuntime.jsx("button", { className: PixelEditor_module.btnPrimary, onClick: () => api.newDoc(api.nw, api.nh), children: "Create" })] })] }) }))] }));
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":"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"}
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","dialogOverlay":"PixelEditor-module_dialogOverlay__IgyFy","dialog":"PixelEditor-module_dialog__OnkAG","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"};
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