@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
@@ -44,27 +44,28 @@ const useGameAssetEditor = (options = {}) => {
44
44
  timestamp: Date.now(),
45
45
  snapshot: JSON.parse(JSON.stringify(project)),
46
46
  };
47
- setHistory(prev => {
47
+ setHistory((prev) => {
48
48
  const newHistory = prev.slice(0, historyIndex + 1);
49
49
  newHistory.push(entry);
50
- if (newHistory.length > MAX_HISTORY)
50
+ if (newHistory.length > MAX_HISTORY) {
51
51
  newHistory.shift();
52
+ }
52
53
  return newHistory;
53
54
  });
54
- setHistoryIndex(prev => Math.min(prev + 1, MAX_HISTORY - 1));
55
+ setHistoryIndex((prev) => Math.min(prev + 1, MAX_HISTORY - 1));
55
56
  }, [project, historyIndex]);
56
57
  const undo = React.useCallback(() => {
57
58
  if (historyIndex > 0) {
58
59
  const entry = history[historyIndex - 1];
59
60
  setProject(entry.snapshot);
60
- setHistoryIndex(prev => prev - 1);
61
+ setHistoryIndex((prev) => prev - 1);
61
62
  }
62
63
  }, [history, historyIndex]);
63
64
  const redo = React.useCallback(() => {
64
65
  if (historyIndex < history.length - 1) {
65
66
  const entry = history[historyIndex + 1];
66
67
  setProject(entry.snapshot);
67
- setHistoryIndex(prev => prev + 1);
68
+ setHistoryIndex((prev) => prev + 1);
68
69
  }
69
70
  }, [history, historyIndex]);
70
71
  // ─────────────────────────────────────────────────────────────
@@ -94,46 +95,46 @@ const useGameAssetEditor = (options = {}) => {
94
95
  // Editor state operations
95
96
  // ─────────────────────────────────────────────────────────────
96
97
  const setMode = React.useCallback((mode) => {
97
- setEditorState(prev => ({ ...prev, mode }));
98
+ setEditorState((prev) => ({ ...prev, mode }));
98
99
  }, []);
99
100
  const setTileMapTool = React.useCallback((tool) => {
100
- setEditorState(prev => ({ ...prev, tileMapTool: tool }));
101
+ setEditorState((prev) => ({ ...prev, tileMapTool: tool }));
101
102
  }, []);
102
103
  const setSpriteSheetTool = React.useCallback((tool) => {
103
- setEditorState(prev => ({ ...prev, spriteSheetTool: tool }));
104
+ setEditorState((prev) => ({ ...prev, spriteSheetTool: tool }));
104
105
  }, []);
105
106
  const setZoom = React.useCallback((zoom) => {
106
- setEditorState(prev => ({ ...prev, zoom: Math.max(0.1, Math.min(10, zoom)) }));
107
+ setEditorState((prev) => ({ ...prev, zoom: Math.max(0.1, Math.min(10, zoom)) }));
107
108
  }, []);
108
109
  const setPan = React.useCallback((x, y) => {
109
- setEditorState(prev => ({ ...prev, panX: x, panY: y }));
110
+ setEditorState((prev) => ({ ...prev, panX: x, panY: y }));
110
111
  }, []);
111
112
  const toggleGrid = React.useCallback(() => {
112
- setEditorState(prev => ({ ...prev, showGrid: !prev.showGrid }));
113
+ setEditorState((prev) => ({ ...prev, showGrid: !prev.showGrid }));
113
114
  }, []);
114
115
  const toggleCollision = React.useCallback(() => {
115
- setEditorState(prev => ({ ...prev, showCollision: !prev.showCollision }));
116
+ setEditorState((prev) => ({ ...prev, showCollision: !prev.showCollision }));
116
117
  }, []);
117
118
  const toggleSnap = React.useCallback(() => {
118
- setEditorState(prev => ({ ...prev, snapToGrid: !prev.snapToGrid }));
119
+ setEditorState((prev) => ({ ...prev, snapToGrid: !prev.snapToGrid }));
119
120
  }, []);
120
121
  // ─────────────────────────────────────────────────────────────
121
122
  // Tile set operations
122
123
  // ─────────────────────────────────────────────────────────────
123
124
  const addTile = React.useCallback((imageData, name) => {
124
125
  const tile = gameAssetUtils.createTileFromImage(imageData, name);
125
- setProject(prev => ({ ...prev, tileSets: [...prev.tileSets, tile] }));
126
+ setProject((prev) => ({ ...prev, tileSets: [...prev.tileSets, tile] }));
126
127
  pushHistory(`Add tile: ${name}`);
127
128
  }, [pushHistory]);
128
129
  const removeTile = React.useCallback((id) => {
129
- setProject(prev => ({
130
+ setProject((prev) => ({
130
131
  ...prev,
131
- tileSets: prev.tileSets.filter(t => t.id !== id),
132
+ tileSets: prev.tileSets.filter((t) => t.id !== id),
132
133
  }));
133
134
  pushHistory('Remove tile');
134
135
  }, [pushHistory]);
135
136
  const selectTile = React.useCallback((id) => {
136
- setEditorState(prev => ({ ...prev, selectedTileId: id }));
137
+ setEditorState((prev) => ({ ...prev, selectedTileId: id }));
137
138
  }, []);
138
139
  const importTileSet = React.useCallback(async (file) => {
139
140
  const dataUrl = await new Promise((resolve) => {
@@ -150,8 +151,8 @@ const useGameAssetEditor = (options = {}) => {
150
151
  // ─────────────────────────────────────────────────────────────
151
152
  const createTileMap = React.useCallback((name, width, height) => {
152
153
  const map = gameAssetUtils.createEmptyTileMap(name, width, height, project.settings.defaultTileWidth, project.settings.defaultTileHeight);
153
- setProject(prev => ({ ...prev, tileMaps: [...prev.tileMaps, map] }));
154
- setEditorState(prev => ({
154
+ setProject((prev) => ({ ...prev, tileMaps: [...prev.tileMaps, map] }));
155
+ setEditorState((prev) => ({
155
156
  ...prev,
156
157
  activeTileMapId: map.id,
157
158
  activeLayerId: map.layers[0].id,
@@ -159,16 +160,16 @@ const useGameAssetEditor = (options = {}) => {
159
160
  pushHistory(`Create tile map: ${name}`);
160
161
  }, [project.settings, pushHistory]);
161
162
  const removeTileMap = React.useCallback((id) => {
162
- setProject(prev => ({
163
+ setProject((prev) => ({
163
164
  ...prev,
164
- tileMaps: prev.tileMaps.filter(m => m.id !== id),
165
+ tileMaps: prev.tileMaps.filter((m) => m.id !== id),
165
166
  }));
166
167
  pushHistory('Remove tile map');
167
168
  }, [pushHistory]);
168
169
  const selectTileMap = React.useCallback((id) => {
169
- setEditorState(prev => {
170
+ setEditorState((prev) => {
170
171
  var _a, _b;
171
- const map = project.tileMaps.find(m => m.id === id);
172
+ const map = project.tileMaps.find((m) => m.id === id);
172
173
  return {
173
174
  ...prev,
174
175
  activeTileMapId: id,
@@ -177,14 +178,15 @@ const useGameAssetEditor = (options = {}) => {
177
178
  });
178
179
  }, [project.tileMaps]);
179
180
  const setTile = React.useCallback((layerId, x, y, tileId) => {
180
- setProject(prev => ({
181
+ setProject((prev) => ({
181
182
  ...prev,
182
- tileMaps: prev.tileMaps.map(map => ({
183
+ tileMaps: prev.tileMaps.map((map) => ({
183
184
  ...map,
184
- layers: map.layers.map(layer => {
185
- if (layer.id !== layerId)
185
+ layers: map.layers.map((layer) => {
186
+ if (layer.id !== layerId) {
186
187
  return layer;
187
- const newTiles = layer.tiles.map(row => [...row]);
188
+ }
189
+ const newTiles = layer.tiles.map((row) => [...row]);
188
190
  if (y >= 0 && y < newTiles.length && x >= 0 && x < newTiles[0].length) {
189
191
  newTiles[y][x] = tileId;
190
192
  }
@@ -194,95 +196,107 @@ const useGameAssetEditor = (options = {}) => {
194
196
  }));
195
197
  }, []);
196
198
  const fillTiles = React.useCallback((layerId, startX, startY, newTileId) => {
197
- setProject(prev => {
199
+ setProject((prev) => {
198
200
  var _a;
199
- const map = prev.tileMaps.find(m => m.layers.some(l => l.id === layerId));
200
- if (!map)
201
+ const map = prev.tileMaps.find((m) => m.layers.some((l) => l.id === layerId));
202
+ if (!map) {
201
203
  return prev;
202
- const layer = map.layers.find(l => l.id === layerId);
203
- if (!layer)
204
+ }
205
+ const layer = map.layers.find((l) => l.id === layerId);
206
+ if (!layer) {
204
207
  return prev;
208
+ }
205
209
  const targetId = (_a = layer.tiles[startY]) === null || _a === void 0 ? void 0 : _a[startX];
206
- if (targetId === newTileId)
210
+ if (targetId === newTileId) {
207
211
  return prev;
208
- const newTiles = layer.tiles.map(row => [...row]);
212
+ }
213
+ const newTiles = layer.tiles.map((row) => [...row]);
209
214
  const stack = [[startX, startY]];
210
215
  const visited = new Set();
211
216
  while (stack.length > 0) {
212
217
  const [x, y] = stack.pop();
213
218
  const key = `${x},${y}`;
214
- if (visited.has(key))
219
+ if (visited.has(key)) {
215
220
  continue;
216
- if (y < 0 || y >= newTiles.length || x < 0 || x >= newTiles[0].length)
221
+ }
222
+ if (y < 0 || y >= newTiles.length || x < 0 || x >= newTiles[0].length) {
217
223
  continue;
218
- if (newTiles[y][x] !== targetId)
224
+ }
225
+ if (newTiles[y][x] !== targetId) {
219
226
  continue;
227
+ }
220
228
  visited.add(key);
221
229
  newTiles[y][x] = newTileId;
222
230
  stack.push([x + 1, y], [x - 1, y], [x, y + 1], [x, y - 1]);
223
231
  }
224
232
  return {
225
233
  ...prev,
226
- tileMaps: prev.tileMaps.map(m => m.id === map.id
227
- ? { ...m, layers: m.layers.map(l => (l.id === layerId ? { ...l, tiles: newTiles } : l)) }
234
+ tileMaps: prev.tileMaps.map((m) => m.id === map.id
235
+ ? {
236
+ ...m,
237
+ layers: m.layers.map((l) => (l.id === layerId ? { ...l, tiles: newTiles } : l)),
238
+ }
228
239
  : m),
229
240
  };
230
241
  });
231
242
  pushHistory('Fill tiles');
232
243
  }, [pushHistory]);
233
244
  const addLayer = React.useCallback(() => {
234
- const map = project.tileMaps.find(m => m.id === editorState.activeTileMapId);
235
- if (!map)
245
+ const map = project.tileMaps.find((m) => m.id === editorState.activeTileMapId);
246
+ if (!map) {
236
247
  return;
248
+ }
237
249
  const newLayer = gameAssetUtils.createEmptyTileLayer(`Layer ${map.layers.length + 1}`, map.width, map.height);
238
- setProject(prev => ({
250
+ setProject((prev) => ({
239
251
  ...prev,
240
- tileMaps: prev.tileMaps.map(m => m.id === map.id ? { ...m, layers: [...m.layers, newLayer] } : m),
252
+ tileMaps: prev.tileMaps.map((m) => m.id === map.id ? { ...m, layers: [...m.layers, newLayer] } : m),
241
253
  }));
242
- setEditorState(prev => ({ ...prev, activeLayerId: newLayer.id }));
254
+ setEditorState((prev) => ({ ...prev, activeLayerId: newLayer.id }));
243
255
  pushHistory('Add layer');
244
256
  }, [project.tileMaps, editorState.activeTileMapId, pushHistory]);
245
257
  const removeLayer = React.useCallback((id) => {
246
- setProject(prev => ({
258
+ setProject((prev) => ({
247
259
  ...prev,
248
- tileMaps: prev.tileMaps.map(m => ({
260
+ tileMaps: prev.tileMaps.map((m) => ({
249
261
  ...m,
250
- layers: m.layers.filter(l => l.id !== id),
262
+ layers: m.layers.filter((l) => l.id !== id),
251
263
  })),
252
264
  }));
253
265
  pushHistory('Remove layer');
254
266
  }, [pushHistory]);
255
267
  const selectLayer = React.useCallback((id) => {
256
- setEditorState(prev => ({ ...prev, activeLayerId: id }));
268
+ setEditorState((prev) => ({ ...prev, activeLayerId: id }));
257
269
  }, []);
258
270
  const toggleLayerVisibility = React.useCallback((id) => {
259
- setProject(prev => ({
271
+ setProject((prev) => ({
260
272
  ...prev,
261
- tileMaps: prev.tileMaps.map(m => ({
273
+ tileMaps: prev.tileMaps.map((m) => ({
262
274
  ...m,
263
- layers: m.layers.map(l => (l.id === id ? { ...l, visible: !l.visible } : l)),
275
+ layers: m.layers.map((l) => (l.id === id ? { ...l, visible: !l.visible } : l)),
264
276
  })),
265
277
  }));
266
278
  }, []);
267
279
  const setLayerOpacity = React.useCallback((id, opacity) => {
268
- setProject(prev => ({
280
+ setProject((prev) => ({
269
281
  ...prev,
270
- tileMaps: prev.tileMaps.map(m => ({
282
+ tileMaps: prev.tileMaps.map((m) => ({
271
283
  ...m,
272
- layers: m.layers.map(l => (l.id === id ? { ...l, opacity } : l)),
284
+ layers: m.layers.map((l) => (l.id === id ? { ...l, opacity } : l)),
273
285
  })),
274
286
  }));
275
287
  }, []);
276
288
  const moveLayer = React.useCallback((id, direction) => {
277
- setProject(prev => ({
289
+ setProject((prev) => ({
278
290
  ...prev,
279
- tileMaps: prev.tileMaps.map(m => {
280
- const idx = m.layers.findIndex(l => l.id === id);
281
- if (idx === -1)
291
+ tileMaps: prev.tileMaps.map((m) => {
292
+ const idx = m.layers.findIndex((l) => l.id === id);
293
+ if (idx === -1) {
282
294
  return m;
295
+ }
283
296
  const newIdx = direction === 'up' ? idx - 1 : idx + 1;
284
- if (newIdx < 0 || newIdx >= m.layers.length)
297
+ if (newIdx < 0 || newIdx >= m.layers.length) {
285
298
  return m;
299
+ }
286
300
  const newLayers = [...m.layers];
287
301
  [newLayers[idx], newLayers[newIdx]] = [newLayers[newIdx], newLayers[idx]];
288
302
  return { ...m, layers: newLayers };
@@ -317,103 +331,103 @@ const useGameAssetEditor = (options = {}) => {
317
331
  frames: [],
318
332
  animations: [],
319
333
  };
320
- setProject(prev => ({ ...prev, spriteSheets: [...prev.spriteSheets, sheet] }));
321
- setEditorState(prev => ({ ...prev, activeSpriteSheetId: sheet.id }));
334
+ setProject((prev) => ({ ...prev, spriteSheets: [...prev.spriteSheets, sheet] }));
335
+ setEditorState((prev) => ({ ...prev, activeSpriteSheetId: sheet.id }));
322
336
  pushHistory(`Import sprite sheet: ${sheet.name}`);
323
337
  }, [pushHistory]);
324
338
  const removeSpriteSheet = React.useCallback((id) => {
325
- setProject(prev => ({
339
+ setProject((prev) => ({
326
340
  ...prev,
327
- spriteSheets: prev.spriteSheets.filter(s => s.id !== id),
341
+ spriteSheets: prev.spriteSheets.filter((s) => s.id !== id),
328
342
  }));
329
343
  pushHistory('Remove sprite sheet');
330
344
  }, [pushHistory]);
331
345
  const selectSpriteSheet = React.useCallback((id) => {
332
- setEditorState(prev => ({ ...prev, activeSpriteSheetId: id, selectedFrameIds: [] }));
346
+ setEditorState((prev) => ({ ...prev, activeSpriteSheetId: id, selectedFrameIds: [] }));
333
347
  }, []);
334
348
  const autoSlice = React.useCallback((frameWidth, frameHeight) => {
335
- const sheet = project.spriteSheets.find(s => s.id === editorState.activeSpriteSheetId);
336
- if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData))
349
+ const sheet = project.spriteSheets.find((s) => s.id === editorState.activeSpriteSheetId);
350
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData)) {
337
351
  return;
352
+ }
338
353
  const frames = gameAssetUtils.autoSliceSpriteSheet(sheet.imageData, frameWidth, frameHeight);
339
- setProject(prev => ({
354
+ setProject((prev) => ({
340
355
  ...prev,
341
- spriteSheets: prev.spriteSheets.map(s => s.id === sheet.id ? { ...s, frames } : s),
356
+ spriteSheets: prev.spriteSheets.map((s) => (s.id === sheet.id ? { ...s, frames } : s)),
342
357
  }));
343
358
  pushHistory('Auto-slice sprite sheet');
344
359
  }, [project.spriteSheets, editorState.activeSpriteSheetId, pushHistory]);
345
360
  const detectSprites = React.useCallback(() => {
346
- const sheet = project.spriteSheets.find(s => s.id === editorState.activeSpriteSheetId);
347
- if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData))
361
+ const sheet = project.spriteSheets.find((s) => s.id === editorState.activeSpriteSheetId);
362
+ if (!(sheet === null || sheet === void 0 ? void 0 : sheet.imageData)) {
348
363
  return;
364
+ }
349
365
  const frames = gameAssetUtils.detectFrames(sheet.imageData);
350
- setProject(prev => ({
366
+ setProject((prev) => ({
351
367
  ...prev,
352
- spriteSheets: prev.spriteSheets.map(s => s.id === sheet.id ? { ...s, frames } : s),
368
+ spriteSheets: prev.spriteSheets.map((s) => (s.id === sheet.id ? { ...s, frames } : s)),
353
369
  }));
354
370
  pushHistory('Detect sprites');
355
371
  }, [project.spriteSheets, editorState.activeSpriteSheetId, pushHistory]);
356
372
  const addFrame = React.useCallback((frame) => {
357
373
  const newFrame = { ...frame, id: gameAssetUtils.generateId('frame') };
358
- setProject(prev => ({
374
+ setProject((prev) => ({
359
375
  ...prev,
360
- spriteSheets: prev.spriteSheets.map(s => s.id === editorState.activeSpriteSheetId
361
- ? { ...s, frames: [...s.frames, newFrame] }
362
- : s),
376
+ spriteSheets: prev.spriteSheets.map((s) => s.id === editorState.activeSpriteSheetId ? { ...s, frames: [...s.frames, newFrame] } : s),
363
377
  }));
364
378
  pushHistory('Add frame');
365
379
  }, [editorState.activeSpriteSheetId, pushHistory]);
366
380
  const updateFrame = React.useCallback((id, updates) => {
367
- setProject(prev => ({
381
+ setProject((prev) => ({
368
382
  ...prev,
369
- spriteSheets: prev.spriteSheets.map(s => ({
383
+ spriteSheets: prev.spriteSheets.map((s) => ({
370
384
  ...s,
371
- frames: s.frames.map(f => (f.id === id ? { ...f, ...updates } : f)),
385
+ frames: s.frames.map((f) => (f.id === id ? { ...f, ...updates } : f)),
372
386
  })),
373
387
  }));
374
388
  }, []);
375
389
  const removeFrame = React.useCallback((id) => {
376
- setProject(prev => ({
390
+ setProject((prev) => ({
377
391
  ...prev,
378
- spriteSheets: prev.spriteSheets.map(s => ({
392
+ spriteSheets: prev.spriteSheets.map((s) => ({
379
393
  ...s,
380
- frames: s.frames.filter(f => f.id !== id),
394
+ frames: s.frames.filter((f) => f.id !== id),
381
395
  })),
382
396
  }));
383
397
  pushHistory('Remove frame');
384
398
  }, [pushHistory]);
385
399
  const selectFrames = React.useCallback((ids) => {
386
- setEditorState(prev => ({ ...prev, selectedFrameIds: ids }));
400
+ setEditorState((prev) => ({ ...prev, selectedFrameIds: ids }));
387
401
  }, []);
388
402
  // ─────────────────────────────────────────────────────────────
389
403
  // Animation operations
390
404
  // ─────────────────────────────────────────────────────────────
391
405
  const createAnimation = React.useCallback((name, frameIds) => {
392
406
  const animation = gameAssetUtils.createSpriteAnimation(name, frameIds);
393
- setProject(prev => ({
407
+ setProject((prev) => ({
394
408
  ...prev,
395
- spriteSheets: prev.spriteSheets.map(s => s.id === editorState.activeSpriteSheetId
409
+ spriteSheets: prev.spriteSheets.map((s) => s.id === editorState.activeSpriteSheetId
396
410
  ? { ...s, animations: [...s.animations, animation] }
397
411
  : s),
398
412
  }));
399
413
  pushHistory(`Create animation: ${name}`);
400
414
  }, [editorState.activeSpriteSheetId, pushHistory]);
401
415
  const removeAnimation = React.useCallback((id) => {
402
- setProject(prev => ({
416
+ setProject((prev) => ({
403
417
  ...prev,
404
- spriteSheets: prev.spriteSheets.map(s => ({
418
+ spriteSheets: prev.spriteSheets.map((s) => ({
405
419
  ...s,
406
- animations: s.animations.filter(a => a.id !== id),
420
+ animations: s.animations.filter((a) => a.id !== id),
407
421
  })),
408
422
  }));
409
423
  pushHistory('Remove animation');
410
424
  }, [pushHistory]);
411
425
  const updateAnimation = React.useCallback((id, updates) => {
412
- setProject(prev => ({
426
+ setProject((prev) => ({
413
427
  ...prev,
414
- spriteSheets: prev.spriteSheets.map(s => ({
428
+ spriteSheets: prev.spriteSheets.map((s) => ({
415
429
  ...s,
416
- animations: s.animations.map(a => (a.id === id ? { ...a, ...updates } : a)),
430
+ animations: s.animations.map((a) => (a.id === id ? { ...a, ...updates } : a)),
417
431
  })),
418
432
  }));
419
433
  }, []);
@@ -430,19 +444,19 @@ const useGameAssetEditor = (options = {}) => {
430
444
  entryStateId: '',
431
445
  anyStateTransitions: [],
432
446
  };
433
- setProject(prev => ({ ...prev, stateMachines: [...prev.stateMachines, sm] }));
434
- setEditorState(prev => ({ ...prev, activeStateMachineId: sm.id }));
447
+ setProject((prev) => ({ ...prev, stateMachines: [...prev.stateMachines, sm] }));
448
+ setEditorState((prev) => ({ ...prev, activeStateMachineId: sm.id }));
435
449
  pushHistory(`Create state machine: ${name}`);
436
450
  }, [pushHistory]);
437
451
  const removeStateMachine = React.useCallback((id) => {
438
- setProject(prev => ({
452
+ setProject((prev) => ({
439
453
  ...prev,
440
- stateMachines: prev.stateMachines.filter(sm => sm.id !== id),
454
+ stateMachines: prev.stateMachines.filter((sm) => sm.id !== id),
441
455
  }));
442
456
  pushHistory('Remove state machine');
443
457
  }, [pushHistory]);
444
458
  const selectStateMachine = React.useCallback((id) => {
445
- setEditorState(prev => ({ ...prev, activeStateMachineId: id, selectedStateId: null }));
459
+ setEditorState((prev) => ({ ...prev, activeStateMachineId: id, selectedStateId: null }));
446
460
  }, []);
447
461
  const addState = React.useCallback((name, animationId) => {
448
462
  const state = {
@@ -453,9 +467,9 @@ const useGameAssetEditor = (options = {}) => {
453
467
  loop: true,
454
468
  position: { x: Math.random() * 400, y: Math.random() * 300 },
455
469
  };
456
- setProject(prev => ({
470
+ setProject((prev) => ({
457
471
  ...prev,
458
- stateMachines: prev.stateMachines.map(sm => sm.id === editorState.activeStateMachineId
472
+ stateMachines: prev.stateMachines.map((sm) => sm.id === editorState.activeStateMachineId
459
473
  ? {
460
474
  ...sm,
461
475
  states: [...sm.states, state],
@@ -466,25 +480,25 @@ const useGameAssetEditor = (options = {}) => {
466
480
  pushHistory(`Add state: ${name}`);
467
481
  }, [editorState.activeStateMachineId, pushHistory]);
468
482
  const removeState = React.useCallback((id) => {
469
- setProject(prev => ({
483
+ setProject((prev) => ({
470
484
  ...prev,
471
- stateMachines: prev.stateMachines.map(sm => ({
485
+ stateMachines: prev.stateMachines.map((sm) => ({
472
486
  ...sm,
473
- states: sm.states.filter(s => s.id !== id),
474
- transitions: sm.transitions.filter(t => t.fromStateId !== id && t.toStateId !== id),
487
+ states: sm.states.filter((s) => s.id !== id),
488
+ transitions: sm.transitions.filter((t) => t.fromStateId !== id && t.toStateId !== id),
475
489
  })),
476
490
  }));
477
491
  pushHistory('Remove state');
478
492
  }, [pushHistory]);
479
493
  const selectState = React.useCallback((id) => {
480
- setEditorState(prev => ({ ...prev, selectedStateId: id }));
494
+ setEditorState((prev) => ({ ...prev, selectedStateId: id }));
481
495
  }, []);
482
496
  const updateState = React.useCallback((id, updates) => {
483
- setProject(prev => ({
497
+ setProject((prev) => ({
484
498
  ...prev,
485
- stateMachines: prev.stateMachines.map(sm => ({
499
+ stateMachines: prev.stateMachines.map((sm) => ({
486
500
  ...sm,
487
- states: sm.states.map(s => (s.id === id ? { ...s, ...updates } : s)),
501
+ states: sm.states.map((s) => (s.id === id ? { ...s, ...updates } : s)),
488
502
  })),
489
503
  }));
490
504
  }, []);
@@ -497,20 +511,20 @@ const useGameAssetEditor = (options = {}) => {
497
511
  duration: 0.1,
498
512
  priority: 0,
499
513
  };
500
- setProject(prev => ({
514
+ setProject((prev) => ({
501
515
  ...prev,
502
- stateMachines: prev.stateMachines.map(sm => sm.id === editorState.activeStateMachineId
516
+ stateMachines: prev.stateMachines.map((sm) => sm.id === editorState.activeStateMachineId
503
517
  ? { ...sm, transitions: [...sm.transitions, transition] }
504
518
  : sm),
505
519
  }));
506
520
  pushHistory('Add transition');
507
521
  }, [editorState.activeStateMachineId, pushHistory]);
508
522
  const removeTransition = React.useCallback((id) => {
509
- setProject(prev => ({
523
+ setProject((prev) => ({
510
524
  ...prev,
511
- stateMachines: prev.stateMachines.map(sm => ({
525
+ stateMachines: prev.stateMachines.map((sm) => ({
512
526
  ...sm,
513
- transitions: sm.transitions.filter(t => t.id !== id),
527
+ transitions: sm.transitions.filter((t) => t.id !== id),
514
528
  })),
515
529
  }));
516
530
  pushHistory('Remove transition');
@@ -522,20 +536,20 @@ const useGameAssetEditor = (options = {}) => {
522
536
  type,
523
537
  defaultValue: type === 'bool' ? false : 0,
524
538
  };
525
- setProject(prev => ({
539
+ setProject((prev) => ({
526
540
  ...prev,
527
- stateMachines: prev.stateMachines.map(sm => sm.id === editorState.activeStateMachineId
541
+ stateMachines: prev.stateMachines.map((sm) => sm.id === editorState.activeStateMachineId
528
542
  ? { ...sm, parameters: [...sm.parameters, param] }
529
543
  : sm),
530
544
  }));
531
545
  pushHistory(`Add parameter: ${name}`);
532
546
  }, [editorState.activeStateMachineId, pushHistory]);
533
547
  const removeParameter = React.useCallback((id) => {
534
- setProject(prev => ({
548
+ setProject((prev) => ({
535
549
  ...prev,
536
- stateMachines: prev.stateMachines.map(sm => ({
550
+ stateMachines: prev.stateMachines.map((sm) => ({
537
551
  ...sm,
538
- parameters: sm.parameters.filter(p => p.id !== id),
552
+ parameters: sm.parameters.filter((p) => p.id !== id),
539
553
  })),
540
554
  }));
541
555
  pushHistory('Remove parameter');
@@ -545,18 +559,18 @@ const useGameAssetEditor = (options = {}) => {
545
559
  // ─────────────────────────────────────────────────────────────
546
560
  const addEffect = React.useCallback((type) => {
547
561
  const defaultParams = {
548
- 'outline': { color: '#000000', thickness: 1 },
549
- 'shadow': { color: '#00000080', offsetX: 2, offsetY: 2, blur: 0 },
550
- 'glow': { color: '#ffffff', size: 4, intensity: 0.8 },
562
+ outline: { color: '#000000', thickness: 1 },
563
+ shadow: { color: '#00000080', offsetX: 2, offsetY: 2, blur: 0 },
564
+ glow: { color: '#ffffff', size: 4, intensity: 0.8 },
551
565
  'palette-swap': { from: '#ffffff', to: '#ff0000' },
552
- 'pixelate': { size: 4 },
553
- 'blur': { radius: 2 },
554
- 'brightness': { value: 0 },
555
- 'contrast': { value: 0 },
556
- 'saturation': { value: 0 },
566
+ pixelate: { size: 4 },
567
+ blur: { radius: 2 },
568
+ brightness: { value: 0 },
569
+ contrast: { value: 0 },
570
+ saturation: { value: 0 },
557
571
  'hue-shift': { degrees: 0 },
558
- 'invert': {},
559
- 'tint': { color: '#ffffff', amount: 0.5 },
572
+ invert: {},
573
+ tint: { color: '#ffffff', amount: 0.5 },
560
574
  };
561
575
  const effect = {
562
576
  id: gameAssetUtils.generateId('effect'),
@@ -564,30 +578,30 @@ const useGameAssetEditor = (options = {}) => {
564
578
  enabled: true,
565
579
  params: { ...defaultParams[type] },
566
580
  };
567
- setCurrentEffects(prev => [...prev, effect]);
581
+ setCurrentEffects((prev) => [...prev, effect]);
568
582
  }, []);
569
583
  const removeEffect = React.useCallback((id) => {
570
- setCurrentEffects(prev => prev.filter(e => e.id !== id));
584
+ setCurrentEffects((prev) => prev.filter((e) => e.id !== id));
571
585
  }, []);
572
586
  const updateEffect = React.useCallback((id, updates) => {
573
- setCurrentEffects(prev => prev.map(e => (e.id === id ? { ...e, ...updates } : e)));
587
+ setCurrentEffects((prev) => prev.map((e) => (e.id === id ? { ...e, ...updates } : e)));
574
588
  }, []);
575
589
  const toggleEffect = React.useCallback((id) => {
576
- setCurrentEffects(prev => prev.map(e => (e.id === id ? { ...e, enabled: !e.enabled } : e)));
590
+ setCurrentEffects((prev) => prev.map((e) => (e.id === id ? { ...e, enabled: !e.enabled } : e)));
577
591
  }, []);
578
592
  const saveEffectPreset = React.useCallback((name) => {
579
593
  const preset = {
580
594
  id: gameAssetUtils.generateId('preset'),
581
595
  name,
582
- effects: currentEffects.map(e => ({ ...e, id: gameAssetUtils.generateId('effect') })),
596
+ effects: currentEffects.map((e) => ({ ...e, id: gameAssetUtils.generateId('effect') })),
583
597
  };
584
- setProject(prev => ({ ...prev, effectPresets: [...prev.effectPresets, preset] }));
598
+ setProject((prev) => ({ ...prev, effectPresets: [...prev.effectPresets, preset] }));
585
599
  pushHistory(`Save effect preset: ${name}`);
586
600
  }, [currentEffects, pushHistory]);
587
601
  const loadEffectPreset = React.useCallback((id) => {
588
- const preset = project.effectPresets.find(p => p.id === id);
602
+ const preset = project.effectPresets.find((p) => p.id === id);
589
603
  if (preset) {
590
- setCurrentEffects(preset.effects.map(e => ({ ...e, id: gameAssetUtils.generateId('effect') })));
604
+ setCurrentEffects(preset.effects.map((e) => ({ ...e, id: gameAssetUtils.generateId('effect') })));
591
605
  }
592
606
  }, [project.effectPresets]);
593
607
  const previewEffects = React.useCallback((imageData) => {
@@ -598,9 +612,10 @@ const useGameAssetEditor = (options = {}) => {
598
612
  // ─────────────────────────────────────────────────────────────
599
613
  const exportTileMap = React.useCallback((format) => {
600
614
  var _a;
601
- const map = project.tileMaps.find(m => m.id === editorState.activeTileMapId);
602
- if (!map)
615
+ const map = project.tileMaps.find((m) => m.id === editorState.activeTileMapId);
616
+ if (!map) {
603
617
  return;
618
+ }
604
619
  if (format === 'json') {
605
620
  gameAssetUtils.downloadJson(map, `${map.name}.json`);
606
621
  }
@@ -616,13 +631,13 @@ const useGameAssetEditor = (options = {}) => {
616
631
  const ctx = canvas.getContext('2d');
617
632
  ctx.fillStyle = map.backgroundColor;
618
633
  ctx.fillRect(0, 0, canvas.width, canvas.height);
619
- for (const layer of map.layers.filter(l => l.visible)) {
634
+ for (const layer of map.layers.filter((l) => l.visible)) {
620
635
  ctx.globalAlpha = layer.opacity;
621
636
  for (let y = 0; y < map.height; y++) {
622
637
  for (let x = 0; x < map.width; x++) {
623
638
  const tileId = (_a = layer.tiles[y]) === null || _a === void 0 ? void 0 : _a[x];
624
639
  if (tileId) {
625
- const tile = project.tileSets.find(t => t.id === tileId);
640
+ const tile = project.tileSets.find((t) => t.id === tileId);
626
641
  if (tile === null || tile === void 0 ? void 0 : tile.image) {
627
642
  const tempCanvas = document.createElement('canvas');
628
643
  tempCanvas.width = tile.image.width;
@@ -639,9 +654,10 @@ const useGameAssetEditor = (options = {}) => {
639
654
  onExport === null || onExport === void 0 ? void 0 : onExport(JSON.stringify(map), format);
640
655
  }, [project, editorState.activeTileMapId, onExport]);
641
656
  const exportSpriteSheet = React.useCallback((format) => {
642
- const sheet = project.spriteSheets.find(s => s.id === editorState.activeSpriteSheetId);
643
- if (!sheet)
657
+ const sheet = project.spriteSheets.find((s) => s.id === editorState.activeSpriteSheetId);
658
+ if (!sheet) {
644
659
  return;
660
+ }
645
661
  if (format === 'json') {
646
662
  const exportData = {
647
663
  name: sheet.name,
@@ -676,9 +692,10 @@ const useGameAssetEditor = (options = {}) => {
676
692
  onExport === null || onExport === void 0 ? void 0 : onExport(JSON.stringify(sheet), format);
677
693
  }, [project.spriteSheets, editorState.activeSpriteSheetId, onExport]);
678
694
  const exportStateMachine = React.useCallback((format) => {
679
- const sm = project.stateMachines.find(s => s.id === editorState.activeStateMachineId);
680
- if (!sm)
695
+ const sm = project.stateMachines.find((s) => s.id === editorState.activeStateMachineId);
696
+ if (!sm) {
681
697
  return;
698
+ }
682
699
  gameAssetUtils.downloadJson(sm, `${sm.name}.statemachine.json`);
683
700
  onExport === null || onExport === void 0 ? void 0 : onExport(JSON.stringify(sm), format);
684
701
  }, [project.stateMachines, editorState.activeStateMachineId, onExport]);