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":"Pattern.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n patternTransform: TMat2D | null = null;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n { type, source, ...serialized }: SerializedPatternOptions,\n options?: Abortable\n ): Promise<Pattern> {\n const img = await loadImage(source, {\n ...options,\n crossOrigin: serialized.crossOrigin,\n });\n return new this({ ...serialized, source: img });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","_objectSpread","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","patternWidth","Math","abs","patternHeight","concat","join","fromObject","_ref2","serialized","_objectWithoutProperties","_excluded","img","loadImage","classRegistry","setClass"],"mappings":";;;;;;;;;;;;AAeA;AACA;AACA;AACA;AACO,MAAMA,OAAO,CAAC;AAGnB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAIC,IAAIA,GAAG;AACT,IAAA,OAAO,SAAS,CAAA;AAClB,GAAA;EAEA,IAAIA,IAAIA,CAACC,KAAK,EAAE;AACdC,IAAAA,GAAG,CAAC,MAAM,EAAE,4BAA4B,EAAED,KAAK,CAAC,CAAA;AAClD,GAAA;;AAEA;AACF;AACA;AACA;;AA+BE;AACF;AACA;;AAGE;AACF;AACA;AACA;;AAGE;AACF;AACA;AACA;;AAGE;AACF;AACA;AACA;AACA;EACEE,WAAWA,CAACC,OAAuB,EAAE;AAAAC,IAAAA,eAAA,iBApDb,QAAQ,CAAA,CAAA;AAEhC;AACF;AACA;AACA;AACA;AAJEA,IAAAA,eAAA,kBAKU,CAAC,CAAA,CAAA;AAEX;AACF;AACA;AACA;AACA;AAJEA,IAAAA,eAAA,kBAKU,CAAC,CAAA,CAAA;AAEX;AACF;AACA;AACA;AAHEA,IAAAA,eAAA,sBAI4B,EAAE,CAAA,CAAA;AAE9B;AACF;AACA;AACA;AACA;AACA;AALEA,IAAAA,eAAA,2BAMkC,IAAI,CAAA,CAAA;AAyBpC,IAAA,IAAI,CAACC,EAAE,GAAGC,GAAG,EAAE,CAAA;AACfC,IAAAA,MAAM,CAACC,MAAM,CAAC,IAAI,EAAEL,OAAO,CAAC,CAAA;AAC9B,GAAA;;AAEA;AACF;AACA;AACEM,EAAAA,aAAaA,GAAyC;AACpD,IAAA,OACE,CAAC,CAAC,IAAI,CAACC,MAAM,IAAI,OAAQ,IAAI,CAACA,MAAM,CAAsBC,GAAG,KAAK,QAAQ,CAAA;AAE9E,GAAA;;AAEA;AACF;AACA;AACEC,EAAAA,cAAcA,GAA0C;AACtD,IAAA,OAAO,CAAC,CAAC,IAAI,CAACF,MAAM,IAAI,CAAC,CAAE,IAAI,CAACA,MAAM,CAAuBG,SAAS,CAAA;AACxE,GAAA;AAEAC,EAAAA,cAAcA,GAAW;IACvB,OAAO,IAAI,CAACL,aAAa,EAAE,GACvB,IAAI,CAACC,MAAM,CAACC,GAAG,GACf,IAAI,CAACC,cAAc,EAAE,GACrB,IAAI,CAACF,MAAM,CAACG,SAAS,EAAE,GACvB,EAAE,CAAA;AACR,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACEE,MAAMA,CAACC,GAA6B,EAAwB;AAC1D,IAAA;AACE;IACA,CAAC,IAAI,CAACN,MAAM;AACZ;AACC,IAAA,IAAI,CAACD,aAAa,EAAE,KAClB,CAAC,IAAI,CAACC,MAAM,CAACO,QAAQ,IACpB,IAAI,CAACP,MAAM,CAACQ,YAAY,KAAK,CAAC,IAC9B,IAAI,CAACR,MAAM,CAACS,aAAa,KAAK,CAAC,CAAE,EACrC;AACA,MAAA,OAAO,IAAI,CAAA;AACb,KAAA;IAEA,OAAOH,GAAG,CAACI,aAAa,CAAC,IAAI,CAACV,MAAM,EAAE,IAAI,CAACW,MAAM,CAAC,CAAA;AACpD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,QAAQA,GAA0D;AAAA,IAAA,IAAzDC,mBAA6B,GAAAC,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,EAAE,CAAA;IACzC,MAAM;MAAEH,MAAM;AAAEM,MAAAA,WAAAA;AAAY,KAAC,GAAG,IAAI,CAAA;IACpC,OAAAC,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKC,IAAI,CAAC,IAAI,EAAEN,mBAAqC,CAAC,CAAA,EAAA,EAAA,EAAA;AACpDxB,MAAAA,IAAI,EAAE,SAAS;AACfW,MAAAA,MAAM,EAAE,IAAI,CAACI,cAAc,EAAE;MAC7BO,MAAM;MACNM,WAAW;MACXG,OAAO,EAAEC,OAAO,CAAC,IAAI,CAACD,OAAO,EAAEE,MAAM,CAACC,mBAAmB,CAAC;MAC1DC,OAAO,EAAEH,OAAO,CAAC,IAAI,CAACG,OAAO,EAAEF,MAAM,CAACC,mBAAmB,CAAC;MAC1DE,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,GACnC,CAAC,GAAG,IAAI,CAACA,gBAAgB,CAAC,GAC1B,IAAA;AAAI,KAAA,CAAA,CAAA;AAEZ,GAAA;;AAEA;AACA;AACF;AACA;EACEC,KAAKA,CAAAC,IAAA,EAAmC;IAAA,IAAlC;MAAEC,KAAK;AAAEC,MAAAA,MAAAA;AAAc,KAAC,GAAAF,IAAA,CAAA;IAC5B,MAAM;AAAE3B,QAAAA,MAAM,EAAE8B,aAAa;QAAEnB,MAAM;AAAEhB,QAAAA,EAAAA;AAAG,OAAC,GAAG,IAAI;MAChDoC,cAAc,GAAGC,KAAK,CAAC,IAAI,CAACZ,OAAO,GAAGQ,KAAK,EAAE,CAAC,CAAC;MAC/CK,cAAc,GAAGD,KAAK,CAAC,IAAI,CAACR,OAAO,GAAGK,MAAM,EAAE,CAAC,CAAC;AAChDK,MAAAA,YAAY,GACVvB,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,GAC3C,CAAC,GAAGwB,IAAI,CAACC,GAAG,CAACL,cAAc,IAAI,CAAC,CAAC,GACjCC,KAAK,CACDF,aAAa,CAAsBF,KAAK,GAAcA,KAAK,EAC7D,CACF,CAAC;AACPS,MAAAA,aAAa,GACX1B,MAAM,KAAK,UAAU,IAAIA,MAAM,KAAK,WAAW,GAC3C,CAAC,GAAGwB,IAAI,CAACC,GAAG,CAACH,cAAc,IAAI,CAAC,CAAC,GACjCD,KAAK,CACDF,aAAa,CAAsBD,MAAM,GAAcA,MAAM,EAC/D,CACF,CAAC,CAAA;IAET,OAAO,CAAA,sBAAA,CAAAS,MAAA,CACiB3C,EAAE,aAAA2C,MAAA,CAAQP,cAAc,EAAAO,SAAAA,CAAAA,CAAAA,MAAA,CAAQL,cAAc,EAAA,aAAA,CAAA,CAAAK,MAAA,CAAYJ,YAAY,kBAAAI,MAAA,CAAaD,aAAa,EAAA,KAAA,CAAA,EAAA,iCAAA,CAAAC,MAAA,CAEnHR,aAAa,CAAsBF,KAAK,kBAAAU,MAAA,CAExCR,aAAa,CAAsBD,MAAM,EAAAS,kBAAAA,CAAAA,CAAAA,MAAA,CAC3B,IAAI,CAAClC,cAAc,EAAE,EAEtC,aAAA,CAAA,EAAA,YAAA,EAAA,EAAE,CACH,CAACmC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,GAAA;AACA;;AAEA,EAAA,aAAaC,UAAUA,CAAAC,KAAA,EAErBhD,OAAmB,EACD;IAAA,IAFlB;QAAEJ,IAAI;AAAEW,QAAAA,MAAAA;AAAgD,OAAC,GAAAyC,KAAA;AAAtCC,MAAAA,UAAU,GAAAC,wBAAA,CAAAF,KAAA,EAAAG,SAAA,CAAA,CAAA;IAG7B,MAAMC,GAAG,GAAG,MAAMC,SAAS,CAAC9C,MAAM,EAAAkB,cAAA,CAAAA,cAAA,CAAA,EAAA,EAC7BzB,OAAO,CAAA,EAAA,EAAA,EAAA;MACVwB,WAAW,EAAEyB,UAAU,CAACzB,WAAAA;AAAW,KAAA,CACpC,CAAC,CAAA;AACF,IAAA,OAAO,IAAI,IAAI,CAAAC,cAAA,CAAAA,cAAA,KAAMwB,UAAU,CAAA,EAAA,EAAA,EAAA;AAAE1C,MAAAA,MAAM,EAAE6C,GAAAA;AAAG,KAAA,CAAE,CAAC,CAAA;AACjD,GAAA;AACF,CAAA;AAACnD,eAAA,CAhMYN,OAAO,EAAA,MAAA,EACJ,SAAS,CAAA,CAAA;AAiMzB2D,aAAa,CAACC,QAAQ,CAAC5D,OAAO,CAAC,CAAA;AAC/B;AACA2D,aAAa,CAACC,QAAQ,CAAC5D,OAAO,EAAE,SAAS,CAAC;;;;"}
1
+ {"version":3,"file":"Pattern.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals/ifNaN';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n declare patternTransform?: TMat2D;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0,\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0,\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n {\n type,\n source,\n patternTransform,\n ...otherOptions\n }: SerializedPatternOptions,\n options?: Abortable,\n ): Promise<Pattern> {\n const img = await loadImage(source, {\n ...options,\n crossOrigin: otherOptions.crossOrigin,\n });\n return new this({\n ...otherOptions,\n patternTransform:\n patternTransform && (patternTransform.slice(0) as TMat2D),\n source: img,\n });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","_objectSpread","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","patternWidth","Math","abs","patternHeight","concat","join","fromObject","_ref2","otherOptions","_objectWithoutProperties","_excluded","img","loadImage","slice","classRegistry","setClass"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Point.min.mjs","sources":["../../src/Point.ts"],"sourcesContent":["import type { TMat2D, TRadian } from './typedefs';\nimport { cos } from './util/misc/cos';\nimport { sin } from './util/misc/sin';\n\nexport interface XY {\n x: number;\n y: number;\n}\n\n/**\n * Adaptation of work of Kevin Lindsey(kevin@kevlindev.com)\n */\nexport class Point implements XY {\n declare x: number;\n\n declare y: number;\n\n constructor();\n constructor(x: number, y: number);\n constructor(point?: XY);\n constructor(arg0: number | XY = 0, y = 0) {\n if (typeof arg0 === 'object') {\n this.x = arg0.x;\n this.y = arg0.y;\n } else {\n this.x = arg0;\n this.y = y;\n }\n }\n\n /**\n * Adds another point to this one and returns another one\n * @param {XY} that\n * @return {Point} new Point instance with added values\n */\n add(that: XY): Point {\n return new Point(this.x + that.x, this.y + that.y);\n }\n\n /**\n * Adds another point to this one\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n addEquals(that: XY): Point {\n this.x += that.x;\n this.y += that.y;\n return this;\n }\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {Point} new Point with added value\n */\n scalarAdd(scalar: number): Point {\n return new Point(this.x + scalar, this.y + scalar);\n }\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarAddEquals(scalar: number): Point {\n this.x += scalar;\n this.y += scalar;\n return this;\n }\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {XY} that\n * @return {Point} new Point object with subtracted values\n */\n subtract(that: XY): Point {\n return new Point(this.x - that.x, this.y - that.y);\n }\n\n /**\n * Subtracts another point from this point\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n subtractEquals(that: XY): Point {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n }\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarSubtract(scalar: number): Point {\n return new Point(this.x - scalar, this.y - scalar);\n }\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarSubtractEquals(scalar: number): Point {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n }\n\n /**\n * Multiplies this point by another value and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n multiply(that: XY): Point {\n return new Point(this.x * that.x, this.y * that.y);\n }\n\n /**\n * Multiplies this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarMultiply(scalar: number): Point {\n return new Point(this.x * scalar, this.y * scalar);\n }\n\n /**\n * Multiplies this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarMultiplyEquals(scalar: number): Point {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n }\n\n /**\n * Divides this point by another and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n divide(that: XY): Point {\n return new Point(this.x / that.x, this.y / that.y);\n }\n\n /**\n * Divides this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarDivide(scalar: number): Point {\n return new Point(this.x / scalar, this.y / scalar);\n }\n\n /**\n * Divides this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarDivideEquals(scalar: number): Point {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n }\n\n /**\n * Returns true if this point is equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n eq(that: XY): boolean {\n return this.x === that.x && this.y === that.y;\n }\n\n /**\n * Returns true if this point is less than another one\n * @param {XY} that\n * @return {Boolean}\n */\n lt(that: XY): boolean {\n return this.x < that.x && this.y < that.y;\n }\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n lte(that: XY): boolean {\n return this.x <= that.x && this.y <= that.y;\n }\n\n /**\n\n * Returns true if this point is greater another one\n * @param {XY} that\n * @return {Boolean}\n */\n gt(that: XY): boolean {\n return this.x > that.x && this.y > that.y;\n }\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n gte(that: XY): boolean {\n return this.x >= that.x && this.y >= that.y;\n }\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {XY} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {Point}\n */\n lerp(that: XY, t = 0.5): Point {\n t = Math.max(Math.min(1, t), 0);\n return new Point(\n this.x + (that.x - this.x) * t,\n this.y + (that.y - this.y) * t\n );\n }\n\n /**\n * Returns distance from this point and another one\n * @param {XY} that\n * @return {Number}\n */\n distanceFrom(that: XY): number {\n const dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns the point between this point and another one\n * @param {XY} that\n * @return {Point}\n */\n midPointFrom(that: XY): Point {\n return this.lerp(that);\n }\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {XY} that\n * @return {Point}\n */\n min(that: XY): Point {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n }\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {XY} that\n * @return {Point}\n */\n max(that: XY): Point {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n }\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString(): string {\n return `${this.x},${this.y}`;\n }\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX(x: number) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY(y: number) {\n this.y = y;\n return this;\n }\n\n /**\n * Sets x/y of this point from another point\n * @param {XY} that\n * @chainable\n */\n setFromPoint(that: XY) {\n this.x = that.x;\n this.y = that.y;\n return this;\n }\n\n /**\n * Swaps x/y of this point and another point\n * @param {XY} that\n */\n swap(that: XY) {\n const x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n }\n\n /**\n * return a cloned instance of the point\n * @return {Point}\n */\n clone(): Point {\n return new Point(this.x, this.y);\n }\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {XY} origin The origin of the rotation\n * @param {TRadian} radians The radians of the angle for the rotation\n * @return {Point} The new rotated point\n */\n rotate(radians: TRadian, origin: XY = ZERO): Point {\n // TODO benchmark and verify the add and subtract how much cost\n // and then in case early return if no origin is passed\n const sinus = sin(radians),\n cosinus = cos(radians);\n const p = this.subtract(origin);\n const rotated = new Point(\n p.x * cosinus - p.y * sinus,\n p.x * sinus + p.y * cosinus\n );\n return rotated.add(origin);\n }\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {TMat2D} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {Point} The transformed point\n */\n transform(t: TMat2D, ignoreOffset = false): Point {\n return new Point(\n t[0] * this.x + t[2] * this.y + (ignoreOffset ? 0 : t[4]),\n t[1] * this.x + t[3] * this.y + (ignoreOffset ? 0 : t[5])\n );\n }\n}\n\nexport const ZERO = new Point(0, 0);\n"],"names":["Point","constructor","arg0","arguments","length","undefined","y","this","x","add","that","addEquals","scalarAdd","scalar","scalarAddEquals","subtract","subtractEquals","scalarSubtract","scalarSubtractEquals","multiply","scalarMultiply","scalarMultiplyEquals","divide","scalarDivide","scalarDivideEquals","eq","lt","lte","gt","gte","lerp","t","Math","max","min","distanceFrom","dx","dy","sqrt","midPointFrom","toString","concat","setXY","setX","setY","setFromPoint","swap","clone","rotate","radians","origin","ZERO","sinus","sin","cosinus","cos","p","transform","ignoreOffset"],"mappings":"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"}
1
+ {"version":3,"file":"Point.min.mjs","sources":["../../src/Point.ts"],"sourcesContent":["import type { TMat2D, TRadian } from './typedefs';\nimport { cos } from './util/misc/cos';\nimport { sin } from './util/misc/sin';\n\nexport interface XY {\n x: number;\n y: number;\n}\n\n/**\n * Adaptation of work of Kevin Lindsey(kevin@kevlindev.com)\n */\nexport class Point implements XY {\n declare x: number;\n\n declare y: number;\n\n constructor();\n constructor(x: number, y: number);\n constructor(point?: XY);\n constructor(arg0: number | XY = 0, y = 0) {\n if (typeof arg0 === 'object') {\n this.x = arg0.x;\n this.y = arg0.y;\n } else {\n this.x = arg0;\n this.y = y;\n }\n }\n\n /**\n * Adds another point to this one and returns another one\n * @param {XY} that\n * @return {Point} new Point instance with added values\n */\n add(that: XY): Point {\n return new Point(this.x + that.x, this.y + that.y);\n }\n\n /**\n * Adds another point to this one\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n addEquals(that: XY): Point {\n this.x += that.x;\n this.y += that.y;\n return this;\n }\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {Point} new Point with added value\n */\n scalarAdd(scalar: number): Point {\n return new Point(this.x + scalar, this.y + scalar);\n }\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarAddEquals(scalar: number): Point {\n this.x += scalar;\n this.y += scalar;\n return this;\n }\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {XY} that\n * @return {Point} new Point object with subtracted values\n */\n subtract(that: XY): Point {\n return new Point(this.x - that.x, this.y - that.y);\n }\n\n /**\n * Subtracts another point from this point\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n subtractEquals(that: XY): Point {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n }\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarSubtract(scalar: number): Point {\n return new Point(this.x - scalar, this.y - scalar);\n }\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarSubtractEquals(scalar: number): Point {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n }\n\n /**\n * Multiplies this point by another value and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n multiply(that: XY): Point {\n return new Point(this.x * that.x, this.y * that.y);\n }\n\n /**\n * Multiplies this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarMultiply(scalar: number): Point {\n return new Point(this.x * scalar, this.y * scalar);\n }\n\n /**\n * Multiplies this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarMultiplyEquals(scalar: number): Point {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n }\n\n /**\n * Divides this point by another and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n divide(that: XY): Point {\n return new Point(this.x / that.x, this.y / that.y);\n }\n\n /**\n * Divides this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarDivide(scalar: number): Point {\n return new Point(this.x / scalar, this.y / scalar);\n }\n\n /**\n * Divides this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarDivideEquals(scalar: number): Point {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n }\n\n /**\n * Returns true if this point is equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n eq(that: XY): boolean {\n return this.x === that.x && this.y === that.y;\n }\n\n /**\n * Returns true if this point is less than another one\n * @param {XY} that\n * @return {Boolean}\n */\n lt(that: XY): boolean {\n return this.x < that.x && this.y < that.y;\n }\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n lte(that: XY): boolean {\n return this.x <= that.x && this.y <= that.y;\n }\n\n /**\n\n * Returns true if this point is greater another one\n * @param {XY} that\n * @return {Boolean}\n */\n gt(that: XY): boolean {\n return this.x > that.x && this.y > that.y;\n }\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n gte(that: XY): boolean {\n return this.x >= that.x && this.y >= that.y;\n }\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {XY} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {Point}\n */\n lerp(that: XY, t = 0.5): Point {\n t = Math.max(Math.min(1, t), 0);\n return new Point(\n this.x + (that.x - this.x) * t,\n this.y + (that.y - this.y) * t,\n );\n }\n\n /**\n * Returns distance from this point and another one\n * @param {XY} that\n * @return {Number}\n */\n distanceFrom(that: XY): number {\n const dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns the point between this point and another one\n * @param {XY} that\n * @return {Point}\n */\n midPointFrom(that: XY): Point {\n return this.lerp(that);\n }\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {XY} that\n * @return {Point}\n */\n min(that: XY): Point {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n }\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {XY} that\n * @return {Point}\n */\n max(that: XY): Point {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n }\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString(): string {\n return `${this.x},${this.y}`;\n }\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX(x: number) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY(y: number) {\n this.y = y;\n return this;\n }\n\n /**\n * Sets x/y of this point from another point\n * @param {XY} that\n * @chainable\n */\n setFromPoint(that: XY) {\n this.x = that.x;\n this.y = that.y;\n return this;\n }\n\n /**\n * Swaps x/y of this point and another point\n * @param {XY} that\n */\n swap(that: XY) {\n const x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n }\n\n /**\n * return a cloned instance of the point\n * @return {Point}\n */\n clone(): Point {\n return new Point(this.x, this.y);\n }\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {XY} origin The origin of the rotation\n * @param {TRadian} radians The radians of the angle for the rotation\n * @return {Point} The new rotated point\n */\n rotate(radians: TRadian, origin: XY = ZERO): Point {\n // TODO benchmark and verify the add and subtract how much cost\n // and then in case early return if no origin is passed\n const sinus = sin(radians),\n cosinus = cos(radians);\n const p = this.subtract(origin);\n const rotated = new Point(\n p.x * cosinus - p.y * sinus,\n p.x * sinus + p.y * cosinus,\n );\n return rotated.add(origin);\n }\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {TMat2D} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {Point} The transformed point\n */\n transform(t: TMat2D, ignoreOffset = false): Point {\n return new Point(\n t[0] * this.x + t[2] * this.y + (ignoreOffset ? 0 : t[4]),\n t[1] * this.x + t[3] * this.y + (ignoreOffset ? 0 : t[5]),\n );\n }\n}\n\nexport const ZERO = new Point(0, 0);\n"],"names":["Point","constructor","arg0","arguments","length","undefined","y","this","x","add","that","addEquals","scalarAdd","scalar","scalarAddEquals","subtract","subtractEquals","scalarSubtract","scalarSubtractEquals","multiply","scalarMultiply","scalarMultiplyEquals","divide","scalarDivide","scalarDivideEquals","eq","lt","lte","gt","gte","lerp","t","Math","max","min","distanceFrom","dx","dy","sqrt","midPointFrom","toString","concat","setXY","setX","setY","setFromPoint","swap","clone","rotate","radians","origin","ZERO","sinus","sin","cosinus","cos","p","transform","ignoreOffset"],"mappings":"4FAYO,MAAMA,EAQXC,WAAAA,GAA0C,IAA9BC,EAAiBC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EAAGG,EAACH,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,EACjB,iBAATD,GACTK,KAAKC,EAAIN,EAAKM,EACdD,KAAKD,EAAIJ,EAAKI,IAEdC,KAAKC,EAAIN,EACTK,KAAKD,EAAIA,EAEb,CAOAG,GAAAA,CAAIC,GACF,OAAO,IAAIV,EAAMO,KAAKC,EAAIE,EAAKF,EAAGD,KAAKD,EAAII,EAAKJ,EAClD,CASAK,SAAAA,CAAUD,GAGR,OAFAH,KAAKC,GAAKE,EAAKF,EACfD,KAAKD,GAAKI,EAAKJ,EACRC,IACT,CAOAK,SAAAA,CAAUC,GACR,OAAO,IAAIb,EAAMO,KAAKC,EAAIK,EAAQN,KAAKD,EAAIO,EAC7C,CASAC,eAAAA,CAAgBD,GAGd,OAFAN,KAAKC,GAAKK,EACVN,KAAKD,GAAKO,EACHN,IACT,CAOAQ,QAAAA,CAASL,GACP,OAAO,IAAIV,EAAMO,KAAKC,EAAIE,EAAKF,EAAGD,KAAKD,EAAII,EAAKJ,EAClD,CASAU,cAAAA,CAAeN,GAGb,OAFAH,KAAKC,GAAKE,EAAKF,EACfD,KAAKD,GAAKI,EAAKJ,EACRC,IACT,CAOAU,cAAAA,CAAeJ,GACb,OAAO,IAAIb,EAAMO,KAAKC,EAAIK,EAAQN,KAAKD,EAAIO,EAC7C,CASAK,oBAAAA,CAAqBL,GAGnB,OAFAN,KAAKC,GAAKK,EACVN,KAAKD,GAAKO,EACHN,IACT,CAOAY,QAAAA,CAAST,GACP,OAAO,IAAIV,EAAMO,KAAKC,EAAIE,EAAKF,EAAGD,KAAKD,EAAII,EAAKJ,EAClD,CAOAc,cAAAA,CAAeP,GACb,OAAO,IAAIb,EAAMO,KAAKC,EAAIK,EAAQN,KAAKD,EAAIO,EAC7C,CASAQ,oBAAAA,CAAqBR,GAGnB,OAFAN,KAAKC,GAAKK,EACVN,KAAKD,GAAKO,EACHN,IACT,CAOAe,MAAAA,CAAOZ,GACL,OAAO,IAAIV,EAAMO,KAAKC,EAAIE,EAAKF,EAAGD,KAAKD,EAAII,EAAKJ,EAClD,CAOAiB,YAAAA,CAAaV,GACX,OAAO,IAAIb,EAAMO,KAAKC,EAAIK,EAAQN,KAAKD,EAAIO,EAC7C,CASAW,kBAAAA,CAAmBX,GAGjB,OAFAN,KAAKC,GAAKK,EACVN,KAAKD,GAAKO,EACHN,IACT,CAOAkB,EAAAA,CAAGf,GACD,OAAOH,KAAKC,IAAME,EAAKF,GAAKD,KAAKD,IAAMI,EAAKJ,CAC9C,CAOAoB,EAAAA,CAAGhB,GACD,OAAOH,KAAKC,EAAIE,EAAKF,GAAKD,KAAKD,EAAII,EAAKJ,CAC1C,CAOAqB,GAAAA,CAAIjB,GACF,OAAOH,KAAKC,GAAKE,EAAKF,GAAKD,KAAKD,GAAKI,EAAKJ,CAC5C,CAQAsB,EAAAA,CAAGlB,GACD,OAAOH,KAAKC,EAAIE,EAAKF,GAAKD,KAAKD,EAAII,EAAKJ,CAC1C,CAOAuB,GAAAA,CAAInB,GACF,OAAOH,KAAKC,GAAKE,EAAKF,GAAKD,KAAKD,GAAKI,EAAKJ,CAC5C,CAQAwB,IAAAA,CAAKpB,GAA0B,IAAhBqB,EAAC5B,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GAEjB,OADA4B,EAAIC,KAAKC,IAAID,KAAKE,IAAI,EAAGH,GAAI,GACtB,IAAI/B,EACTO,KAAKC,GAAKE,EAAKF,EAAID,KAAKC,GAAKuB,EAC7BxB,KAAKD,GAAKI,EAAKJ,EAAIC,KAAKD,GAAKyB,EAEjC,CAOAI,YAAAA,CAAazB,GACX,MAAM0B,EAAK7B,KAAKC,EAAIE,EAAKF,EACvB6B,EAAK9B,KAAKD,EAAII,EAAKJ,EACrB,OAAO0B,KAAKM,KAAKF,EAAKA,EAAKC,EAAKA,EAClC,CAOAE,YAAAA,CAAa7B,GACX,OAAOH,KAAKuB,KAAKpB,EACnB,CAOAwB,GAAAA,CAAIxB,GACF,OAAO,IAAIV,EAAMgC,KAAKE,IAAI3B,KAAKC,EAAGE,EAAKF,GAAIwB,KAAKE,IAAI3B,KAAKD,EAAGI,EAAKJ,GACnE,CAOA2B,GAAAA,CAAIvB,GACF,OAAO,IAAIV,EAAMgC,KAAKC,IAAI1B,KAAKC,EAAGE,EAAKF,GAAIwB,KAAKC,IAAI1B,KAAKD,EAAGI,EAAKJ,GACnE,CAMAkC,QAAAA,GACE,MAAAC,GAAAA,OAAUlC,KAAKC,OAACiC,OAAIlC,KAAKD,EAC3B,CAQAoC,KAAAA,CAAMlC,EAAWF,GAGf,OAFAC,KAAKC,EAAIA,EACTD,KAAKD,EAAIA,EACFC,IACT,CAOAoC,IAAAA,CAAKnC,GAEH,OADAD,KAAKC,EAAIA,EACFD,IACT,CAOAqC,IAAAA,CAAKtC,GAEH,OADAC,KAAKD,EAAIA,EACFC,IACT,CAOAsC,YAAAA,CAAanC,GAGX,OAFAH,KAAKC,EAAIE,EAAKF,EACdD,KAAKD,EAAII,EAAKJ,EACPC,IACT,CAMAuC,IAAAA,CAAKpC,GACH,MAAMF,EAAID,KAAKC,EACbF,EAAIC,KAAKD,EACXC,KAAKC,EAAIE,EAAKF,EACdD,KAAKD,EAAII,EAAKJ,EACdI,EAAKF,EAAIA,EACTE,EAAKJ,EAAIA,CACX,CAMAyC,KAAAA,GACE,OAAO,IAAI/C,EAAMO,KAAKC,EAAGD,KAAKD,EAChC,CAUA0C,MAAAA,CAAOC,GAA4C,IAA1BC,EAAU/C,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAGgD,EAGpC,MAAMC,EAAQC,EAAIJ,GAChBK,EAAUC,EAAIN,GACVO,EAAIjD,KAAKQ,SAASmC,GAKxB,OAJgB,IAAIlD,EAClBwD,EAAEhD,EAAI8C,EAAUE,EAAElD,EAAI8C,EACtBI,EAAEhD,EAAI4C,EAAQI,EAAElD,EAAIgD,GAEP7C,IAAIyC,EACrB,CAUAO,SAAAA,CAAU1B,GAAwC,IAA7B2B,EAAYvD,UAAAC,OAAA,QAAAC,IAAAF,UAAA,IAAAA,UAAA,GAC/B,OAAO,IAAIH,EACT+B,EAAE,GAAKxB,KAAKC,EAAIuB,EAAE,GAAKxB,KAAKD,GAAKoD,EAAe,EAAI3B,EAAE,IACtDA,EAAE,GAAKxB,KAAKC,EAAIuB,EAAE,GAAKxB,KAAKD,GAAKoD,EAAe,EAAI3B,EAAE,IAE1D,EAGK,MAAMoB,EAAO,IAAInD,EAAM,EAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"Point.mjs","sources":["../../src/Point.ts"],"sourcesContent":["import type { TMat2D, TRadian } from './typedefs';\nimport { cos } from './util/misc/cos';\nimport { sin } from './util/misc/sin';\n\nexport interface XY {\n x: number;\n y: number;\n}\n\n/**\n * Adaptation of work of Kevin Lindsey(kevin@kevlindev.com)\n */\nexport class Point implements XY {\n declare x: number;\n\n declare y: number;\n\n constructor();\n constructor(x: number, y: number);\n constructor(point?: XY);\n constructor(arg0: number | XY = 0, y = 0) {\n if (typeof arg0 === 'object') {\n this.x = arg0.x;\n this.y = arg0.y;\n } else {\n this.x = arg0;\n this.y = y;\n }\n }\n\n /**\n * Adds another point to this one and returns another one\n * @param {XY} that\n * @return {Point} new Point instance with added values\n */\n add(that: XY): Point {\n return new Point(this.x + that.x, this.y + that.y);\n }\n\n /**\n * Adds another point to this one\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n addEquals(that: XY): Point {\n this.x += that.x;\n this.y += that.y;\n return this;\n }\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {Point} new Point with added value\n */\n scalarAdd(scalar: number): Point {\n return new Point(this.x + scalar, this.y + scalar);\n }\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarAddEquals(scalar: number): Point {\n this.x += scalar;\n this.y += scalar;\n return this;\n }\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {XY} that\n * @return {Point} new Point object with subtracted values\n */\n subtract(that: XY): Point {\n return new Point(this.x - that.x, this.y - that.y);\n }\n\n /**\n * Subtracts another point from this point\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n subtractEquals(that: XY): Point {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n }\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarSubtract(scalar: number): Point {\n return new Point(this.x - scalar, this.y - scalar);\n }\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarSubtractEquals(scalar: number): Point {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n }\n\n /**\n * Multiplies this point by another value and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n multiply(that: XY): Point {\n return new Point(this.x * that.x, this.y * that.y);\n }\n\n /**\n * Multiplies this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarMultiply(scalar: number): Point {\n return new Point(this.x * scalar, this.y * scalar);\n }\n\n /**\n * Multiplies this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarMultiplyEquals(scalar: number): Point {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n }\n\n /**\n * Divides this point by another and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n divide(that: XY): Point {\n return new Point(this.x / that.x, this.y / that.y);\n }\n\n /**\n * Divides this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarDivide(scalar: number): Point {\n return new Point(this.x / scalar, this.y / scalar);\n }\n\n /**\n * Divides this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarDivideEquals(scalar: number): Point {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n }\n\n /**\n * Returns true if this point is equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n eq(that: XY): boolean {\n return this.x === that.x && this.y === that.y;\n }\n\n /**\n * Returns true if this point is less than another one\n * @param {XY} that\n * @return {Boolean}\n */\n lt(that: XY): boolean {\n return this.x < that.x && this.y < that.y;\n }\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n lte(that: XY): boolean {\n return this.x <= that.x && this.y <= that.y;\n }\n\n /**\n\n * Returns true if this point is greater another one\n * @param {XY} that\n * @return {Boolean}\n */\n gt(that: XY): boolean {\n return this.x > that.x && this.y > that.y;\n }\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n gte(that: XY): boolean {\n return this.x >= that.x && this.y >= that.y;\n }\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {XY} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {Point}\n */\n lerp(that: XY, t = 0.5): Point {\n t = Math.max(Math.min(1, t), 0);\n return new Point(\n this.x + (that.x - this.x) * t,\n this.y + (that.y - this.y) * t\n );\n }\n\n /**\n * Returns distance from this point and another one\n * @param {XY} that\n * @return {Number}\n */\n distanceFrom(that: XY): number {\n const dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns the point between this point and another one\n * @param {XY} that\n * @return {Point}\n */\n midPointFrom(that: XY): Point {\n return this.lerp(that);\n }\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {XY} that\n * @return {Point}\n */\n min(that: XY): Point {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n }\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {XY} that\n * @return {Point}\n */\n max(that: XY): Point {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n }\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString(): string {\n return `${this.x},${this.y}`;\n }\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX(x: number) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY(y: number) {\n this.y = y;\n return this;\n }\n\n /**\n * Sets x/y of this point from another point\n * @param {XY} that\n * @chainable\n */\n setFromPoint(that: XY) {\n this.x = that.x;\n this.y = that.y;\n return this;\n }\n\n /**\n * Swaps x/y of this point and another point\n * @param {XY} that\n */\n swap(that: XY) {\n const x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n }\n\n /**\n * return a cloned instance of the point\n * @return {Point}\n */\n clone(): Point {\n return new Point(this.x, this.y);\n }\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {XY} origin The origin of the rotation\n * @param {TRadian} radians The radians of the angle for the rotation\n * @return {Point} The new rotated point\n */\n rotate(radians: TRadian, origin: XY = ZERO): Point {\n // TODO benchmark and verify the add and subtract how much cost\n // and then in case early return if no origin is passed\n const sinus = sin(radians),\n cosinus = cos(radians);\n const p = this.subtract(origin);\n const rotated = new Point(\n p.x * cosinus - p.y * sinus,\n p.x * sinus + p.y * cosinus\n );\n return rotated.add(origin);\n }\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {TMat2D} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {Point} The transformed point\n */\n transform(t: TMat2D, ignoreOffset = false): Point {\n return new Point(\n t[0] * this.x + t[2] * this.y + (ignoreOffset ? 0 : t[4]),\n t[1] * this.x + t[3] * this.y + (ignoreOffset ? 0 : t[5])\n );\n }\n}\n\nexport const ZERO = new Point(0, 0);\n"],"names":["Point","constructor","arg0","arguments","length","undefined","y","x","add","that","addEquals","scalarAdd","scalar","scalarAddEquals","subtract","subtractEquals","scalarSubtract","scalarSubtractEquals","multiply","scalarMultiply","scalarMultiplyEquals","divide","scalarDivide","scalarDivideEquals","eq","lt","lte","gt","gte","lerp","t","Math","max","min","distanceFrom","dx","dy","sqrt","midPointFrom","toString","concat","setXY","setX","setY","setFromPoint","swap","clone","rotate","radians","origin","ZERO","sinus","sin","cosinus","cos","p","rotated","transform","ignoreOffset"],"mappings":"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"}
1
+ {"version":3,"file":"Point.mjs","sources":["../../src/Point.ts"],"sourcesContent":["import type { TMat2D, TRadian } from './typedefs';\nimport { cos } from './util/misc/cos';\nimport { sin } from './util/misc/sin';\n\nexport interface XY {\n x: number;\n y: number;\n}\n\n/**\n * Adaptation of work of Kevin Lindsey(kevin@kevlindev.com)\n */\nexport class Point implements XY {\n declare x: number;\n\n declare y: number;\n\n constructor();\n constructor(x: number, y: number);\n constructor(point?: XY);\n constructor(arg0: number | XY = 0, y = 0) {\n if (typeof arg0 === 'object') {\n this.x = arg0.x;\n this.y = arg0.y;\n } else {\n this.x = arg0;\n this.y = y;\n }\n }\n\n /**\n * Adds another point to this one and returns another one\n * @param {XY} that\n * @return {Point} new Point instance with added values\n */\n add(that: XY): Point {\n return new Point(this.x + that.x, this.y + that.y);\n }\n\n /**\n * Adds another point to this one\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n addEquals(that: XY): Point {\n this.x += that.x;\n this.y += that.y;\n return this;\n }\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {Point} new Point with added value\n */\n scalarAdd(scalar: number): Point {\n return new Point(this.x + scalar, this.y + scalar);\n }\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarAddEquals(scalar: number): Point {\n this.x += scalar;\n this.y += scalar;\n return this;\n }\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {XY} that\n * @return {Point} new Point object with subtracted values\n */\n subtract(that: XY): Point {\n return new Point(this.x - that.x, this.y - that.y);\n }\n\n /**\n * Subtracts another point from this point\n * @param {XY} that\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n subtractEquals(that: XY): Point {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n }\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarSubtract(scalar: number): Point {\n return new Point(this.x - scalar, this.y - scalar);\n }\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarSubtractEquals(scalar: number): Point {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n }\n\n /**\n * Multiplies this point by another value and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n multiply(that: XY): Point {\n return new Point(this.x * that.x, this.y * that.y);\n }\n\n /**\n * Multiplies this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarMultiply(scalar: number): Point {\n return new Point(this.x * scalar, this.y * scalar);\n }\n\n /**\n * Multiplies this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarMultiplyEquals(scalar: number): Point {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n }\n\n /**\n * Divides this point by another and returns a new one\n * @param {XY} that\n * @return {Point}\n */\n divide(that: XY): Point {\n return new Point(this.x / that.x, this.y / that.y);\n }\n\n /**\n * Divides this point by a value and returns a new one\n * @param {Number} scalar\n * @return {Point}\n */\n scalarDivide(scalar: number): Point {\n return new Point(this.x / scalar, this.y / scalar);\n }\n\n /**\n * Divides this point by a value\n * @param {Number} scalar\n * @return {Point} thisArg\n * @chainable\n * @deprecated\n */\n scalarDivideEquals(scalar: number): Point {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n }\n\n /**\n * Returns true if this point is equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n eq(that: XY): boolean {\n return this.x === that.x && this.y === that.y;\n }\n\n /**\n * Returns true if this point is less than another one\n * @param {XY} that\n * @return {Boolean}\n */\n lt(that: XY): boolean {\n return this.x < that.x && this.y < that.y;\n }\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n lte(that: XY): boolean {\n return this.x <= that.x && this.y <= that.y;\n }\n\n /**\n\n * Returns true if this point is greater another one\n * @param {XY} that\n * @return {Boolean}\n */\n gt(that: XY): boolean {\n return this.x > that.x && this.y > that.y;\n }\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {XY} that\n * @return {Boolean}\n */\n gte(that: XY): boolean {\n return this.x >= that.x && this.y >= that.y;\n }\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {XY} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {Point}\n */\n lerp(that: XY, t = 0.5): Point {\n t = Math.max(Math.min(1, t), 0);\n return new Point(\n this.x + (that.x - this.x) * t,\n this.y + (that.y - this.y) * t,\n );\n }\n\n /**\n * Returns distance from this point and another one\n * @param {XY} that\n * @return {Number}\n */\n distanceFrom(that: XY): number {\n const dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n }\n\n /**\n * Returns the point between this point and another one\n * @param {XY} that\n * @return {Point}\n */\n midPointFrom(that: XY): Point {\n return this.lerp(that);\n }\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {XY} that\n * @return {Point}\n */\n min(that: XY): Point {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n }\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {XY} that\n * @return {Point}\n */\n max(that: XY): Point {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n }\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString(): string {\n return `${this.x},${this.y}`;\n }\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX(x: number) {\n this.x = x;\n return this;\n }\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY(y: number) {\n this.y = y;\n return this;\n }\n\n /**\n * Sets x/y of this point from another point\n * @param {XY} that\n * @chainable\n */\n setFromPoint(that: XY) {\n this.x = that.x;\n this.y = that.y;\n return this;\n }\n\n /**\n * Swaps x/y of this point and another point\n * @param {XY} that\n */\n swap(that: XY) {\n const x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n }\n\n /**\n * return a cloned instance of the point\n * @return {Point}\n */\n clone(): Point {\n return new Point(this.x, this.y);\n }\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {XY} origin The origin of the rotation\n * @param {TRadian} radians The radians of the angle for the rotation\n * @return {Point} The new rotated point\n */\n rotate(radians: TRadian, origin: XY = ZERO): Point {\n // TODO benchmark and verify the add and subtract how much cost\n // and then in case early return if no origin is passed\n const sinus = sin(radians),\n cosinus = cos(radians);\n const p = this.subtract(origin);\n const rotated = new Point(\n p.x * cosinus - p.y * sinus,\n p.x * sinus + p.y * cosinus,\n );\n return rotated.add(origin);\n }\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {TMat2D} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {Point} The transformed point\n */\n transform(t: TMat2D, ignoreOffset = false): Point {\n return new Point(\n t[0] * this.x + t[2] * this.y + (ignoreOffset ? 0 : t[4]),\n t[1] * this.x + t[3] * this.y + (ignoreOffset ? 0 : t[5]),\n );\n }\n}\n\nexport const ZERO = new Point(0, 0);\n"],"names":["Point","constructor","arg0","arguments","length","undefined","y","x","add","that","addEquals","scalarAdd","scalar","scalarAddEquals","subtract","subtractEquals","scalarSubtract","scalarSubtractEquals","multiply","scalarMultiply","scalarMultiplyEquals","divide","scalarDivide","scalarDivideEquals","eq","lt","lte","gt","gte","lerp","t","Math","max","min","distanceFrom","dx","dy","sqrt","midPointFrom","toString","concat","setXY","setX","setY","setFromPoint","swap","clone","rotate","radians","origin","ZERO","sinus","sin","cosinus","cos","p","rotated","transform","ignoreOffset"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Shadow.min.mjs","sources":["../../src/Shadow.ts"],"sourcesContent":["import { classRegistry } from './ClassRegistry';\nimport { Color } from './color/Color';\nimport { config } from './config';\nimport { reNum } from './parser/constants';\nimport { Point } from './Point';\nimport type { FabricObject } from './shapes/Object/FabricObject';\nimport type { TClassProperties } from './typedefs';\nimport { uid } from './util/internals/uid';\nimport { pickBy } from './util/misc/pick';\nimport { degreesToRadians } from './util/misc/radiansDegreesConversion';\nimport { toFixed } from './util/misc/toFixed';\nimport { rotateVector } from './util/misc/vectors';\n\n/**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * - (?:\\s|^): This part captures either a whitespace character (\\s) or the beginning of a line (^). It's non-capturing (due to (?:...)), meaning it doesn't create a capturing group.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: This captures the first component of the shadow, which is the horizontal offset. Breaking it down:\n * - (-?\\d+): Captures an optional minus sign followed by one or more digits (integer part of the number).\n * - (?:\\.\\d*)?: Optionally captures a decimal point followed by zero or more digits (decimal part of the number).\n * - (?:px)?: Optionally captures the \"px\" unit.\n * - (?:\\s?|$): Captures either an optional whitespace or the end of the line. This whole part is wrapped in a non-capturing group and marked as optional with ?.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: Similar to the previous step, this captures the vertical offset.\n\n(\\d+(?:\\.\\d*)?(?:px)?)?: This captures the blur radius. It's similar to the horizontal offset but without the optional minus sign.\n\n(?:\\s+(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?){0,1}: This captures an optional part for the color. It allows for whitespace followed by a component with an optional minus sign, digits, decimal point, and \"px\" unit.\n\n(?:$|\\s): This captures either the end of the line or a whitespace character. It ensures that the match ends either at the end of the string or with a whitespace character.\n */\n// eslint-disable-next-line max-len\n\nconst shadowOffsetRegex = '(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?';\n\nconst reOffsetsAndBlur = new RegExp(\n '(?:\\\\s|^)' +\n shadowOffsetRegex +\n shadowOffsetRegex +\n '(' +\n reNum +\n '?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)'\n);\n\nexport const shadowDefaultValues: Partial<TClassProperties<Shadow>> = {\n color: 'rgb(0,0,0)',\n blur: 0,\n offsetX: 0,\n offsetY: 0,\n affectStroke: false,\n includeDefaultValues: true,\n nonScaling: false,\n};\n\nexport type SerializedShadowOptions = {\n color: string;\n blur: number;\n offsetX: number;\n offsetY: number;\n affectStroke: boolean;\n nonScaling: boolean;\n type: string;\n};\n\nexport class Shadow {\n /**\n * Shadow color\n * @type String\n * @default\n */\n declare color: string;\n\n /**\n * Shadow blur\n * @type Number\n */\n declare blur: number;\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n declare offsetX: number;\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n declare offsetY: number;\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n declare affectStroke: boolean;\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n declare includeDefaultValues: boolean;\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n declare nonScaling: boolean;\n\n declare id: number;\n\n static ownDefaults = shadowDefaultValues;\n\n static type = 'shadow';\n\n /**\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n */\n constructor(options: Partial<TClassProperties<Shadow>>);\n constructor(svgAttribute: string);\n constructor(arg0: string | Partial<TClassProperties<Shadow>>) {\n const options: Partial<TClassProperties<Shadow>> =\n typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;\n Object.assign(this, Shadow.ownDefaults, options);\n this.id = uid();\n }\n\n /**\n * @param {String} value Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n static parseShadow(value: string) {\n const shadowStr = value.trim(),\n [, offsetX = 0, offsetY = 0, blur = 0] = (\n reOffsetsAndBlur.exec(shadowStr) || []\n ).map((value) => parseFloat(value) || 0),\n color = (shadowStr.replace(reOffsetsAndBlur, '') || 'rgb(0,0,0)').trim();\n\n return {\n color,\n offsetX,\n offsetY,\n blur,\n };\n }\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n }\n\n /**\n * Returns SVG representation of a shadow\n * @param {FabricObject} object\n * @return {String} SVG representation of a shadow\n */\n toSVG(object: FabricObject) {\n const offset = rotateVector(\n new Point(this.offsetX, this.offsetY),\n degreesToRadians(-object.angle)\n ),\n BLUR_BOX = 20,\n color = new Color(this.color);\n let fBoxX = 40,\n fBoxY = 40;\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX =\n toFixed(\n (Math.abs(offset.x) + this.blur) / object.width,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n fBoxY =\n toFixed(\n (Math.abs(offset.y) + this.blur) / object.height,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return `<filter id=\"SVGID_${this.id}\" y=\"-${fBoxY}%\" height=\"${\n 100 + 2 * fBoxY\n }%\" x=\"-${fBoxX}%\" width=\"${\n 100 + 2 * fBoxX\n }%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${toFixed(\n this.blur ? this.blur / 2 : 0,\n config.NUM_FRACTION_DIGITS\n )}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${toFixed(\n offset.x,\n config.NUM_FRACTION_DIGITS\n )}\" dy=\"${toFixed(\n offset.y,\n config.NUM_FRACTION_DIGITS\n )}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${color.toRgb()}\" flood-opacity=\"${color.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`;\n }\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject() {\n const data: SerializedShadowOptions = {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling,\n type: (this.constructor as typeof Shadow).type,\n };\n const defaults = Shadow.ownDefaults as SerializedShadowOptions;\n return !this.includeDefaultValues\n ? pickBy(data, (value, key) => value !== defaults[key])\n : data;\n }\n\n static async fromObject(options: Partial<TClassProperties<Shadow>>) {\n return new this(options);\n }\n}\n\nclassRegistry.setClass(Shadow, 'shadow');\n"],"names":["shadowOffsetRegex","reOffsetsAndBlur","RegExp","reNum","shadowDefaultValues","color","blur","offsetX","offsetY","affectStroke","includeDefaultValues","nonScaling","Shadow","constructor","arg0","options","parseShadow","Object","assign","this","ownDefaults","id","uid","value","shadowStr","trim","exec","map","parseFloat","replace","toString","join","toSVG","object","offset","rotateVector","Point","degreesToRadians","angle","Color","fBoxX","fBoxY","width","height","toFixed","Math","abs","x","config","NUM_FRACTION_DIGITS","y","flipX","flipY","concat","toRgb","getAlpha","toObject","data","type","defaults","pickBy","key","fromObject","_defineProperty","classRegistry","setClass"],"mappings":"gmBA+BA,MAAMA,EAAoB,yCAEpBC,EAAmB,IAAIC,OAC3B,YACEF,EACAA,EACA,IACAG,EACA,iCAGSC,EAAyD,CACpEC,MAAO,aACPC,KAAM,EACNC,QAAS,EACTC,QAAS,EACTC,cAAc,EACdC,sBAAsB,EACtBC,YAAY,GAaP,MAAMC,EA+DXC,WAAAA,CAAYC,GACV,MAAMC,EACY,iBAATD,EAAoBF,EAAOI,YAAYF,GAAQA,EACxDG,OAAOC,OAAOC,KAAMP,EAAOQ,YAAaL,GACxCI,KAAKE,GAAKC,GACZ,CAMA,kBAAON,CAAYO,GACjB,MAAMC,EAAYD,EAAME,QACnBlB,CAAAA,EAAU,EAAGC,EAAU,EAAGF,EAAO,IAClCL,EAAiByB,KAAKF,IAAc,IACpCG,KAAKJ,GAAUK,WAAWL,IAAU,IAGxC,MAAO,CACLlB,OAHSmB,EAAUK,QAAQ5B,EAAkB,KAAO,cAAcwB,OAIlElB,UACAC,UACAF,OAEJ,CAOAwB,QAAAA,GACE,MAAO,CAACX,KAAKZ,QAASY,KAAKX,QAASW,KAAKb,KAAMa,KAAKd,OAAO0B,KAAK,MAClE,CAOAC,KAAAA,CAAMC,GACJ,MAAMC,EAASC,EACX,IAAIC,EAAMjB,KAAKZ,QAASY,KAAKX,SAC7B6B,GAAkBJ,EAAOK,QAG3BjC,EAAQ,IAAIkC,EAAMpB,KAAKd,OACzB,IAAImC,EAAQ,GACVC,EAAQ,GA2BV,OAzBIR,EAAOS,OAAST,EAAOU,SAGzBH,EAKI,IAJFI,GACGC,KAAKC,IAAIZ,EAAOa,GAAK5B,KAAKb,MAAQ2B,EAAOS,MAC1CM,EAAOC,qBAXA,GAeXR,EAKI,IAJFG,GACGC,KAAKC,IAAIZ,EAAOgB,GAAK/B,KAAKb,MAAQ2B,EAAOU,OAC1CK,EAAOC,qBAlBA,IAuBThB,EAAOkB,QACTjB,EAAOa,IAAM,GAEXd,EAAOmB,QACTlB,EAAOgB,IAAM,GAGf,qBAAAG,OAA4BlC,KAAKE,GAAE,UAAAgC,OAASZ,iBAAKY,OAC/C,IAAM,EAAIZ,EAAK,WAAAY,OACPb,gBAAKa,OACb,IAAM,EAAIb,EAAK,2DAAAa,OACyCT,EACxDzB,KAAKb,KAAOa,KAAKb,KAAO,EAAI,EAC5B0C,EAAOC,qBACR,yCAAAI,OAAwCT,EACvCV,EAAOa,EACPC,EAAOC,+BACRI,OAAST,EACRV,EAAOgB,EACPF,EAAOC,qBACRI,2DAAAA,OAA0DhD,EAAMiD,6BAAOD,OAAoBhD,EAAMkD,WAAU,gLAC9G,CAMAC,QAAAA,GACE,MAAMC,EAAgC,CACpCpD,MAAOc,KAAKd,MACZC,KAAMa,KAAKb,KACXC,QAASY,KAAKZ,QACdC,QAASW,KAAKX,QACdC,aAAcU,KAAKV,aACnBE,WAAYQ,KAAKR,WACjB+C,KAAOvC,KAAKN,YAA8B6C,MAEtCC,EAAW/C,EAAOQ,YACxB,OAAQD,KAAKT,qBAET+C,EADAG,EAAOH,GAAM,CAAClC,EAAOsC,IAAQtC,IAAUoC,EAASE,IAEtD,CAEA,uBAAaC,CAAW/C,GACtB,OAAO,IAAII,KAAKJ,EAClB,EAtIAgD,EA1CWnD,EAAM,cAqDIR,GAAmB2D,EArD7BnD,EAAM,OAuDH,UA4HhBoD,EAAcC,SAASrD,EAAQ"}
1
+ {"version":3,"file":"Shadow.min.mjs","sources":["../../src/Shadow.ts"],"sourcesContent":["import { classRegistry } from './ClassRegistry';\nimport { Color } from './color/Color';\nimport { config } from './config';\nimport { reNum } from './parser/constants';\nimport { Point } from './Point';\nimport type { FabricObject } from './shapes/Object/FabricObject';\nimport type { TClassProperties } from './typedefs';\nimport { uid } from './util/internals/uid';\nimport { pickBy } from './util/misc/pick';\nimport { degreesToRadians } from './util/misc/radiansDegreesConversion';\nimport { toFixed } from './util/misc/toFixed';\nimport { rotateVector } from './util/misc/vectors';\n\n/**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * - (?:\\s|^): This part captures either a whitespace character (\\s) or the beginning of a line (^). It's non-capturing (due to (?:...)), meaning it doesn't create a capturing group.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: This captures the first component of the shadow, which is the horizontal offset. Breaking it down:\n * - (-?\\d+): Captures an optional minus sign followed by one or more digits (integer part of the number).\n * - (?:\\.\\d*)?: Optionally captures a decimal point followed by zero or more digits (decimal part of the number).\n * - (?:px)?: Optionally captures the \"px\" unit.\n * - (?:\\s?|$): Captures either an optional whitespace or the end of the line. This whole part is wrapped in a non-capturing group and marked as optional with ?.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: Similar to the previous step, this captures the vertical offset.\n\n(\\d+(?:\\.\\d*)?(?:px)?)?: This captures the blur radius. It's similar to the horizontal offset but without the optional minus sign.\n\n(?:\\s+(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?){0,1}: This captures an optional part for the color. It allows for whitespace followed by a component with an optional minus sign, digits, decimal point, and \"px\" unit.\n\n(?:$|\\s): This captures either the end of the line or a whitespace character. It ensures that the match ends either at the end of the string or with a whitespace character.\n */\n// eslint-disable-next-line max-len\n\nconst shadowOffsetRegex = '(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?';\n\nconst reOffsetsAndBlur = new RegExp(\n '(?:\\\\s|^)' +\n shadowOffsetRegex +\n shadowOffsetRegex +\n '(' +\n reNum +\n '?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)',\n);\n\nexport const shadowDefaultValues: Partial<TClassProperties<Shadow>> = {\n color: 'rgb(0,0,0)',\n blur: 0,\n offsetX: 0,\n offsetY: 0,\n affectStroke: false,\n includeDefaultValues: true,\n nonScaling: false,\n};\n\nexport type SerializedShadowOptions = {\n color: string;\n blur: number;\n offsetX: number;\n offsetY: number;\n affectStroke: boolean;\n nonScaling: boolean;\n type: string;\n};\n\nexport class Shadow {\n /**\n * Shadow color\n * @type String\n * @default\n */\n declare color: string;\n\n /**\n * Shadow blur\n * @type Number\n */\n declare blur: number;\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n declare offsetX: number;\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n declare offsetY: number;\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n declare affectStroke: boolean;\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n declare includeDefaultValues: boolean;\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n declare nonScaling: boolean;\n\n declare id: number;\n\n static ownDefaults = shadowDefaultValues;\n\n static type = 'shadow';\n\n /**\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n */\n constructor(options: Partial<TClassProperties<Shadow>>);\n constructor(svgAttribute: string);\n constructor(arg0: string | Partial<TClassProperties<Shadow>>) {\n const options: Partial<TClassProperties<Shadow>> =\n typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;\n Object.assign(this, Shadow.ownDefaults, options);\n this.id = uid();\n }\n\n /**\n * @param {String} value Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n static parseShadow(value: string) {\n const shadowStr = value.trim(),\n [, offsetX = 0, offsetY = 0, blur = 0] = (\n reOffsetsAndBlur.exec(shadowStr) || []\n ).map((value) => parseFloat(value) || 0),\n color = (shadowStr.replace(reOffsetsAndBlur, '') || 'rgb(0,0,0)').trim();\n\n return {\n color,\n offsetX,\n offsetY,\n blur,\n };\n }\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n }\n\n /**\n * Returns SVG representation of a shadow\n * @param {FabricObject} object\n * @return {String} SVG representation of a shadow\n */\n toSVG(object: FabricObject) {\n const offset = rotateVector(\n new Point(this.offsetX, this.offsetY),\n degreesToRadians(-object.angle),\n ),\n BLUR_BOX = 20,\n color = new Color(this.color);\n let fBoxX = 40,\n fBoxY = 40;\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX =\n toFixed(\n (Math.abs(offset.x) + this.blur) / object.width,\n config.NUM_FRACTION_DIGITS,\n ) *\n 100 +\n BLUR_BOX;\n fBoxY =\n toFixed(\n (Math.abs(offset.y) + this.blur) / object.height,\n config.NUM_FRACTION_DIGITS,\n ) *\n 100 +\n BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return `<filter id=\"SVGID_${this.id}\" y=\"-${fBoxY}%\" height=\"${\n 100 + 2 * fBoxY\n }%\" x=\"-${fBoxX}%\" width=\"${\n 100 + 2 * fBoxX\n }%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${toFixed(\n this.blur ? this.blur / 2 : 0,\n config.NUM_FRACTION_DIGITS,\n )}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${toFixed(\n offset.x,\n config.NUM_FRACTION_DIGITS,\n )}\" dy=\"${toFixed(\n offset.y,\n config.NUM_FRACTION_DIGITS,\n )}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${color.toRgb()}\" flood-opacity=\"${color.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`;\n }\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject() {\n const data: SerializedShadowOptions = {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling,\n type: (this.constructor as typeof Shadow).type,\n };\n const defaults = Shadow.ownDefaults as SerializedShadowOptions;\n return !this.includeDefaultValues\n ? pickBy(data, (value, key) => value !== defaults[key])\n : data;\n }\n\n static async fromObject(options: Partial<TClassProperties<Shadow>>) {\n return new this(options);\n }\n}\n\nclassRegistry.setClass(Shadow, 'shadow');\n"],"names":["shadowOffsetRegex","reOffsetsAndBlur","RegExp","reNum","shadowDefaultValues","color","blur","offsetX","offsetY","affectStroke","includeDefaultValues","nonScaling","Shadow","constructor","arg0","options","parseShadow","Object","assign","this","ownDefaults","id","uid","value","shadowStr","trim","exec","map","parseFloat","replace","toString","join","toSVG","object","offset","rotateVector","Point","degreesToRadians","angle","Color","fBoxX","fBoxY","width","height","toFixed","Math","abs","x","config","NUM_FRACTION_DIGITS","y","flipX","flipY","concat","toRgb","getAlpha","toObject","data","type","defaults","pickBy","key","fromObject","_defineProperty","classRegistry","setClass"],"mappings":"gmBA+BA,MAAMA,EAAoB,yCAEpBC,EAAmB,IAAIC,OAC3B,YACEF,EACAA,EACA,IACAG,EACA,iCAGSC,EAAyD,CACpEC,MAAO,aACPC,KAAM,EACNC,QAAS,EACTC,QAAS,EACTC,cAAc,EACdC,sBAAsB,EACtBC,YAAY,GAaP,MAAMC,EA+DXC,WAAAA,CAAYC,GACV,MAAMC,EACY,iBAATD,EAAoBF,EAAOI,YAAYF,GAAQA,EACxDG,OAAOC,OAAOC,KAAMP,EAAOQ,YAAaL,GACxCI,KAAKE,GAAKC,GACZ,CAMA,kBAAON,CAAYO,GACjB,MAAMC,EAAYD,EAAME,QACnBlB,CAAAA,EAAU,EAAGC,EAAU,EAAGF,EAAO,IAClCL,EAAiByB,KAAKF,IAAc,IACpCG,KAAKJ,GAAUK,WAAWL,IAAU,IAGxC,MAAO,CACLlB,OAHSmB,EAAUK,QAAQ5B,EAAkB,KAAO,cAAcwB,OAIlElB,UACAC,UACAF,OAEJ,CAOAwB,QAAAA,GACE,MAAO,CAACX,KAAKZ,QAASY,KAAKX,QAASW,KAAKb,KAAMa,KAAKd,OAAO0B,KAAK,MAClE,CAOAC,KAAAA,CAAMC,GACJ,MAAMC,EAASC,EACX,IAAIC,EAAMjB,KAAKZ,QAASY,KAAKX,SAC7B6B,GAAkBJ,EAAOK,QAG3BjC,EAAQ,IAAIkC,EAAMpB,KAAKd,OACzB,IAAImC,EAAQ,GACVC,EAAQ,GA2BV,OAzBIR,EAAOS,OAAST,EAAOU,SAGzBH,EAKI,IAJFI,GACGC,KAAKC,IAAIZ,EAAOa,GAAK5B,KAAKb,MAAQ2B,EAAOS,MAC1CM,EAAOC,qBAXA,GAeXR,EAKI,IAJFG,GACGC,KAAKC,IAAIZ,EAAOgB,GAAK/B,KAAKb,MAAQ2B,EAAOU,OAC1CK,EAAOC,qBAlBA,IAuBThB,EAAOkB,QACTjB,EAAOa,IAAM,GAEXd,EAAOmB,QACTlB,EAAOgB,IAAM,GAGf,qBAAAG,OAA4BlC,KAAKE,GAAE,UAAAgC,OAASZ,iBAAKY,OAC/C,IAAM,EAAIZ,EAAK,WAAAY,OACPb,gBAAKa,OACb,IAAM,EAAIb,EAAK,2DAAAa,OACyCT,EACxDzB,KAAKb,KAAOa,KAAKb,KAAO,EAAI,EAC5B0C,EAAOC,qBACR,yCAAAI,OAAwCT,EACvCV,EAAOa,EACPC,EAAOC,+BACRI,OAAST,EACRV,EAAOgB,EACPF,EAAOC,qBACRI,2DAAAA,OAA0DhD,EAAMiD,6BAAOD,OAAoBhD,EAAMkD,WAAU,gLAC9G,CAMAC,QAAAA,GACE,MAAMC,EAAgC,CACpCpD,MAAOc,KAAKd,MACZC,KAAMa,KAAKb,KACXC,QAASY,KAAKZ,QACdC,QAASW,KAAKX,QACdC,aAAcU,KAAKV,aACnBE,WAAYQ,KAAKR,WACjB+C,KAAOvC,KAAKN,YAA8B6C,MAEtCC,EAAW/C,EAAOQ,YACxB,OAAQD,KAAKT,qBAET+C,EADAG,EAAOH,GAAM,CAAClC,EAAOsC,IAAQtC,IAAUoC,EAASE,IAEtD,CAEA,uBAAaC,CAAW/C,GACtB,OAAO,IAAII,KAAKJ,EAClB,EAtIAgD,EA1CWnD,EAAM,cAqDIR,GAAmB2D,EArD7BnD,EAAM,OAuDH,UA4HhBoD,EAAcC,SAASrD,EAAQ"}
@@ -1 +1 @@
1
- {"version":3,"file":"Shadow.mjs","sources":["../../src/Shadow.ts"],"sourcesContent":["import { classRegistry } from './ClassRegistry';\nimport { Color } from './color/Color';\nimport { config } from './config';\nimport { reNum } from './parser/constants';\nimport { Point } from './Point';\nimport type { FabricObject } from './shapes/Object/FabricObject';\nimport type { TClassProperties } from './typedefs';\nimport { uid } from './util/internals/uid';\nimport { pickBy } from './util/misc/pick';\nimport { degreesToRadians } from './util/misc/radiansDegreesConversion';\nimport { toFixed } from './util/misc/toFixed';\nimport { rotateVector } from './util/misc/vectors';\n\n/**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * - (?:\\s|^): This part captures either a whitespace character (\\s) or the beginning of a line (^). It's non-capturing (due to (?:...)), meaning it doesn't create a capturing group.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: This captures the first component of the shadow, which is the horizontal offset. Breaking it down:\n * - (-?\\d+): Captures an optional minus sign followed by one or more digits (integer part of the number).\n * - (?:\\.\\d*)?: Optionally captures a decimal point followed by zero or more digits (decimal part of the number).\n * - (?:px)?: Optionally captures the \"px\" unit.\n * - (?:\\s?|$): Captures either an optional whitespace or the end of the line. This whole part is wrapped in a non-capturing group and marked as optional with ?.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: Similar to the previous step, this captures the vertical offset.\n\n(\\d+(?:\\.\\d*)?(?:px)?)?: This captures the blur radius. It's similar to the horizontal offset but without the optional minus sign.\n\n(?:\\s+(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?){0,1}: This captures an optional part for the color. It allows for whitespace followed by a component with an optional minus sign, digits, decimal point, and \"px\" unit.\n\n(?:$|\\s): This captures either the end of the line or a whitespace character. It ensures that the match ends either at the end of the string or with a whitespace character.\n */\n// eslint-disable-next-line max-len\n\nconst shadowOffsetRegex = '(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?';\n\nconst reOffsetsAndBlur = new RegExp(\n '(?:\\\\s|^)' +\n shadowOffsetRegex +\n shadowOffsetRegex +\n '(' +\n reNum +\n '?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)'\n);\n\nexport const shadowDefaultValues: Partial<TClassProperties<Shadow>> = {\n color: 'rgb(0,0,0)',\n blur: 0,\n offsetX: 0,\n offsetY: 0,\n affectStroke: false,\n includeDefaultValues: true,\n nonScaling: false,\n};\n\nexport type SerializedShadowOptions = {\n color: string;\n blur: number;\n offsetX: number;\n offsetY: number;\n affectStroke: boolean;\n nonScaling: boolean;\n type: string;\n};\n\nexport class Shadow {\n /**\n * Shadow color\n * @type String\n * @default\n */\n declare color: string;\n\n /**\n * Shadow blur\n * @type Number\n */\n declare blur: number;\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n declare offsetX: number;\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n declare offsetY: number;\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n declare affectStroke: boolean;\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n declare includeDefaultValues: boolean;\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n declare nonScaling: boolean;\n\n declare id: number;\n\n static ownDefaults = shadowDefaultValues;\n\n static type = 'shadow';\n\n /**\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n */\n constructor(options: Partial<TClassProperties<Shadow>>);\n constructor(svgAttribute: string);\n constructor(arg0: string | Partial<TClassProperties<Shadow>>) {\n const options: Partial<TClassProperties<Shadow>> =\n typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;\n Object.assign(this, Shadow.ownDefaults, options);\n this.id = uid();\n }\n\n /**\n * @param {String} value Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n static parseShadow(value: string) {\n const shadowStr = value.trim(),\n [, offsetX = 0, offsetY = 0, blur = 0] = (\n reOffsetsAndBlur.exec(shadowStr) || []\n ).map((value) => parseFloat(value) || 0),\n color = (shadowStr.replace(reOffsetsAndBlur, '') || 'rgb(0,0,0)').trim();\n\n return {\n color,\n offsetX,\n offsetY,\n blur,\n };\n }\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n }\n\n /**\n * Returns SVG representation of a shadow\n * @param {FabricObject} object\n * @return {String} SVG representation of a shadow\n */\n toSVG(object: FabricObject) {\n const offset = rotateVector(\n new Point(this.offsetX, this.offsetY),\n degreesToRadians(-object.angle)\n ),\n BLUR_BOX = 20,\n color = new Color(this.color);\n let fBoxX = 40,\n fBoxY = 40;\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX =\n toFixed(\n (Math.abs(offset.x) + this.blur) / object.width,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n fBoxY =\n toFixed(\n (Math.abs(offset.y) + this.blur) / object.height,\n config.NUM_FRACTION_DIGITS\n ) *\n 100 +\n BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return `<filter id=\"SVGID_${this.id}\" y=\"-${fBoxY}%\" height=\"${\n 100 + 2 * fBoxY\n }%\" x=\"-${fBoxX}%\" width=\"${\n 100 + 2 * fBoxX\n }%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${toFixed(\n this.blur ? this.blur / 2 : 0,\n config.NUM_FRACTION_DIGITS\n )}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${toFixed(\n offset.x,\n config.NUM_FRACTION_DIGITS\n )}\" dy=\"${toFixed(\n offset.y,\n config.NUM_FRACTION_DIGITS\n )}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${color.toRgb()}\" flood-opacity=\"${color.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`;\n }\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject() {\n const data: SerializedShadowOptions = {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling,\n type: (this.constructor as typeof Shadow).type,\n };\n const defaults = Shadow.ownDefaults as SerializedShadowOptions;\n return !this.includeDefaultValues\n ? pickBy(data, (value, key) => value !== defaults[key])\n : data;\n }\n\n static async fromObject(options: Partial<TClassProperties<Shadow>>) {\n return new this(options);\n }\n}\n\nclassRegistry.setClass(Shadow, 'shadow');\n"],"names":["shadowOffsetRegex","reOffsetsAndBlur","RegExp","reNum","shadowDefaultValues","color","blur","offsetX","offsetY","affectStroke","includeDefaultValues","nonScaling","Shadow","constructor","arg0","options","parseShadow","Object","assign","ownDefaults","id","uid","value","shadowStr","trim","exec","map","parseFloat","replace","toString","join","toSVG","object","offset","rotateVector","Point","degreesToRadians","angle","BLUR_BOX","Color","fBoxX","fBoxY","width","height","toFixed","Math","abs","x","config","NUM_FRACTION_DIGITS","y","flipX","flipY","concat","toRgb","getAlpha","toObject","data","type","defaults","pickBy","key","fromObject","_defineProperty","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"Shadow.mjs","sources":["../../src/Shadow.ts"],"sourcesContent":["import { classRegistry } from './ClassRegistry';\nimport { Color } from './color/Color';\nimport { config } from './config';\nimport { reNum } from './parser/constants';\nimport { Point } from './Point';\nimport type { FabricObject } from './shapes/Object/FabricObject';\nimport type { TClassProperties } from './typedefs';\nimport { uid } from './util/internals/uid';\nimport { pickBy } from './util/misc/pick';\nimport { degreesToRadians } from './util/misc/radiansDegreesConversion';\nimport { toFixed } from './util/misc/toFixed';\nimport { rotateVector } from './util/misc/vectors';\n\n/**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * - (?:\\s|^): This part captures either a whitespace character (\\s) or the beginning of a line (^). It's non-capturing (due to (?:...)), meaning it doesn't create a capturing group.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: This captures the first component of the shadow, which is the horizontal offset. Breaking it down:\n * - (-?\\d+): Captures an optional minus sign followed by one or more digits (integer part of the number).\n * - (?:\\.\\d*)?: Optionally captures a decimal point followed by zero or more digits (decimal part of the number).\n * - (?:px)?: Optionally captures the \"px\" unit.\n * - (?:\\s?|$): Captures either an optional whitespace or the end of the line. This whole part is wrapped in a non-capturing group and marked as optional with ?.\n * - (-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?: Similar to the previous step, this captures the vertical offset.\n\n(\\d+(?:\\.\\d*)?(?:px)?)?: This captures the blur radius. It's similar to the horizontal offset but without the optional minus sign.\n\n(?:\\s+(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?){0,1}: This captures an optional part for the color. It allows for whitespace followed by a component with an optional minus sign, digits, decimal point, and \"px\" unit.\n\n(?:$|\\s): This captures either the end of the line or a whitespace character. It ensures that the match ends either at the end of the string or with a whitespace character.\n */\n// eslint-disable-next-line max-len\n\nconst shadowOffsetRegex = '(-?\\\\d+(?:\\\\.\\\\d*)?(?:px)?(?:\\\\s?|$))?';\n\nconst reOffsetsAndBlur = new RegExp(\n '(?:\\\\s|^)' +\n shadowOffsetRegex +\n shadowOffsetRegex +\n '(' +\n reNum +\n '?(?:px)?)?(?:\\\\s?|$)(?:$|\\\\s)',\n);\n\nexport const shadowDefaultValues: Partial<TClassProperties<Shadow>> = {\n color: 'rgb(0,0,0)',\n blur: 0,\n offsetX: 0,\n offsetY: 0,\n affectStroke: false,\n includeDefaultValues: true,\n nonScaling: false,\n};\n\nexport type SerializedShadowOptions = {\n color: string;\n blur: number;\n offsetX: number;\n offsetY: number;\n affectStroke: boolean;\n nonScaling: boolean;\n type: string;\n};\n\nexport class Shadow {\n /**\n * Shadow color\n * @type String\n * @default\n */\n declare color: string;\n\n /**\n * Shadow blur\n * @type Number\n */\n declare blur: number;\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n declare offsetX: number;\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n declare offsetY: number;\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n declare affectStroke: boolean;\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n declare includeDefaultValues: boolean;\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n declare nonScaling: boolean;\n\n declare id: number;\n\n static ownDefaults = shadowDefaultValues;\n\n static type = 'shadow';\n\n /**\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n */\n constructor(options: Partial<TClassProperties<Shadow>>);\n constructor(svgAttribute: string);\n constructor(arg0: string | Partial<TClassProperties<Shadow>>) {\n const options: Partial<TClassProperties<Shadow>> =\n typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;\n Object.assign(this, Shadow.ownDefaults, options);\n this.id = uid();\n }\n\n /**\n * @param {String} value Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n static parseShadow(value: string) {\n const shadowStr = value.trim(),\n [, offsetX = 0, offsetY = 0, blur = 0] = (\n reOffsetsAndBlur.exec(shadowStr) || []\n ).map((value) => parseFloat(value) || 0),\n color = (shadowStr.replace(reOffsetsAndBlur, '') || 'rgb(0,0,0)').trim();\n\n return {\n color,\n offsetX,\n offsetY,\n blur,\n };\n }\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n }\n\n /**\n * Returns SVG representation of a shadow\n * @param {FabricObject} object\n * @return {String} SVG representation of a shadow\n */\n toSVG(object: FabricObject) {\n const offset = rotateVector(\n new Point(this.offsetX, this.offsetY),\n degreesToRadians(-object.angle),\n ),\n BLUR_BOX = 20,\n color = new Color(this.color);\n let fBoxX = 40,\n fBoxY = 40;\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX =\n toFixed(\n (Math.abs(offset.x) + this.blur) / object.width,\n config.NUM_FRACTION_DIGITS,\n ) *\n 100 +\n BLUR_BOX;\n fBoxY =\n toFixed(\n (Math.abs(offset.y) + this.blur) / object.height,\n config.NUM_FRACTION_DIGITS,\n ) *\n 100 +\n BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return `<filter id=\"SVGID_${this.id}\" y=\"-${fBoxY}%\" height=\"${\n 100 + 2 * fBoxY\n }%\" x=\"-${fBoxX}%\" width=\"${\n 100 + 2 * fBoxX\n }%\" >\\n\\t<feGaussianBlur in=\"SourceAlpha\" stdDeviation=\"${toFixed(\n this.blur ? this.blur / 2 : 0,\n config.NUM_FRACTION_DIGITS,\n )}\"></feGaussianBlur>\\n\\t<feOffset dx=\"${toFixed(\n offset.x,\n config.NUM_FRACTION_DIGITS,\n )}\" dy=\"${toFixed(\n offset.y,\n config.NUM_FRACTION_DIGITS,\n )}\" result=\"oBlur\" ></feOffset>\\n\\t<feFlood flood-color=\"${color.toRgb()}\" flood-opacity=\"${color.getAlpha()}\"/>\\n\\t<feComposite in2=\"oBlur\" operator=\"in\" />\\n\\t<feMerge>\\n\\t\\t<feMergeNode></feMergeNode>\\n\\t\\t<feMergeNode in=\"SourceGraphic\"></feMergeNode>\\n\\t</feMerge>\\n</filter>\\n`;\n }\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject() {\n const data: SerializedShadowOptions = {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling,\n type: (this.constructor as typeof Shadow).type,\n };\n const defaults = Shadow.ownDefaults as SerializedShadowOptions;\n return !this.includeDefaultValues\n ? pickBy(data, (value, key) => value !== defaults[key])\n : data;\n }\n\n static async fromObject(options: Partial<TClassProperties<Shadow>>) {\n return new this(options);\n }\n}\n\nclassRegistry.setClass(Shadow, 'shadow');\n"],"names":["shadowOffsetRegex","reOffsetsAndBlur","RegExp","reNum","shadowDefaultValues","color","blur","offsetX","offsetY","affectStroke","includeDefaultValues","nonScaling","Shadow","constructor","arg0","options","parseShadow","Object","assign","ownDefaults","id","uid","value","shadowStr","trim","exec","map","parseFloat","replace","toString","join","toSVG","object","offset","rotateVector","Point","degreesToRadians","angle","BLUR_BOX","Color","fBoxX","fBoxY","width","height","toFixed","Math","abs","x","config","NUM_FRACTION_DIGITS","y","flipX","flipY","concat","toRgb","getAlpha","toObject","data","type","defaults","pickBy","key","fromObject","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CircleBrush.min.mjs","sources":["../../../src/brushes/CircleBrush.ts"],"sourcesContent":["import { Color } from '../color/Color';\nimport type { Point } from '../Point';\nimport { Shadow } from '../Shadow';\nimport { Circle } from '../shapes/Circle';\nimport { Group } from '../shapes/Group';\nimport { getRandomInt } from '../util/internals';\nimport type { Canvas } from '../canvas/Canvas';\nimport { BaseBrush } from './BaseBrush';\nimport type { CircleBrushPoint } from './typedefs';\nimport { CENTER } from '../constants';\n\nexport class CircleBrush extends BaseBrush {\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width = 10;\n\n declare points: CircleBrushPoint[];\n\n constructor(canvas: Canvas) {\n super(canvas);\n this.points = [];\n }\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Point} pointer\n */\n drawDot(pointer: Point) {\n const point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n }\n\n dot(ctx: CanvasRenderingContext2D, point: CircleBrushPoint) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n }\n\n /**\n * Invoked on mouse down\n */\n onMouseDown(pointer: Point) {\n this.points = [];\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n }\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render() {\n const ctx = this.canvas.contextTop,\n points = this.points;\n this._saveAndTransform(ctx);\n for (let i = 0; i < points.length; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n }\n\n /**\n * Invoked on mouse move\n * @param {Point} pointer\n */\n onMouseMove(pointer: Point) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n } else {\n this.drawDot(pointer);\n }\n }\n\n /**\n * Invoked on mouse up\n */\n onMouseUp() {\n const originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n const circles: Circle[] = [];\n\n for (let i = 0; i < this.points.length; i++) {\n const point = this.points[i],\n circle = new Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: CENTER,\n originY: CENTER,\n fill: point.fill,\n });\n\n this.shadow && (circle.shadow = new Shadow(this.shadow));\n\n circles.push(circle);\n }\n const group = new Group(circles, { canvas: this.canvas });\n\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n }\n\n /**\n * @param {Object} pointer\n * @return {Point} Just added pointer point\n */\n addPoint({ x, y }: Point) {\n const pointerPoint: CircleBrushPoint = {\n x,\n y,\n radius: getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,\n fill: new Color(this.color).setAlpha(getRandomInt(0, 100) / 100).toRgba(),\n };\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n}\n"],"names":["CircleBrush","BaseBrush","constructor","canvas","super","_defineProperty","this","points","drawDot","pointer","point","addPoint","ctx","contextTop","_saveAndTransform","dot","restore","fillStyle","fill","beginPath","arc","x","y","radius","Math","PI","closePath","onMouseDown","clearContext","_setShadow","_render","i","length","onMouseMove","limitedToCanvasSize","_isOutSideCanvas","needsFullRender","onMouseUp","originalRenderOnAddRemove","renderOnAddRemove","circles","circle","Circle","left","top","originX","CENTER","originY","shadow","Shadow","push","group","Group","fire","path","add","_resetShadow","requestRenderAll","_ref","pointerPoint","getRandomInt","max","width","Color","color","setAlpha","toRgba"],"mappings":"kbAWO,MAAMA,UAAoBC,EAU/BC,WAAAA,CAAYC,GACVC,MAAMD,GAVRE,eAKQ,IAMNC,KAAKC,OAAS,EAChB,CAMAC,OAAAA,CAAQC,GACN,MAAMC,EAAQJ,KAAKK,SAASF,GAC1BG,EAAMN,KAAKH,OAAOU,WACpBP,KAAKQ,kBAAkBF,GACvBN,KAAKS,IAAIH,EAAKF,GACdE,EAAII,SACN,CAEAD,GAAAA,CAAIH,EAA+BF,GACjCE,EAAIK,UAAYP,EAAMQ,KACtBN,EAAIO,YACJP,EAAIQ,IAAIV,EAAMW,EAAGX,EAAMY,EAAGZ,EAAMa,OAAQ,EAAa,EAAVC,KAAKC,IAAQ,GACxDb,EAAIc,YACJd,EAAIM,MACN,CAKAS,WAAAA,CAAYlB,GACVH,KAAKC,OAAS,GACdD,KAAKH,OAAOyB,aAAatB,KAAKH,OAAOU,YACrCP,KAAKuB,aACLvB,KAAKE,QAAQC,EACf,CAMAqB,OAAAA,GACE,MAAMlB,EAAMN,KAAKH,OAAOU,WACtBN,EAASD,KAAKC,OAChBD,KAAKQ,kBAAkBF,GACvB,IAAK,IAAImB,EAAI,EAAGA,EAAIxB,EAAOyB,OAAQD,IACjCzB,KAAKS,IAAIH,EAAKL,EAAOwB,IAEvBnB,EAAII,SACN,CAMAiB,WAAAA,CAAYxB,IACuB,IAA7BH,KAAK4B,qBAAgC5B,KAAK6B,iBAAiB1B,KAG3DH,KAAK8B,mBACP9B,KAAKH,OAAOyB,aAAatB,KAAKH,OAAOU,YACrCP,KAAKK,SAASF,GACdH,KAAKwB,WAELxB,KAAKE,QAAQC,GAEjB,CAKA4B,SAAAA,GACE,MAAMC,EAA4BhC,KAAKH,OAAOoC,kBAC9CjC,KAAKH,OAAOoC,mBAAoB,EAEhC,MAAMC,EAAoB,GAE1B,IAAK,IAAIT,EAAI,EAAGA,EAAIzB,KAAKC,OAAOyB,OAAQD,IAAK,CAC3C,MAAMrB,EAAQJ,KAAKC,OAAOwB,GACxBU,EAAS,IAAIC,EAAO,CAClBnB,OAAQb,EAAMa,OACdoB,KAAMjC,EAAMW,EACZuB,IAAKlC,EAAMY,EACXuB,QAASC,EACTC,QAASD,EACT5B,KAAMR,EAAMQ,OAGhBZ,KAAK0C,SAAWP,EAAOO,OAAS,IAAIC,EAAO3C,KAAK0C,SAEhDR,EAAQU,KAAKT,EACf,CACA,MAAMU,EAAQ,IAAIC,EAAMZ,EAAS,CAAErC,OAAQG,KAAKH,SAEhDG,KAAKH,OAAOkD,KAAK,sBAAuB,CAAEC,KAAMH,IAChD7C,KAAKH,OAAOoD,IAAIJ,GAChB7C,KAAKH,OAAOkD,KAAK,eAAgB,CAAEC,KAAMH,IAEzC7C,KAAKH,OAAOyB,aAAatB,KAAKH,OAAOU,YACrCP,KAAKkD,eACLlD,KAAKH,OAAOoC,kBAAoBD,EAChChC,KAAKH,OAAOsD,kBACd,CAMA9C,QAAAA,CAAQ+C,GAAkB,IAAjBrC,EAAEA,EAACC,EAAEA,GAAUoC,EACtB,MAAMC,EAAiC,CACrCtC,IACAC,IACAC,OAAQqC,EAAapC,KAAKqC,IAAI,EAAGvD,KAAKwD,MAAQ,IAAKxD,KAAKwD,MAAQ,IAAM,EACtE5C,KAAM,IAAI6C,EAAMzD,KAAK0D,OAAOC,SAASL,EAAa,EAAG,KAAO,KAAKM,UAKnE,OAFA5D,KAAKC,OAAO2C,KAAKS,GAEVA,CACT"}
1
+ {"version":3,"file":"CircleBrush.min.mjs","sources":["../../../src/brushes/CircleBrush.ts"],"sourcesContent":["import { Color } from '../color/Color';\nimport type { Point } from '../Point';\nimport { Shadow } from '../Shadow';\nimport { Circle } from '../shapes/Circle';\nimport { Group } from '../shapes/Group';\nimport { getRandomInt } from '../util/internals/getRandomInt';\nimport type { Canvas } from '../canvas/Canvas';\nimport { BaseBrush } from './BaseBrush';\nimport type { CircleBrushPoint } from './typedefs';\nimport { CENTER } from '../constants';\n\nexport class CircleBrush extends BaseBrush {\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width = 10;\n\n declare points: CircleBrushPoint[];\n\n constructor(canvas: Canvas) {\n super(canvas);\n this.points = [];\n }\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Point} pointer\n */\n drawDot(pointer: Point) {\n const point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n }\n\n dot(ctx: CanvasRenderingContext2D, point: CircleBrushPoint) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n }\n\n /**\n * Invoked on mouse down\n */\n onMouseDown(pointer: Point) {\n this.points = [];\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n }\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render() {\n const ctx = this.canvas.contextTop,\n points = this.points;\n this._saveAndTransform(ctx);\n for (let i = 0; i < points.length; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n }\n\n /**\n * Invoked on mouse move\n * @param {Point} pointer\n */\n onMouseMove(pointer: Point) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n } else {\n this.drawDot(pointer);\n }\n }\n\n /**\n * Invoked on mouse up\n */\n onMouseUp() {\n const originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n const circles: Circle[] = [];\n\n for (let i = 0; i < this.points.length; i++) {\n const point = this.points[i],\n circle = new Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: CENTER,\n originY: CENTER,\n fill: point.fill,\n });\n\n this.shadow && (circle.shadow = new Shadow(this.shadow));\n\n circles.push(circle);\n }\n const group = new Group(circles, { canvas: this.canvas });\n\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n }\n\n /**\n * @param {Object} pointer\n * @return {Point} Just added pointer point\n */\n addPoint({ x, y }: Point) {\n const pointerPoint: CircleBrushPoint = {\n x,\n y,\n radius: getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,\n fill: new Color(this.color).setAlpha(getRandomInt(0, 100) / 100).toRgba(),\n };\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n}\n"],"names":["CircleBrush","BaseBrush","constructor","canvas","super","_defineProperty","this","points","drawDot","pointer","point","addPoint","ctx","contextTop","_saveAndTransform","dot","restore","fillStyle","fill","beginPath","arc","x","y","radius","Math","PI","closePath","onMouseDown","clearContext","_setShadow","_render","i","length","onMouseMove","limitedToCanvasSize","_isOutSideCanvas","needsFullRender","onMouseUp","originalRenderOnAddRemove","renderOnAddRemove","circles","circle","Circle","left","top","originX","CENTER","originY","shadow","Shadow","push","group","Group","fire","path","add","_resetShadow","requestRenderAll","_ref","pointerPoint","getRandomInt","max","width","Color","color","setAlpha","toRgba"],"mappings":"kbAWO,MAAMA,UAAoBC,EAU/BC,WAAAA,CAAYC,GACVC,MAAMD,GAVRE,eAKQ,IAMNC,KAAKC,OAAS,EAChB,CAMAC,OAAAA,CAAQC,GACN,MAAMC,EAAQJ,KAAKK,SAASF,GAC1BG,EAAMN,KAAKH,OAAOU,WACpBP,KAAKQ,kBAAkBF,GACvBN,KAAKS,IAAIH,EAAKF,GACdE,EAAII,SACN,CAEAD,GAAAA,CAAIH,EAA+BF,GACjCE,EAAIK,UAAYP,EAAMQ,KACtBN,EAAIO,YACJP,EAAIQ,IAAIV,EAAMW,EAAGX,EAAMY,EAAGZ,EAAMa,OAAQ,EAAa,EAAVC,KAAKC,IAAQ,GACxDb,EAAIc,YACJd,EAAIM,MACN,CAKAS,WAAAA,CAAYlB,GACVH,KAAKC,OAAS,GACdD,KAAKH,OAAOyB,aAAatB,KAAKH,OAAOU,YACrCP,KAAKuB,aACLvB,KAAKE,QAAQC,EACf,CAMAqB,OAAAA,GACE,MAAMlB,EAAMN,KAAKH,OAAOU,WACtBN,EAASD,KAAKC,OAChBD,KAAKQ,kBAAkBF,GACvB,IAAK,IAAImB,EAAI,EAAGA,EAAIxB,EAAOyB,OAAQD,IACjCzB,KAAKS,IAAIH,EAAKL,EAAOwB,IAEvBnB,EAAII,SACN,CAMAiB,WAAAA,CAAYxB,IACuB,IAA7BH,KAAK4B,qBAAgC5B,KAAK6B,iBAAiB1B,KAG3DH,KAAK8B,mBACP9B,KAAKH,OAAOyB,aAAatB,KAAKH,OAAOU,YACrCP,KAAKK,SAASF,GACdH,KAAKwB,WAELxB,KAAKE,QAAQC,GAEjB,CAKA4B,SAAAA,GACE,MAAMC,EAA4BhC,KAAKH,OAAOoC,kBAC9CjC,KAAKH,OAAOoC,mBAAoB,EAEhC,MAAMC,EAAoB,GAE1B,IAAK,IAAIT,EAAI,EAAGA,EAAIzB,KAAKC,OAAOyB,OAAQD,IAAK,CAC3C,MAAMrB,EAAQJ,KAAKC,OAAOwB,GACxBU,EAAS,IAAIC,EAAO,CAClBnB,OAAQb,EAAMa,OACdoB,KAAMjC,EAAMW,EACZuB,IAAKlC,EAAMY,EACXuB,QAASC,EACTC,QAASD,EACT5B,KAAMR,EAAMQ,OAGhBZ,KAAK0C,SAAWP,EAAOO,OAAS,IAAIC,EAAO3C,KAAK0C,SAEhDR,EAAQU,KAAKT,EACf,CACA,MAAMU,EAAQ,IAAIC,EAAMZ,EAAS,CAAErC,OAAQG,KAAKH,SAEhDG,KAAKH,OAAOkD,KAAK,sBAAuB,CAAEC,KAAMH,IAChD7C,KAAKH,OAAOoD,IAAIJ,GAChB7C,KAAKH,OAAOkD,KAAK,eAAgB,CAAEC,KAAMH,IAEzC7C,KAAKH,OAAOyB,aAAatB,KAAKH,OAAOU,YACrCP,KAAKkD,eACLlD,KAAKH,OAAOoC,kBAAoBD,EAChChC,KAAKH,OAAOsD,kBACd,CAMA9C,QAAAA,CAAQ+C,GAAkB,IAAjBrC,EAAEA,EAACC,EAAEA,GAAUoC,EACtB,MAAMC,EAAiC,CACrCtC,IACAC,IACAC,OAAQqC,EAAapC,KAAKqC,IAAI,EAAGvD,KAAKwD,MAAQ,IAAKxD,KAAKwD,MAAQ,IAAM,EACtE5C,KAAM,IAAI6C,EAAMzD,KAAK0D,OAAOC,SAASL,EAAa,EAAG,KAAO,KAAKM,UAKnE,OAFA5D,KAAKC,OAAO2C,KAAKS,GAEVA,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"CircleBrush.mjs","sources":["../../../src/brushes/CircleBrush.ts"],"sourcesContent":["import { Color } from '../color/Color';\nimport type { Point } from '../Point';\nimport { Shadow } from '../Shadow';\nimport { Circle } from '../shapes/Circle';\nimport { Group } from '../shapes/Group';\nimport { getRandomInt } from '../util/internals';\nimport type { Canvas } from '../canvas/Canvas';\nimport { BaseBrush } from './BaseBrush';\nimport type { CircleBrushPoint } from './typedefs';\nimport { CENTER } from '../constants';\n\nexport class CircleBrush extends BaseBrush {\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width = 10;\n\n declare points: CircleBrushPoint[];\n\n constructor(canvas: Canvas) {\n super(canvas);\n this.points = [];\n }\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Point} pointer\n */\n drawDot(pointer: Point) {\n const point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n }\n\n dot(ctx: CanvasRenderingContext2D, point: CircleBrushPoint) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n }\n\n /**\n * Invoked on mouse down\n */\n onMouseDown(pointer: Point) {\n this.points = [];\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n }\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render() {\n const ctx = this.canvas.contextTop,\n points = this.points;\n this._saveAndTransform(ctx);\n for (let i = 0; i < points.length; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n }\n\n /**\n * Invoked on mouse move\n * @param {Point} pointer\n */\n onMouseMove(pointer: Point) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n } else {\n this.drawDot(pointer);\n }\n }\n\n /**\n * Invoked on mouse up\n */\n onMouseUp() {\n const originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n const circles: Circle[] = [];\n\n for (let i = 0; i < this.points.length; i++) {\n const point = this.points[i],\n circle = new Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: CENTER,\n originY: CENTER,\n fill: point.fill,\n });\n\n this.shadow && (circle.shadow = new Shadow(this.shadow));\n\n circles.push(circle);\n }\n const group = new Group(circles, { canvas: this.canvas });\n\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n }\n\n /**\n * @param {Object} pointer\n * @return {Point} Just added pointer point\n */\n addPoint({ x, y }: Point) {\n const pointerPoint: CircleBrushPoint = {\n x,\n y,\n radius: getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,\n fill: new Color(this.color).setAlpha(getRandomInt(0, 100) / 100).toRgba(),\n };\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n}\n"],"names":["CircleBrush","BaseBrush","constructor","canvas","_defineProperty","points","drawDot","pointer","point","addPoint","ctx","contextTop","_saveAndTransform","dot","restore","fillStyle","fill","beginPath","arc","x","y","radius","Math","PI","closePath","onMouseDown","clearContext","_setShadow","_render","i","length","onMouseMove","limitedToCanvasSize","_isOutSideCanvas","needsFullRender","onMouseUp","originalRenderOnAddRemove","renderOnAddRemove","circles","circle","Circle","left","top","originX","CENTER","originY","shadow","Shadow","push","group","Group","fire","path","add","_resetShadow","requestRenderAll","_ref","pointerPoint","getRandomInt","max","width","Color","color","setAlpha","toRgba"],"mappings":"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"}
1
+ {"version":3,"file":"CircleBrush.mjs","sources":["../../../src/brushes/CircleBrush.ts"],"sourcesContent":["import { Color } from '../color/Color';\nimport type { Point } from '../Point';\nimport { Shadow } from '../Shadow';\nimport { Circle } from '../shapes/Circle';\nimport { Group } from '../shapes/Group';\nimport { getRandomInt } from '../util/internals/getRandomInt';\nimport type { Canvas } from '../canvas/Canvas';\nimport { BaseBrush } from './BaseBrush';\nimport type { CircleBrushPoint } from './typedefs';\nimport { CENTER } from '../constants';\n\nexport class CircleBrush extends BaseBrush {\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width = 10;\n\n declare points: CircleBrushPoint[];\n\n constructor(canvas: Canvas) {\n super(canvas);\n this.points = [];\n }\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Point} pointer\n */\n drawDot(pointer: Point) {\n const point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n }\n\n dot(ctx: CanvasRenderingContext2D, point: CircleBrushPoint) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n }\n\n /**\n * Invoked on mouse down\n */\n onMouseDown(pointer: Point) {\n this.points = [];\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n }\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render() {\n const ctx = this.canvas.contextTop,\n points = this.points;\n this._saveAndTransform(ctx);\n for (let i = 0; i < points.length; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n }\n\n /**\n * Invoked on mouse move\n * @param {Point} pointer\n */\n onMouseMove(pointer: Point) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n } else {\n this.drawDot(pointer);\n }\n }\n\n /**\n * Invoked on mouse up\n */\n onMouseUp() {\n const originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n const circles: Circle[] = [];\n\n for (let i = 0; i < this.points.length; i++) {\n const point = this.points[i],\n circle = new Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: CENTER,\n originY: CENTER,\n fill: point.fill,\n });\n\n this.shadow && (circle.shadow = new Shadow(this.shadow));\n\n circles.push(circle);\n }\n const group = new Group(circles, { canvas: this.canvas });\n\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n }\n\n /**\n * @param {Object} pointer\n * @return {Point} Just added pointer point\n */\n addPoint({ x, y }: Point) {\n const pointerPoint: CircleBrushPoint = {\n x,\n y,\n radius: getRandomInt(Math.max(0, this.width - 20), this.width + 20) / 2,\n fill: new Color(this.color).setAlpha(getRandomInt(0, 100) / 100).toRgba(),\n };\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n}\n"],"names":["CircleBrush","BaseBrush","constructor","canvas","_defineProperty","points","drawDot","pointer","point","addPoint","ctx","contextTop","_saveAndTransform","dot","restore","fillStyle","fill","beginPath","arc","x","y","radius","Math","PI","closePath","onMouseDown","clearContext","_setShadow","_render","i","length","onMouseMove","limitedToCanvasSize","_isOutSideCanvas","needsFullRender","onMouseUp","originalRenderOnAddRemove","renderOnAddRemove","circles","circle","Circle","left","top","originX","CENTER","originY","shadow","Shadow","push","group","Group","fire","path","add","_resetShadow","requestRenderAll","_ref","pointerPoint","getRandomInt","max","width","Color","color","setAlpha","toRgba"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PatternBrush.min.mjs","sources":["../../../src/brushes/PatternBrush.ts"],"sourcesContent":["import { Pattern } from '../Pattern';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { Canvas } from '../canvas/Canvas';\nimport { PencilBrush } from './PencilBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\nexport class PatternBrush extends PencilBrush {\n declare source?: CanvasImageSource;\n\n constructor(canvas: Canvas) {\n super(canvas);\n }\n\n getPatternSrc() {\n const dotWidth = 20,\n dotDistance = 5,\n patternCanvas = createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n if (patternCtx) {\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(\n dotWidth / 2,\n dotWidth / 2,\n dotWidth / 2,\n 0,\n Math.PI * 2,\n false\n );\n patternCtx.closePath();\n patternCtx.fill();\n }\n return patternCanvas;\n }\n\n /**\n * Creates \"pattern\" instance property\n * @param {CanvasRenderingContext2D} ctx\n */\n getPattern(ctx: CanvasRenderingContext2D) {\n return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat');\n }\n\n /**\n * Sets brush styles\n * @param {CanvasRenderingContext2D} ctx\n */\n _setBrushStyles(ctx: CanvasRenderingContext2D) {\n super._setBrushStyles(ctx);\n const pattern = this.getPattern(ctx);\n pattern && (ctx.strokeStyle = pattern);\n }\n\n /**\n * Creates path\n */\n createPath(pathData: TSimplePathData) {\n const path = super.createPath(pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new Pattern({\n source: this.source || this.getPatternSrc(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y,\n });\n return path;\n }\n}\n"],"names":["PatternBrush","PencilBrush","constructor","canvas","super","getPatternSrc","patternCanvas","createCanvasElement","patternCtx","getContext","width","height","dotWidth","fillStyle","this","color","beginPath","arc","Math","PI","closePath","fill","getPattern","ctx","createPattern","source","_setBrushStyles","pattern","strokeStyle","createPath","pathData","path","topLeft","_getLeftTopCoords","scalarAdd","strokeWidth","stroke","Pattern","offsetX","x","offsetY","y"],"mappings":"wKAMO,MAAMA,UAAqBC,EAGhCC,WAAAA,CAAYC,GACVC,MAAMD,EACR,CAEAE,aAAAA,GACE,MAEEC,EAAgBC,IAChBC,EAAaF,EAAcG,WAAW,MAiBxC,OAfAH,EAAcI,MAAQJ,EAAcK,OAASC,GACzCJ,IACFA,EAAWK,UAAYC,KAAKC,MAC5BP,EAAWQ,YACXR,EAAWS,IACTL,GACAA,GACAA,GACA,EACU,EAAVM,KAAKC,IACL,GAEFX,EAAWY,YACXZ,EAAWa,QAENf,CACT,CAMAgB,UAAAA,CAAWC,GACT,OAAOA,EAAIC,cAAcV,KAAKW,QAAUX,KAAKT,gBAAiB,SAChE,CAMAqB,eAAAA,CAAgBH,GACdnB,MAAMsB,gBAAgBH,GACtB,MAAMI,EAAUb,KAAKQ,WAAWC,GAChCI,IAAYJ,EAAIK,YAAcD,EAChC,CAKAE,UAAAA,CAAWC,GACT,MAAMC,EAAO3B,MAAMyB,WAAWC,GAC5BE,EAAUD,EAAKE,oBAAoBC,UAAUH,EAAKI,YAAc,GAOlE,OALAJ,EAAKK,OAAS,IAAIC,EAAQ,CACxBZ,OAAQX,KAAKW,QAAUX,KAAKT,gBAC5BiC,SAAUN,EAAQO,EAClBC,SAAUR,EAAQS,IAEbV,CACT"}
1
+ {"version":3,"file":"PatternBrush.min.mjs","sources":["../../../src/brushes/PatternBrush.ts"],"sourcesContent":["import { Pattern } from '../Pattern';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { Canvas } from '../canvas/Canvas';\nimport { PencilBrush } from './PencilBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\nexport class PatternBrush extends PencilBrush {\n declare source?: CanvasImageSource;\n\n constructor(canvas: Canvas) {\n super(canvas);\n }\n\n getPatternSrc() {\n const dotWidth = 20,\n dotDistance = 5,\n patternCanvas = createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n if (patternCtx) {\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(\n dotWidth / 2,\n dotWidth / 2,\n dotWidth / 2,\n 0,\n Math.PI * 2,\n false,\n );\n patternCtx.closePath();\n patternCtx.fill();\n }\n return patternCanvas;\n }\n\n /**\n * Creates \"pattern\" instance property\n * @param {CanvasRenderingContext2D} ctx\n */\n getPattern(ctx: CanvasRenderingContext2D) {\n return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat');\n }\n\n /**\n * Sets brush styles\n * @param {CanvasRenderingContext2D} ctx\n */\n _setBrushStyles(ctx: CanvasRenderingContext2D) {\n super._setBrushStyles(ctx);\n const pattern = this.getPattern(ctx);\n pattern && (ctx.strokeStyle = pattern);\n }\n\n /**\n * Creates path\n */\n createPath(pathData: TSimplePathData) {\n const path = super.createPath(pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new Pattern({\n source: this.source || this.getPatternSrc(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y,\n });\n return path;\n }\n}\n"],"names":["PatternBrush","PencilBrush","constructor","canvas","super","getPatternSrc","patternCanvas","createCanvasElement","patternCtx","getContext","width","height","dotWidth","fillStyle","this","color","beginPath","arc","Math","PI","closePath","fill","getPattern","ctx","createPattern","source","_setBrushStyles","pattern","strokeStyle","createPath","pathData","path","topLeft","_getLeftTopCoords","scalarAdd","strokeWidth","stroke","Pattern","offsetX","x","offsetY","y"],"mappings":"wKAMO,MAAMA,UAAqBC,EAGhCC,WAAAA,CAAYC,GACVC,MAAMD,EACR,CAEAE,aAAAA,GACE,MAEEC,EAAgBC,IAChBC,EAAaF,EAAcG,WAAW,MAiBxC,OAfAH,EAAcI,MAAQJ,EAAcK,OAASC,GACzCJ,IACFA,EAAWK,UAAYC,KAAKC,MAC5BP,EAAWQ,YACXR,EAAWS,IACTL,GACAA,GACAA,GACA,EACU,EAAVM,KAAKC,IACL,GAEFX,EAAWY,YACXZ,EAAWa,QAENf,CACT,CAMAgB,UAAAA,CAAWC,GACT,OAAOA,EAAIC,cAAcV,KAAKW,QAAUX,KAAKT,gBAAiB,SAChE,CAMAqB,eAAAA,CAAgBH,GACdnB,MAAMsB,gBAAgBH,GACtB,MAAMI,EAAUb,KAAKQ,WAAWC,GAChCI,IAAYJ,EAAIK,YAAcD,EAChC,CAKAE,UAAAA,CAAWC,GACT,MAAMC,EAAO3B,MAAMyB,WAAWC,GAC5BE,EAAUD,EAAKE,oBAAoBC,UAAUH,EAAKI,YAAc,GAOlE,OALAJ,EAAKK,OAAS,IAAIC,EAAQ,CACxBZ,OAAQX,KAAKW,QAAUX,KAAKT,gBAC5BiC,SAAUN,EAAQO,EAClBC,SAAUR,EAAQS,IAEbV,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"PatternBrush.mjs","sources":["../../../src/brushes/PatternBrush.ts"],"sourcesContent":["import { Pattern } from '../Pattern';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { Canvas } from '../canvas/Canvas';\nimport { PencilBrush } from './PencilBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\nexport class PatternBrush extends PencilBrush {\n declare source?: CanvasImageSource;\n\n constructor(canvas: Canvas) {\n super(canvas);\n }\n\n getPatternSrc() {\n const dotWidth = 20,\n dotDistance = 5,\n patternCanvas = createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n if (patternCtx) {\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(\n dotWidth / 2,\n dotWidth / 2,\n dotWidth / 2,\n 0,\n Math.PI * 2,\n false\n );\n patternCtx.closePath();\n patternCtx.fill();\n }\n return patternCanvas;\n }\n\n /**\n * Creates \"pattern\" instance property\n * @param {CanvasRenderingContext2D} ctx\n */\n getPattern(ctx: CanvasRenderingContext2D) {\n return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat');\n }\n\n /**\n * Sets brush styles\n * @param {CanvasRenderingContext2D} ctx\n */\n _setBrushStyles(ctx: CanvasRenderingContext2D) {\n super._setBrushStyles(ctx);\n const pattern = this.getPattern(ctx);\n pattern && (ctx.strokeStyle = pattern);\n }\n\n /**\n * Creates path\n */\n createPath(pathData: TSimplePathData) {\n const path = super.createPath(pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new Pattern({\n source: this.source || this.getPatternSrc(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y,\n });\n return path;\n }\n}\n"],"names":["PatternBrush","PencilBrush","constructor","canvas","getPatternSrc","dotWidth","dotDistance","patternCanvas","createCanvasElement","patternCtx","getContext","width","height","fillStyle","color","beginPath","arc","Math","PI","closePath","fill","getPattern","ctx","createPattern","source","_setBrushStyles","pattern","strokeStyle","createPath","pathData","path","topLeft","_getLeftTopCoords","scalarAdd","strokeWidth","stroke","Pattern","offsetX","x","offsetY","y"],"mappings":";;;;AAMO,MAAMA,YAAY,SAASC,WAAW,CAAC;EAG5CC,WAAWA,CAACC,MAAc,EAAE;IAC1B,KAAK,CAACA,MAAM,CAAC,CAAA;AACf,GAAA;AAEAC,EAAAA,aAAaA,GAAG;IACd,MAAMC,QAAQ,GAAG,EAAE;AACjBC,MAAAA,WAAW,GAAG,CAAC;MACfC,aAAa,GAAGC,mBAAmB,EAAE;AACrCC,MAAAA,UAAU,GAAGF,aAAa,CAACG,UAAU,CAAC,IAAI,CAAC,CAAA;IAE7CH,aAAa,CAACI,KAAK,GAAGJ,aAAa,CAACK,MAAM,GAAGP,QAAQ,GAAGC,WAAW,CAAA;AACnE,IAAA,IAAIG,UAAU,EAAE;AACdA,MAAAA,UAAU,CAACI,SAAS,GAAG,IAAI,CAACC,KAAK,CAAA;MACjCL,UAAU,CAACM,SAAS,EAAE,CAAA;MACtBN,UAAU,CAACO,GAAG,CACZX,QAAQ,GAAG,CAAC,EACZA,QAAQ,GAAG,CAAC,EACZA,QAAQ,GAAG,CAAC,EACZ,CAAC,EACDY,IAAI,CAACC,EAAE,GAAG,CAAC,EACX,KACF,CAAC,CAAA;MACDT,UAAU,CAACU,SAAS,EAAE,CAAA;MACtBV,UAAU,CAACW,IAAI,EAAE,CAAA;AACnB,KAAA;AACA,IAAA,OAAOb,aAAa,CAAA;AACtB,GAAA;;AAEA;AACF;AACA;AACA;EACEc,UAAUA,CAACC,GAA6B,EAAE;AACxC,IAAA,OAAOA,GAAG,CAACC,aAAa,CAAC,IAAI,CAACC,MAAM,IAAI,IAAI,CAACpB,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAA;AACzE,GAAA;;AAEA;AACF;AACA;AACA;EACEqB,eAAeA,CAACH,GAA6B,EAAE;AAC7C,IAAA,KAAK,CAACG,eAAe,CAACH,GAAG,CAAC,CAAA;AAC1B,IAAA,MAAMI,OAAO,GAAG,IAAI,CAACL,UAAU,CAACC,GAAG,CAAC,CAAA;AACpCI,IAAAA,OAAO,KAAKJ,GAAG,CAACK,WAAW,GAAGD,OAAO,CAAC,CAAA;AACxC,GAAA;;AAEA;AACF;AACA;EACEE,UAAUA,CAACC,QAAyB,EAAE;AACpC,IAAA,MAAMC,IAAI,GAAG,KAAK,CAACF,UAAU,CAACC,QAAQ,CAAC;AACrCE,MAAAA,OAAO,GAAGD,IAAI,CAACE,iBAAiB,EAAE,CAACC,SAAS,CAACH,IAAI,CAACI,WAAW,GAAG,CAAC,CAAC,CAAA;AAEpEJ,IAAAA,IAAI,CAACK,MAAM,GAAG,IAAIC,OAAO,CAAC;MACxBZ,MAAM,EAAE,IAAI,CAACA,MAAM,IAAI,IAAI,CAACpB,aAAa,EAAE;AAC3CiC,MAAAA,OAAO,EAAE,CAACN,OAAO,CAACO,CAAC;MACnBC,OAAO,EAAE,CAACR,OAAO,CAACS,CAAAA;AACpB,KAAC,CAAC,CAAA;AACF,IAAA,OAAOV,IAAI,CAAA;AACb,GAAA;AACF;;;;"}
1
+ {"version":3,"file":"PatternBrush.mjs","sources":["../../../src/brushes/PatternBrush.ts"],"sourcesContent":["import { Pattern } from '../Pattern';\nimport { createCanvasElement } from '../util/misc/dom';\nimport type { Canvas } from '../canvas/Canvas';\nimport { PencilBrush } from './PencilBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\nexport class PatternBrush extends PencilBrush {\n declare source?: CanvasImageSource;\n\n constructor(canvas: Canvas) {\n super(canvas);\n }\n\n getPatternSrc() {\n const dotWidth = 20,\n dotDistance = 5,\n patternCanvas = createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n if (patternCtx) {\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(\n dotWidth / 2,\n dotWidth / 2,\n dotWidth / 2,\n 0,\n Math.PI * 2,\n false,\n );\n patternCtx.closePath();\n patternCtx.fill();\n }\n return patternCanvas;\n }\n\n /**\n * Creates \"pattern\" instance property\n * @param {CanvasRenderingContext2D} ctx\n */\n getPattern(ctx: CanvasRenderingContext2D) {\n return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat');\n }\n\n /**\n * Sets brush styles\n * @param {CanvasRenderingContext2D} ctx\n */\n _setBrushStyles(ctx: CanvasRenderingContext2D) {\n super._setBrushStyles(ctx);\n const pattern = this.getPattern(ctx);\n pattern && (ctx.strokeStyle = pattern);\n }\n\n /**\n * Creates path\n */\n createPath(pathData: TSimplePathData) {\n const path = super.createPath(pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new Pattern({\n source: this.source || this.getPatternSrc(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y,\n });\n return path;\n }\n}\n"],"names":["PatternBrush","PencilBrush","constructor","canvas","getPatternSrc","dotWidth","dotDistance","patternCanvas","createCanvasElement","patternCtx","getContext","width","height","fillStyle","color","beginPath","arc","Math","PI","closePath","fill","getPattern","ctx","createPattern","source","_setBrushStyles","pattern","strokeStyle","createPath","pathData","path","topLeft","_getLeftTopCoords","scalarAdd","strokeWidth","stroke","Pattern","offsetX","x","offsetY","y"],"mappings":";;;;AAMO,MAAMA,YAAY,SAASC,WAAW,CAAC;EAG5CC,WAAWA,CAACC,MAAc,EAAE;IAC1B,KAAK,CAACA,MAAM,CAAC,CAAA;AACf,GAAA;AAEAC,EAAAA,aAAaA,GAAG;IACd,MAAMC,QAAQ,GAAG,EAAE;AACjBC,MAAAA,WAAW,GAAG,CAAC;MACfC,aAAa,GAAGC,mBAAmB,EAAE;AACrCC,MAAAA,UAAU,GAAGF,aAAa,CAACG,UAAU,CAAC,IAAI,CAAC,CAAA;IAE7CH,aAAa,CAACI,KAAK,GAAGJ,aAAa,CAACK,MAAM,GAAGP,QAAQ,GAAGC,WAAW,CAAA;AACnE,IAAA,IAAIG,UAAU,EAAE;AACdA,MAAAA,UAAU,CAACI,SAAS,GAAG,IAAI,CAACC,KAAK,CAAA;MACjCL,UAAU,CAACM,SAAS,EAAE,CAAA;MACtBN,UAAU,CAACO,GAAG,CACZX,QAAQ,GAAG,CAAC,EACZA,QAAQ,GAAG,CAAC,EACZA,QAAQ,GAAG,CAAC,EACZ,CAAC,EACDY,IAAI,CAACC,EAAE,GAAG,CAAC,EACX,KACF,CAAC,CAAA;MACDT,UAAU,CAACU,SAAS,EAAE,CAAA;MACtBV,UAAU,CAACW,IAAI,EAAE,CAAA;AACnB,KAAA;AACA,IAAA,OAAOb,aAAa,CAAA;AACtB,GAAA;;AAEA;AACF;AACA;AACA;EACEc,UAAUA,CAACC,GAA6B,EAAE;AACxC,IAAA,OAAOA,GAAG,CAACC,aAAa,CAAC,IAAI,CAACC,MAAM,IAAI,IAAI,CAACpB,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAA;AACzE,GAAA;;AAEA;AACF;AACA;AACA;EACEqB,eAAeA,CAACH,GAA6B,EAAE;AAC7C,IAAA,KAAK,CAACG,eAAe,CAACH,GAAG,CAAC,CAAA;AAC1B,IAAA,MAAMI,OAAO,GAAG,IAAI,CAACL,UAAU,CAACC,GAAG,CAAC,CAAA;AACpCI,IAAAA,OAAO,KAAKJ,GAAG,CAACK,WAAW,GAAGD,OAAO,CAAC,CAAA;AACxC,GAAA;;AAEA;AACF;AACA;EACEE,UAAUA,CAACC,QAAyB,EAAE;AACpC,IAAA,MAAMC,IAAI,GAAG,KAAK,CAACF,UAAU,CAACC,QAAQ,CAAC;AACrCE,MAAAA,OAAO,GAAGD,IAAI,CAACE,iBAAiB,EAAE,CAACC,SAAS,CAACH,IAAI,CAACI,WAAW,GAAG,CAAC,CAAC,CAAA;AAEpEJ,IAAAA,IAAI,CAACK,MAAM,GAAG,IAAIC,OAAO,CAAC;MACxBZ,MAAM,EAAE,IAAI,CAACA,MAAM,IAAI,IAAI,CAACpB,aAAa,EAAE;AAC3CiC,MAAAA,OAAO,EAAE,CAACN,OAAO,CAACO,CAAC;MACnBC,OAAO,EAAE,CAACR,OAAO,CAACS,CAAAA;AACpB,KAAC,CAAC,CAAA;AACF,IAAA,OAAOV,IAAI,CAAA;AACb,GAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PencilBrush.min.mjs","sources":["../../../src/brushes/PencilBrush.ts"],"sourcesContent":["import type { ModifierKey, TEvent } from '../EventTypeDefs';\nimport type { Point } from '../Point';\nimport { Shadow } from '../Shadow';\nimport { Path } from '../shapes/Path';\nimport { getSmoothPathFromPoints, joinPath } from '../util/path';\nimport type { Canvas } from '../canvas/Canvas';\nimport { BaseBrush } from './BaseBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\n/**\n * @private\n * @param {TSimplePathData} pathData SVG path commands\n * @returns {boolean}\n */\nfunction isEmptySVGPath(pathData: TSimplePathData): boolean {\n return joinPath(pathData) === 'M 0 0 Q 0 0 0 0 L 0 0';\n}\n\nexport class PencilBrush extends BaseBrush {\n /**\n * Discard points that are less than `decimate` pixel distant from each other\n * @type Number\n * @default 0.4\n */\n decimate = 0.4;\n\n /**\n * Draws a straight line between last recorded point to current pointer\n * Used for `shift` functionality\n *\n * @type boolean\n * @default false\n */\n drawStraightLine = false;\n\n /**\n * The event modifier key that makes the brush draw a straight line.\n * If `null` or 'none' or any other string that is not a modifier key the feature is disabled.\n * @type {ModifierKey | undefined | null}\n */\n straightLineKey: ModifierKey | undefined | null = 'shiftKey';\n\n private declare _points: Point[];\n private declare _hasStraightLine: boolean;\n private declare oldEnd?: Point;\n\n constructor(canvas: Canvas) {\n super(canvas);\n this._points = [];\n this._hasStraightLine = false;\n }\n\n needsFullRender() {\n return super.needsFullRender() || this._hasStraightLine;\n }\n\n static drawSegment(ctx: CanvasRenderingContext2D, p1: Point, p2: Point) {\n const midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n }\n\n /**\n * Invoked on mouse down\n * @param {Point} pointer\n */\n onMouseDown(pointer: Point, { e }: TEvent) {\n if (!this.canvas._isMainEvent(e)) {\n return;\n }\n this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey];\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._addPoint(pointer);\n this._render();\n }\n\n /**\n * Invoked on mouse move\n * @param {Point} pointer\n */\n onMouseMove(pointer: Point, { e }: TEvent) {\n if (!this.canvas._isMainEvent(e)) {\n return;\n }\n this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey];\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this._addPoint(pointer) && this._points.length > 1) {\n if (this.needsFullRender()) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n } else {\n const points = this._points,\n length = points.length,\n ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = PencilBrush.drawSegment(\n ctx,\n points[length - 2],\n points[length - 1]\n );\n ctx.stroke();\n ctx.restore();\n }\n }\n }\n\n /**\n * Invoked on mouse up\n */\n onMouseUp({ e }: TEvent) {\n if (!this.canvas._isMainEvent(e)) {\n return true;\n }\n this.drawStraightLine = false;\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n return false;\n }\n\n /**\n * @private\n * @param {Point} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing(pointer: Point) {\n this._reset();\n this._addPoint(pointer);\n this.canvas.contextTop.moveTo(pointer.x, pointer.y);\n }\n\n /**\n * @private\n * @param {Point} point Point to be added to points array\n */\n _addPoint(point: Point) {\n if (\n this._points.length > 1 &&\n point.eq(this._points[this._points.length - 1])\n ) {\n return false;\n }\n if (this.drawStraightLine && this._points.length > 1) {\n this._hasStraightLine = true;\n this._points.pop();\n }\n this._points.push(point);\n return true;\n }\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset() {\n this._points = [];\n this._setBrushStyles(this.canvas.contextTop);\n this._setShadow();\n this._hasStraightLine = false;\n }\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n * @param {CanvasRenderingContext2D} [ctx]\n */\n _render(ctx: CanvasRenderingContext2D = this.canvas.contextTop) {\n let p1 = this._points[0],\n p2 = this._points[1];\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n const width = this.width / 1000;\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (let i = 1; i < this._points.length; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n PencilBrush.drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n }\n\n /**\n * Converts points to SVG path\n * @param {Point[]} points Array of points\n * @return {TSimplePathData} SVG path commands\n */\n convertPointsToSVGPath(points: Point[]): TSimplePathData {\n const correction = this.width / 1000;\n return getSmoothPathFromPoints(points, correction);\n }\n\n /**\n * Creates a Path object to add on canvas\n * @param {TSimplePathData} pathData Path data\n * @return {Path} Path to add on canvas\n */\n createPath(pathData: TSimplePathData): Path {\n const path = new Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.shadow = new Shadow(this.shadow);\n }\n\n return path;\n }\n\n /**\n * Decimate points array with the decimate value\n */\n decimatePoints(points: Point[], distance: number) {\n if (points.length <= 2) {\n return points;\n }\n let lastPoint = points[0],\n cDistance;\n const zoom = this.canvas.getZoom(),\n adjustedDistance = Math.pow(distance / zoom, 2),\n l = points.length - 1,\n newPoints = [lastPoint];\n for (let i = 1; i < l - 1; i++) {\n cDistance =\n Math.pow(lastPoint.x - points[i].x, 2) +\n Math.pow(lastPoint.y - points[i].y, 2);\n if (cDistance >= adjustedDistance) {\n lastPoint = points[i];\n newPoints.push(lastPoint);\n }\n }\n // Add the last point from the original line to the end of the array.\n // This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point.\n newPoints.push(points[l]);\n return newPoints;\n }\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new Path object\n * and add it to the canvas.\n */\n _finalizeAndAddPath() {\n const ctx = this.canvas.contextTop;\n ctx.closePath();\n if (this.decimate) {\n this._points = this.decimatePoints(this._points, this.decimate);\n }\n const pathData = this.convertPointsToSVGPath(this._points);\n if (isEmptySVGPath(pathData)) {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n const path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.fire('before:path:created', { path: path });\n this.canvas.add(path);\n this.canvas.requestRenderAll();\n path.setCoords();\n this._resetShadow();\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n}\n"],"names":["PencilBrush","BaseBrush","constructor","canvas","super","_defineProperty","this","_points","_hasStraightLine","needsFullRender","drawSegment","ctx","p1","p2","midPoint","midPointFrom","quadraticCurveTo","x","y","onMouseDown","pointer","_ref","e","_isMainEvent","drawStraightLine","straightLineKey","_prepareForDrawing","_addPoint","_render","onMouseMove","_ref2","limitedToCanvasSize","_isOutSideCanvas","length","clearContext","contextTop","points","_saveAndTransform","oldEnd","beginPath","moveTo","stroke","restore","onMouseUp","_ref3","undefined","_finalizeAndAddPath","_reset","point","eq","pop","push","_setBrushStyles","_setShadow","arguments","width","i","lineTo","convertPointsToSVGPath","correction","getSmoothPathFromPoints","createPath","pathData","path","Path","fill","color","strokeWidth","strokeLineCap","strokeMiterLimit","strokeLineJoin","strokeDashArray","shadow","affectStroke","Shadow","decimatePoints","distance","cDistance","lastPoint","zoom","getZoom","adjustedDistance","Math","pow","l","newPoints","closePath","decimate","joinPath","isEmptySVGPath","requestRenderAll","fire","add","setCoords","_resetShadow"],"mappings":"8SAkBO,MAAMA,UAAoBC,EA4B/BC,WAAAA,CAAYC,GACVC,MAAMD,GA5BRE,kBAKW,IAEXA,2BAOmB,GAEnBA,yBAKkD,YAQhDC,KAAKC,QAAU,GACfD,KAAKE,kBAAmB,CAC1B,CAEAC,eAAAA,GACE,OAAOL,MAAMK,mBAAqBH,KAAKE,gBACzC,CAEA,kBAAOE,CAAYC,EAA+BC,EAAWC,GAC3D,MAAMC,EAAWF,EAAGG,aAAaF,GAEjC,OADAF,EAAIK,iBAAiBJ,EAAGK,EAAGL,EAAGM,EAAGJ,EAASG,EAAGH,EAASI,GAC/CJ,CACT,CAMAK,WAAAA,CAAYC,EAAcC,GAAiB,IAAfC,EAAEA,GAAWD,EAClCf,KAAKH,OAAOoB,aAAaD,KAG9BhB,KAAKkB,mBAAqBlB,KAAKmB,iBAAmBH,EAAEhB,KAAKmB,iBACzDnB,KAAKoB,mBAAmBN,GAGxBd,KAAKqB,UAAUP,GACfd,KAAKsB,UACP,CAMAC,WAAAA,CAAYT,EAAcU,GAAiB,IAAfR,EAAEA,GAAWQ,EACvC,GAAKxB,KAAKH,OAAOoB,aAAaD,KAG9BhB,KAAKkB,mBAAqBlB,KAAKmB,iBAAmBH,EAAEhB,KAAKmB,mBACxB,IAA7BnB,KAAKyB,sBAAgCzB,KAAK0B,iBAAiBZ,KAG3Dd,KAAKqB,UAAUP,IAAYd,KAAKC,QAAQ0B,OAAS,GACnD,GAAI3B,KAAKG,kBAGPH,KAAKH,OAAO+B,aAAa5B,KAAKH,OAAOgC,YACrC7B,KAAKsB,cACA,CACL,MAAMQ,EAAS9B,KAAKC,QAClB0B,EAASG,EAAOH,OAChBtB,EAAML,KAAKH,OAAOgC,WAEpB7B,KAAK+B,kBAAkB1B,GACnBL,KAAKgC,SACP3B,EAAI4B,YACJ5B,EAAI6B,OAAOlC,KAAKgC,OAAOrB,EAAGX,KAAKgC,OAAOpB,IAExCZ,KAAKgC,OAAStC,EAAYU,YACxBC,EACAyB,EAAOH,EAAS,GAChBG,EAAOH,EAAS,IAElBtB,EAAI8B,SACJ9B,EAAI+B,SACN,CAEJ,CAKAC,SAAAA,CAASC,GAAgB,IAAftB,EAAEA,GAAWsB,EACrB,OAAKtC,KAAKH,OAAOoB,aAAaD,KAG9BhB,KAAKkB,kBAAmB,EACxBlB,KAAKgC,YAASO,EACdvC,KAAKwC,uBACE,EACT,CAMApB,kBAAAA,CAAmBN,GACjBd,KAAKyC,SACLzC,KAAKqB,UAAUP,GACfd,KAAKH,OAAOgC,WAAWK,OAAOpB,EAAQH,EAAGG,EAAQF,EACnD,CAMAS,SAAAA,CAAUqB,GACR,QACE1C,KAAKC,QAAQ0B,OAAS,GACtBe,EAAMC,GAAG3C,KAAKC,QAAQD,KAAKC,QAAQ0B,OAAS,OAI1C3B,KAAKkB,kBAAoBlB,KAAKC,QAAQ0B,OAAS,IACjD3B,KAAKE,kBAAmB,EACxBF,KAAKC,QAAQ2C,OAEf5C,KAAKC,QAAQ4C,KAAKH,IACX,EACT,CAMAD,MAAAA,GACEzC,KAAKC,QAAU,GACfD,KAAK8C,gBAAgB9C,KAAKH,OAAOgC,YACjC7B,KAAK+C,aACL/C,KAAKE,kBAAmB,CAC1B,CAOAoB,OAAAA,GAAgE,IAAxDjB,EAA6B2C,UAAArB,eAAAY,IAAAS,UAAA,GAAAA,UAAG,GAAAhD,KAAKH,OAAOgC,WAC9CvB,EAAKN,KAAKC,QAAQ,GACpBM,EAAKP,KAAKC,QAAQ,GAOpB,GANAD,KAAK+B,kBAAkB1B,GACvBA,EAAI4B,YAKwB,IAAxBjC,KAAKC,QAAQ0B,QAAgBrB,EAAGK,IAAMJ,EAAGI,GAAKL,EAAGM,IAAML,EAAGK,EAAG,CAC/D,MAAMqC,EAAQjD,KAAKiD,MAAQ,IAC3B3C,EAAGK,GAAKsC,EACR1C,EAAGI,GAAKsC,CACV,CACA5C,EAAI6B,OAAO5B,EAAGK,EAAGL,EAAGM,GAEpB,IAAK,IAAIsC,EAAI,EAAGA,EAAIlD,KAAKC,QAAQ0B,OAAQuB,IAGvCxD,EAAYU,YAAYC,EAAKC,EAAIC,GACjCD,EAAKN,KAAKC,QAAQiD,GAClB3C,EAAKP,KAAKC,QAAQiD,EAAI,GAKxB7C,EAAI8C,OAAO7C,EAAGK,EAAGL,EAAGM,GACpBP,EAAI8B,SACJ9B,EAAI+B,SACN,CAOAgB,sBAAAA,CAAuBtB,GACrB,MAAMuB,EAAarD,KAAKiD,MAAQ,IAChC,OAAOK,EAAwBxB,EAAQuB,EACzC,CAOAE,UAAAA,CAAWC,GACT,MAAMC,EAAO,IAAIC,EAAKF,EAAU,CAC9BG,KAAM,KACNxB,OAAQnC,KAAK4D,MACbC,YAAa7D,KAAKiD,MAClBa,cAAe9D,KAAK8D,cACpBC,iBAAkB/D,KAAK+D,iBACvBC,eAAgBhE,KAAKgE,eACrBC,gBAAiBjE,KAAKiE,kBAOxB,OALIjE,KAAKkE,SACPlE,KAAKkE,OAAOC,cAAe,EAC3BV,EAAKS,OAAS,IAAIE,EAAOpE,KAAKkE,SAGzBT,CACT,CAKAY,cAAAA,CAAevC,EAAiBwC,GAC9B,GAAIxC,EAAOH,QAAU,EACnB,OAAOG,EAET,IACEyC,EADEC,EAAY1C,EAAO,GAEvB,MAAM2C,EAAOzE,KAAKH,OAAO6E,UACvBC,EAAmBC,KAAKC,IAAIP,EAAWG,EAAM,GAC7CK,EAAIhD,EAAOH,OAAS,EACpBoD,EAAY,CAACP,GACf,IAAK,IAAItB,EAAI,EAAGA,EAAI4B,EAAI,EAAG5B,IACzBqB,EACEK,KAAKC,IAAIL,EAAU7D,EAAImB,EAAOoB,GAAGvC,EAAG,GACpCiE,KAAKC,IAAIL,EAAU5D,EAAIkB,EAAOoB,GAAGtC,EAAG,GAClC2D,GAAaI,IACfH,EAAY1C,EAAOoB,GACnB6B,EAAUlC,KAAK2B,IAMnB,OADAO,EAAUlC,KAAKf,EAAOgD,IACfC,CACT,CAOAvC,mBAAAA,GACcxC,KAAKH,OAAOgC,WACpBmD,YACAhF,KAAKiF,WACPjF,KAAKC,QAAUD,KAAKqE,eAAerE,KAAKC,QAASD,KAAKiF,WAExD,MAAMzB,EAAWxD,KAAKoD,uBAAuBpD,KAAKC,SAClD,GAzQJ,SAAwBuD,GACtB,MAA8B,0BAAvB0B,EAAS1B,EAClB,CAuQQ2B,CAAe3B,GAMjB,YADAxD,KAAKH,OAAOuF,mBAId,MAAM3B,EAAOzD,KAAKuD,WAAWC,GAC7BxD,KAAKH,OAAO+B,aAAa5B,KAAKH,OAAOgC,YACrC7B,KAAKH,OAAOwF,KAAK,sBAAuB,CAAE5B,KAAMA,IAChDzD,KAAKH,OAAOyF,IAAI7B,GAChBzD,KAAKH,OAAOuF,mBACZ3B,EAAK8B,YACLvF,KAAKwF,eAGLxF,KAAKH,OAAOwF,KAAK,eAAgB,CAAE5B,KAAMA,GAC3C"}
1
+ {"version":3,"file":"PencilBrush.min.mjs","sources":["../../../src/brushes/PencilBrush.ts"],"sourcesContent":["import type { ModifierKey, TEvent } from '../EventTypeDefs';\nimport type { Point } from '../Point';\nimport { Shadow } from '../Shadow';\nimport { Path } from '../shapes/Path';\nimport { getSmoothPathFromPoints, joinPath } from '../util/path';\nimport type { Canvas } from '../canvas/Canvas';\nimport { BaseBrush } from './BaseBrush';\nimport type { TSimplePathData } from '../util/path/typedefs';\n\n/**\n * @private\n * @param {TSimplePathData} pathData SVG path commands\n * @returns {boolean}\n */\nfunction isEmptySVGPath(pathData: TSimplePathData): boolean {\n return joinPath(pathData) === 'M 0 0 Q 0 0 0 0 L 0 0';\n}\n\nexport class PencilBrush extends BaseBrush {\n /**\n * Discard points that are less than `decimate` pixel distant from each other\n * @type Number\n * @default 0.4\n */\n decimate = 0.4;\n\n /**\n * Draws a straight line between last recorded point to current pointer\n * Used for `shift` functionality\n *\n * @type boolean\n * @default false\n */\n drawStraightLine = false;\n\n /**\n * The event modifier key that makes the brush draw a straight line.\n * If `null` or 'none' or any other string that is not a modifier key the feature is disabled.\n * @type {ModifierKey | undefined | null}\n */\n straightLineKey: ModifierKey | undefined | null = 'shiftKey';\n\n private declare _points: Point[];\n private declare _hasStraightLine: boolean;\n private declare oldEnd?: Point;\n\n constructor(canvas: Canvas) {\n super(canvas);\n this._points = [];\n this._hasStraightLine = false;\n }\n\n needsFullRender() {\n return super.needsFullRender() || this._hasStraightLine;\n }\n\n static drawSegment(ctx: CanvasRenderingContext2D, p1: Point, p2: Point) {\n const midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n }\n\n /**\n * Invoked on mouse down\n * @param {Point} pointer\n */\n onMouseDown(pointer: Point, { e }: TEvent) {\n if (!this.canvas._isMainEvent(e)) {\n return;\n }\n this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey];\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._addPoint(pointer);\n this._render();\n }\n\n /**\n * Invoked on mouse move\n * @param {Point} pointer\n */\n onMouseMove(pointer: Point, { e }: TEvent) {\n if (!this.canvas._isMainEvent(e)) {\n return;\n }\n this.drawStraightLine = !!this.straightLineKey && e[this.straightLineKey];\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this._addPoint(pointer) && this._points.length > 1) {\n if (this.needsFullRender()) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n } else {\n const points = this._points,\n length = points.length,\n ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = PencilBrush.drawSegment(\n ctx,\n points[length - 2],\n points[length - 1],\n );\n ctx.stroke();\n ctx.restore();\n }\n }\n }\n\n /**\n * Invoked on mouse up\n */\n onMouseUp({ e }: TEvent) {\n if (!this.canvas._isMainEvent(e)) {\n return true;\n }\n this.drawStraightLine = false;\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n return false;\n }\n\n /**\n * @private\n * @param {Point} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing(pointer: Point) {\n this._reset();\n this._addPoint(pointer);\n this.canvas.contextTop.moveTo(pointer.x, pointer.y);\n }\n\n /**\n * @private\n * @param {Point} point Point to be added to points array\n */\n _addPoint(point: Point) {\n if (\n this._points.length > 1 &&\n point.eq(this._points[this._points.length - 1])\n ) {\n return false;\n }\n if (this.drawStraightLine && this._points.length > 1) {\n this._hasStraightLine = true;\n this._points.pop();\n }\n this._points.push(point);\n return true;\n }\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset() {\n this._points = [];\n this._setBrushStyles(this.canvas.contextTop);\n this._setShadow();\n this._hasStraightLine = false;\n }\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n * @param {CanvasRenderingContext2D} [ctx]\n */\n _render(ctx: CanvasRenderingContext2D = this.canvas.contextTop) {\n let p1 = this._points[0],\n p2 = this._points[1];\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n const width = this.width / 1000;\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (let i = 1; i < this._points.length; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n PencilBrush.drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n }\n\n /**\n * Converts points to SVG path\n * @param {Point[]} points Array of points\n * @return {TSimplePathData} SVG path commands\n */\n convertPointsToSVGPath(points: Point[]): TSimplePathData {\n const correction = this.width / 1000;\n return getSmoothPathFromPoints(points, correction);\n }\n\n /**\n * Creates a Path object to add on canvas\n * @param {TSimplePathData} pathData Path data\n * @return {Path} Path to add on canvas\n */\n createPath(pathData: TSimplePathData): Path {\n const path = new Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.shadow = new Shadow(this.shadow);\n }\n\n return path;\n }\n\n /**\n * Decimate points array with the decimate value\n */\n decimatePoints(points: Point[], distance: number) {\n if (points.length <= 2) {\n return points;\n }\n let lastPoint = points[0],\n cDistance;\n const zoom = this.canvas.getZoom(),\n adjustedDistance = Math.pow(distance / zoom, 2),\n l = points.length - 1,\n newPoints = [lastPoint];\n for (let i = 1; i < l - 1; i++) {\n cDistance =\n Math.pow(lastPoint.x - points[i].x, 2) +\n Math.pow(lastPoint.y - points[i].y, 2);\n if (cDistance >= adjustedDistance) {\n lastPoint = points[i];\n newPoints.push(lastPoint);\n }\n }\n // Add the last point from the original line to the end of the array.\n // This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point.\n newPoints.push(points[l]);\n return newPoints;\n }\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new Path object\n * and add it to the canvas.\n */\n _finalizeAndAddPath() {\n const ctx = this.canvas.contextTop;\n ctx.closePath();\n if (this.decimate) {\n this._points = this.decimatePoints(this._points, this.decimate);\n }\n const pathData = this.convertPointsToSVGPath(this._points);\n if (isEmptySVGPath(pathData)) {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n const path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.fire('before:path:created', { path: path });\n this.canvas.add(path);\n this.canvas.requestRenderAll();\n path.setCoords();\n this._resetShadow();\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n}\n"],"names":["PencilBrush","BaseBrush","constructor","canvas","super","_defineProperty","this","_points","_hasStraightLine","needsFullRender","drawSegment","ctx","p1","p2","midPoint","midPointFrom","quadraticCurveTo","x","y","onMouseDown","pointer","_ref","e","_isMainEvent","drawStraightLine","straightLineKey","_prepareForDrawing","_addPoint","_render","onMouseMove","_ref2","limitedToCanvasSize","_isOutSideCanvas","length","clearContext","contextTop","points","_saveAndTransform","oldEnd","beginPath","moveTo","stroke","restore","onMouseUp","_ref3","undefined","_finalizeAndAddPath","_reset","point","eq","pop","push","_setBrushStyles","_setShadow","arguments","width","i","lineTo","convertPointsToSVGPath","correction","getSmoothPathFromPoints","createPath","pathData","path","Path","fill","color","strokeWidth","strokeLineCap","strokeMiterLimit","strokeLineJoin","strokeDashArray","shadow","affectStroke","Shadow","decimatePoints","distance","cDistance","lastPoint","zoom","getZoom","adjustedDistance","Math","pow","l","newPoints","closePath","decimate","joinPath","isEmptySVGPath","requestRenderAll","fire","add","setCoords","_resetShadow"],"mappings":"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"}