@nice2dev/ui-graphics 1.0.0

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 (511) hide show
  1. package/CHANGELOG.md +84 -0
  2. package/LICENSE +21 -0
  3. package/README.md +339 -0
  4. package/dist/cjs/animation/AnimatedPerson.js +153 -0
  5. package/dist/cjs/animation/AnimatedPerson.js.map +1 -0
  6. package/dist/cjs/animation/AnimationEditor.js +106 -0
  7. package/dist/cjs/animation/AnimationEditor.js.map +1 -0
  8. package/dist/cjs/animation/Audience.js +59 -0
  9. package/dist/cjs/animation/Audience.js.map +1 -0
  10. package/dist/cjs/animation/BodyRenderer.js +33 -0
  11. package/dist/cjs/animation/BodyRenderer.js.map +1 -0
  12. package/dist/cjs/animation/animationHelper.js +272 -0
  13. package/dist/cjs/animation/animationHelper.js.map +1 -0
  14. package/dist/cjs/animation/characterTypes.js +75 -0
  15. package/dist/cjs/animation/characterTypes.js.map +1 -0
  16. package/dist/cjs/animation/choreoDSL.js +190 -0
  17. package/dist/cjs/animation/choreoDSL.js.map +1 -0
  18. package/dist/cjs/animation/choreography.js +41 -0
  19. package/dist/cjs/animation/choreography.js.map +1 -0
  20. package/dist/cjs/animation/karaokeIntegration.js +98 -0
  21. package/dist/cjs/animation/karaokeIntegration.js.map +1 -0
  22. package/dist/cjs/animation/lottieExport.js +128 -0
  23. package/dist/cjs/animation/lottieExport.js.map +1 -0
  24. package/dist/cjs/animation/motionPath.js +196 -0
  25. package/dist/cjs/animation/motionPath.js.map +1 -0
  26. package/dist/cjs/animation/physics.js +201 -0
  27. package/dist/cjs/animation/physics.js.map +1 -0
  28. package/dist/cjs/animation/rig/RigPlayer.js +63 -0
  29. package/dist/cjs/animation/rig/RigPlayer.js.map +1 -0
  30. package/dist/cjs/animation/rig/RiggedBody.js +30 -0
  31. package/dist/cjs/animation/rig/RiggedBody.js.map +1 -0
  32. package/dist/cjs/animation/rig/choreoRigBridge.js +63 -0
  33. package/dist/cjs/animation/rig/choreoRigBridge.js.map +1 -0
  34. package/dist/cjs/animation/rig/ik.js +22 -0
  35. package/dist/cjs/animation/rig/ik.js.map +1 -0
  36. package/dist/cjs/animation/rig/poseOps.js +49 -0
  37. package/dist/cjs/animation/rig/poseOps.js.map +1 -0
  38. package/dist/cjs/animation/rig/presets.js +60 -0
  39. package/dist/cjs/animation/rig/presets.js.map +1 -0
  40. package/dist/cjs/animation/rig/rigMath.js +41 -0
  41. package/dist/cjs/animation/rig/rigMath.js.map +1 -0
  42. package/dist/cjs/animation/rig/rigTypes.js +44 -0
  43. package/dist/cjs/animation/rig/rigTypes.js.map +1 -0
  44. package/dist/cjs/animation/shapes/arms.js +15 -0
  45. package/dist/cjs/animation/shapes/arms.js.map +1 -0
  46. package/dist/cjs/animation/shapes/eyes.js +52 -0
  47. package/dist/cjs/animation/shapes/eyes.js.map +1 -0
  48. package/dist/cjs/animation/shapes/hair.js +55 -0
  49. package/dist/cjs/animation/shapes/hair.js.map +1 -0
  50. package/dist/cjs/animation/shapes/heads.js +62 -0
  51. package/dist/cjs/animation/shapes/heads.js.map +1 -0
  52. package/dist/cjs/animation/shapes/headwear.js +44 -0
  53. package/dist/cjs/animation/shapes/headwear.js.map +1 -0
  54. package/dist/cjs/animation/shapes/legs.js +15 -0
  55. package/dist/cjs/animation/shapes/legs.js.map +1 -0
  56. package/dist/cjs/animation/shapes/mouths.js +53 -0
  57. package/dist/cjs/animation/shapes/mouths.js.map +1 -0
  58. package/dist/cjs/animation/shapes/noses.js +31 -0
  59. package/dist/cjs/animation/shapes/noses.js.map +1 -0
  60. package/dist/cjs/animation/shapes/outfits.js +43 -0
  61. package/dist/cjs/animation/shapes/outfits.js.map +1 -0
  62. package/dist/cjs/animation/shapes/torsos.js +13 -0
  63. package/dist/cjs/animation/shapes/torsos.js.map +1 -0
  64. package/dist/cjs/animation/spineExport.js +132 -0
  65. package/dist/cjs/animation/spineExport.js.map +1 -0
  66. package/dist/cjs/core/LocalUI.js +54 -0
  67. package/dist/cjs/core/LocalUI.js.map +1 -0
  68. package/dist/cjs/core/collaboration.js +259 -0
  69. package/dist/cjs/core/collaboration.js.map +1 -0
  70. package/dist/cjs/core/colorBlindness.js +97 -0
  71. package/dist/cjs/core/colorBlindness.js.map +1 -0
  72. package/dist/cjs/core/dragDrop.js +168 -0
  73. package/dist/cjs/core/dragDrop.js.map +1 -0
  74. package/dist/cjs/core/fixes.js +185 -0
  75. package/dist/cjs/core/fixes.js.map +1 -0
  76. package/dist/cjs/core/gridGuides.js +245 -0
  77. package/dist/cjs/core/gridGuides.js.map +1 -0
  78. package/dist/cjs/core/historyVisual.js +124 -0
  79. package/dist/cjs/core/historyVisual.js.map +1 -0
  80. package/dist/cjs/core/i18n.js +16 -0
  81. package/dist/cjs/core/i18n.js.map +1 -0
  82. package/dist/cjs/core/integrations.js +261 -0
  83. package/dist/cjs/core/integrations.js.map +1 -0
  84. package/dist/cjs/core/minimap.js +142 -0
  85. package/dist/cjs/core/minimap.js.map +1 -0
  86. package/dist/cjs/core/plugins.js +129 -0
  87. package/dist/cjs/core/plugins.js.map +1 -0
  88. package/dist/cjs/core/rtl.js +102 -0
  89. package/dist/cjs/core/rtl.js.map +1 -0
  90. package/dist/cjs/core/shortcuts.js +205 -0
  91. package/dist/cjs/core/shortcuts.js.map +1 -0
  92. package/dist/cjs/core/theme.js +171 -0
  93. package/dist/cjs/core/theme.js.map +1 -0
  94. package/dist/cjs/font/NiceFontEditor.js +193 -0
  95. package/dist/cjs/font/NiceFontEditor.js.map +1 -0
  96. package/dist/cjs/game/GameAsset2dEditor.js +371 -0
  97. package/dist/cjs/game/GameAsset2dEditor.js.map +1 -0
  98. package/dist/cjs/game/GameAsset2dEditor.module.css.js +6 -0
  99. package/dist/cjs/game/GameAsset2dEditor.module.css.js.map +1 -0
  100. package/dist/cjs/game/gameAssetTypes.js +20 -0
  101. package/dist/cjs/game/gameAssetTypes.js.map +1 -0
  102. package/dist/cjs/game/gameAssetUtils.js +475 -0
  103. package/dist/cjs/game/gameAssetUtils.js.map +1 -0
  104. package/dist/cjs/game/useGameAssetEditor.js +761 -0
  105. package/dist/cjs/game/useGameAssetEditor.js.map +1 -0
  106. package/dist/cjs/icon/NiceIconEditor.js +249 -0
  107. package/dist/cjs/icon/NiceIconEditor.js.map +1 -0
  108. package/dist/cjs/index.js +264 -0
  109. package/dist/cjs/index.js.map +1 -0
  110. package/dist/cjs/nice2dev-ui/dist/index.js +32070 -0
  111. package/dist/cjs/nice2dev-ui/dist/index.js.map +1 -0
  112. package/dist/cjs/nice2dev-ui-graphics.css +1 -0
  113. package/dist/cjs/photo/FilterThumb.js +29 -0
  114. package/dist/cjs/photo/FilterThumb.js.map +1 -0
  115. package/dist/cjs/photo/PhotoEditor.js +20 -0
  116. package/dist/cjs/photo/PhotoEditor.js.map +1 -0
  117. package/dist/cjs/photo/PhotoEditor.module.css.js +6 -0
  118. package/dist/cjs/photo/PhotoEditor.module.css.js.map +1 -0
  119. package/dist/cjs/photo/PhotoEditorCanvas.js +59 -0
  120. package/dist/cjs/photo/PhotoEditorCanvas.js.map +1 -0
  121. package/dist/cjs/photo/PhotoEditorLeftPanel.js +174 -0
  122. package/dist/cjs/photo/PhotoEditorLeftPanel.js.map +1 -0
  123. package/dist/cjs/photo/PhotoEditorToolbar.js +15 -0
  124. package/dist/cjs/photo/PhotoEditorToolbar.js.map +1 -0
  125. package/dist/cjs/photo/photoEditorActions.js +80 -0
  126. package/dist/cjs/photo/photoEditorActions.js.map +1 -0
  127. package/dist/cjs/photo/photoEditorTypes.js +40 -0
  128. package/dist/cjs/photo/photoEditorTypes.js.map +1 -0
  129. package/dist/cjs/photo/photoFilters.js +880 -0
  130. package/dist/cjs/photo/photoFilters.js.map +1 -0
  131. package/dist/cjs/photo/photoOverlays.js +651 -0
  132. package/dist/cjs/photo/photoOverlays.js.map +1 -0
  133. package/dist/cjs/photo/photoSelection.js +547 -0
  134. package/dist/cjs/photo/photoSelection.js.map +1 -0
  135. package/dist/cjs/photo/usePhotoEditor.js +640 -0
  136. package/dist/cjs/photo/usePhotoEditor.js.map +1 -0
  137. package/dist/cjs/pixel/HSVPicker.js +173 -0
  138. package/dist/cjs/pixel/HSVPicker.js.map +1 -0
  139. package/dist/cjs/pixel/PixelEditor.js +28 -0
  140. package/dist/cjs/pixel/PixelEditor.js.map +1 -0
  141. package/dist/cjs/pixel/PixelEditor.module.css.js +6 -0
  142. package/dist/cjs/pixel/PixelEditor.module.css.js.map +1 -0
  143. package/dist/cjs/pixel/PixelEditorCanvas.js +15 -0
  144. package/dist/cjs/pixel/PixelEditorCanvas.js.map +1 -0
  145. package/dist/cjs/pixel/PixelEditorMenuBar.js +11 -0
  146. package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -0
  147. package/dist/cjs/pixel/PixelEditorRightPanel.js +15 -0
  148. package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -0
  149. package/dist/cjs/pixel/PixelEditorStatusBar.js +15 -0
  150. package/dist/cjs/pixel/PixelEditorStatusBar.js.map +1 -0
  151. package/dist/cjs/pixel/PixelEditorTimeline.js +11 -0
  152. package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -0
  153. package/dist/cjs/pixel/PixelEditorToolbar.js +16 -0
  154. package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -0
  155. package/dist/cjs/pixel/asepriteFormat.js +512 -0
  156. package/dist/cjs/pixel/asepriteFormat.js.map +1 -0
  157. package/dist/cjs/pixel/pixelEditorExports.js +471 -0
  158. package/dist/cjs/pixel/pixelEditorExports.js.map +1 -0
  159. package/dist/cjs/pixel/pixelEditorTypes.js +102 -0
  160. package/dist/cjs/pixel/pixelEditorTypes.js.map +1 -0
  161. package/dist/cjs/pixel/pixelEditorUtils.js +664 -0
  162. package/dist/cjs/pixel/pixelEditorUtils.js.map +1 -0
  163. package/dist/cjs/pixel/usePixelEditor.js +1112 -0
  164. package/dist/cjs/pixel/usePixelEditor.js.map +1 -0
  165. package/dist/cjs/texture/Nice3DTexturePainter.js +236 -0
  166. package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -0
  167. package/dist/cjs/ui/NiceUIDesigner.js +191 -0
  168. package/dist/cjs/ui/NiceUIDesigner.js.map +1 -0
  169. package/dist/cjs/vector/VectorEditor.js +31 -0
  170. package/dist/cjs/vector/VectorEditor.js.map +1 -0
  171. package/dist/cjs/vector/VectorEditor.module.css.js +6 -0
  172. package/dist/cjs/vector/VectorEditor.module.css.js.map +1 -0
  173. package/dist/cjs/vector/VectorEditorMenuBar.js +16 -0
  174. package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -0
  175. package/dist/cjs/vector/VectorEditorRightPanel.js +126 -0
  176. package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -0
  177. package/dist/cjs/vector/VectorEditorShapeRenderer.js +55 -0
  178. package/dist/cjs/vector/VectorEditorShapeRenderer.js.map +1 -0
  179. package/dist/cjs/vector/VectorEditorStatusBar.js +14 -0
  180. package/dist/cjs/vector/VectorEditorStatusBar.js.map +1 -0
  181. package/dist/cjs/vector/useVectorEditor.js +613 -0
  182. package/dist/cjs/vector/useVectorEditor.js.map +1 -0
  183. package/dist/cjs/vector/vectorBooleanOps.js +511 -0
  184. package/dist/cjs/vector/vectorBooleanOps.js.map +1 -0
  185. package/dist/cjs/vector/vectorEditorExport.js +159 -0
  186. package/dist/cjs/vector/vectorEditorExport.js.map +1 -0
  187. package/dist/cjs/vector/vectorEditorImport.js +150 -0
  188. package/dist/cjs/vector/vectorEditorImport.js.map +1 -0
  189. package/dist/cjs/vector/vectorEditorTypes.js +72 -0
  190. package/dist/cjs/vector/vectorEditorTypes.js.map +1 -0
  191. package/dist/cjs/vector/vectorGradients.js +201 -0
  192. package/dist/cjs/vector/vectorGradients.js.map +1 -0
  193. package/dist/esm/animation/AnimatedPerson.js +151 -0
  194. package/dist/esm/animation/AnimatedPerson.js.map +1 -0
  195. package/dist/esm/animation/AnimationEditor.js +104 -0
  196. package/dist/esm/animation/AnimationEditor.js.map +1 -0
  197. package/dist/esm/animation/Audience.js +57 -0
  198. package/dist/esm/animation/Audience.js.map +1 -0
  199. package/dist/esm/animation/BodyRenderer.js +28 -0
  200. package/dist/esm/animation/BodyRenderer.js.map +1 -0
  201. package/dist/esm/animation/animationHelper.js +268 -0
  202. package/dist/esm/animation/animationHelper.js.map +1 -0
  203. package/dist/esm/animation/characterTypes.js +70 -0
  204. package/dist/esm/animation/characterTypes.js.map +1 -0
  205. package/dist/esm/animation/choreoDSL.js +182 -0
  206. package/dist/esm/animation/choreoDSL.js.map +1 -0
  207. package/dist/esm/animation/choreography.js +36 -0
  208. package/dist/esm/animation/choreography.js.map +1 -0
  209. package/dist/esm/animation/karaokeIntegration.js +91 -0
  210. package/dist/esm/animation/karaokeIntegration.js.map +1 -0
  211. package/dist/esm/animation/lottieExport.js +123 -0
  212. package/dist/esm/animation/lottieExport.js.map +1 -0
  213. package/dist/esm/animation/motionPath.js +185 -0
  214. package/dist/esm/animation/motionPath.js.map +1 -0
  215. package/dist/esm/animation/physics.js +192 -0
  216. package/dist/esm/animation/physics.js.map +1 -0
  217. package/dist/esm/animation/rig/RigPlayer.js +61 -0
  218. package/dist/esm/animation/rig/RigPlayer.js.map +1 -0
  219. package/dist/esm/animation/rig/RiggedBody.js +28 -0
  220. package/dist/esm/animation/rig/RiggedBody.js.map +1 -0
  221. package/dist/esm/animation/rig/choreoRigBridge.js +60 -0
  222. package/dist/esm/animation/rig/choreoRigBridge.js.map +1 -0
  223. package/dist/esm/animation/rig/ik.js +20 -0
  224. package/dist/esm/animation/rig/ik.js.map +1 -0
  225. package/dist/esm/animation/rig/poseOps.js +45 -0
  226. package/dist/esm/animation/rig/poseOps.js.map +1 -0
  227. package/dist/esm/animation/rig/presets.js +53 -0
  228. package/dist/esm/animation/rig/presets.js.map +1 -0
  229. package/dist/esm/animation/rig/rigMath.js +37 -0
  230. package/dist/esm/animation/rig/rigMath.js.map +1 -0
  231. package/dist/esm/animation/rig/rigTypes.js +40 -0
  232. package/dist/esm/animation/rig/rigTypes.js.map +1 -0
  233. package/dist/esm/animation/shapes/arms.js +13 -0
  234. package/dist/esm/animation/shapes/arms.js.map +1 -0
  235. package/dist/esm/animation/shapes/eyes.js +45 -0
  236. package/dist/esm/animation/shapes/eyes.js.map +1 -0
  237. package/dist/esm/animation/shapes/hair.js +46 -0
  238. package/dist/esm/animation/shapes/hair.js.map +1 -0
  239. package/dist/esm/animation/shapes/heads.js +52 -0
  240. package/dist/esm/animation/shapes/heads.js.map +1 -0
  241. package/dist/esm/animation/shapes/headwear.js +36 -0
  242. package/dist/esm/animation/shapes/headwear.js.map +1 -0
  243. package/dist/esm/animation/shapes/legs.js +13 -0
  244. package/dist/esm/animation/shapes/legs.js.map +1 -0
  245. package/dist/esm/animation/shapes/mouths.js +45 -0
  246. package/dist/esm/animation/shapes/mouths.js.map +1 -0
  247. package/dist/esm/animation/shapes/noses.js +23 -0
  248. package/dist/esm/animation/shapes/noses.js.map +1 -0
  249. package/dist/esm/animation/shapes/outfits.js +37 -0
  250. package/dist/esm/animation/shapes/outfits.js.map +1 -0
  251. package/dist/esm/animation/shapes/torsos.js +11 -0
  252. package/dist/esm/animation/shapes/torsos.js.map +1 -0
  253. package/dist/esm/animation/spineExport.js +128 -0
  254. package/dist/esm/animation/spineExport.js.map +1 -0
  255. package/dist/esm/core/LocalUI.js +50 -0
  256. package/dist/esm/core/LocalUI.js.map +1 -0
  257. package/dist/esm/core/collaboration.js +252 -0
  258. package/dist/esm/core/collaboration.js.map +1 -0
  259. package/dist/esm/core/colorBlindness.js +90 -0
  260. package/dist/esm/core/colorBlindness.js.map +1 -0
  261. package/dist/esm/core/dragDrop.js +165 -0
  262. package/dist/esm/core/dragDrop.js.map +1 -0
  263. package/dist/esm/core/fixes.js +179 -0
  264. package/dist/esm/core/fixes.js.map +1 -0
  265. package/dist/esm/core/gridGuides.js +232 -0
  266. package/dist/esm/core/gridGuides.js.map +1 -0
  267. package/dist/esm/core/historyVisual.js +121 -0
  268. package/dist/esm/core/historyVisual.js.map +1 -0
  269. package/dist/esm/core/i18n.js +13 -0
  270. package/dist/esm/core/i18n.js.map +1 -0
  271. package/dist/esm/core/integrations.js +254 -0
  272. package/dist/esm/core/integrations.js.map +1 -0
  273. package/dist/esm/core/minimap.js +139 -0
  274. package/dist/esm/core/minimap.js.map +1 -0
  275. package/dist/esm/core/plugins.js +124 -0
  276. package/dist/esm/core/plugins.js.map +1 -0
  277. package/dist/esm/core/rtl.js +95 -0
  278. package/dist/esm/core/rtl.js.map +1 -0
  279. package/dist/esm/core/shortcuts.js +200 -0
  280. package/dist/esm/core/shortcuts.js.map +1 -0
  281. package/dist/esm/core/theme.js +162 -0
  282. package/dist/esm/core/theme.js.map +1 -0
  283. package/dist/esm/font/NiceFontEditor.js +189 -0
  284. package/dist/esm/font/NiceFontEditor.js.map +1 -0
  285. package/dist/esm/game/GameAsset2dEditor.js +369 -0
  286. package/dist/esm/game/GameAsset2dEditor.js.map +1 -0
  287. package/dist/esm/game/GameAsset2dEditor.module.css.js +4 -0
  288. package/dist/esm/game/GameAsset2dEditor.module.css.js.map +1 -0
  289. package/dist/esm/game/gameAssetTypes.js +18 -0
  290. package/dist/esm/game/gameAssetTypes.js.map +1 -0
  291. package/dist/esm/game/gameAssetUtils.js +456 -0
  292. package/dist/esm/game/gameAssetUtils.js.map +1 -0
  293. package/dist/esm/game/useGameAssetEditor.js +759 -0
  294. package/dist/esm/game/useGameAssetEditor.js.map +1 -0
  295. package/dist/esm/icon/NiceIconEditor.js +246 -0
  296. package/dist/esm/icon/NiceIconEditor.js.map +1 -0
  297. package/dist/esm/index.js +59 -0
  298. package/dist/esm/index.js.map +1 -0
  299. package/dist/esm/nice2dev-ui/dist/index.js +31720 -0
  300. package/dist/esm/nice2dev-ui/dist/index.js.map +1 -0
  301. package/dist/esm/nice2dev-ui-graphics.css +1 -0
  302. package/dist/esm/photo/FilterThumb.js +27 -0
  303. package/dist/esm/photo/FilterThumb.js.map +1 -0
  304. package/dist/esm/photo/PhotoEditor.js +18 -0
  305. package/dist/esm/photo/PhotoEditor.js.map +1 -0
  306. package/dist/esm/photo/PhotoEditor.module.css.js +4 -0
  307. package/dist/esm/photo/PhotoEditor.module.css.js.map +1 -0
  308. package/dist/esm/photo/PhotoEditorCanvas.js +57 -0
  309. package/dist/esm/photo/PhotoEditorCanvas.js.map +1 -0
  310. package/dist/esm/photo/PhotoEditorLeftPanel.js +172 -0
  311. package/dist/esm/photo/PhotoEditorLeftPanel.js.map +1 -0
  312. package/dist/esm/photo/PhotoEditorToolbar.js +13 -0
  313. package/dist/esm/photo/PhotoEditorToolbar.js.map +1 -0
  314. package/dist/esm/photo/photoEditorActions.js +75 -0
  315. package/dist/esm/photo/photoEditorActions.js.map +1 -0
  316. package/dist/esm/photo/photoEditorTypes.js +36 -0
  317. package/dist/esm/photo/photoEditorTypes.js.map +1 -0
  318. package/dist/esm/photo/photoFilters.js +871 -0
  319. package/dist/esm/photo/photoFilters.js.map +1 -0
  320. package/dist/esm/photo/photoOverlays.js +636 -0
  321. package/dist/esm/photo/photoOverlays.js.map +1 -0
  322. package/dist/esm/photo/photoSelection.js +535 -0
  323. package/dist/esm/photo/photoSelection.js.map +1 -0
  324. package/dist/esm/photo/usePhotoEditor.js +638 -0
  325. package/dist/esm/photo/usePhotoEditor.js.map +1 -0
  326. package/dist/esm/pixel/HSVPicker.js +171 -0
  327. package/dist/esm/pixel/HSVPicker.js.map +1 -0
  328. package/dist/esm/pixel/PixelEditor.js +26 -0
  329. package/dist/esm/pixel/PixelEditor.js.map +1 -0
  330. package/dist/esm/pixel/PixelEditor.module.css.js +4 -0
  331. package/dist/esm/pixel/PixelEditor.module.css.js.map +1 -0
  332. package/dist/esm/pixel/PixelEditorCanvas.js +13 -0
  333. package/dist/esm/pixel/PixelEditorCanvas.js.map +1 -0
  334. package/dist/esm/pixel/PixelEditorMenuBar.js +9 -0
  335. package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -0
  336. package/dist/esm/pixel/PixelEditorRightPanel.js +13 -0
  337. package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -0
  338. package/dist/esm/pixel/PixelEditorStatusBar.js +13 -0
  339. package/dist/esm/pixel/PixelEditorStatusBar.js.map +1 -0
  340. package/dist/esm/pixel/PixelEditorTimeline.js +9 -0
  341. package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -0
  342. package/dist/esm/pixel/PixelEditorToolbar.js +14 -0
  343. package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -0
  344. package/dist/esm/pixel/asepriteFormat.js +505 -0
  345. package/dist/esm/pixel/asepriteFormat.js.map +1 -0
  346. package/dist/esm/pixel/pixelEditorExports.js +461 -0
  347. package/dist/esm/pixel/pixelEditorExports.js.map +1 -0
  348. package/dist/esm/pixel/pixelEditorTypes.js +90 -0
  349. package/dist/esm/pixel/pixelEditorTypes.js.map +1 -0
  350. package/dist/esm/pixel/pixelEditorUtils.js +631 -0
  351. package/dist/esm/pixel/pixelEditorUtils.js.map +1 -0
  352. package/dist/esm/pixel/usePixelEditor.js +1110 -0
  353. package/dist/esm/pixel/usePixelEditor.js.map +1 -0
  354. package/dist/esm/texture/Nice3DTexturePainter.js +233 -0
  355. package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -0
  356. package/dist/esm/ui/NiceUIDesigner.js +187 -0
  357. package/dist/esm/ui/NiceUIDesigner.js.map +1 -0
  358. package/dist/esm/vector/VectorEditor.js +29 -0
  359. package/dist/esm/vector/VectorEditor.js.map +1 -0
  360. package/dist/esm/vector/VectorEditor.module.css.js +4 -0
  361. package/dist/esm/vector/VectorEditor.module.css.js.map +1 -0
  362. package/dist/esm/vector/VectorEditorMenuBar.js +14 -0
  363. package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -0
  364. package/dist/esm/vector/VectorEditorRightPanel.js +124 -0
  365. package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -0
  366. package/dist/esm/vector/VectorEditorShapeRenderer.js +53 -0
  367. package/dist/esm/vector/VectorEditorShapeRenderer.js.map +1 -0
  368. package/dist/esm/vector/VectorEditorStatusBar.js +12 -0
  369. package/dist/esm/vector/VectorEditorStatusBar.js.map +1 -0
  370. package/dist/esm/vector/useVectorEditor.js +611 -0
  371. package/dist/esm/vector/useVectorEditor.js.map +1 -0
  372. package/dist/esm/vector/vectorBooleanOps.js +507 -0
  373. package/dist/esm/vector/vectorBooleanOps.js.map +1 -0
  374. package/dist/esm/vector/vectorEditorExport.js +152 -0
  375. package/dist/esm/vector/vectorEditorExport.js.map +1 -0
  376. package/dist/esm/vector/vectorEditorImport.js +148 -0
  377. package/dist/esm/vector/vectorEditorImport.js.map +1 -0
  378. package/dist/esm/vector/vectorEditorTypes.js +63 -0
  379. package/dist/esm/vector/vectorEditorTypes.js.map +1 -0
  380. package/dist/esm/vector/vectorGradients.js +193 -0
  381. package/dist/esm/vector/vectorGradients.js.map +1 -0
  382. package/dist/types/__benchmarks__/bench.d.ts +13 -0
  383. package/dist/types/__tests__/setup.d.ts +4 -0
  384. package/dist/types/animation/AnimatedPerson.d.ts +14 -0
  385. package/dist/types/animation/AnimationEditor.d.ts +20 -0
  386. package/dist/types/animation/Audience.d.ts +11 -0
  387. package/dist/types/animation/BodyRenderer.d.ts +12 -0
  388. package/dist/types/animation/animationHelper.d.ts +28 -0
  389. package/dist/types/animation/characterTypes.d.ts +37 -0
  390. package/dist/types/animation/choreoDSL.d.ts +88 -0
  391. package/dist/types/animation/choreography.d.ts +8 -0
  392. package/dist/types/animation/karaokeIntegration.d.ts +31 -0
  393. package/dist/types/animation/lottieExport.d.ts +77 -0
  394. package/dist/types/animation/motionPath.d.ts +60 -0
  395. package/dist/types/animation/physics.d.ts +73 -0
  396. package/dist/types/animation/rig/RigPlayer.d.ts +32 -0
  397. package/dist/types/animation/rig/RiggedBody.d.ts +19 -0
  398. package/dist/types/animation/rig/choreoRigBridge.d.ts +9 -0
  399. package/dist/types/animation/rig/ik.d.ts +8 -0
  400. package/dist/types/animation/rig/poseOps.d.ts +14 -0
  401. package/dist/types/animation/rig/presets.d.ts +13 -0
  402. package/dist/types/animation/rig/rigMath.d.ts +7 -0
  403. package/dist/types/animation/rig/rigTypes.d.ts +38 -0
  404. package/dist/types/animation/shapes/arms.d.ts +10 -0
  405. package/dist/types/animation/shapes/eyes.d.ts +17 -0
  406. package/dist/types/animation/shapes/hair.d.ts +17 -0
  407. package/dist/types/animation/shapes/heads.d.ts +18 -0
  408. package/dist/types/animation/shapes/headwear.d.ts +16 -0
  409. package/dist/types/animation/shapes/legs.d.ts +10 -0
  410. package/dist/types/animation/shapes/mouths.d.ts +17 -0
  411. package/dist/types/animation/shapes/noses.d.ts +17 -0
  412. package/dist/types/animation/shapes/outfits.d.ts +14 -0
  413. package/dist/types/animation/shapes/torsos.d.ts +9 -0
  414. package/dist/types/animation/spineExport.d.ts +66 -0
  415. package/dist/types/core/LocalUI.d.ts +21 -0
  416. package/dist/types/core/collaboration.d.ts +164 -0
  417. package/dist/types/core/colorBlindness.d.ts +24 -0
  418. package/dist/types/core/dragDrop.d.ts +46 -0
  419. package/dist/types/core/fixes.d.ts +80 -0
  420. package/dist/types/core/gridGuides.d.ts +70 -0
  421. package/dist/types/core/historyVisual.d.ts +915 -0
  422. package/dist/types/core/i18n.d.ts +27 -0
  423. package/dist/types/core/integrations.d.ts +103 -0
  424. package/dist/types/core/minimap.d.ts +49 -0
  425. package/dist/types/core/plugins.d.ts +111 -0
  426. package/dist/types/core/rtl.d.ts +32 -0
  427. package/dist/types/core/shortcuts.d.ts +150 -0
  428. package/dist/types/core/theme.d.ts +78 -0
  429. package/dist/types/core/useGamepad.d.ts +64 -0
  430. package/dist/types/core/usePointerPressure.d.ts +88 -0
  431. package/dist/types/font/NiceFontEditor.d.ts +62 -0
  432. package/dist/types/game/AnimationPreviewPlayer.d.ts +29 -0
  433. package/dist/types/game/CollisionEditor.d.ts +101 -0
  434. package/dist/types/game/GameAsset2dEditor.d.ts +17 -0
  435. package/dist/types/game/GameAssetExportPanel.d.ts +20 -0
  436. package/dist/types/game/IsometricEditor.d.ts +22 -0
  437. package/dist/types/game/IsometricTilePanel.d.ts +18 -0
  438. package/dist/types/game/gameAssetExport.d.ts +160 -0
  439. package/dist/types/game/gameAssetTypes.d.ts +238 -0
  440. package/dist/types/game/gameAssetUtils.d.ts +23 -0
  441. package/dist/types/game/index.d.ts +8 -0
  442. package/dist/types/game/isometricTiles.d.ts +250 -0
  443. package/dist/types/game/useAnimationPreview.d.ts +63 -0
  444. package/dist/types/game/useCollisionEditor.d.ts +96 -0
  445. package/dist/types/game/useGameAssetEditor.d.ts +79 -0
  446. package/dist/types/game/useGameAssetExport.d.ts +82 -0
  447. package/dist/types/icon/NiceIconEditor.d.ts +79 -0
  448. package/dist/types/index.d.ts +85 -0
  449. package/dist/types/photo/BatchProcessingPanel.d.ts +13 -0
  450. package/dist/types/photo/FaceDetectionPanel.d.ts +18 -0
  451. package/dist/types/photo/FilterThumb.d.ts +14 -0
  452. package/dist/types/photo/PerspectiveCorrectionPanel.d.ts +17 -0
  453. package/dist/types/photo/PhotoEditor.d.ts +2 -0
  454. package/dist/types/photo/PhotoEditorCanvas.d.ts +14 -0
  455. package/dist/types/photo/PhotoEditorLeftPanel.d.ts +13 -0
  456. package/dist/types/photo/PhotoEditorToolbar.d.ts +13 -0
  457. package/dist/types/photo/RawFilePanel.d.ts +14 -0
  458. package/dist/types/photo/StyleTransferPanel.d.ts +15 -0
  459. package/dist/types/photo/aiStyleTransfer.d.ts +58 -0
  460. package/dist/types/photo/batchProcessing.d.ts +95 -0
  461. package/dist/types/photo/faceDetection.d.ts +103 -0
  462. package/dist/types/photo/index.d.ts +17 -0
  463. package/dist/types/photo/perspectiveCorrection.d.ts +134 -0
  464. package/dist/types/photo/photoEditorActions.d.ts +40 -0
  465. package/dist/types/photo/photoEditorTypes.d.ts +34 -0
  466. package/dist/types/photo/photoFilters.d.ts +55 -0
  467. package/dist/types/photo/photoOverlays.d.ts +126 -0
  468. package/dist/types/photo/photoSelection.d.ts +56 -0
  469. package/dist/types/photo/rawFileSupport.d.ts +124 -0
  470. package/dist/types/photo/usePhotoEditor.d.ts +123 -0
  471. package/dist/types/pixel/HSVPicker.d.ts +11 -0
  472. package/dist/types/pixel/PaletteExtractorPanel.d.ts +16 -0
  473. package/dist/types/pixel/PixelEditor.d.ts +17 -0
  474. package/dist/types/pixel/PixelEditorCanvas.d.ts +10 -0
  475. package/dist/types/pixel/PixelEditorMenuBar.d.ts +11 -0
  476. package/dist/types/pixel/PixelEditorRightPanel.d.ts +11 -0
  477. package/dist/types/pixel/PixelEditorStatusBar.d.ts +11 -0
  478. package/dist/types/pixel/PixelEditorTimeline.d.ts +11 -0
  479. package/dist/types/pixel/PixelEditorToolbar.d.ts +11 -0
  480. package/dist/types/pixel/TileMapPanel.d.ts +14 -0
  481. package/dist/types/pixel/asepriteFormat.d.ts +62 -0
  482. package/dist/types/pixel/paletteExtractor.d.ts +73 -0
  483. package/dist/types/pixel/pixelEditorExports.d.ts +31 -0
  484. package/dist/types/pixel/pixelEditorTypes.d.ts +51 -0
  485. package/dist/types/pixel/pixelEditorUtils.d.ts +136 -0
  486. package/dist/types/pixel/tileMapMode.d.ts +122 -0
  487. package/dist/types/pixel/usePixelEditor.d.ts +114 -0
  488. package/dist/types/texture/Nice3DTexturePainter.d.ts +55 -0
  489. package/dist/types/ui/NiceUIDesigner.d.ts +43 -0
  490. package/dist/types/vector/PathSimplificationPanel.d.ts +15 -0
  491. package/dist/types/vector/PdfExportPanel.d.ts +20 -0
  492. package/dist/types/vector/TextOnPathPanel.d.ts +26 -0
  493. package/dist/types/vector/VectorEditor.d.ts +32 -0
  494. package/dist/types/vector/VectorEditorMenuBar.d.ts +8 -0
  495. package/dist/types/vector/VectorEditorRightPanel.d.ts +7 -0
  496. package/dist/types/vector/VectorEditorShapeRenderer.d.ts +9 -0
  497. package/dist/types/vector/VectorEditorStatusBar.d.ts +9 -0
  498. package/dist/types/vector/VectorFilterPanel.d.ts +19 -0
  499. package/dist/types/vector/VectorPatternPanel.d.ts +21 -0
  500. package/dist/types/vector/pathSimplification.d.ts +135 -0
  501. package/dist/types/vector/pdfExport.d.ts +65 -0
  502. package/dist/types/vector/textOnPath.d.ts +145 -0
  503. package/dist/types/vector/useVectorEditor.d.ts +90 -0
  504. package/dist/types/vector/vectorBooleanOps.d.ts +22 -0
  505. package/dist/types/vector/vectorEditorExport.d.ts +8 -0
  506. package/dist/types/vector/vectorEditorImport.d.ts +7 -0
  507. package/dist/types/vector/vectorEditorTypes.d.ts +47 -0
  508. package/dist/types/vector/vectorGradients.d.ts +64 -0
  509. package/dist/types/vector/vectorPatternFills.d.ts +101 -0
  510. package/dist/types/vector/vectorSvgFilters.d.ts +134 -0
  511. package/package.json +93 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,84 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@nice2dev/ui-graphics` will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ---
9
+
10
+ ## [1.1.0] — 2026-06-15
11
+
12
+ ### 🚀 Major Feature Release
13
+
14
+ Massive expansion: 4 new editors, physics engine, integrations, collaboration, and significant UX improvements.
15
+
16
+ ### New Editors
17
+
18
+ - **NiceIconEditor** — SVG icon design with grid alignment, variant support (outline/filled/duotone), React component export
19
+ - **NiceUIDesigner** — drag & drop UI builder with 12 component types and React/TSX code generation
20
+ - **Nice3DTexturePainter** — UV texture painting with layer support, brush tools, blend modes
21
+ - **NiceFontEditor** — glyph editor with Unicode mapping, SVG font export, text preview
22
+
23
+ ### Animation
24
+
25
+ - **Physics simulation** — Verlet integration engine with ragdoll (14-bone) and cloth (spring-mass grid)
26
+ - **Motion path editor** — cubic Bézier paths with arc-length parameterization, preset paths (linear, circular, figure-8)
27
+ - **Lottie/Bodymovin export** — export animations to Lottie JSON format
28
+ - **Spine export** — export to Spine 4.1 JSON format for game engine integration
29
+
30
+ ### Shared Editor Features
31
+
32
+ - **Plugin system** — extensible architecture with tool/filter/exporter/panel/menu registration and React context
33
+ - **Visual undo/redo** — timeline-based history with thumbnail previews and jump-to-any-point
34
+ - **Customizable shortcuts** — remappable keyboard shortcuts with localStorage persistence
35
+ - **External drag & drop** — drop files from desktop with MIME validation and image conversion
36
+ - **RTL UI support** — full right-to-left layout with CSS logical properties and auto-detection
37
+
38
+ ### UX Improvements
39
+
40
+ - **Zoom navigator (minimap)** — draggable viewport overview with position presets
41
+ - **Grid, guides & rulers** — configurable grid, horizontal/vertical rulers, draggable guides with snap
42
+ - **Color blindness simulation** — 9 vision type simulations (Machado et al.), canvas filter + SVG filter generation
43
+ - **Dark/light theme** — 20+ color tokens, auto system theme detection, localStorage persistence
44
+
45
+ ### Integrations
46
+
47
+ - **Unsplash/Pexels** — stock image search providers
48
+ - **Adobe Creative Cloud** — OAuth connector with library import
49
+ - **Figma** — file import with SVG extraction and plugin code export
50
+ - **Template library** — searchable template system with categories
51
+ - **AI image generation** — OpenAI DALL-E 3, Stability AI, and custom provider support
52
+
53
+ ### Collaboration
54
+
55
+ - **Real-time editing** — WebSocket transport with cursor/selection sync and operation broadcasting
56
+ - **Comments & annotations** — threaded comments anchored to canvas coordinates
57
+ - **Version history** — snapshot system with named versions and thumbnail previews
58
+
59
+ ### Bug Fixes
60
+
61
+ - **Retina canvas** — proper devicePixelRatio scaling for sharp rendering on HiDPI displays
62
+ - **Vector performance** — SpatialHashGrid for O(1) spatial queries with >100 shapes
63
+ - **Animation memory leak** — AnimationCleanup utility for tracking and disposing RAF/timer resources
64
+
65
+ ---
66
+
67
+ ## [1.0.0] — 2026-03-17
68
+
69
+ ### 🎨 Initial Release
70
+
71
+ First stable release of `@nice2dev/ui-graphics` — pixel, vector, photo & animation editors for React.
72
+
73
+ ### Features
74
+
75
+ - **NicePixelEditor** — full pixel art editor with layers, palette, tools, animation timeline
76
+ - **NiceVectorEditor** — SVG-based vector drawing with shapes, paths, groups, boolean ops
77
+ - **NicePhotoEditor** — image editing with filters, adjustments, crop, rotate, resize
78
+ - **NiceAnimationEditor** — frame-by-frame and tweened animation with onion skinning
79
+ - **NiceAnimatedPerson** — rigged character with poses, limb manipulation, expressions
80
+ - **Export** — PNG, JPEG, SVG, GIF, sprite sheet export
81
+ - **Undo/Redo** — full history stack for all editors
82
+ - **Clipboard** — copy/paste shapes, selections, layers across editors
83
+ - **Grid & Snapping** — pixel grid, smart guides, snap-to-grid
84
+ - **Color** — RGBA, HSLA, HEX picker with palette management
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 NiceToDev
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,339 @@
1
+ # @nice2dev/ui-graphics
2
+
3
+ > Professional-grade Pixel, Vector, Photo, Animation and Game Asset editors for React — fully tree-shakeable, zero external UI dependencies.
4
+
5
+ [![npm](https://img.shields.io/npm/v/@nice2dev/ui-graphics)](https://www.npmjs.com/package/@nice2dev/ui-graphics)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
7
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.x-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
8
+
9
+ ---
10
+
11
+ ## Features
12
+
13
+ ### Editors
14
+
15
+ - **PixelEditor** — Aseprite-inspired pixel art with layers, frames, dithering, GIF / sprite-sheet export, .aseprite import, tile map mode
16
+ - **VectorEditor** — SVG shapes, pen tool, boolean operations, gradients, pattern fills, text-on-path, PDF export
17
+ - **PhotoEditor** — 50+ filters, RAW support, smart selection (magic wand, lasso, magnetic), healing brush, content-aware fill, face detection, batch processing, AI style-transfer
18
+ - **AnimationEditor** — 2D character builder with skeleton rigging, IK/FK, ragdoll/cloth physics, motion paths, Lottie & Spine export
19
+ - **GameAsset2dEditor** — tile maps, sprite sheets, animation state machines, collision shapes, isometric 2.5D, multi-engine export (Tiled, Godot, Unity, Phaser, Construct)
20
+ - **NiceIconEditor** — SVG icon creation with variant system
21
+ - **NiceUIDesigner** — drag & drop UI builder generating React code
22
+ - **Nice3DTexturePainter** — paint textures on 3D models in-browser
23
+ - **NiceFontEditor** — glyph editor with SVG font export
24
+
25
+ ### Core Systems
26
+
27
+ - **Plugin system** — register custom tools, filters, exporters, panels
28
+ - **Visual undo/redo** — thumbnail timeline history
29
+ - **Keyboard shortcuts** — customizable, remappable, exportable
30
+ - **Drag & drop** — external file/image drops into editors
31
+ - **RTL support** — right-to-left UI with logical style swapping
32
+ - **Minimap** — zoom navigator for large canvases
33
+ - **Grid/Guides/Rulers** — snap-to-grid, snap-to-guide, snap-to-pixel
34
+ - **Color blindness simulation** — 8 modes (protanopia, deuteranopia, etc.)
35
+ - **Dark/light theme** — CSS custom properties, auto system detection
36
+ - **i18n** — `NiceI18nProvider` — zero-dependency translation context
37
+
38
+ ### Integrations
39
+
40
+ - Unsplash / Pexels stock image picker
41
+ - Adobe Creative Cloud connector
42
+ - Figma import/export
43
+ - Template library
44
+ - AI image generation (OpenAI, Stability)
45
+
46
+ ### Collaboration
47
+
48
+ - Real-time collaborative editing (WebSocket transport)
49
+ - Comments/annotations
50
+ - Version history with preview
51
+
52
+ ---
53
+
54
+ ## Installation
55
+
56
+ ```bash
57
+ npm install @nice2dev/ui-graphics framer-motion
58
+ # peer deps: react >=17, react-dom >=17, framer-motion >=10
59
+ ```
60
+
61
+ ## Quick Start
62
+
63
+ ```tsx
64
+ import { PixelEditor } from '@nice2dev/ui-graphics';
65
+ import '@nice2dev/ui-graphics/style.css';
66
+
67
+ function App() {
68
+ return <PixelEditor initialWidth={64} initialHeight={64} />;
69
+ }
70
+ ```
71
+
72
+ ---
73
+
74
+ ## Editors
75
+
76
+ ### PixelEditor
77
+
78
+ ```tsx
79
+ import { PixelEditor } from '@nice2dev/ui-graphics';
80
+
81
+ <PixelEditor
82
+ initialWidth={64}
83
+ initialHeight={64}
84
+ onSaveToLibrary={(dataUrl, name, mimeType) => upload(dataUrl)}
85
+ />
86
+ ```
87
+
88
+ | Prop | Type | Default | Description |
89
+ |------|------|---------|-------------|
90
+ | `initialWidth` | `number` | `64` | Canvas width in pixels |
91
+ | `initialHeight` | `number` | `64` | Canvas height in pixels |
92
+ | `className` | `string` | — | CSS class on root |
93
+ | `onSaveToLibrary` | `(dataUrl, name, mimeType) => void` | — | Callback on save |
94
+
95
+ ### VectorEditor
96
+
97
+ ```tsx
98
+ import { VectorEditor } from '@nice2dev/ui-graphics';
99
+
100
+ <VectorEditor />
101
+ ```
102
+
103
+ | Prop | Type | Default | Description |
104
+ |------|------|---------|-------------|
105
+ | `className` | `string` | — | CSS class on root |
106
+
107
+ ### PhotoEditor
108
+
109
+ ```tsx
110
+ import { PhotoEditor } from '@nice2dev/ui-graphics';
111
+
112
+ <PhotoEditor />
113
+ ```
114
+
115
+ ### AnimationEditor
116
+
117
+ ```tsx
118
+ import { AnimationEditor } from '@nice2dev/ui-graphics';
119
+
120
+ <AnimationEditor
121
+ onChange={(cfg) => saveCharacter(cfg)}
122
+ onNotify={(msg, type) => toast(msg, { type })}
123
+ />
124
+ ```
125
+
126
+ | Prop | Type | Default | Description |
127
+ |------|------|---------|-------------|
128
+ | `initialConfig` | `CharacterConfig` | `DEFAULT_CHARACTER` | Starting character config |
129
+ | `onChange` | `(cfg: CharacterConfig) => void` | — | Called on every change |
130
+ | `storageKey` | `string \| false` | `"nice2dev.animation-editor.character"` | localStorage key; `false` to disable |
131
+ | `onNotify` | `(msg, type?) => void` | — | Notification callback |
132
+ | `showJsonPanel` | `boolean` | `true` | Show JSON editor panel |
133
+ | `showPreview` | `boolean` | `true` | Show animated preview |
134
+ | `className` | `string` | — | CSS class on root |
135
+
136
+ ### GameAsset2dEditor
137
+
138
+ ```tsx
139
+ import { GameAsset2dEditor } from '@nice2dev/ui-graphics';
140
+
141
+ <GameAsset2dEditor />
142
+ ```
143
+
144
+ ---
145
+
146
+ ## Core APIs
147
+
148
+ ### i18n — Translation Provider
149
+
150
+ ```tsx
151
+ import { NiceI18nProvider, AnimationEditor } from '@nice2dev/ui-graphics';
152
+
153
+ <NiceI18nProvider t={(key, fallback) => myI18n(key) ?? fallback}>
154
+ <AnimationEditor />
155
+ </NiceI18nProvider>
156
+ ```
157
+
158
+ ### Plugin System
159
+
160
+ ```tsx
161
+ import { PluginRegistry, NicePluginProvider, type EditorPlugin } from '@nice2dev/ui-graphics';
162
+
163
+ const myPlugin: EditorPlugin = {
164
+ id: 'my-plugin',
165
+ name: 'My Plugin',
166
+ version: '1.0.0',
167
+ editors: ['pixel'],
168
+ tools: [{ id: 'custom-brush', label: 'Custom Brush' }],
169
+ filters: [{ id: 'sepia', label: 'Sepia', apply: (img) => /* ... */ img }],
170
+ };
171
+
172
+ // Programmatic registration
173
+ PluginRegistry.register(myPlugin);
174
+
175
+ // Or via React context
176
+ <NicePluginProvider plugins={[myPlugin]}>
177
+ <PixelEditor />
178
+ </NicePluginProvider>
179
+ ```
180
+
181
+ ### Theme (Dark / Light)
182
+
183
+ ```tsx
184
+ import { NiceEditorThemeProvider, useEditorTheme } from '@nice2dev/ui-graphics';
185
+
186
+ <NiceEditorThemeProvider initialMode="auto">
187
+ <YourApp />
188
+ </NiceEditorThemeProvider>
189
+
190
+ // Inside components:
191
+ const { theme, mode, setMode, toggleMode } = useEditorTheme();
192
+ ```
193
+
194
+ ### Keyboard Shortcuts
195
+
196
+ ```tsx
197
+ import { ShortcutRegistry, useShortcuts, DEFAULT_SHORTCUTS } from '@nice2dev/ui-graphics';
198
+
199
+ // Register a custom shortcut
200
+ ShortcutRegistry.register({
201
+ id: 'custom.action',
202
+ label: 'My Action',
203
+ category: 'Custom',
204
+ defaultKey: 'Ctrl+Shift+M',
205
+ action: () => console.log('fired!'),
206
+ });
207
+
208
+ // Remap an existing shortcut
209
+ ShortcutRegistry.remap('general.undo', 'Ctrl+Shift+Z');
210
+
211
+ // In components — activates key listener
212
+ const shortcuts = useShortcuts();
213
+ ```
214
+
215
+ ### Color Blindness Simulation
216
+
217
+ ```tsx
218
+ import { simulateColor, simulateColorBlindness, COLOR_BLINDNESS_TYPES } from '@nice2dev/ui-graphics';
219
+
220
+ // Simulate a single color
221
+ const [r, g, b] = simulateColor(255, 0, 0, 'deuteranopia');
222
+
223
+ // Simulate on ImageData (in-place)
224
+ simulateColorBlindness(imageData, 'protanopia');
225
+ ```
226
+
227
+ ### Grid, Guides & Snapping
228
+
229
+ ```tsx
230
+ import { snapToGrid, snapToGuides, snapPoint, createGuide } from '@nice2dev/ui-graphics';
231
+
232
+ const snapped = snapToGrid(17, 23, 16); // { x: 16, y: 16, snappedX: true, snappedY: true }
233
+ const guide = createGuide('vertical', 100);
234
+ ```
235
+
236
+ ### RTL Support
237
+
238
+ ```tsx
239
+ import { NiceRTLProvider, useIsRTL } from '@nice2dev/ui-graphics';
240
+
241
+ <NiceRTLProvider direction="rtl">
242
+ <PixelEditor />
243
+ </NiceRTLProvider>
244
+ ```
245
+
246
+ ### Animation Utilities
247
+
248
+ ```tsx
249
+ import {
250
+ solveTwoBoneIK,
251
+ blendPose, tweenPose, ease,
252
+ createLinearPath, evaluatePath,
253
+ exportToLottie, exportToSpine,
254
+ } from '@nice2dev/ui-graphics';
255
+
256
+ // IK solving
257
+ const { upper, fore } = solveTwoBoneIK(0, 0, 100, 80, targetX, targetY);
258
+
259
+ // Pose blending
260
+ const midPose = blendPose(poseA, poseB, 0.5);
261
+
262
+ // Lottie export
263
+ const lottieJson = exportToLottie(characterConfig, choreography);
264
+ ```
265
+
266
+ ### Performance Fixes
267
+
268
+ ```tsx
269
+ import { setupRetinaCanvas, SpatialHashGrid, AnimationCleanup } from '@nice2dev/ui-graphics';
270
+
271
+ // Retina-ready canvas
272
+ const ctx = setupRetinaCanvas(canvas, { width: 800, height: 600 });
273
+
274
+ // Spatial indexing for large shape sets
275
+ const grid = new SpatialHashGrid<Shape>(200);
276
+ grid.insert(shape, bounds);
277
+ const visible = grid.query(viewport);
278
+
279
+ // Memory-safe animation lifecycle
280
+ const cleanup = new AnimationCleanup();
281
+ cleanup.requestAnimationFrame(render);
282
+ cleanup.setTimeout(onComplete, 1000);
283
+ // On unmount:
284
+ cleanup.dispose();
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Development
290
+
291
+ ```bash
292
+ # Build
293
+ npm run build
294
+
295
+ # Dev (watch mode)
296
+ npm run dev
297
+
298
+ # Demo app
299
+ npm run demo
300
+
301
+ # Storybook
302
+ npm run storybook
303
+
304
+ # Tests
305
+ npm run test
306
+ npm run test:watch
307
+ npm run test:coverage
308
+
309
+ # Performance benchmarks
310
+ npm run bench
311
+
312
+ # Bundle analysis
313
+ npm run analyze
314
+ ```
315
+
316
+ ## Architecture
317
+
318
+ ```
319
+ src/
320
+ index.ts # public API barrel export
321
+ pixel/ # PixelEditor + utils
322
+ vector/ # VectorEditor + boolean ops, gradients
323
+ photo/ # PhotoEditor + filters, selection
324
+ animation/ # AnimationEditor + rig, physics, motion paths
325
+ rig/ # Skeleton rigging, IK, FK, pose blending
326
+ shapes/ # SVG body part renderers
327
+ game/ # GameAsset2dEditor
328
+ icon/ # NiceIconEditor
329
+ ui/ # NiceUIDesigner
330
+ texture/ # Nice3DTexturePainter
331
+ font/ # NiceFontEditor
332
+ core/ # Shared systems (plugins, shortcuts, theme, i18n, etc.)
333
+ ```
334
+
335
+ Every editor and utility is independently tree-shakeable — import only what you need.
336
+
337
+ ## License
338
+
339
+ MIT © NiceToDev
@@ -0,0 +1,153 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var framerMotion = require('framer-motion');
6
+ var animationHelper = require('./animationHelper.js');
7
+ var characterTypes = require('./characterTypes.js');
8
+
9
+ const AnimatedPerson = ({ id, name, size, score = 10, startPose = "idle", onReady, character, }) => {
10
+ var _a, _b, _c, _d, _e;
11
+ const fx = animationHelper.usePersonControls();
12
+ const cfg = React.useMemo(() => ({ ...characterTypes.DEFAULT_CHARACTER, ...(character !== null && character !== void 0 ? character : {}) }), [character]);
13
+ React.useEffect(() => {
14
+ onReady === null || onReady === void 0 ? void 0 : onReady(fx);
15
+ void animationHelper.playPose(fx, startPose, {});
16
+ }, [fx, onReady, startPose]);
17
+ const W = (_c = (_b = (_a = cfg.size) !== null && _a !== void 0 ? _a : size) !== null && _b !== void 0 ? _b : characterTypes.DEFAULT_CHARACTER.size) !== null && _c !== void 0 ? _c : 180;
18
+ const skin = characterTypes.pick(cfg.face.colors, 0, "var(--anim-skin, #FFD2B3)");
19
+ return (jsxRuntime.jsx(framerMotion.motion.div, { id: id, style: { width: W, height: W * 1.35, overflow: "visible" }, animate: fx.root, children: jsxRuntime.jsxs("svg", { viewBox: "0 0 180 240", width: "100%", height: "100%", role: "img", "aria-label": (_e = (_d = cfg.name) !== null && _d !== void 0 ? _d : name) !== null && _e !== void 0 ? _e : "Juror", children: [jsxRuntime.jsxs(framerMotion.motion.g, { animate: fx.body, children: [jsxRuntime.jsx("rect", { x: "68", y: "158", width: "14", height: "46", rx: "6", fill: characterTypes.pick(cfg.outfit.colors, 1, "var(--anim-outfit-leg, #334155)") }), jsxRuntime.jsx("ellipse", { cx: "75", cy: "204", rx: "10", ry: "5", fill: characterTypes.pick(cfg.outfit.colors, 1, "var(--anim-outfit-leg-shadow, #1E293B)") }), jsxRuntime.jsx("rect", { x: "98", y: "158", width: "14", height: "46", rx: "6", fill: characterTypes.pick(cfg.outfit.colors, 1, "var(--anim-outfit-leg, #334155)") }), jsxRuntime.jsx("ellipse", { cx: "105", cy: "204", rx: "10", ry: "5", fill: characterTypes.pick(cfg.outfit.colors, 1, "var(--anim-outfit-leg-shadow, #1E293B)") })] }), jsxRuntime.jsx(framerMotion.motion.g, { animate: fx.body, children: renderOutfit(cfg.outfit) }), jsxRuntime.jsx("rect", { x: "84", y: "82", width: "12", height: "12", rx: "4", fill: skin }), jsxRuntime.jsxs(framerMotion.motion.g, { animate: fx.leftArm, style: { transformOrigin: "64px 96px" }, children: [jsxRuntime.jsx("rect", { x: "36", y: "96", width: "16", height: "36", rx: "7", fill: skin }), jsxRuntime.jsx("circle", { cx: "44", cy: "136", r: "7", fill: skin })] }), jsxRuntime.jsxs(framerMotion.motion.g, { animate: fx.rightArm, style: { transformOrigin: "116px 96px" }, children: [jsxRuntime.jsx("rect", { x: "128", y: "96", width: "16", height: "36", rx: "7", fill: skin }), jsxRuntime.jsx("circle", { cx: "136", cy: "136", r: "7", fill: skin }), jsxRuntime.jsxs(framerMotion.motion.g, { animate: fx.card, children: [jsxRuntime.jsx("rect", { x: "126", y: "50", width: "42", height: "30", rx: "4", fill: "var(--surface-bg, #fff)", stroke: "var(--text-primary, #111)", strokeWidth: 1.2 }), jsxRuntime.jsx("text", { x: "147", y: "70", textAnchor: "middle", fontSize: "16", fontWeight: 700, fill: "var(--text-primary, #111)", children: String(score) })] }), renderProp(cfg.prop)] }), jsxRuntime.jsxs(framerMotion.motion.g, { animate: fx.head, children: [renderHairBack(cfg.hair), renderFace(cfg.face), jsxRuntime.jsx(framerMotion.motion.g, { animate: fx.eyes, children: renderEyes(cfg.eyes) }), renderNose(cfg.nose), jsxRuntime.jsx(framerMotion.motion.g, { animate: fx.mouth, children: renderMouth(cfg.mouth) }), renderHeadwear(cfg.headwear)] }), jsxRuntime.jsxs(framerMotion.motion.g, { animate: fx.curse, initial: { opacity: 0 }, children: [jsxRuntime.jsx("rect", { x: "62", y: "10", width: "56", height: "22", rx: "8", fill: "var(--text-primary, #111)" }), jsxRuntime.jsx("text", { x: "90", y: "26", textAnchor: "middle", fontSize: "12", fill: "var(--surface-bg, #fff)", children: "#!%&*" }), jsxRuntime.jsx("path", { d: "M82 32 l4 8 l4 -8", fill: "var(--text-primary, #111)" })] })] }) }));
20
+ };
21
+ /* ---------------- RENDERERS (redesigned proportions) ---------------- */
22
+ function renderOutfit(cfg) {
23
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-shirt, #3B82F6)");
24
+ const accent = characterTypes.pick(cfg.colors, 1, base);
25
+ const stroke = characterTypes.pick(cfg.colors, 2, "var(--anim-stroke, #111)");
26
+ switch (cfg.variant) {
27
+ case "hoodie":
28
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "52", y: "92", width: "76", height: "66", rx: "16", fill: base, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("path", { d: "M52 102 Q90 72 128 102", fill: accent, opacity: 0.2 }), jsxRuntime.jsx("ellipse", { cx: "90", cy: "94", rx: "18", ry: "6", fill: accent, opacity: 0.3 })] }));
29
+ case "suit":
30
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "52", y: "92", width: "76", height: "66", rx: "12", fill: base, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("path", { d: "M90 92 L72 118 L90 110 L108 118 Z", fill: accent, opacity: 0.75 }), jsxRuntime.jsx("rect", { x: "88", y: "110", width: "4", height: "48", fill: "var(--surface-bg, #fff)", opacity: 0.8 }), jsxRuntime.jsx("circle", { cx: "90", cy: "120", r: "2", fill: stroke }), jsxRuntime.jsx("circle", { cx: "90", cy: "134", r: "2", fill: stroke })] }));
31
+ case "dress":
32
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "52", y: "92", width: "76", height: "56", rx: "14", fill: base, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("path", { d: "M52 148 L128 148 L136 168 L44 168 Z", fill: accent })] }));
33
+ case "tee":
34
+ default:
35
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "52", y: "92", width: "76", height: "66", rx: "14", fill: base, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("path", { d: "M82 92 L90 100 L98 92", fill: "none", stroke: stroke, strokeWidth: 1, opacity: 0.4 })] }));
36
+ }
37
+ }
38
+ function renderHairBack(cfg) {
39
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-hair, #1F2937)");
40
+ const hi = characterTypes.pick(cfg.colors, 1, base);
41
+ switch (cfg.variant) {
42
+ case "long":
43
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("path", { d: "M60 46 Q90 22 120 46 L120 76 Q90 92 60 76 Z", fill: base }), jsxRuntime.jsx("path", { d: "M90 46 Q92 56 102 62", stroke: hi, strokeWidth: 2.5, opacity: 0.35 })] }));
44
+ case "curly":
45
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("path", { d: "M66 40 q10 -14 22 0 q10 -14 22 0 l0 12 q-32 12 -64 0 Z", fill: base }), jsxRuntime.jsx("circle", { cx: "66", cy: "44", r: "5", fill: base }), jsxRuntime.jsx("circle", { cx: "114", cy: "44", r: "5", fill: base })] }));
46
+ case "mohawk":
47
+ return jsxRuntime.jsx("path", { d: "M82 28 L98 28 L100 50 L80 50 Z", fill: base });
48
+ case "short":
49
+ return jsxRuntime.jsx("path", { d: "M68 47 C78 24, 102 24, 112 47 L68 47 Z", fill: base });
50
+ case "none":
51
+ default:
52
+ return null;
53
+ }
54
+ }
55
+ function renderFace(cfg) {
56
+ const skin = characterTypes.pick(cfg.colors, 0, "var(--anim-skin, #FFD2B3)");
57
+ const shadow = characterTypes.pick(cfg.colors, 1, skin);
58
+ const stroke = characterTypes.pick(cfg.colors, 2, "var(--anim-stroke, #111)");
59
+ switch (cfg.variant) {
60
+ case "oval":
61
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("ellipse", { cx: "90", cy: "60", rx: "26", ry: "28", fill: skin, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("ellipse", { cx: "90", cy: "76", rx: "16", ry: "5", fill: shadow, opacity: 0.08 })] }));
62
+ case "square":
63
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "64", y: "36", width: "52", height: "48", rx: "12", fill: skin, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("ellipse", { cx: "90", cy: "76", rx: "16", ry: "5", fill: shadow, opacity: 0.08 })] }));
64
+ case "heart":
65
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("path", { d: "M90 36 q-18 10 -18 26 q0 16 18 26 q18 -10 18 -26 q0 -16 -18 -26 Z", fill: skin, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("ellipse", { cx: "90", cy: "76", rx: "16", ry: "5", fill: shadow, opacity: 0.08 })] }));
66
+ case "round":
67
+ default:
68
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("circle", { cx: "90", cy: "60", r: "26", fill: skin, stroke: stroke, strokeWidth: 1 }), jsxRuntime.jsx("ellipse", { cx: "90", cy: "76", rx: "16", ry: "5", fill: shadow, opacity: 0.08 })] }));
69
+ }
70
+ }
71
+ function renderEyes(cfg) {
72
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-eye-base, #111)");
73
+ switch (cfg.variant) {
74
+ case "oval":
75
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("ellipse", { cx: "80", cy: "56", rx: "4.5", ry: "3.5", fill: base }), jsxRuntime.jsx("ellipse", { cx: "100", cy: "56", rx: "4.5", ry: "3.5", fill: base }), jsxRuntime.jsx("circle", { cx: "81.5", cy: "55", r: "1.2", fill: "var(--surface-bg, #fff)", opacity: 0.7 }), jsxRuntime.jsx("circle", { cx: "101.5", cy: "55", r: "1.2", fill: "var(--surface-bg, #fff)", opacity: 0.7 })] }));
76
+ case "laugh":
77
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M76 56 q4 -4 8 0", stroke: base, strokeWidth: 2.5, fill: "none", strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M96 56 q4 -4 8 0", stroke: base, strokeWidth: 2.5, fill: "none", strokeLinecap: "round" })] }));
78
+ case "wink":
79
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "80", cy: "56", r: "3.5", fill: base }), jsxRuntime.jsx("circle", { cx: "81.5", cy: "55", r: "1", fill: "var(--surface-bg, #fff)", opacity: 0.7 }), jsxRuntime.jsx("path", { d: "M96 56 l8 0", stroke: base, strokeWidth: 2.5, strokeLinecap: "round" })] }));
80
+ case "sleepy":
81
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("path", { d: "M76 56 l8 0", stroke: base, strokeWidth: 2.5, strokeLinecap: "round" }), jsxRuntime.jsx("path", { d: "M96 56 l8 0", stroke: base, strokeWidth: 2.5, strokeLinecap: "round" })] }));
82
+ case "dot":
83
+ default:
84
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("circle", { cx: "80", cy: "56", r: "3.5", fill: base }), jsxRuntime.jsx("circle", { cx: "100", cy: "56", r: "3.5", fill: base }), jsxRuntime.jsx("circle", { cx: "81.5", cy: "55", r: "1", fill: "var(--surface-bg, #fff)", opacity: 0.7 }), jsxRuntime.jsx("circle", { cx: "101.5", cy: "55", r: "1", fill: "var(--surface-bg, #fff)", opacity: 0.7 })] }));
85
+ }
86
+ }
87
+ function renderNose(cfg) {
88
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-nose, #111)");
89
+ switch (cfg.variant) {
90
+ case "triangle":
91
+ return jsxRuntime.jsx("path", { d: "M90 62 l-4 8 h8 Z", fill: base, opacity: 0.6 });
92
+ case "round":
93
+ return jsxRuntime.jsx("circle", { cx: "90", cy: "66", r: "3", fill: base, opacity: 0.6 });
94
+ case "line":
95
+ default:
96
+ return jsxRuntime.jsx("rect", { x: "89", y: "62", width: "2", height: "8", fill: base, rx: "1", opacity: 0.5 });
97
+ }
98
+ }
99
+ function renderMouth(cfg) {
100
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-mouth-base, #111)");
101
+ const tooth = characterTypes.pick(cfg.colors, 1, "var(--white, #fff)");
102
+ switch (cfg.variant) {
103
+ case "frown":
104
+ return jsxRuntime.jsx("path", { d: "M80 76 q10 -6 20 0", stroke: base, strokeWidth: 2.5, fill: "none", strokeLinecap: "round" });
105
+ case "open":
106
+ return jsxRuntime.jsx("ellipse", { cx: "90", cy: "76", rx: "7", ry: "5", fill: base });
107
+ case "flat":
108
+ return jsxRuntime.jsx("rect", { x: "82", y: "75", width: "16", height: "2.5", rx: "1.25", fill: base });
109
+ case "o":
110
+ return jsxRuntime.jsx("circle", { cx: "90", cy: "76", r: "4", fill: base });
111
+ case "teeth":
112
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "82", y: "74", width: "16", height: "7", rx: "3", fill: base }), jsxRuntime.jsx("rect", { x: "84", y: "75", width: "12", height: "3", rx: "1", fill: tooth })] }));
113
+ case "smile":
114
+ default:
115
+ return jsxRuntime.jsx("path", { d: "M80 76 q10 8 20 0", stroke: base, strokeWidth: 2.5, fill: "none", strokeLinecap: "round" });
116
+ }
117
+ }
118
+ function renderHeadwear(cfg) {
119
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-headwear-base, #111)");
120
+ const accent = characterTypes.pick(cfg.colors, 1, base);
121
+ switch (cfg.variant) {
122
+ case "cap":
123
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("path", { d: "M68 44 q22 -18 44 0 l-6 4 q-18 -10 -28 0 Z", fill: base }), jsxRuntime.jsx("rect", { x: "60", y: "44", width: "52", height: "5", rx: "2", fill: base })] }));
124
+ case "headphones":
125
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("path", { d: "M66 56 q0 -24 24 -24 q24 0 24 24", stroke: base, strokeWidth: 5, fill: "none" }), jsxRuntime.jsx("rect", { x: "58", y: "52", width: "12", height: "16", rx: "4", fill: accent }), jsxRuntime.jsx("rect", { x: "110", y: "52", width: "12", height: "16", rx: "4", fill: accent })] }));
126
+ case "hat":
127
+ return (jsxRuntime.jsxs("g", { children: [jsxRuntime.jsx("rect", { x: "62", y: "38", width: "56", height: "8", rx: "3", fill: base }), jsxRuntime.jsx("rect", { x: "72", y: "30", width: "36", height: "10", rx: "3", fill: base })] }));
128
+ case "crown":
129
+ return jsxRuntime.jsx("path", { d: "M72 42 l6 12 l6 -10 l6 10 l6 -10 l6 12 v6 h-30 Z", fill: base });
130
+ case "none":
131
+ default:
132
+ return null;
133
+ }
134
+ }
135
+ function renderProp(cfg) {
136
+ const base = characterTypes.pick(cfg.colors, 0, "var(--anim-prop-base, #111)");
137
+ const accent = characterTypes.pick(cfg.colors, 1, "var(--anim-prop-accent, #666)");
138
+ const light = characterTypes.pick(cfg.colors, 2, "var(--anim-prop-light, #CCC)");
139
+ switch (cfg.variant) {
140
+ case "mic":
141
+ return (jsxRuntime.jsxs("g", { transform: "translate(140,90)", children: [jsxRuntime.jsx("rect", { x: "0", y: "0", width: "4", height: "16", rx: "2", fill: accent }), jsxRuntime.jsx("circle", { cx: "2", cy: "-2", r: "6", fill: base, stroke: light, strokeWidth: 1 })] }));
142
+ case "clipboard":
143
+ return (jsxRuntime.jsxs("g", { transform: "translate(140,86)", children: [jsxRuntime.jsx("rect", { x: "-6", y: "-2", width: "20", height: "26", rx: "3", fill: light, stroke: base }), jsxRuntime.jsx("rect", { x: "0", y: "-6", width: "8", height: "6", rx: "2", fill: base })] }));
144
+ case "star":
145
+ return (jsxRuntime.jsx("g", { transform: "translate(140,86)", children: jsxRuntime.jsx("path", { d: "M8 0 L10 6 L16 6 L11 10 L13 16 L8 12 L3 16 L5 10 L0 6 L6 6 Z", fill: accent, stroke: base }) }));
146
+ case "none":
147
+ default:
148
+ return null;
149
+ }
150
+ }
151
+
152
+ module.exports = AnimatedPerson;
153
+ //# sourceMappingURL=AnimatedPerson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimatedPerson.js","sources":["../../../src/animation/AnimatedPerson.tsx"],"sourcesContent":[null],"names":["usePersonControls","useMemo","DEFAULT_CHARACTER","useEffect","playPose","pick","_jsx","motion","_jsxs","_Fragment"],"mappings":"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"}