@nice2dev/ui-graphics 1.0.0 → 1.0.2
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,222 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useRef, useEffect, useMemo, useCallback } from 'react';
|
|
3
|
+
import styles from './PixelEditor.module.css.js';
|
|
4
|
+
import { NiceModal as ko, NiceButton as Ee, NiceSelect as tn, NiceNumberInput as vi, NiceCheckbox as qi } from '../ui/dist/index.js';
|
|
5
|
+
import { getAllParts, assembleSprite, applyIsometricProjection, getPart, generateAllDirections, render8DirSpriteSheet, getPartsByCategory, ALL_DIRECTIONS } from './spriteGeneratorCore.js';
|
|
6
|
+
import { CHARACTER_PRESETS, initCharacterParts, SKIN_PALETTES, HAIR_PALETTES, CLOTHING_PALETTES } from './characterGeneratorPresets.js';
|
|
7
|
+
import { BUILDING_PRESETS, assembleBuildingFromConfig, initBuildingParts, WALL_PALETTES, ROOF_PALETTES } from './buildingGeneratorPresets.js';
|
|
8
|
+
import { ANIMAL_PRESETS, initAnimalParts, FUR_PALETTES } from './animalGeneratorPresets.js';
|
|
9
|
+
|
|
10
|
+
/* ════════════════════════════════════════════════════════════════
|
|
11
|
+
INITIALIZATION
|
|
12
|
+
════════════════════════════════════════════════════════════════ */
|
|
13
|
+
let _initialized = false;
|
|
14
|
+
function ensureInitialized() {
|
|
15
|
+
if (_initialized)
|
|
16
|
+
return;
|
|
17
|
+
_initialized = true;
|
|
18
|
+
initCharacterParts();
|
|
19
|
+
initBuildingParts();
|
|
20
|
+
initAnimalParts();
|
|
21
|
+
}
|
|
22
|
+
/* ════════════════════════════════════════════════════════════════
|
|
23
|
+
HELPERS
|
|
24
|
+
════════════════════════════════════════════════════════════════ */
|
|
25
|
+
function palettesToOptions(palettes) {
|
|
26
|
+
return Object.entries(palettes).map(([id, colors]) => ({
|
|
27
|
+
id,
|
|
28
|
+
name: id.replace(/_/g, ' ').replace(/\b\w/g, c => c.toUpperCase()),
|
|
29
|
+
colors,
|
|
30
|
+
}));
|
|
31
|
+
}
|
|
32
|
+
const CHAR_CATEGORIES = [
|
|
33
|
+
'head', 'hair', 'face', 'torso', 'arm', 'leg', 'hat', 'helmet', 'armor', 'cape', 'weapon', 'shield',
|
|
34
|
+
];
|
|
35
|
+
const BUILDING_CATEGORIES = [
|
|
36
|
+
'foundation', 'wall', 'floor', 'roof', 'door', 'window', 'chimney', 'decoration',
|
|
37
|
+
];
|
|
38
|
+
const ANIMAL_CATEGORIES = [
|
|
39
|
+
'animalHead', 'animalBody', 'animalLeg', 'animalTail', 'animalWing', 'animalMane',
|
|
40
|
+
];
|
|
41
|
+
const NiceSpriteGeneratorPanel = ({ onSendToCanvas, onClose, }) => {
|
|
42
|
+
ensureInitialized();
|
|
43
|
+
/* ── State ── */
|
|
44
|
+
const [tab, setTab] = useState('character');
|
|
45
|
+
const [selectedPresetIdx, setSelectedPresetIdx] = useState(0);
|
|
46
|
+
const [selectedParts, setSelectedParts] = useState([]);
|
|
47
|
+
const [canvasW, setCanvasW] = useState(32);
|
|
48
|
+
const [canvasH, setCanvasH] = useState(32);
|
|
49
|
+
const [direction, setDirection] = useState('S');
|
|
50
|
+
const [projection, setProjection] = useState('topDown');
|
|
51
|
+
const [generate8Dir, setGenerate8Dir] = useState(false);
|
|
52
|
+
// Color overrides
|
|
53
|
+
const [skinPalette, setSkinPalette] = useState('light');
|
|
54
|
+
const [hairPalette, setHairPalette] = useState('brown');
|
|
55
|
+
const [clothPalette, setClothPalette] = useState('leather');
|
|
56
|
+
const [furPalette, setFurPalette] = useState('orange');
|
|
57
|
+
const [wallPalette, setWallPalette] = useState('grey_stone');
|
|
58
|
+
const [roofPalette, setRoofPalette] = useState('terracotta');
|
|
59
|
+
const previewRef = useRef(null);
|
|
60
|
+
const partsMapRef = useRef(new Map());
|
|
61
|
+
/* ── Build parts map ── */
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
const map = new Map();
|
|
64
|
+
for (const p of getAllParts())
|
|
65
|
+
map.set(p.id, p);
|
|
66
|
+
partsMapRef.current = map;
|
|
67
|
+
}, []);
|
|
68
|
+
/* ── Get presets for current tab ── */
|
|
69
|
+
const presets = useMemo(() => {
|
|
70
|
+
switch (tab) {
|
|
71
|
+
case 'character': return CHARACTER_PRESETS;
|
|
72
|
+
case 'building': return BUILDING_PRESETS;
|
|
73
|
+
case 'animal': return ANIMAL_PRESETS;
|
|
74
|
+
}
|
|
75
|
+
}, [tab]);
|
|
76
|
+
/* ── Apply preset ── */
|
|
77
|
+
const applyPreset = useCallback((presetIdx) => {
|
|
78
|
+
setSelectedPresetIdx(presetIdx);
|
|
79
|
+
const preset = presets[presetIdx];
|
|
80
|
+
if (!preset)
|
|
81
|
+
return;
|
|
82
|
+
if (tab === 'building') {
|
|
83
|
+
const bp = preset;
|
|
84
|
+
const assembly = assembleBuildingFromConfig(bp.config);
|
|
85
|
+
setSelectedParts(assembly.parts);
|
|
86
|
+
setCanvasW(assembly.canvasWidth);
|
|
87
|
+
setCanvasH(assembly.canvasHeight);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
const cp = preset;
|
|
91
|
+
const assembly = cp.assembly;
|
|
92
|
+
setSelectedParts([...assembly.parts]);
|
|
93
|
+
setCanvasW(assembly.canvasWidth);
|
|
94
|
+
setCanvasH(assembly.canvasHeight);
|
|
95
|
+
}
|
|
96
|
+
}, [tab, presets]);
|
|
97
|
+
/* ── Initial preset ── */
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
applyPreset(0);
|
|
100
|
+
}, [tab, applyPreset]);
|
|
101
|
+
/* ── Build current assembly ── */
|
|
102
|
+
const currentAssembly = useMemo(() => {
|
|
103
|
+
var _a;
|
|
104
|
+
return ({
|
|
105
|
+
id: `gen_${tab}_${selectedPresetIdx}`,
|
|
106
|
+
name: ((_a = presets[selectedPresetIdx]) === null || _a === void 0 ? void 0 : _a.name) || 'Custom',
|
|
107
|
+
parts: selectedParts,
|
|
108
|
+
canvasWidth: canvasW,
|
|
109
|
+
canvasHeight: canvasH,
|
|
110
|
+
projection,
|
|
111
|
+
});
|
|
112
|
+
}, [tab, selectedPresetIdx, selectedParts, canvasW, canvasH, projection, presets]);
|
|
113
|
+
/* ── Render preview ── */
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
const canvas = previewRef.current;
|
|
116
|
+
if (!canvas)
|
|
117
|
+
return;
|
|
118
|
+
const img = assembleSprite(currentAssembly, partsMapRef.current, direction);
|
|
119
|
+
let finalImg = img;
|
|
120
|
+
if (projection === 'iso25d') {
|
|
121
|
+
finalImg = applyIsometricProjection(img);
|
|
122
|
+
}
|
|
123
|
+
canvas.width = finalImg.width;
|
|
124
|
+
canvas.height = finalImg.height;
|
|
125
|
+
const ctx = canvas.getContext('2d');
|
|
126
|
+
if (ctx) {
|
|
127
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
128
|
+
ctx.putImageData(finalImg, 0, 0);
|
|
129
|
+
}
|
|
130
|
+
}, [currentAssembly, direction, projection]);
|
|
131
|
+
/* ── Toggle part visibility ── */
|
|
132
|
+
const togglePart = useCallback((partId) => {
|
|
133
|
+
setSelectedParts(prev => prev.map(p => { var _a; return p.partId === partId ? { ...p, visible: !((_a = p.visible) !== null && _a !== void 0 ? _a : true) } : p; }));
|
|
134
|
+
}, []);
|
|
135
|
+
/* ── Add part ── */
|
|
136
|
+
const addPart = useCallback((partId) => {
|
|
137
|
+
if (selectedParts.some(p => p.partId === partId))
|
|
138
|
+
return;
|
|
139
|
+
const part = getPart(partId);
|
|
140
|
+
if (!part)
|
|
141
|
+
return;
|
|
142
|
+
setSelectedParts(prev => {
|
|
143
|
+
var _a, _b, _c, _d;
|
|
144
|
+
return [...prev, {
|
|
145
|
+
partId,
|
|
146
|
+
offsetX: Math.floor(canvasW / 2) - Math.floor(((_b = (_a = part.pixels.S) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 8) / 2),
|
|
147
|
+
offsetY: Math.floor(canvasH / 2) - Math.floor(((_d = (_c = part.pixels.S) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 8) / 2),
|
|
148
|
+
visible: true,
|
|
149
|
+
}];
|
|
150
|
+
});
|
|
151
|
+
}, [selectedParts, canvasW, canvasH]);
|
|
152
|
+
/* ── Remove part ── */
|
|
153
|
+
const removePart = useCallback((partId) => {
|
|
154
|
+
setSelectedParts(prev => prev.filter(p => p.partId !== partId));
|
|
155
|
+
}, []);
|
|
156
|
+
/* ── Send to canvas ── */
|
|
157
|
+
const handleSendToCanvas = useCallback(() => {
|
|
158
|
+
if (generate8Dir) {
|
|
159
|
+
const frames = generateAllDirections(currentAssembly, partsMapRef.current);
|
|
160
|
+
const sheet = render8DirSpriteSheet(frames);
|
|
161
|
+
onSendToCanvas(sheet);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
let img = assembleSprite(currentAssembly, partsMapRef.current, direction);
|
|
165
|
+
if (projection === 'iso25d') {
|
|
166
|
+
img = applyIsometricProjection(img);
|
|
167
|
+
}
|
|
168
|
+
onSendToCanvas(img);
|
|
169
|
+
}
|
|
170
|
+
onClose();
|
|
171
|
+
}, [generate8Dir, currentAssembly, direction, projection, onSendToCanvas, onClose]);
|
|
172
|
+
/* ── Categories for current tab ── */
|
|
173
|
+
const categories = useMemo(() => {
|
|
174
|
+
switch (tab) {
|
|
175
|
+
case 'character': return CHAR_CATEGORIES;
|
|
176
|
+
case 'building': return BUILDING_CATEGORIES;
|
|
177
|
+
case 'animal': return ANIMAL_CATEGORIES;
|
|
178
|
+
}
|
|
179
|
+
}, [tab]);
|
|
180
|
+
/* ── Available palette options ── */
|
|
181
|
+
const paletteGroups = useMemo(() => {
|
|
182
|
+
switch (tab) {
|
|
183
|
+
case 'character': return [
|
|
184
|
+
{ label: 'Skin', options: palettesToOptions(SKIN_PALETTES), value: skinPalette, set: setSkinPalette },
|
|
185
|
+
{ label: 'Hair', options: palettesToOptions(HAIR_PALETTES), value: hairPalette, set: setHairPalette },
|
|
186
|
+
{ label: 'Clothing', options: palettesToOptions(CLOTHING_PALETTES), value: clothPalette, set: setClothPalette },
|
|
187
|
+
];
|
|
188
|
+
case 'building': return [
|
|
189
|
+
{ label: 'Walls', options: palettesToOptions(WALL_PALETTES), value: wallPalette, set: setWallPalette },
|
|
190
|
+
{ label: 'Roof', options: palettesToOptions(ROOF_PALETTES), value: roofPalette, set: setRoofPalette },
|
|
191
|
+
];
|
|
192
|
+
case 'animal': return [
|
|
193
|
+
{ label: 'Fur', options: palettesToOptions(FUR_PALETTES), value: furPalette, set: setFurPalette },
|
|
194
|
+
];
|
|
195
|
+
}
|
|
196
|
+
}, [tab, skinPalette, hairPalette, clothPalette, wallPalette, roofPalette, furPalette]);
|
|
197
|
+
/* ── Render ── */
|
|
198
|
+
return (jsx(ko, { open: true, onClose: onClose, title: "Sprite Generator", children: jsxs("div", { className: styles.genPanel, children: [jsxs("div", { className: styles.genHeader, children: [jsx("h3", { children: "Sprite Generator" }), jsx(Ee, { className: styles.btnIcon, variant: "ghost", size: "sm", onClick: onClose, title: "Close", children: "\u2715" })] }), jsx("div", { className: styles.genTabs, children: ['character', 'building', 'animal'].map(t => (jsxs(Ee, { className: `${styles.genTabBtn} ${tab === t ? styles.genTabBtnActive : ''}`, variant: tab === t ? 'primary' : 'ghost', size: "sm", onClick: () => setTab(t), children: [t === 'character' ? '🧑' : t === 'building' ? '🏠' : '🐾', ' ', t.charAt(0).toUpperCase() + t.slice(1)] }, t))) }), jsxs("div", { className: styles.genBody, children: [jsxs("div", { className: styles.genLeft, children: [jsxs("div", { className: styles.panelSection, children: [jsx("div", { className: styles.panelTitle, children: jsx("span", { children: "Presets" }) }), jsx("div", { className: styles.genPresetGrid, children: presets.map((preset, i) => (jsx(Ee, { className: `${styles.genPresetBtn} ${i === selectedPresetIdx ? styles.genPresetBtnActive : ''}`, variant: i === selectedPresetIdx ? 'primary' : 'ghost', size: "sm", onClick: () => applyPreset(i), title: preset.name, children: preset.name }, i))) })] }), jsxs("div", { className: styles.panelSection, style: { flex: 1, overflowY: 'auto' }, children: [jsx("div", { className: styles.panelTitle, children: jsx("span", { children: "Parts" }) }), categories.map(cat => {
|
|
199
|
+
const parts = getPartsByCategory(cat);
|
|
200
|
+
if (parts.length === 0)
|
|
201
|
+
return null;
|
|
202
|
+
return (jsxs("div", { style: { marginBottom: 6 }, children: [jsx("div", { style: { fontSize: 9, color: 'var(--gray-600)', marginBottom: 2, textTransform: 'uppercase' }, children: cat.replace(/([A-Z])/g, ' $1').trim() }), jsx("div", { className: styles.genPartGrid, children: parts.map(part => {
|
|
203
|
+
const active = selectedParts.some(p => { var _a; return p.partId === part.id && ((_a = p.visible) !== null && _a !== void 0 ? _a : true); });
|
|
204
|
+
return (jsx(Ee, { className: `${styles.miniBtn} ${active ? styles.miniBtnActive : ''}`, variant: active ? 'primary' : 'ghost', size: "sm", onClick: () => active ? removePart(part.id) : addPart(part.id), title: part.name, children: part.name.slice(0, 8) }, part.id));
|
|
205
|
+
}) })] }, cat));
|
|
206
|
+
})] })] }), jsxs("div", { className: styles.genCenter, children: [jsx("div", { className: styles.genPreviewWrap, children: jsx("canvas", { ref: previewRef, className: styles.genPreviewCanvas }) }), jsx("div", { className: styles.genDirGrid, children: ALL_DIRECTIONS.map(d => (jsx(Ee, { className: `${styles.miniBtn} ${direction === d ? styles.miniBtnActive : ''}`, variant: direction === d ? 'primary' : 'ghost', size: "sm", onClick: () => setDirection(d), children: d }, d))) }), jsxs("div", { className: styles.genRow, children: [jsx("label", { style: { fontSize: 10, color: 'var(--gray-600)' }, children: "Projection" }), jsx(tn, { className: styles.propSelect, value: projection, onChange: val => setProjection(val), options: [
|
|
207
|
+
{ value: 'topDown', label: 'Top-Down' },
|
|
208
|
+
{ value: 'sideView', label: 'Side View' },
|
|
209
|
+
{ value: 'iso25d', label: '2.5D Isometric' },
|
|
210
|
+
] })] }), jsxs("div", { className: styles.genRow, children: [jsx("label", { style: { fontSize: 10, color: 'var(--gray-600)' }, children: "Size" }), jsx(vi, { className: styles.propInput, style: { width: 48 }, min: 8, max: 256, value: canvasW, onChange: val => setCanvasW(val !== null && val !== void 0 ? val : 32) }), jsx("span", { style: { fontSize: 10, color: 'var(--gray-600)' }, children: "\u00D7" }), jsx(vi, { className: styles.propInput, style: { width: 48 }, min: 8, max: 256, value: canvasH, onChange: val => setCanvasH(val !== null && val !== void 0 ? val : 32) })] }), jsx(qi, { checked: generate8Dir, onChange: checked => setGenerate8Dir(checked), label: "Generate 8-direction sheet", className: styles.checkLabel })] }), jsxs("div", { className: styles.genRight, children: [jsxs("div", { className: styles.panelSection, children: [jsx("div", { className: styles.panelTitle, children: jsx("span", { children: "Colors" }) }), paletteGroups.map(group => {
|
|
211
|
+
var _a;
|
|
212
|
+
return (jsxs("div", { style: { marginBottom: 6 }, children: [jsx("div", { style: { fontSize: 9, color: 'var(--gray-600)', marginBottom: 2 }, children: group.label }), jsx(tn, { className: styles.propSelect, value: group.value, onChange: val => group.set(val), options: group.options.map(opt => ({ value: opt.id, label: opt.name })) }), jsx("div", { className: styles.genColorSwatches, children: (_a = group.options.find(o => o.id === group.value)) === null || _a === void 0 ? void 0 : _a.colors.map((c, i) => (jsx("div", { className: styles.genColorSwatch, style: { backgroundColor: c }, title: c }, i))) })] }, group.label));
|
|
213
|
+
})] }), jsxs("div", { className: styles.panelSection, style: { flex: 1, overflowY: 'auto' }, children: [jsx("div", { className: styles.panelTitle, children: jsx("span", { children: "Assembly" }) }), selectedParts.map((ap, i) => {
|
|
214
|
+
var _a, _b, _c, _d;
|
|
215
|
+
const part = partsMapRef.current.get(ap.partId);
|
|
216
|
+
return (jsxs("div", { className: styles.genAssemblyItem, children: [jsx(Ee, { className: styles.btnIcon, variant: "ghost", size: "sm", onClick: () => togglePart(ap.partId), title: ((_a = ap.visible) !== null && _a !== void 0 ? _a : true) ? 'Hide' : 'Show', children: ((_b = ap.visible) !== null && _b !== void 0 ? _b : true) ? '👁' : '─' }), jsx("span", { className: styles.genAssemblyName, children: (_c = part === null || part === void 0 ? void 0 : part.name) !== null && _c !== void 0 ? _c : ap.partId }), jsxs("span", { style: { fontSize: 9, color: 'var(--gray-700)' }, children: ["z:", (_d = part === null || part === void 0 ? void 0 : part.zOrder) !== null && _d !== void 0 ? _d : 0] }), jsx(Ee, { className: styles.btnIcon, variant: "ghost", size: "sm", onClick: () => removePart(ap.partId), title: "Remove", children: "\u2715" })] }, ap.partId));
|
|
217
|
+
})] })] })] }), jsxs("div", { className: styles.genFooter, children: [jsx(Ee, { className: styles.btnSecondary, variant: "ghost", onClick: onClose, children: "Cancel" }), jsx(Ee, { className: styles.btnPrimary, variant: "primary", onClick: handleSendToCanvas, children: "\uD83D\uDCCB Send to Canvas" })] })] }) }));
|
|
218
|
+
};
|
|
219
|
+
NiceSpriteGeneratorPanel.displayName = 'NiceSpriteGeneratorPanel';
|
|
220
|
+
|
|
221
|
+
export { NiceSpriteGeneratorPanel as default };
|
|
222
|
+
//# sourceMappingURL=SpriteGeneratorPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteGeneratorPanel.js","sources":["../../../src/pixel/SpriteGeneratorPanel.tsx"],"sourcesContent":[null],"names":["_jsx","NiceModal","_jsxs","NiceButton","NiceSelect","NiceNumberInput","NiceCheckbox"],"mappings":"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"}
|