@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
@@ -1 +1 @@
1
- {"version":3,"file":"photoEditorActions.js","sources":["../../../src/photo/photoEditorActions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"photoEditorActions.js","sources":["../../../src/photo/photoEditorActions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -32,10 +32,12 @@ function cloneImageData(src) {
32
32
  }
33
33
  /** Mix original and filtered based on intensity */
34
34
  function blendIntensity(original, filtered, intensity) {
35
- if (intensity >= 1)
35
+ if (intensity >= 1) {
36
36
  return filtered;
37
- if (intensity <= 0)
37
+ }
38
+ if (intensity <= 0) {
38
39
  return cloneImageData(original);
40
+ }
39
41
  const out = cloneImageData(original);
40
42
  const od = out.data;
41
43
  const fd = filtered.data;
@@ -304,26 +306,14 @@ function threshold(data, level = 128) {
304
306
  return out;
305
307
  }
306
308
  function emboss(data) {
307
- return convolve(data, [
308
- -2, -1, 0,
309
- -1, 1, 1,
310
- 0, 1, 2,
311
- ]);
309
+ return convolve(data, [-2, -1, 0, -1, 1, 1, 0, 1, 2]);
312
310
  }
313
311
  function edgeDetect(data) {
314
- return convolve(data, [
315
- -1, -1, -1,
316
- -1, 8, -1,
317
- -1, -1, -1,
318
- ]);
312
+ return convolve(data, [-1, -1, -1, -1, 8, -1, -1, -1, -1]);
319
313
  }
320
314
  function sharpen(data, amount = 1) {
321
315
  const k = amount;
322
- return convolve(data, [
323
- 0, -k, 0,
324
- -k, 1 + 4 * k, -k,
325
- 0, -k, 0,
326
- ]);
316
+ return convolve(data, [0, -k, 0, -k, 1 + 4 * k, -k, 0, -k, 0]);
327
317
  }
328
318
  function comicBook(data) {
329
319
  const edges = edgeDetect(data);
@@ -432,7 +422,7 @@ function glitch(data) {
432
422
  if (Math.random() > 0.92) {
433
423
  const shift = Math.floor(Math.random() * 30 - 15);
434
424
  for (let x = 0; x < w; x++) {
435
- const srcX = ((x + shift) % w + w) % w;
425
+ const srcX = (((x + shift) % w) + w) % w;
436
426
  const di = (y * w + x) * 4;
437
427
  const si = (y * w + srcX) * 4;
438
428
  // Red channel from shifted position
@@ -488,7 +478,7 @@ function oilPainting(data, radius = 3) {
488
478
  const ny = Math.min(h - 1, Math.max(0, y + ky));
489
479
  const nx = Math.min(w - 1, Math.max(0, x + kx));
490
480
  const ni = (ny * w + nx) * 4;
491
- const lum = Math.floor(((src[ni] + src[ni + 1] + src[ni + 2]) / 3) * levels / 256);
481
+ const lum = Math.floor((((src[ni] + src[ni + 1] + src[ni + 2]) / 3) * levels) / 256);
492
482
  const li = Math.min(lum, levels - 1);
493
483
  counts[li]++;
494
484
  rSum[li] += src[ni];
@@ -522,8 +512,9 @@ function tiltShift(data) {
522
512
  for (let y = 0; y < h; y++) {
523
513
  const dist = Math.abs(y - centerY);
524
514
  const blurRadius = dist < focusHalf ? 0 : Math.min(6, Math.floor((dist - focusHalf) / (h * 0.1)));
525
- if (blurRadius === 0)
515
+ if (blurRadius === 0) {
526
516
  continue;
517
+ }
527
518
  for (let x = 0; x < w; x++) {
528
519
  let rSum = 0, gSum = 0, bSum = 0, count = 0;
529
520
  for (let ky = -blurRadius; ky <= blurRadius; ky++) {
@@ -668,7 +659,7 @@ function convolve(data, kernel) {
668
659
  const src = data.data;
669
660
  const w = data.width, h = data.height;
670
661
  const size = Math.sqrt(kernel.length) | 0;
671
- const half = (size >> 1);
662
+ const half = size >> 1;
672
663
  for (let y = 0; y < h; y++) {
673
664
  for (let x = 0; x < w; x++) {
674
665
  let r = 0, g = 0, b = 0;
@@ -707,22 +698,24 @@ function hexToRgb(hex) {
707
698
  }
708
699
  // ── Canvas helpers for vignette & grain (applied via context) ──
709
700
  function applyVignette(ctx, w, h, amount) {
710
- if (amount <= 0)
701
+ if (amount <= 0) {
711
702
  return;
703
+ }
712
704
  const cx = w / 2, cy = h / 2;
713
705
  const radius = Math.max(w, h) * 0.7;
714
706
  const grad = ctx.createRadialGradient(cx, cy, radius * 0.4, cx, cy, radius);
715
707
  grad.addColorStop(0, 'rgba(0,0,0,0)');
716
- grad.addColorStop(1, `rgba(0,0,0,${amount / 100 * 0.7})`);
708
+ grad.addColorStop(1, `rgba(0,0,0,${(amount / 100) * 0.7})`);
717
709
  ctx.fillStyle = grad;
718
710
  ctx.fillRect(0, 0, w, h);
719
711
  }
720
712
  function applyGrain(ctx, w, h, amount) {
721
- if (amount <= 0)
713
+ if (amount <= 0) {
722
714
  return;
715
+ }
723
716
  const imageData = ctx.getImageData(0, 0, w, h);
724
717
  const d = imageData.data;
725
- const intensity = amount / 100 * 50;
718
+ const intensity = (amount / 100) * 50;
726
719
  for (let i = 0; i < d.length; i += 4) {
727
720
  const noise = (Math.random() - 0.5) * intensity;
728
721
  d[i] = clamp(d[i] + noise);
@@ -735,88 +728,326 @@ function applyGrain(ctx, w, h, amount) {
735
728
  const PHOTO_FILTERS = [
736
729
  // Color
737
730
  { id: 'none', name: 'Oryginał', category: 'color', icon: '🔲', apply: (d) => cloneImageData(d) },
738
- { id: 'grayscale', name: 'Cz/B', category: 'color', icon: '⬛', apply: (d, p) => { var _a; return blendIntensity(d, grayscale(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
739
- { id: 'sepia', name: 'Sepia', category: 'color', icon: '🟤', apply: (d, p) => { var _a; return blendIntensity(d, sepia(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
740
- { id: 'invert', name: 'Negatyw', category: 'color', icon: '🔄', apply: (d, p) => { var _a; return blendIntensity(d, invert(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
741
- { id: 'duotone', name: 'Duotone', category: 'color', icon: '🎨', apply: (d, p) => { var _a; return blendIntensity(d, duotone(d, p), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
742
- { id: 'channelShift', name: 'Channel Shift', category: 'color', icon: '🌈', apply: (d, p) => { var _a; return blendIntensity(d, channelShift(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
743
- { id: 'threshold', name: 'Próg', category: 'color', icon: '⚫', apply: (d, p) => { var _a; return blendIntensity(d, threshold(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
744
- { id: 'pop', name: 'Pop', category: 'color', icon: '💥', apply: (d, p) => { var _a; return blendIntensity(d, pop(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
731
+ {
732
+ id: 'grayscale',
733
+ name: 'Cz/B',
734
+ category: 'color',
735
+ icon: '⬛',
736
+ apply: (d, p) => { var _a; return blendIntensity(d, grayscale(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
737
+ },
738
+ {
739
+ id: 'sepia',
740
+ name: 'Sepia',
741
+ category: 'color',
742
+ icon: '🟤',
743
+ apply: (d, p) => { var _a; return blendIntensity(d, sepia(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
744
+ },
745
+ {
746
+ id: 'invert',
747
+ name: 'Negatyw',
748
+ category: 'color',
749
+ icon: '🔄',
750
+ apply: (d, p) => { var _a; return blendIntensity(d, invert(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
751
+ },
752
+ {
753
+ id: 'duotone',
754
+ name: 'Duotone',
755
+ category: 'color',
756
+ icon: '🎨',
757
+ apply: (d, p) => { var _a; return blendIntensity(d, duotone(d, p), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
758
+ },
759
+ {
760
+ id: 'channelShift',
761
+ name: 'Channel Shift',
762
+ category: 'color',
763
+ icon: '🌈',
764
+ apply: (d, p) => { var _a; return blendIntensity(d, channelShift(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
765
+ },
766
+ {
767
+ id: 'threshold',
768
+ name: 'PrĂłg',
769
+ category: 'color',
770
+ icon: '⚫',
771
+ apply: (d, p) => { var _a; return blendIntensity(d, threshold(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
772
+ },
773
+ {
774
+ id: 'pop',
775
+ name: 'Pop',
776
+ category: 'color',
777
+ icon: '💥',
778
+ apply: (d, p) => { var _a; return blendIntensity(d, pop(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
779
+ },
745
780
  // Light
746
- { id: 'dreamyGlow', name: 'Dreamy Glow', category: 'light', icon: '✨', apply: (d, p) => { var _a; return blendIntensity(d, dreamyGlow(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
747
- { id: 'lomoLeaks', name: 'Light Leaks', category: 'light', icon: '☀️', apply: (d, p) => { var _a; return blendIntensity(d, lomoLeaks(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
748
- { id: 'fadeOut', name: 'Fade', category: 'light', icon: '🌫️', apply: (d, p) => { var _a; return blendIntensity(d, fadeOut(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
749
- { id: 'golden', name: 'Golden', category: 'light', icon: '🌟', apply: (d, p) => { var _a; return blendIntensity(d, golden(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
750
- { id: 'sunset', name: 'Sunset', category: 'light', icon: '🌅', apply: (d, p) => { var _a; return blendIntensity(d, sunset(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
751
- { id: 'moody', name: 'Moody', category: 'light', icon: '🌑', apply: (d, p) => { var _a; return blendIntensity(d, moody(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
752
- { id: 'arctic', name: 'Arctic', category: 'light', icon: '❄️', apply: (d, p) => { var _a; return blendIntensity(d, arctic(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
781
+ {
782
+ id: 'dreamyGlow',
783
+ name: 'Dreamy Glow',
784
+ category: 'light',
785
+ icon: '✨',
786
+ apply: (d, p) => { var _a; return blendIntensity(d, dreamyGlow(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
787
+ },
788
+ {
789
+ id: 'lomoLeaks',
790
+ name: 'Light Leaks',
791
+ category: 'light',
792
+ icon: '☀️',
793
+ apply: (d, p) => { var _a; return blendIntensity(d, lomoLeaks(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
794
+ },
795
+ {
796
+ id: 'fadeOut',
797
+ name: 'Fade',
798
+ category: 'light',
799
+ icon: '🌫️',
800
+ apply: (d, p) => { var _a; return blendIntensity(d, fadeOut(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
801
+ },
802
+ {
803
+ id: 'golden',
804
+ name: 'Golden',
805
+ category: 'light',
806
+ icon: '🌟',
807
+ apply: (d, p) => { var _a; return blendIntensity(d, golden(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
808
+ },
809
+ {
810
+ id: 'sunset',
811
+ name: 'Sunset',
812
+ category: 'light',
813
+ icon: '🌅',
814
+ apply: (d, p) => { var _a; return blendIntensity(d, sunset(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
815
+ },
816
+ {
817
+ id: 'moody',
818
+ name: 'Moody',
819
+ category: 'light',
820
+ icon: '🌑',
821
+ apply: (d, p) => { var _a; return blendIntensity(d, moody(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
822
+ },
823
+ {
824
+ id: 'arctic',
825
+ name: 'Arctic',
826
+ category: 'light',
827
+ icon: '❄️',
828
+ apply: (d, p) => { var _a; return blendIntensity(d, arctic(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
829
+ },
753
830
  // Vintage
754
- { id: 'vintageFilm', name: 'Vintage Film', category: 'vintage', icon: '🎞️', apply: (d, p) => { var _a; return blendIntensity(d, vintageFilm(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
755
- { id: 'kodachrome', name: 'Kodachrome', category: 'vintage', icon: '📷', apply: (d, p) => { var _a; return blendIntensity(d, kodachrome(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
756
- { id: 'polaroid', name: 'Polaroid', category: 'vintage', icon: '📸', apply: (d, p) => { var _a; return blendIntensity(d, polaroid(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
757
- { id: 'technicolor', name: 'Technicolor', category: 'vintage', icon: '🎬', apply: (d, p) => { var _a; return blendIntensity(d, technicolor(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
758
- { id: 'brownie', name: 'Brownie', category: 'vintage', icon: '🍫', apply: (d, p) => { var _a; return blendIntensity(d, brownie(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
759
- { id: 'crossProcess', name: 'Cross Process', category: 'vintage', icon: '🧪', apply: (d, p) => { var _a; return blendIntensity(d, crossProcess(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
831
+ {
832
+ id: 'vintageFilm',
833
+ name: 'Vintage Film',
834
+ category: 'vintage',
835
+ icon: '🎞️',
836
+ apply: (d, p) => { var _a; return blendIntensity(d, vintageFilm(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
837
+ },
838
+ {
839
+ id: 'kodachrome',
840
+ name: 'Kodachrome',
841
+ category: 'vintage',
842
+ icon: '📷',
843
+ apply: (d, p) => { var _a; return blendIntensity(d, kodachrome(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
844
+ },
845
+ {
846
+ id: 'polaroid',
847
+ name: 'Polaroid',
848
+ category: 'vintage',
849
+ icon: '📸',
850
+ apply: (d, p) => { var _a; return blendIntensity(d, polaroid(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
851
+ },
852
+ {
853
+ id: 'technicolor',
854
+ name: 'Technicolor',
855
+ category: 'vintage',
856
+ icon: '🎬',
857
+ apply: (d, p) => { var _a; return blendIntensity(d, technicolor(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
858
+ },
859
+ {
860
+ id: 'brownie',
861
+ name: 'Brownie',
862
+ category: 'vintage',
863
+ icon: '🍫',
864
+ apply: (d, p) => { var _a; return blendIntensity(d, brownie(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
865
+ },
866
+ {
867
+ id: 'crossProcess',
868
+ name: 'Cross Process',
869
+ category: 'vintage',
870
+ icon: '🧪',
871
+ apply: (d, p) => { var _a; return blendIntensity(d, crossProcess(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
872
+ },
760
873
  // Artistic
761
- { id: 'pencilSketch', name: 'Ołówek', category: 'artistic', icon: '✏️', apply: (d, p) => { var _a; return blendIntensity(d, pencilSketch(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
762
- { id: 'oilPainting', name: 'Olej', category: 'artistic', icon: '🎨', apply: (d, p) => { var _a; return blendIntensity(d, oilPainting(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
763
- { id: 'watercolor', name: 'Akwarela', category: 'artistic', icon: '🖌️', apply: (d, p) => { var _a; return blendIntensity(d, watercolor(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
764
- { id: 'comicBook', name: 'Komiks', category: 'artistic', icon: '💬', apply: (d, p) => { var _a; return blendIntensity(d, comicBook(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
765
- { id: 'posterize', name: 'Plakat', category: 'artistic', icon: '🖼️', apply: (d, p) => { var _a; return blendIntensity(d, posterize(d, 5), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
766
- { id: 'emboss', name: 'Płaskorzeźba', category: 'artistic', icon: '🗿', apply: (d, p) => { var _a; return blendIntensity(d, emboss(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
767
- { id: 'edgeDetect', name: 'Krawędzie', category: 'artistic', icon: '🔍', apply: (d, p) => { var _a; return blendIntensity(d, edgeDetect(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
768
- { id: 'tiltShift', name: 'Tilt Shift', category: 'artistic', icon: '🔭', apply: (d, p) => { var _a; return blendIntensity(d, tiltShift(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
874
+ {
875
+ id: 'pencilSketch',
876
+ name: 'Ołówek',
877
+ category: 'artistic',
878
+ icon: '✏️',
879
+ apply: (d, p) => { var _a; return blendIntensity(d, pencilSketch(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
880
+ },
881
+ {
882
+ id: 'oilPainting',
883
+ name: 'Olej',
884
+ category: 'artistic',
885
+ icon: '🎨',
886
+ apply: (d, p) => { var _a; return blendIntensity(d, oilPainting(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
887
+ },
888
+ {
889
+ id: 'watercolor',
890
+ name: 'Akwarela',
891
+ category: 'artistic',
892
+ icon: '🖌️',
893
+ apply: (d, p) => { var _a; return blendIntensity(d, watercolor(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
894
+ },
895
+ {
896
+ id: 'comicBook',
897
+ name: 'Komiks',
898
+ category: 'artistic',
899
+ icon: '💬',
900
+ apply: (d, p) => { var _a; return blendIntensity(d, comicBook(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
901
+ },
902
+ {
903
+ id: 'posterize',
904
+ name: 'Plakat',
905
+ category: 'artistic',
906
+ icon: '🖼️',
907
+ apply: (d, p) => { var _a; return blendIntensity(d, posterize(d, 5), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
908
+ },
909
+ {
910
+ id: 'emboss',
911
+ name: 'Płaskorzeźba',
912
+ category: 'artistic',
913
+ icon: '🗿',
914
+ apply: (d, p) => { var _a; return blendIntensity(d, emboss(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
915
+ },
916
+ {
917
+ id: 'edgeDetect',
918
+ name: 'Krawędzie',
919
+ category: 'artistic',
920
+ icon: '🔍',
921
+ apply: (d, p) => { var _a; return blendIntensity(d, edgeDetect(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
922
+ },
923
+ {
924
+ id: 'tiltShift',
925
+ name: 'Tilt Shift',
926
+ category: 'artistic',
927
+ icon: '🔭',
928
+ apply: (d, p) => { var _a; return blendIntensity(d, tiltShift(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
929
+ },
769
930
  // Fun
770
- { id: 'cyberpunk', name: 'Cyberpunk', category: 'fun', icon: '🤖', apply: (d, p) => { var _a; return blendIntensity(d, cyberpunk(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
771
- { id: 'retroWave', name: 'Retrowave', category: 'fun', icon: '🕹️', apply: (d, p) => { var _a; return blendIntensity(d, retroWave(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
772
- { id: 'nightVision', name: 'Night Vision', category: 'fun', icon: '🌙', apply: (d, p) => { var _a; return blendIntensity(d, nightVision(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
773
- { id: 'xRay', name: 'X-Ray', category: 'fun', icon: '☠️', apply: (d, p) => { var _a; return blendIntensity(d, xRay(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
774
- { id: 'heatMap', name: 'Heat Map', category: 'fun', icon: '🔥', apply: (d, p) => { var _a; return blendIntensity(d, heatMap(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
775
- { id: 'radioactive', name: 'Radioactive', category: 'fun', icon: '☢️', apply: (d, p) => { var _a; return blendIntensity(d, radioactive(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
776
- { id: 'glitch', name: 'Glitch', category: 'fun', icon: '📺', apply: (d, p) => { var _a; return blendIntensity(d, glitch(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
777
- { id: 'pixelate', name: 'Piksele', category: 'fun', icon: '🟩', apply: (d, p) => { var _a; return blendIntensity(d, pixelate(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
778
- { id: 'frostedGlass', name: 'Matowe szkło', category: 'fun', icon: '🧊', apply: (d, p) => { var _a; return blendIntensity(d, frostedGlass(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
779
- { id: 'solarize', name: 'Solaryzacja', category: 'fun', icon: '🌞', apply: (d, p) => { var _a; return blendIntensity(d, solarize(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); } },
931
+ {
932
+ id: 'cyberpunk',
933
+ name: 'Cyberpunk',
934
+ category: 'fun',
935
+ icon: '🤖',
936
+ apply: (d, p) => { var _a; return blendIntensity(d, cyberpunk(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
937
+ },
938
+ {
939
+ id: 'retroWave',
940
+ name: 'Retrowave',
941
+ category: 'fun',
942
+ icon: '🕹️',
943
+ apply: (d, p) => { var _a; return blendIntensity(d, retroWave(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
944
+ },
945
+ {
946
+ id: 'nightVision',
947
+ name: 'Night Vision',
948
+ category: 'fun',
949
+ icon: '🌙',
950
+ apply: (d, p) => { var _a; return blendIntensity(d, nightVision(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
951
+ },
952
+ {
953
+ id: 'xRay',
954
+ name: 'X-Ray',
955
+ category: 'fun',
956
+ icon: '☠️',
957
+ apply: (d, p) => { var _a; return blendIntensity(d, xRay(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
958
+ },
959
+ {
960
+ id: 'heatMap',
961
+ name: 'Heat Map',
962
+ category: 'fun',
963
+ icon: '🔥',
964
+ apply: (d, p) => { var _a; return blendIntensity(d, heatMap(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
965
+ },
966
+ {
967
+ id: 'radioactive',
968
+ name: 'Radioactive',
969
+ category: 'fun',
970
+ icon: '☢️',
971
+ apply: (d, p) => { var _a; return blendIntensity(d, radioactive(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
972
+ },
973
+ {
974
+ id: 'glitch',
975
+ name: 'Glitch',
976
+ category: 'fun',
977
+ icon: '📺',
978
+ apply: (d, p) => { var _a; return blendIntensity(d, glitch(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
979
+ },
980
+ {
981
+ id: 'pixelate',
982
+ name: 'Piksele',
983
+ category: 'fun',
984
+ icon: '🟩',
985
+ apply: (d, p) => { var _a; return blendIntensity(d, pixelate(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
986
+ },
987
+ {
988
+ id: 'frostedGlass',
989
+ name: 'Matowe szkło',
990
+ category: 'fun',
991
+ icon: '🧊',
992
+ apply: (d, p) => { var _a; return blendIntensity(d, frostedGlass(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
993
+ },
994
+ {
995
+ id: 'solarize',
996
+ name: 'Solaryzacja',
997
+ category: 'fun',
998
+ icon: '🌞',
999
+ apply: (d, p) => { var _a; return blendIntensity(d, solarize(d), (_a = p === null || p === void 0 ? void 0 : p.intensity) !== null && _a !== void 0 ? _a : 1); },
1000
+ },
780
1001
  ];
781
1002
  /** Get filter by ID */
782
1003
  function getFilter(id) {
783
- return PHOTO_FILTERS.find(f => f.id === id);
1004
+ return PHOTO_FILTERS.find((f) => f.id === id);
784
1005
  }
785
1006
  /** Apply adjustments to ImageData */
786
1007
  function applyAdjustments(data, adj) {
787
1008
  let out = data;
788
- if (adj.exposure && adj.exposure !== 0)
1009
+ if (adj.exposure && adj.exposure !== 0) {
789
1010
  out = adjustExposure(out, adj.exposure);
790
- if (adj.brightness && adj.brightness !== 0)
1011
+ }
1012
+ if (adj.brightness && adj.brightness !== 0) {
791
1013
  out = adjustBrightness(out, adj.brightness);
792
- if (adj.contrast && adj.contrast !== 0)
1014
+ }
1015
+ if (adj.contrast && adj.contrast !== 0) {
793
1016
  out = adjustContrast(out, adj.contrast);
794
- if (adj.saturation && adj.saturation !== 0)
1017
+ }
1018
+ if (adj.saturation && adj.saturation !== 0) {
795
1019
  out = adjustSaturation(out, adj.saturation);
796
- if (adj.temperature && adj.temperature !== 0)
1020
+ }
1021
+ if (adj.temperature && adj.temperature !== 0) {
797
1022
  out = adjustTemperature(out, adj.temperature);
798
- if (adj.tint && adj.tint !== 0)
1023
+ }
1024
+ if (adj.tint && adj.tint !== 0) {
799
1025
  out = adjustTint(out, adj.tint);
800
- if (adj.highlights && adj.highlights !== 0)
1026
+ }
1027
+ if (adj.highlights && adj.highlights !== 0) {
801
1028
  out = adjustHighlights(out, adj.highlights);
802
- if (adj.shadows && adj.shadows !== 0)
1029
+ }
1030
+ if (adj.shadows && adj.shadows !== 0) {
803
1031
  out = adjustShadows(out, adj.shadows);
804
- if (adj.sharpness && adj.sharpness > 0)
1032
+ }
1033
+ if (adj.sharpness && adj.sharpness > 0) {
805
1034
  out = sharpen(out, adj.sharpness / 100);
1035
+ }
806
1036
  return out;
807
1037
  }
808
1038
  /** Full pipeline: filter + adjustments → canvas, then vignette & grain via context */
809
1039
  function renderToCanvas(canvas, sourceImage, filterId, filterParams, adjustments, cropRect, rotation, flipH, flipV) {
810
1040
  const ctx = canvas.getContext('2d', { willReadFrequently: true });
811
- if (!ctx)
1041
+ if (!ctx) {
812
1042
  return;
1043
+ }
813
1044
  // Source dimensions
814
1045
  const sw = sourceImage.naturalWidth;
815
1046
  const sh = sourceImage.naturalHeight;
816
1047
  // Crop region (in source pixels)
817
1048
  const crop = cropRect !== null && cropRect !== void 0 ? cropRect : { x: 0, y: 0, w: sw, h: sh };
818
1049
  // Rotation affects output dimensions
819
- const rot = ((rotation !== null && rotation !== void 0 ? rotation : 0) % 360 + 360) % 360;
1050
+ const rot = (((rotation !== null && rotation !== void 0 ? rotation : 0) % 360) + 360) % 360;
820
1051
  const swapped = rot === 90 || rot === 270;
821
1052
  const outW = swapped ? crop.h : crop.w;
822
1053
  const outH = swapped ? crop.w : crop.h;
@@ -824,12 +1055,15 @@ function renderToCanvas(canvas, sourceImage, filterId, filterParams, adjustments
824
1055
  canvas.height = outH;
825
1056
  ctx.save();
826
1057
  ctx.translate(outW / 2, outH / 2);
827
- if (rot)
1058
+ if (rot) {
828
1059
  ctx.rotate((rot * Math.PI) / 180);
829
- if (flipH)
1060
+ }
1061
+ if (flipH) {
830
1062
  ctx.scale(-1, 1);
831
- if (flipV)
1063
+ }
1064
+ if (flipV) {
832
1065
  ctx.scale(1, -1);
1066
+ }
833
1067
  ctx.drawImage(sourceImage, crop.x, crop.y, crop.w, crop.h, -crop.w / 2, -crop.h / 2, crop.w, crop.h);
834
1068
  ctx.restore();
835
1069
  // Apply filter
@@ -842,7 +1076,7 @@ function renderToCanvas(canvas, sourceImage, filterId, filterParams, adjustments
842
1076
  }
843
1077
  }
844
1078
  // Apply adjustments
845
- const hasAdj = Object.values(adjustments).some(v => v !== 0 && v !== undefined);
1079
+ const hasAdj = Object.values(adjustments).some((v) => v !== 0 && v !== undefined);
846
1080
  if (hasAdj) {
847
1081
  const imgData = ctx.getImageData(0, 0, outW, outH);
848
1082
  const adjusted = applyAdjustments(imgData, adjustments);
@@ -859,9 +1093,10 @@ function renderToCanvas(canvas, sourceImage, filterId, filterParams, adjustments
859
1093
  /** Export canvas as File (for upload) */
860
1094
  function canvasToFile(canvas, filename = 'photo.jpg', quality = 0.92) {
861
1095
  return new Promise((resolve, reject) => {
862
- canvas.toBlob(blob => {
863
- if (!blob)
1096
+ canvas.toBlob((blob) => {
1097
+ if (!blob) {
864
1098
  return reject(new Error('Canvas toBlob failed'));
1099
+ }
865
1100
  resolve(new File([blob], filename, { type: 'image/jpeg' }));
866
1101
  }, 'image/jpeg', quality);
867
1102
  });