@nice2dev/ui-graphics 1.1.0 → 1.1.1

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 (391) hide show
  1. package/dist/cjs/animation/AnimatedPerson.js +69 -63
  2. package/dist/cjs/animation/AnimatedPerson.js.map +1 -1
  3. package/dist/cjs/animation/AnimationEditor.js +27 -20
  4. package/dist/cjs/animation/AnimationEditor.js.map +1 -1
  5. package/dist/cjs/animation/Audience.js +17 -11
  6. package/dist/cjs/animation/Audience.js.map +1 -1
  7. package/dist/cjs/animation/BodyRenderer.js +7 -7
  8. package/dist/cjs/animation/BodyRenderer.js.map +1 -1
  9. package/dist/cjs/animation/animationHelper.js +83 -52
  10. package/dist/cjs/animation/animationHelper.js.map +1 -1
  11. package/dist/cjs/animation/characterTypes.js +171 -30
  12. package/dist/cjs/animation/characterTypes.js.map +1 -1
  13. package/dist/cjs/animation/choreoDSL.js +114 -62
  14. package/dist/cjs/animation/choreoDSL.js.map +1 -1
  15. package/dist/cjs/animation/karaokeIntegration.js +10 -11
  16. package/dist/cjs/animation/karaokeIntegration.js.map +1 -1
  17. package/dist/cjs/animation/lottieExport.js +15 -9
  18. package/dist/cjs/animation/lottieExport.js.map +1 -1
  19. package/dist/cjs/animation/motionPath.js +125 -30
  20. package/dist/cjs/animation/motionPath.js.map +1 -1
  21. package/dist/cjs/animation/physics.js +157 -57
  22. package/dist/cjs/animation/physics.js.map +1 -1
  23. package/dist/cjs/animation/rig/RigPlayer.js +7 -6
  24. package/dist/cjs/animation/rig/RigPlayer.js.map +1 -1
  25. package/dist/cjs/animation/rig/RiggedBody.js +7 -7
  26. package/dist/cjs/animation/rig/RiggedBody.js.map +1 -1
  27. package/dist/cjs/animation/rig/choreoRigBridge.js +52 -29
  28. package/dist/cjs/animation/rig/choreoRigBridge.js.map +1 -1
  29. package/dist/cjs/animation/rig/poseOps.js +6 -3
  30. package/dist/cjs/animation/rig/poseOps.js.map +1 -1
  31. package/dist/cjs/animation/shapes/arms.js +7 -6
  32. package/dist/cjs/animation/shapes/arms.js.map +1 -1
  33. package/dist/cjs/animation/shapes/eyes.js +31 -18
  34. package/dist/cjs/animation/shapes/eyes.js.map +1 -1
  35. package/dist/cjs/animation/shapes/hair.js +39 -23
  36. package/dist/cjs/animation/shapes/hair.js.map +1 -1
  37. package/dist/cjs/animation/shapes/heads.js +47 -29
  38. package/dist/cjs/animation/shapes/heads.js.map +1 -1
  39. package/dist/cjs/animation/shapes/headwear.js +26 -14
  40. package/dist/cjs/animation/shapes/headwear.js.map +1 -1
  41. package/dist/cjs/animation/shapes/legs.js +7 -6
  42. package/dist/cjs/animation/shapes/legs.js.map +1 -1
  43. package/dist/cjs/animation/shapes/mouths.js +28 -18
  44. package/dist/cjs/animation/shapes/mouths.js.map +1 -1
  45. package/dist/cjs/animation/shapes/noses.js +18 -9
  46. package/dist/cjs/animation/shapes/noses.js.map +1 -1
  47. package/dist/cjs/animation/shapes/outfits.js +25 -14
  48. package/dist/cjs/animation/shapes/outfits.js.map +1 -1
  49. package/dist/cjs/animation/shapes/torsos.js +5 -4
  50. package/dist/cjs/animation/shapes/torsos.js.map +1 -1
  51. package/dist/cjs/animation/spineExport.js +33 -26
  52. package/dist/cjs/animation/spineExport.js.map +1 -1
  53. package/dist/cjs/core/LocalUI.js +16 -16
  54. package/dist/cjs/core/LocalUI.js.map +1 -1
  55. package/dist/cjs/core/NiceBrushEngine.js +205 -69
  56. package/dist/cjs/core/NiceBrushEngine.js.map +1 -1
  57. package/dist/cjs/core/collaboration.js +35 -21
  58. package/dist/cjs/core/collaboration.js.map +1 -1
  59. package/dist/cjs/core/colorBlindness.js +64 -24
  60. package/dist/cjs/core/colorBlindness.js.map +1 -1
  61. package/dist/cjs/core/dragDrop.js +34 -26
  62. package/dist/cjs/core/dragDrop.js.map +1 -1
  63. package/dist/cjs/core/fixes.js +26 -14
  64. package/dist/cjs/core/fixes.js.map +1 -1
  65. package/dist/cjs/core/gridGuides.js +24 -16
  66. package/dist/cjs/core/gridGuides.js.map +1 -1
  67. package/dist/cjs/core/historyVisual.js +42 -23
  68. package/dist/cjs/core/historyVisual.js.map +1 -1
  69. package/dist/cjs/core/integrations.js +65 -48
  70. package/dist/cjs/core/integrations.js.map +1 -1
  71. package/dist/cjs/core/minimap.js +40 -24
  72. package/dist/cjs/core/minimap.js.map +1 -1
  73. package/dist/cjs/core/plugins.js +10 -6
  74. package/dist/cjs/core/plugins.js.map +1 -1
  75. package/dist/cjs/core/rtl.js +32 -27
  76. package/dist/cjs/core/rtl.js.map +1 -1
  77. package/dist/cjs/core/shortcuts.js +77 -39
  78. package/dist/cjs/core/shortcuts.js.map +1 -1
  79. package/dist/cjs/core/theme.js +68 -61
  80. package/dist/cjs/core/theme.js.map +1 -1
  81. package/dist/cjs/core/yjsCollaboration.js +61 -28
  82. package/dist/cjs/core/yjsCollaboration.js.map +1 -1
  83. package/dist/cjs/font/NiceFontEditor.js +160 -57
  84. package/dist/cjs/font/NiceFontEditor.js.map +1 -1
  85. package/dist/cjs/font/fontFormatUtils.js +37 -24
  86. package/dist/cjs/font/fontFormatUtils.js.map +1 -1
  87. package/dist/cjs/game/GameAsset2dEditor.js +73 -60
  88. package/dist/cjs/game/GameAsset2dEditor.js.map +1 -1
  89. package/dist/cjs/game/gameAssetUtils.js +18 -13
  90. package/dist/cjs/game/gameAssetUtils.js.map +1 -1
  91. package/dist/cjs/game/useGameAssetEditor.js +160 -143
  92. package/dist/cjs/game/useGameAssetEditor.js.map +1 -1
  93. package/dist/cjs/icon/NiceIconEditor.js +329 -106
  94. package/dist/cjs/icon/NiceIconEditor.js.map +1 -1
  95. package/dist/cjs/packages/ui/dist/NiceErrorBoundary-D75yr_WE.js +572 -0
  96. package/dist/cjs/packages/ui/dist/NiceErrorBoundary-D75yr_WE.js.map +1 -0
  97. package/dist/cjs/packages/ui/dist/NiceForm-CKoJA6NG.js +4979 -0
  98. package/dist/cjs/packages/ui/dist/NiceForm-CKoJA6NG.js.map +1 -0
  99. package/dist/cjs/packages/ui/dist/NiceModal-1QX7NhyH.js +98 -0
  100. package/dist/cjs/packages/ui/dist/NiceModal-1QX7NhyH.js.map +1 -0
  101. package/dist/cjs/packages/ui/dist/NiceModuleLifecyclePanel-CMrPbSw9.js +5244 -0
  102. package/dist/cjs/packages/ui/dist/NiceModuleLifecyclePanel-CMrPbSw9.js.map +1 -0
  103. package/dist/cjs/packages/ui/dist/NicePagination-DbE-uOkl.js +174 -0
  104. package/dist/cjs/packages/ui/dist/NicePagination-DbE-uOkl.js.map +1 -0
  105. package/dist/cjs/packages/ui/dist/NicePinCodeInput-B8cI8zu8.js +10459 -0
  106. package/dist/cjs/packages/ui/dist/NicePinCodeInput-B8cI8zu8.js.map +1 -0
  107. package/dist/cjs/packages/ui/dist/NiceSavedQueryPanel-CZ5bYOe_.js +6313 -0
  108. package/dist/cjs/packages/ui/dist/NiceSavedQueryPanel-CZ5bYOe_.js.map +1 -0
  109. package/dist/cjs/packages/ui/dist/NiceTabs-DzLHzwuA.js +1639 -0
  110. package/dist/cjs/packages/ui/dist/NiceTabs-DzLHzwuA.js.map +1 -0
  111. package/dist/cjs/packages/ui/dist/NiceWindow-DeC83yfE.js +807 -0
  112. package/dist/cjs/packages/ui/dist/NiceWindow-DeC83yfE.js.map +1 -0
  113. package/dist/cjs/packages/ui/dist/charts-BAS21jkC.js +3833 -0
  114. package/dist/cjs/packages/ui/dist/charts-BAS21jkC.js.map +1 -0
  115. package/dist/cjs/packages/ui/dist/core-Da43q-pO.js +11683 -0
  116. package/dist/cjs/packages/ui/dist/core-Da43q-pO.js.map +1 -0
  117. package/dist/cjs/packages/ui/dist/index-pAuGTbuB.js +28876 -0
  118. package/dist/cjs/packages/ui/dist/index-pAuGTbuB.js.map +1 -0
  119. package/dist/cjs/photo/FilterThumb.js +7 -5
  120. package/dist/cjs/photo/FilterThumb.js.map +1 -1
  121. package/dist/cjs/photo/NiceAITools.js +78 -32
  122. package/dist/cjs/photo/NiceAITools.js.map +1 -1
  123. package/dist/cjs/photo/PhotoEditor.js +4 -4
  124. package/dist/cjs/photo/PhotoEditor.js.map +1 -1
  125. package/dist/cjs/photo/PhotoEditorCanvas.js +56 -22
  126. package/dist/cjs/photo/PhotoEditorCanvas.js.map +1 -1
  127. package/dist/cjs/photo/PhotoEditorLeftPanel.js +106 -48
  128. package/dist/cjs/photo/PhotoEditorLeftPanel.js.map +1 -1
  129. package/dist/cjs/photo/PhotoEditorToolbar.js +2 -2
  130. package/dist/cjs/photo/PhotoEditorToolbar.js.map +1 -1
  131. package/dist/cjs/photo/photoEditorActions.js +27 -18
  132. package/dist/cjs/photo/photoEditorActions.js.map +1 -1
  133. package/dist/cjs/photo/photoFilters.js +316 -81
  134. package/dist/cjs/photo/photoFilters.js.map +1 -1
  135. package/dist/cjs/photo/photoOverlays.js +521 -165
  136. package/dist/cjs/photo/photoOverlays.js.map +1 -1
  137. package/dist/cjs/photo/photoSelection.js +69 -35
  138. package/dist/cjs/photo/photoSelection.js.map +1 -1
  139. package/dist/cjs/photo/usePhotoEditor.js +203 -97
  140. package/dist/cjs/photo/usePhotoEditor.js.map +1 -1
  141. package/dist/cjs/pixel/HSVPicker.js +32 -19
  142. package/dist/cjs/pixel/HSVPicker.js.map +1 -1
  143. package/dist/cjs/pixel/PixelEditor.js +25 -14
  144. package/dist/cjs/pixel/PixelEditor.js.map +1 -1
  145. package/dist/cjs/pixel/PixelEditorCanvas.js +2 -2
  146. package/dist/cjs/pixel/PixelEditorCanvas.js.map +1 -1
  147. package/dist/cjs/pixel/PixelEditorMenuBar.js +3 -3
  148. package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -1
  149. package/dist/cjs/pixel/PixelEditorRightPanel.js +28 -8
  150. package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -1
  151. package/dist/cjs/pixel/PixelEditorStatusBar.js +2 -2
  152. package/dist/cjs/pixel/PixelEditorStatusBar.js.map +1 -1
  153. package/dist/cjs/pixel/PixelEditorTimeline.js +3 -4
  154. package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -1
  155. package/dist/cjs/pixel/PixelEditorToolbar.js +3 -3
  156. package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -1
  157. package/dist/cjs/pixel/SpriteGeneratorPanel.js +136 -54
  158. package/dist/cjs/pixel/SpriteGeneratorPanel.js.map +1 -1
  159. package/dist/cjs/pixel/asepriteFormat.js +122 -38
  160. package/dist/cjs/pixel/asepriteFormat.js.map +1 -1
  161. package/dist/cjs/pixel/characterGeneratorPresets.js +208 -54
  162. package/dist/cjs/pixel/characterGeneratorPresets.js.map +1 -1
  163. package/dist/cjs/pixel/pixelEditorExports.js +42 -35
  164. package/dist/cjs/pixel/pixelEditorExports.js.map +1 -1
  165. package/dist/cjs/pixel/pixelEditorTypes.js +67 -33
  166. package/dist/cjs/pixel/pixelEditorTypes.js.map +1 -1
  167. package/dist/cjs/pixel/pixelEditorUtils.js +62 -38
  168. package/dist/cjs/pixel/pixelEditorUtils.js.map +1 -1
  169. package/dist/cjs/pixel/spriteGeneratorCore.js +47 -24
  170. package/dist/cjs/pixel/spriteGeneratorCore.js.map +1 -1
  171. package/dist/cjs/pixel/usePixelEditor.js +475 -213
  172. package/dist/cjs/pixel/usePixelEditor.js.map +1 -1
  173. package/dist/cjs/texture/Nice3DTexturePainter.js +201 -71
  174. package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -1
  175. package/dist/cjs/ui/NiceUIDesigner.js +280 -91
  176. package/dist/cjs/ui/NiceUIDesigner.js.map +1 -1
  177. package/dist/cjs/vector/NiceSvgToCode.js +96 -34
  178. package/dist/cjs/vector/NiceSvgToCode.js.map +1 -1
  179. package/dist/cjs/vector/VectorEditor.js +14 -13
  180. package/dist/cjs/vector/VectorEditor.js.map +1 -1
  181. package/dist/cjs/vector/VectorEditorMenuBar.js +7 -6
  182. package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -1
  183. package/dist/cjs/vector/VectorEditorRightPanel.js +87 -32
  184. package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -1
  185. package/dist/cjs/vector/VectorEditorShapeRenderer.js +17 -15
  186. package/dist/cjs/vector/VectorEditorShapeRenderer.js.map +1 -1
  187. package/dist/cjs/vector/VectorEditorStatusBar.js.map +1 -1
  188. package/dist/cjs/vector/useVectorEditor.js +312 -122
  189. package/dist/cjs/vector/useVectorEditor.js.map +1 -1
  190. package/dist/cjs/vector/vectorBooleanOps.js +60 -42
  191. package/dist/cjs/vector/vectorBooleanOps.js.map +1 -1
  192. package/dist/cjs/vector/vectorEditorExport.js +40 -34
  193. package/dist/cjs/vector/vectorEditorExport.js.map +1 -1
  194. package/dist/cjs/vector/vectorGradients.js +41 -40
  195. package/dist/cjs/vector/vectorGradients.js.map +1 -1
  196. package/dist/esm/animation/AnimatedPerson.js +69 -63
  197. package/dist/esm/animation/AnimatedPerson.js.map +1 -1
  198. package/dist/esm/animation/AnimationEditor.js +27 -20
  199. package/dist/esm/animation/AnimationEditor.js.map +1 -1
  200. package/dist/esm/animation/Audience.js +17 -11
  201. package/dist/esm/animation/Audience.js.map +1 -1
  202. package/dist/esm/animation/BodyRenderer.js +7 -7
  203. package/dist/esm/animation/BodyRenderer.js.map +1 -1
  204. package/dist/esm/animation/animationHelper.js +83 -52
  205. package/dist/esm/animation/animationHelper.js.map +1 -1
  206. package/dist/esm/animation/characterTypes.js +171 -30
  207. package/dist/esm/animation/characterTypes.js.map +1 -1
  208. package/dist/esm/animation/choreoDSL.js +114 -62
  209. package/dist/esm/animation/choreoDSL.js.map +1 -1
  210. package/dist/esm/animation/karaokeIntegration.js +10 -11
  211. package/dist/esm/animation/karaokeIntegration.js.map +1 -1
  212. package/dist/esm/animation/lottieExport.js +15 -9
  213. package/dist/esm/animation/lottieExport.js.map +1 -1
  214. package/dist/esm/animation/motionPath.js +125 -30
  215. package/dist/esm/animation/motionPath.js.map +1 -1
  216. package/dist/esm/animation/physics.js +157 -57
  217. package/dist/esm/animation/physics.js.map +1 -1
  218. package/dist/esm/animation/rig/RigPlayer.js +7 -6
  219. package/dist/esm/animation/rig/RigPlayer.js.map +1 -1
  220. package/dist/esm/animation/rig/RiggedBody.js +7 -7
  221. package/dist/esm/animation/rig/RiggedBody.js.map +1 -1
  222. package/dist/esm/animation/rig/choreoRigBridge.js +52 -29
  223. package/dist/esm/animation/rig/choreoRigBridge.js.map +1 -1
  224. package/dist/esm/animation/rig/poseOps.js +6 -3
  225. package/dist/esm/animation/rig/poseOps.js.map +1 -1
  226. package/dist/esm/animation/shapes/arms.js +7 -6
  227. package/dist/esm/animation/shapes/arms.js.map +1 -1
  228. package/dist/esm/animation/shapes/eyes.js +31 -18
  229. package/dist/esm/animation/shapes/eyes.js.map +1 -1
  230. package/dist/esm/animation/shapes/hair.js +39 -23
  231. package/dist/esm/animation/shapes/hair.js.map +1 -1
  232. package/dist/esm/animation/shapes/heads.js +47 -29
  233. package/dist/esm/animation/shapes/heads.js.map +1 -1
  234. package/dist/esm/animation/shapes/headwear.js +26 -14
  235. package/dist/esm/animation/shapes/headwear.js.map +1 -1
  236. package/dist/esm/animation/shapes/legs.js +7 -6
  237. package/dist/esm/animation/shapes/legs.js.map +1 -1
  238. package/dist/esm/animation/shapes/mouths.js +28 -18
  239. package/dist/esm/animation/shapes/mouths.js.map +1 -1
  240. package/dist/esm/animation/shapes/noses.js +18 -9
  241. package/dist/esm/animation/shapes/noses.js.map +1 -1
  242. package/dist/esm/animation/shapes/outfits.js +25 -14
  243. package/dist/esm/animation/shapes/outfits.js.map +1 -1
  244. package/dist/esm/animation/shapes/torsos.js +5 -4
  245. package/dist/esm/animation/shapes/torsos.js.map +1 -1
  246. package/dist/esm/animation/spineExport.js +33 -26
  247. package/dist/esm/animation/spineExport.js.map +1 -1
  248. package/dist/esm/core/LocalUI.js +16 -16
  249. package/dist/esm/core/LocalUI.js.map +1 -1
  250. package/dist/esm/core/NiceBrushEngine.js +205 -69
  251. package/dist/esm/core/NiceBrushEngine.js.map +1 -1
  252. package/dist/esm/core/collaboration.js +35 -21
  253. package/dist/esm/core/collaboration.js.map +1 -1
  254. package/dist/esm/core/colorBlindness.js +64 -24
  255. package/dist/esm/core/colorBlindness.js.map +1 -1
  256. package/dist/esm/core/dragDrop.js +34 -26
  257. package/dist/esm/core/dragDrop.js.map +1 -1
  258. package/dist/esm/core/fixes.js +26 -14
  259. package/dist/esm/core/fixes.js.map +1 -1
  260. package/dist/esm/core/gridGuides.js +24 -16
  261. package/dist/esm/core/gridGuides.js.map +1 -1
  262. package/dist/esm/core/historyVisual.js +42 -23
  263. package/dist/esm/core/historyVisual.js.map +1 -1
  264. package/dist/esm/core/integrations.js +65 -48
  265. package/dist/esm/core/integrations.js.map +1 -1
  266. package/dist/esm/core/minimap.js +40 -24
  267. package/dist/esm/core/minimap.js.map +1 -1
  268. package/dist/esm/core/plugins.js +10 -6
  269. package/dist/esm/core/plugins.js.map +1 -1
  270. package/dist/esm/core/rtl.js +32 -27
  271. package/dist/esm/core/rtl.js.map +1 -1
  272. package/dist/esm/core/shortcuts.js +77 -39
  273. package/dist/esm/core/shortcuts.js.map +1 -1
  274. package/dist/esm/core/theme.js +68 -61
  275. package/dist/esm/core/theme.js.map +1 -1
  276. package/dist/esm/core/yjsCollaboration.js +61 -28
  277. package/dist/esm/core/yjsCollaboration.js.map +1 -1
  278. package/dist/esm/font/NiceFontEditor.js +160 -57
  279. package/dist/esm/font/NiceFontEditor.js.map +1 -1
  280. package/dist/esm/font/fontFormatUtils.js +37 -24
  281. package/dist/esm/font/fontFormatUtils.js.map +1 -1
  282. package/dist/esm/game/GameAsset2dEditor.js +73 -60
  283. package/dist/esm/game/GameAsset2dEditor.js.map +1 -1
  284. package/dist/esm/game/gameAssetUtils.js +18 -13
  285. package/dist/esm/game/gameAssetUtils.js.map +1 -1
  286. package/dist/esm/game/useGameAssetEditor.js +160 -143
  287. package/dist/esm/game/useGameAssetEditor.js.map +1 -1
  288. package/dist/esm/icon/NiceIconEditor.js +329 -106
  289. package/dist/esm/icon/NiceIconEditor.js.map +1 -1
  290. package/dist/esm/packages/ui/dist/NiceErrorBoundary-D75yr_WE.js +563 -0
  291. package/dist/esm/packages/ui/dist/NiceErrorBoundary-D75yr_WE.js.map +1 -0
  292. package/dist/esm/packages/ui/dist/NiceForm-CKoJA6NG.js +4960 -0
  293. package/dist/esm/packages/ui/dist/NiceForm-CKoJA6NG.js.map +1 -0
  294. package/dist/esm/packages/ui/dist/NiceModal-1QX7NhyH.js +96 -0
  295. package/dist/esm/packages/ui/dist/NiceModal-1QX7NhyH.js.map +1 -0
  296. package/dist/esm/packages/ui/dist/NiceModuleLifecyclePanel-CMrPbSw9.js +5201 -0
  297. package/dist/esm/packages/ui/dist/NiceModuleLifecyclePanel-CMrPbSw9.js.map +1 -0
  298. package/dist/esm/packages/ui/dist/NicePagination-DbE-uOkl.js +172 -0
  299. package/dist/esm/packages/ui/dist/NicePagination-DbE-uOkl.js.map +1 -0
  300. package/dist/esm/packages/ui/dist/NicePinCodeInput-B8cI8zu8.js +10408 -0
  301. package/dist/esm/packages/ui/dist/NicePinCodeInput-B8cI8zu8.js.map +1 -0
  302. package/dist/esm/packages/ui/dist/NiceSavedQueryPanel-CZ5bYOe_.js +6296 -0
  303. package/dist/esm/packages/ui/dist/NiceSavedQueryPanel-CZ5bYOe_.js.map +1 -0
  304. package/dist/esm/packages/ui/dist/NiceTabs-DzLHzwuA.js +1630 -0
  305. package/dist/esm/packages/ui/dist/NiceTabs-DzLHzwuA.js.map +1 -0
  306. package/dist/esm/packages/ui/dist/NiceWindow-DeC83yfE.js +796 -0
  307. package/dist/esm/packages/ui/dist/NiceWindow-DeC83yfE.js.map +1 -0
  308. package/dist/esm/packages/ui/dist/charts-BAS21jkC.js +3809 -0
  309. package/dist/esm/packages/ui/dist/charts-BAS21jkC.js.map +1 -0
  310. package/dist/esm/packages/ui/dist/core-Da43q-pO.js +11502 -0
  311. package/dist/esm/packages/ui/dist/core-Da43q-pO.js.map +1 -0
  312. package/dist/esm/packages/ui/dist/index-pAuGTbuB.js +28792 -0
  313. package/dist/esm/packages/ui/dist/index-pAuGTbuB.js.map +1 -0
  314. package/dist/esm/photo/FilterThumb.js +7 -5
  315. package/dist/esm/photo/FilterThumb.js.map +1 -1
  316. package/dist/esm/photo/NiceAITools.js +78 -32
  317. package/dist/esm/photo/NiceAITools.js.map +1 -1
  318. package/dist/esm/photo/PhotoEditor.js +4 -4
  319. package/dist/esm/photo/PhotoEditor.js.map +1 -1
  320. package/dist/esm/photo/PhotoEditorCanvas.js +56 -22
  321. package/dist/esm/photo/PhotoEditorCanvas.js.map +1 -1
  322. package/dist/esm/photo/PhotoEditorLeftPanel.js +106 -48
  323. package/dist/esm/photo/PhotoEditorLeftPanel.js.map +1 -1
  324. package/dist/esm/photo/PhotoEditorToolbar.js +2 -2
  325. package/dist/esm/photo/PhotoEditorToolbar.js.map +1 -1
  326. package/dist/esm/photo/photoEditorActions.js +27 -18
  327. package/dist/esm/photo/photoEditorActions.js.map +1 -1
  328. package/dist/esm/photo/photoFilters.js +316 -81
  329. package/dist/esm/photo/photoFilters.js.map +1 -1
  330. package/dist/esm/photo/photoOverlays.js +521 -165
  331. package/dist/esm/photo/photoOverlays.js.map +1 -1
  332. package/dist/esm/photo/photoSelection.js +69 -35
  333. package/dist/esm/photo/photoSelection.js.map +1 -1
  334. package/dist/esm/photo/usePhotoEditor.js +203 -97
  335. package/dist/esm/photo/usePhotoEditor.js.map +1 -1
  336. package/dist/esm/pixel/HSVPicker.js +32 -19
  337. package/dist/esm/pixel/HSVPicker.js.map +1 -1
  338. package/dist/esm/pixel/PixelEditor.js +25 -14
  339. package/dist/esm/pixel/PixelEditor.js.map +1 -1
  340. package/dist/esm/pixel/PixelEditorCanvas.js +2 -2
  341. package/dist/esm/pixel/PixelEditorCanvas.js.map +1 -1
  342. package/dist/esm/pixel/PixelEditorMenuBar.js +3 -3
  343. package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -1
  344. package/dist/esm/pixel/PixelEditorRightPanel.js +28 -8
  345. package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -1
  346. package/dist/esm/pixel/PixelEditorStatusBar.js +2 -2
  347. package/dist/esm/pixel/PixelEditorStatusBar.js.map +1 -1
  348. package/dist/esm/pixel/PixelEditorTimeline.js +3 -4
  349. package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -1
  350. package/dist/esm/pixel/PixelEditorToolbar.js +3 -3
  351. package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -1
  352. package/dist/esm/pixel/SpriteGeneratorPanel.js +136 -54
  353. package/dist/esm/pixel/SpriteGeneratorPanel.js.map +1 -1
  354. package/dist/esm/pixel/asepriteFormat.js +122 -38
  355. package/dist/esm/pixel/asepriteFormat.js.map +1 -1
  356. package/dist/esm/pixel/characterGeneratorPresets.js +208 -54
  357. package/dist/esm/pixel/characterGeneratorPresets.js.map +1 -1
  358. package/dist/esm/pixel/pixelEditorExports.js +42 -35
  359. package/dist/esm/pixel/pixelEditorExports.js.map +1 -1
  360. package/dist/esm/pixel/pixelEditorTypes.js +67 -33
  361. package/dist/esm/pixel/pixelEditorTypes.js.map +1 -1
  362. package/dist/esm/pixel/pixelEditorUtils.js +62 -38
  363. package/dist/esm/pixel/pixelEditorUtils.js.map +1 -1
  364. package/dist/esm/pixel/spriteGeneratorCore.js +47 -24
  365. package/dist/esm/pixel/spriteGeneratorCore.js.map +1 -1
  366. package/dist/esm/pixel/usePixelEditor.js +475 -213
  367. package/dist/esm/pixel/usePixelEditor.js.map +1 -1
  368. package/dist/esm/texture/Nice3DTexturePainter.js +201 -71
  369. package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -1
  370. package/dist/esm/ui/NiceUIDesigner.js +280 -91
  371. package/dist/esm/ui/NiceUIDesigner.js.map +1 -1
  372. package/dist/esm/vector/NiceSvgToCode.js +96 -34
  373. package/dist/esm/vector/NiceSvgToCode.js.map +1 -1
  374. package/dist/esm/vector/VectorEditor.js +14 -13
  375. package/dist/esm/vector/VectorEditor.js.map +1 -1
  376. package/dist/esm/vector/VectorEditorMenuBar.js +7 -6
  377. package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -1
  378. package/dist/esm/vector/VectorEditorRightPanel.js +87 -32
  379. package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -1
  380. package/dist/esm/vector/VectorEditorShapeRenderer.js +17 -15
  381. package/dist/esm/vector/VectorEditorShapeRenderer.js.map +1 -1
  382. package/dist/esm/vector/VectorEditorStatusBar.js.map +1 -1
  383. package/dist/esm/vector/useVectorEditor.js +312 -122
  384. package/dist/esm/vector/useVectorEditor.js.map +1 -1
  385. package/dist/esm/vector/vectorBooleanOps.js +60 -42
  386. package/dist/esm/vector/vectorBooleanOps.js.map +1 -1
  387. package/dist/esm/vector/vectorEditorExport.js +40 -34
  388. package/dist/esm/vector/vectorEditorExport.js.map +1 -1
  389. package/dist/esm/vector/vectorGradients.js +41 -40
  390. package/dist/esm/vector/vectorGradients.js.map +1 -1
  391. package/package.json +2 -2
@@ -42,27 +42,28 @@ const useGameAssetEditor = (options = {}) => {
42
42
  timestamp: Date.now(),
43
43
  snapshot: JSON.parse(JSON.stringify(project)),
44
44
  };
45
- setHistory(prev => {
45
+ setHistory((prev) => {
46
46
  const newHistory = prev.slice(0, historyIndex + 1);
47
47
  newHistory.push(entry);
48
- if (newHistory.length > MAX_HISTORY)
48
+ if (newHistory.length > MAX_HISTORY) {
49
49
  newHistory.shift();
50
+ }
50
51
  return newHistory;
51
52
  });
52
- setHistoryIndex(prev => Math.min(prev + 1, MAX_HISTORY - 1));
53
+ setHistoryIndex((prev) => Math.min(prev + 1, MAX_HISTORY - 1));
53
54
  }, [project, historyIndex]);
54
55
  const undo = useCallback(() => {
55
56
  if (historyIndex > 0) {
56
57
  const entry = history[historyIndex - 1];
57
58
  setProject(entry.snapshot);
58
- setHistoryIndex(prev => prev - 1);
59
+ setHistoryIndex((prev) => prev - 1);
59
60
  }
60
61
  }, [history, historyIndex]);
61
62
  const redo = useCallback(() => {
62
63
  if (historyIndex < history.length - 1) {
63
64
  const entry = history[historyIndex + 1];
64
65
  setProject(entry.snapshot);
65
- setHistoryIndex(prev => prev + 1);
66
+ setHistoryIndex((prev) => prev + 1);
66
67
  }
67
68
  }, [history, historyIndex]);
68
69
  // ─────────────────────────────────────────────────────────────
@@ -92,46 +93,46 @@ const useGameAssetEditor = (options = {}) => {
92
93
  // Editor state operations
93
94
  // ─────────────────────────────────────────────────────────────
94
95
  const setMode = useCallback((mode) => {
95
- setEditorState(prev => ({ ...prev, mode }));
96
+ setEditorState((prev) => ({ ...prev, mode }));
96
97
  }, []);
97
98
  const setTileMapTool = useCallback((tool) => {
98
- setEditorState(prev => ({ ...prev, tileMapTool: tool }));
99
+ setEditorState((prev) => ({ ...prev, tileMapTool: tool }));
99
100
  }, []);
100
101
  const setSpriteSheetTool = useCallback((tool) => {
101
- setEditorState(prev => ({ ...prev, spriteSheetTool: tool }));
102
+ setEditorState((prev) => ({ ...prev, spriteSheetTool: tool }));
102
103
  }, []);
103
104
  const setZoom = useCallback((zoom) => {
104
- setEditorState(prev => ({ ...prev, zoom: Math.max(0.1, Math.min(10, zoom)) }));
105
+ setEditorState((prev) => ({ ...prev, zoom: Math.max(0.1, Math.min(10, zoom)) }));
105
106
  }, []);
106
107
  const setPan = useCallback((x, y) => {
107
- setEditorState(prev => ({ ...prev, panX: x, panY: y }));
108
+ setEditorState((prev) => ({ ...prev, panX: x, panY: y }));
108
109
  }, []);
109
110
  const toggleGrid = useCallback(() => {
110
- setEditorState(prev => ({ ...prev, showGrid: !prev.showGrid }));
111
+ setEditorState((prev) => ({ ...prev, showGrid: !prev.showGrid }));
111
112
  }, []);
112
113
  const toggleCollision = useCallback(() => {
113
- setEditorState(prev => ({ ...prev, showCollision: !prev.showCollision }));
114
+ setEditorState((prev) => ({ ...prev, showCollision: !prev.showCollision }));
114
115
  }, []);
115
116
  const toggleSnap = useCallback(() => {
116
- setEditorState(prev => ({ ...prev, snapToGrid: !prev.snapToGrid }));
117
+ setEditorState((prev) => ({ ...prev, snapToGrid: !prev.snapToGrid }));
117
118
  }, []);
118
119
  // ─────────────────────────────────────────────────────────────
119
120
  // Tile set operations
120
121
  // ─────────────────────────────────────────────────────────────
121
122
  const addTile = useCallback((imageData, name) => {
122
123
  const tile = createTileFromImage(imageData, name);
123
- setProject(prev => ({ ...prev, tileSets: [...prev.tileSets, tile] }));
124
+ setProject((prev) => ({ ...prev, tileSets: [...prev.tileSets, tile] }));
124
125
  pushHistory(`Add tile: ${name}`);
125
126
  }, [pushHistory]);
126
127
  const removeTile = useCallback((id) => {
127
- setProject(prev => ({
128
+ setProject((prev) => ({
128
129
  ...prev,
129
- tileSets: prev.tileSets.filter(t => t.id !== id),
130
+ tileSets: prev.tileSets.filter((t) => t.id !== id),
130
131
  }));
131
132
  pushHistory('Remove tile');
132
133
  }, [pushHistory]);
133
134
  const selectTile = useCallback((id) => {
134
- setEditorState(prev => ({ ...prev, selectedTileId: id }));
135
+ setEditorState((prev) => ({ ...prev, selectedTileId: id }));
135
136
  }, []);
136
137
  const importTileSet = useCallback(async (file) => {
137
138
  const dataUrl = await new Promise((resolve) => {
@@ -148,8 +149,8 @@ const useGameAssetEditor = (options = {}) => {
148
149
  // ─────────────────────────────────────────────────────────────
149
150
  const createTileMap = useCallback((name, width, height) => {
150
151
  const map = createEmptyTileMap(name, width, height, project.settings.defaultTileWidth, project.settings.defaultTileHeight);
151
- setProject(prev => ({ ...prev, tileMaps: [...prev.tileMaps, map] }));
152
- setEditorState(prev => ({
152
+ setProject((prev) => ({ ...prev, tileMaps: [...prev.tileMaps, map] }));
153
+ setEditorState((prev) => ({
153
154
  ...prev,
154
155
  activeTileMapId: map.id,
155
156
  activeLayerId: map.layers[0].id,
@@ -157,16 +158,16 @@ const useGameAssetEditor = (options = {}) => {
157
158
  pushHistory(`Create tile map: ${name}`);
158
159
  }, [project.settings, pushHistory]);
159
160
  const removeTileMap = useCallback((id) => {
160
- setProject(prev => ({
161
+ setProject((prev) => ({
161
162
  ...prev,
162
- tileMaps: prev.tileMaps.filter(m => m.id !== id),
163
+ tileMaps: prev.tileMaps.filter((m) => m.id !== id),
163
164
  }));
164
165
  pushHistory('Remove tile map');
165
166
  }, [pushHistory]);
166
167
  const selectTileMap = useCallback((id) => {
167
- setEditorState(prev => {
168
+ setEditorState((prev) => {
168
169
  var _a, _b;
169
- const map = project.tileMaps.find(m => m.id === id);
170
+ const map = project.tileMaps.find((m) => m.id === id);
170
171
  return {
171
172
  ...prev,
172
173
  activeTileMapId: id,
@@ -175,14 +176,15 @@ const useGameAssetEditor = (options = {}) => {
175
176
  });
176
177
  }, [project.tileMaps]);
177
178
  const setTile = useCallback((layerId, x, y, tileId) => {
178
- setProject(prev => ({
179
+ setProject((prev) => ({
179
180
  ...prev,
180
- tileMaps: prev.tileMaps.map(map => ({
181
+ tileMaps: prev.tileMaps.map((map) => ({
181
182
  ...map,
182
- layers: map.layers.map(layer => {
183
- if (layer.id !== layerId)
183
+ layers: map.layers.map((layer) => {
184
+ if (layer.id !== layerId) {
184
185
  return layer;
185
- const newTiles = layer.tiles.map(row => [...row]);
186
+ }
187
+ const newTiles = layer.tiles.map((row) => [...row]);
186
188
  if (y >= 0 && y < newTiles.length && x >= 0 && x < newTiles[0].length) {
187
189
  newTiles[y][x] = tileId;
188
190
  }
@@ -192,95 +194,107 @@ const useGameAssetEditor = (options = {}) => {
192
194
  }));
193
195
  }, []);
194
196
  const fillTiles = useCallback((layerId, startX, startY, newTileId) => {
195
- setProject(prev => {
197
+ setProject((prev) => {
196
198
  var _a;
197
- const map = prev.tileMaps.find(m => m.layers.some(l => l.id === layerId));
198
- if (!map)
199
+ const map = prev.tileMaps.find((m) => m.layers.some((l) => l.id === layerId));
200
+ if (!map) {
199
201
  return prev;
200
- const layer = map.layers.find(l => l.id === layerId);
201
- if (!layer)
202
+ }
203
+ const layer = map.layers.find((l) => l.id === layerId);
204
+ if (!layer) {
202
205
  return prev;
206
+ }
203
207
  const targetId = (_a = layer.tiles[startY]) === null || _a === void 0 ? void 0 : _a[startX];
204
- if (targetId === newTileId)
208
+ if (targetId === newTileId) {
205
209
  return prev;
206
- const newTiles = layer.tiles.map(row => [...row]);
210
+ }
211
+ const newTiles = layer.tiles.map((row) => [...row]);
207
212
  const stack = [[startX, startY]];
208
213
  const visited = new Set();
209
214
  while (stack.length > 0) {
210
215
  const [x, y] = stack.pop();
211
216
  const key = `${x},${y}`;
212
- if (visited.has(key))
217
+ if (visited.has(key)) {
213
218
  continue;
214
- if (y < 0 || y >= newTiles.length || x < 0 || x >= newTiles[0].length)
219
+ }
220
+ if (y < 0 || y >= newTiles.length || x < 0 || x >= newTiles[0].length) {
215
221
  continue;
216
- if (newTiles[y][x] !== targetId)
222
+ }
223
+ if (newTiles[y][x] !== targetId) {
217
224
  continue;
225
+ }
218
226
  visited.add(key);
219
227
  newTiles[y][x] = newTileId;
220
228
  stack.push([x + 1, y], [x - 1, y], [x, y + 1], [x, y - 1]);
221
229
  }
222
230
  return {
223
231
  ...prev,
224
- tileMaps: prev.tileMaps.map(m => m.id === map.id
225
- ? { ...m, layers: m.layers.map(l => (l.id === layerId ? { ...l, tiles: newTiles } : l)) }
232
+ tileMaps: prev.tileMaps.map((m) => m.id === map.id
233
+ ? {
234
+ ...m,
235
+ layers: m.layers.map((l) => (l.id === layerId ? { ...l, tiles: newTiles } : l)),
236
+ }
226
237
  : m),
227
238
  };
228
239
  });
229
240
  pushHistory('Fill tiles');
230
241
  }, [pushHistory]);
231
242
  const addLayer = useCallback(() => {
232
- const map = project.tileMaps.find(m => m.id === editorState.activeTileMapId);
233
- if (!map)
243
+ const map = project.tileMaps.find((m) => m.id === editorState.activeTileMapId);
244
+ if (!map) {
234
245
  return;
246
+ }
235
247
  const newLayer = createEmptyTileLayer(`Layer ${map.layers.length + 1}`, map.width, map.height);
236
- setProject(prev => ({
248
+ setProject((prev) => ({
237
249
  ...prev,
238
- tileMaps: prev.tileMaps.map(m => m.id === map.id ? { ...m, layers: [...m.layers, newLayer] } : m),
250
+ tileMaps: prev.tileMaps.map((m) => m.id === map.id ? { ...m, layers: [...m.layers, newLayer] } : m),
239
251
  }));
240
- setEditorState(prev => ({ ...prev, activeLayerId: newLayer.id }));
252
+ setEditorState((prev) => ({ ...prev, activeLayerId: newLayer.id }));
241
253
  pushHistory('Add layer');
242
254
  }, [project.tileMaps, editorState.activeTileMapId, pushHistory]);
243
255
  const removeLayer = useCallback((id) => {
244
- setProject(prev => ({
256
+ setProject((prev) => ({
245
257
  ...prev,
246
- tileMaps: prev.tileMaps.map(m => ({
258
+ tileMaps: prev.tileMaps.map((m) => ({
247
259
  ...m,
248
- layers: m.layers.filter(l => l.id !== id),
260
+ layers: m.layers.filter((l) => l.id !== id),
249
261
  })),
250
262
  }));
251
263
  pushHistory('Remove layer');
252
264
  }, [pushHistory]);
253
265
  const selectLayer = useCallback((id) => {
254
- setEditorState(prev => ({ ...prev, activeLayerId: id }));
266
+ setEditorState((prev) => ({ ...prev, activeLayerId: id }));
255
267
  }, []);
256
268
  const toggleLayerVisibility = useCallback((id) => {
257
- setProject(prev => ({
269
+ setProject((prev) => ({
258
270
  ...prev,
259
- tileMaps: prev.tileMaps.map(m => ({
271
+ tileMaps: prev.tileMaps.map((m) => ({
260
272
  ...m,
261
- layers: m.layers.map(l => (l.id === id ? { ...l, visible: !l.visible } : l)),
273
+ layers: m.layers.map((l) => (l.id === id ? { ...l, visible: !l.visible } : l)),
262
274
  })),
263
275
  }));
264
276
  }, []);
265
277
  const setLayerOpacity = useCallback((id, opacity) => {
266
- setProject(prev => ({
278
+ setProject((prev) => ({
267
279
  ...prev,
268
- tileMaps: prev.tileMaps.map(m => ({
280
+ tileMaps: prev.tileMaps.map((m) => ({
269
281
  ...m,
270
- layers: m.layers.map(l => (l.id === id ? { ...l, opacity } : l)),
282
+ layers: m.layers.map((l) => (l.id === id ? { ...l, opacity } : l)),
271
283
  })),
272
284
  }));
273
285
  }, []);
274
286
  const moveLayer = useCallback((id, direction) => {
275
- setProject(prev => ({
287
+ setProject((prev) => ({
276
288
  ...prev,
277
- tileMaps: prev.tileMaps.map(m => {
278
- const idx = m.layers.findIndex(l => l.id === id);
279
- if (idx === -1)
289
+ tileMaps: prev.tileMaps.map((m) => {
290
+ const idx = m.layers.findIndex((l) => l.id === id);
291
+ if (idx === -1) {
280
292
  return m;
293
+ }
281
294
  const newIdx = direction === 'up' ? idx - 1 : idx + 1;
282
- if (newIdx < 0 || newIdx >= m.layers.length)
295
+ if (newIdx < 0 || newIdx >= m.layers.length) {
283
296
  return m;
297
+ }
284
298
  const newLayers = [...m.layers];
285
299
  [newLayers[idx], newLayers[newIdx]] = [newLayers[newIdx], newLayers[idx]];
286
300
  return { ...m, layers: newLayers };
@@ -315,103 +329,103 @@ const useGameAssetEditor = (options = {}) => {
315
329
  frames: [],
316
330
  animations: [],
317
331
  };
318
- setProject(prev => ({ ...prev, spriteSheets: [...prev.spriteSheets, sheet] }));
319
- setEditorState(prev => ({ ...prev, activeSpriteSheetId: sheet.id }));
332
+ setProject((prev) => ({ ...prev, spriteSheets: [...prev.spriteSheets, sheet] }));
333
+ setEditorState((prev) => ({ ...prev, activeSpriteSheetId: sheet.id }));
320
334
  pushHistory(`Import sprite sheet: ${sheet.name}`);
321
335
  }, [pushHistory]);
322
336
  const removeSpriteSheet = useCallback((id) => {
323
- setProject(prev => ({
337
+ setProject((prev) => ({
324
338
  ...prev,
325
- spriteSheets: prev.spriteSheets.filter(s => s.id !== id),
339
+ spriteSheets: prev.spriteSheets.filter((s) => s.id !== id),
326
340
  }));
327
341
  pushHistory('Remove sprite sheet');
328
342
  }, [pushHistory]);
329
343
  const selectSpriteSheet = useCallback((id) => {
330
- setEditorState(prev => ({ ...prev, activeSpriteSheetId: id, selectedFrameIds: [] }));
344
+ setEditorState((prev) => ({ ...prev, activeSpriteSheetId: id, selectedFrameIds: [] }));
331
345
  }, []);
332
346
  const autoSlice = useCallback((frameWidth, frameHeight) => {
333
- const sheet = project.spriteSheets.find(s => s.id === editorState.activeSpriteSheetId);
334
- if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData))
347
+ const sheet = project.spriteSheets.find((s) => s.id === editorState.activeSpriteSheetId);
348
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData)) {
335
349
  return;
350
+ }
336
351
  const frames = autoSliceSpriteSheet(sheet.imageData, frameWidth, frameHeight);
337
- setProject(prev => ({
352
+ setProject((prev) => ({
338
353
  ...prev,
339
- spriteSheets: prev.spriteSheets.map(s => s.id === sheet.id ? { ...s, frames } : s),
354
+ spriteSheets: prev.spriteSheets.map((s) => (s.id === sheet.id ? { ...s, frames } : s)),
340
355
  }));
341
356
  pushHistory('Auto-slice sprite sheet');
342
357
  }, [project.spriteSheets, editorState.activeSpriteSheetId, pushHistory]);
343
358
  const detectSprites = useCallback(() => {
344
- const sheet = project.spriteSheets.find(s => s.id === editorState.activeSpriteSheetId);
345
- if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData))
359
+ const sheet = project.spriteSheets.find((s) => s.id === editorState.activeSpriteSheetId);
360
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData)) {
346
361
  return;
362
+ }
347
363
  const frames = detectFrames(sheet.imageData);
348
- setProject(prev => ({
364
+ setProject((prev) => ({
349
365
  ...prev,
350
- spriteSheets: prev.spriteSheets.map(s => s.id === sheet.id ? { ...s, frames } : s),
366
+ spriteSheets: prev.spriteSheets.map((s) => (s.id === sheet.id ? { ...s, frames } : s)),
351
367
  }));
352
368
  pushHistory('Detect sprites');
353
369
  }, [project.spriteSheets, editorState.activeSpriteSheetId, pushHistory]);
354
370
  const addFrame = useCallback((frame) => {
355
371
  const newFrame = { ...frame, id: generateId('frame') };
356
- setProject(prev => ({
372
+ setProject((prev) => ({
357
373
  ...prev,
358
- spriteSheets: prev.spriteSheets.map(s => s.id === editorState.activeSpriteSheetId
359
- ? { ...s, frames: [...s.frames, newFrame] }
360
- : s),
374
+ spriteSheets: prev.spriteSheets.map((s) => s.id === editorState.activeSpriteSheetId ? { ...s, frames: [...s.frames, newFrame] } : s),
361
375
  }));
362
376
  pushHistory('Add frame');
363
377
  }, [editorState.activeSpriteSheetId, pushHistory]);
364
378
  const updateFrame = useCallback((id, updates) => {
365
- setProject(prev => ({
379
+ setProject((prev) => ({
366
380
  ...prev,
367
- spriteSheets: prev.spriteSheets.map(s => ({
381
+ spriteSheets: prev.spriteSheets.map((s) => ({
368
382
  ...s,
369
- frames: s.frames.map(f => (f.id === id ? { ...f, ...updates } : f)),
383
+ frames: s.frames.map((f) => (f.id === id ? { ...f, ...updates } : f)),
370
384
  })),
371
385
  }));
372
386
  }, []);
373
387
  const removeFrame = useCallback((id) => {
374
- setProject(prev => ({
388
+ setProject((prev) => ({
375
389
  ...prev,
376
- spriteSheets: prev.spriteSheets.map(s => ({
390
+ spriteSheets: prev.spriteSheets.map((s) => ({
377
391
  ...s,
378
- frames: s.frames.filter(f => f.id !== id),
392
+ frames: s.frames.filter((f) => f.id !== id),
379
393
  })),
380
394
  }));
381
395
  pushHistory('Remove frame');
382
396
  }, [pushHistory]);
383
397
  const selectFrames = useCallback((ids) => {
384
- setEditorState(prev => ({ ...prev, selectedFrameIds: ids }));
398
+ setEditorState((prev) => ({ ...prev, selectedFrameIds: ids }));
385
399
  }, []);
386
400
  // ─────────────────────────────────────────────────────────────
387
401
  // Animation operations
388
402
  // ─────────────────────────────────────────────────────────────
389
403
  const createAnimation = useCallback((name, frameIds) => {
390
404
  const animation = createSpriteAnimation(name, frameIds);
391
- setProject(prev => ({
405
+ setProject((prev) => ({
392
406
  ...prev,
393
- spriteSheets: prev.spriteSheets.map(s => s.id === editorState.activeSpriteSheetId
407
+ spriteSheets: prev.spriteSheets.map((s) => s.id === editorState.activeSpriteSheetId
394
408
  ? { ...s, animations: [...s.animations, animation] }
395
409
  : s),
396
410
  }));
397
411
  pushHistory(`Create animation: ${name}`);
398
412
  }, [editorState.activeSpriteSheetId, pushHistory]);
399
413
  const removeAnimation = useCallback((id) => {
400
- setProject(prev => ({
414
+ setProject((prev) => ({
401
415
  ...prev,
402
- spriteSheets: prev.spriteSheets.map(s => ({
416
+ spriteSheets: prev.spriteSheets.map((s) => ({
403
417
  ...s,
404
- animations: s.animations.filter(a => a.id !== id),
418
+ animations: s.animations.filter((a) => a.id !== id),
405
419
  })),
406
420
  }));
407
421
  pushHistory('Remove animation');
408
422
  }, [pushHistory]);
409
423
  const updateAnimation = useCallback((id, updates) => {
410
- setProject(prev => ({
424
+ setProject((prev) => ({
411
425
  ...prev,
412
- spriteSheets: prev.spriteSheets.map(s => ({
426
+ spriteSheets: prev.spriteSheets.map((s) => ({
413
427
  ...s,
414
- animations: s.animations.map(a => (a.id === id ? { ...a, ...updates } : a)),
428
+ animations: s.animations.map((a) => (a.id === id ? { ...a, ...updates } : a)),
415
429
  })),
416
430
  }));
417
431
  }, []);
@@ -428,19 +442,19 @@ const useGameAssetEditor = (options = {}) => {
428
442
  entryStateId: '',
429
443
  anyStateTransitions: [],
430
444
  };
431
- setProject(prev => ({ ...prev, stateMachines: [...prev.stateMachines, sm] }));
432
- setEditorState(prev => ({ ...prev, activeStateMachineId: sm.id }));
445
+ setProject((prev) => ({ ...prev, stateMachines: [...prev.stateMachines, sm] }));
446
+ setEditorState((prev) => ({ ...prev, activeStateMachineId: sm.id }));
433
447
  pushHistory(`Create state machine: ${name}`);
434
448
  }, [pushHistory]);
435
449
  const removeStateMachine = useCallback((id) => {
436
- setProject(prev => ({
450
+ setProject((prev) => ({
437
451
  ...prev,
438
- stateMachines: prev.stateMachines.filter(sm => sm.id !== id),
452
+ stateMachines: prev.stateMachines.filter((sm) => sm.id !== id),
439
453
  }));
440
454
  pushHistory('Remove state machine');
441
455
  }, [pushHistory]);
442
456
  const selectStateMachine = useCallback((id) => {
443
- setEditorState(prev => ({ ...prev, activeStateMachineId: id, selectedStateId: null }));
457
+ setEditorState((prev) => ({ ...prev, activeStateMachineId: id, selectedStateId: null }));
444
458
  }, []);
445
459
  const addState = useCallback((name, animationId) => {
446
460
  const state = {
@@ -451,9 +465,9 @@ const useGameAssetEditor = (options = {}) => {
451
465
  loop: true,
452
466
  position: { x: Math.random() * 400, y: Math.random() * 300 },
453
467
  };
454
- setProject(prev => ({
468
+ setProject((prev) => ({
455
469
  ...prev,
456
- stateMachines: prev.stateMachines.map(sm => sm.id === editorState.activeStateMachineId
470
+ stateMachines: prev.stateMachines.map((sm) => sm.id === editorState.activeStateMachineId
457
471
  ? {
458
472
  ...sm,
459
473
  states: [...sm.states, state],
@@ -464,25 +478,25 @@ const useGameAssetEditor = (options = {}) => {
464
478
  pushHistory(`Add state: ${name}`);
465
479
  }, [editorState.activeStateMachineId, pushHistory]);
466
480
  const removeState = useCallback((id) => {
467
- setProject(prev => ({
481
+ setProject((prev) => ({
468
482
  ...prev,
469
- stateMachines: prev.stateMachines.map(sm => ({
483
+ stateMachines: prev.stateMachines.map((sm) => ({
470
484
  ...sm,
471
- states: sm.states.filter(s => s.id !== id),
472
- transitions: sm.transitions.filter(t => t.fromStateId !== id && t.toStateId !== id),
485
+ states: sm.states.filter((s) => s.id !== id),
486
+ transitions: sm.transitions.filter((t) => t.fromStateId !== id && t.toStateId !== id),
473
487
  })),
474
488
  }));
475
489
  pushHistory('Remove state');
476
490
  }, [pushHistory]);
477
491
  const selectState = useCallback((id) => {
478
- setEditorState(prev => ({ ...prev, selectedStateId: id }));
492
+ setEditorState((prev) => ({ ...prev, selectedStateId: id }));
479
493
  }, []);
480
494
  const updateState = useCallback((id, updates) => {
481
- setProject(prev => ({
495
+ setProject((prev) => ({
482
496
  ...prev,
483
- stateMachines: prev.stateMachines.map(sm => ({
497
+ stateMachines: prev.stateMachines.map((sm) => ({
484
498
  ...sm,
485
- states: sm.states.map(s => (s.id === id ? { ...s, ...updates } : s)),
499
+ states: sm.states.map((s) => (s.id === id ? { ...s, ...updates } : s)),
486
500
  })),
487
501
  }));
488
502
  }, []);
@@ -495,20 +509,20 @@ const useGameAssetEditor = (options = {}) => {
495
509
  duration: 0.1,
496
510
  priority: 0,
497
511
  };
498
- setProject(prev => ({
512
+ setProject((prev) => ({
499
513
  ...prev,
500
- stateMachines: prev.stateMachines.map(sm => sm.id === editorState.activeStateMachineId
514
+ stateMachines: prev.stateMachines.map((sm) => sm.id === editorState.activeStateMachineId
501
515
  ? { ...sm, transitions: [...sm.transitions, transition] }
502
516
  : sm),
503
517
  }));
504
518
  pushHistory('Add transition');
505
519
  }, [editorState.activeStateMachineId, pushHistory]);
506
520
  const removeTransition = useCallback((id) => {
507
- setProject(prev => ({
521
+ setProject((prev) => ({
508
522
  ...prev,
509
- stateMachines: prev.stateMachines.map(sm => ({
523
+ stateMachines: prev.stateMachines.map((sm) => ({
510
524
  ...sm,
511
- transitions: sm.transitions.filter(t => t.id !== id),
525
+ transitions: sm.transitions.filter((t) => t.id !== id),
512
526
  })),
513
527
  }));
514
528
  pushHistory('Remove transition');
@@ -520,20 +534,20 @@ const useGameAssetEditor = (options = {}) => {
520
534
  type,
521
535
  defaultValue: type === 'bool' ? false : 0,
522
536
  };
523
- setProject(prev => ({
537
+ setProject((prev) => ({
524
538
  ...prev,
525
- stateMachines: prev.stateMachines.map(sm => sm.id === editorState.activeStateMachineId
539
+ stateMachines: prev.stateMachines.map((sm) => sm.id === editorState.activeStateMachineId
526
540
  ? { ...sm, parameters: [...sm.parameters, param] }
527
541
  : sm),
528
542
  }));
529
543
  pushHistory(`Add parameter: ${name}`);
530
544
  }, [editorState.activeStateMachineId, pushHistory]);
531
545
  const removeParameter = useCallback((id) => {
532
- setProject(prev => ({
546
+ setProject((prev) => ({
533
547
  ...prev,
534
- stateMachines: prev.stateMachines.map(sm => ({
548
+ stateMachines: prev.stateMachines.map((sm) => ({
535
549
  ...sm,
536
- parameters: sm.parameters.filter(p => p.id !== id),
550
+ parameters: sm.parameters.filter((p) => p.id !== id),
537
551
  })),
538
552
  }));
539
553
  pushHistory('Remove parameter');
@@ -543,18 +557,18 @@ const useGameAssetEditor = (options = {}) => {
543
557
  // ─────────────────────────────────────────────────────────────
544
558
  const addEffect = useCallback((type) => {
545
559
  const defaultParams = {
546
- 'outline': { color: '#000000', thickness: 1 },
547
- 'shadow': { color: '#00000080', offsetX: 2, offsetY: 2, blur: 0 },
548
- 'glow': { color: '#ffffff', size: 4, intensity: 0.8 },
560
+ outline: { color: '#000000', thickness: 1 },
561
+ shadow: { color: '#00000080', offsetX: 2, offsetY: 2, blur: 0 },
562
+ glow: { color: '#ffffff', size: 4, intensity: 0.8 },
549
563
  'palette-swap': { from: '#ffffff', to: '#ff0000' },
550
- 'pixelate': { size: 4 },
551
- 'blur': { radius: 2 },
552
- 'brightness': { value: 0 },
553
- 'contrast': { value: 0 },
554
- 'saturation': { value: 0 },
564
+ pixelate: { size: 4 },
565
+ blur: { radius: 2 },
566
+ brightness: { value: 0 },
567
+ contrast: { value: 0 },
568
+ saturation: { value: 0 },
555
569
  'hue-shift': { degrees: 0 },
556
- 'invert': {},
557
- 'tint': { color: '#ffffff', amount: 0.5 },
570
+ invert: {},
571
+ tint: { color: '#ffffff', amount: 0.5 },
558
572
  };
559
573
  const effect = {
560
574
  id: generateId('effect'),
@@ -562,30 +576,30 @@ const useGameAssetEditor = (options = {}) => {
562
576
  enabled: true,
563
577
  params: { ...defaultParams[type] },
564
578
  };
565
- setCurrentEffects(prev => [...prev, effect]);
579
+ setCurrentEffects((prev) => [...prev, effect]);
566
580
  }, []);
567
581
  const removeEffect = useCallback((id) => {
568
- setCurrentEffects(prev => prev.filter(e => e.id !== id));
582
+ setCurrentEffects((prev) => prev.filter((e) => e.id !== id));
569
583
  }, []);
570
584
  const updateEffect = useCallback((id, updates) => {
571
- setCurrentEffects(prev => prev.map(e => (e.id === id ? { ...e, ...updates } : e)));
585
+ setCurrentEffects((prev) => prev.map((e) => (e.id === id ? { ...e, ...updates } : e)));
572
586
  }, []);
573
587
  const toggleEffect = useCallback((id) => {
574
- setCurrentEffects(prev => prev.map(e => (e.id === id ? { ...e, enabled: !e.enabled } : e)));
588
+ setCurrentEffects((prev) => prev.map((e) => (e.id === id ? { ...e, enabled: !e.enabled } : e)));
575
589
  }, []);
576
590
  const saveEffectPreset = useCallback((name) => {
577
591
  const preset = {
578
592
  id: generateId('preset'),
579
593
  name,
580
- effects: currentEffects.map(e => ({ ...e, id: generateId('effect') })),
594
+ effects: currentEffects.map((e) => ({ ...e, id: generateId('effect') })),
581
595
  };
582
- setProject(prev => ({ ...prev, effectPresets: [...prev.effectPresets, preset] }));
596
+ setProject((prev) => ({ ...prev, effectPresets: [...prev.effectPresets, preset] }));
583
597
  pushHistory(`Save effect preset: ${name}`);
584
598
  }, [currentEffects, pushHistory]);
585
599
  const loadEffectPreset = useCallback((id) => {
586
- const preset = project.effectPresets.find(p => p.id === id);
600
+ const preset = project.effectPresets.find((p) => p.id === id);
587
601
  if (preset) {
588
- setCurrentEffects(preset.effects.map(e => ({ ...e, id: generateId('effect') })));
602
+ setCurrentEffects(preset.effects.map((e) => ({ ...e, id: generateId('effect') })));
589
603
  }
590
604
  }, [project.effectPresets]);
591
605
  const previewEffects = useCallback((imageData) => {
@@ -596,9 +610,10 @@ const useGameAssetEditor = (options = {}) => {
596
610
  // ─────────────────────────────────────────────────────────────
597
611
  const exportTileMap = useCallback((format) => {
598
612
  var _a;
599
- const map = project.tileMaps.find(m => m.id === editorState.activeTileMapId);
600
- if (!map)
613
+ const map = project.tileMaps.find((m) => m.id === editorState.activeTileMapId);
614
+ if (!map) {
601
615
  return;
616
+ }
602
617
  if (format === 'json') {
603
618
  downloadJson(map, `${map.name}.json`);
604
619
  }
@@ -614,13 +629,13 @@ const useGameAssetEditor = (options = {}) => {
614
629
  const ctx = canvas.getContext('2d');
615
630
  ctx.fillStyle = map.backgroundColor;
616
631
  ctx.fillRect(0, 0, canvas.width, canvas.height);
617
- for (const layer of map.layers.filter(l => l.visible)) {
632
+ for (const layer of map.layers.filter((l) => l.visible)) {
618
633
  ctx.globalAlpha = layer.opacity;
619
634
  for (let y = 0; y < map.height; y++) {
620
635
  for (let x = 0; x < map.width; x++) {
621
636
  const tileId = (_a = layer.tiles[y]) === null || _a === void 0 ? void 0 : _a[x];
622
637
  if (tileId) {
623
- const tile = project.tileSets.find(t => t.id === tileId);
638
+ const tile = project.tileSets.find((t) => t.id === tileId);
624
639
  if (tile === null || tile === void 0 ? void 0 : tile.image) {
625
640
  const tempCanvas = document.createElement('canvas');
626
641
  tempCanvas.width = tile.image.width;
@@ -637,9 +652,10 @@ const useGameAssetEditor = (options = {}) => {
637
652
  onExport === null || onExport === void 0 ? void 0 : onExport(JSON.stringify(map), format);
638
653
  }, [project, editorState.activeTileMapId, onExport]);
639
654
  const exportSpriteSheet = useCallback((format) => {
640
- const sheet = project.spriteSheets.find(s => s.id === editorState.activeSpriteSheetId);
641
- if (!sheet)
655
+ const sheet = project.spriteSheets.find((s) => s.id === editorState.activeSpriteSheetId);
656
+ if (!sheet) {
642
657
  return;
658
+ }
643
659
  if (format === 'json') {
644
660
  const exportData = {
645
661
  name: sheet.name,
@@ -674,9 +690,10 @@ const useGameAssetEditor = (options = {}) => {
674
690
  onExport === null || onExport === void 0 ? void 0 : onExport(JSON.stringify(sheet), format);
675
691
  }, [project.spriteSheets, editorState.activeSpriteSheetId, onExport]);
676
692
  const exportStateMachine = useCallback((format) => {
677
- const sm = project.stateMachines.find(s => s.id === editorState.activeStateMachineId);
678
- if (!sm)
693
+ const sm = project.stateMachines.find((s) => s.id === editorState.activeStateMachineId);
694
+ if (!sm) {
679
695
  return;
696
+ }
680
697
  downloadJson(sm, `${sm.name}.statemachine.json`);
681
698
  onExport === null || onExport === void 0 ? void 0 : onExport(JSON.stringify(sm), format);
682
699
  }, [project.stateMachines, editorState.activeStateMachineId, onExport]);