@nice2dev/ui-graphics 1.0.4 → 1.0.5

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 (183) hide show
  1. package/dist/cjs/animation/AnimationEditor.js +1 -1
  2. package/dist/cjs/animation/Audience.js +1 -1
  3. package/dist/cjs/core/LocalUI.js +1 -1
  4. package/dist/cjs/core/yjsCollaboration.js +2 -2
  5. package/dist/cjs/core/yjsCollaboration.js.map +1 -1
  6. package/dist/cjs/game/GameAsset2dEditor.js +1 -1
  7. package/dist/cjs/node_modules/lib0/array.js +103 -0
  8. package/dist/cjs/node_modules/lib0/array.js.map +1 -0
  9. package/dist/cjs/node_modules/lib0/binary.js +42 -0
  10. package/dist/cjs/node_modules/lib0/binary.js.map +1 -0
  11. package/dist/cjs/node_modules/lib0/broadcastchannel.js +121 -0
  12. package/dist/cjs/node_modules/lib0/broadcastchannel.js.map +1 -0
  13. package/dist/cjs/node_modules/lib0/buffer.js +103 -0
  14. package/dist/cjs/node_modules/lib0/buffer.js.map +1 -0
  15. package/dist/cjs/node_modules/lib0/conditions.js +18 -0
  16. package/dist/cjs/node_modules/lib0/conditions.js.map +1 -0
  17. package/dist/cjs/node_modules/lib0/decoding.js +460 -0
  18. package/dist/cjs/node_modules/lib0/decoding.js.map +1 -0
  19. package/dist/cjs/node_modules/lib0/dom.js +55 -0
  20. package/dist/cjs/node_modules/lib0/dom.js.map +1 -0
  21. package/dist/cjs/node_modules/lib0/encoding.js +688 -0
  22. package/dist/cjs/node_modules/lib0/encoding.js.map +1 -0
  23. package/dist/cjs/node_modules/lib0/environment.js +129 -0
  24. package/dist/cjs/node_modules/lib0/environment.js.map +1 -0
  25. package/dist/cjs/node_modules/lib0/error.js +37 -0
  26. package/dist/cjs/node_modules/lib0/error.js.map +1 -0
  27. package/dist/cjs/node_modules/lib0/function.js +135 -0
  28. package/dist/cjs/node_modules/lib0/function.js.map +1 -0
  29. package/dist/cjs/node_modules/lib0/iterator.js +52 -0
  30. package/dist/cjs/node_modules/lib0/iterator.js.map +1 -0
  31. package/dist/cjs/node_modules/lib0/logging.common.js +63 -0
  32. package/dist/cjs/node_modules/lib0/logging.common.js.map +1 -0
  33. package/dist/cjs/node_modules/lib0/logging.js +128 -0
  34. package/dist/cjs/node_modules/lib0/logging.js.map +1 -0
  35. package/dist/cjs/node_modules/lib0/map.js +108 -0
  36. package/dist/cjs/node_modules/lib0/map.js.map +1 -0
  37. package/dist/cjs/node_modules/lib0/math.js +44 -0
  38. package/dist/cjs/node_modules/lib0/math.js.map +1 -0
  39. package/dist/cjs/node_modules/lib0/number.js +21 -0
  40. package/dist/cjs/node_modules/lib0/number.js.map +1 -0
  41. package/dist/cjs/node_modules/lib0/object.js +132 -0
  42. package/dist/cjs/node_modules/lib0/object.js.map +1 -0
  43. package/dist/cjs/node_modules/lib0/observable.js +168 -0
  44. package/dist/cjs/node_modules/lib0/observable.js.map +1 -0
  45. package/dist/cjs/node_modules/lib0/pair.js +33 -0
  46. package/dist/cjs/node_modules/lib0/pair.js.map +1 -0
  47. package/dist/cjs/node_modules/lib0/prng.js +95 -0
  48. package/dist/cjs/node_modules/lib0/prng.js.map +1 -0
  49. package/dist/cjs/node_modules/lib0/promise.js +33 -0
  50. package/dist/cjs/node_modules/lib0/promise.js.map +1 -0
  51. package/dist/cjs/node_modules/lib0/random.js +28 -0
  52. package/dist/cjs/node_modules/lib0/random.js.map +1 -0
  53. package/dist/cjs/node_modules/lib0/schema.js +1168 -0
  54. package/dist/cjs/node_modules/lib0/schema.js.map +1 -0
  55. package/dist/cjs/node_modules/lib0/set.js +12 -0
  56. package/dist/cjs/node_modules/lib0/set.js.map +1 -0
  57. package/dist/cjs/node_modules/lib0/storage.js +79 -0
  58. package/dist/cjs/node_modules/lib0/storage.js.map +1 -0
  59. package/dist/cjs/node_modules/lib0/string.js +94 -0
  60. package/dist/cjs/node_modules/lib0/string.js.map +1 -0
  61. package/dist/cjs/node_modules/lib0/symbol.js +15 -0
  62. package/dist/cjs/node_modules/lib0/symbol.js.map +1 -0
  63. package/dist/cjs/node_modules/lib0/time.js +18 -0
  64. package/dist/cjs/node_modules/lib0/time.js.map +1 -0
  65. package/dist/cjs/node_modules/lib0/trait/equality.js +32 -0
  66. package/dist/cjs/node_modules/lib0/trait/equality.js.map +1 -0
  67. package/dist/cjs/node_modules/lib0/url.js +20 -0
  68. package/dist/cjs/node_modules/lib0/url.js.map +1 -0
  69. package/dist/cjs/node_modules/lib0/webcrypto.js +8 -0
  70. package/dist/cjs/node_modules/lib0/webcrypto.js.map +1 -0
  71. package/dist/cjs/node_modules/y-protocols/auth.js +27 -0
  72. package/dist/cjs/node_modules/y-protocols/auth.js.map +1 -0
  73. package/dist/cjs/node_modules/y-protocols/awareness.js +277 -0
  74. package/dist/cjs/node_modules/y-protocols/awareness.js.map +1 -0
  75. package/dist/cjs/node_modules/y-protocols/sync.js +149 -0
  76. package/dist/cjs/node_modules/y-protocols/sync.js.map +1 -0
  77. package/dist/cjs/node_modules/y-websocket/src/y-websocket.js +521 -0
  78. package/dist/cjs/node_modules/y-websocket/src/y-websocket.js.map +1 -0
  79. package/dist/cjs/node_modules/yjs/dist/yjs.js +10399 -0
  80. package/dist/cjs/node_modules/yjs/dist/yjs.js.map +1 -0
  81. package/dist/cjs/packages/ui/dist/index.js +65997 -0
  82. package/dist/cjs/packages/ui/dist/index.js.map +1 -0
  83. package/dist/cjs/pixel/PixelEditor.js +1 -1
  84. package/dist/cjs/pixel/PixelEditorMenuBar.js +1 -1
  85. package/dist/cjs/pixel/PixelEditorRightPanel.js +1 -1
  86. package/dist/cjs/pixel/PixelEditorTimeline.js +1 -1
  87. package/dist/cjs/pixel/PixelEditorToolbar.js +1 -1
  88. package/dist/cjs/pixel/SpriteGeneratorPanel.js +1 -1
  89. package/dist/cjs/vector/VectorEditor.js +1 -1
  90. package/dist/cjs/vector/VectorEditorMenuBar.js +1 -1
  91. package/dist/cjs/vector/VectorEditorRightPanel.js +1 -1
  92. package/dist/esm/animation/AnimationEditor.js +5 -5
  93. package/dist/esm/animation/Audience.js +2 -2
  94. package/dist/esm/core/LocalUI.js +4 -4
  95. package/dist/esm/core/yjsCollaboration.js +2 -2
  96. package/dist/esm/core/yjsCollaboration.js.map +1 -1
  97. package/dist/esm/game/GameAsset2dEditor.js +19 -19
  98. package/dist/esm/node_modules/lib0/array.js +95 -0
  99. package/dist/esm/node_modules/lib0/array.js.map +1 -0
  100. package/dist/esm/node_modules/lib0/binary.js +30 -0
  101. package/dist/esm/node_modules/lib0/binary.js.map +1 -0
  102. package/dist/esm/node_modules/lib0/broadcastchannel.js +117 -0
  103. package/dist/esm/node_modules/lib0/broadcastchannel.js.map +1 -0
  104. package/dist/esm/node_modules/lib0/buffer.js +96 -0
  105. package/dist/esm/node_modules/lib0/buffer.js.map +1 -0
  106. package/dist/esm/node_modules/lib0/conditions.js +16 -0
  107. package/dist/esm/node_modules/lib0/conditions.js.map +1 -0
  108. package/dist/esm/node_modules/lib0/decoding.js +439 -0
  109. package/dist/esm/node_modules/lib0/decoding.js.map +1 -0
  110. package/dist/esm/node_modules/lib0/dom.js +48 -0
  111. package/dist/esm/node_modules/lib0/dom.js.map +1 -0
  112. package/dist/esm/node_modules/lib0/encoding.js +663 -0
  113. package/dist/esm/node_modules/lib0/encoding.js.map +1 -0
  114. package/dist/esm/node_modules/lib0/environment.js +121 -0
  115. package/dist/esm/node_modules/lib0/environment.js.map +1 -0
  116. package/dist/esm/node_modules/lib0/error.js +33 -0
  117. package/dist/esm/node_modules/lib0/error.js.map +1 -0
  118. package/dist/esm/node_modules/lib0/function.js +130 -0
  119. package/dist/esm/node_modules/lib0/function.js.map +1 -0
  120. package/dist/esm/node_modules/lib0/iterator.js +48 -0
  121. package/dist/esm/node_modules/lib0/iterator.js.map +1 -0
  122. package/dist/esm/node_modules/lib0/logging.common.js +52 -0
  123. package/dist/esm/node_modules/lib0/logging.common.js.map +1 -0
  124. package/dist/esm/node_modules/lib0/logging.js +115 -0
  125. package/dist/esm/node_modules/lib0/logging.js.map +1 -0
  126. package/dist/esm/node_modules/lib0/map.js +102 -0
  127. package/dist/esm/node_modules/lib0/map.js.map +1 -0
  128. package/dist/esm/node_modules/lib0/math.js +37 -0
  129. package/dist/esm/node_modules/lib0/math.js.map +1 -0
  130. package/dist/esm/node_modules/lib0/number.js +17 -0
  131. package/dist/esm/node_modules/lib0/number.js.map +1 -0
  132. package/dist/esm/node_modules/lib0/object.js +119 -0
  133. package/dist/esm/node_modules/lib0/object.js.map +1 -0
  134. package/dist/esm/node_modules/lib0/observable.js +165 -0
  135. package/dist/esm/node_modules/lib0/observable.js.map +1 -0
  136. package/dist/esm/node_modules/lib0/pair.js +30 -0
  137. package/dist/esm/node_modules/lib0/pair.js.map +1 -0
  138. package/dist/esm/node_modules/lib0/prng.js +87 -0
  139. package/dist/esm/node_modules/lib0/prng.js.map +1 -0
  140. package/dist/esm/node_modules/lib0/promise.js +31 -0
  141. package/dist/esm/node_modules/lib0/promise.js.map +1 -0
  142. package/dist/esm/node_modules/lib0/random.js +25 -0
  143. package/dist/esm/node_modules/lib0/random.js.map +1 -0
  144. package/dist/esm/node_modules/lib0/schema.js +1113 -0
  145. package/dist/esm/node_modules/lib0/schema.js.map +1 -0
  146. package/dist/esm/node_modules/lib0/set.js +10 -0
  147. package/dist/esm/node_modules/lib0/set.js.map +1 -0
  148. package/dist/esm/node_modules/lib0/storage.js +75 -0
  149. package/dist/esm/node_modules/lib0/storage.js.map +1 -0
  150. package/dist/esm/node_modules/lib0/string.js +85 -0
  151. package/dist/esm/node_modules/lib0/string.js.map +1 -0
  152. package/dist/esm/node_modules/lib0/symbol.js +13 -0
  153. package/dist/esm/node_modules/lib0/symbol.js.map +1 -0
  154. package/dist/esm/node_modules/lib0/time.js +16 -0
  155. package/dist/esm/node_modules/lib0/time.js.map +1 -0
  156. package/dist/esm/node_modules/lib0/trait/equality.js +29 -0
  157. package/dist/esm/node_modules/lib0/trait/equality.js.map +1 -0
  158. package/dist/esm/node_modules/lib0/url.js +18 -0
  159. package/dist/esm/node_modules/lib0/url.js.map +1 -0
  160. package/dist/esm/node_modules/lib0/webcrypto.js +6 -0
  161. package/dist/esm/node_modules/lib0/webcrypto.js.map +1 -0
  162. package/dist/esm/node_modules/y-protocols/auth.js +24 -0
  163. package/dist/esm/node_modules/y-protocols/auth.js.map +1 -0
  164. package/dist/esm/node_modules/y-protocols/awareness.js +271 -0
  165. package/dist/esm/node_modules/y-protocols/awareness.js.map +1 -0
  166. package/dist/esm/node_modules/y-protocols/sync.js +138 -0
  167. package/dist/esm/node_modules/y-protocols/sync.js.map +1 -0
  168. package/dist/esm/node_modules/y-websocket/src/y-websocket.js +515 -0
  169. package/dist/esm/node_modules/y-websocket/src/y-websocket.js.map +1 -0
  170. package/dist/esm/node_modules/yjs/dist/yjs.js +10295 -0
  171. package/dist/esm/node_modules/yjs/dist/yjs.js.map +1 -0
  172. package/dist/esm/packages/ui/dist/index.js +65571 -0
  173. package/dist/esm/packages/ui/dist/index.js.map +1 -0
  174. package/dist/esm/pixel/PixelEditor.js +3 -3
  175. package/dist/esm/pixel/PixelEditorMenuBar.js +2 -2
  176. package/dist/esm/pixel/PixelEditorRightPanel.js +3 -3
  177. package/dist/esm/pixel/PixelEditorTimeline.js +2 -2
  178. package/dist/esm/pixel/PixelEditorToolbar.js +2 -2
  179. package/dist/esm/pixel/SpriteGeneratorPanel.js +8 -8
  180. package/dist/esm/vector/VectorEditor.js +3 -3
  181. package/dist/esm/vector/VectorEditorMenuBar.js +3 -3
  182. package/dist/esm/vector/VectorEditorRightPanel.js +13 -13
  183. package/package.json +1 -1
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var PixelEditor_module = require('./PixelEditor.module.css.js');
6
- var index = require('../ui/dist/index.js');
6
+ var index = require('../packages/ui/dist/index.js');
7
7
  var usePixelEditor = require('./usePixelEditor.js');
8
8
  var PixelEditorMenuBar = require('./PixelEditorMenuBar.js');
9
9
  var PixelEditorToolbar = require('./PixelEditorToolbar.js');
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var PixelEditor_module = require('./PixelEditor.module.css.js');
6
- var index = require('../ui/dist/index.js');
6
+ var index = require('../packages/ui/dist/index.js');
7
7
 
8
8
  const PixelEditorMenuBar = React.memo(({ api, hasOnSaveToLibrary, onOpenGenerator }) => (jsxRuntime.jsxs("div", { className: PixelEditor_module.menuBar, children: [jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: () => api.setDlgNew(true), children: "New" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = api.fInp.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Open" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportAse, children: "Save .ase" }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportPNG, children: "PNG" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportJPG, children: "JPG" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportWebP, children: "WebP" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportBMP, children: "BMP" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportSVG, children: "SVG" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.exportSheet, children: "Sheet" }), hasOnSaveToLibrary && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.saveToLibrary, children: "\uD83D\uDCE6 Save to Library" })] })), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.undo, children: "Undo" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.redo, children: "Redo" }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: () => api.flipCv("h"), children: "Flip H" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: () => api.flipCv("v"), children: "Flip V" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.rotateCv, children: "Rot 90\u00B0" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.clearCv, children: "Clear" }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsxs(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: () => api.setGrid((g) => !g), children: ["Grid: ", api.grid ? "ON" : "OFF"] }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.doCopy, disabled: !api.sel, children: "Copy" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.doCut, disabled: !api.sel, children: "Cut" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.doPaste, disabled: !api.clipboard.current, children: "Paste" }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: api.doSelectAll, children: "Sel All" }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.menuBtn, variant: "ghost", size: "sm", onClick: onOpenGenerator, children: "\uD83C\uDFA8 Generator" })] })));
9
9
  PixelEditorMenuBar.displayName = "PixelEditorMenuBar";
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var PixelEditor_module = require('./PixelEditor.module.css.js');
6
- var index = require('../ui/dist/index.js');
6
+ var index = require('../packages/ui/dist/index.js');
7
7
  var pixelEditorTypes = require('./pixelEditorTypes.js');
8
8
  var HSVPicker = require('./HSVPicker.js');
9
9
 
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var PixelEditor_module = require('./PixelEditor.module.css.js');
6
- var index = require('../ui/dist/index.js');
6
+ var index = require('../packages/ui/dist/index.js');
7
7
 
8
8
  const PixelEditorTimeline = React.memo(({ api }) => (jsxRuntime.jsxs("div", { className: PixelEditor_module.bottomPanel, children: [jsxRuntime.jsxs("div", { className: PixelEditor_module.timelineControls, children: [jsxRuntime.jsx(index.NiceButton, { variant: "ghost", size: "sm", onClick: api.addFrame, children: "+ Frame" }), jsxRuntime.jsx(index.NiceButton, { variant: "ghost", size: "sm", onClick: api.dupFrame, "aria-label": "Duplicate frame", children: "Dup" }), jsxRuntime.jsx(index.NiceButton, { variant: "ghost", size: "sm", onClick: api.rmFrame, "aria-label": "Remove frame", children: "\u2212 Frame" }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceButton, { variant: "ghost", size: "sm", onClick: () => api.setPlaying((p) => !p), children: api.playing ? "⏸" : "▶" }), jsxRuntime.jsx("label", { children: "FPS:" }), jsxRuntime.jsx(index.NiceNumberInput, { min: 1, max: 60, value: api.fps, onChange: (val) => api.setFps(val !== null && val !== void 0 ? val : 8), "aria-label": "Frames per second" }), jsxRuntime.jsx("div", { className: PixelEditor_module.menuSep }), jsxRuntime.jsx(index.NiceCheckbox, { checked: api.onion, onChange: (checked) => api.setOnion(checked), label: "Onion" }), jsxRuntime.jsx("div", { style: { flex: 1 } }), jsxRuntime.jsxs("span", { children: [api.fc, " frame", api.fc !== 1 ? "s" : ""] })] }), jsxRuntime.jsx("div", { className: PixelEditor_module.timelineFrames, children: Array.from({ length: api.fc }, (_, fi) => (jsxRuntime.jsxs("div", { className: `${PixelEditor_module.frameThumb} ${fi === api.afi ? PixelEditor_module.frameThumbActive : ""}`, onClick: () => api.setAfi(fi), children: [api.thumbs[fi] && (jsxRuntime.jsx("img", { src: api.thumbs[fi], alt: `Frame ${fi + 1}`, style: { width: 36, height: 36, imageRendering: "pixelated", objectFit: "contain" } })), jsxRuntime.jsx("span", { className: PixelEditor_module.frameNum, children: fi + 1 })] }, fi))) })] })));
9
9
  PixelEditorTimeline.displayName = "PixelEditorTimeline";
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var PixelEditor_module = require('./PixelEditor.module.css.js');
6
- var index = require('../ui/dist/index.js');
6
+ var index = require('../packages/ui/dist/index.js');
7
7
  var pixelEditorTypes = require('./pixelEditorTypes.js');
8
8
 
9
9
  const PixelEditorToolbar = React.memo(({ api }) => (jsxRuntime.jsxs("div", { className: PixelEditor_module.toolbar, children: [pixelEditorTypes.TOOLS.map((t) => (jsxRuntime.jsx(index.NiceButton, { className: `${PixelEditor_module.toolBtn} ${api.tool === t.id ? PixelEditor_module.toolBtnActive : ""}`, variant: api.tool === t.id ? 'primary' : 'ghost', size: "sm", onClick: () => api.setTool(t.id), title: `${t.label} (${t.key})`, children: t.icon }, t.id))), jsxRuntime.jsx("div", { className: PixelEditor_module.toolSep }), jsxRuntime.jsx(index.NiceButton, { className: `${PixelEditor_module.toolBtn} ${api.shapeFilled ? PixelEditor_module.toolBtnActive : ""}`, variant: api.shapeFilled ? 'primary' : 'ghost', size: "sm", onClick: () => api.setShapeFilled((f) => !f), title: `${api.shapeFilled ? "Filled" : "Outline"} (F)`, children: api.shapeFilled ? "■" : "□" }), jsxRuntime.jsx("div", { className: PixelEditor_module.toolGroup, children: pixelEditorTypes.SYMMETRY_MODES.map((m) => (jsxRuntime.jsx(index.NiceButton, { className: `${PixelEditor_module.miniBtn} ${api.symmetry === m.id ? PixelEditor_module.miniBtnActive : ""}`, variant: api.symmetry === m.id ? 'primary' : 'ghost', size: "sm", onClick: () => api.setSymmetry(m.id), title: `Symmetry: ${m.label}`, children: m.label.slice(0, 2) }, m.id))) }), jsxRuntime.jsxs("div", { className: PixelEditor_module.colorSwatches, children: [jsxRuntime.jsx("label", { style: { position: "relative", width: 28, height: 28, cursor: "pointer" }, title: "Primary Colour (click for HSV)", children: jsxRuntime.jsx(index.NiceColorPicker, { value: api.col1, onChange: (c) => api.setCol1(c) }) }), jsxRuntime.jsx("label", { style: { position: "relative", width: 22, height: 22, cursor: "pointer" }, title: "Secondary Colour", children: jsxRuntime.jsx(index.NiceColorPicker, { value: api.col2, onChange: (c) => api.setCol2(c) }) }), jsxRuntime.jsx(index.NiceButton, { className: PixelEditor_module.toolBtn, variant: "ghost", size: "sm", onClick: () => {
@@ -3,7 +3,7 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
5
  var PixelEditor_module = require('./PixelEditor.module.css.js');
6
- var index = require('../ui/dist/index.js');
6
+ var index = require('../packages/ui/dist/index.js');
7
7
  var spriteGeneratorCore = require('./spriteGeneratorCore.js');
8
8
  var characterGeneratorPresets = require('./characterGeneratorPresets.js');
9
9
  var buildingGeneratorPresets = require('./buildingGeneratorPresets.js');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
- var index = require('../ui/dist/index.js');
4
+ var index = require('../packages/ui/dist/index.js');
5
5
  var VectorEditor_module = require('./VectorEditor.module.css.js');
6
6
  var vectorEditorTypes = require('./vectorEditorTypes.js');
7
7
  var VectorEditorShapeRenderer = require('./VectorEditorShapeRenderer.js');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var index = require('../ui/dist/index.js');
5
+ var index = require('../packages/ui/dist/index.js');
6
6
  var VectorEditor_module = require('./VectorEditor.module.css.js');
7
7
 
8
8
  const VectorEditorMenuBar = ({ api, hasOnSaveToLibrary }) => {
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var index = require('../ui/dist/index.js');
5
+ var index = require('../packages/ui/dist/index.js');
6
6
  var VectorEditor_module = require('./VectorEditor.module.css.js');
7
7
  var vectorEditorTypes = require('./vectorEditorTypes.js');
8
8
  var vectorGradients = require('./vectorGradients.js');
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { useState, useEffect } from 'react';
3
- import { NiceTextInput as _t, NiceSlider as Ar, NiceButton as Oe, NiceTextArea as ms, NiceSelect as nn, NiceColorPicker as Nn } from '../ui/dist/index.js';
3
+ import { NiceTextInput as Tt, NiceSlider as so, NiceButton as We, NiceTextArea as Os, NiceSelect as fn, NiceColorPicker as Rn } from '../packages/ui/dist/index.js';
4
4
  import { useNiceTranslation } from '../core/i18n.js';
5
5
  import NiceAnimatedPerson from './AnimatedPerson.js';
6
6
  import { DEFAULT_CHARACTER, VARIANTS } from './characterTypes.js';
@@ -20,18 +20,18 @@ function ColorInputs({ value, onChange, }) {
20
20
  const base = clampPalette(value);
21
21
  const count = Math.min(3, Math.max(1, (_a = value === null || value === void 0 ? void 0 : value.length) !== null && _a !== void 0 ? _a : 1));
22
22
  const view = base.slice(0, count);
23
- return (jsxs("div", { className: "ntd-ae-color-inputs", children: [jsx("div", { className: "ntd-ae-colors", children: view.map((col, i) => (jsxs("label", { className: "ntd-ae-color-label", children: ["C", i + 1, jsx(Nn, { value: col, onChange: (color) => {
23
+ return (jsxs("div", { className: "ntd-ae-color-inputs", children: [jsx("div", { className: "ntd-ae-colors", children: view.map((col, i) => (jsxs("label", { className: "ntd-ae-color-label", children: ["C", i + 1, jsx(Rn, { value: col, onChange: (color) => {
24
24
  const next = [...view];
25
25
  next[i] = color;
26
26
  onChange(next);
27
- } })] }, i))) }), jsxs("div", { className: "ntd-ae-color-btns", children: [jsx(Oe, { variant: "ghost", size: "sm", disabled: count <= 1, onClick: () => onChange(view.slice(0, Math.max(1, count - 1))), children: "-" }), jsx(Oe, { variant: "ghost", size: "sm", disabled: count >= 3, onClick: () => onChange([...view, view[view.length - 1] || "var(--anim-default-black, #000000)"]), children: "+" })] })] }));
27
+ } })] }, i))) }), jsxs("div", { className: "ntd-ae-color-btns", children: [jsx(We, { variant: "ghost", size: "sm", disabled: count <= 1, onClick: () => onChange(view.slice(0, Math.max(1, count - 1))), children: "-" }), jsx(We, { variant: "ghost", size: "sm", disabled: count >= 3, onClick: () => onChange([...view, view[view.length - 1] || "var(--anim-default-black, #000000)"]), children: "+" })] })] }));
28
28
  }
29
29
  function Row({ title, children }) {
30
30
  return (jsxs("div", { className: "ntd-ae-row", children: [jsx("div", { className: "ntd-ae-row-title", children: title }), jsx("div", { className: "ntd-ae-row-content", children: children })] }));
31
31
  }
32
32
  function FeatureEditor({ title, feature, variants, onChange, }) {
33
33
  const options = variants.map((v) => ({ value: v, label: v }));
34
- return (jsxs(Row, { title: title, children: [jsx(nn, { className: "ntd-ae-select", value: feature.variant, onChange: (val) => onChange({ ...feature, variant: val }), options: options }), jsx(ColorInputs, { value: feature.colors, onChange: (colors) => onChange({ ...feature, colors }) })] }));
34
+ return (jsxs(Row, { title: title, children: [jsx(fn, { className: "ntd-ae-select", value: feature.variant, onChange: (val) => onChange({ ...feature, variant: val }), options: options }), jsx(ColorInputs, { value: feature.colors, onChange: (colors) => onChange({ ...feature, colors }) })] }));
35
35
  }
36
36
  /* ---------- component ---------- */
37
37
  function NiceAnimationEditor({ initialConfig, onChange, storageKey = STORAGE_KEY, onNotify, showJsonPanel = true, showPreview = true, className, style, }) {
@@ -99,7 +99,7 @@ function NiceAnimationEditor({ initialConfig, onChange, storageKey = STORAGE_KEY
99
99
  const updateFeature = (key, val) => {
100
100
  setCfg((prev) => ({ ...prev, [key]: val }));
101
101
  };
102
- return (jsxs("div", { className: `ntd-animation-editor ${className !== null && className !== void 0 ? className : ""}`, style: style, children: [jsxs("div", { className: "ntd-ae-controls", children: [jsx(Row, { title: t("characterEditor.name", "Name"), children: jsx(_t, { className: "ntd-ae-input", value: cfg.name || "", onChange: (val) => setCfg({ ...cfg, name: val }), placeholder: t("characterEditor.namePlaceholder", "Character name") }) }), jsxs(Row, { title: t("characters.size", "Size"), children: [jsx(Ar, { min: 140, max: 300, value: (_a = cfg.size) !== null && _a !== void 0 ? _a : 180, onChange: (val) => setCfg({ ...cfg, size: val }) }), jsxs("span", { className: "ntd-ae-size-value", children: [(_b = cfg.size) !== null && _b !== void 0 ? _b : 180, "px"] })] }), jsx(FeatureEditor, { title: t("characters.faceShape", "Face"), feature: cfg.face, variants: VARIANTS.face, onChange: (v) => updateFeature("face", v) }), jsx(FeatureEditor, { title: t("characters.hairstyle", "Hair"), feature: cfg.hair, variants: VARIANTS.hair, onChange: (v) => updateFeature("hair", v) }), jsx(FeatureEditor, { title: t("characters.eyes", "Eyes"), feature: cfg.eyes, variants: VARIANTS.eyes, onChange: (v) => updateFeature("eyes", v) }), jsx(FeatureEditor, { title: t("characters.nose", "Nose"), feature: cfg.nose, variants: VARIANTS.nose, onChange: (v) => updateFeature("nose", v) }), jsx(FeatureEditor, { title: t("characters.mouth", "Mouth"), feature: cfg.mouth, variants: VARIANTS.mouth, onChange: (v) => updateFeature("mouth", v) }), jsx(FeatureEditor, { title: t("characters.clothing", "Outfit"), feature: cfg.outfit, variants: VARIANTS.outfit, onChange: (v) => updateFeature("outfit", v) }), jsx(FeatureEditor, { title: t("characters.headwear", "Headwear"), feature: cfg.headwear, variants: VARIANTS.headwear, onChange: (v) => updateFeature("headwear", v) }), jsx(FeatureEditor, { title: t("characters.prop", "Prop"), feature: cfg.prop, variants: VARIANTS.prop, onChange: (v) => updateFeature("prop", v) }), jsxs("div", { className: "ntd-ae-action-row", children: [jsxs(Oe, { className: "ntd-ae-btn", variant: "ghost", onClick: randomizeColors, children: ["\uD83C\uDFB2 ", t("characterEditor.randomizeColors", "Randomize colors")] }), jsxs(Oe, { className: "ntd-ae-btn", variant: "ghost", onClick: downloadJson, children: ["\u2B07 ", t("characters.downloadJson", "Download JSON")] })] }), showJsonPanel && (jsxs("div", { className: "ntd-ae-json-panel", children: [jsx("div", { className: "ntd-ae-json-label", children: t("characterEditor.jsonSection", "JSON") }), jsx(ms, { className: "ntd-ae-textarea", value: json, onChange: (val) => setJson(val) }), jsxs("div", { className: "ntd-ae-json-actions", children: [jsx(Oe, { className: "ntd-ae-btn", variant: "primary", onClick: applyJson, children: t("characterEditor.applyJson", "Apply JSON") }), jsx(Oe, { className: "ntd-ae-btn", variant: "ghost", onClick: () => navigator.clipboard.writeText(JSON.stringify(cfg, null, 2)), children: t("characterEditor.copyToClipboard", "Copy") })] })] }))] }), showPreview && (jsxs("div", { className: "ntd-ae-preview", children: [jsx("div", { className: "ntd-ae-preview-label", children: t("characterEditor.preview", "Preview") }), jsx(NiceAnimatedPerson, { character: cfg, score: 10, startPose: "idle" })] }))] }));
102
+ return (jsxs("div", { className: `ntd-animation-editor ${className !== null && className !== void 0 ? className : ""}`, style: style, children: [jsxs("div", { className: "ntd-ae-controls", children: [jsx(Row, { title: t("characterEditor.name", "Name"), children: jsx(Tt, { className: "ntd-ae-input", value: cfg.name || "", onChange: (val) => setCfg({ ...cfg, name: val }), placeholder: t("characterEditor.namePlaceholder", "Character name") }) }), jsxs(Row, { title: t("characters.size", "Size"), children: [jsx(so, { min: 140, max: 300, value: (_a = cfg.size) !== null && _a !== void 0 ? _a : 180, onChange: (val) => setCfg({ ...cfg, size: val }) }), jsxs("span", { className: "ntd-ae-size-value", children: [(_b = cfg.size) !== null && _b !== void 0 ? _b : 180, "px"] })] }), jsx(FeatureEditor, { title: t("characters.faceShape", "Face"), feature: cfg.face, variants: VARIANTS.face, onChange: (v) => updateFeature("face", v) }), jsx(FeatureEditor, { title: t("characters.hairstyle", "Hair"), feature: cfg.hair, variants: VARIANTS.hair, onChange: (v) => updateFeature("hair", v) }), jsx(FeatureEditor, { title: t("characters.eyes", "Eyes"), feature: cfg.eyes, variants: VARIANTS.eyes, onChange: (v) => updateFeature("eyes", v) }), jsx(FeatureEditor, { title: t("characters.nose", "Nose"), feature: cfg.nose, variants: VARIANTS.nose, onChange: (v) => updateFeature("nose", v) }), jsx(FeatureEditor, { title: t("characters.mouth", "Mouth"), feature: cfg.mouth, variants: VARIANTS.mouth, onChange: (v) => updateFeature("mouth", v) }), jsx(FeatureEditor, { title: t("characters.clothing", "Outfit"), feature: cfg.outfit, variants: VARIANTS.outfit, onChange: (v) => updateFeature("outfit", v) }), jsx(FeatureEditor, { title: t("characters.headwear", "Headwear"), feature: cfg.headwear, variants: VARIANTS.headwear, onChange: (v) => updateFeature("headwear", v) }), jsx(FeatureEditor, { title: t("characters.prop", "Prop"), feature: cfg.prop, variants: VARIANTS.prop, onChange: (v) => updateFeature("prop", v) }), jsxs("div", { className: "ntd-ae-action-row", children: [jsxs(We, { className: "ntd-ae-btn", variant: "ghost", onClick: randomizeColors, children: ["\uD83C\uDFB2 ", t("characterEditor.randomizeColors", "Randomize colors")] }), jsxs(We, { className: "ntd-ae-btn", variant: "ghost", onClick: downloadJson, children: ["\u2B07 ", t("characters.downloadJson", "Download JSON")] })] }), showJsonPanel && (jsxs("div", { className: "ntd-ae-json-panel", children: [jsx("div", { className: "ntd-ae-json-label", children: t("characterEditor.jsonSection", "JSON") }), jsx(Os, { className: "ntd-ae-textarea", value: json, onChange: (val) => setJson(val) }), jsxs("div", { className: "ntd-ae-json-actions", children: [jsx(We, { className: "ntd-ae-btn", variant: "primary", onClick: applyJson, children: t("characterEditor.applyJson", "Apply JSON") }), jsx(We, { className: "ntd-ae-btn", variant: "ghost", onClick: () => navigator.clipboard.writeText(JSON.stringify(cfg, null, 2)), children: t("characterEditor.copyToClipboard", "Copy") })] })] }))] }), showPreview && (jsxs("div", { className: "ntd-ae-preview", children: [jsx("div", { className: "ntd-ae-preview-label", children: t("characterEditor.preview", "Preview") }), jsx(NiceAnimatedPerson, { character: cfg, score: 10, startPose: "idle" })] }))] }));
103
103
  }
104
104
  /** @deprecated Use NiceAnimationEditor */
105
105
  const AnimationEditor = NiceAnimationEditor;
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import React from 'react';
3
- import { NiceButton as Oe } from '../ui/dist/index.js';
3
+ import { NiceButton as We } from '../packages/ui/dist/index.js';
4
4
  import NiceAnimatedPerson from './AnimatedPerson.js';
5
5
  import { DEFAULT_CHARACTER } from './characterTypes.js';
6
6
  import { runRounds, seq } from './choreoDSL.js';
@@ -51,7 +51,7 @@ const NiceAudience = ({ count = 36, columns = 12 }) => {
51
51
  display: "grid",
52
52
  gap: 8,
53
53
  gridTemplateColumns: `repeat(${columns}, minmax(0, 1fr))`,
54
- }, children: people.map((c, i) => (jsx(NiceAnimatedPerson, { character: c, score: 10, startPose: "idle", onReady: (fx) => (refs.current[i] = fx) }, i))) }), jsxs("div", { style: { display: "flex", gap: 8 }, children: [jsx(Oe, { variant: "ghost", size: "sm", onClick: wave, children: "Wave" }), jsx(Oe, { variant: "ghost", size: "sm", onClick: cheer, children: "Cheer" })] })] }));
54
+ }, children: people.map((c, i) => (jsx(NiceAnimatedPerson, { character: c, score: 10, startPose: "idle", onReady: (fx) => (refs.current[i] = fx) }, i))) }), jsxs("div", { style: { display: "flex", gap: 8 }, children: [jsx(We, { variant: "ghost", size: "sm", onClick: wave, children: "Wave" }), jsx(We, { variant: "ghost", size: "sm", onClick: cheer, children: "Cheer" })] })] }));
55
55
  };
56
56
 
57
57
  export { NiceAudience as default };
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { useCallback } from 'react';
3
- import { NiceButton as Oe, NiceSlider as Ar, NiceTextArea as ms } from '../ui/dist/index.js';
3
+ import { NiceButton as We, NiceSlider as so, NiceTextArea as Os } from '../packages/ui/dist/index.js';
4
4
 
5
5
  const variantMap = {
6
6
  "dark": "secondary",
@@ -15,7 +15,7 @@ const sizeMap = {
15
15
  "md": "md",
16
16
  };
17
17
  const Button = ({ variant = "dark", size = "md", className = "", children, disabled, onClick, title, style, }) => {
18
- return (jsx(Oe, { variant: variantMap[variant], size: sizeMap[size], className: className, disabled: disabled, onClick: onClick, "aria-label": title, style: style, children: children }));
18
+ return (jsx(We, { variant: variantMap[variant], size: sizeMap[size], className: className, disabled: disabled, onClick: onClick, "aria-label": title, style: style, children: children }));
19
19
  };
20
20
  const RangeInput = ({ accentColor, style, className = "", value, min = 0, max = 100, step = 1, onChange, onMouseUp, }) => {
21
21
  const handleChange = useCallback((val) => {
@@ -31,7 +31,7 @@ const RangeInput = ({ accentColor, style, className = "", value, min = 0, max =
31
31
  onMouseUp({});
32
32
  }
33
33
  }, [onChange, onMouseUp]);
34
- return (jsx(Ar, { value: typeof value === "number" ? value : Number(value) || 0, min: Number(min), max: Number(max), step: Number(step), className: className, style: { ...style, "--nice-accent": accentColor }, onChange: handleChange, showValue: false }));
34
+ return (jsx(so, { value: typeof value === "number" ? value : Number(value) || 0, min: Number(min), max: Number(max), step: Number(step), className: className, style: { ...style, "--nice-accent": accentColor }, onChange: handleChange, showValue: false }));
35
35
  };
36
36
  const TextArea = ({ className = "", value, onChange, rows, placeholder, disabled, style, }) => {
37
37
  const handleChange = useCallback((newValue) => {
@@ -43,7 +43,7 @@ const TextArea = ({ className = "", value, onChange, rows, placeholder, disabled
43
43
  onChange(syntheticEvent);
44
44
  }
45
45
  }, [onChange]);
46
- return (jsx(ms, { className: className, value: typeof value === "string" ? value : String(value !== null && value !== void 0 ? value : ""), onChange: handleChange, rows: rows, placeholder: placeholder, disabled: disabled, style: style }));
46
+ return (jsx(Os, { className: className, value: typeof value === "string" ? value : String(value !== null && value !== void 0 ? value : ""), onChange: handleChange, rows: rows, placeholder: placeholder, disabled: disabled, style: style }));
47
47
  };
48
48
 
49
49
  export { Button, RangeInput, TextArea };
@@ -108,7 +108,7 @@ function useYjsCollaboration(config) {
108
108
  var _a, _b, _c, _d;
109
109
  try {
110
110
  // Dynamic import — allows the package to be optional
111
- const Y = await import('yjs');
111
+ const Y = await import('../node_modules/yjs/dist/yjs.js');
112
112
  const doc = new Y.Doc();
113
113
  docRef.current = doc;
114
114
  const objectsMap = doc.getMap('objects');
@@ -174,7 +174,7 @@ function useYjsCollaboration(config) {
174
174
  // Connect provider
175
175
  if (config.provider.type === 'websocket' && config.provider.serverUrl) {
176
176
  try {
177
- const wsModule = await import('y-websocket');
177
+ const wsModule = await import('../node_modules/y-websocket/src/y-websocket.js');
178
178
  const provider = new wsModule.WebsocketProvider(config.provider.serverUrl, config.provider.roomId, doc);
179
179
  providerRef.current = provider;
180
180
  (_b = (_a = provider).on) === null || _b === void 0 ? void 0 : _b.call(_a, 'status', (e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"yjsCollaboration.js","sources":["../../../src/core/yjsCollaboration.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yjsCollaboration.js","sources":["../../../src/core/yjsCollaboration.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -2,14 +2,14 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useRef, useState, useMemo, useEffect, useCallback } from 'react';
3
3
  import styles from './GameAsset2dEditor.module.css.js';
4
4
  import { useGameAssetEditor } from './useGameAssetEditor.js';
5
- import { NiceButton as Oe, NiceTextInput as _t, NiceSelect as nn, NiceNumberInput as Ri } from '../ui/dist/index.js';
5
+ import { NiceButton as We, NiceTextInput as Tt, NiceSelect as fn, NiceNumberInput as ir } from '../packages/ui/dist/index.js';
6
6
 
7
7
  /* ────────────────────────────────────────────────────────────────
8
8
  MENU BAR
9
9
  ──────────────────────────────────────────────────────────────── */
10
10
  const MenuBar = ({ api }) => {
11
11
  const fileInputRef = useRef(null);
12
- return (jsxs("div", { className: styles.menuBar, children: [jsx("h3", { children: "\uD83C\uDFAE Game Asset Editor" }), jsxs("div", { className: styles.menuGroup, children: [jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => api.newProject('New Project'), children: "\uD83D\uDCC4 New" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "\uD83D\uDCC2 Open" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.saveProject, children: "\uD83D\uDCBE Save" })] }), jsx("div", { className: styles.spacer }), jsxs("div", { className: styles.menuGroup, children: [jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.undo, disabled: !api.canUndo, children: "\u21A9 Undo" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.redo, disabled: !api.canRedo, children: "\u21AA Redo" })] }), jsx("input", { ref: fileInputRef, type: "file", accept: ".json", style: { display: 'none' }, onChange: e => {
12
+ return (jsxs("div", { className: styles.menuBar, children: [jsx("h3", { children: "\uD83C\uDFAE Game Asset Editor" }), jsxs("div", { className: styles.menuGroup, children: [jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => api.newProject('New Project'), children: "\uD83D\uDCC4 New" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "\uD83D\uDCC2 Open" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.saveProject, children: "\uD83D\uDCBE Save" })] }), jsx("div", { className: styles.spacer }), jsxs("div", { className: styles.menuGroup, children: [jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.undo, disabled: !api.canUndo, children: "\u21A9 Undo" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.redo, disabled: !api.canRedo, children: "\u21AA Redo" })] }), jsx("input", { ref: fileInputRef, type: "file", accept: ".json", style: { display: 'none' }, onChange: e => {
13
13
  var _a;
14
14
  const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
15
15
  if (file)
@@ -27,7 +27,7 @@ const ModeTabs = ({ api }) => {
27
27
  { id: 'animation', label: 'Animation', icon: '🎬' },
28
28
  { id: 'effects', label: 'Effects', icon: '✨' },
29
29
  ];
30
- return (jsx("div", { className: styles.modeTabs, children: modes.map(mode => (jsxs(Oe, { className: `${styles.modeTab} ${api.editorState.mode === mode.id ? styles.active : ''}`, variant: api.editorState.mode === mode.id ? 'primary' : 'ghost', onClick: () => api.setMode(mode.id), children: [mode.icon, " ", mode.label] }, mode.id))) }));
30
+ return (jsx("div", { className: styles.modeTabs, children: modes.map(mode => (jsxs(We, { className: `${styles.modeTab} ${api.editorState.mode === mode.id ? styles.active : ''}`, variant: api.editorState.mode === mode.id ? 'primary' : 'ghost', onClick: () => api.setMode(mode.id), children: [mode.icon, " ", mode.label] }, mode.id))) }));
31
31
  };
32
32
  /* ────────────────────────────────────────────────────────────────
33
33
  TILE MAP TOOLBAR
@@ -42,7 +42,7 @@ const TileMapToolbar = ({ api }) => {
42
42
  { id: 'line', icon: '╱', label: 'Line' },
43
43
  { id: 'eyedropper', icon: '💧', label: 'Eyedropper' },
44
44
  ];
45
- return (jsxs("div", { className: styles.toolbar, children: [jsx("div", { className: styles.toolGroup, children: tools.map(tool => (jsx(Oe, { className: `${styles.toolBtn} ${api.editorState.tileMapTool === tool.id ? styles.active : ''}`, variant: api.editorState.tileMapTool === tool.id ? 'primary' : 'ghost', size: "sm", onClick: () => api.setTileMapTool(tool.id), title: tool.label, children: tool.icon }, tool.id))) }), jsx("div", { className: styles.spacer }), jsx(Oe, { className: `${styles.toolBtn} ${api.editorState.showGrid ? styles.active : ''}`, variant: api.editorState.showGrid ? 'primary' : 'ghost', size: "sm", onClick: api.toggleGrid, title: "Toggle Grid", children: "\u229E" }), jsx(Oe, { className: `${styles.toolBtn} ${api.editorState.showCollision ? styles.active : ''}`, variant: api.editorState.showCollision ? 'primary' : 'ghost', size: "sm", onClick: api.toggleCollision, title: "Show Collision", children: "\u25C7" }), jsx(Oe, { className: `${styles.toolBtn} ${api.editorState.snapToGrid ? styles.active : ''}`, variant: api.editorState.snapToGrid ? 'primary' : 'ghost', size: "sm", onClick: api.toggleSnap, title: "Snap to Grid", children: "\u22A1" })] }));
45
+ return (jsxs("div", { className: styles.toolbar, children: [jsx("div", { className: styles.toolGroup, children: tools.map(tool => (jsx(We, { className: `${styles.toolBtn} ${api.editorState.tileMapTool === tool.id ? styles.active : ''}`, variant: api.editorState.tileMapTool === tool.id ? 'primary' : 'ghost', size: "sm", onClick: () => api.setTileMapTool(tool.id), title: tool.label, children: tool.icon }, tool.id))) }), jsx("div", { className: styles.spacer }), jsx(We, { className: `${styles.toolBtn} ${api.editorState.showGrid ? styles.active : ''}`, variant: api.editorState.showGrid ? 'primary' : 'ghost', size: "sm", onClick: api.toggleGrid, title: "Toggle Grid", children: "\u229E" }), jsx(We, { className: `${styles.toolBtn} ${api.editorState.showCollision ? styles.active : ''}`, variant: api.editorState.showCollision ? 'primary' : 'ghost', size: "sm", onClick: api.toggleCollision, title: "Show Collision", children: "\u25C7" }), jsx(We, { className: `${styles.toolBtn} ${api.editorState.snapToGrid ? styles.active : ''}`, variant: api.editorState.snapToGrid ? 'primary' : 'ghost', size: "sm", onClick: api.toggleSnap, title: "Snap to Grid", children: "\u22A1" })] }));
46
46
  };
47
47
  /* ────────────────────────────────────────────────────────────────
48
48
  SPRITE SHEET TOOLBAR
@@ -50,14 +50,14 @@ const TileMapToolbar = ({ api }) => {
50
50
  const SpriteSheetToolbar = ({ api }) => {
51
51
  const [sliceWidth, setSliceWidth] = useState(16);
52
52
  const [sliceHeight, setSliceHeight] = useState(16);
53
- return (jsxs("div", { className: styles.toolbar, children: [jsxs("div", { className: styles.toolGroup, children: [jsx(Oe, { className: `${styles.toolBtn} ${api.editorState.spriteSheetTool === 'select' ? styles.active : ''}`, variant: api.editorState.spriteSheetTool === 'select' ? 'primary' : 'ghost', size: "sm", onClick: () => api.setSpriteSheetTool('select'), title: "Select", children: "\u2B1A" }), jsx(Oe, { className: `${styles.toolBtn} ${api.editorState.spriteSheetTool === 'slice' ? styles.active : ''}`, variant: api.editorState.spriteSheetTool === 'slice' ? 'primary' : 'ghost', size: "sm", onClick: () => api.setSpriteSheetTool('slice'), title: "Manual Slice", children: "\u2702" })] }), jsx("div", { className: styles.spacer }), jsxs("label", { style: { fontSize: 11, color: '#8892a8' }, children: ["Frame size:", jsx(Ri, { value: sliceWidth, onChange: val => setSliceWidth(val !== null && val !== void 0 ? val : 16), style: { width: 40, margin: '0 4px' }, className: styles.panelInput }), "\u00D7", jsx(Ri, { value: sliceHeight, onChange: val => setSliceHeight(val !== null && val !== void 0 ? val : 16), style: { width: 40, marginLeft: 4 }, className: styles.panelInput })] }), jsx(Oe, { className: styles.btnSecondary, variant: "ghost", onClick: () => api.autoSlice(sliceWidth, sliceHeight), style: { marginLeft: 8 }, children: "Auto Slice" }), jsx(Oe, { className: styles.btnSecondary, variant: "ghost", onClick: api.detectSprites, style: { marginLeft: 4 }, children: "Detect Sprites" })] }));
53
+ return (jsxs("div", { className: styles.toolbar, children: [jsxs("div", { className: styles.toolGroup, children: [jsx(We, { className: `${styles.toolBtn} ${api.editorState.spriteSheetTool === 'select' ? styles.active : ''}`, variant: api.editorState.spriteSheetTool === 'select' ? 'primary' : 'ghost', size: "sm", onClick: () => api.setSpriteSheetTool('select'), title: "Select", children: "\u2B1A" }), jsx(We, { className: `${styles.toolBtn} ${api.editorState.spriteSheetTool === 'slice' ? styles.active : ''}`, variant: api.editorState.spriteSheetTool === 'slice' ? 'primary' : 'ghost', size: "sm", onClick: () => api.setSpriteSheetTool('slice'), title: "Manual Slice", children: "\u2702" })] }), jsx("div", { className: styles.spacer }), jsxs("label", { style: { fontSize: 11, color: '#8892a8' }, children: ["Frame size:", jsx(ir, { value: sliceWidth, onChange: val => setSliceWidth(val !== null && val !== void 0 ? val : 16), style: { width: 40, margin: '0 4px' }, className: styles.panelInput }), "\u00D7", jsx(ir, { value: sliceHeight, onChange: val => setSliceHeight(val !== null && val !== void 0 ? val : 16), style: { width: 40, marginLeft: 4 }, className: styles.panelInput })] }), jsx(We, { className: styles.btnSecondary, variant: "ghost", onClick: () => api.autoSlice(sliceWidth, sliceHeight), style: { marginLeft: 8 }, children: "Auto Slice" }), jsx(We, { className: styles.btnSecondary, variant: "ghost", onClick: api.detectSprites, style: { marginLeft: 4 }, children: "Detect Sprites" })] }));
54
54
  };
55
55
  /* ────────────────────────────────────────────────────────────────
56
56
  TILE PALETTE (LEFT PANEL)
57
57
  ──────────────────────────────────────────────────────────────── */
58
58
  const TilePalette = ({ api }) => {
59
59
  const fileInputRef = useRef(null);
60
- return (jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Tiles" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: api.project.tileSets.length === 0 ? (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "No tiles yet" }), jsx(Oe, { className: styles.btnSecondary, variant: "ghost", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Import Tiles" })] })) : (jsx("div", { className: styles.tilePalette, children: api.project.tileSets.map(tile => (jsx("div", { className: `${styles.tileItem} ${api.editorState.selectedTileId === tile.id ? styles.selected : ''}`, onClick: () => api.selectTile(tile.id), title: tile.name, children: jsx("img", { src: tile.thumbnail, alt: tile.name }) }, tile.id))) })) }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
60
+ return (jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Tiles" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: api.project.tileSets.length === 0 ? (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "No tiles yet" }), jsx(We, { className: styles.btnSecondary, variant: "ghost", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Import Tiles" })] })) : (jsx("div", { className: styles.tilePalette, children: api.project.tileSets.map(tile => (jsx("div", { className: `${styles.tileItem} ${api.editorState.selectedTileId === tile.id ? styles.selected : ''}`, onClick: () => api.selectTile(tile.id), title: tile.name, children: jsx("img", { src: tile.thumbnail, alt: tile.name }) }, tile.id))) })) }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
61
61
  var _a;
62
62
  const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
63
63
  if (file)
@@ -70,10 +70,10 @@ const TilePalette = ({ api }) => {
70
70
  ──────────────────────────────────────────────────────────────── */
71
71
  const LayersPanel = ({ api }) => {
72
72
  const activeMap = api.project.tileMaps.find(m => m.id === api.editorState.activeTileMapId);
73
- return (jsxs("div", { className: styles.rightPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Layers" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.addLayer, disabled: !activeMap, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: activeMap ? (jsx("div", { className: styles.layersList, children: [...activeMap.layers].reverse().map(layer => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeLayerId === layer.id ? styles.selected : ''}`, onClick: () => api.selectLayer(layer.id), children: [jsx(Oe, { className: `${styles.layerVisibility} ${!layer.visible ? styles.hidden : ''}`, variant: "ghost", size: "sm", onClick: e => {
73
+ return (jsxs("div", { className: styles.rightPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Layers" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: api.addLayer, disabled: !activeMap, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: activeMap ? (jsx("div", { className: styles.layersList, children: [...activeMap.layers].reverse().map(layer => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeLayerId === layer.id ? styles.selected : ''}`, onClick: () => api.selectLayer(layer.id), children: [jsx(We, { className: `${styles.layerVisibility} ${!layer.visible ? styles.hidden : ''}`, variant: "ghost", size: "sm", onClick: e => {
74
74
  e.stopPropagation();
75
75
  api.toggleLayerVisibility(layer.id);
76
- }, children: layer.visible ? '👁' : '○' }), jsx("span", { className: styles.layerName, children: layer.name }), jsxs("span", { className: styles.layerOpacity, children: [Math.round(layer.opacity * 100), "%"] })] }, layer.id))) })) : (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "No tile map selected" }) })) }), jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Maps" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => api.createTileMap('New Map', 32, 32), children: "+ New" })] }), jsx("div", { className: styles.panelContent, children: api.project.tileMaps.map(map => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeTileMapId === map.id ? styles.selected : ''}`, onClick: () => api.selectTileMap(map.id), children: [jsx("span", { className: styles.layerName, children: map.name }), jsxs("span", { className: styles.layerOpacity, children: [map.width, "\u00D7", map.height] })] }, map.id))) })] }));
76
+ }, children: layer.visible ? '👁' : '○' }), jsx("span", { className: styles.layerName, children: layer.name }), jsxs("span", { className: styles.layerOpacity, children: [Math.round(layer.opacity * 100), "%"] })] }, layer.id))) })) : (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "No tile map selected" }) })) }), jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Maps" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => api.createTileMap('New Map', 32, 32), children: "+ New" })] }), jsx("div", { className: styles.panelContent, children: api.project.tileMaps.map(map => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeTileMapId === map.id ? styles.selected : ''}`, onClick: () => api.selectTileMap(map.id), children: [jsx("span", { className: styles.layerName, children: map.name }), jsxs("span", { className: styles.layerOpacity, children: [map.width, "\u00D7", map.height] })] }, map.id))) })] }));
77
77
  };
78
78
  /* ────────────────────────────────────────────────────────────────
79
79
  TILE MAP CANVAS
@@ -161,7 +161,7 @@ const TileMapCanvas = ({ api }) => {
161
161
  if (isDragging && (api.editorState.tileMapTool === 'brush' || api.editorState.tileMapTool === 'eraser')) {
162
162
  handleCanvasClick(e);
163
163
  }
164
- } })) : (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "Create or select a tile map to start editing" }), jsx(Oe, { className: styles.btnPrimary, variant: "primary", onClick: () => api.createTileMap('New Map', 32, 32), children: "Create Tile Map" })] })) }));
164
+ } })) : (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "Create or select a tile map to start editing" }), jsx(We, { className: styles.btnPrimary, variant: "primary", onClick: () => api.createTileMap('New Map', 32, 32), children: "Create Tile Map" })] })) }));
165
165
  };
166
166
  /* ────────────────────────────────────────────────────────────────
167
167
  SPRITE SHEET CANVAS
@@ -229,7 +229,7 @@ const SpriteSheetCanvas = ({ api }) => {
229
229
  }, [activeSheet, api]);
230
230
  return (jsx("div", { className: styles.viewport, children: activeSheet ? (jsx("canvas", { ref: canvasRef, className: styles.viewportCanvas, style: {
231
231
  transform: `translate(-50%, -50%) scale(${api.editorState.zoom})`,
232
- }, onClick: handleFrameClick })) : (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "Import a sprite sheet to start" }), jsx(Oe, { className: styles.btnPrimary, variant: "primary", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Import Sprite Sheet" }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
232
+ }, onClick: handleFrameClick })) : (jsxs("div", { className: styles.emptyState, children: [jsx("div", { className: styles.emptyStateText, children: "Import a sprite sheet to start" }), jsx(We, { className: styles.btnPrimary, variant: "primary", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "Import Sprite Sheet" }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
233
233
  var _a;
234
234
  const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
235
235
  if (file)
@@ -242,7 +242,7 @@ const SpriteSheetCanvas = ({ api }) => {
242
242
  ──────────────────────────────────────────────────────────────── */
243
243
  const SpriteSheetsList = ({ api }) => {
244
244
  const fileInputRef = useRef(null);
245
- return (jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Sprite Sheets" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Import" })] }), jsx("div", { className: styles.panelContent, children: api.project.spriteSheets.length === 0 ? (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "No sprite sheets" }) })) : (jsx("div", { className: styles.layersList, children: api.project.spriteSheets.map(sheet => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeSpriteSheetId === sheet.id ? styles.selected : ''}`, onClick: () => api.selectSpriteSheet(sheet.id), children: [jsx("span", { className: styles.layerName, children: sheet.name }), jsxs("span", { className: styles.layerOpacity, children: [sheet.frames.length, " frames"] })] }, sheet.id))) })) }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
245
+ return (jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Sprite Sheets" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, children: "+ Import" })] }), jsx("div", { className: styles.panelContent, children: api.project.spriteSheets.length === 0 ? (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "No sprite sheets" }) })) : (jsx("div", { className: styles.layersList, children: api.project.spriteSheets.map(sheet => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeSpriteSheetId === sheet.id ? styles.selected : ''}`, onClick: () => api.selectSpriteSheet(sheet.id), children: [jsx("span", { className: styles.layerName, children: sheet.name }), jsxs("span", { className: styles.layerOpacity, children: [sheet.frames.length, " frames"] })] }, sheet.id))) })) }), jsx("input", { ref: fileInputRef, type: "file", accept: "image/*", style: { display: 'none' }, onChange: e => {
246
246
  var _a;
247
247
  const file = (_a = e.target.files) === null || _a === void 0 ? void 0 : _a[0];
248
248
  if (file)
@@ -263,7 +263,7 @@ const FramesPanel = ({ api }) => {
263
263
  setAnimName('');
264
264
  }
265
265
  }, [animName, api]);
266
- return (jsxs("div", { className: styles.rightPanel, children: [jsx("div", { className: styles.panelHeader, children: jsxs("span", { children: ["Frames (", (_a = activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.frames.length) !== null && _a !== void 0 ? _a : 0, ")"] }) }), jsx("div", { className: styles.panelContent, style: { maxHeight: 200 }, children: activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.frames.map(frame => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.selectedFrameIds.includes(frame.id) ? styles.selected : ''}`, onClick: () => api.selectFrames([frame.id]), children: [jsx("span", { className: styles.layerName, children: frame.name }), jsxs("span", { className: styles.layerOpacity, children: [frame.width, "\u00D7", frame.height] })] }, frame.id))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Animations" }) }), jsxs("div", { className: styles.panelContent, children: [api.editorState.selectedFrameIds.length > 0 && (jsxs("div", { className: styles.panelSection, children: [jsx(_t, { className: styles.panelInput, placeholder: "Animation name...", value: animName, onChange: val => setAnimName(val) }), jsxs(Oe, { className: styles.btnPrimary, variant: "primary", onClick: createAnimationFromSelection, style: { marginTop: 8, width: '100%' }, disabled: !animName, children: ["Create from ", api.editorState.selectedFrameIds.length, " frames"] })] })), activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.animations.map(anim => (jsxs("div", { className: styles.layerItem, children: [jsx("span", { className: styles.layerName, children: anim.name }), jsxs("span", { className: styles.layerOpacity, children: [anim.frameIds.length, "f"] }), jsx(Oe, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: () => api.removeAnimation(anim.id), children: "\u00D7" })] }, anim.id)))] })] }));
266
+ return (jsxs("div", { className: styles.rightPanel, children: [jsx("div", { className: styles.panelHeader, children: jsxs("span", { children: ["Frames (", (_a = activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.frames.length) !== null && _a !== void 0 ? _a : 0, ")"] }) }), jsx("div", { className: styles.panelContent, style: { maxHeight: 200 }, children: activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.frames.map(frame => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.selectedFrameIds.includes(frame.id) ? styles.selected : ''}`, onClick: () => api.selectFrames([frame.id]), children: [jsx("span", { className: styles.layerName, children: frame.name }), jsxs("span", { className: styles.layerOpacity, children: [frame.width, "\u00D7", frame.height] })] }, frame.id))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Animations" }) }), jsxs("div", { className: styles.panelContent, children: [api.editorState.selectedFrameIds.length > 0 && (jsxs("div", { className: styles.panelSection, children: [jsx(Tt, { className: styles.panelInput, placeholder: "Animation name...", value: animName, onChange: val => setAnimName(val) }), jsxs(We, { className: styles.btnPrimary, variant: "primary", onClick: createAnimationFromSelection, style: { marginTop: 8, width: '100%' }, disabled: !animName, children: ["Create from ", api.editorState.selectedFrameIds.length, " frames"] })] })), activeSheet === null || activeSheet === void 0 ? void 0 : activeSheet.animations.map(anim => (jsxs("div", { className: styles.layerItem, children: [jsx("span", { className: styles.layerName, children: anim.name }), jsxs("span", { className: styles.layerOpacity, children: [anim.frameIds.length, "f"] }), jsx(We, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: () => api.removeAnimation(anim.id), children: "\u00D7" })] }, anim.id)))] })] }));
267
267
  };
268
268
  /* ────────────────────────────────────────────────────────────────
269
269
  ANIMATION STATE MACHINE
@@ -282,7 +282,7 @@ const AnimationStateMachineView = ({ api }) => {
282
282
  }
283
283
  return result;
284
284
  }, [api.project.spriteSheets]);
285
- return (jsxs("div", { style: { display: 'flex', flex: 1, overflow: 'hidden' }, children: [jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "State Machines" }), jsx("button", { className: styles.menuBtn, onClick: () => api.createStateMachine('New State Machine'), children: "+ New" })] }), jsx("div", { className: styles.panelContent, style: { maxHeight: 150 }, children: api.project.stateMachines.map(sm => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeStateMachineId === sm.id ? styles.selected : ''}`, onClick: () => api.selectStateMachine(sm.id), children: [jsx("span", { className: styles.layerName, children: sm.name }), jsxs("span", { className: styles.layerOpacity, children: [sm.states.length, " states"] })] }, sm.id))) }), activeSM && (jsxs(Fragment, { children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "States" }) }), jsxs("div", { className: styles.panelContent, children: [jsxs("div", { className: styles.panelSection, children: [jsx(_t, { className: styles.panelInput, placeholder: "State name...", value: newStateName, onChange: val => setNewStateName(val) }), allAnimations.length > 0 && newStateName && (jsx(nn, { className: styles.panelInput, style: { marginTop: 4 }, onChange: val => {
285
+ return (jsxs("div", { style: { display: 'flex', flex: 1, overflow: 'hidden' }, children: [jsxs("div", { className: styles.leftPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "State Machines" }), jsx("button", { className: styles.menuBtn, onClick: () => api.createStateMachine('New State Machine'), children: "+ New" })] }), jsx("div", { className: styles.panelContent, style: { maxHeight: 150 }, children: api.project.stateMachines.map(sm => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.activeStateMachineId === sm.id ? styles.selected : ''}`, onClick: () => api.selectStateMachine(sm.id), children: [jsx("span", { className: styles.layerName, children: sm.name }), jsxs("span", { className: styles.layerOpacity, children: [sm.states.length, " states"] })] }, sm.id))) }), activeSM && (jsxs(Fragment, { children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "States" }) }), jsxs("div", { className: styles.panelContent, children: [jsxs("div", { className: styles.panelSection, children: [jsx(Tt, { className: styles.panelInput, placeholder: "State name...", value: newStateName, onChange: val => setNewStateName(val) }), allAnimations.length > 0 && newStateName && (jsx(fn, { className: styles.panelInput, style: { marginTop: 4 }, onChange: val => {
286
286
  if (val) {
287
287
  api.addState(newStateName, val);
288
288
  setNewStateName('');
@@ -293,7 +293,7 @@ const AnimationStateMachineView = ({ api }) => {
293
293
  value: anim.id,
294
294
  label: `${anim.sheetName}: ${anim.name}`
295
295
  }))
296
- ] }))] }), activeSM.states.map(state => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.selectedStateId === state.id ? styles.selected : ''} ${activeSM.entryStateId === state.id ? styles.entry : ''}`, onClick: () => api.selectState(state.id), children: [jsxs("span", { className: styles.layerName, children: [activeSM.entryStateId === state.id && '▶ ', state.name] }), jsx(Oe, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: e => {
296
+ ] }))] }), activeSM.states.map(state => (jsxs("div", { className: `${styles.layerItem} ${api.editorState.selectedStateId === state.id ? styles.selected : ''} ${activeSM.entryStateId === state.id ? styles.entry : ''}`, onClick: () => api.selectState(state.id), children: [jsxs("span", { className: styles.layerName, children: [activeSM.entryStateId === state.id && '▶ ', state.name] }), jsx(We, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: e => {
297
297
  e.stopPropagation();
298
298
  api.removeState(state.id);
299
299
  }, children: "\u00D7" })] }, state.id)))] })] }))] }), jsx("div", { className: styles.stateGraph, children: activeSM ? (jsxs("svg", { width: "100%", height: "100%", children: [jsx("defs", { children: jsx("marker", { id: "arrowhead", markerWidth: "10", markerHeight: "7", refX: "9", refY: "3.5", orient: "auto", children: jsx("polygon", { points: "0 0, 10 3.5, 0 7", fill: "#4a5a7e" }) }) }), activeSM.transitions.map(trans => {
@@ -305,12 +305,12 @@ const AnimationStateMachineView = ({ api }) => {
305
305
  }), activeSM.states.map(state => {
306
306
  var _a, _b;
307
307
  return (jsx("foreignObject", { x: state.position.x, y: state.position.y, width: 120, height: 50, children: jsxs("div", { className: `${styles.stateNode} ${api.editorState.selectedStateId === state.id ? styles.selected : ''} ${activeSM.entryStateId === state.id ? styles.entry : ''}`, onClick: () => api.selectState(state.id), children: [jsx("div", { className: styles.stateNodeName, children: state.name }), jsx("div", { className: styles.stateNodeAnim, children: (_b = (_a = allAnimations.find(a => a.id === state.animationId)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : 'No animation' })] }) }, state.id));
308
- })] })) : (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "Create a state machine to design animation flows" }) })) }), jsxs("div", { className: styles.rightPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Parameters" }), jsx(Oe, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => api.addParameter('new_param', 'trigger'), disabled: !activeSM, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: activeSM === null || activeSM === void 0 ? void 0 : activeSM.parameters.map(param => (jsxs("div", { className: styles.layerItem, children: [jsx("span", { className: styles.layerOpacity, children: param.type }), jsx("span", { className: styles.layerName, children: param.name }), jsx(Oe, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: () => api.removeParameter(param.id), children: "\u00D7" })] }, param.id))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Transitions" }) }), jsxs("div", { className: styles.panelContent, children: [activeSM === null || activeSM === void 0 ? void 0 : activeSM.transitions.map(trans => {
308
+ })] })) : (jsx("div", { className: styles.emptyState, children: jsx("div", { className: styles.emptyStateText, children: "Create a state machine to design animation flows" }) })) }), jsxs("div", { className: styles.rightPanel, children: [jsxs("div", { className: styles.panelHeader, children: [jsx("span", { children: "Parameters" }), jsx(We, { className: styles.menuBtn, variant: "ghost", size: "sm", onClick: () => api.addParameter('new_param', 'trigger'), disabled: !activeSM, children: "+ Add" })] }), jsx("div", { className: styles.panelContent, children: activeSM === null || activeSM === void 0 ? void 0 : activeSM.parameters.map(param => (jsxs("div", { className: styles.layerItem, children: [jsx("span", { className: styles.layerOpacity, children: param.type }), jsx("span", { className: styles.layerName, children: param.name }), jsx(We, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: () => api.removeParameter(param.id), children: "\u00D7" })] }, param.id))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Transitions" }) }), jsxs("div", { className: styles.panelContent, children: [activeSM === null || activeSM === void 0 ? void 0 : activeSM.transitions.map(trans => {
309
309
  var _a, _b;
310
310
  const from = activeSM.states.find(s => s.id === trans.fromStateId);
311
311
  const to = activeSM.states.find(s => s.id === trans.toStateId);
312
- return (jsxs("div", { className: styles.layerItem, children: [jsxs("span", { className: styles.layerName, children: [(_a = from === null || from === void 0 ? void 0 : from.name) !== null && _a !== void 0 ? _a : '?', " \u2192 ", (_b = to === null || to === void 0 ? void 0 : to.name) !== null && _b !== void 0 ? _b : '?'] }), jsx(Oe, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: () => api.removeTransition(trans.id), children: "\u00D7" })] }, trans.id));
313
- }), api.editorState.selectedStateId && (jsxs("div", { className: styles.panelSection, style: { marginTop: 12 }, children: [jsx("label", { className: styles.panelLabel, children: "Add transition to:" }), jsx(nn, { className: styles.panelInput, onChange: val => {
312
+ return (jsxs("div", { className: styles.layerItem, children: [jsxs("span", { className: styles.layerName, children: [(_a = from === null || from === void 0 ? void 0 : from.name) !== null && _a !== void 0 ? _a : '?', " \u2192 ", (_b = to === null || to === void 0 ? void 0 : to.name) !== null && _b !== void 0 ? _b : '?'] }), jsx(We, { className: styles.effectRemove, variant: "ghost", size: "sm", onClick: () => api.removeTransition(trans.id), children: "\u00D7" })] }, trans.id));
313
+ }), api.editorState.selectedStateId && (jsxs("div", { className: styles.panelSection, style: { marginTop: 12 }, children: [jsx("label", { className: styles.panelLabel, children: "Add transition to:" }), jsx(fn, { className: styles.panelInput, onChange: val => {
314
314
  if (val && api.editorState.selectedStateId) {
315
315
  api.addTransition(api.editorState.selectedStateId, val);
316
316
  }
@@ -339,7 +339,7 @@ const EffectsView = ({ api }) => {
339
339
  { type: 'shadow', label: 'Shadow' },
340
340
  { type: 'palette-swap', label: 'Palette Swap' },
341
341
  ];
342
- return (jsxs("div", { style: { display: 'flex', flex: 1, overflow: 'hidden' }, children: [jsxs("div", { className: styles.leftPanel, children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Add Effect" }) }), jsx("div", { className: styles.panelContent, children: effectTypes.map(({ type, label }) => (jsx(Oe, { className: styles.layerItem, variant: "ghost", onClick: () => api.addEffect(type), style: { cursor: 'pointer', border: 'none', textAlign: 'left' }, children: jsx("span", { className: styles.layerName, children: label }) }, type))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Presets" }) }), jsxs("div", { className: styles.panelContent, children: [jsxs("div", { className: styles.panelSection, children: [jsx(_t, { className: styles.panelInput, placeholder: "Preset name...", value: presetName, onChange: val => setPresetName(val) }), jsx(Oe, { className: styles.btnSecondary, variant: "ghost", style: { marginTop: 4, width: '100%' }, onClick: () => {
342
+ return (jsxs("div", { style: { display: 'flex', flex: 1, overflow: 'hidden' }, children: [jsxs("div", { className: styles.leftPanel, children: [jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Add Effect" }) }), jsx("div", { className: styles.panelContent, children: effectTypes.map(({ type, label }) => (jsx(We, { className: styles.layerItem, variant: "ghost", onClick: () => api.addEffect(type), style: { cursor: 'pointer', border: 'none', textAlign: 'left' }, children: jsx("span", { className: styles.layerName, children: label }) }, type))) }), jsx("div", { className: styles.panelHeader, children: jsx("span", { children: "Presets" }) }), jsxs("div", { className: styles.panelContent, children: [jsxs("div", { className: styles.panelSection, children: [jsx(Tt, { className: styles.panelInput, placeholder: "Preset name...", value: presetName, onChange: val => setPresetName(val) }), jsx(We, { className: styles.btnSecondary, variant: "ghost", style: { marginTop: 4, width: '100%' }, onClick: () => {
343
343
  if (presetName) {
344
344
  api.saveEffectPreset(presetName);
345
345
  setPresetName('');
@@ -352,7 +352,7 @@ const EffectsView = ({ api }) => {
352
352
  const StatusBar = ({ api }) => {
353
353
  const activeMap = api.project.tileMaps.find(m => m.id === api.editorState.activeTileMapId);
354
354
  const activeSheet = api.project.spriteSheets.find(s => s.id === api.editorState.activeSpriteSheetId);
355
- return (jsxs("div", { className: styles.statusBar, children: [jsxs("span", { className: styles.statusItem, children: ["Mode: ", api.editorState.mode] }), api.editorState.mode === 'tilemap' && activeMap && (jsxs(Fragment, { children: [jsxs("span", { className: styles.statusItem, children: ["Map: ", activeMap.name, " (", activeMap.width, "\u00D7", activeMap.height, ")"] }), jsxs("span", { className: styles.statusItem, children: ["Tile: ", activeMap.tileWidth, "\u00D7", activeMap.tileHeight, "px"] })] })), api.editorState.mode === 'spritesheet' && activeSheet && (jsxs(Fragment, { children: [jsxs("span", { className: styles.statusItem, children: ["Sheet: ", activeSheet.name] }), jsxs("span", { className: styles.statusItem, children: ["Selected: ", api.editorState.selectedFrameIds.length, " frames"] })] })), jsxs("div", { className: styles.zoomControl, children: [jsx(Oe, { className: styles.zoomBtn, variant: "ghost", size: "sm", onClick: () => api.setZoom(api.editorState.zoom - 0.25), children: "\u2212" }), jsxs("span", { children: [Math.round(api.editorState.zoom * 100), "%"] }), jsx(Oe, { className: styles.zoomBtn, variant: "ghost", size: "sm", onClick: () => api.setZoom(api.editorState.zoom + 0.25), children: "+" }), jsx(Oe, { className: styles.zoomBtn, variant: "ghost", size: "sm", onClick: () => api.setZoom(1), children: "\u2299" })] })] }));
355
+ return (jsxs("div", { className: styles.statusBar, children: [jsxs("span", { className: styles.statusItem, children: ["Mode: ", api.editorState.mode] }), api.editorState.mode === 'tilemap' && activeMap && (jsxs(Fragment, { children: [jsxs("span", { className: styles.statusItem, children: ["Map: ", activeMap.name, " (", activeMap.width, "\u00D7", activeMap.height, ")"] }), jsxs("span", { className: styles.statusItem, children: ["Tile: ", activeMap.tileWidth, "\u00D7", activeMap.tileHeight, "px"] })] })), api.editorState.mode === 'spritesheet' && activeSheet && (jsxs(Fragment, { children: [jsxs("span", { className: styles.statusItem, children: ["Sheet: ", activeSheet.name] }), jsxs("span", { className: styles.statusItem, children: ["Selected: ", api.editorState.selectedFrameIds.length, " frames"] })] })), jsxs("div", { className: styles.zoomControl, children: [jsx(We, { className: styles.zoomBtn, variant: "ghost", size: "sm", onClick: () => api.setZoom(api.editorState.zoom - 0.25), children: "\u2212" }), jsxs("span", { children: [Math.round(api.editorState.zoom * 100), "%"] }), jsx(We, { className: styles.zoomBtn, variant: "ghost", size: "sm", onClick: () => api.setZoom(api.editorState.zoom + 0.25), children: "+" }), jsx(We, { className: styles.zoomBtn, variant: "ghost", size: "sm", onClick: () => api.setZoom(1), children: "\u2299" })] })] }));
356
356
  };
357
357
  /* ────────────────────────────────────────────────────────────────
358
358
  MAIN COMPONENT