fabric 6.2.0 → 6.3.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 (1161) hide show
  1. package/.prettierignore +1 -0
  2. package/CHANGELOG.md +12 -4
  3. package/README.md +1 -1
  4. package/dist/extensions/aligning_guidelines/constant.d.ts +3 -0
  5. package/dist/extensions/aligning_guidelines/constant.d.ts.map +1 -0
  6. package/dist/extensions/aligning_guidelines/index.d.ts +5 -0
  7. package/dist/extensions/aligning_guidelines/index.d.ts.map +1 -0
  8. package/dist/extensions/aligning_guidelines/typedefs.d.ts +33 -0
  9. package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +1 -0
  10. package/dist/extensions/aligning_guidelines/util/basic.d.ts +4 -0
  11. package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +1 -0
  12. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +13 -0
  13. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +1 -0
  14. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +20 -0
  15. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +1 -0
  16. package/dist/extensions/aligning_guidelines/util/draw.d.ts +6 -0
  17. package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +1 -0
  18. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +3 -0
  19. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +1 -0
  20. package/dist/extensions/index.d.ts +2 -0
  21. package/dist/extensions/index.d.ts.map +1 -0
  22. package/dist/index.js +140 -108
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.min.js +1 -1
  25. package/dist/index.min.js.map +1 -1
  26. package/dist/index.min.mjs +1 -1
  27. package/dist/index.min.mjs.map +1 -1
  28. package/dist/index.mjs +140 -108
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/index.node.cjs +140 -108
  31. package/dist/index.node.cjs.map +1 -1
  32. package/dist/index.node.mjs +140 -108
  33. package/dist/index.node.mjs.map +1 -1
  34. package/dist/package.json.min.mjs +1 -1
  35. package/dist/package.json.mjs +1 -1
  36. package/dist/src/ClassRegistry.min.mjs.map +1 -1
  37. package/dist/src/ClassRegistry.mjs.map +1 -1
  38. package/dist/src/Collection.min.mjs.map +1 -1
  39. package/dist/src/Collection.mjs.map +1 -1
  40. package/dist/src/Intersection.min.mjs.map +1 -1
  41. package/dist/src/Intersection.mjs.map +1 -1
  42. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +1 -1
  43. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +1 -1
  44. package/dist/src/LayoutManager/LayoutManager.d.ts +1 -1
  45. package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
  46. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
  47. package/dist/src/LayoutManager/LayoutManager.mjs +1 -1
  48. package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
  49. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +1 -1
  50. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +1 -1
  51. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +1 -1
  52. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +1 -1
  53. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +1 -1
  54. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +1 -1
  55. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +1 -1
  56. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +1 -1
  57. package/dist/src/LayoutManager/types.d.ts.map +1 -1
  58. package/dist/src/Observable.min.mjs.map +1 -1
  59. package/dist/src/Observable.mjs.map +1 -1
  60. package/dist/src/Pattern/Pattern.d.ts +2 -2
  61. package/dist/src/Pattern/Pattern.d.ts.map +1 -1
  62. package/dist/src/Pattern/Pattern.min.mjs +1 -1
  63. package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
  64. package/dist/src/Pattern/Pattern.mjs +14 -12
  65. package/dist/src/Pattern/Pattern.mjs.map +1 -1
  66. package/dist/src/Point.min.mjs.map +1 -1
  67. package/dist/src/Point.mjs.map +1 -1
  68. package/dist/src/Shadow.min.mjs.map +1 -1
  69. package/dist/src/Shadow.mjs.map +1 -1
  70. package/dist/src/brushes/CircleBrush.min.mjs.map +1 -1
  71. package/dist/src/brushes/CircleBrush.mjs.map +1 -1
  72. package/dist/src/brushes/PatternBrush.min.mjs.map +1 -1
  73. package/dist/src/brushes/PatternBrush.mjs.map +1 -1
  74. package/dist/src/brushes/PencilBrush.min.mjs.map +1 -1
  75. package/dist/src/brushes/PencilBrush.mjs.map +1 -1
  76. package/dist/src/brushes/SprayBrush.min.mjs.map +1 -1
  77. package/dist/src/brushes/SprayBrush.mjs.map +1 -1
  78. package/dist/src/canvas/Canvas.d.ts +1 -1
  79. package/dist/src/canvas/Canvas.d.ts.map +1 -1
  80. package/dist/src/canvas/Canvas.min.mjs.map +1 -1
  81. package/dist/src/canvas/Canvas.mjs +2 -1
  82. package/dist/src/canvas/Canvas.mjs.map +1 -1
  83. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +1 -1
  84. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +1 -1
  85. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +1 -1
  86. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +1 -1
  87. package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
  88. package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
  89. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  90. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  91. package/dist/src/canvas/StaticCanvas.d.ts +1 -1
  92. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  93. package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
  94. package/dist/src/canvas/StaticCanvas.mjs +1 -1
  95. package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
  96. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
  97. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +1 -1
  98. package/dist/src/canvas/StaticCanvasOptions.mjs.map +1 -1
  99. package/dist/src/canvas/TextEditingManager.min.mjs.map +1 -1
  100. package/dist/src/canvas/TextEditingManager.mjs.map +1 -1
  101. package/dist/src/color/Color.d.ts.map +1 -1
  102. package/dist/src/color/Color.min.mjs.map +1 -1
  103. package/dist/src/color/Color.mjs +1 -0
  104. package/dist/src/color/Color.mjs.map +1 -1
  105. package/dist/src/color/util.min.mjs.map +1 -1
  106. package/dist/src/color/util.mjs.map +1 -1
  107. package/dist/src/config.min.mjs.map +1 -1
  108. package/dist/src/config.mjs.map +1 -1
  109. package/dist/src/controls/Control.min.mjs.map +1 -1
  110. package/dist/src/controls/Control.mjs.map +1 -1
  111. package/dist/src/controls/changeWidth.min.mjs.map +1 -1
  112. package/dist/src/controls/changeWidth.mjs.map +1 -1
  113. package/dist/src/controls/controlRendering.min.mjs.map +1 -1
  114. package/dist/src/controls/controlRendering.mjs.map +1 -1
  115. package/dist/src/controls/drag.min.mjs.map +1 -1
  116. package/dist/src/controls/drag.mjs.map +1 -1
  117. package/dist/src/controls/fireEvent.min.mjs.map +1 -1
  118. package/dist/src/controls/fireEvent.mjs.map +1 -1
  119. package/dist/src/controls/pathControl.min.mjs.map +1 -1
  120. package/dist/src/controls/pathControl.mjs.map +1 -1
  121. package/dist/src/controls/polyControl.min.mjs.map +1 -1
  122. package/dist/src/controls/polyControl.mjs.map +1 -1
  123. package/dist/src/controls/rotate.min.mjs.map +1 -1
  124. package/dist/src/controls/rotate.mjs.map +1 -1
  125. package/dist/src/controls/scale.min.mjs.map +1 -1
  126. package/dist/src/controls/scale.mjs.map +1 -1
  127. package/dist/src/controls/scaleSkew.min.mjs.map +1 -1
  128. package/dist/src/controls/scaleSkew.mjs.map +1 -1
  129. package/dist/src/controls/skew.min.mjs.map +1 -1
  130. package/dist/src/controls/skew.mjs.map +1 -1
  131. package/dist/src/controls/util.min.mjs.map +1 -1
  132. package/dist/src/controls/util.mjs.map +1 -1
  133. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
  134. package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
  135. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +1 -1
  136. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +1 -1
  137. package/dist/src/filters/BaseFilter.d.ts +5 -5
  138. package/dist/src/filters/BaseFilter.d.ts.map +1 -1
  139. package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
  140. package/dist/src/filters/BaseFilter.mjs +5 -5
  141. package/dist/src/filters/BaseFilter.mjs.map +1 -1
  142. package/dist/src/filters/BlendColor.min.mjs.map +1 -1
  143. package/dist/src/filters/BlendColor.mjs.map +1 -1
  144. package/dist/src/filters/BlendImage.min.mjs.map +1 -1
  145. package/dist/src/filters/BlendImage.mjs.map +1 -1
  146. package/dist/src/filters/Blur.min.mjs.map +1 -1
  147. package/dist/src/filters/Blur.mjs.map +1 -1
  148. package/dist/src/filters/Brightness.min.mjs.map +1 -1
  149. package/dist/src/filters/Brightness.mjs.map +1 -1
  150. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +1 -1
  151. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +1 -1
  152. package/dist/src/filters/ColorMatrix.min.mjs.map +1 -1
  153. package/dist/src/filters/ColorMatrix.mjs.map +1 -1
  154. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +1 -1
  155. package/dist/src/filters/ColorMatrixFilters.mjs.map +1 -1
  156. package/dist/src/filters/Composed.min.mjs.map +1 -1
  157. package/dist/src/filters/Composed.mjs.map +1 -1
  158. package/dist/src/filters/Contrast.min.mjs.map +1 -1
  159. package/dist/src/filters/Contrast.mjs.map +1 -1
  160. package/dist/src/filters/Convolute.min.mjs.map +1 -1
  161. package/dist/src/filters/Convolute.mjs.map +1 -1
  162. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +1 -1
  163. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +1 -1
  164. package/dist/src/filters/Gamma.min.mjs.map +1 -1
  165. package/dist/src/filters/Gamma.mjs.map +1 -1
  166. package/dist/src/filters/Grayscale.min.mjs.map +1 -1
  167. package/dist/src/filters/Grayscale.mjs.map +1 -1
  168. package/dist/src/filters/Invert.min.mjs.map +1 -1
  169. package/dist/src/filters/Invert.mjs.map +1 -1
  170. package/dist/src/filters/Noise.min.mjs.map +1 -1
  171. package/dist/src/filters/Noise.mjs.map +1 -1
  172. package/dist/src/filters/Pixelate.min.mjs.map +1 -1
  173. package/dist/src/filters/Pixelate.mjs.map +1 -1
  174. package/dist/src/filters/RemoveColor.min.mjs.map +1 -1
  175. package/dist/src/filters/RemoveColor.mjs.map +1 -1
  176. package/dist/src/filters/Resize.min.mjs.map +1 -1
  177. package/dist/src/filters/Resize.mjs.map +1 -1
  178. package/dist/src/filters/Saturation.min.mjs.map +1 -1
  179. package/dist/src/filters/Saturation.mjs.map +1 -1
  180. package/dist/src/filters/Vibrance.min.mjs.map +1 -1
  181. package/dist/src/filters/Vibrance.mjs.map +1 -1
  182. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +1 -1
  183. package/dist/src/filters/WebGLFilterBackend.mjs.map +1 -1
  184. package/dist/src/filters/typedefs.d.ts +0 -1
  185. package/dist/src/filters/typedefs.d.ts.map +1 -1
  186. package/dist/src/filters/utils.min.mjs.map +1 -1
  187. package/dist/src/filters/utils.mjs.map +1 -1
  188. package/dist/src/gradient/Gradient.d.ts +7 -3
  189. package/dist/src/gradient/Gradient.d.ts.map +1 -1
  190. package/dist/src/gradient/Gradient.min.mjs +1 -1
  191. package/dist/src/gradient/Gradient.min.mjs.map +1 -1
  192. package/dist/src/gradient/Gradient.mjs +36 -24
  193. package/dist/src/gradient/Gradient.mjs.map +1 -1
  194. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +1 -1
  195. package/dist/src/gradient/parser/parseColorStops.mjs.map +1 -1
  196. package/dist/src/gradient/parser/parseCoords.d.ts.map +1 -1
  197. package/dist/src/gradient/parser/parseCoords.min.mjs.map +1 -1
  198. package/dist/src/gradient/parser/parseCoords.mjs.map +1 -1
  199. package/dist/src/parser/applyViewboxTransform.min.mjs.map +1 -1
  200. package/dist/src/parser/applyViewboxTransform.mjs.map +1 -1
  201. package/dist/src/parser/constants.min.mjs.map +1 -1
  202. package/dist/src/parser/constants.mjs.map +1 -1
  203. package/dist/src/parser/elements_parser.min.mjs.map +1 -1
  204. package/dist/src/parser/elements_parser.mjs.map +1 -1
  205. package/dist/src/parser/getCSSRules.min.mjs.map +1 -1
  206. package/dist/src/parser/getCSSRules.mjs.map +1 -1
  207. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +1 -1
  208. package/dist/src/parser/getGlobalStylesForElement.mjs.map +1 -1
  209. package/dist/src/parser/getGradientDefs.min.mjs.map +1 -1
  210. package/dist/src/parser/getGradientDefs.mjs.map +1 -1
  211. package/dist/src/parser/getMultipleNodes.min.mjs.map +1 -1
  212. package/dist/src/parser/getMultipleNodes.mjs.map +1 -1
  213. package/dist/src/parser/loadSVGFromString.min.mjs.map +1 -1
  214. package/dist/src/parser/loadSVGFromString.mjs.map +1 -1
  215. package/dist/src/parser/loadSVGFromURL.min.mjs.map +1 -1
  216. package/dist/src/parser/loadSVGFromURL.mjs.map +1 -1
  217. package/dist/src/parser/normalizeAttr.min.mjs.map +1 -1
  218. package/dist/src/parser/normalizeAttr.mjs.map +1 -1
  219. package/dist/src/parser/normalizeValue.min.mjs.map +1 -1
  220. package/dist/src/parser/normalizeValue.mjs.map +1 -1
  221. package/dist/src/parser/parseAttributes.min.mjs.map +1 -1
  222. package/dist/src/parser/parseAttributes.mjs.map +1 -1
  223. package/dist/src/parser/parseFontDeclaration.min.mjs.map +1 -1
  224. package/dist/src/parser/parseFontDeclaration.mjs.map +1 -1
  225. package/dist/src/parser/parseSVGDocument.min.mjs.map +1 -1
  226. package/dist/src/parser/parseSVGDocument.mjs.map +1 -1
  227. package/dist/src/parser/parseStyleObject.min.mjs.map +1 -1
  228. package/dist/src/parser/parseStyleObject.mjs.map +1 -1
  229. package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
  230. package/dist/src/parser/parseStyleString.mjs.map +1 -1
  231. package/dist/src/parser/parseTransformAttribute.min.mjs.map +1 -1
  232. package/dist/src/parser/parseTransformAttribute.mjs.map +1 -1
  233. package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
  234. package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
  235. package/dist/src/parser/percent.min.mjs.map +1 -1
  236. package/dist/src/parser/percent.mjs.map +1 -1
  237. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +1 -1
  238. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +1 -1
  239. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +1 -1
  240. package/dist/src/parser/setStrokeFillOpacity.mjs.map +1 -1
  241. package/dist/src/shapes/ActiveSelection.min.mjs.map +1 -1
  242. package/dist/src/shapes/ActiveSelection.mjs.map +1 -1
  243. package/dist/src/shapes/Circle.min.mjs.map +1 -1
  244. package/dist/src/shapes/Circle.mjs.map +1 -1
  245. package/dist/src/shapes/Ellipse.min.mjs.map +1 -1
  246. package/dist/src/shapes/Ellipse.mjs.map +1 -1
  247. package/dist/src/shapes/Group.d.ts +2 -2
  248. package/dist/src/shapes/Group.d.ts.map +1 -1
  249. package/dist/src/shapes/Group.min.mjs.map +1 -1
  250. package/dist/src/shapes/Group.mjs.map +1 -1
  251. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
  252. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +1 -1
  253. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +1 -1
  254. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +2 -2
  255. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +1 -1
  256. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  257. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  258. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  259. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  260. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  261. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  262. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  263. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
  264. package/dist/src/shapes/Image.min.mjs.map +1 -1
  265. package/dist/src/shapes/Image.mjs.map +1 -1
  266. package/dist/src/shapes/Line.min.mjs.map +1 -1
  267. package/dist/src/shapes/Line.mjs.map +1 -1
  268. package/dist/src/shapes/Object/AnimatableObject.d.ts.map +1 -1
  269. package/dist/src/shapes/Object/AnimatableObject.min.mjs.map +1 -1
  270. package/dist/src/shapes/Object/AnimatableObject.mjs.map +1 -1
  271. package/dist/src/shapes/Object/FabricObject.d.ts.map +1 -1
  272. package/dist/src/shapes/Object/FabricObject.min.mjs.map +1 -1
  273. package/dist/src/shapes/Object/FabricObject.mjs +2 -1
  274. package/dist/src/shapes/Object/FabricObject.mjs.map +1 -1
  275. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +1 -1
  276. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  277. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
  278. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +1 -1
  279. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
  280. package/dist/src/shapes/Object/InteractiveObject.d.ts +13 -13
  281. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  282. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  283. package/dist/src/shapes/Object/InteractiveObject.mjs +13 -13
  284. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  285. package/dist/src/shapes/Object/Object.d.ts +4 -4
  286. package/dist/src/shapes/Object/Object.d.ts.map +1 -1
  287. package/dist/src/shapes/Object/Object.min.mjs +1 -1
  288. package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
  289. package/dist/src/shapes/Object/Object.mjs +10 -14
  290. package/dist/src/shapes/Object/Object.mjs.map +1 -1
  291. package/dist/src/shapes/Object/ObjectGeometry.d.ts +1 -1
  292. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
  293. package/dist/src/shapes/Object/ObjectGeometry.mjs +1 -1
  294. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
  295. package/dist/src/shapes/Object/ObjectOrigin.min.mjs.map +1 -1
  296. package/dist/src/shapes/Object/ObjectOrigin.mjs.map +1 -1
  297. package/dist/src/shapes/Object/StackedObject.d.ts.map +1 -1
  298. package/dist/src/shapes/Object/StackedObject.min.mjs.map +1 -1
  299. package/dist/src/shapes/Object/StackedObject.mjs.map +1 -1
  300. package/dist/src/shapes/Path.min.mjs.map +1 -1
  301. package/dist/src/shapes/Path.mjs.map +1 -1
  302. package/dist/src/shapes/Polyline.d.ts.map +1 -1
  303. package/dist/src/shapes/Polyline.min.mjs +1 -1
  304. package/dist/src/shapes/Polyline.min.mjs.map +1 -1
  305. package/dist/src/shapes/Polyline.mjs +10 -2
  306. package/dist/src/shapes/Polyline.mjs.map +1 -1
  307. package/dist/src/shapes/Rect.min.mjs.map +1 -1
  308. package/dist/src/shapes/Rect.mjs.map +1 -1
  309. package/dist/src/shapes/Text/StyledText.min.mjs.map +1 -1
  310. package/dist/src/shapes/Text/StyledText.mjs.map +1 -1
  311. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  312. package/dist/src/shapes/Text/Text.mjs +1 -1
  313. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  314. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  315. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  316. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  317. package/dist/src/shapes/Textbox.mjs.map +1 -1
  318. package/dist/src/shapes/Triangle.min.mjs.map +1 -1
  319. package/dist/src/shapes/Triangle.mjs.map +1 -1
  320. package/dist/src/util/animation/AnimationBase.min.mjs.map +1 -1
  321. package/dist/src/util/animation/AnimationBase.mjs.map +1 -1
  322. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +1 -1
  323. package/dist/src/util/animation/AnimationRegistry.mjs.map +1 -1
  324. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +1 -1
  325. package/dist/src/util/animation/ArrayAnimation.mjs.map +1 -1
  326. package/dist/src/util/animation/ColorAnimation.min.mjs.map +1 -1
  327. package/dist/src/util/animation/ColorAnimation.mjs.map +1 -1
  328. package/dist/src/util/animation/ValueAnimation.min.mjs.map +1 -1
  329. package/dist/src/util/animation/ValueAnimation.mjs.map +1 -1
  330. package/dist/src/util/animation/animate.d.ts.map +1 -1
  331. package/dist/src/util/animation/animate.min.mjs.map +1 -1
  332. package/dist/src/util/animation/animate.mjs.map +1 -1
  333. package/dist/src/util/animation/easing.min.mjs.map +1 -1
  334. package/dist/src/util/animation/easing.mjs.map +1 -1
  335. package/dist/src/util/animation/types.d.ts.map +1 -1
  336. package/dist/src/util/applyMixins.min.mjs.map +1 -1
  337. package/dist/src/util/applyMixins.mjs.map +1 -1
  338. package/dist/src/util/dom_style.min.mjs.map +1 -1
  339. package/dist/src/util/dom_style.mjs.map +1 -1
  340. package/dist/src/util/internals/cloneDeep.d.ts +6 -0
  341. package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
  342. package/dist/src/util/internals/cloneStyles.d.ts +3 -0
  343. package/dist/src/util/internals/cloneStyles.d.ts.map +1 -0
  344. package/dist/src/util/internals/cloneStyles.min.mjs +2 -0
  345. package/dist/src/util/internals/cloneStyles.min.mjs.map +1 -0
  346. package/dist/src/util/internals/cloneStyles.mjs +15 -0
  347. package/dist/src/util/internals/cloneStyles.mjs.map +1 -0
  348. package/dist/src/util/internals/findRight.min.mjs.map +1 -1
  349. package/dist/src/util/internals/findRight.mjs.map +1 -1
  350. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +1 -1
  351. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +1 -1
  352. package/dist/src/util/misc/dom.min.mjs.map +1 -1
  353. package/dist/src/util/misc/dom.mjs.map +1 -1
  354. package/dist/src/util/misc/findScaleTo.min.mjs.map +1 -1
  355. package/dist/src/util/misc/findScaleTo.mjs.map +1 -1
  356. package/dist/src/util/misc/groupSVGElements.min.mjs.map +1 -1
  357. package/dist/src/util/misc/groupSVGElements.mjs.map +1 -1
  358. package/dist/src/util/misc/isTransparent.min.mjs.map +1 -1
  359. package/dist/src/util/misc/isTransparent.mjs.map +1 -1
  360. package/dist/src/util/misc/matrix.min.mjs.map +1 -1
  361. package/dist/src/util/misc/matrix.mjs.map +1 -1
  362. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  363. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  364. package/dist/src/util/misc/objectTransforms.min.mjs.map +1 -1
  365. package/dist/src/util/misc/objectTransforms.mjs.map +1 -1
  366. package/dist/src/util/misc/pick.min.mjs.map +1 -1
  367. package/dist/src/util/misc/pick.mjs.map +1 -1
  368. package/dist/src/util/misc/planeChange.min.mjs.map +1 -1
  369. package/dist/src/util/misc/planeChange.mjs.map +1 -1
  370. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +1 -1
  371. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +1 -1
  372. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +1 -1
  373. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +1 -1
  374. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +1 -1
  375. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +1 -1
  376. package/dist/src/util/misc/projectStroke/index.min.mjs.map +1 -1
  377. package/dist/src/util/misc/projectStroke/index.mjs.map +1 -1
  378. package/dist/src/util/misc/resolveOrigin.min.mjs.map +1 -1
  379. package/dist/src/util/misc/resolveOrigin.mjs.map +1 -1
  380. package/dist/src/util/misc/rotatePoint.min.mjs.map +1 -1
  381. package/dist/src/util/misc/rotatePoint.mjs.map +1 -1
  382. package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
  383. package/dist/src/util/misc/svgParsing.mjs.map +1 -1
  384. package/dist/src/util/misc/textStyles.min.mjs +1 -1
  385. package/dist/src/util/misc/textStyles.min.mjs.map +1 -1
  386. package/dist/src/util/misc/textStyles.mjs +3 -3
  387. package/dist/src/util/misc/textStyles.mjs.map +1 -1
  388. package/dist/src/util/misc/vectors.min.mjs.map +1 -1
  389. package/dist/src/util/misc/vectors.mjs.map +1 -1
  390. package/dist/src/util/path/index.min.mjs.map +1 -1
  391. package/dist/src/util/path/index.mjs.map +1 -1
  392. package/dist/src/util/path/typedefs.d.ts.map +1 -1
  393. package/dist/src/util/transform_matrix_removal.min.mjs.map +1 -1
  394. package/dist/src/util/transform_matrix_removal.mjs.map +1 -1
  395. package/dist/src/util/typeAssertions.min.mjs.map +1 -1
  396. package/dist/src/util/typeAssertions.mjs.map +1 -1
  397. package/dist-extensions/aligning_guidelines/constant.mjs +11 -0
  398. package/dist-extensions/aligning_guidelines/constant.mjs.map +1 -0
  399. package/dist-extensions/aligning_guidelines/index.mjs +130 -0
  400. package/dist-extensions/aligning_guidelines/index.mjs.map +1 -0
  401. package/dist-extensions/aligning_guidelines/util/basic.mjs +11 -0
  402. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +1 -0
  403. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +193 -0
  404. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +1 -0
  405. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +102 -0
  406. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +1 -0
  407. package/dist-extensions/aligning_guidelines/util/draw.mjs +75 -0
  408. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +1 -0
  409. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +42 -0
  410. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +1 -0
  411. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +3 -0
  412. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +1 -0
  413. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +5 -0
  414. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +1 -0
  415. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +33 -0
  416. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +1 -0
  417. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +4 -0
  418. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +1 -0
  419. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +13 -0
  420. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +1 -0
  421. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +20 -0
  422. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +1 -0
  423. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +6 -0
  424. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +1 -0
  425. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +3 -0
  426. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +1 -0
  427. package/dist-extensions/extensions/index.d.ts +2 -0
  428. package/dist-extensions/extensions/index.d.ts.map +1 -0
  429. package/dist-extensions/fabric-extensions.min.js +2 -0
  430. package/dist-extensions/fabric-extensions.min.js.map +1 -0
  431. package/dist-extensions/fabric.d.ts +119 -0
  432. package/dist-extensions/fabric.d.ts.map +1 -0
  433. package/dist-extensions/index.d.ts +2 -0
  434. package/dist-extensions/index.d.ts.map +1 -0
  435. package/dist-extensions/index.mjs +2 -0
  436. package/dist-extensions/index.mjs.map +1 -0
  437. package/dist-extensions/src/ClassRegistry.d.ts +14 -0
  438. package/dist-extensions/src/ClassRegistry.d.ts.map +1 -0
  439. package/dist-extensions/src/Collection.d.ts +141 -0
  440. package/dist-extensions/src/Collection.d.ts.map +1 -0
  441. package/dist-extensions/src/CommonMethods.d.ts +32 -0
  442. package/dist-extensions/src/CommonMethods.d.ts.map +1 -0
  443. package/dist-extensions/src/EventTypeDefs.d.ts +286 -0
  444. package/dist-extensions/src/EventTypeDefs.d.ts.map +1 -0
  445. package/dist-extensions/src/Intersection.d.ts +120 -0
  446. package/dist-extensions/src/Intersection.d.ts.map +1 -0
  447. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +22 -0
  448. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +1 -0
  449. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +56 -0
  450. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +1 -0
  451. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +13 -0
  452. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +1 -0
  453. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +14 -0
  454. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +1 -0
  455. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +14 -0
  456. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +1 -0
  457. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +30 -0
  458. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +1 -0
  459. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +10 -0
  460. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +1 -0
  461. package/dist-extensions/src/LayoutManager/constants.d.ts +7 -0
  462. package/dist-extensions/src/LayoutManager/constants.d.ts.map +1 -0
  463. package/dist-extensions/src/LayoutManager/index.d.ts +7 -0
  464. package/dist-extensions/src/LayoutManager/index.d.ts.map +1 -0
  465. package/dist-extensions/src/LayoutManager/types.d.ts +106 -0
  466. package/dist-extensions/src/LayoutManager/types.d.ts.map +1 -0
  467. package/dist-extensions/src/Observable.d.ts +68 -0
  468. package/dist-extensions/src/Observable.d.ts.map +1 -0
  469. package/dist-extensions/src/Pattern/Pattern.d.ts +99 -0
  470. package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -0
  471. package/dist-extensions/src/Pattern/index.d.ts +3 -0
  472. package/dist-extensions/src/Pattern/index.d.ts.map +1 -0
  473. package/dist-extensions/src/Pattern/types.d.ts +12 -0
  474. package/dist-extensions/src/Pattern/types.d.ts.map +1 -0
  475. package/dist-extensions/src/Point.d.ts +233 -0
  476. package/dist-extensions/src/Point.d.ts.map +1 -0
  477. package/dist-extensions/src/Shadow.d.ts +95 -0
  478. package/dist-extensions/src/Shadow.d.ts.map +1 -0
  479. package/dist-extensions/src/brushes/BaseBrush.d.ts +101 -0
  480. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +1 -0
  481. package/dist-extensions/src/brushes/CircleBrush.d.ts +44 -0
  482. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +1 -0
  483. package/dist-extensions/src/brushes/PatternBrush.d.ts +23 -0
  484. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +1 -0
  485. package/dist-extensions/src/brushes/PencilBrush.d.ts +92 -0
  486. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +1 -0
  487. package/dist-extensions/src/brushes/SprayBrush.d.ts +74 -0
  488. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +1 -0
  489. package/dist-extensions/src/brushes/typedefs.d.ts +18 -0
  490. package/dist-extensions/src/brushes/typedefs.d.ts.map +1 -0
  491. package/dist-extensions/src/cache.d.ts +47 -0
  492. package/dist-extensions/src/cache.d.ts.map +1 -0
  493. package/dist-extensions/src/canvas/Canvas.d.ts +339 -0
  494. package/dist-extensions/src/canvas/Canvas.d.ts.map +1 -0
  495. package/dist-extensions/src/canvas/CanvasOptions.d.ts +229 -0
  496. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +1 -0
  497. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +29 -0
  498. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +1 -0
  499. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +29 -0
  500. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +1 -0
  501. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +24 -0
  502. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +1 -0
  503. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +534 -0
  504. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +1 -0
  505. package/dist-extensions/src/canvas/StaticCanvas.d.ts +639 -0
  506. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -0
  507. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +153 -0
  508. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +1 -0
  509. package/dist-extensions/src/canvas/TextEditingManager.d.ts +21 -0
  510. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +1 -0
  511. package/dist-extensions/src/color/Color.d.ts +162 -0
  512. package/dist-extensions/src/color/Color.d.ts.map +1 -0
  513. package/dist-extensions/src/color/color_map.d.ts +155 -0
  514. package/dist-extensions/src/color/color_map.d.ts.map +1 -0
  515. package/dist-extensions/src/color/constants.d.ts +111 -0
  516. package/dist-extensions/src/color/constants.d.ts.map +1 -0
  517. package/dist-extensions/src/color/typedefs.d.ts +16 -0
  518. package/dist-extensions/src/color/typedefs.d.ts.map +1 -0
  519. package/dist-extensions/src/color/util.d.ts +27 -0
  520. package/dist-extensions/src/color/util.d.ts.map +1 -0
  521. package/dist-extensions/src/config.d.ts +115 -0
  522. package/dist-extensions/src/config.d.ts.map +1 -0
  523. package/dist-extensions/src/constants.d.ts +35 -0
  524. package/dist-extensions/src/constants.d.ts.map +1 -0
  525. package/dist-extensions/src/controls/Control.d.ts +229 -0
  526. package/dist-extensions/src/controls/Control.d.ts.map +1 -0
  527. package/dist-extensions/src/controls/changeWidth.d.ts +13 -0
  528. package/dist-extensions/src/controls/changeWidth.d.ts.map +1 -0
  529. package/dist-extensions/src/controls/commonControls.d.ts +28 -0
  530. package/dist-extensions/src/controls/commonControls.d.ts.map +1 -0
  531. package/dist-extensions/src/controls/controlRendering.d.ts +29 -0
  532. package/dist-extensions/src/controls/controlRendering.d.ts.map +1 -0
  533. package/dist-extensions/src/controls/drag.d.ts +12 -0
  534. package/dist-extensions/src/controls/drag.d.ts.map +1 -0
  535. package/dist-extensions/src/controls/fireEvent.d.ts +3 -0
  536. package/dist-extensions/src/controls/fireEvent.d.ts.map +1 -0
  537. package/dist-extensions/src/controls/index.d.ts +14 -0
  538. package/dist-extensions/src/controls/index.d.ts.map +1 -0
  539. package/dist-extensions/src/controls/pathControl.d.ts +12 -0
  540. package/dist-extensions/src/controls/pathControl.d.ts.map +1 -0
  541. package/dist-extensions/src/controls/polyControl.d.ts +30 -0
  542. package/dist-extensions/src/controls/polyControl.d.ts.map +1 -0
  543. package/dist-extensions/src/controls/rotate.d.ts +12 -0
  544. package/dist-extensions/src/controls/rotate.d.ts.map +1 -0
  545. package/dist-extensions/src/controls/scale.d.ts +47 -0
  546. package/dist-extensions/src/controls/scale.d.ts.map +1 -0
  547. package/dist-extensions/src/controls/scaleSkew.d.ts +39 -0
  548. package/dist-extensions/src/controls/scaleSkew.d.ts.map +1 -0
  549. package/dist-extensions/src/controls/skew.d.ts +33 -0
  550. package/dist-extensions/src/controls/skew.d.ts.map +1 -0
  551. package/dist-extensions/src/controls/util.d.ts +41 -0
  552. package/dist-extensions/src/controls/util.d.ts.map +1 -0
  553. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +10 -0
  554. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +1 -0
  555. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  556. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +1 -0
  557. package/dist-extensions/src/env/browser.d.ts +3 -0
  558. package/dist-extensions/src/env/browser.d.ts.map +1 -0
  559. package/dist-extensions/src/env/index.d.ts +34 -0
  560. package/dist-extensions/src/env/index.d.ts.map +1 -0
  561. package/dist-extensions/src/env/types.d.ts +16 -0
  562. package/dist-extensions/src/env/types.d.ts.map +1 -0
  563. package/dist-extensions/src/filters/BaseFilter.d.ts +153 -0
  564. package/dist-extensions/src/filters/BaseFilter.d.ts.map +1 -0
  565. package/dist-extensions/src/filters/BlendColor.d.ts +68 -0
  566. package/dist-extensions/src/filters/BlendColor.d.ts.map +1 -0
  567. package/dist-extensions/src/filters/BlendImage.d.ts +99 -0
  568. package/dist-extensions/src/filters/BlendImage.d.ts.map +1 -0
  569. package/dist-extensions/src/filters/Blur.d.ts +50 -0
  570. package/dist-extensions/src/filters/Blur.d.ts.map +1 -0
  571. package/dist-extensions/src/filters/Brightness.d.ts +46 -0
  572. package/dist-extensions/src/filters/Brightness.d.ts.map +1 -0
  573. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  574. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +1 -0
  575. package/dist-extensions/src/filters/ColorMatrix.d.ts +66 -0
  576. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +1 -0
  577. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +15 -0
  578. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +1 -0
  579. package/dist-extensions/src/filters/Composed.d.ts +47 -0
  580. package/dist-extensions/src/filters/Composed.d.ts.map +1 -0
  581. package/dist-extensions/src/filters/Contrast.d.ts +44 -0
  582. package/dist-extensions/src/filters/Contrast.d.ts.map +1 -0
  583. package/dist-extensions/src/filters/Convolute.d.ts +81 -0
  584. package/dist-extensions/src/filters/Convolute.d.ts.map +1 -0
  585. package/dist-extensions/src/filters/FilterBackend.d.ts +15 -0
  586. package/dist-extensions/src/filters/FilterBackend.d.ts.map +1 -0
  587. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +7 -0
  588. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +1 -0
  589. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  590. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +1 -0
  591. package/dist-extensions/src/filters/Gamma.d.ts +58 -0
  592. package/dist-extensions/src/filters/Gamma.d.ts.map +1 -0
  593. package/dist-extensions/src/filters/Grayscale.d.ts +44 -0
  594. package/dist-extensions/src/filters/Grayscale.d.ts.map +1 -0
  595. package/dist-extensions/src/filters/HueRotation.d.ts +31 -0
  596. package/dist-extensions/src/filters/HueRotation.d.ts.map +1 -0
  597. package/dist-extensions/src/filters/Invert.d.ts +53 -0
  598. package/dist-extensions/src/filters/Invert.d.ts.map +1 -0
  599. package/dist-extensions/src/filters/Noise.d.ts +44 -0
  600. package/dist-extensions/src/filters/Noise.d.ts.map +1 -0
  601. package/dist-extensions/src/filters/Pixelate.d.ts +41 -0
  602. package/dist-extensions/src/filters/Pixelate.d.ts.map +1 -0
  603. package/dist-extensions/src/filters/RemoveColor.d.ts +53 -0
  604. package/dist-extensions/src/filters/RemoveColor.d.ts.map +1 -0
  605. package/dist-extensions/src/filters/Resize.d.ts +137 -0
  606. package/dist-extensions/src/filters/Resize.d.ts.map +1 -0
  607. package/dist-extensions/src/filters/Saturation.d.ts +46 -0
  608. package/dist-extensions/src/filters/Saturation.d.ts.map +1 -0
  609. package/dist-extensions/src/filters/Vibrance.d.ts +46 -0
  610. package/dist-extensions/src/filters/Vibrance.d.ts.map +1 -0
  611. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +131 -0
  612. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +1 -0
  613. package/dist-extensions/src/filters/filters.d.ts +23 -0
  614. package/dist-extensions/src/filters/filters.d.ts.map +1 -0
  615. package/dist-extensions/src/filters/index.d.ts +7 -0
  616. package/dist-extensions/src/filters/index.d.ts.map +1 -0
  617. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +4 -0
  618. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +1 -0
  619. package/dist-extensions/src/filters/shaders/blendColor.d.ts +13 -0
  620. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +1 -0
  621. package/dist-extensions/src/filters/shaders/blendImage.d.ts +4 -0
  622. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +1 -0
  623. package/dist-extensions/src/filters/shaders/blur.d.ts +2 -0
  624. package/dist-extensions/src/filters/shaders/blur.d.ts.map +1 -0
  625. package/dist-extensions/src/filters/shaders/brightness.d.ts +2 -0
  626. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +1 -0
  627. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +2 -0
  628. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +1 -0
  629. package/dist-extensions/src/filters/shaders/constrast.d.ts +2 -0
  630. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +1 -0
  631. package/dist-extensions/src/filters/shaders/convolute.d.ts +11 -0
  632. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +1 -0
  633. package/dist-extensions/src/filters/shaders/gamma.d.ts +2 -0
  634. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +1 -0
  635. package/dist-extensions/src/filters/shaders/grayscale.d.ts +3 -0
  636. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +1 -0
  637. package/dist-extensions/src/filters/shaders/invert.d.ts +2 -0
  638. package/dist-extensions/src/filters/shaders/invert.d.ts.map +1 -0
  639. package/dist-extensions/src/filters/shaders/noise.d.ts +2 -0
  640. package/dist-extensions/src/filters/shaders/noise.d.ts.map +1 -0
  641. package/dist-extensions/src/filters/shaders/pixelate.d.ts +2 -0
  642. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +1 -0
  643. package/dist-extensions/src/filters/shaders/removeColor.d.ts +2 -0
  644. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +1 -0
  645. package/dist-extensions/src/filters/shaders/saturation.d.ts +2 -0
  646. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +1 -0
  647. package/dist-extensions/src/filters/shaders/vibrance.d.ts +2 -0
  648. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +1 -0
  649. package/dist-extensions/src/filters/typedefs.d.ts +70 -0
  650. package/dist-extensions/src/filters/typedefs.d.ts.map +1 -0
  651. package/dist-extensions/src/filters/utils.d.ts +10 -0
  652. package/dist-extensions/src/filters/utils.d.ts.map +1 -0
  653. package/dist-extensions/src/gradient/Gradient.d.ts +156 -0
  654. package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -0
  655. package/dist-extensions/src/gradient/constants.d.ts +15 -0
  656. package/dist-extensions/src/gradient/constants.d.ts.map +1 -0
  657. package/dist-extensions/src/gradient/index.d.ts +3 -0
  658. package/dist-extensions/src/gradient/index.d.ts.map +1 -0
  659. package/dist-extensions/src/gradient/parser/misc.d.ts +4 -0
  660. package/dist-extensions/src/gradient/parser/misc.d.ts.map +1 -0
  661. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +3 -0
  662. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +1 -0
  663. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +17 -0
  664. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +1 -0
  665. package/dist-extensions/src/gradient/typedefs.d.ts +93 -0
  666. package/dist-extensions/src/gradient/typedefs.d.ts.map +1 -0
  667. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +13 -0
  668. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +1 -0
  669. package/dist-extensions/src/parser/attributes.d.ts +6 -0
  670. package/dist-extensions/src/parser/attributes.d.ts.map +1 -0
  671. package/dist-extensions/src/parser/constants.d.ts +41 -0
  672. package/dist-extensions/src/parser/constants.d.ts.map +1 -0
  673. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +2 -0
  674. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +1 -0
  675. package/dist-extensions/src/parser/elementMatchesRule.d.ts +5 -0
  676. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +1 -0
  677. package/dist-extensions/src/parser/elements_parser.d.ts +33 -0
  678. package/dist-extensions/src/parser/elements_parser.d.ts.map +1 -0
  679. package/dist-extensions/src/parser/getCSSRules.d.ts +8 -0
  680. package/dist-extensions/src/parser/getCSSRules.d.ts.map +1 -0
  681. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +6 -0
  682. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +1 -0
  683. package/dist-extensions/src/parser/getGradientDefs.d.ts +7 -0
  684. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +1 -0
  685. package/dist-extensions/src/parser/getMultipleNodes.d.ts +2 -0
  686. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +1 -0
  687. package/dist-extensions/src/parser/getSvgRegex.d.ts +2 -0
  688. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +1 -0
  689. package/dist-extensions/src/parser/getTagName.d.ts +2 -0
  690. package/dist-extensions/src/parser/getTagName.d.ts.map +1 -0
  691. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +2 -0
  692. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +1 -0
  693. package/dist-extensions/src/parser/loadSVGFromString.d.ts +18 -0
  694. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +1 -0
  695. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +19 -0
  696. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +1 -0
  697. package/dist-extensions/src/parser/normalizeAttr.d.ts +3 -0
  698. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +1 -0
  699. package/dist-extensions/src/parser/normalizeValue.d.ts +2 -0
  700. package/dist-extensions/src/parser/normalizeValue.d.ts.map +1 -0
  701. package/dist-extensions/src/parser/parseAttributes.d.ts +10 -0
  702. package/dist-extensions/src/parser/parseAttributes.d.ts.map +1 -0
  703. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +10 -0
  704. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +1 -0
  705. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +10 -0
  706. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +1 -0
  707. package/dist-extensions/src/parser/parseSVGDocument.d.ts +22 -0
  708. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +1 -0
  709. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +9 -0
  710. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +1 -0
  711. package/dist-extensions/src/parser/parseStyleObject.d.ts +8 -0
  712. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +1 -0
  713. package/dist-extensions/src/parser/parseStyleString.d.ts +8 -0
  714. package/dist-extensions/src/parser/parseStyleString.d.ts.map +1 -0
  715. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +11 -0
  716. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +1 -0
  717. package/dist-extensions/src/parser/parseUseDirectives.d.ts +2 -0
  718. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +1 -0
  719. package/dist-extensions/src/parser/percent.d.ts +9 -0
  720. package/dist-extensions/src/parser/percent.d.ts.map +1 -0
  721. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  722. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +1 -0
  723. package/dist-extensions/src/parser/selectorMatches.d.ts +2 -0
  724. package/dist-extensions/src/parser/selectorMatches.d.ts.map +1 -0
  725. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +6 -0
  726. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +1 -0
  727. package/dist-extensions/src/parser/typedefs.d.ts +10 -0
  728. package/dist-extensions/src/parser/typedefs.d.ts.map +1 -0
  729. package/dist-extensions/src/shapes/ActiveSelection.d.ts +109 -0
  730. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +1 -0
  731. package/dist-extensions/src/shapes/Circle.d.ts +111 -0
  732. package/dist-extensions/src/shapes/Circle.d.ts.map +1 -0
  733. package/dist-extensions/src/shapes/Ellipse.d.ts +88 -0
  734. package/dist-extensions/src/shapes/Ellipse.d.ts.map +1 -0
  735. package/dist-extensions/src/shapes/Group.d.ts +303 -0
  736. package/dist-extensions/src/shapes/Group.d.ts.map +1 -0
  737. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  738. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -0
  739. package/dist-extensions/src/shapes/IText/IText.d.ts +314 -0
  740. package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -0
  741. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +299 -0
  742. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +1 -0
  743. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  744. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +1 -0
  745. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +198 -0
  746. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +1 -0
  747. package/dist-extensions/src/shapes/IText/constants.d.ts +13 -0
  748. package/dist-extensions/src/shapes/IText/constants.d.ts.map +1 -0
  749. package/dist-extensions/src/shapes/Image.d.ts +312 -0
  750. package/dist-extensions/src/shapes/Image.d.ts.map +1 -0
  751. package/dist-extensions/src/shapes/Line.d.ts +122 -0
  752. package/dist-extensions/src/shapes/Line.d.ts.map +1 -0
  753. package/dist-extensions/src/shapes/Object/AnimatableObject.d.ts +33 -0
  754. package/dist-extensions/src/shapes/Object/AnimatableObject.d.ts.map +1 -0
  755. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +11 -0
  756. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +1 -0
  757. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +72 -0
  758. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -0
  759. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +317 -0
  760. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -0
  761. package/dist-extensions/src/shapes/Object/Object.d.ts +614 -0
  762. package/dist-extensions/src/shapes/Object/Object.d.ts.map +1 -0
  763. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +237 -0
  764. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +1 -0
  765. package/dist-extensions/src/shapes/Object/ObjectOrigin.d.ts +96 -0
  766. package/dist-extensions/src/shapes/Object/ObjectOrigin.d.ts.map +1 -0
  767. package/dist-extensions/src/shapes/Object/StackedObject.d.ts +60 -0
  768. package/dist-extensions/src/shapes/Object/StackedObject.d.ts.map +1 -0
  769. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +8 -0
  770. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +1 -0
  771. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +88 -0
  772. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +1 -0
  773. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +37 -0
  774. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +1 -0
  775. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +63 -0
  776. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +1 -0
  777. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +66 -0
  778. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -0
  779. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  780. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +1 -0
  781. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  782. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +1 -0
  783. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +43 -0
  784. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +1 -0
  785. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +34 -0
  786. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +1 -0
  787. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  788. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +1 -0
  789. package/dist-extensions/src/shapes/Object/types/index.d.ts +6 -0
  790. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +1 -0
  791. package/dist-extensions/src/shapes/Path.d.ts +215 -0
  792. package/dist-extensions/src/shapes/Path.d.ts.map +1 -0
  793. package/dist-extensions/src/shapes/Polygon.d.ts +7 -0
  794. package/dist-extensions/src/shapes/Polygon.d.ts.map +1 -0
  795. package/dist-extensions/src/shapes/Polyline.d.ts +156 -0
  796. package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -0
  797. package/dist-extensions/src/shapes/Rect.d.ts +83 -0
  798. package/dist-extensions/src/shapes/Rect.d.ts.map +1 -0
  799. package/dist-extensions/src/shapes/Text/StyledText.d.ts +128 -0
  800. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +1 -0
  801. package/dist-extensions/src/shapes/Text/Text.d.ts +697 -0
  802. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -0
  803. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +47 -0
  804. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -0
  805. package/dist-extensions/src/shapes/Text/constants.d.ts +13 -0
  806. package/dist-extensions/src/shapes/Text/constants.d.ts.map +1 -0
  807. package/dist-extensions/src/shapes/Textbox.d.ts +226 -0
  808. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -0
  809. package/dist-extensions/src/shapes/Triangle.d.ts +27 -0
  810. package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -0
  811. package/dist-extensions/src/typedefs.d.ts +97 -0
  812. package/dist-extensions/src/typedefs.d.ts.map +1 -0
  813. package/dist-extensions/src/util/animation/AnimationBase.d.ts +54 -0
  814. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +1 -0
  815. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  816. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +1 -0
  817. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +29 -0
  818. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +1 -0
  819. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +10 -0
  820. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +1 -0
  821. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +11 -0
  822. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +1 -0
  823. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +10 -0
  824. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +1 -0
  825. package/dist-extensions/src/util/animation/animate.d.ts +37 -0
  826. package/dist-extensions/src/util/animation/animate.d.ts.map +1 -0
  827. package/dist-extensions/src/util/animation/easing.d.ts +130 -0
  828. package/dist-extensions/src/util/animation/easing.d.ts.map +1 -0
  829. package/dist-extensions/src/util/animation/index.d.ts +3 -0
  830. package/dist-extensions/src/util/animation/index.d.ts.map +1 -0
  831. package/dist-extensions/src/util/animation/types.d.ts +87 -0
  832. package/dist-extensions/src/util/animation/types.d.ts.map +1 -0
  833. package/dist-extensions/src/util/applyMixins.d.ts +8 -0
  834. package/dist-extensions/src/util/applyMixins.d.ts.map +1 -0
  835. package/dist-extensions/src/util/dom_event.d.ts +6 -0
  836. package/dist-extensions/src/util/dom_event.d.ts.map +1 -0
  837. package/dist-extensions/src/util/dom_misc.d.ts +12 -0
  838. package/dist-extensions/src/util/dom_misc.d.ts.map +1 -0
  839. package/dist-extensions/src/util/dom_style.d.ts +7 -0
  840. package/dist-extensions/src/util/dom_style.d.ts.map +1 -0
  841. package/dist-extensions/src/util/index.d.ts +37 -0
  842. package/dist-extensions/src/util/index.d.ts.map +1 -0
  843. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +2 -0
  844. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +1 -0
  845. package/dist-extensions/src/util/internals/cloneStyles.d.ts +3 -0
  846. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +1 -0
  847. package/dist-extensions/src/util/internals/console.d.ts +8 -0
  848. package/dist-extensions/src/util/internals/console.d.ts.map +1 -0
  849. package/dist-extensions/src/util/internals/dom_request.d.ts +16 -0
  850. package/dist-extensions/src/util/internals/dom_request.d.ts.map +1 -0
  851. package/dist-extensions/src/util/internals/findRight.d.ts +2 -0
  852. package/dist-extensions/src/util/internals/findRight.d.ts.map +1 -0
  853. package/dist-extensions/src/util/internals/getRandomInt.d.ts +8 -0
  854. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +1 -0
  855. package/dist-extensions/src/util/internals/ifNaN.d.ts +8 -0
  856. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +1 -0
  857. package/dist-extensions/src/util/internals/removeFromArray.d.ts +9 -0
  858. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +1 -0
  859. package/dist-extensions/src/util/internals/uid.d.ts +2 -0
  860. package/dist-extensions/src/util/internals/uid.d.ts.map +1 -0
  861. package/dist-extensions/src/util/lang_string.d.ts +22 -0
  862. package/dist-extensions/src/util/lang_string.d.ts.map +1 -0
  863. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  864. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +1 -0
  865. package/dist-extensions/src/util/misc/capValue.d.ts +2 -0
  866. package/dist-extensions/src/util/misc/capValue.d.ts.map +1 -0
  867. package/dist-extensions/src/util/misc/cos.d.ts +10 -0
  868. package/dist-extensions/src/util/misc/cos.d.ts.map +1 -0
  869. package/dist-extensions/src/util/misc/dom.d.ts +28 -0
  870. package/dist-extensions/src/util/misc/dom.d.ts.map +1 -0
  871. package/dist-extensions/src/util/misc/findScaleTo.d.ts +20 -0
  872. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +1 -0
  873. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +11 -0
  874. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +1 -0
  875. package/dist-extensions/src/util/misc/isTransparent.d.ts +11 -0
  876. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +1 -0
  877. package/dist-extensions/src/util/misc/matrix.d.ts +170 -0
  878. package/dist-extensions/src/util/misc/matrix.d.ts.map +1 -0
  879. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +23 -0
  880. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +1 -0
  881. package/dist-extensions/src/util/misc/objectEnlive.d.ts +45 -0
  882. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +1 -0
  883. package/dist-extensions/src/util/misc/objectTransforms.d.ts +62 -0
  884. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +1 -0
  885. package/dist-extensions/src/util/misc/pick.d.ts +9 -0
  886. package/dist-extensions/src/util/misc/pick.d.ts.map +1 -0
  887. package/dist-extensions/src/util/misc/planeChange.d.ts +64 -0
  888. package/dist-extensions/src/util/misc/planeChange.d.ts.map +1 -0
  889. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +52 -0
  890. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +1 -0
  891. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +90 -0
  892. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +1 -0
  893. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +27 -0
  894. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +1 -0
  895. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +12 -0
  896. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +1 -0
  897. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +23 -0
  898. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +1 -0
  899. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  900. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +1 -0
  901. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +9 -0
  902. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +1 -0
  903. package/dist-extensions/src/util/misc/rotatePoint.d.ts +12 -0
  904. package/dist-extensions/src/util/misc/rotatePoint.d.ts.map +1 -0
  905. package/dist-extensions/src/util/misc/sin.d.ts +10 -0
  906. package/dist-extensions/src/util/misc/sin.d.ts.map +1 -0
  907. package/dist-extensions/src/util/misc/svgParsing.d.ts +46 -0
  908. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -0
  909. package/dist-extensions/src/util/misc/textStyles.d.ts +32 -0
  910. package/dist-extensions/src/util/misc/textStyles.d.ts.map +1 -0
  911. package/dist-extensions/src/util/misc/toFixed.d.ts +8 -0
  912. package/dist-extensions/src/util/misc/toFixed.d.ts.map +1 -0
  913. package/dist-extensions/src/util/misc/vectors.d.ts +72 -0
  914. package/dist-extensions/src/util/misc/vectors.d.ts.map +1 -0
  915. package/dist-extensions/src/util/path/index.d.ts +95 -0
  916. package/dist-extensions/src/util/path/index.d.ts.map +1 -0
  917. package/dist-extensions/src/util/path/regex.d.ts +2 -0
  918. package/dist-extensions/src/util/path/regex.d.ts.map +1 -0
  919. package/dist-extensions/src/util/path/typedefs.d.ts +221 -0
  920. package/dist-extensions/src/util/path/typedefs.d.ts.map +1 -0
  921. package/dist-extensions/src/util/transform_matrix_removal.d.ts +14 -0
  922. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +1 -0
  923. package/dist-extensions/src/util/typeAssertions.d.ts +13 -0
  924. package/dist-extensions/src/util/typeAssertions.d.ts.map +1 -0
  925. package/eslint.config.mjs +108 -0
  926. package/extensions/README.MD +27 -0
  927. package/extensions/aligning_guidelines/README.MD +22 -0
  928. package/extensions/aligning_guidelines/constant.ts +10 -0
  929. package/extensions/aligning_guidelines/index.ts +166 -0
  930. package/extensions/aligning_guidelines/typedefs.ts +36 -0
  931. package/extensions/aligning_guidelines/util/basic.spec.ts +31 -0
  932. package/extensions/aligning_guidelines/util/basic.ts +20 -0
  933. package/extensions/aligning_guidelines/util/collect-line.ts +172 -0
  934. package/extensions/aligning_guidelines/util/collect-point.ts +83 -0
  935. package/extensions/aligning_guidelines/util/draw.ts +74 -0
  936. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +45 -0
  937. package/extensions/index.ts +4 -0
  938. package/jest.config.js +1 -1
  939. package/jest.extend.ts +14 -15
  940. package/package.json +17 -12
  941. package/playwright.setup.ts +5 -5
  942. package/rollup.config.mjs +46 -4
  943. package/scripts/build.mjs +1 -1
  944. package/scripts/buildLock.mjs +5 -5
  945. package/scripts/buildStats.mjs +2 -2
  946. package/scripts/git.mjs +1 -1
  947. package/scripts/index.mjs +34 -32
  948. package/scripts/sandbox.mjs +15 -15
  949. package/src/ClassRegistry.spec.ts +1 -1
  950. package/src/ClassRegistry.ts +1 -1
  951. package/src/Collection.ts +9 -9
  952. package/src/EventTypeDefs.ts +2 -2
  953. package/src/Intersection.spec.ts +2 -2
  954. package/src/Intersection.ts +11 -11
  955. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +3 -3
  956. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +2 -2
  957. package/src/LayoutManager/LayoutManager.spec.ts +17 -17
  958. package/src/LayoutManager/LayoutManager.ts +15 -15
  959. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +3 -3
  960. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +1 -1
  961. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +4 -4
  962. package/src/LayoutManager/LayoutStrategies/utils.ts +4 -4
  963. package/src/LayoutManager/types.ts +12 -13
  964. package/src/Observable.ts +7 -7
  965. package/src/Pattern/Pattern.ts +20 -10
  966. package/src/Point.ts +3 -3
  967. package/src/Shadow.ts +7 -7
  968. package/src/brushes/CircleBrush.ts +1 -1
  969. package/src/brushes/PatternBrush.ts +1 -1
  970. package/src/brushes/PencilBrush.ts +1 -1
  971. package/src/brushes/SprayBrush.ts +3 -3
  972. package/src/canvas/Canvas.ts +38 -35
  973. package/src/canvas/DOMManagers/CanvasDOMManager.ts +2 -2
  974. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +1 -1
  975. package/src/canvas/DOMManagers/util.ts +2 -2
  976. package/src/canvas/SelectableCanvas.spec.ts +8 -8
  977. package/src/canvas/SelectableCanvas.ts +20 -20
  978. package/src/canvas/StaticCanvas.ts +44 -43
  979. package/src/canvas/StaticCanvasOptions.ts +0 -1
  980. package/src/canvas/TextEditingManager.ts +1 -1
  981. package/src/canvas/__tests__/eventData.test.ts +17 -17
  982. package/src/color/Color.ts +3 -2
  983. package/src/color/color.test.ts +2 -2
  984. package/src/color/typedefs.ts +1 -1
  985. package/src/color/util.ts +1 -1
  986. package/src/config.ts +1 -1
  987. package/src/controls/Control.spec.ts +8 -8
  988. package/src/controls/Control.ts +14 -14
  989. package/src/controls/changeWidth.test.ts +2 -2
  990. package/src/controls/changeWidth.ts +4 -4
  991. package/src/controls/controlRendering.ts +4 -4
  992. package/src/controls/drag.ts +1 -1
  993. package/src/controls/fireEvent.ts +1 -1
  994. package/src/controls/pathControl.spec.ts +9 -9
  995. package/src/controls/pathControl.ts +20 -20
  996. package/src/controls/polyControl.spec.ts +6 -6
  997. package/src/controls/polyControl.ts +11 -11
  998. package/src/controls/rotate.ts +4 -4
  999. package/src/controls/scale.test.ts +9 -9
  1000. package/src/controls/scale.ts +13 -13
  1001. package/src/controls/scaleSkew.ts +3 -3
  1002. package/src/controls/skew.ts +8 -8
  1003. package/src/controls/util.ts +6 -6
  1004. package/src/controls/wrapWithFireEvent.ts +2 -2
  1005. package/src/controls/wrapWithFixedAnchor.spec.ts +5 -5
  1006. package/src/controls/wrapWithFixedAnchor.ts +2 -2
  1007. package/src/env/node.ts +2 -2
  1008. package/src/filters/BaseFilter.ts +27 -25
  1009. package/src/filters/BlendColor.ts +1 -1
  1010. package/src/filters/BlendImage.ts +4 -4
  1011. package/src/filters/Blur.ts +1 -1
  1012. package/src/filters/Boilerplate.ts +1 -1
  1013. package/src/filters/Brightness.ts +1 -1
  1014. package/src/filters/Canvas2dFilterBackend.ts +1 -1
  1015. package/src/filters/ColorMatrix.ts +2 -2
  1016. package/src/filters/ColorMatrixFilters.ts +7 -7
  1017. package/src/filters/Composed.ts +5 -5
  1018. package/src/filters/Contrast.ts +1 -1
  1019. package/src/filters/Convolute.ts +1 -1
  1020. package/src/filters/GLProbes/WebGLProbe.ts +2 -2
  1021. package/src/filters/Gamma.ts +1 -1
  1022. package/src/filters/Grayscale.ts +1 -1
  1023. package/src/filters/Invert.ts +1 -1
  1024. package/src/filters/Noise.ts +1 -1
  1025. package/src/filters/Pixelate.ts +1 -1
  1026. package/src/filters/RemoveColor.ts +1 -1
  1027. package/src/filters/Resize.ts +9 -9
  1028. package/src/filters/Saturation.ts +1 -1
  1029. package/src/filters/Vibrance.ts +1 -1
  1030. package/src/filters/WebGLFilterBackend.ts +10 -10
  1031. package/src/filters/typedefs.ts +1 -3
  1032. package/src/filters/utils.ts +3 -3
  1033. package/src/gradient/Gradient.spec.ts +19 -19
  1034. package/src/gradient/Gradient.ts +51 -50
  1035. package/src/gradient/parser/parseColorStops.ts +3 -3
  1036. package/src/gradient/parser/parseCoords.ts +28 -25
  1037. package/src/mixins/eraser_brush.mixin.ts +21 -21
  1038. package/src/parkinglot/straighten.ts +1 -1
  1039. package/src/parser/applyViewboxTransform.ts +2 -2
  1040. package/src/parser/constants.ts +2 -2
  1041. package/src/parser/elements_parser.ts +13 -13
  1042. package/src/parser/getCSSRules.ts +1 -1
  1043. package/src/parser/getGlobalStylesForElement.ts +1 -1
  1044. package/src/parser/getGradientDefs.ts +1 -1
  1045. package/src/parser/getMultipleNodes.ts +2 -2
  1046. package/src/parser/loadSVGFromString.test.ts +1 -4
  1047. package/src/parser/loadSVGFromString.ts +1 -1
  1048. package/src/parser/loadSVGFromURL.ts +1 -1
  1049. package/src/parser/normalizeAttr.ts +1 -1
  1050. package/src/parser/normalizeValue.ts +2 -2
  1051. package/src/parser/parseAttributes.ts +3 -3
  1052. package/src/parser/parseFontDeclaration.ts +1 -1
  1053. package/src/parser/parseSVGDocument.ts +3 -3
  1054. package/src/parser/parseStyleObject.ts +1 -1
  1055. package/src/parser/parseStyleString.ts +1 -1
  1056. package/src/parser/parseTransformAttribute.ts +1 -1
  1057. package/src/parser/parseUseDirectives.ts +1 -1
  1058. package/src/parser/percent.ts +4 -4
  1059. package/src/parser/recursivelyParseGradientsXlink.ts +1 -1
  1060. package/src/parser/setStrokeFillOpacity.ts +1 -1
  1061. package/src/parser/typedefs.ts +1 -1
  1062. package/src/shapes/ActiveSelection.spec.ts +1 -1
  1063. package/src/shapes/ActiveSelection.ts +4 -4
  1064. package/src/shapes/Circle.ts +5 -5
  1065. package/src/shapes/Ellipse.ts +4 -4
  1066. package/src/shapes/Group.spec.ts +5 -5
  1067. package/src/shapes/Group.ts +19 -17
  1068. package/src/shapes/IText/DraggableTextDelegate.ts +9 -10
  1069. package/src/shapes/IText/IText.test.ts +1 -1
  1070. package/src/shapes/IText/IText.ts +12 -12
  1071. package/src/shapes/IText/ITextBehavior.test.ts +2 -2
  1072. package/src/shapes/IText/ITextBehavior.ts +21 -21
  1073. package/src/shapes/IText/ITextClickBehavior.ts +2 -2
  1074. package/src/shapes/IText/ITextKeyBehavior.test.ts +2 -2
  1075. package/src/shapes/IText/ITextKeyBehavior.ts +13 -13
  1076. package/src/shapes/Image.ts +16 -16
  1077. package/src/shapes/Line.ts +4 -4
  1078. package/src/shapes/Object/AnimatableObject.ts +13 -10
  1079. package/src/shapes/Object/FabricObject.ts +7 -3
  1080. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +9 -9
  1081. package/src/shapes/Object/InteractiveObject.spec.ts +3 -3
  1082. package/src/shapes/Object/InteractiveObject.ts +32 -32
  1083. package/src/shapes/Object/Object.ts +33 -31
  1084. package/src/shapes/Object/ObjectGeometry.ts +9 -9
  1085. package/src/shapes/Object/ObjectOrigin.ts +11 -11
  1086. package/src/shapes/Object/StackedObject.ts +3 -4
  1087. package/src/shapes/Path.ts +14 -14
  1088. package/src/shapes/Polyline.spec.ts +1 -1
  1089. package/src/shapes/Polyline.ts +15 -16
  1090. package/src/shapes/Rect.ts +6 -6
  1091. package/src/shapes/Text/StyledText.spec.ts +2 -2
  1092. package/src/shapes/Text/StyledText.ts +7 -7
  1093. package/src/shapes/Text/Text.spec.ts +1 -1
  1094. package/src/shapes/Text/Text.ts +33 -33
  1095. package/src/shapes/Text/TextSVGExportMixin.spec.ts +1 -1
  1096. package/src/shapes/Text/TextSVGExportMixin.ts +23 -23
  1097. package/src/shapes/Textbox.ts +7 -7
  1098. package/src/shapes/Triangle.ts +1 -1
  1099. package/src/typedefs.ts +3 -3
  1100. package/src/util/animation/AnimationBase.ts +2 -2
  1101. package/src/util/animation/AnimationRegistry.ts +1 -1
  1102. package/src/util/animation/ArrayAnimation.ts +2 -2
  1103. package/src/util/animation/ColorAnimation.ts +5 -5
  1104. package/src/util/animation/ValueAnimation.ts +1 -1
  1105. package/src/util/animation/animate.ts +6 -6
  1106. package/src/util/animation/animations.spec.ts +7 -7
  1107. package/src/util/animation/easing.ts +1 -1
  1108. package/src/util/animation/types.ts +5 -6
  1109. package/src/util/applyMixins.ts +2 -2
  1110. package/src/util/dom_style.ts +2 -2
  1111. package/src/util/internals/cloneDeep.ts +6 -0
  1112. package/src/util/internals/cloneStyles.spec.ts +46 -0
  1113. package/src/util/internals/cloneStyles.ts +12 -0
  1114. package/src/util/internals/findRight.ts +1 -1
  1115. package/src/util/internals/getRandomInt.test.ts +1 -1
  1116. package/src/util/misc/boundingBoxFromPoints.ts +1 -1
  1117. package/src/util/misc/dom.ts +3 -3
  1118. package/src/util/misc/findScaleTo.ts +2 -2
  1119. package/src/util/misc/groupSVGElements.ts +1 -1
  1120. package/src/util/misc/isTransparent.ts +1 -1
  1121. package/src/util/misc/matrix.ts +6 -6
  1122. package/src/util/misc/objectEnlive.ts +9 -9
  1123. package/src/util/misc/objectTransforms.ts +5 -5
  1124. package/src/util/misc/pick.ts +2 -2
  1125. package/src/util/misc/planeChange.spec.ts +9 -9
  1126. package/src/util/misc/planeChange.ts +5 -5
  1127. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +7 -7
  1128. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +16 -16
  1129. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +2 -2
  1130. package/src/util/misc/projectStroke/index.ts +7 -7
  1131. package/src/util/misc/resolveOrigin.ts +1 -1
  1132. package/src/util/misc/rotatePoint.ts +1 -1
  1133. package/src/util/misc/svgParsing.ts +5 -5
  1134. package/src/util/misc/textStyles.ts +6 -6
  1135. package/src/util/misc/vectors.ts +1 -1
  1136. package/src/util/path/index.spec.ts +3 -3
  1137. package/src/util/path/index.ts +30 -30
  1138. package/src/util/path/typechecks.ts +22 -22
  1139. package/src/util/path/typedefs.ts +14 -17
  1140. package/src/util/transform_matrix_removal.ts +3 -3
  1141. package/src/util/typeAssertions.ts +4 -4
  1142. package/tsconfig-extensions.json +108 -0
  1143. package/tsconfig.json +4 -3
  1144. package/.eslintignore +0 -3
  1145. package/.eslintrc.js +0 -60
  1146. package/.eslintrc.json +0 -143
  1147. package/.eslintrc_tests +0 -58
  1148. package/dist/src/util/internals/cloneDeep.min.mjs +0 -2
  1149. package/dist/src/util/internals/cloneDeep.min.mjs.map +0 -1
  1150. package/dist/src/util/internals/cloneDeep.mjs +0 -4
  1151. package/dist/src/util/internals/cloneDeep.mjs.map +0 -1
  1152. package/dist/src/util/internals/index.d.ts +0 -5
  1153. package/dist/src/util/internals/index.d.ts.map +0 -1
  1154. package/src/benchmarks/README.md +0 -7
  1155. package/src/benchmarks/calcCornerCoords.mjs +0 -117
  1156. package/src/benchmarks/calcTransformMatrix.mjs +0 -104
  1157. package/src/benchmarks/pathCloning.mjs +0 -111
  1158. package/src/benchmarks/pathData.mjs +0 -5
  1159. package/src/benchmarks/raycasting.mjs +0 -152
  1160. package/src/benchmarks/transformMatrixKey.mjs +0 -97
  1161. package/src/util/internals/index.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Pixelate.min.mjs","sources":["../../../src/filters/Pixelate.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/pixelate';\n\nexport type PixelateOwnProps = {\n blocksize: number;\n};\n\nexport const pixelateDefaultValues: PixelateOwnProps = {\n blocksize: 4,\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {\n declare blocksize: PixelateOwnProps['blocksize'];\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n static uniformLocations = ['uBlocksize'];\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","this","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1f","uBlocksize","_defineProperty","classRegistry","setClass"],"mappings":"yPASO,MAAMA,EAA0C,CACrDC,UAAW,GAYN,MAAMC,UAAiBC,EAe5BC,SAAAA,CAASC,GAA2D,IAAxDC,WAAWC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,IAA4BJ,EAChE,IAAK,IAAIK,EAAI,EAAGA,EAAID,EAAQC,GAAKC,KAAKV,UACpC,IAAK,IAAIW,EAAI,EAAGA,EAAIJ,EAAOI,GAAKD,KAAKV,UAAW,CAC9C,MAAMY,EAAY,EAAJH,EAAQF,EAAY,EAAJI,EACxBE,EAAIP,EAAKM,GACTE,EAAIR,EAAKM,EAAQ,GACjBG,EAAIT,EAAKM,EAAQ,GACjBI,EAAIV,EAAKM,EAAQ,GAEvB,IAAK,IAAIK,EAAKR,EAAGQ,EAAKC,KAAKC,IAAIV,EAAIC,KAAKV,UAAWQ,GAASS,IAC1D,IAAK,IAAIG,EAAKT,EAAGS,EAAKF,KAAKC,IAAIR,EAAID,KAAKV,UAAWO,GAAQa,IAAM,CAC/D,MAAMR,EAAa,EAALK,EAASV,EAAa,EAALa,EAC/Bd,EAAKM,GAASC,EACdP,EAAKM,EAAQ,GAAKE,EAClBR,EAAKM,EAAQ,GAAKG,EAClBT,EAAKM,EAAQ,GAAKI,CACpB,CAEJ,CAEJ,CAKAK,cAAAA,GACE,OAA0B,IAAnBX,KAAKV,SACd,CAEUsB,iBAAAA,GACR,OAAOC,CACT,CAQAC,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,WAAYlB,KAAKV,UACjD,EACD6B,EA5DY5B,EAAQ,OAGL,YAAU4B,EAHb5B,EAAQ,WAKDF,GAAqB8B,EAL5B5B,EAOe,mBAAA,CAAC,eAuD7B6B,EAAcC,SAAS9B"}
1
+ {"version":3,"file":"Pixelate.min.mjs","sources":["../../../src/filters/Pixelate.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/pixelate';\n\nexport type PixelateOwnProps = {\n blocksize: number;\n};\n\nexport const pixelateDefaultValues: PixelateOwnProps = {\n blocksize: 4,\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {\n declare blocksize: PixelateOwnProps['blocksize'];\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n static uniformLocations = ['uBlocksize'];\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","this","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1f","uBlocksize","_defineProperty","classRegistry","setClass"],"mappings":"yPASO,MAAMA,EAA0C,CACrDC,UAAW,GAYN,MAAMC,UAAiBC,EAe5BC,SAAAA,CAASC,GAA2D,IAAxDC,WAAWC,KAAEA,EAAIC,MAAEA,EAAKC,OAAEA,IAA4BJ,EAChE,IAAK,IAAIK,EAAI,EAAGA,EAAID,EAAQC,GAAKC,KAAKV,UACpC,IAAK,IAAIW,EAAI,EAAGA,EAAIJ,EAAOI,GAAKD,KAAKV,UAAW,CAC9C,MAAMY,EAAY,EAAJH,EAAQF,EAAY,EAAJI,EACxBE,EAAIP,EAAKM,GACTE,EAAIR,EAAKM,EAAQ,GACjBG,EAAIT,EAAKM,EAAQ,GACjBI,EAAIV,EAAKM,EAAQ,GAEvB,IAAK,IAAIK,EAAKR,EAAGQ,EAAKC,KAAKC,IAAIV,EAAIC,KAAKV,UAAWQ,GAASS,IAC1D,IAAK,IAAIG,EAAKT,EAAGS,EAAKF,KAAKC,IAAIR,EAAID,KAAKV,UAAWO,GAAQa,IAAM,CAC/D,MAAMR,EAAa,EAALK,EAASV,EAAa,EAALa,EAC/Bd,EAAKM,GAASC,EACdP,EAAKM,EAAQ,GAAKE,EAClBR,EAAKM,EAAQ,GAAKG,EAClBT,EAAKM,EAAQ,GAAKI,CACpB,CAEJ,CAEJ,CAKAK,cAAAA,GACE,OAA0B,IAAnBX,KAAKV,SACd,CAEUsB,iBAAAA,GACR,OAAOC,CACT,CAQAC,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,WAAYlB,KAAKV,UACjD,EACD6B,EA5DY5B,EAAQ,OAGL,YAAU4B,EAHb5B,EAAQ,WAKDF,GAAqB8B,EAL5B5B,EAOe,mBAAA,CAAC,eAuD7B6B,EAAcC,SAAS9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"Pixelate.mjs","sources":["../../../src/filters/Pixelate.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/pixelate';\n\nexport type PixelateOwnProps = {\n blocksize: number;\n};\n\nexport const pixelateDefaultValues: PixelateOwnProps = {\n blocksize: 4,\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {\n declare blocksize: PixelateOwnProps['blocksize'];\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n static uniformLocations = ['uBlocksize'];\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1f","uBlocksize","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"Pixelate.mjs","sources":["../../../src/filters/Pixelate.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/pixelate';\n\nexport type PixelateOwnProps = {\n blocksize: number;\n};\n\nexport const pixelateDefaultValues: PixelateOwnProps = {\n blocksize: 4,\n};\n\n/**\n * Pixelate filter class\n * @example\n * const filter = new Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Pixelate extends BaseFilter<'Pixelate', PixelateOwnProps> {\n declare blocksize: PixelateOwnProps['blocksize'];\n\n static type = 'Pixelate';\n\n static defaults = pixelateDefaultValues;\n\n static uniformLocations = ['uBlocksize'];\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data, width, height } }: T2DPipelineState) {\n for (let i = 0; i < height; i += this.blocksize) {\n for (let j = 0; j < width; j += this.blocksize) {\n const index = i * 4 * width + j * 4;\n const r = data[index];\n const g = data[index + 1];\n const b = data[index + 2];\n const a = data[index + 3];\n\n for (let _i = i; _i < Math.min(i + this.blocksize, height); _i++) {\n for (let _j = j; _j < Math.min(j + this.blocksize, width); _j++) {\n const index = _i * 4 * width + _j * 4;\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n }\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState() {\n return this.blocksize === 1;\n }\n\n protected getFragmentSource(): string {\n return fragmentSource;\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n }\n}\n\nclassRegistry.setClass(Pixelate);\n"],"names":["pixelateDefaultValues","blocksize","Pixelate","BaseFilter","applyTo2d","_ref","imageData","data","width","height","i","j","index","r","g","b","a","_i","Math","min","_j","isNeutralState","getFragmentSource","fragmentSource","sendUniformData","gl","uniformLocations","uniform1f","uBlocksize","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,qBAAuC,GAAG;AACrDC,EAAAA,SAAS,EAAE,CAAA;AACb,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,SAASC,UAAU,CAA+B;AASrE;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA2D;IAAA,IAA1D;AAAEC,MAAAA,SAAS,EAAE;QAAEC,IAAI;QAAEC,KAAK;AAAEC,QAAAA,MAAAA;AAAO,OAAA;AAAoB,KAAC,GAAAJ,IAAA,CAAA;AAChE,IAAA,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,MAAM,EAAEC,CAAC,IAAI,IAAI,CAACT,SAAS,EAAE;AAC/C,MAAA,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,KAAK,EAAEG,CAAC,IAAI,IAAI,CAACV,SAAS,EAAE;QAC9C,MAAMW,KAAK,GAAGF,CAAC,GAAG,CAAC,GAAGF,KAAK,GAAGG,CAAC,GAAG,CAAC,CAAA;AACnC,QAAA,MAAME,CAAC,GAAGN,IAAI,CAACK,KAAK,CAAC,CAAA;AACrB,QAAA,MAAME,CAAC,GAAGP,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC,CAAA;AACzB,QAAA,MAAMG,CAAC,GAAGR,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC,CAAA;AACzB,QAAA,MAAMI,CAAC,GAAGT,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC,CAAA;QAEzB,KAAK,IAAIK,EAAE,GAAGP,CAAC,EAAEO,EAAE,GAAGC,IAAI,CAACC,GAAG,CAACT,CAAC,GAAG,IAAI,CAACT,SAAS,EAAEQ,MAAM,CAAC,EAAEQ,EAAE,EAAE,EAAE;UAChE,KAAK,IAAIG,EAAE,GAAGT,CAAC,EAAES,EAAE,GAAGF,IAAI,CAACC,GAAG,CAACR,CAAC,GAAG,IAAI,CAACV,SAAS,EAAEO,KAAK,CAAC,EAAEY,EAAE,EAAE,EAAE;YAC/D,MAAMR,KAAK,GAAGK,EAAE,GAAG,CAAC,GAAGT,KAAK,GAAGY,EAAE,GAAG,CAAC,CAAA;AACrCb,YAAAA,IAAI,CAACK,KAAK,CAAC,GAAGC,CAAC,CAAA;AACfN,YAAAA,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC,GAAGE,CAAC,CAAA;AACnBP,YAAAA,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC,GAAGG,CAAC,CAAA;AACnBR,YAAAA,IAAI,CAACK,KAAK,GAAG,CAAC,CAAC,GAAGI,CAAC,CAAA;AACrB,WAAA;AACF,SAAA;AACF,OAAA;AACF,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACEK,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACpB,SAAS,KAAK,CAAC,CAAA;AAC7B,GAAA;AAEUqB,EAAAA,iBAAiBA,GAAW;AACpC,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;IACAD,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,UAAU,EAAE,IAAI,CAAC3B,SAAS,CAAC,CAAA;AAC3D,GAAA;AACF,CAAA;AAAC4B,eAAA,CA5DY3B,QAAQ,EAAA,MAAA,EAGL,UAAU,CAAA,CAAA;AAAA2B,eAAA,CAHb3B,QAAQ,EAAA,UAAA,EAKDF,qBAAqB,CAAA,CAAA;AAAA6B,eAAA,CAL5B3B,QAAQ,EAOO,kBAAA,EAAA,CAAC,YAAY,CAAC,CAAA,CAAA;AAuD1C4B,aAAa,CAACC,QAAQ,CAAC7B,QAAQ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveColor.min.mjs","sources":["../../../src/filters/RemoveColor.ts"],"sourcesContent":["import { classRegistry } from '../ClassRegistry';\nimport { Color } from '../color/Color';\nimport { BaseFilter } from './BaseFilter';\nimport { fragmentShader } from './shaders/removeColor';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\n\nexport type RemoveColorOwnProps = {\n color: string;\n distance: number;\n useAlpha: boolean;\n};\n\nexport const removeColorDefaultValues: RemoveColorOwnProps = {\n color: '#FFFFFF',\n distance: 0.02,\n useAlpha: false,\n};\n\n/**\n * Remove white filter class\n * @example\n * const filter = new RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class RemoveColor extends BaseFilter<\n 'RemoveColor',\n RemoveColorOwnProps\n> {\n /**\n * Color to remove, in any format understood by {@link Color}.\n * @param {String} type\n * @default\n */\n declare color: RemoveColorOwnProps['color'];\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n declare distance: RemoveColorOwnProps['distance'];\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n declare useAlpha: RemoveColorOwnProps['useAlpha'];\n\n static type = 'RemoveColor';\n\n static defaults = removeColorDefaultValues;\n\n static uniformLocations = ['uLow', 'uHigh'];\n\n getFragmentSource() {\n return fragmentShader;\n }\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const distance = this.distance * 255,\n source = new Color(this.color).getSource(),\n lowC = [source[0] - distance, source[1] - distance, source[2] - distance],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n\n if (\n r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]\n ) {\n data[i + 3] = 0;\n }\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n const source = new Color(this.color).getSource(),\n distance = this.distance,\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1,\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1,\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n }\n}\n\nclassRegistry.setClass(RemoveColor);\n"],"names":["removeColorDefaultValues","color","distance","useAlpha","RemoveColor","BaseFilter","getFragmentSource","fragmentShader","applyTo2d","_ref","imageData","data","this","source","Color","getSource","lowC","highC","i","length","r","g","b","sendUniformData","gl","uniformLocations","uniform4fv","uLow","uHigh","_defineProperty","classRegistry","setClass"],"mappings":"2SAYO,MAAMA,EAAgD,CAC3DC,MAAO,UACPC,SAAU,IACVC,UAAU,GAaL,MAAMC,UAAoBC,EA6B/BC,iBAAAA,GACE,OAAOC,CACT,CAMAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMP,EAA2B,IAAhBU,KAAKV,SACpBW,EAAS,IAAIC,EAAMF,KAAKX,OAAOc,YAC/BC,EAAO,CAACH,EAAO,GAAKX,EAAUW,EAAO,GAAKX,EAAUW,EAAO,GAAKX,GAChEe,EAAQ,CACNJ,EAAO,GAAKX,EACZW,EAAO,GAAKX,EACZW,EAAO,GAAKX,GAGhB,IAAK,IAAIgB,EAAI,EAAGA,EAAIP,EAAKQ,OAAQD,GAAK,EAAG,CACvC,MAAME,EAAIT,EAAKO,GACTG,EAAIV,EAAKO,EAAI,GACbI,EAAIX,EAAKO,EAAI,GAGjBE,EAAIJ,EAAK,IACTK,EAAIL,EAAK,IACTM,EAAIN,EAAK,IACTI,EAAIH,EAAM,IACVI,EAAIJ,EAAM,IACVK,EAAIL,EAAM,KAEVN,EAAKO,EAAI,GAAK,EAElB,CACF,CAQAK,eAAAA,CACEC,EACAC,GAEA,MAAMZ,EAAS,IAAIC,EAAMF,KAAKX,OAAOc,YACnCb,EAAWU,KAAKV,SAChBc,EAAO,CACL,EAAIH,EAAO,GAAK,IAAMX,EACtB,EAAIW,EAAO,GAAK,IAAMX,EACtB,EAAIW,EAAO,GAAK,IAAMX,EACtB,GAEFe,EAAQ,CACNJ,EAAO,GAAK,IAAMX,EAClBW,EAAO,GAAK,IAAMX,EAClBW,EAAO,GAAK,IAAMX,EAClB,GAEJsB,EAAGE,WAAWD,EAAiBE,KAAMX,GACrCQ,EAAGE,WAAWD,EAAiBG,MAAOX,EACxC,EA1EAY,EAjBWzB,EAAW,OAuBR,eAAayB,EAvBhBzB,EAAW,WAyBJJ,GAAwB6B,EAzB/BzB,EAAW,mBA2BI,CAAC,OAAQ,UAmErC0B,EAAcC,SAAS3B"}
1
+ {"version":3,"file":"RemoveColor.min.mjs","sources":["../../../src/filters/RemoveColor.ts"],"sourcesContent":["import { classRegistry } from '../ClassRegistry';\nimport { Color } from '../color/Color';\nimport { BaseFilter } from './BaseFilter';\nimport { fragmentShader } from './shaders/removeColor';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\n\nexport type RemoveColorOwnProps = {\n color: string;\n distance: number;\n useAlpha: boolean;\n};\n\nexport const removeColorDefaultValues: RemoveColorOwnProps = {\n color: '#FFFFFF',\n distance: 0.02,\n useAlpha: false,\n};\n\n/**\n * Remove white filter class\n * @example\n * const filter = new RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class RemoveColor extends BaseFilter<\n 'RemoveColor',\n RemoveColorOwnProps\n> {\n /**\n * Color to remove, in any format understood by {@link Color}.\n * @param {String} type\n * @default\n */\n declare color: RemoveColorOwnProps['color'];\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n declare distance: RemoveColorOwnProps['distance'];\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n declare useAlpha: RemoveColorOwnProps['useAlpha'];\n\n static type = 'RemoveColor';\n\n static defaults = removeColorDefaultValues;\n\n static uniformLocations = ['uLow', 'uHigh'];\n\n getFragmentSource() {\n return fragmentShader;\n }\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const distance = this.distance * 255,\n source = new Color(this.color).getSource(),\n lowC = [source[0] - distance, source[1] - distance, source[2] - distance],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n\n if (\n r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]\n ) {\n data[i + 3] = 0;\n }\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n const source = new Color(this.color).getSource(),\n distance = this.distance,\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1,\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1,\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n }\n}\n\nclassRegistry.setClass(RemoveColor);\n"],"names":["removeColorDefaultValues","color","distance","useAlpha","RemoveColor","BaseFilter","getFragmentSource","fragmentShader","applyTo2d","_ref","imageData","data","this","source","Color","getSource","lowC","highC","i","length","r","g","b","sendUniformData","gl","uniformLocations","uniform4fv","uLow","uHigh","_defineProperty","classRegistry","setClass"],"mappings":"2SAYO,MAAMA,EAAgD,CAC3DC,MAAO,UACPC,SAAU,IACVC,UAAU,GAaL,MAAMC,UAAoBC,EA6B/BC,iBAAAA,GACE,OAAOC,CACT,CAMAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMP,EAA2B,IAAhBU,KAAKV,SACpBW,EAAS,IAAIC,EAAMF,KAAKX,OAAOc,YAC/BC,EAAO,CAACH,EAAO,GAAKX,EAAUW,EAAO,GAAKX,EAAUW,EAAO,GAAKX,GAChEe,EAAQ,CACNJ,EAAO,GAAKX,EACZW,EAAO,GAAKX,EACZW,EAAO,GAAKX,GAGhB,IAAK,IAAIgB,EAAI,EAAGA,EAAIP,EAAKQ,OAAQD,GAAK,EAAG,CACvC,MAAME,EAAIT,EAAKO,GACTG,EAAIV,EAAKO,EAAI,GACbI,EAAIX,EAAKO,EAAI,GAGjBE,EAAIJ,EAAK,IACTK,EAAIL,EAAK,IACTM,EAAIN,EAAK,IACTI,EAAIH,EAAM,IACVI,EAAIJ,EAAM,IACVK,EAAIL,EAAM,KAEVN,EAAKO,EAAI,GAAK,EAElB,CACF,CAQAK,eAAAA,CACEC,EACAC,GAEA,MAAMZ,EAAS,IAAIC,EAAMF,KAAKX,OAAOc,YACnCb,EAAWU,KAAKV,SAChBc,EAAO,CACL,EAAIH,EAAO,GAAK,IAAMX,EACtB,EAAIW,EAAO,GAAK,IAAMX,EACtB,EAAIW,EAAO,GAAK,IAAMX,EACtB,GAEFe,EAAQ,CACNJ,EAAO,GAAK,IAAMX,EAClBW,EAAO,GAAK,IAAMX,EAClBW,EAAO,GAAK,IAAMX,EAClB,GAEJsB,EAAGE,WAAWD,EAAiBE,KAAMX,GACrCQ,EAAGE,WAAWD,EAAiBG,MAAOX,EACxC,EA1EAY,EAjBWzB,EAAW,OAuBR,eAAayB,EAvBhBzB,EAAW,WAyBJJ,GAAwB6B,EAzB/BzB,EAAW,mBA2BI,CAAC,OAAQ,UAmErC0B,EAAcC,SAAS3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RemoveColor.mjs","sources":["../../../src/filters/RemoveColor.ts"],"sourcesContent":["import { classRegistry } from '../ClassRegistry';\nimport { Color } from '../color/Color';\nimport { BaseFilter } from './BaseFilter';\nimport { fragmentShader } from './shaders/removeColor';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\n\nexport type RemoveColorOwnProps = {\n color: string;\n distance: number;\n useAlpha: boolean;\n};\n\nexport const removeColorDefaultValues: RemoveColorOwnProps = {\n color: '#FFFFFF',\n distance: 0.02,\n useAlpha: false,\n};\n\n/**\n * Remove white filter class\n * @example\n * const filter = new RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class RemoveColor extends BaseFilter<\n 'RemoveColor',\n RemoveColorOwnProps\n> {\n /**\n * Color to remove, in any format understood by {@link Color}.\n * @param {String} type\n * @default\n */\n declare color: RemoveColorOwnProps['color'];\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n declare distance: RemoveColorOwnProps['distance'];\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n declare useAlpha: RemoveColorOwnProps['useAlpha'];\n\n static type = 'RemoveColor';\n\n static defaults = removeColorDefaultValues;\n\n static uniformLocations = ['uLow', 'uHigh'];\n\n getFragmentSource() {\n return fragmentShader;\n }\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const distance = this.distance * 255,\n source = new Color(this.color).getSource(),\n lowC = [source[0] - distance, source[1] - distance, source[2] - distance],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n\n if (\n r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]\n ) {\n data[i + 3] = 0;\n }\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n const source = new Color(this.color).getSource(),\n distance = this.distance,\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1,\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1,\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n }\n}\n\nclassRegistry.setClass(RemoveColor);\n"],"names":["removeColorDefaultValues","color","distance","useAlpha","RemoveColor","BaseFilter","getFragmentSource","fragmentShader","applyTo2d","_ref","imageData","data","source","Color","getSource","lowC","highC","i","length","r","g","b","sendUniformData","gl","uniformLocations","uniform4fv","uLow","uHigh","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"RemoveColor.mjs","sources":["../../../src/filters/RemoveColor.ts"],"sourcesContent":["import { classRegistry } from '../ClassRegistry';\nimport { Color } from '../color/Color';\nimport { BaseFilter } from './BaseFilter';\nimport { fragmentShader } from './shaders/removeColor';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\n\nexport type RemoveColorOwnProps = {\n color: string;\n distance: number;\n useAlpha: boolean;\n};\n\nexport const removeColorDefaultValues: RemoveColorOwnProps = {\n color: '#FFFFFF',\n distance: 0.02,\n useAlpha: false,\n};\n\n/**\n * Remove white filter class\n * @example\n * const filter = new RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\nexport class RemoveColor extends BaseFilter<\n 'RemoveColor',\n RemoveColorOwnProps\n> {\n /**\n * Color to remove, in any format understood by {@link Color}.\n * @param {String} type\n * @default\n */\n declare color: RemoveColorOwnProps['color'];\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n declare distance: RemoveColorOwnProps['distance'];\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n declare useAlpha: RemoveColorOwnProps['useAlpha'];\n\n static type = 'RemoveColor';\n\n static defaults = removeColorDefaultValues;\n\n static uniformLocations = ['uLow', 'uHigh'];\n\n getFragmentSource() {\n return fragmentShader;\n }\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const distance = this.distance * 255,\n source = new Color(this.color).getSource(),\n lowC = [source[0] - distance, source[1] - distance, source[2] - distance],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n for (let i = 0; i < data.length; i += 4) {\n const r = data[i];\n const g = data[i + 1];\n const b = data[i + 2];\n\n if (\n r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]\n ) {\n data[i + 3] = 0;\n }\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n const source = new Color(this.color).getSource(),\n distance = this.distance,\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1,\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1,\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n }\n}\n\nclassRegistry.setClass(RemoveColor);\n"],"names":["removeColorDefaultValues","color","distance","useAlpha","RemoveColor","BaseFilter","getFragmentSource","fragmentShader","applyTo2d","_ref","imageData","data","source","Color","getSource","lowC","highC","i","length","r","g","b","sendUniformData","gl","uniformLocations","uniform4fv","uLow","uHigh","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Resize.min.mjs","sources":["../../../src/filters/Resize.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type {\n T2DPipelineState,\n TWebGLPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { XY } from '../Point';\n\nexport type TResizeType = 'bilinear' | 'hermite' | 'sliceHack' | 'lanczos';\n\nexport type ResizeOwnProps = {\n resizeType: TResizeType;\n scaleX: number;\n scaleY: number;\n lanczosLobes: number;\n};\n\nexport const resizeDefaultValues: ResizeOwnProps = {\n resizeType: 'hermite',\n scaleX: 1,\n scaleY: 1,\n lanczosLobes: 3,\n};\n\ntype ResizeDuring2DResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n};\n\ntype ResizeDuringWEBGLResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n horizontal: boolean;\n width: number;\n height: number;\n taps: number[];\n tempScale: number;\n dH: number;\n dW: number;\n};\n\n/**\n * Resize image filter class\n * @example\n * const filter = new Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Resize extends BaseFilter<'Resize', ResizeOwnProps> {\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @default\n */\n declare resizeType: ResizeOwnProps['resizeType'];\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n declare scaleX: ResizeOwnProps['scaleX'];\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n declare scaleY: ResizeOwnProps['scaleY'];\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n declare lanczosLobes: ResizeOwnProps['lanczosLobes'];\n\n static type = 'Resize';\n\n static defaults = resizeDefaultValues;\n\n static uniformLocations = ['uDelta', 'uTaps'];\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n this: ResizeDuringWEBGLResize,\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform2fv(\n uniformLocations.uDelta,\n this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]\n );\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n }\n\n getFilterWindow(this: ResizeDuringWEBGLResize) {\n const scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n }\n\n getCacheKey(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return `${this.type}_${filterWindow}`;\n }\n\n getFragmentSource(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return this.generateShader(filterWindow);\n }\n\n getTaps(this: ResizeDuringWEBGLResize) {\n const lobeFunction = this.lanczosCreate(this.lanczosLobes),\n scale = this.tempScale,\n filterWindow = this.getFilterWindow(),\n taps = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n }\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader(filterWindow: number) {\n const offsets = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = `${i}.0 * uDelta`;\n }\n return `\n precision highp float;\n uniform sampler2D uTexture;\n uniform vec2 uDelta;\n varying vec2 vTexCoord;\n uniform float uTaps[${filterWindow}];\n void main() {\n vec4 color = texture2D(uTexture, vTexCoord);\n float sum = 1.0;\n ${offsets\n .map(\n (offset, i) => `\n color += texture2D(uTexture, vTexCoord + ${offset}) * uTaps[${i}] + texture2D(uTexture, vTexCoord - ${offset}) * uTaps[${i}];\n sum += 2.0 * uTaps[${i}];\n `\n )\n .join('\\n')}\n gl_FragColor = color / sum;\n }\n `;\n }\n\n applyToForWebgl(this: ResizeDuringWEBGLResize, options: TWebGLPipelineState) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n super.applyTo(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n super.applyTo(options);\n options.sourceHeight = options.destinationHeight;\n }\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n (this as unknown as ResizeDuringWEBGLResize).applyToForWebgl(options);\n } else {\n (this as unknown as ResizeDuring2DResize).applyTo2d(options);\n }\n }\n\n isNeutralState() {\n return this.scaleX === 1 && this.scaleY === 1;\n }\n\n lanczosCreate(lobes: number) {\n return (x: number) => {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.1920929e-7 && x > -1.1920929e-7) {\n return 1.0;\n }\n x *= Math.PI;\n const xx = x / lobes;\n return ((Math.sin(x) / x) * Math.sin(xx)) / xx;\n };\n }\n\n applyTo2d(this: ResizeDuring2DResize, options: T2DPipelineState) {\n const imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n const oW = imageData.width;\n const oH = imageData.height;\n const dW = Math.round(oW * scaleX);\n const dH = Math.round(oH * scaleY);\n let newData: ImageData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n } else {\n // this should never trigger, is here just for safety net.\n newData = new ImageData(dW, dH);\n }\n options.imageData = newData;\n }\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo(\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ) {\n const imageData = options.imageData;\n const mult = 0.5;\n let doneW = false;\n let doneH = false;\n let stepW = oW * mult;\n let stepH = oH * mult;\n const resources = options.filterBackend.resources;\n let sX = 0;\n let sY = 0;\n const dX = oW;\n let dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = createCanvasElement();\n }\n const tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n const ctx = tmpCanvas.getContext('2d')!;\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = Math.floor(dW);\n dH = Math.floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < Math.floor(stepW * mult)) {\n stepW = Math.floor(stepW * mult);\n } else {\n stepW = dW;\n doneW = true;\n }\n if (dH < Math.floor(stepH * mult)) {\n stepH = Math.floor(stepH * mult);\n } else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n }\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ): ImageData {\n function process(u: number): ImageData {\n let v, i, weight, idx, a, red, green, blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = Math.floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = Math.floor(center.y);\n a = 0;\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = Math.floor(1000 * Math.abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = {};\n }\n for (let j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = Math.floor(1000 * Math.abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(\n Math.sqrt(\n Math.pow(fX * rcpRatioX, 2) + Math.pow(fY * rcpRatioY, 2)\n ) / 1000\n );\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n } else {\n return destImg;\n }\n }\n\n const srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX,\n rcpRatioY = 2 / this.rcpScaleY,\n range2X = Math.ceil((ratioX * this.lanczosLobes) / 2),\n range2Y = Math.ceil((ratioY * this.lanczosLobes) / 2),\n cacheLanc: Record<number, Record<number, number>> = {},\n center: XY = { x: 0, y: 0 },\n icenter: XY = { x: 0, y: 0 };\n\n return process(0);\n }\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ) {\n let a;\n let b;\n let c;\n let d;\n let x;\n let y;\n let i;\n let j;\n let xDiff;\n let yDiff;\n let chnl;\n let color;\n let offset = 0;\n let origPix;\n const ratioX = this.rcpScaleX;\n const ratioY = this.rcpScaleY;\n const w4 = 4 * (oW - 1);\n const img = options.imageData;\n const pixels = img.data;\n const destImage = options.ctx.createImageData(dW, dH);\n const destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = Math.floor(ratioX * j);\n y = Math.floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color =\n a * (1 - xDiff) * (1 - yDiff) +\n b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) +\n d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n }\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ) {\n const ratioW = this.rcpScaleX,\n ratioH = this.rcpScaleY,\n ratioWHalf = Math.ceil(ratioW / 2),\n ratioHHalf = Math.ceil(ratioH / 2),\n img = options.imageData,\n data = img.data,\n img2 = options.ctx.createImageData(dW, dH),\n data2 = img2.data;\n for (let j = 0; j < dH; j++) {\n for (let i = 0; i < dW; i++) {\n const x2 = (i + j * dW) * 4;\n let weight = 0;\n let weights = 0;\n let weightsAlpha = 0;\n let gxR = 0;\n let gxG = 0;\n let gxB = 0;\n let gxA = 0;\n const centerY = (j + 0.5) * ratioH;\n for (let yy = Math.floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n const dy = Math.abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW,\n w0 = dy * dy;\n for (let xx = Math.floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n let dx = Math.abs(centerX - (xx + 0.5)) / ratioWHalf;\n const w = Math.sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = (weight * data[dx + 3]) / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n }\n}\n\nclassRegistry.setClass(Resize);\n"],"names":["resizeDefaultValues","resizeType","scaleX","scaleY","lanczosLobes","Resize","BaseFilter","sendUniformData","gl","uniformLocations","uniform2fv","uDelta","this","horizontal","width","height","uniform1fv","uTaps","taps","getFilterWindow","scale","tempScale","Math","ceil","getCacheKey","filterWindow","concat","type","getFragmentSource","generateShader","getTaps","lobeFunction","lanczosCreate","Array","i","offsets","map","offset","join","applyToForWebgl","options","passes","sourceWidth","dW","round","dH","sourceHeight","destinationWidth","super","applyTo","destinationHeight","isWebGLPipelineState","applyTo2d","isNeutralState","lobes","x","xx","PI","sin","imageData","rcpScaleX","rcpScaleY","oW","oH","newData","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","ImageData","mult","doneW","doneH","stepW","stepH","resources","filterBackend","sX","sY","dX","dY","createCanvasElement","tmpCanvas","ctx","getContext","clearRect","putImageData","floor","drawImage","getImageData","srcData","data","destImg","createImageData","destData","lanczos","ratioX","ratioY","rcpRatioX","rcpRatioY","range2X","range2Y","cacheLanc","center","y","icenter","process","u","v","weight","idx","a","red","green","blue","alpha","fX","fY","abs","j","sqrt","pow","b","c","d","xDiff","yDiff","chnl","color","origPix","w4","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","x2","weights","weightsAlpha","gxR","gxG","gxB","gxA","centerY","yy","dy","centerX","w0","dx","w","_defineProperty","classRegistry","setClass"],"mappings":"mTAoBO,MAAMA,EAAsC,CACjDC,WAAY,UACZC,OAAQ,EACRC,OAAQ,EACRC,aAAc,GA2BT,MAAMC,UAAeC,EA0C1BC,eAAAA,CAEEC,EACAC,GAEAD,EAAGE,WACDD,EAAiBE,OACjBC,KAAKC,WAAa,CAAC,EAAID,KAAKE,MAAO,GAAK,CAAC,EAAG,EAAIF,KAAKG,SAEvDP,EAAGQ,WAAWP,EAAiBQ,MAAOL,KAAKM,KAC7C,CAEAC,eAAAA,GACE,MAAMC,EAAQR,KAAKS,UACnB,OAAOC,KAAKC,KAAKX,KAAKR,aAAegB,EACvC,CAEAI,WAAAA,GACE,MAAMC,EAAeb,KAAKO,kBAC1B,MAAAO,GAAAA,OAAUd,KAAKe,KAAID,KAAAA,OAAID,EACzB,CAEAG,iBAAAA,GACE,MAAMH,EAAeb,KAAKO,kBAC1B,OAAOP,KAAKiB,eAAeJ,EAC7B,CAEAK,OAAAA,GACE,MAAMC,EAAenB,KAAKoB,cAAcpB,KAAKR,cAC3CgB,EAAQR,KAAKS,UACbI,EAAeb,KAAKO,kBACpBD,EAAO,IAAIe,MAAMR,GACnB,IAAK,IAAIS,EAAI,EAAGA,GAAKT,EAAcS,IACjChB,EAAKgB,EAAI,GAAKH,EAAaG,EAAId,GAEjC,OAAOF,CACT,CAMAW,cAAAA,CAAeJ,GACb,MAAMU,EAAU,IAAIF,MAAMR,GAC1B,IAAK,IAAIS,EAAI,EAAGA,GAAKT,EAAcS,IACjCC,EAAQD,EAAI,GAAER,GAAAA,OAAMQ,EAAc,eAEpC,MAAA,2JAAAR,OAKwBD,uHAAYC,OAI9BS,EACCC,KACC,CAACC,EAAQH,gEAACR,OACmCW,EAAMX,cAAAA,OAAaQ,0CAACR,OAAuCW,EAAMX,cAAAA,OAAaQ,EAAC,yCAAAR,OACrGQ,EAEzB,sBACCI,KAAK,MAAK,uDAInB,CAEAC,eAAAA,CAA+CC,GAC7CA,EAAQC,SACR7B,KAAKE,MAAQ0B,EAAQE,YACrB9B,KAAKC,YAAa,EAClBD,KAAK+B,GAAKrB,KAAKsB,MAAMhC,KAAKE,MAAQF,KAAKV,QACvCU,KAAKiC,GAAKL,EAAQM,aAClBlC,KAAKS,UAAYT,KAAK+B,GAAK/B,KAAKE,MAChCF,KAAKM,KAAON,KAAKkB,UACjBU,EAAQO,iBAAmBnC,KAAK+B,GAChCK,MAAMC,QAAQT,GACdA,EAAQE,YAAcF,EAAQO,iBAE9BnC,KAAKG,OAASyB,EAAQM,aACtBlC,KAAKC,YAAa,EAClBD,KAAKiC,GAAKvB,KAAKsB,MAAMhC,KAAKG,OAASH,KAAKT,QACxCS,KAAKS,UAAYT,KAAKiC,GAAKjC,KAAKG,OAChCH,KAAKM,KAAON,KAAKkB,UACjBU,EAAQU,kBAAoBtC,KAAKiC,GACjCG,MAAMC,QAAQT,GACdA,EAAQM,aAAeN,EAAQU,iBACjC,CAcAD,OAAAA,CAAQT,GACFW,EAAqBX,GACtB5B,KAA4C2B,gBAAgBC,GAE5D5B,KAAyCwC,UAAUZ,EAExD,CAEAa,cAAAA,GACE,OAAuB,IAAhBzC,KAAKV,QAAgC,IAAhBU,KAAKT,MACnC,CAEA6B,aAAAA,CAAcsB,GACZ,OAAQC,IACN,GAAIA,GAAKD,GAASC,IAAMD,EACtB,OAAO,EAET,GAAIC,EAAI,cAAgBA,GAAK,aAC3B,OAAO,EAGT,MAAMC,GADND,GAAKjC,KAAKmC,IACKH,EACf,OAAShC,KAAKoC,IAAIH,GAAKA,EAAKjC,KAAKoC,IAAIF,GAAOA,CAAE,CAElD,CAEAJ,SAAAA,CAAsCZ,GACpC,MAAMmB,EAAYnB,EAAQmB,UACxBzD,EAASU,KAAKV,OACdC,EAASS,KAAKT,OAEhBS,KAAKgD,UAAY,EAAI1D,EACrBU,KAAKiD,UAAY,EAAI1D,EAErB,MAAM2D,EAAKH,EAAU7C,MACfiD,EAAKJ,EAAU5C,OACf4B,EAAKrB,KAAKsB,MAAMkB,EAAK5D,GACrB2C,EAAKvB,KAAKsB,MAAMmB,EAAK5D,GAC3B,IAAI6D,EAGFA,EADsB,cAApBpD,KAAKX,WACGW,KAAKqD,WAAWzB,EAASsB,EAAIC,EAAIpB,EAAIE,GAClB,YAApBjC,KAAKX,WACJW,KAAKsD,kBAAkB1B,EAASsB,EAAIC,EAAIpB,EAAIE,GACzB,aAApBjC,KAAKX,WACJW,KAAKuD,kBAAkB3B,EAASsB,EAAIC,EAAIpB,EAAIE,GACzB,YAApBjC,KAAKX,WACJW,KAAKwD,cAAc5B,EAASsB,EAAIC,EAAIpB,EAAIE,GAGxC,IAAIwB,UAAU1B,EAAIE,GAE9BL,EAAQmB,UAAYK,CACtB,CAWAC,UAAAA,CACEzB,EACAsB,EACAC,EACApB,EACAE,GAEA,MAAMc,EAAYnB,EAAQmB,UACpBW,EAAO,GACb,IAAIC,GAAQ,EACRC,GAAQ,EACRC,EAAQX,EAAKQ,EACbI,EAAQX,EAAKO,EACjB,MAAMK,EAAYnC,EAAQoC,cAAcD,UACxC,IAAIE,EAAK,EACLC,EAAK,EACT,MAAMC,EAAKjB,EACX,IAAIkB,EAAK,EACJL,EAAUV,aACbU,EAAUV,WAAagB,KAEzB,MAAMC,EAAYP,EAAUV,YACxBiB,EAAUpE,MAAa,IAALgD,GAAYoB,EAAUnE,OAASgD,KACnDmB,EAAUpE,MAAa,IAALgD,EAClBoB,EAAUnE,OAASgD,GAErB,MAAMoB,EAAMD,EAAUE,WAAW,MAOjC,IANAD,EAAIE,UAAU,EAAG,EAAQ,IAALvB,EAAUC,GAC9BoB,EAAIG,aAAa3B,EAAW,EAAG,GAE/BhB,EAAKrB,KAAKiE,MAAM5C,GAChBE,EAAKvB,KAAKiE,MAAM1C,IAER0B,IAAUC,GAChBV,EAAKW,EACLV,EAAKW,EACD/B,EAAKrB,KAAKiE,MAAMd,EAAQH,GAC1BG,EAAQnD,KAAKiE,MAAMd,EAAQH,IAE3BG,EAAQ9B,EACR4B,GAAQ,GAEN1B,EAAKvB,KAAKiE,MAAMb,EAAQJ,GAC1BI,EAAQpD,KAAKiE,MAAMb,EAAQJ,IAE3BI,EAAQ7B,EACR2B,GAAQ,GAEVW,EAAIK,UAAUN,EAAWL,EAAIC,EAAIhB,EAAIC,EAAIgB,EAAIC,EAAIP,EAAOC,GACxDG,EAAKE,EACLD,EAAKE,EACLA,GAAMN,EAER,OAAOS,EAAIM,aAAaZ,EAAIC,EAAInC,EAAIE,EACtC,CAWAuB,aAAAA,CAEE5B,EACAsB,EACAC,EACApB,EACAE,GA2DA,MAAM6C,EAAUlD,EAAQmB,UAAUgC,KAChCC,EAAUpD,EAAQ2C,IAAIU,gBAAgBlD,EAAIE,GAC1CiD,EAAWF,EAAQD,KACnBI,EAAUnF,KAAKoB,cAAcpB,KAAKR,cAClC4F,EAASpF,KAAKgD,UACdqC,EAASrF,KAAKiD,UACdqC,EAAY,EAAItF,KAAKgD,UACrBuC,EAAY,EAAIvF,KAAKiD,UACrBuC,EAAU9E,KAAKC,KAAMyE,EAASpF,KAAKR,aAAgB,GACnDiG,EAAU/E,KAAKC,KAAM0E,EAASrF,KAAKR,aAAgB,GACnDkG,EAAoD,CAAE,EACtDC,EAAa,CAAEhD,EAAG,EAAGiD,EAAG,GACxBC,EAAc,CAAElD,EAAG,EAAGiD,EAAG,GAE3B,OAvEA,SAASE,EAAQC,GACf,IAAIC,EAAG1E,EAAG2E,EAAQC,EAAKC,EAAGC,EAAKC,EAAOC,EAAMC,EAAOC,EAAIC,EAGvD,IAFAd,EAAOhD,GAAKoD,EAAI,IAAOX,EACvBS,EAAQlD,EAAIjC,KAAKiE,MAAMgB,EAAOhD,GACzBqD,EAAI,EAAGA,EAAI/D,EAAI+D,IAAK,CAQvB,IAPAL,EAAOC,GAAKI,EAAI,IAAOX,EACvBQ,EAAQD,EAAIlF,KAAKiE,MAAMgB,EAAOC,GAC9BO,EAAI,EACJC,EAAM,EACNC,EAAQ,EACRC,EAAO,EACPC,EAAQ,EACHjF,EAAIuE,EAAQlD,EAAI6C,EAASlE,GAAKuE,EAAQlD,EAAI6C,EAASlE,IACtD,KAAIA,EAAI,GAAKA,GAAK4B,GAAlB,CAGAsD,EAAK9F,KAAKiE,MAAM,IAAOjE,KAAKgG,IAAIpF,EAAIqE,EAAOhD,IACtC+C,EAAUc,KACbd,EAAUc,GAAM,IAElB,IAAK,IAAIG,EAAId,EAAQD,EAAIH,EAASkB,GAAKd,EAAQD,EAAIH,EAASkB,IACtDA,EAAI,GAAKA,GAAKxD,IAGlBsD,EAAK/F,KAAKiE,MAAM,IAAOjE,KAAKgG,IAAIC,EAAIhB,EAAOC,IACtCF,EAAUc,GAAIC,KACjBf,EAAUc,GAAIC,GAAMtB,EAClBzE,KAAKkG,KACHlG,KAAKmG,IAAIL,EAAKlB,EAAW,GAAK5E,KAAKmG,IAAIJ,EAAKlB,EAAW,IACrD,MAGRU,EAASP,EAAUc,GAAIC,GACnBR,EAAS,IACXC,EAAqB,GAAdS,EAAIzD,EAAK5B,GAChB6E,GAAKF,EACLG,GAAOH,EAASnB,EAAQoB,GACxBG,GAASJ,EAASnB,EAAQoB,EAAM,GAChCI,GAAQL,EAASnB,EAAQoB,EAAM,GAC/BK,GAASN,EAASnB,EAAQoB,EAAM,IAxBpC,CA4BFA,EAAqB,GAAdF,EAAIjE,EAAKgE,GAChBb,EAASgB,GAAOE,EAAMD,EACtBjB,EAASgB,EAAM,GAAKG,EAAQF,EAC5BjB,EAASgB,EAAM,GAAKI,EAAOH,EAC3BjB,EAASgB,EAAM,GAAKK,EAAQJ,CAC9B,CAEA,QAAMJ,EAAIhE,EACD+D,EAAQC,GAERf,CAEX,CAgBOc,CAAQ,EACjB,CAWAvC,iBAAAA,CAEE3B,EACAsB,EACAC,EACApB,EACAE,GAEA,IAAIkE,EACAW,EACAC,EACAC,EACArE,EACAiD,EACAtE,EACAqF,EACAM,EACAC,EACAC,EACAC,EAEAC,EADA5F,EAAS,EAEb,MAAM2D,EAASpF,KAAKgD,UACdqC,EAASrF,KAAKiD,UACdqE,EAAK,GAAKpE,EAAK,GAEfqE,EADM3F,EAAQmB,UACDgC,KACbyC,EAAY5F,EAAQ2C,IAAIU,gBAAgBlD,EAAIE,GAC5CwF,EAAaD,EAAUzC,KAC7B,IAAKzD,EAAI,EAAGA,EAAIW,EAAIX,IAClB,IAAKqF,EAAI,EAAGA,EAAI5E,EAAI4E,IAOlB,IANAhE,EAAIjC,KAAKiE,MAAMS,EAASuB,GACxBf,EAAIlF,KAAKiE,MAAMU,EAAS/D,GACxB2F,EAAQ7B,EAASuB,EAAIhE,EACrBuE,EAAQ7B,EAAS/D,EAAIsE,EACrByB,EAAU,GAAKzB,EAAI1C,EAAKP,GAEnBwE,EAAO,EAAGA,EAAO,EAAGA,IACvBhB,EAAIoB,EAAOF,EAAUF,GACrBL,EAAIS,EAAOF,EAAU,EAAIF,GACzBJ,EAAIQ,EAAOF,EAAUC,EAAKH,GAC1BH,EAAIO,EAAOF,EAAUC,EAAK,EAAIH,GAC9BC,EACEjB,GAAK,EAAIc,IAAU,EAAIC,GACvBJ,EAAIG,GAAS,EAAIC,GACjBH,EAAIG,GAAS,EAAID,GACjBD,EAAIC,EAAQC,EACdO,EAAWhG,KAAY2F,EAI7B,OAAOI,CACT,CAWAlE,iBAAAA,CAEE1B,EACAsB,EACAC,EACApB,EACAE,GAEA,MAAMyF,EAAS1H,KAAKgD,UAClB2E,EAAS3H,KAAKiD,UACd2E,EAAalH,KAAKC,KAAK+G,EAAS,GAChCG,EAAanH,KAAKC,KAAKgH,EAAS,GAEhC5C,EADMnD,EAAQmB,UACHgC,KACX+C,EAAOlG,EAAQ2C,IAAIU,gBAAgBlD,EAAIE,GACvC8F,EAAQD,EAAK/C,KACf,IAAK,IAAI4B,EAAI,EAAGA,EAAI1E,EAAI0E,IACtB,IAAK,IAAIrF,EAAI,EAAGA,EAAIS,EAAIT,IAAK,CAC3B,MAAM0G,EAAoB,GAAd1G,EAAIqF,EAAI5E,GACpB,IAAIkE,EAAS,EACTgC,EAAU,EACVC,EAAe,EACfC,EAAM,EACNC,EAAM,EACNC,EAAM,EACNC,EAAM,EACV,MAAMC,GAAW5B,EAAI,IAAOgB,EAC5B,IAAK,IAAIa,EAAK9H,KAAKiE,MAAMgC,EAAIgB,GAASa,GAAM7B,EAAI,GAAKgB,EAAQa,IAAM,CACjE,MAAMC,EAAK/H,KAAKgG,IAAI6B,GAAWC,EAAK,KAAQX,EAC1Ca,GAAWpH,EAAI,IAAOoG,EACtBiB,EAAKF,EAAKA,EACZ,IAAK,IAAI7F,EAAKlC,KAAKiE,MAAMrD,EAAIoG,GAAS9E,GAAMtB,EAAI,GAAKoG,EAAQ9E,IAAM,CACjE,IAAIgG,EAAKlI,KAAKgG,IAAIgC,GAAW9F,EAAK,KAAQgF,EAC1C,MAAMiB,EAAInI,KAAKkG,KAAK+B,EAAKC,EAAKA,GAE1BC,EAAI,GAAKA,GAAK,IAIlB5C,EAAS,EAAI4C,EAAIA,EAAIA,EAAI,EAAIA,EAAIA,EAAI,EACjC5C,EAAS,IACX2C,EAAK,GAAKhG,EAAK4F,EAAKtF,GAEpBoF,GAAOrC,EAASlB,EAAK6D,EAAK,GAC1BV,GAAgBjC,EAEZlB,EAAK6D,EAAK,GAAK,MACjB3C,EAAUA,EAASlB,EAAK6D,EAAK,GAAM,KAErCT,GAAOlC,EAASlB,EAAK6D,GACrBR,GAAOnC,EAASlB,EAAK6D,EAAK,GAC1BP,GAAOpC,EAASlB,EAAK6D,EAAK,GAC1BX,GAAWhC,GAGf,CACF,CACA8B,EAAMC,GAAMG,EAAMF,EAClBF,EAAMC,EAAK,GAAKI,EAAMH,EACtBF,EAAMC,EAAK,GAAKK,EAAMJ,EACtBF,EAAMC,EAAK,GAAKM,EAAMJ,CACxB,CAEF,OAAOJ,CACT,EArdAgB,EAvBWrJ,EAAM,OA8BH,UAAQqJ,EA9BXrJ,EAAM,WAgCCL,GAAmB0J,EAhC1BrJ,EAAM,mBAkCS,CAAC,SAAU,UA6cvCsJ,EAAcC,SAASvJ"}
1
+ {"version":3,"file":"Resize.min.mjs","sources":["../../../src/filters/Resize.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type {\n T2DPipelineState,\n TWebGLPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { XY } from '../Point';\n\nexport type TResizeType = 'bilinear' | 'hermite' | 'sliceHack' | 'lanczos';\n\nexport type ResizeOwnProps = {\n resizeType: TResizeType;\n scaleX: number;\n scaleY: number;\n lanczosLobes: number;\n};\n\nexport const resizeDefaultValues: ResizeOwnProps = {\n resizeType: 'hermite',\n scaleX: 1,\n scaleY: 1,\n lanczosLobes: 3,\n};\n\ntype ResizeDuring2DResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n};\n\ntype ResizeDuringWEBGLResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n horizontal: boolean;\n width: number;\n height: number;\n taps: number[];\n tempScale: number;\n dH: number;\n dW: number;\n};\n\n/**\n * Resize image filter class\n * @example\n * const filter = new Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Resize extends BaseFilter<'Resize', ResizeOwnProps> {\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @default\n */\n declare resizeType: ResizeOwnProps['resizeType'];\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n declare scaleX: ResizeOwnProps['scaleX'];\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n declare scaleY: ResizeOwnProps['scaleY'];\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n declare lanczosLobes: ResizeOwnProps['lanczosLobes'];\n\n static type = 'Resize';\n\n static defaults = resizeDefaultValues;\n\n static uniformLocations = ['uDelta', 'uTaps'];\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n this: ResizeDuringWEBGLResize,\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform2fv(\n uniformLocations.uDelta,\n this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height],\n );\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n }\n\n getFilterWindow(this: ResizeDuringWEBGLResize) {\n const scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n }\n\n getCacheKey(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return `${this.type}_${filterWindow}`;\n }\n\n getFragmentSource(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return this.generateShader(filterWindow);\n }\n\n getTaps(this: ResizeDuringWEBGLResize) {\n const lobeFunction = this.lanczosCreate(this.lanczosLobes),\n scale = this.tempScale,\n filterWindow = this.getFilterWindow(),\n taps = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n }\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader(filterWindow: number) {\n const offsets = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = `${i}.0 * uDelta`;\n }\n return `\n precision highp float;\n uniform sampler2D uTexture;\n uniform vec2 uDelta;\n varying vec2 vTexCoord;\n uniform float uTaps[${filterWindow}];\n void main() {\n vec4 color = texture2D(uTexture, vTexCoord);\n float sum = 1.0;\n ${offsets\n .map(\n (offset, i) => `\n color += texture2D(uTexture, vTexCoord + ${offset}) * uTaps[${i}] + texture2D(uTexture, vTexCoord - ${offset}) * uTaps[${i}];\n sum += 2.0 * uTaps[${i}];\n `,\n )\n .join('\\n')}\n gl_FragColor = color / sum;\n }\n `;\n }\n\n applyToForWebgl(this: ResizeDuringWEBGLResize, options: TWebGLPipelineState) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n super.applyTo(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n super.applyTo(options);\n options.sourceHeight = options.destinationHeight;\n }\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n (this as unknown as ResizeDuringWEBGLResize).applyToForWebgl(options);\n } else {\n (this as unknown as ResizeDuring2DResize).applyTo2d(options);\n }\n }\n\n isNeutralState() {\n return this.scaleX === 1 && this.scaleY === 1;\n }\n\n lanczosCreate(lobes: number) {\n return (x: number) => {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.1920929e-7 && x > -1.1920929e-7) {\n return 1.0;\n }\n x *= Math.PI;\n const xx = x / lobes;\n return ((Math.sin(x) / x) * Math.sin(xx)) / xx;\n };\n }\n\n applyTo2d(this: ResizeDuring2DResize, options: T2DPipelineState) {\n const imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n const oW = imageData.width;\n const oH = imageData.height;\n const dW = Math.round(oW * scaleX);\n const dH = Math.round(oH * scaleY);\n let newData: ImageData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n } else {\n // this should never trigger, is here just for safety net.\n newData = new ImageData(dW, dH);\n }\n options.imageData = newData;\n }\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo(\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ) {\n const imageData = options.imageData;\n const mult = 0.5;\n let doneW = false;\n let doneH = false;\n let stepW = oW * mult;\n let stepH = oH * mult;\n const resources = options.filterBackend.resources;\n let sX = 0;\n let sY = 0;\n const dX = oW;\n let dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = createCanvasElement();\n }\n const tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n const ctx = tmpCanvas.getContext('2d')!;\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = Math.floor(dW);\n dH = Math.floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < Math.floor(stepW * mult)) {\n stepW = Math.floor(stepW * mult);\n } else {\n stepW = dW;\n doneW = true;\n }\n if (dH < Math.floor(stepH * mult)) {\n stepH = Math.floor(stepH * mult);\n } else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n }\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ): ImageData {\n function process(u: number): ImageData {\n let v, i, weight, idx, a, red, green, blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = Math.floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = Math.floor(center.y);\n a = 0;\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = Math.floor(1000 * Math.abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = {};\n }\n for (let j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = Math.floor(1000 * Math.abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(\n Math.sqrt(\n Math.pow(fX * rcpRatioX, 2) + Math.pow(fY * rcpRatioY, 2),\n ) / 1000,\n );\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n } else {\n return destImg;\n }\n }\n\n const srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX,\n rcpRatioY = 2 / this.rcpScaleY,\n range2X = Math.ceil((ratioX * this.lanczosLobes) / 2),\n range2Y = Math.ceil((ratioY * this.lanczosLobes) / 2),\n cacheLanc: Record<number, Record<number, number>> = {},\n center: XY = { x: 0, y: 0 },\n icenter: XY = { x: 0, y: 0 };\n\n return process(0);\n }\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ) {\n let a;\n let b;\n let c;\n let d;\n let x;\n let y;\n let i;\n let j;\n let xDiff;\n let yDiff;\n let chnl;\n let color;\n let offset = 0;\n let origPix;\n const ratioX = this.rcpScaleX;\n const ratioY = this.rcpScaleY;\n const w4 = 4 * (oW - 1);\n const img = options.imageData;\n const pixels = img.data;\n const destImage = options.ctx.createImageData(dW, dH);\n const destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = Math.floor(ratioX * j);\n y = Math.floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color =\n a * (1 - xDiff) * (1 - yDiff) +\n b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) +\n d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n }\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ) {\n const ratioW = this.rcpScaleX,\n ratioH = this.rcpScaleY,\n ratioWHalf = Math.ceil(ratioW / 2),\n ratioHHalf = Math.ceil(ratioH / 2),\n img = options.imageData,\n data = img.data,\n img2 = options.ctx.createImageData(dW, dH),\n data2 = img2.data;\n for (let j = 0; j < dH; j++) {\n for (let i = 0; i < dW; i++) {\n const x2 = (i + j * dW) * 4;\n let weight = 0;\n let weights = 0;\n let weightsAlpha = 0;\n let gxR = 0;\n let gxG = 0;\n let gxB = 0;\n let gxA = 0;\n const centerY = (j + 0.5) * ratioH;\n for (let yy = Math.floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n const dy = Math.abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW,\n w0 = dy * dy;\n for (let xx = Math.floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n let dx = Math.abs(centerX - (xx + 0.5)) / ratioWHalf;\n const w = Math.sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = (weight * data[dx + 3]) / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n }\n}\n\nclassRegistry.setClass(Resize);\n"],"names":["resizeDefaultValues","resizeType","scaleX","scaleY","lanczosLobes","Resize","BaseFilter","sendUniformData","gl","uniformLocations","uniform2fv","uDelta","this","horizontal","width","height","uniform1fv","uTaps","taps","getFilterWindow","scale","tempScale","Math","ceil","getCacheKey","filterWindow","concat","type","getFragmentSource","generateShader","getTaps","lobeFunction","lanczosCreate","Array","i","offsets","map","offset","join","applyToForWebgl","options","passes","sourceWidth","dW","round","dH","sourceHeight","destinationWidth","super","applyTo","destinationHeight","isWebGLPipelineState","applyTo2d","isNeutralState","lobes","x","xx","PI","sin","imageData","rcpScaleX","rcpScaleY","oW","oH","newData","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","ImageData","mult","doneW","doneH","stepW","stepH","resources","filterBackend","sX","sY","dX","dY","createCanvasElement","tmpCanvas","ctx","getContext","clearRect","putImageData","floor","drawImage","getImageData","srcData","data","destImg","createImageData","destData","lanczos","ratioX","ratioY","rcpRatioX","rcpRatioY","range2X","range2Y","cacheLanc","center","y","icenter","process","u","v","weight","idx","a","red","green","blue","alpha","fX","fY","abs","j","sqrt","pow","b","c","d","xDiff","yDiff","chnl","color","origPix","w4","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","x2","weights","weightsAlpha","gxR","gxG","gxB","gxA","centerY","yy","dy","centerX","w0","dx","w","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Resize.mjs","sources":["../../../src/filters/Resize.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type {\n T2DPipelineState,\n TWebGLPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { XY } from '../Point';\n\nexport type TResizeType = 'bilinear' | 'hermite' | 'sliceHack' | 'lanczos';\n\nexport type ResizeOwnProps = {\n resizeType: TResizeType;\n scaleX: number;\n scaleY: number;\n lanczosLobes: number;\n};\n\nexport const resizeDefaultValues: ResizeOwnProps = {\n resizeType: 'hermite',\n scaleX: 1,\n scaleY: 1,\n lanczosLobes: 3,\n};\n\ntype ResizeDuring2DResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n};\n\ntype ResizeDuringWEBGLResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n horizontal: boolean;\n width: number;\n height: number;\n taps: number[];\n tempScale: number;\n dH: number;\n dW: number;\n};\n\n/**\n * Resize image filter class\n * @example\n * const filter = new Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Resize extends BaseFilter<'Resize', ResizeOwnProps> {\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @default\n */\n declare resizeType: ResizeOwnProps['resizeType'];\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n declare scaleX: ResizeOwnProps['scaleX'];\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n declare scaleY: ResizeOwnProps['scaleY'];\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n declare lanczosLobes: ResizeOwnProps['lanczosLobes'];\n\n static type = 'Resize';\n\n static defaults = resizeDefaultValues;\n\n static uniformLocations = ['uDelta', 'uTaps'];\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n this: ResizeDuringWEBGLResize,\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform2fv(\n uniformLocations.uDelta,\n this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]\n );\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n }\n\n getFilterWindow(this: ResizeDuringWEBGLResize) {\n const scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n }\n\n getCacheKey(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return `${this.type}_${filterWindow}`;\n }\n\n getFragmentSource(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return this.generateShader(filterWindow);\n }\n\n getTaps(this: ResizeDuringWEBGLResize) {\n const lobeFunction = this.lanczosCreate(this.lanczosLobes),\n scale = this.tempScale,\n filterWindow = this.getFilterWindow(),\n taps = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n }\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader(filterWindow: number) {\n const offsets = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = `${i}.0 * uDelta`;\n }\n return `\n precision highp float;\n uniform sampler2D uTexture;\n uniform vec2 uDelta;\n varying vec2 vTexCoord;\n uniform float uTaps[${filterWindow}];\n void main() {\n vec4 color = texture2D(uTexture, vTexCoord);\n float sum = 1.0;\n ${offsets\n .map(\n (offset, i) => `\n color += texture2D(uTexture, vTexCoord + ${offset}) * uTaps[${i}] + texture2D(uTexture, vTexCoord - ${offset}) * uTaps[${i}];\n sum += 2.0 * uTaps[${i}];\n `\n )\n .join('\\n')}\n gl_FragColor = color / sum;\n }\n `;\n }\n\n applyToForWebgl(this: ResizeDuringWEBGLResize, options: TWebGLPipelineState) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n super.applyTo(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n super.applyTo(options);\n options.sourceHeight = options.destinationHeight;\n }\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n (this as unknown as ResizeDuringWEBGLResize).applyToForWebgl(options);\n } else {\n (this as unknown as ResizeDuring2DResize).applyTo2d(options);\n }\n }\n\n isNeutralState() {\n return this.scaleX === 1 && this.scaleY === 1;\n }\n\n lanczosCreate(lobes: number) {\n return (x: number) => {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.1920929e-7 && x > -1.1920929e-7) {\n return 1.0;\n }\n x *= Math.PI;\n const xx = x / lobes;\n return ((Math.sin(x) / x) * Math.sin(xx)) / xx;\n };\n }\n\n applyTo2d(this: ResizeDuring2DResize, options: T2DPipelineState) {\n const imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n const oW = imageData.width;\n const oH = imageData.height;\n const dW = Math.round(oW * scaleX);\n const dH = Math.round(oH * scaleY);\n let newData: ImageData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n } else {\n // this should never trigger, is here just for safety net.\n newData = new ImageData(dW, dH);\n }\n options.imageData = newData;\n }\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo(\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ) {\n const imageData = options.imageData;\n const mult = 0.5;\n let doneW = false;\n let doneH = false;\n let stepW = oW * mult;\n let stepH = oH * mult;\n const resources = options.filterBackend.resources;\n let sX = 0;\n let sY = 0;\n const dX = oW;\n let dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = createCanvasElement();\n }\n const tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n const ctx = tmpCanvas.getContext('2d')!;\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = Math.floor(dW);\n dH = Math.floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < Math.floor(stepW * mult)) {\n stepW = Math.floor(stepW * mult);\n } else {\n stepW = dW;\n doneW = true;\n }\n if (dH < Math.floor(stepH * mult)) {\n stepH = Math.floor(stepH * mult);\n } else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n }\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ): ImageData {\n function process(u: number): ImageData {\n let v, i, weight, idx, a, red, green, blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = Math.floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = Math.floor(center.y);\n a = 0;\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = Math.floor(1000 * Math.abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = {};\n }\n for (let j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = Math.floor(1000 * Math.abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(\n Math.sqrt(\n Math.pow(fX * rcpRatioX, 2) + Math.pow(fY * rcpRatioY, 2)\n ) / 1000\n );\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n } else {\n return destImg;\n }\n }\n\n const srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX,\n rcpRatioY = 2 / this.rcpScaleY,\n range2X = Math.ceil((ratioX * this.lanczosLobes) / 2),\n range2Y = Math.ceil((ratioY * this.lanczosLobes) / 2),\n cacheLanc: Record<number, Record<number, number>> = {},\n center: XY = { x: 0, y: 0 },\n icenter: XY = { x: 0, y: 0 };\n\n return process(0);\n }\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ) {\n let a;\n let b;\n let c;\n let d;\n let x;\n let y;\n let i;\n let j;\n let xDiff;\n let yDiff;\n let chnl;\n let color;\n let offset = 0;\n let origPix;\n const ratioX = this.rcpScaleX;\n const ratioY = this.rcpScaleY;\n const w4 = 4 * (oW - 1);\n const img = options.imageData;\n const pixels = img.data;\n const destImage = options.ctx.createImageData(dW, dH);\n const destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = Math.floor(ratioX * j);\n y = Math.floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color =\n a * (1 - xDiff) * (1 - yDiff) +\n b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) +\n d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n }\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number\n ) {\n const ratioW = this.rcpScaleX,\n ratioH = this.rcpScaleY,\n ratioWHalf = Math.ceil(ratioW / 2),\n ratioHHalf = Math.ceil(ratioH / 2),\n img = options.imageData,\n data = img.data,\n img2 = options.ctx.createImageData(dW, dH),\n data2 = img2.data;\n for (let j = 0; j < dH; j++) {\n for (let i = 0; i < dW; i++) {\n const x2 = (i + j * dW) * 4;\n let weight = 0;\n let weights = 0;\n let weightsAlpha = 0;\n let gxR = 0;\n let gxG = 0;\n let gxB = 0;\n let gxA = 0;\n const centerY = (j + 0.5) * ratioH;\n for (let yy = Math.floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n const dy = Math.abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW,\n w0 = dy * dy;\n for (let xx = Math.floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n let dx = Math.abs(centerX - (xx + 0.5)) / ratioWHalf;\n const w = Math.sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = (weight * data[dx + 3]) / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n }\n}\n\nclassRegistry.setClass(Resize);\n"],"names":["resizeDefaultValues","resizeType","scaleX","scaleY","lanczosLobes","Resize","BaseFilter","sendUniformData","gl","uniformLocations","uniform2fv","uDelta","horizontal","width","height","uniform1fv","uTaps","taps","getFilterWindow","scale","tempScale","Math","ceil","getCacheKey","filterWindow","concat","type","getFragmentSource","generateShader","getTaps","lobeFunction","lanczosCreate","Array","i","offsets","map","offset","join","applyToForWebgl","options","passes","sourceWidth","dW","round","dH","sourceHeight","destinationWidth","applyTo","destinationHeight","isWebGLPipelineState","applyTo2d","isNeutralState","lobes","x","PI","xx","sin","imageData","rcpScaleX","rcpScaleY","oW","oH","newData","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","ImageData","mult","doneW","doneH","stepW","stepH","resources","filterBackend","sX","sY","dX","dY","createCanvasElement","tmpCanvas","ctx","getContext","clearRect","putImageData","floor","drawImage","getImageData","process","u","v","weight","idx","a","red","green","blue","alpha","fX","fY","center","ratioX","icenter","y","ratioY","range2X","abs","cacheLanc","j","range2Y","lanczos","sqrt","pow","rcpRatioX","rcpRatioY","srcData","destData","destImg","data","createImageData","b","c","d","xDiff","yDiff","chnl","color","origPix","w4","img","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","x2","weights","weightsAlpha","gxR","gxG","gxB","gxA","centerY","yy","dy","centerX","w0","dx","w","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"Resize.mjs","sources":["../../../src/filters/Resize.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type {\n T2DPipelineState,\n TWebGLPipelineState,\n TWebGLUniformLocationMap,\n} from './typedefs';\nimport { isWebGLPipelineState } from './utils';\nimport { classRegistry } from '../ClassRegistry';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { XY } from '../Point';\n\nexport type TResizeType = 'bilinear' | 'hermite' | 'sliceHack' | 'lanczos';\n\nexport type ResizeOwnProps = {\n resizeType: TResizeType;\n scaleX: number;\n scaleY: number;\n lanczosLobes: number;\n};\n\nexport const resizeDefaultValues: ResizeOwnProps = {\n resizeType: 'hermite',\n scaleX: 1,\n scaleY: 1,\n lanczosLobes: 3,\n};\n\ntype ResizeDuring2DResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n};\n\ntype ResizeDuringWEBGLResize = Resize & {\n rcpScaleX: number;\n rcpScaleY: number;\n horizontal: boolean;\n width: number;\n height: number;\n taps: number[];\n tempScale: number;\n dH: number;\n dW: number;\n};\n\n/**\n * Resize image filter class\n * @example\n * const filter = new Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\nexport class Resize extends BaseFilter<'Resize', ResizeOwnProps> {\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @default\n */\n declare resizeType: ResizeOwnProps['resizeType'];\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n declare scaleX: ResizeOwnProps['scaleX'];\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n declare scaleY: ResizeOwnProps['scaleY'];\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n declare lanczosLobes: ResizeOwnProps['lanczosLobes'];\n\n static type = 'Resize';\n\n static defaults = resizeDefaultValues;\n\n static uniformLocations = ['uDelta', 'uTaps'];\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n this: ResizeDuringWEBGLResize,\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform2fv(\n uniformLocations.uDelta,\n this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height],\n );\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n }\n\n getFilterWindow(this: ResizeDuringWEBGLResize) {\n const scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n }\n\n getCacheKey(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return `${this.type}_${filterWindow}`;\n }\n\n getFragmentSource(this: ResizeDuringWEBGLResize): string {\n const filterWindow = this.getFilterWindow();\n return this.generateShader(filterWindow);\n }\n\n getTaps(this: ResizeDuringWEBGLResize) {\n const lobeFunction = this.lanczosCreate(this.lanczosLobes),\n scale = this.tempScale,\n filterWindow = this.getFilterWindow(),\n taps = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n }\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader(filterWindow: number) {\n const offsets = new Array(filterWindow);\n for (let i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = `${i}.0 * uDelta`;\n }\n return `\n precision highp float;\n uniform sampler2D uTexture;\n uniform vec2 uDelta;\n varying vec2 vTexCoord;\n uniform float uTaps[${filterWindow}];\n void main() {\n vec4 color = texture2D(uTexture, vTexCoord);\n float sum = 1.0;\n ${offsets\n .map(\n (offset, i) => `\n color += texture2D(uTexture, vTexCoord + ${offset}) * uTaps[${i}] + texture2D(uTexture, vTexCoord - ${offset}) * uTaps[${i}];\n sum += 2.0 * uTaps[${i}];\n `,\n )\n .join('\\n')}\n gl_FragColor = color / sum;\n }\n `;\n }\n\n applyToForWebgl(this: ResizeDuringWEBGLResize, options: TWebGLPipelineState) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n super.applyTo(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n super.applyTo(options);\n options.sourceHeight = options.destinationHeight;\n }\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo(options: TWebGLPipelineState | T2DPipelineState) {\n if (isWebGLPipelineState(options)) {\n (this as unknown as ResizeDuringWEBGLResize).applyToForWebgl(options);\n } else {\n (this as unknown as ResizeDuring2DResize).applyTo2d(options);\n }\n }\n\n isNeutralState() {\n return this.scaleX === 1 && this.scaleY === 1;\n }\n\n lanczosCreate(lobes: number) {\n return (x: number) => {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.1920929e-7 && x > -1.1920929e-7) {\n return 1.0;\n }\n x *= Math.PI;\n const xx = x / lobes;\n return ((Math.sin(x) / x) * Math.sin(xx)) / xx;\n };\n }\n\n applyTo2d(this: ResizeDuring2DResize, options: T2DPipelineState) {\n const imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n const oW = imageData.width;\n const oH = imageData.height;\n const dW = Math.round(oW * scaleX);\n const dH = Math.round(oH * scaleY);\n let newData: ImageData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n } else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n } else {\n // this should never trigger, is here just for safety net.\n newData = new ImageData(dW, dH);\n }\n options.imageData = newData;\n }\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo(\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ) {\n const imageData = options.imageData;\n const mult = 0.5;\n let doneW = false;\n let doneH = false;\n let stepW = oW * mult;\n let stepH = oH * mult;\n const resources = options.filterBackend.resources;\n let sX = 0;\n let sY = 0;\n const dX = oW;\n let dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = createCanvasElement();\n }\n const tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n const ctx = tmpCanvas.getContext('2d')!;\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = Math.floor(dW);\n dH = Math.floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < Math.floor(stepW * mult)) {\n stepW = Math.floor(stepW * mult);\n } else {\n stepW = dW;\n doneW = true;\n }\n if (dH < Math.floor(stepH * mult)) {\n stepH = Math.floor(stepH * mult);\n } else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n }\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ): ImageData {\n function process(u: number): ImageData {\n let v, i, weight, idx, a, red, green, blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = Math.floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = Math.floor(center.y);\n a = 0;\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = Math.floor(1000 * Math.abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = {};\n }\n for (let j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = Math.floor(1000 * Math.abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(\n Math.sqrt(\n Math.pow(fX * rcpRatioX, 2) + Math.pow(fY * rcpRatioY, 2),\n ) / 1000,\n );\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n } else {\n return destImg;\n }\n }\n\n const srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX,\n rcpRatioY = 2 / this.rcpScaleY,\n range2X = Math.ceil((ratioX * this.lanczosLobes) / 2),\n range2Y = Math.ceil((ratioY * this.lanczosLobes) / 2),\n cacheLanc: Record<number, Record<number, number>> = {},\n center: XY = { x: 0, y: 0 },\n icenter: XY = { x: 0, y: 0 };\n\n return process(0);\n }\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ) {\n let a;\n let b;\n let c;\n let d;\n let x;\n let y;\n let i;\n let j;\n let xDiff;\n let yDiff;\n let chnl;\n let color;\n let offset = 0;\n let origPix;\n const ratioX = this.rcpScaleX;\n const ratioY = this.rcpScaleY;\n const w4 = 4 * (oW - 1);\n const img = options.imageData;\n const pixels = img.data;\n const destImage = options.ctx.createImageData(dW, dH);\n const destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = Math.floor(ratioX * j);\n y = Math.floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color =\n a * (1 - xDiff) * (1 - yDiff) +\n b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) +\n d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n }\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize(\n this: ResizeDuring2DResize,\n options: T2DPipelineState,\n oW: number,\n oH: number,\n dW: number,\n dH: number,\n ) {\n const ratioW = this.rcpScaleX,\n ratioH = this.rcpScaleY,\n ratioWHalf = Math.ceil(ratioW / 2),\n ratioHHalf = Math.ceil(ratioH / 2),\n img = options.imageData,\n data = img.data,\n img2 = options.ctx.createImageData(dW, dH),\n data2 = img2.data;\n for (let j = 0; j < dH; j++) {\n for (let i = 0; i < dW; i++) {\n const x2 = (i + j * dW) * 4;\n let weight = 0;\n let weights = 0;\n let weightsAlpha = 0;\n let gxR = 0;\n let gxG = 0;\n let gxB = 0;\n let gxA = 0;\n const centerY = (j + 0.5) * ratioH;\n for (let yy = Math.floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n const dy = Math.abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW,\n w0 = dy * dy;\n for (let xx = Math.floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n let dx = Math.abs(centerX - (xx + 0.5)) / ratioWHalf;\n const w = Math.sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = (weight * data[dx + 3]) / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n }\n}\n\nclassRegistry.setClass(Resize);\n"],"names":["resizeDefaultValues","resizeType","scaleX","scaleY","lanczosLobes","Resize","BaseFilter","sendUniformData","gl","uniformLocations","uniform2fv","uDelta","horizontal","width","height","uniform1fv","uTaps","taps","getFilterWindow","scale","tempScale","Math","ceil","getCacheKey","filterWindow","concat","type","getFragmentSource","generateShader","getTaps","lobeFunction","lanczosCreate","Array","i","offsets","map","offset","join","applyToForWebgl","options","passes","sourceWidth","dW","round","dH","sourceHeight","destinationWidth","applyTo","destinationHeight","isWebGLPipelineState","applyTo2d","isNeutralState","lobes","x","PI","xx","sin","imageData","rcpScaleX","rcpScaleY","oW","oH","newData","sliceByTwo","hermiteFastResize","bilinearFiltering","lanczosResize","ImageData","mult","doneW","doneH","stepW","stepH","resources","filterBackend","sX","sY","dX","dY","createCanvasElement","tmpCanvas","ctx","getContext","clearRect","putImageData","floor","drawImage","getImageData","process","u","v","weight","idx","a","red","green","blue","alpha","fX","fY","center","ratioX","icenter","y","ratioY","range2X","abs","cacheLanc","j","range2Y","lanczos","sqrt","pow","rcpRatioX","rcpRatioY","srcData","destData","destImg","data","createImageData","b","c","d","xDiff","yDiff","chnl","color","origPix","w4","img","pixels","destImage","destPixels","ratioW","ratioH","ratioWHalf","ratioHHalf","img2","data2","x2","weights","weightsAlpha","gxR","gxG","gxB","gxA","centerY","yy","dy","centerX","w0","dx","w","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;AAoBO,MAAMA,mBAAmC,GAAG;AACjDC,EAAAA,UAAU,EAAE,SAAS;AACrBC,EAAAA,MAAM,EAAE,CAAC;AACTC,EAAAA,MAAM,EAAE,CAAC;AACTC,EAAAA,YAAY,EAAE,CAAA;AAChB,EAAC;AAmBD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,MAAM,SAASC,UAAU,CAA2B;AAoC/D;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,eAAeA,CAEbC,EAAyB,EACzBC,gBAA0C,EAC1C;AACAD,IAAAA,EAAE,CAACE,UAAU,CACXD,gBAAgB,CAACE,MAAM,EACvB,IAAI,CAACC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI,CAACC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAACC,MAAM,CAC7D,CAAC,CAAA;IACDN,EAAE,CAACO,UAAU,CAACN,gBAAgB,CAACO,KAAK,EAAE,IAAI,CAACC,IAAI,CAAC,CAAA;AAClD,GAAA;AAEAC,EAAAA,eAAeA,GAAgC;AAC7C,IAAA,MAAMC,KAAK,GAAG,IAAI,CAACC,SAAS,CAAA;IAC5B,OAAOC,IAAI,CAACC,IAAI,CAAC,IAAI,CAAClB,YAAY,GAAGe,KAAK,CAAC,CAAA;AAC7C,GAAA;AAEAI,EAAAA,WAAWA,GAAwC;AACjD,IAAA,MAAMC,YAAY,GAAG,IAAI,CAACN,eAAe,EAAE,CAAA;IAC3C,OAAAO,EAAAA,CAAAA,MAAA,CAAU,IAAI,CAACC,IAAI,EAAAD,GAAAA,CAAAA,CAAAA,MAAA,CAAID,YAAY,CAAA,CAAA;AACrC,GAAA;AAEAG,EAAAA,iBAAiBA,GAAwC;AACvD,IAAA,MAAMH,YAAY,GAAG,IAAI,CAACN,eAAe,EAAE,CAAA;AAC3C,IAAA,OAAO,IAAI,CAACU,cAAc,CAACJ,YAAY,CAAC,CAAA;AAC1C,GAAA;AAEAK,EAAAA,OAAOA,GAAgC;IACrC,MAAMC,YAAY,GAAG,IAAI,CAACC,aAAa,CAAC,IAAI,CAAC3B,YAAY,CAAC;MACxDe,KAAK,GAAG,IAAI,CAACC,SAAS;AACtBI,MAAAA,YAAY,GAAG,IAAI,CAACN,eAAe,EAAE;AACrCD,MAAAA,IAAI,GAAG,IAAIe,KAAK,CAACR,YAAY,CAAC,CAAA;IAChC,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIT,YAAY,EAAES,CAAC,EAAE,EAAE;MACtChB,IAAI,CAACgB,CAAC,GAAG,CAAC,CAAC,GAAGH,YAAY,CAACG,CAAC,GAAGd,KAAK,CAAC,CAAA;AACvC,KAAA;AACA,IAAA,OAAOF,IAAI,CAAA;AACb,GAAA;;AAEA;AACF;AACA;AACA;EACEW,cAAcA,CAACJ,YAAoB,EAAE;AACnC,IAAA,MAAMU,OAAO,GAAG,IAAIF,KAAK,CAACR,YAAY,CAAC,CAAA;IACvC,KAAK,IAAIS,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIT,YAAY,EAAES,CAAC,EAAE,EAAE;MACtCC,OAAO,CAACD,CAAC,GAAG,CAAC,CAAC,GAAAR,EAAAA,CAAAA,MAAA,CAAMQ,CAAC,EAAa,aAAA,CAAA,CAAA;AACpC,KAAA;AACA,IAAA,OAAA,0JAAA,CAAAR,MAAA,CAKwBD,YAAY,uHAAAC,MAAA,CAI9BS,OAAO,CACNC,GAAG,CACF,CAACC,MAAM,EAAEH,CAAC,iEAAAR,MAAA,CACmCW,MAAM,EAAAX,YAAAA,CAAAA,CAAAA,MAAA,CAAaQ,CAAC,0CAAAR,MAAA,CAAuCW,MAAM,EAAAX,YAAAA,CAAAA,CAAAA,MAAA,CAAaQ,CAAC,EAAA,uCAAA,CAAA,CAAAR,MAAA,CACrGQ,CAAC,EAE1B,kBAAA,CAAA,CAAC,CACAI,IAAI,CAAC,IAAI,CAAC,EAAA,sDAAA,CAAA,CAAA;AAInB,GAAA;EAEAC,eAAeA,CAAgCC,OAA4B,EAAE;IAC3EA,OAAO,CAACC,MAAM,EAAE,CAAA;AAChB,IAAA,IAAI,CAAC3B,KAAK,GAAG0B,OAAO,CAACE,WAAW,CAAA;IAChC,IAAI,CAAC7B,UAAU,GAAG,IAAI,CAAA;AACtB,IAAA,IAAI,CAAC8B,EAAE,GAAGrB,IAAI,CAACsB,KAAK,CAAC,IAAI,CAAC9B,KAAK,GAAG,IAAI,CAACX,MAAM,CAAC,CAAA;AAC9C,IAAA,IAAI,CAAC0C,EAAE,GAAGL,OAAO,CAACM,YAAY,CAAA;IAC9B,IAAI,CAACzB,SAAS,GAAG,IAAI,CAACsB,EAAE,GAAG,IAAI,CAAC7B,KAAK,CAAA;AACrC,IAAA,IAAI,CAACI,IAAI,GAAG,IAAI,CAACY,OAAO,EAAE,CAAA;AAC1BU,IAAAA,OAAO,CAACO,gBAAgB,GAAG,IAAI,CAACJ,EAAE,CAAA;AAClC,IAAA,KAAK,CAACK,OAAO,CAACR,OAAO,CAAC,CAAA;AACtBA,IAAAA,OAAO,CAACE,WAAW,GAAGF,OAAO,CAACO,gBAAgB,CAAA;AAE9C,IAAA,IAAI,CAAChC,MAAM,GAAGyB,OAAO,CAACM,YAAY,CAAA;IAClC,IAAI,CAACjC,UAAU,GAAG,KAAK,CAAA;AACvB,IAAA,IAAI,CAACgC,EAAE,GAAGvB,IAAI,CAACsB,KAAK,CAAC,IAAI,CAAC7B,MAAM,GAAG,IAAI,CAACX,MAAM,CAAC,CAAA;IAC/C,IAAI,CAACiB,SAAS,GAAG,IAAI,CAACwB,EAAE,GAAG,IAAI,CAAC9B,MAAM,CAAA;AACtC,IAAA,IAAI,CAACG,IAAI,GAAG,IAAI,CAACY,OAAO,EAAE,CAAA;AAC1BU,IAAAA,OAAO,CAACS,iBAAiB,GAAG,IAAI,CAACJ,EAAE,CAAA;AACnC,IAAA,KAAK,CAACG,OAAO,CAACR,OAAO,CAAC,CAAA;AACtBA,IAAAA,OAAO,CAACM,YAAY,GAAGN,OAAO,CAACS,iBAAiB,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACED,OAAOA,CAACR,OAA+C,EAAE;AACvD,IAAA,IAAIU,oBAAoB,CAACV,OAAO,CAAC,EAAE;AAChC,MAAA,IAAI,CAAwCD,eAAe,CAACC,OAAO,CAAC,CAAA;AACvE,KAAC,MAAM;AACJ,MAAA,IAAI,CAAqCW,SAAS,CAACX,OAAO,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;AAEAY,EAAAA,cAAcA,GAAG;IACf,OAAO,IAAI,CAACjD,MAAM,KAAK,CAAC,IAAI,IAAI,CAACC,MAAM,KAAK,CAAC,CAAA;AAC/C,GAAA;EAEA4B,aAAaA,CAACqB,KAAa,EAAE;AAC3B,IAAA,OAAQC,CAAS,IAAK;MACpB,IAAIA,CAAC,IAAID,KAAK,IAAIC,CAAC,IAAI,CAACD,KAAK,EAAE;AAC7B,QAAA,OAAO,GAAG,CAAA;AACZ,OAAA;MACA,IAAIC,CAAC,GAAG,YAAY,IAAIA,CAAC,GAAG,CAAC,YAAY,EAAE;AACzC,QAAA,OAAO,GAAG,CAAA;AACZ,OAAA;MACAA,CAAC,IAAIhC,IAAI,CAACiC,EAAE,CAAA;AACZ,MAAA,MAAMC,EAAE,GAAGF,CAAC,GAAGD,KAAK,CAAA;AACpB,MAAA,OAAS/B,IAAI,CAACmC,GAAG,CAACH,CAAC,CAAC,GAAGA,CAAC,GAAIhC,IAAI,CAACmC,GAAG,CAACD,EAAE,CAAC,GAAIA,EAAE,CAAA;KAC/C,CAAA;AACH,GAAA;EAEAL,SAASA,CAA6BX,OAAyB,EAAE;AAC/D,IAAA,MAAMkB,SAAS,GAAGlB,OAAO,CAACkB,SAAS;MACjCvD,MAAM,GAAG,IAAI,CAACA,MAAM;MACpBC,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AAEtB,IAAA,IAAI,CAACuD,SAAS,GAAG,CAAC,GAAGxD,MAAM,CAAA;AAC3B,IAAA,IAAI,CAACyD,SAAS,GAAG,CAAC,GAAGxD,MAAM,CAAA;AAE3B,IAAA,MAAMyD,EAAE,GAAGH,SAAS,CAAC5C,KAAK,CAAA;AAC1B,IAAA,MAAMgD,EAAE,GAAGJ,SAAS,CAAC3C,MAAM,CAAA;IAC3B,MAAM4B,EAAE,GAAGrB,IAAI,CAACsB,KAAK,CAACiB,EAAE,GAAG1D,MAAM,CAAC,CAAA;IAClC,MAAM0C,EAAE,GAAGvB,IAAI,CAACsB,KAAK,CAACkB,EAAE,GAAG1D,MAAM,CAAC,CAAA;AAClC,IAAA,IAAI2D,OAAkB,CAAA;AAEtB,IAAA,IAAI,IAAI,CAAC7D,UAAU,KAAK,WAAW,EAAE;AACnC6D,MAAAA,OAAO,GAAG,IAAI,CAACC,UAAU,CAACxB,OAAO,EAAEqB,EAAE,EAAEC,EAAE,EAAEnB,EAAE,EAAEE,EAAE,CAAC,CAAA;AACpD,KAAC,MAAM,IAAI,IAAI,CAAC3C,UAAU,KAAK,SAAS,EAAE;AACxC6D,MAAAA,OAAO,GAAG,IAAI,CAACE,iBAAiB,CAACzB,OAAO,EAAEqB,EAAE,EAAEC,EAAE,EAAEnB,EAAE,EAAEE,EAAE,CAAC,CAAA;AAC3D,KAAC,MAAM,IAAI,IAAI,CAAC3C,UAAU,KAAK,UAAU,EAAE;AACzC6D,MAAAA,OAAO,GAAG,IAAI,CAACG,iBAAiB,CAAC1B,OAAO,EAAEqB,EAAE,EAAEC,EAAE,EAAEnB,EAAE,EAAEE,EAAE,CAAC,CAAA;AAC3D,KAAC,MAAM,IAAI,IAAI,CAAC3C,UAAU,KAAK,SAAS,EAAE;AACxC6D,MAAAA,OAAO,GAAG,IAAI,CAACI,aAAa,CAAC3B,OAAO,EAAEqB,EAAE,EAAEC,EAAE,EAAEnB,EAAE,EAAEE,EAAE,CAAC,CAAA;AACvD,KAAC,MAAM;AACL;AACAkB,MAAAA,OAAO,GAAG,IAAIK,SAAS,CAACzB,EAAE,EAAEE,EAAE,CAAC,CAAA;AACjC,KAAA;IACAL,OAAO,CAACkB,SAAS,GAAGK,OAAO,CAAA;AAC7B,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEC,UAAUA,CACRxB,OAAyB,EACzBqB,EAAU,EACVC,EAAU,EACVnB,EAAU,EACVE,EAAU,EACV;AACA,IAAA,MAAMa,SAAS,GAAGlB,OAAO,CAACkB,SAAS,CAAA;IACnC,MAAMW,IAAI,GAAG,GAAG,CAAA;IAChB,IAAIC,KAAK,GAAG,KAAK,CAAA;IACjB,IAAIC,KAAK,GAAG,KAAK,CAAA;AACjB,IAAA,IAAIC,KAAK,GAAGX,EAAE,GAAGQ,IAAI,CAAA;AACrB,IAAA,IAAII,KAAK,GAAGX,EAAE,GAAGO,IAAI,CAAA;AACrB,IAAA,MAAMK,SAAS,GAAGlC,OAAO,CAACmC,aAAa,CAACD,SAAS,CAAA;IACjD,IAAIE,EAAE,GAAG,CAAC,CAAA;IACV,IAAIC,EAAE,GAAG,CAAC,CAAA;IACV,MAAMC,EAAE,GAAGjB,EAAE,CAAA;IACb,IAAIkB,EAAE,GAAG,CAAC,CAAA;AACV,IAAA,IAAI,CAACL,SAAS,CAACV,UAAU,EAAE;AACzBU,MAAAA,SAAS,CAACV,UAAU,GAAGgB,mBAAmB,EAAE,CAAA;AAC9C,KAAA;AACA,IAAA,MAAMC,SAAS,GAAGP,SAAS,CAACV,UAAU,CAAA;AACtC,IAAA,IAAIiB,SAAS,CAACnE,KAAK,GAAG+C,EAAE,GAAG,GAAG,IAAIoB,SAAS,CAAClE,MAAM,GAAG+C,EAAE,EAAE;AACvDmB,MAAAA,SAAS,CAACnE,KAAK,GAAG+C,EAAE,GAAG,GAAG,CAAA;MAC1BoB,SAAS,CAAClE,MAAM,GAAG+C,EAAE,CAAA;AACvB,KAAA;AACA,IAAA,MAAMoB,GAAG,GAAGD,SAAS,CAACE,UAAU,CAAC,IAAI,CAAE,CAAA;AACvCD,IAAAA,GAAG,CAACE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEvB,EAAE,GAAG,GAAG,EAAEC,EAAE,CAAC,CAAA;IACjCoB,GAAG,CAACG,YAAY,CAAC3B,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEjCf,IAAAA,EAAE,GAAGrB,IAAI,CAACgE,KAAK,CAAC3C,EAAE,CAAC,CAAA;AACnBE,IAAAA,EAAE,GAAGvB,IAAI,CAACgE,KAAK,CAACzC,EAAE,CAAC,CAAA;AAEnB,IAAA,OAAO,CAACyB,KAAK,IAAI,CAACC,KAAK,EAAE;AACvBV,MAAAA,EAAE,GAAGW,KAAK,CAAA;AACVV,MAAAA,EAAE,GAAGW,KAAK,CAAA;MACV,IAAI9B,EAAE,GAAGrB,IAAI,CAACgE,KAAK,CAACd,KAAK,GAAGH,IAAI,CAAC,EAAE;QACjCG,KAAK,GAAGlD,IAAI,CAACgE,KAAK,CAACd,KAAK,GAAGH,IAAI,CAAC,CAAA;AAClC,OAAC,MAAM;AACLG,QAAAA,KAAK,GAAG7B,EAAE,CAAA;AACV2B,QAAAA,KAAK,GAAG,IAAI,CAAA;AACd,OAAA;MACA,IAAIzB,EAAE,GAAGvB,IAAI,CAACgE,KAAK,CAACb,KAAK,GAAGJ,IAAI,CAAC,EAAE;QACjCI,KAAK,GAAGnD,IAAI,CAACgE,KAAK,CAACb,KAAK,GAAGJ,IAAI,CAAC,CAAA;AAClC,OAAC,MAAM;AACLI,QAAAA,KAAK,GAAG5B,EAAE,CAAA;AACV0B,QAAAA,KAAK,GAAG,IAAI,CAAA;AACd,OAAA;MACAW,GAAG,CAACK,SAAS,CAACN,SAAS,EAAEL,EAAE,EAAEC,EAAE,EAAEhB,EAAE,EAAEC,EAAE,EAAEgB,EAAE,EAAEC,EAAE,EAAEP,KAAK,EAAEC,KAAK,CAAC,CAAA;AAC9DG,MAAAA,EAAE,GAAGE,EAAE,CAAA;AACPD,MAAAA,EAAE,GAAGE,EAAE,CAAA;AACPA,MAAAA,EAAE,IAAIN,KAAK,CAAA;AACb,KAAA;IACA,OAAOS,GAAG,CAACM,YAAY,CAACZ,EAAE,EAAEC,EAAE,EAAElC,EAAE,EAAEE,EAAE,CAAC,CAAA;AACzC,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEsB,aAAaA,CAEX3B,OAAyB,EACzBqB,EAAU,EACVC,EAAU,EACVnB,EAAU,EACVE,EAAU,EACC;IACX,SAAS4C,OAAOA,CAACC,CAAS,EAAa;MACrC,IAAIC,CAAC,EAAEzD,CAAC,EAAE0D,MAAM,EAAEC,GAAG,EAAEC,CAAC,EAAEC,GAAG,EAAEC,KAAK,EAAEC,IAAI,EAAEC,KAAK,EAAEC,EAAE,EAAEC,EAAE,CAAA;MACzDC,MAAM,CAAC/C,CAAC,GAAG,CAACoC,CAAC,GAAG,GAAG,IAAIY,MAAM,CAAA;MAC7BC,OAAO,CAACjD,CAAC,GAAGhC,IAAI,CAACgE,KAAK,CAACe,MAAM,CAAC/C,CAAC,CAAC,CAAA;MAChC,KAAKqC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,EAAE,EAAE8C,CAAC,EAAE,EAAE;QACvBU,MAAM,CAACG,CAAC,GAAG,CAACb,CAAC,GAAG,GAAG,IAAIc,MAAM,CAAA;QAC7BF,OAAO,CAACC,CAAC,GAAGlF,IAAI,CAACgE,KAAK,CAACe,MAAM,CAACG,CAAC,CAAC,CAAA;AAChCV,QAAAA,CAAC,GAAG,CAAC,CAAA;AACLC,QAAAA,GAAG,GAAG,CAAC,CAAA;AACPC,QAAAA,KAAK,GAAG,CAAC,CAAA;AACTC,QAAAA,IAAI,GAAG,CAAC,CAAA;AACRC,QAAAA,KAAK,GAAG,CAAC,CAAA;AACT,QAAA,KAAKhE,CAAC,GAAGqE,OAAO,CAACjD,CAAC,GAAGoD,OAAO,EAAExE,CAAC,IAAIqE,OAAO,CAACjD,CAAC,GAAGoD,OAAO,EAAExE,CAAC,EAAE,EAAE;AAC3D,UAAA,IAAIA,CAAC,GAAG,CAAC,IAAIA,CAAC,IAAI2B,EAAE,EAAE;AACpB,YAAA,SAAA;AACF,WAAA;AACAsC,UAAAA,EAAE,GAAG7E,IAAI,CAACgE,KAAK,CAAC,IAAI,GAAGhE,IAAI,CAACqF,GAAG,CAACzE,CAAC,GAAGmE,MAAM,CAAC/C,CAAC,CAAC,CAAC,CAAA;AAC9C,UAAA,IAAI,CAACsD,SAAS,CAACT,EAAE,CAAC,EAAE;AAClBS,YAAAA,SAAS,CAACT,EAAE,CAAC,GAAG,EAAE,CAAA;AACpB,WAAA;AACA,UAAA,KAAK,IAAIU,CAAC,GAAGN,OAAO,CAACC,CAAC,GAAGM,OAAO,EAAED,CAAC,IAAIN,OAAO,CAACC,CAAC,GAAGM,OAAO,EAAED,CAAC,EAAE,EAAE;AAC/D,YAAA,IAAIA,CAAC,GAAG,CAAC,IAAIA,CAAC,IAAI/C,EAAE,EAAE;AACpB,cAAA,SAAA;AACF,aAAA;AACAsC,YAAAA,EAAE,GAAG9E,IAAI,CAACgE,KAAK,CAAC,IAAI,GAAGhE,IAAI,CAACqF,GAAG,CAACE,CAAC,GAAGR,MAAM,CAACG,CAAC,CAAC,CAAC,CAAA;YAC9C,IAAI,CAACI,SAAS,CAACT,EAAE,CAAC,CAACC,EAAE,CAAC,EAAE;AACtBQ,cAAAA,SAAS,CAACT,EAAE,CAAC,CAACC,EAAE,CAAC,GAAGW,OAAO,CACzBzF,IAAI,CAAC0F,IAAI,CACP1F,IAAI,CAAC2F,GAAG,CAACd,EAAE,GAAGe,SAAS,EAAE,CAAC,CAAC,GAAG5F,IAAI,CAAC2F,GAAG,CAACb,EAAE,GAAGe,SAAS,EAAE,CAAC,CAC1D,CAAC,GAAG,IACN,CAAC,CAAA;AACH,aAAA;AACAvB,YAAAA,MAAM,GAAGgB,SAAS,CAACT,EAAE,CAAC,CAACC,EAAE,CAAC,CAAA;YAC1B,IAAIR,MAAM,GAAG,CAAC,EAAE;cACdC,GAAG,GAAG,CAACgB,CAAC,GAAGhD,EAAE,GAAG3B,CAAC,IAAI,CAAC,CAAA;AACtB4D,cAAAA,CAAC,IAAIF,MAAM,CAAA;AACXG,cAAAA,GAAG,IAAIH,MAAM,GAAGwB,OAAO,CAACvB,GAAG,CAAC,CAAA;cAC5BG,KAAK,IAAIJ,MAAM,GAAGwB,OAAO,CAACvB,GAAG,GAAG,CAAC,CAAC,CAAA;cAClCI,IAAI,IAAIL,MAAM,GAAGwB,OAAO,CAACvB,GAAG,GAAG,CAAC,CAAC,CAAA;cACjCK,KAAK,IAAIN,MAAM,GAAGwB,OAAO,CAACvB,GAAG,GAAG,CAAC,CAAC,CAAA;AACpC,aAAA;AACF,WAAA;AACF,SAAA;QACAA,GAAG,GAAG,CAACF,CAAC,GAAGhD,EAAE,GAAG+C,CAAC,IAAI,CAAC,CAAA;AACtB2B,QAAAA,QAAQ,CAACxB,GAAG,CAAC,GAAGE,GAAG,GAAGD,CAAC,CAAA;QACvBuB,QAAQ,CAACxB,GAAG,GAAG,CAAC,CAAC,GAAGG,KAAK,GAAGF,CAAC,CAAA;QAC7BuB,QAAQ,CAACxB,GAAG,GAAG,CAAC,CAAC,GAAGI,IAAI,GAAGH,CAAC,CAAA;QAC5BuB,QAAQ,CAACxB,GAAG,GAAG,CAAC,CAAC,GAAGK,KAAK,GAAGJ,CAAC,CAAA;AAC/B,OAAA;AAEA,MAAA,IAAI,EAAEJ,CAAC,GAAG/C,EAAE,EAAE;QACZ,OAAO8C,OAAO,CAACC,CAAC,CAAC,CAAA;AACnB,OAAC,MAAM;AACL,QAAA,OAAO4B,OAAO,CAAA;AAChB,OAAA;AACF,KAAA;AAEA,IAAA,MAAMF,OAAO,GAAG5E,OAAO,CAACkB,SAAS,CAAC6D,IAAI;MACpCD,OAAO,GAAG9E,OAAO,CAAC0C,GAAG,CAACsC,eAAe,CAAC7E,EAAE,EAAEE,EAAE,CAAC;MAC7CwE,QAAQ,GAAGC,OAAO,CAACC,IAAI;MACvBR,OAAO,GAAG,IAAI,CAAC/E,aAAa,CAAC,IAAI,CAAC3B,YAAY,CAAC;MAC/CiG,MAAM,GAAG,IAAI,CAAC3C,SAAS;MACvB8C,MAAM,GAAG,IAAI,CAAC7C,SAAS;AACvBsD,MAAAA,SAAS,GAAG,CAAC,GAAG,IAAI,CAACvD,SAAS;AAC9BwD,MAAAA,SAAS,GAAG,CAAC,GAAG,IAAI,CAACvD,SAAS;AAC9B8C,MAAAA,OAAO,GAAGpF,IAAI,CAACC,IAAI,CAAE+E,MAAM,GAAG,IAAI,CAACjG,YAAY,GAAI,CAAC,CAAC;AACrDyG,MAAAA,OAAO,GAAGxF,IAAI,CAACC,IAAI,CAAEkF,MAAM,GAAG,IAAI,CAACpG,YAAY,GAAI,CAAC,CAAC;MACrDuG,SAAiD,GAAG,EAAE;AACtDP,MAAAA,MAAU,GAAG;AAAE/C,QAAAA,CAAC,EAAE,CAAC;AAAEkD,QAAAA,CAAC,EAAE,CAAA;OAAG;AAC3BD,MAAAA,OAAW,GAAG;AAAEjD,QAAAA,CAAC,EAAE,CAAC;AAAEkD,QAAAA,CAAC,EAAE,CAAA;OAAG,CAAA;IAE9B,OAAOf,OAAO,CAAC,CAAC,CAAC,CAAA;AACnB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEvB,iBAAiBA,CAEf1B,OAAyB,EACzBqB,EAAU,EACVC,EAAU,EACVnB,EAAU,EACVE,EAAU,EACV;AACA,IAAA,IAAIiD,CAAC,CAAA;AACL,IAAA,IAAI2B,CAAC,CAAA;AACL,IAAA,IAAIC,CAAC,CAAA;AACL,IAAA,IAAIC,CAAC,CAAA;AACL,IAAA,IAAIrE,CAAC,CAAA;AACL,IAAA,IAAIkD,CAAC,CAAA;AACL,IAAA,IAAItE,CAAC,CAAA;AACL,IAAA,IAAI2E,CAAC,CAAA;AACL,IAAA,IAAIe,KAAK,CAAA;AACT,IAAA,IAAIC,KAAK,CAAA;AACT,IAAA,IAAIC,IAAI,CAAA;AACR,IAAA,IAAIC,KAAK,CAAA;IACT,IAAI1F,MAAM,GAAG,CAAC,CAAA;AACd,IAAA,IAAI2F,OAAO,CAAA;AACX,IAAA,MAAM1B,MAAM,GAAG,IAAI,CAAC3C,SAAS,CAAA;AAC7B,IAAA,MAAM8C,MAAM,GAAG,IAAI,CAAC7C,SAAS,CAAA;AAC7B,IAAA,MAAMqE,EAAE,GAAG,CAAC,IAAIpE,EAAE,GAAG,CAAC,CAAC,CAAA;AACvB,IAAA,MAAMqE,GAAG,GAAG1F,OAAO,CAACkB,SAAS,CAAA;AAC7B,IAAA,MAAMyE,MAAM,GAAGD,GAAG,CAACX,IAAI,CAAA;IACvB,MAAMa,SAAS,GAAG5F,OAAO,CAAC0C,GAAG,CAACsC,eAAe,CAAC7E,EAAE,EAAEE,EAAE,CAAC,CAAA;AACrD,IAAA,MAAMwF,UAAU,GAAGD,SAAS,CAACb,IAAI,CAAA;IACjC,KAAKrF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,EAAE,EAAEX,CAAC,EAAE,EAAE;MACvB,KAAK2E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGlE,EAAE,EAAEkE,CAAC,EAAE,EAAE;QACvBvD,CAAC,GAAGhC,IAAI,CAACgE,KAAK,CAACgB,MAAM,GAAGO,CAAC,CAAC,CAAA;QAC1BL,CAAC,GAAGlF,IAAI,CAACgE,KAAK,CAACmB,MAAM,GAAGvE,CAAC,CAAC,CAAA;AAC1B0F,QAAAA,KAAK,GAAGtB,MAAM,GAAGO,CAAC,GAAGvD,CAAC,CAAA;AACtBuE,QAAAA,KAAK,GAAGpB,MAAM,GAAGvE,CAAC,GAAGsE,CAAC,CAAA;QACtBwB,OAAO,GAAG,CAAC,IAAIxB,CAAC,GAAG3C,EAAE,GAAGP,CAAC,CAAC,CAAA;QAE1B,KAAKwE,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EAAE;AAC/BhC,UAAAA,CAAC,GAAGqC,MAAM,CAACH,OAAO,GAAGF,IAAI,CAAC,CAAA;UAC1BL,CAAC,GAAGU,MAAM,CAACH,OAAO,GAAG,CAAC,GAAGF,IAAI,CAAC,CAAA;UAC9BJ,CAAC,GAAGS,MAAM,CAACH,OAAO,GAAGC,EAAE,GAAGH,IAAI,CAAC,CAAA;UAC/BH,CAAC,GAAGQ,MAAM,CAACH,OAAO,GAAGC,EAAE,GAAG,CAAC,GAAGH,IAAI,CAAC,CAAA;AACnCC,UAAAA,KAAK,GACHjC,CAAC,IAAI,CAAC,GAAG8B,KAAK,CAAC,IAAI,CAAC,GAAGC,KAAK,CAAC,GAC7BJ,CAAC,GAAGG,KAAK,IAAI,CAAC,GAAGC,KAAK,CAAC,GACvBH,CAAC,GAAGG,KAAK,IAAI,CAAC,GAAGD,KAAK,CAAC,GACvBD,CAAC,GAAGC,KAAK,GAAGC,KAAK,CAAA;AACnBQ,UAAAA,UAAU,CAAChG,MAAM,EAAE,CAAC,GAAG0F,KAAK,CAAA;AAC9B,SAAA;AACF,OAAA;AACF,KAAA;AACA,IAAA,OAAOK,SAAS,CAAA;AAClB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEnE,iBAAiBA,CAEfzB,OAAyB,EACzBqB,EAAU,EACVC,EAAU,EACVnB,EAAU,EACVE,EAAU,EACV;AACA,IAAA,MAAMyF,MAAM,GAAG,IAAI,CAAC3E,SAAS;MAC3B4E,MAAM,GAAG,IAAI,CAAC3E,SAAS;MACvB4E,UAAU,GAAGlH,IAAI,CAACC,IAAI,CAAC+G,MAAM,GAAG,CAAC,CAAC;MAClCG,UAAU,GAAGnH,IAAI,CAACC,IAAI,CAACgH,MAAM,GAAG,CAAC,CAAC;MAClCL,GAAG,GAAG1F,OAAO,CAACkB,SAAS;MACvB6D,IAAI,GAAGW,GAAG,CAACX,IAAI;MACfmB,IAAI,GAAGlG,OAAO,CAAC0C,GAAG,CAACsC,eAAe,CAAC7E,EAAE,EAAEE,EAAE,CAAC;MAC1C8F,KAAK,GAAGD,IAAI,CAACnB,IAAI,CAAA;IACnB,KAAK,IAAIV,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhE,EAAE,EAAEgE,CAAC,EAAE,EAAE;MAC3B,KAAK,IAAI3E,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,EAAE,EAAET,CAAC,EAAE,EAAE;QAC3B,MAAM0G,EAAE,GAAG,CAAC1G,CAAC,GAAG2E,CAAC,GAAGlE,EAAE,IAAI,CAAC,CAAA;QAC3B,IAAIiD,MAAM,GAAG,CAAC,CAAA;QACd,IAAIiD,OAAO,GAAG,CAAC,CAAA;QACf,IAAIC,YAAY,GAAG,CAAC,CAAA;QACpB,IAAIC,GAAG,GAAG,CAAC,CAAA;QACX,IAAIC,GAAG,GAAG,CAAC,CAAA;QACX,IAAIC,GAAG,GAAG,CAAC,CAAA;QACX,IAAIC,GAAG,GAAG,CAAC,CAAA;AACX,QAAA,MAAMC,OAAO,GAAG,CAACtC,CAAC,GAAG,GAAG,IAAI0B,MAAM,CAAA;QAClC,KAAK,IAAIa,EAAE,GAAG9H,IAAI,CAACgE,KAAK,CAACuB,CAAC,GAAG0B,MAAM,CAAC,EAAEa,EAAE,GAAG,CAACvC,CAAC,GAAG,CAAC,IAAI0B,MAAM,EAAEa,EAAE,EAAE,EAAE;AACjE,UAAA,MAAMC,EAAE,GAAG/H,IAAI,CAACqF,GAAG,CAACwC,OAAO,IAAIC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAGX,UAAU;AACpDa,YAAAA,OAAO,GAAG,CAACpH,CAAC,GAAG,GAAG,IAAIoG,MAAM;YAC5BiB,EAAE,GAAGF,EAAE,GAAGA,EAAE,CAAA;UACd,KAAK,IAAI7F,EAAE,GAAGlC,IAAI,CAACgE,KAAK,CAACpD,CAAC,GAAGoG,MAAM,CAAC,EAAE9E,EAAE,GAAG,CAACtB,CAAC,GAAG,CAAC,IAAIoG,MAAM,EAAE9E,EAAE,EAAE,EAAE;AACjE,YAAA,IAAIgG,EAAE,GAAGlI,IAAI,CAACqF,GAAG,CAAC2C,OAAO,IAAI9F,EAAE,GAAG,GAAG,CAAC,CAAC,GAAGgF,UAAU,CAAA;YACpD,MAAMiB,CAAC,GAAGnI,IAAI,CAAC0F,IAAI,CAACuC,EAAE,GAAGC,EAAE,GAAGA,EAAE,CAAC,CAAA;AACjC;YACA,IAAIC,CAAC,GAAG,CAAC,IAAIA,CAAC,GAAG,CAAC,CAAC,EAAE;AACnB,cAAA,SAAA;AACF,aAAA;AACA;AACA7D,YAAAA,MAAM,GAAG,CAAC,GAAG6D,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,CAAC,GAAGA,CAAC,GAAGA,CAAC,GAAG,CAAC,CAAA;YACtC,IAAI7D,MAAM,GAAG,CAAC,EAAE;cACd4D,EAAE,GAAG,CAAC,IAAIhG,EAAE,GAAG4F,EAAE,GAAGvF,EAAE,CAAC,CAAA;AACvB;cACAqF,GAAG,IAAItD,MAAM,GAAG2B,IAAI,CAACiC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5BV,cAAAA,YAAY,IAAIlD,MAAM,CAAA;AACtB;cACA,IAAI2B,IAAI,CAACiC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE;gBACtB5D,MAAM,GAAIA,MAAM,GAAG2B,IAAI,CAACiC,EAAE,GAAG,CAAC,CAAC,GAAI,GAAG,CAAA;AACxC,eAAA;AACAT,cAAAA,GAAG,IAAInD,MAAM,GAAG2B,IAAI,CAACiC,EAAE,CAAC,CAAA;cACxBR,GAAG,IAAIpD,MAAM,GAAG2B,IAAI,CAACiC,EAAE,GAAG,CAAC,CAAC,CAAA;cAC5BP,GAAG,IAAIrD,MAAM,GAAG2B,IAAI,CAACiC,EAAE,GAAG,CAAC,CAAC,CAAA;AAC5BX,cAAAA,OAAO,IAAIjD,MAAM,CAAA;AACnB,aAAA;AACA;AACF,WAAA;AACF,SAAA;AACA+C,QAAAA,KAAK,CAACC,EAAE,CAAC,GAAGG,GAAG,GAAGF,OAAO,CAAA;QACzBF,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,GAAGI,GAAG,GAAGH,OAAO,CAAA;QAC7BF,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,GAAGK,GAAG,GAAGJ,OAAO,CAAA;QAC7BF,KAAK,CAACC,EAAE,GAAG,CAAC,CAAC,GAAGM,GAAG,GAAGJ,YAAY,CAAA;AACpC,OAAA;AACF,KAAA;AACA,IAAA,OAAOJ,IAAI,CAAA;AACb,GAAA;AACF,CAAA;AA5eE;AACF;AACA;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAJEgB,eAAA,CAvBWpJ,MAAM,EAAA,MAAA,EA8BH,QAAQ,CAAA,CAAA;AAAAoJ,eAAA,CA9BXpJ,MAAM,EAAA,UAAA,EAgCCL,mBAAmB,CAAA,CAAA;AAAAyJ,eAAA,CAhC1BpJ,MAAM,EAAA,kBAAA,EAkCS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA,CAAA;AA6c/CqJ,aAAa,CAACC,QAAQ,CAACtJ,MAAM,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Saturation.min.mjs","sources":["../../../src/filters/Saturation.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/saturation';\n\nexport type SaturationOwnProps = {\n saturation: number;\n};\n\nexport const saturationDefaultValues: SaturationOwnProps = {\n saturation: 0,\n};\n\n/**\n * Saturate filter class\n * @example\n * const filter = new Saturation({\n * saturation: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Saturation extends BaseFilter<'Saturation', SaturationOwnProps> {\n /**\n * Saturation value, from -1 to 1.\n * Increases/decreases the color saturation.\n * A value of 0 has no effect.\n *\n * @param {Number} saturation\n * @default\n */\n declare saturation: SaturationOwnProps['saturation'];\n\n static type = 'Saturation';\n\n static defaults = saturationDefaultValues;\n\n static uniformLocations = ['uSaturation'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.saturation;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n }\n\n isNeutralState() {\n return this.saturation === 0;\n }\n}\n\nclassRegistry.setClass(Saturation);\n"],"names":["saturationDefaultValues","saturation","Saturation","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","this","i","length","max","Math","sendUniformData","gl","uniformLocations","uniform1f","uSaturation","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"2PASO,MAAMA,EAA8C,CACzDC,WAAY,GAYP,MAAMC,UAAmBC,EAiB9BC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMG,GAAUC,KAAKV,WACrB,IAAK,IAAIW,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,GAAK,EAAG,CACvC,MAAME,EAAMC,KAAKD,IAAIL,EAAKG,GAAIH,EAAKG,EAAI,GAAIH,EAAKG,EAAI,IACpDH,EAAKG,IAAME,IAAQL,EAAKG,IAAME,EAAML,EAAKG,IAAMF,EAAS,EACxDD,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMF,EAAS,EACpED,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMF,EAAS,CACtE,CACF,CAQAM,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,aAAcT,KAAKV,WACnD,CAEAoB,cAAAA,GACE,OAA2B,IAApBV,KAAKV,UACd,EAnDAqB,EADWpB,EAAU,OAWP,cAAYoB,EAXfpB,EAAU,WAaHF,GAAuBsB,EAb9BpB,EAee,mBAAA,CAAC,gBAwC7BqB,EAAcC,SAAStB"}
1
+ {"version":3,"file":"Saturation.min.mjs","sources":["../../../src/filters/Saturation.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/saturation';\n\nexport type SaturationOwnProps = {\n saturation: number;\n};\n\nexport const saturationDefaultValues: SaturationOwnProps = {\n saturation: 0,\n};\n\n/**\n * Saturate filter class\n * @example\n * const filter = new Saturation({\n * saturation: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Saturation extends BaseFilter<'Saturation', SaturationOwnProps> {\n /**\n * Saturation value, from -1 to 1.\n * Increases/decreases the color saturation.\n * A value of 0 has no effect.\n *\n * @param {Number} saturation\n * @default\n */\n declare saturation: SaturationOwnProps['saturation'];\n\n static type = 'Saturation';\n\n static defaults = saturationDefaultValues;\n\n static uniformLocations = ['uSaturation'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.saturation;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n }\n\n isNeutralState() {\n return this.saturation === 0;\n }\n}\n\nclassRegistry.setClass(Saturation);\n"],"names":["saturationDefaultValues","saturation","Saturation","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","this","i","length","max","Math","sendUniformData","gl","uniformLocations","uniform1f","uSaturation","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"2PASO,MAAMA,EAA8C,CACzDC,WAAY,GAYP,MAAMC,UAAmBC,EAiB9BC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMG,GAAUC,KAAKV,WACrB,IAAK,IAAIW,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,GAAK,EAAG,CACvC,MAAME,EAAMC,KAAKD,IAAIL,EAAKG,GAAIH,EAAKG,EAAI,GAAIH,EAAKG,EAAI,IACpDH,EAAKG,IAAME,IAAQL,EAAKG,IAAME,EAAML,EAAKG,IAAMF,EAAS,EACxDD,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMF,EAAS,EACpED,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMF,EAAS,CACtE,CACF,CAQAM,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,aAAcT,KAAKV,WACnD,CAEAoB,cAAAA,GACE,OAA2B,IAApBV,KAAKV,UACd,EAnDAqB,EADWpB,EAAU,OAWP,cAAYoB,EAXfpB,EAAU,WAaHF,GAAuBsB,EAb9BpB,EAee,mBAAA,CAAC,gBAwC7BqB,EAAcC,SAAStB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Saturation.mjs","sources":["../../../src/filters/Saturation.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/saturation';\n\nexport type SaturationOwnProps = {\n saturation: number;\n};\n\nexport const saturationDefaultValues: SaturationOwnProps = {\n saturation: 0,\n};\n\n/**\n * Saturate filter class\n * @example\n * const filter = new Saturation({\n * saturation: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Saturation extends BaseFilter<'Saturation', SaturationOwnProps> {\n /**\n * Saturation value, from -1 to 1.\n * Increases/decreases the color saturation.\n * A value of 0 has no effect.\n *\n * @param {Number} saturation\n * @default\n */\n declare saturation: SaturationOwnProps['saturation'];\n\n static type = 'Saturation';\n\n static defaults = saturationDefaultValues;\n\n static uniformLocations = ['uSaturation'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.saturation;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n }\n\n isNeutralState() {\n return this.saturation === 0;\n }\n}\n\nclassRegistry.setClass(Saturation);\n"],"names":["saturationDefaultValues","saturation","Saturation","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","i","length","max","Math","sendUniformData","gl","uniformLocations","uniform1f","uSaturation","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,uBAA2C,GAAG;AACzDC,EAAAA,UAAU,EAAE,CAAA;AACd,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,SAASC,UAAU,CAAmC;AAiB3EC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,MAAMG,MAAM,GAAG,CAAC,IAAI,CAACT,UAAU,CAAA;AAC/B,IAAA,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvC,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,CAACJ,IAAI,CAACE,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;MACvDF,IAAI,CAACE,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC,IAAID,MAAM,GAAG,CAAC,CAAA;MACzDD,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAID,MAAM,GAAG,CAAC,CAAA;MACrED,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAID,MAAM,GAAG,CAAC,CAAA;AACvE,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEK,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;IACAD,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,WAAW,EAAE,CAAC,IAAI,CAAClB,UAAU,CAAC,CAAA;AAC9D,GAAA;AAEAmB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACnB,UAAU,KAAK,CAAC,CAAA;AAC9B,GAAA;AACF,CAAA;AApDE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPEoB,eAAA,CADWnB,UAAU,EAAA,MAAA,EAWP,YAAY,CAAA,CAAA;AAAAmB,eAAA,CAXfnB,UAAU,EAAA,UAAA,EAaHF,uBAAuB,CAAA,CAAA;AAAAqB,eAAA,CAb9BnB,UAAU,EAeK,kBAAA,EAAA,CAAC,aAAa,CAAC,CAAA,CAAA;AAwC3CoB,aAAa,CAACC,QAAQ,CAACrB,UAAU,CAAC;;;;"}
1
+ {"version":3,"file":"Saturation.mjs","sources":["../../../src/filters/Saturation.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/saturation';\n\nexport type SaturationOwnProps = {\n saturation: number;\n};\n\nexport const saturationDefaultValues: SaturationOwnProps = {\n saturation: 0,\n};\n\n/**\n * Saturate filter class\n * @example\n * const filter = new Saturation({\n * saturation: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Saturation extends BaseFilter<'Saturation', SaturationOwnProps> {\n /**\n * Saturation value, from -1 to 1.\n * Increases/decreases the color saturation.\n * A value of 0 has no effect.\n *\n * @param {Number} saturation\n * @default\n */\n declare saturation: SaturationOwnProps['saturation'];\n\n static type = 'Saturation';\n\n static defaults = saturationDefaultValues;\n\n static uniformLocations = ['uSaturation'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.saturation;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n }\n\n isNeutralState() {\n return this.saturation === 0;\n }\n}\n\nclassRegistry.setClass(Saturation);\n"],"names":["saturationDefaultValues","saturation","Saturation","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","i","length","max","Math","sendUniformData","gl","uniformLocations","uniform1f","uSaturation","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,uBAA2C,GAAG;AACzDC,EAAAA,UAAU,EAAE,CAAA;AACd,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,SAASC,UAAU,CAAmC;AAiB3EC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,MAAMG,MAAM,GAAG,CAAC,IAAI,CAACT,UAAU,CAAA;AAC/B,IAAA,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvC,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,CAACJ,IAAI,CAACE,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;MACvDF,IAAI,CAACE,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC,IAAID,MAAM,GAAG,CAAC,CAAA;MACzDD,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAID,MAAM,GAAG,CAAC,CAAA;MACrED,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAID,MAAM,GAAG,CAAC,CAAA;AACvE,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEK,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;IACAD,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,WAAW,EAAE,CAAC,IAAI,CAAClB,UAAU,CAAC,CAAA;AAC9D,GAAA;AAEAmB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACnB,UAAU,KAAK,CAAC,CAAA;AAC9B,GAAA;AACF,CAAA;AApDE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPEoB,eAAA,CADWnB,UAAU,EAAA,MAAA,EAWP,YAAY,CAAA,CAAA;AAAAmB,eAAA,CAXfnB,UAAU,EAAA,UAAA,EAaHF,uBAAuB,CAAA,CAAA;AAAAqB,eAAA,CAb9BnB,UAAU,EAeK,kBAAA,EAAA,CAAC,aAAa,CAAC,CAAA,CAAA;AAwC3CoB,aAAa,CAACC,QAAQ,CAACrB,UAAU,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Vibrance.min.mjs","sources":["../../../src/filters/Vibrance.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/vibrance';\n\nexport type VibranceOwnProps = {\n vibrance: number;\n};\n\nexport const vibranceDefaultValues: VibranceOwnProps = {\n vibrance: 0,\n};\n\n/**\n * Vibrance filter class\n * @example\n * const filter = new Vibrance({\n * vibrance: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Vibrance extends BaseFilter<'Vibrance', VibranceOwnProps> {\n /**\n * Vibrance value, from -1 to 1.\n * Increases/decreases the saturation of more muted colors with less effect on saturated colors.\n * A value of 0 has no effect.\n *\n * @param {Number} vibrance\n * @default\n */\n declare vibrance: VibranceOwnProps['vibrance'];\n\n static type = 'Vibrance';\n\n static defaults = vibranceDefaultValues;\n\n static uniformLocations = ['uVibrance'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.vibrance;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;\n const amt = ((Math.abs(max - avg) * 2) / 255) * adjust;\n data[i] += max !== data[i] ? (max - data[i]) * amt : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * amt : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * amt : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {TWebGLUniformLocationMap} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1f(uniformLocations.uVibrance, -this.vibrance);\n }\n\n isNeutralState() {\n return this.vibrance === 0;\n }\n}\n\nclassRegistry.setClass(Vibrance);\n"],"names":["vibranceDefaultValues","vibrance","Vibrance","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","this","i","length","max","Math","avg","amt","abs","sendUniformData","gl","uniformLocations","uniform1f","uVibrance","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"yPASO,MAAMA,EAA0C,CACrDC,SAAU,GAYL,MAAMC,UAAiBC,EAiB5BC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMG,GAAUC,KAAKV,SACrB,IAAK,IAAIW,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,GAAK,EAAG,CACvC,MAAME,EAAMC,KAAKD,IAAIL,EAAKG,GAAIH,EAAKG,EAAI,GAAIH,EAAKG,EAAI,IAC9CI,GAAOP,EAAKG,GAAKH,EAAKG,EAAI,GAAKH,EAAKG,EAAI,IAAM,EAC9CK,EAA8B,EAAtBF,KAAKG,IAAIJ,EAAME,GAAY,IAAON,EAChDD,EAAKG,IAAME,IAAQL,EAAKG,IAAME,EAAML,EAAKG,IAAMK,EAAM,EACrDR,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMK,EAAM,EACjER,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMK,EAAM,CACnE,CACF,CAQAE,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,WAAYZ,KAAKV,SACjD,CAEAuB,cAAAA,GACE,OAAyB,IAAlBb,KAAKV,QACd,EArDAwB,EADWvB,EAAQ,OAWL,YAAUuB,EAXbvB,EAAQ,WAaDF,GAAqByB,EAb5BvB,EAee,mBAAA,CAAC,cA0C7BwB,EAAcC,SAASzB"}
1
+ {"version":3,"file":"Vibrance.min.mjs","sources":["../../../src/filters/Vibrance.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/vibrance';\n\nexport type VibranceOwnProps = {\n vibrance: number;\n};\n\nexport const vibranceDefaultValues: VibranceOwnProps = {\n vibrance: 0,\n};\n\n/**\n * Vibrance filter class\n * @example\n * const filter = new Vibrance({\n * vibrance: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Vibrance extends BaseFilter<'Vibrance', VibranceOwnProps> {\n /**\n * Vibrance value, from -1 to 1.\n * Increases/decreases the saturation of more muted colors with less effect on saturated colors.\n * A value of 0 has no effect.\n *\n * @param {Number} vibrance\n * @default\n */\n declare vibrance: VibranceOwnProps['vibrance'];\n\n static type = 'Vibrance';\n\n static defaults = vibranceDefaultValues;\n\n static uniformLocations = ['uVibrance'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.vibrance;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;\n const amt = ((Math.abs(max - avg) * 2) / 255) * adjust;\n data[i] += max !== data[i] ? (max - data[i]) * amt : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * amt : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * amt : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {TWebGLUniformLocationMap} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform1f(uniformLocations.uVibrance, -this.vibrance);\n }\n\n isNeutralState() {\n return this.vibrance === 0;\n }\n}\n\nclassRegistry.setClass(Vibrance);\n"],"names":["vibranceDefaultValues","vibrance","Vibrance","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","this","i","length","max","Math","avg","amt","abs","sendUniformData","gl","uniformLocations","uniform1f","uVibrance","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":"yPASO,MAAMA,EAA0C,CACrDC,SAAU,GAYL,MAAMC,UAAiBC,EAiB5BC,iBAAAA,GACE,OAAOC,CACT,CAQAC,SAAAA,CAASC,GAA4C,IAAzCC,WAAWC,KAAEA,IAA0BF,EACjD,MAAMG,GAAUC,KAAKV,SACrB,IAAK,IAAIW,EAAI,EAAGA,EAAIH,EAAKI,OAAQD,GAAK,EAAG,CACvC,MAAME,EAAMC,KAAKD,IAAIL,EAAKG,GAAIH,EAAKG,EAAI,GAAIH,EAAKG,EAAI,IAC9CI,GAAOP,EAAKG,GAAKH,EAAKG,EAAI,GAAKH,EAAKG,EAAI,IAAM,EAC9CK,EAA8B,EAAtBF,KAAKG,IAAIJ,EAAME,GAAY,IAAON,EAChDD,EAAKG,IAAME,IAAQL,EAAKG,IAAME,EAAML,EAAKG,IAAMK,EAAM,EACrDR,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMK,EAAM,EACjER,EAAKG,EAAI,IAAME,IAAQL,EAAKG,EAAI,IAAME,EAAML,EAAKG,EAAI,IAAMK,EAAM,CACnE,CACF,CAQAE,eAAAA,CACEC,EACAC,GAEAD,EAAGE,UAAUD,EAAiBE,WAAYZ,KAAKV,SACjD,CAEAuB,cAAAA,GACE,OAAyB,IAAlBb,KAAKV,QACd,EArDAwB,EADWvB,EAAQ,OAWL,YAAUuB,EAXbvB,EAAQ,WAaDF,GAAqByB,EAb5BvB,EAee,mBAAA,CAAC,cA0C7BwB,EAAcC,SAASzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Vibrance.mjs","sources":["../../../src/filters/Vibrance.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/vibrance';\n\nexport type VibranceOwnProps = {\n vibrance: number;\n};\n\nexport const vibranceDefaultValues: VibranceOwnProps = {\n vibrance: 0,\n};\n\n/**\n * Vibrance filter class\n * @example\n * const filter = new Vibrance({\n * vibrance: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Vibrance extends BaseFilter<'Vibrance', VibranceOwnProps> {\n /**\n * Vibrance value, from -1 to 1.\n * Increases/decreases the saturation of more muted colors with less effect on saturated colors.\n * A value of 0 has no effect.\n *\n * @param {Number} vibrance\n * @default\n */\n declare vibrance: VibranceOwnProps['vibrance'];\n\n static type = 'Vibrance';\n\n static defaults = vibranceDefaultValues;\n\n static uniformLocations = ['uVibrance'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.vibrance;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;\n const amt = ((Math.abs(max - avg) * 2) / 255) * adjust;\n data[i] += max !== data[i] ? (max - data[i]) * amt : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * amt : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * amt : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {TWebGLUniformLocationMap} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap\n ) {\n gl.uniform1f(uniformLocations.uVibrance, -this.vibrance);\n }\n\n isNeutralState() {\n return this.vibrance === 0;\n }\n}\n\nclassRegistry.setClass(Vibrance);\n"],"names":["vibranceDefaultValues","vibrance","Vibrance","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","i","length","max","Math","avg","amt","abs","sendUniformData","gl","uniformLocations","uniform1f","uVibrance","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,qBAAuC,GAAG;AACrDC,EAAAA,QAAQ,EAAE,CAAA;AACZ,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,SAASC,UAAU,CAA+B;AAiBrEC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,MAAMG,MAAM,GAAG,CAAC,IAAI,CAACT,QAAQ,CAAA;AAC7B,IAAA,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvC,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,CAACJ,IAAI,CAACE,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;MACvD,MAAMI,GAAG,GAAG,CAACN,IAAI,CAACE,CAAC,CAAC,GAAGF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AACrD,MAAA,MAAMK,GAAG,GAAKF,IAAI,CAACG,GAAG,CAACJ,GAAG,GAAGE,GAAG,CAAC,GAAG,CAAC,GAAI,GAAG,GAAIL,MAAM,CAAA;MACtDD,IAAI,CAACE,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC,IAAIK,GAAG,GAAG,CAAC,CAAA;MACtDP,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIK,GAAG,GAAG,CAAC,CAAA;MAClEP,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIK,GAAG,GAAG,CAAC,CAAA;AACpE,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEE,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;IACAD,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,SAAS,EAAE,CAAC,IAAI,CAACrB,QAAQ,CAAC,CAAA;AAC1D,GAAA;AAEAsB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACtB,QAAQ,KAAK,CAAC,CAAA;AAC5B,GAAA;AACF,CAAA;AAtDE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPEuB,eAAA,CADWtB,QAAQ,EAAA,MAAA,EAWL,UAAU,CAAA,CAAA;AAAAsB,eAAA,CAXbtB,QAAQ,EAAA,UAAA,EAaDF,qBAAqB,CAAA,CAAA;AAAAwB,eAAA,CAb5BtB,QAAQ,EAeO,kBAAA,EAAA,CAAC,WAAW,CAAC,CAAA,CAAA;AA0CzCuB,aAAa,CAACC,QAAQ,CAACxB,QAAQ,CAAC;;;;"}
1
+ {"version":3,"file":"Vibrance.mjs","sources":["../../../src/filters/Vibrance.ts"],"sourcesContent":["import { BaseFilter } from './BaseFilter';\nimport type { T2DPipelineState, TWebGLUniformLocationMap } from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { fragmentSource } from './shaders/vibrance';\n\nexport type VibranceOwnProps = {\n vibrance: number;\n};\n\nexport const vibranceDefaultValues: VibranceOwnProps = {\n vibrance: 0,\n};\n\n/**\n * Vibrance filter class\n * @example\n * const filter = new Vibrance({\n * vibrance: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\nexport class Vibrance extends BaseFilter<'Vibrance', VibranceOwnProps> {\n /**\n * Vibrance value, from -1 to 1.\n * Increases/decreases the saturation of more muted colors with less effect on saturated colors.\n * A value of 0 has no effect.\n *\n * @param {Number} vibrance\n * @default\n */\n declare vibrance: VibranceOwnProps['vibrance'];\n\n static type = 'Vibrance';\n\n static defaults = vibranceDefaultValues;\n\n static uniformLocations = ['uVibrance'];\n\n getFragmentSource() {\n return fragmentSource;\n }\n\n /**\n * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d({ imageData: { data } }: T2DPipelineState) {\n const adjust = -this.vibrance;\n for (let i = 0; i < data.length; i += 4) {\n const max = Math.max(data[i], data[i + 1], data[i + 2]);\n const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;\n const amt = ((Math.abs(max - avg) * 2) / 255) * adjust;\n data[i] += max !== data[i] ? (max - data[i]) * amt : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * amt : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * amt : 0;\n }\n }\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {TWebGLUniformLocationMap} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData(\n gl: WebGLRenderingContext,\n uniformLocations: TWebGLUniformLocationMap,\n ) {\n gl.uniform1f(uniformLocations.uVibrance, -this.vibrance);\n }\n\n isNeutralState() {\n return this.vibrance === 0;\n }\n}\n\nclassRegistry.setClass(Vibrance);\n"],"names":["vibranceDefaultValues","vibrance","Vibrance","BaseFilter","getFragmentSource","fragmentSource","applyTo2d","_ref","imageData","data","adjust","i","length","max","Math","avg","amt","abs","sendUniformData","gl","uniformLocations","uniform1f","uVibrance","isNeutralState","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASO,MAAMA,qBAAuC,GAAG;AACrDC,EAAAA,QAAQ,EAAE,CAAA;AACZ,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,QAAQ,SAASC,UAAU,CAA+B;AAiBrEC,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,OAAOC,cAAc,CAAA;AACvB,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,SAASA,CAAAC,IAAA,EAA4C;IAAA,IAA3C;AAAEC,MAAAA,SAAS,EAAE;AAAEC,QAAAA,IAAAA;AAAK,OAAA;AAAoB,KAAC,GAAAF,IAAA,CAAA;AACjD,IAAA,MAAMG,MAAM,GAAG,CAAC,IAAI,CAACT,QAAQ,CAAA;AAC7B,IAAA,KAAK,IAAIU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,IAAI,CAACG,MAAM,EAAED,CAAC,IAAI,CAAC,EAAE;MACvC,MAAME,GAAG,GAAGC,IAAI,CAACD,GAAG,CAACJ,IAAI,CAACE,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;MACvD,MAAMI,GAAG,GAAG,CAACN,IAAI,CAACE,CAAC,CAAC,GAAGF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAGF,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;AACrD,MAAA,MAAMK,GAAG,GAAKF,IAAI,CAACG,GAAG,CAACJ,GAAG,GAAGE,GAAG,CAAC,GAAG,CAAC,GAAI,GAAG,GAAIL,MAAM,CAAA;MACtDD,IAAI,CAACE,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,CAAC,IAAIK,GAAG,GAAG,CAAC,CAAA;MACtDP,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIK,GAAG,GAAG,CAAC,CAAA;MAClEP,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIE,GAAG,KAAKJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,GAAG,CAACE,GAAG,GAAGJ,IAAI,CAACE,CAAC,GAAG,CAAC,CAAC,IAAIK,GAAG,GAAG,CAAC,CAAA;AACpE,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEE,EAAAA,eAAeA,CACbC,EAAyB,EACzBC,gBAA0C,EAC1C;IACAD,EAAE,CAACE,SAAS,CAACD,gBAAgB,CAACE,SAAS,EAAE,CAAC,IAAI,CAACrB,QAAQ,CAAC,CAAA;AAC1D,GAAA;AAEAsB,EAAAA,cAAcA,GAAG;AACf,IAAA,OAAO,IAAI,CAACtB,QAAQ,KAAK,CAAC,CAAA;AAC5B,GAAA;AACF,CAAA;AAtDE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAPEuB,eAAA,CADWtB,QAAQ,EAAA,MAAA,EAWL,UAAU,CAAA,CAAA;AAAAsB,eAAA,CAXbtB,QAAQ,EAAA,UAAA,EAaDF,qBAAqB,CAAA,CAAA;AAAAwB,eAAA,CAb5BtB,QAAQ,EAeO,kBAAA,EAAA,CAAC,WAAW,CAAC,CAAA,CAAA;AA0CzCuB,aAAa,CAACC,QAAQ,CAACxB,QAAQ,CAAC;;;;"}