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":"Canvas.min.mjs","sources":["../../../src/canvas/Canvas.ts"],"sourcesContent":["import { classRegistry } from '../ClassRegistry';\nimport { NONE } from '../constants';\nimport type {\n CanvasEvents,\n DragEventData,\n ObjectEvents,\n TPointerEvent,\n TPointerEventNames,\n Transform,\n} from '../EventTypeDefs';\nimport { Point } from '../Point';\nimport type { ActiveSelection } from '../shapes/ActiveSelection';\nimport type { Group } from '../shapes/Group';\nimport type { IText } from '../shapes/IText/IText';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { isTouchEvent, stopEvent } from '../util/dom_event';\nimport { getDocumentFromElement, getWindowFromElement } from '../util/dom_misc';\nimport { sendPointToPlane } from '../util/misc/planeChange';\nimport { isActiveSelection } from '../util/typeAssertions';\nimport type { CanvasOptions, TCanvasOptions } from './CanvasOptions';\nimport { SelectableCanvas } from './SelectableCanvas';\nimport { TextEditingManager } from './TextEditingManager';\n\nconst addEventOptions = { passive: false } as EventListenerOptions;\n\nconst getEventPoints = (canvas: Canvas, e: TPointerEvent) => {\n const viewportPoint = canvas.getViewportPoint(e);\n const scenePoint = canvas.getScenePoint(e);\n return {\n viewportPoint,\n scenePoint,\n pointer: viewportPoint,\n absolutePointer: scenePoint,\n };\n};\n\n// just to be clear, the utils are now deprecated and those are here exactly as minifier helpers\n// because el.addEventListener can't me be minified while a const yes and we use it 47 times in this file.\n// few bytes but why give it away.\nconst addListener = (\n el: HTMLElement | Document,\n ...args: Parameters<HTMLElement['addEventListener']>\n) => el.addEventListener(...args);\nconst removeListener = (\n el: HTMLElement | Document,\n ...args: Parameters<HTMLElement['removeEventListener']>\n) => el.removeEventListener(...args);\n\nconst syntheticEventConfig = {\n mouse: {\n in: 'over',\n out: 'out',\n targetIn: 'mouseover',\n targetOut: 'mouseout',\n canvasIn: 'mouse:over',\n canvasOut: 'mouse:out',\n },\n drag: {\n in: 'enter',\n out: 'leave',\n targetIn: 'dragenter',\n targetOut: 'dragleave',\n canvasIn: 'drag:enter',\n canvasOut: 'drag:leave',\n },\n} as const;\n\ntype TSyntheticEventContext = {\n mouse: { e: TPointerEvent };\n drag: DragEventData;\n};\n\nexport class Canvas extends SelectableCanvas implements CanvasOptions {\n /**\n * Contains the id of the touch event that owns the fabric transform\n * @type Number\n * @private\n */\n declare mainTouchId?: number;\n\n declare enablePointerEvents: boolean;\n\n /**\n * Holds a reference to a setTimeout timer for event synchronization\n * @type number\n * @private\n */\n private declare _willAddMouseDown: number;\n\n /**\n * Holds a reference to an object on the canvas that is receiving the drag over event.\n * @type FabricObject\n * @private\n */\n private declare _draggedoverTarget?: FabricObject;\n\n /**\n * Holds a reference to an object on the canvas from where the drag operation started\n * @type FabricObject\n * @private\n */\n private declare _dragSource?: FabricObject;\n\n /**\n * Holds a reference to an object on the canvas that is the current drop target\n * May differ from {@link _draggedoverTarget}\n * @todo inspect whether {@link _draggedoverTarget} and {@link _dropTarget} should be merged somehow\n * @type FabricObject\n * @private\n */\n private declare _dropTarget: FabricObject<ObjectEvents> | undefined;\n\n private _isClick: boolean;\n\n textEditingManager = new TextEditingManager(this);\n\n constructor(el?: string | HTMLCanvasElement, options: TCanvasOptions = {}) {\n super(el, options);\n // bind event handlers\n (\n [\n '_onMouseDown',\n '_onTouchStart',\n '_onMouseMove',\n '_onMouseUp',\n '_onTouchEnd',\n '_onResize',\n // '_onGesture',\n // '_onDrag',\n // '_onShake',\n // '_onLongPress',\n // '_onOrientationChange',\n '_onMouseWheel',\n '_onMouseOut',\n '_onMouseEnter',\n '_onContextMenu',\n '_onDoubleClick',\n '_onDragStart',\n '_onDragEnd',\n '_onDragProgress',\n '_onDragOver',\n '_onDragEnter',\n '_onDragLeave',\n '_onDrop',\n ] as (keyof this)[]\n ).forEach((eventHandler) => {\n this[eventHandler] = (this[eventHandler] as Function).bind(this);\n });\n // register event handlers\n this.addOrRemove(addListener, 'add');\n }\n\n /**\n * return an event prefix pointer or mouse.\n * @private\n */\n private _getEventPrefix() {\n return this.enablePointerEvents ? 'pointer' : 'mouse';\n }\n\n addOrRemove(functor: any, eventjsFunctor: 'add' | 'remove') {\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n functor(getWindowFromElement(canvasElement), 'resize', this._onResize);\n functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n functor(\n canvasElement,\n `${eventTypePrefix}move`,\n this._onMouseMove,\n addEventOptions\n );\n functor(canvasElement, `${eventTypePrefix}out`, this._onMouseOut);\n functor(canvasElement, `${eventTypePrefix}enter`, this._onMouseEnter);\n functor(canvasElement, 'wheel', this._onMouseWheel);\n functor(canvasElement, 'contextmenu', this._onContextMenu);\n functor(canvasElement, 'dblclick', this._onDoubleClick);\n functor(canvasElement, 'dragstart', this._onDragStart);\n functor(canvasElement, 'dragend', this._onDragEnd);\n functor(canvasElement, 'dragover', this._onDragOver);\n functor(canvasElement, 'dragenter', this._onDragEnter);\n functor(canvasElement, 'dragleave', this._onDragLeave);\n functor(canvasElement, 'drop', this._onDrop);\n if (!this.enablePointerEvents) {\n functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions);\n }\n // if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n // eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture);\n // eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag);\n // eventjs[eventjsFunctor](\n // canvasElement,\n // 'orientation',\n // this._onOrientationChange\n // );\n // eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake);\n // eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress);\n // }\n }\n\n /**\n * Removes all event listeners\n */\n removeListeners() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n const eventTypePrefix = this._getEventPrefix();\n const doc = getDocumentFromElement(this.upperCanvasEl);\n removeListener(\n doc,\n `${eventTypePrefix}up`,\n this._onMouseUp as EventListener\n );\n removeListener(\n doc,\n 'touchend',\n this._onTouchEnd as EventListener,\n addEventOptions\n );\n removeListener(\n doc,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions\n );\n removeListener(\n doc,\n 'touchmove',\n this._onMouseMove as EventListener,\n addEventOptions\n );\n }\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n private _onMouseWheel(e: MouseEvent) {\n this.__onMouseWheel(e);\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n private _onMouseOut(e: TPointerEvent) {\n const target = this._hoveredTarget;\n const shared = {\n e,\n ...getEventPoints(this, e),\n };\n this.fire('mouse:out', { ...shared, target });\n this._hoveredTarget = undefined;\n target && target.fire('mouseout', { ...shared });\n this._hoveredTargets.forEach((nestedTarget) => {\n this.fire('mouse:out', { ...shared, target: nestedTarget });\n nestedTarget && nestedTarget.fire('mouseout', { ...shared });\n });\n this._hoveredTargets = [];\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n private _onMouseEnter(e: TPointerEvent) {\n // This find target and consequent 'mouse:over' is used to\n // clear old instances on hovered target.\n // calling findTarget has the side effect of killing target.__corner.\n // as a short term fix we are not firing this if we are currently transforming.\n // as a long term fix we need to separate the action of finding a target with the\n // side effects we added to it.\n if (!this._currentTransform && !this.findTarget(e)) {\n this.fire('mouse:over', {\n e,\n ...getEventPoints(this, e),\n });\n this._hoveredTarget = undefined;\n this._hoveredTargets = [];\n }\n }\n\n /**\n * supports native like text dragging\n * @private\n * @param {DragEvent} e\n */\n private _onDragStart(e: DragEvent) {\n this._isClick = false;\n const activeObject = this.getActiveObject();\n if (activeObject && activeObject.onDragStart(e)) {\n this._dragSource = activeObject;\n const options = { e, target: activeObject };\n this.fire('dragstart', options);\n activeObject.fire('dragstart', options);\n addListener(\n this.upperCanvasEl,\n 'drag',\n this._onDragProgress as EventListener\n );\n return;\n }\n stopEvent(e);\n }\n\n /**\n * First we clear top context where the effects are being rendered.\n * Then we render the effects.\n * Doing so will render the correct effect for all cases including an overlap between `source` and `target`.\n * @private\n */\n private _renderDragEffects(\n e: DragEvent,\n source?: FabricObject,\n target?: FabricObject\n ) {\n let dirty = false;\n // clear top context\n const dropTarget = this._dropTarget;\n if (dropTarget && dropTarget !== source && dropTarget !== target) {\n dropTarget.clearContextTop();\n dirty = true;\n }\n source?.clearContextTop();\n target !== source && target?.clearContextTop();\n // render effects\n const ctx = this.contextTop;\n ctx.save();\n ctx.transform(...this.viewportTransform);\n if (source) {\n ctx.save();\n source.transform(ctx);\n source.renderDragSourceEffect(e);\n ctx.restore();\n dirty = true;\n }\n if (target) {\n ctx.save();\n target.transform(ctx);\n target.renderDropTargetEffect(e);\n ctx.restore();\n dirty = true;\n }\n ctx.restore();\n dirty && (this.contextTopDirty = true);\n }\n\n /**\n * supports native like text dragging\n * https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#finishing_a_drag\n * @private\n * @param {DragEvent} e\n */\n private _onDragEnd(e: DragEvent) {\n const didDrop = !!e.dataTransfer && e.dataTransfer.dropEffect !== NONE,\n dropTarget = didDrop ? this._activeObject : undefined,\n options = {\n e,\n target: this._dragSource as FabricObject,\n subTargets: this.targets,\n dragSource: this._dragSource as FabricObject,\n didDrop,\n dropTarget: dropTarget as FabricObject,\n };\n removeListener(\n this.upperCanvasEl,\n 'drag',\n this._onDragProgress as EventListener\n );\n this.fire('dragend', options);\n this._dragSource && this._dragSource.fire('dragend', options);\n delete this._dragSource;\n // we need to call mouse up synthetically because the browser won't\n this._onMouseUp(e);\n }\n\n /**\n * fire `drag` event on canvas and drag source\n * @private\n * @param {DragEvent} e\n */\n private _onDragProgress(e: DragEvent) {\n const options = {\n e,\n target: this._dragSource as FabricObject | undefined,\n dragSource: this._dragSource as FabricObject | undefined,\n dropTarget: this._draggedoverTarget as FabricObject,\n };\n this.fire('drag', options);\n this._dragSource && this._dragSource.fire('drag', options);\n }\n\n /**\n * As opposed to {@link findTarget} we want the top most object to be returned w/o the active object cutting in line.\n * Override at will\n */\n protected findDragTargets(e: DragEvent) {\n this.targets = [];\n const target = this._searchPossibleTargets(\n this._objects,\n this.getViewportPoint(e)\n );\n return {\n target,\n targets: [...this.targets],\n };\n }\n\n /**\n * prevent default to allow drop event to be fired\n * https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#specifying_drop_targets\n * @private\n * @param {DragEvent} [e] Event object fired on Event.js shake\n */\n private _onDragOver(e: DragEvent) {\n const eventType = 'dragover';\n const { target, targets } = this.findDragTargets(e);\n const dragSource = this._dragSource as FabricObject;\n const options = {\n e,\n target,\n subTargets: targets,\n dragSource,\n canDrop: false,\n dropTarget: undefined,\n };\n let dropTarget;\n // fire on canvas\n this.fire(eventType, options);\n // make sure we fire dragenter events before dragover\n // if dragleave is needed, object will not fire dragover so we don't need to trouble ourselves with it\n this._fireEnterLeaveEvents(target, options);\n if (target) {\n if (target.canDrop(e)) {\n dropTarget = target;\n }\n target.fire(eventType, options);\n }\n // propagate the event to subtargets\n for (let i = 0; i < targets.length; i++) {\n const subTarget = targets[i];\n // accept event only if previous targets didn't (the accepting target calls `preventDefault` to inform that the event is taken)\n // TODO: verify if those should loop in inverse order then?\n // what is the order of subtargets?\n if (subTarget.canDrop(e)) {\n dropTarget = subTarget;\n }\n subTarget.fire(eventType, options);\n }\n // render drag effects now that relations between source and target is clear\n this._renderDragEffects(e, dragSource, dropTarget);\n this._dropTarget = dropTarget;\n }\n\n /**\n * fire `dragleave` on `dragover` targets\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n private _onDragEnter(e: DragEvent) {\n const { target, targets } = this.findDragTargets(e);\n const options = {\n e,\n target,\n subTargets: targets,\n dragSource: this._dragSource,\n };\n this.fire('dragenter', options);\n // fire dragenter on targets\n this._fireEnterLeaveEvents(target, options);\n }\n\n /**\n * fire `dragleave` on `dragover` targets\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n private _onDragLeave(e: DragEvent) {\n const options = {\n e,\n target: this._draggedoverTarget,\n subTargets: this.targets,\n dragSource: this._dragSource,\n };\n this.fire('dragleave', options);\n\n // fire dragleave on targets\n this._fireEnterLeaveEvents(undefined, options);\n this._renderDragEffects(e, this._dragSource);\n this._dropTarget = undefined;\n // clear targets\n this.targets = [];\n this._hoveredTargets = [];\n }\n\n /**\n * `drop:before` is a an event that allows you to schedule logic\n * before the `drop` event. Prefer `drop` event always, but if you need\n * to run some drop-disabling logic on an event, since there is no way\n * to handle event handlers ordering, use `drop:before`\n * @private\n * @param {Event} e\n */\n private _onDrop(e: DragEvent) {\n const { target, targets } = this.findDragTargets(e);\n const options = this._basicEventHandler('drop:before', {\n e,\n target,\n subTargets: targets,\n dragSource: this._dragSource,\n ...getEventPoints(this, e),\n });\n // will be set by the drop target\n options.didDrop = false;\n // will be set by the drop target, used in case options.target refuses the drop\n options.dropTarget = undefined;\n // fire `drop`\n this._basicEventHandler('drop', options);\n // inform canvas of the drop\n // we do this because canvas was unaware of what happened at the time the `drop` event was fired on it\n // use for side effects\n this.fire('drop:after', options);\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n private _onContextMenu(e: TPointerEvent): false {\n const target = this.findTarget(e),\n subTargets = this.targets || [];\n const options = this._basicEventHandler('contextmenu:before', {\n e,\n target,\n subTargets,\n });\n // TODO: this line is silly because the dev can subscribe to the event and prevent it themselves\n this.stopContextMenu && stopEvent(e);\n this._basicEventHandler('contextmenu', options);\n return false;\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n private _onDoubleClick(e: TPointerEvent) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData();\n }\n\n /**\n * Return a the id of an event.\n * returns either the pointerId or the identifier or 0 for the mouse event\n * @private\n * @param {Event} evt Event object\n */\n getPointerId(evt: TouchEvent | PointerEvent): number {\n const changedTouches = (evt as TouchEvent).changedTouches;\n\n if (changedTouches) {\n return changedTouches[0] && changedTouches[0].identifier;\n }\n\n if (this.enablePointerEvents) {\n return (evt as PointerEvent).pointerId;\n }\n\n return -1;\n }\n\n /**\n * Determines if an event has the id of the event that is considered main\n * @private\n * @param {evt} event Event object\n */\n _isMainEvent(evt: TPointerEvent): boolean {\n if ((evt as PointerEvent).isPrimary === true) {\n return true;\n }\n if ((evt as PointerEvent).isPrimary === false) {\n return false;\n }\n if (evt.type === 'touchend' && (evt as TouchEvent).touches.length === 0) {\n return true;\n }\n if ((evt as TouchEvent).changedTouches) {\n return (\n (evt as TouchEvent).changedTouches[0].identifier === this.mainTouchId\n );\n }\n return true;\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchStart(e: TouchEvent) {\n e.preventDefault();\n if (this.mainTouchId === undefined) {\n this.mainTouchId = this.getPointerId(e);\n }\n this.__onMouseDown(e);\n this._resetTransformEventData();\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n const doc = getDocumentFromElement(canvasElement);\n addListener(\n doc,\n 'touchend',\n this._onTouchEnd as EventListener,\n addEventOptions\n );\n addListener(\n doc,\n 'touchmove',\n this._onMouseMove as EventListener,\n addEventOptions\n );\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(\n canvasElement,\n `${eventTypePrefix}down`,\n this._onMouseDown as EventListener\n );\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown(e: TPointerEvent) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n removeListener(\n canvasElement,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions\n );\n const doc = getDocumentFromElement(canvasElement);\n addListener(doc, `${eventTypePrefix}up`, this._onMouseUp as EventListener);\n addListener(\n doc,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions\n );\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchEnd(e: TouchEvent) {\n if (e.touches.length > 0) {\n // if there are still touches stop here\n return;\n }\n this.__onMouseUp(e);\n this._resetTransformEventData();\n delete this.mainTouchId;\n const eventTypePrefix = this._getEventPrefix();\n const doc = getDocumentFromElement(this.upperCanvasEl);\n removeListener(\n doc,\n 'touchend',\n this._onTouchEnd as EventListener,\n addEventOptions\n );\n removeListener(\n doc,\n 'touchmove',\n this._onMouseMove as EventListener,\n addEventOptions\n );\n if (this._willAddMouseDown) {\n clearTimeout(this._willAddMouseDown);\n }\n this._willAddMouseDown = setTimeout(() => {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n addListener(\n this.upperCanvasEl,\n `${eventTypePrefix}down`,\n this._onMouseDown as EventListener\n );\n this._willAddMouseDown = 0;\n }, 400) as unknown as number;\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp(e: TPointerEvent) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n if (this._isMainEvent(e)) {\n const doc = getDocumentFromElement(this.upperCanvasEl);\n removeListener(\n doc,\n `${eventTypePrefix}up`,\n this._onMouseUp as EventListener\n );\n removeListener(\n doc,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions\n );\n addListener(\n canvasElement,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions\n );\n }\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove(e: TPointerEvent) {\n const activeObject = this.getActiveObject();\n !this.allowTouchScrolling &&\n (!activeObject ||\n // a drag event sequence is started by the active object flagging itself on mousedown / mousedown:before\n // we must not prevent the event's default behavior in order for the window to start dragging\n !activeObject.shouldStartDragging(e)) &&\n e.preventDefault &&\n e.preventDefault();\n this.__onMouseMove(e);\n }\n\n /**\n * @private\n */\n _onResize() {\n this.calcOffset();\n this._resetTransformEventData();\n }\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n */\n _shouldRender(target: FabricObject | undefined) {\n const activeObject = this.getActiveObject();\n // if just one of them is available or if they are both but are different objects\n // this covers: switch of target, from target to no target, selection of target\n // multiSelection with key and mouse\n return (\n !!activeObject !== !!target ||\n (activeObject && target && activeObject !== target)\n );\n }\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp(e: TPointerEvent) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'up:before');\n\n const transform = this._currentTransform;\n const isClick = this._isClick;\n const target = this._target;\n\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n const { button } = e as MouseEvent;\n if (button) {\n ((this.fireMiddleClick && button === 1) ||\n (this.fireRightClick && button === 2)) &&\n this._handleEvent(e, 'up');\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n let shouldRender = false;\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n if (!isClick) {\n const targetWasActive = target === this._activeObject;\n this.handleSelection(e);\n if (!shouldRender) {\n shouldRender =\n this._shouldRender(target) ||\n (!targetWasActive && target === this._activeObject);\n }\n }\n let pointer, corner;\n if (target) {\n const found = target.findControl(\n this.getViewportPoint(e),\n isTouchEvent(e)\n );\n const { key, control } = found || {};\n corner = key;\n if (\n target.selectable &&\n target !== this._activeObject &&\n target.activeOn === 'up'\n ) {\n this.setActiveObject(target, e);\n shouldRender = true;\n } else if (control) {\n const mouseUpHandler = control.getMouseUpHandler(e, target, control);\n if (mouseUpHandler) {\n pointer = this.getScenePoint(e);\n mouseUpHandler.call(control, e, transform!, pointer.x, pointer.y);\n }\n }\n target.isMoving = false;\n }\n // if we are ending up a transform on a different control or a new object\n // fire the original mouse up from the corner that started the transform\n if (\n transform &&\n (transform.target !== target || transform.corner !== corner)\n ) {\n const originalControl =\n transform.target && transform.target.controls[transform.corner],\n originalMouseUpHandler =\n originalControl &&\n originalControl.getMouseUpHandler(\n e,\n transform.target,\n originalControl\n );\n pointer = pointer || this.getScenePoint(e);\n originalMouseUpHandler &&\n originalMouseUpHandler.call(\n originalControl,\n e,\n transform,\n pointer.x,\n pointer.y\n );\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up');\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n target && (target.__corner = undefined);\n if (shouldRender) {\n this.requestRenderAll();\n } else if (!isClick && !(this._activeObject as IText)?.isEditing) {\n this.renderTop();\n }\n }\n\n _basicEventHandler<T extends keyof (CanvasEvents | ObjectEvents)>(\n eventType: T,\n options: (CanvasEvents & ObjectEvents)[T]\n ) {\n const { target, subTargets = [] } = options as {\n target?: FabricObject;\n subTargets: FabricObject[];\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n for (let i = 0; i < subTargets.length; i++) {\n subTargets[i] !== target && subTargets[i].fire(eventType, options);\n }\n return options;\n }\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {TPointerEvent} e event from mouse\n * @param {TPointerEventNames} eventType\n */\n _handleEvent<T extends TPointerEventNames>(e: TPointerEvent, eventType: T) {\n const target = this._target,\n targets = this.targets || [],\n options: CanvasEvents[`mouse:${T}`] = {\n e,\n target,\n subTargets: targets,\n ...getEventPoints(this, e),\n transform: this._currentTransform,\n ...(eventType === 'up:before' || eventType === 'up'\n ? {\n isClick: this._isClick,\n currentTarget: this.findTarget(e),\n // set by the preceding `findTarget` call\n currentSubTargets: this.targets,\n }\n : {}),\n } as CanvasEvents[`mouse:${T}`];\n this.fire(`mouse:${eventType}`, options);\n // this may be a little be more complicated of what we want to handle\n target && target.fire(`mouse${eventType}`, options);\n for (let i = 0; i < targets.length; i++) {\n targets[i] !== target && targets[i].fire(`mouse${eventType}`, options);\n }\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode(e: TPointerEvent) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e);\n this.requestRenderAll();\n }\n // TODO: this is a scene point so it should be renamed\n const pointer = this.getScenePoint(e);\n this.freeDrawingBrush &&\n this.freeDrawingBrush.onMouseDown(pointer, { e, pointer });\n this._handleEvent(e, 'down');\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode(e: TPointerEvent) {\n if (this._isCurrentlyDrawing) {\n const pointer = this.getScenePoint(e);\n this.freeDrawingBrush &&\n this.freeDrawingBrush.onMouseMove(pointer, {\n e,\n // this is an absolute pointer, the naming is wrong\n pointer,\n });\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode(e: TPointerEvent) {\n const pointer = this.getScenePoint(e);\n if (this.freeDrawingBrush) {\n this._isCurrentlyDrawing = !!this.freeDrawingBrush.onMouseUp({\n e: e,\n // this is an absolute pointer, the naming is wrong\n pointer,\n });\n } else {\n this._isCurrentlyDrawing = false;\n }\n this._handleEvent(e, 'up');\n }\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown(e: TPointerEvent) {\n this._isClick = true;\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n\n let target: FabricObject | undefined = this._target;\n\n // if right/middle click just fire events\n const { button } = e as MouseEvent;\n if (button) {\n ((this.fireMiddleClick && button === 1) ||\n (this.fireRightClick && button === 2)) &&\n this._handleEvent(e, 'down');\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n let shouldRender = this._shouldRender(target);\n let grouped = false;\n if (this.handleMultiSelection(e, target)) {\n // active object might have changed while grouping\n target = this._activeObject;\n grouped = true;\n shouldRender = true;\n } else if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n // we start a group selector rectangle if\n // selection is enabled\n // and there is no target, or the following 3 conditions are satisfied:\n // target is not selectable ( otherwise we selected it )\n // target is not editing\n // target is not already selected ( otherwise we drag )\n if (\n this.selection &&\n (!target ||\n (!target.selectable &&\n !(target as IText).isEditing &&\n target !== this._activeObject))\n ) {\n const p = this.getScenePoint(e);\n this._groupSelector = {\n x: p.x,\n y: p.y,\n deltaY: 0,\n deltaX: 0,\n };\n }\n\n if (target) {\n const alreadySelected = target === this._activeObject;\n if (target.selectable && target.activeOn === 'down') {\n this.setActiveObject(target, e);\n }\n const handle = target.findControl(\n this.getViewportPoint(e),\n isTouchEvent(e)\n );\n if (target === this._activeObject && (handle || !grouped)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n const control = handle ? handle.control : undefined,\n pointer = this.getScenePoint(e),\n mouseDownHandler =\n control && control.getMouseDownHandler(e, target, control);\n mouseDownHandler &&\n mouseDownHandler.call(\n control,\n e,\n this._currentTransform!,\n pointer.x,\n pointer.y\n );\n }\n }\n // we clear `_objectsToRender` in case of a change in order to repopulate it at rendering\n // run before firing the `down` event to give the dev a chance to populate it themselves\n shouldRender && (this._objectsToRender = undefined);\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n shouldRender && this.requestRenderAll();\n }\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData() {\n this._target = undefined;\n this._pointer = undefined;\n this._absolutePointer = undefined;\n }\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData(e: TPointerEvent) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getViewportPoint(e);\n this._absolutePointer = sendPointToPlane(\n this._pointer,\n undefined,\n this.viewportTransform\n );\n this._target = this._currentTransform\n ? this._currentTransform.target\n : this.findTarget(e);\n }\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will define whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove(e: TPointerEvent) {\n this._isClick = false;\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'move:before');\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n const groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n const pointer = this.getScenePoint(e);\n\n groupSelector.deltaX = pointer.x - groupSelector.x;\n groupSelector.deltaY = pointer.y - groupSelector.y;\n\n this.renderTop();\n } else if (!this._currentTransform) {\n const target = this.findTarget(e);\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(e, target);\n } else {\n this._transformObject(e);\n }\n this.textEditingManager.onMouseMove(e);\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n }\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents(e: TPointerEvent, target?: FabricObject) {\n const _hoveredTarget = this._hoveredTarget,\n _hoveredTargets = this._hoveredTargets,\n targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents('mouse', {\n e,\n target,\n oldTarget: _hoveredTarget,\n fireCanvas: true,\n });\n for (let i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents('mouse', {\n e,\n target: targets[i],\n oldTarget: _hoveredTargets[i],\n });\n }\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n }\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Object} data Event object fired on dragover\n * @private\n */\n _fireEnterLeaveEvents(target: FabricObject | undefined, data: DragEventData) {\n const draggedoverTarget = this._draggedoverTarget,\n _hoveredTargets = this._hoveredTargets,\n targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents('drag', {\n ...data,\n target,\n oldTarget: draggedoverTarget,\n fireCanvas: true,\n });\n for (let i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents('drag', {\n ...data,\n target: targets[i],\n oldTarget: _hoveredTargets[i],\n });\n }\n this._draggedoverTarget = target;\n }\n\n /**\n * Manage the synthetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Object} data Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSyntheticInOutEvents<T extends keyof TSyntheticEventContext>(\n type: T,\n {\n target,\n oldTarget,\n fireCanvas,\n e,\n ...data\n }: TSyntheticEventContext[T] & {\n target?: FabricObject;\n oldTarget?: FabricObject;\n fireCanvas?: boolean;\n }\n ) {\n const { targetIn, targetOut, canvasIn, canvasOut } =\n syntheticEventConfig[type];\n const targetChanged = oldTarget !== target;\n\n if (oldTarget && targetChanged) {\n const outOpt: CanvasEvents[typeof canvasOut] = {\n ...data,\n e,\n target: oldTarget,\n nextTarget: target,\n ...getEventPoints(this, e),\n };\n fireCanvas && this.fire(canvasOut, outOpt);\n oldTarget.fire(targetOut, outOpt);\n }\n if (target && targetChanged) {\n const inOpt: CanvasEvents[typeof canvasIn] = {\n ...data,\n e,\n target,\n previousTarget: oldTarget,\n ...getEventPoints(this, e),\n };\n fireCanvas && this.fire(canvasIn, inOpt);\n target.fire(targetIn, inOpt);\n }\n }\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel(e: TPointerEvent) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n }\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject(e: TPointerEvent) {\n const scenePoint = this.getScenePoint(e),\n transform = this._currentTransform!,\n target = transform.target,\n // transform pointer to target's containing coordinate plane\n // both pointer and object should agree on every point\n localPointer = target.group\n ? sendPointToPlane(\n scenePoint,\n undefined,\n target.group.calcTransformMatrix()\n )\n : scenePoint;\n transform.shiftKey = e.shiftKey;\n transform.altKey = !!this.centeredKey && e[this.centeredKey];\n\n this._performTransformAction(e, transform, localPointer);\n transform.actionPerformed && this.requestRenderAll();\n }\n\n /**\n * @private\n */\n _performTransformAction(\n e: TPointerEvent,\n transform: Transform,\n pointer: Point\n ) {\n const { action, actionHandler, target } = transform;\n\n const actionPerformed =\n !!actionHandler && actionHandler(e, transform, pointer.x, pointer.y);\n actionPerformed && target.setCoords();\n\n // this object could be created from the function in the control handlers\n if (action === 'drag' && actionPerformed) {\n transform.target.isMoving = true;\n this.setCursor(transform.target.moveCursor || this.moveCursor);\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n }\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent(e: TPointerEvent, target?: FabricObject) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return;\n }\n let hoverCursor = target.hoverCursor || this.hoverCursor;\n const activeSelection = isActiveSelection(this._activeObject)\n ? this._activeObject\n : null,\n // only show proper corner when group selection is not active\n corner =\n (!activeSelection || target.group !== activeSelection) &&\n // here we call findTargetCorner always with undefined for the touch parameter.\n // we assume that if you are using a cursor you do not need to interact with\n // the bigger touch area.\n target.findControl(this.getViewportPoint(e));\n\n if (!corner) {\n if ((target as Group).subTargetCheck) {\n // hoverCursor should come from top-most subTarget,\n // so we walk the array backwards\n this.targets\n .concat()\n .reverse()\n .map((_target) => {\n hoverCursor = _target.hoverCursor || hoverCursor;\n });\n }\n this.setCursor(hoverCursor);\n } else {\n const control = corner.control;\n this.setCursor(control.cursorStyleHandler(e, control, target));\n }\n }\n\n /**\n * ## Handles multiple selection\n * - toggles `target` selection (selects/deselects `target` if it isn't/is selected respectively)\n * - sets the active object in case it is not set or in case there is a single active object left under active selection.\n * ---\n * - If the active object is the active selection we add/remove `target` from it\n * - If not, add the active object and `target` to the active selection and make it the active object.\n * @private\n * @param {TPointerEvent} e Event object\n * @param {FabricObject} target target of event to select/deselect\n * @returns true if grouping occurred\n */\n protected handleMultiSelection(e: TPointerEvent, target?: FabricObject) {\n const activeObject = this._activeObject;\n const isAS = isActiveSelection(activeObject);\n if (\n // check if an active object exists on canvas and if the user is pressing the `selectionKey` while canvas supports multi selection.\n !!activeObject &&\n this._isSelectionKeyPressed(e) &&\n this.selection &&\n // on top of that the user also has to hit a target that is selectable.\n !!target &&\n target.selectable &&\n // group target and active object only if they are different objects\n // else we try to find a subtarget of `ActiveSelection`\n (activeObject !== target || isAS) &&\n // make sure `activeObject` and `target` aren't ancestors of each other in case `activeObject` is not `ActiveSelection`\n // if it is then we want to remove `target` from it\n (isAS ||\n (!target.isDescendantOf(activeObject) &&\n !activeObject.isDescendantOf(target))) &&\n // target accepts selection\n !target.onSelect({ e }) &&\n // make sure we are not on top of a control\n !activeObject.getActiveControl()\n ) {\n if (isAS) {\n const prevActiveObjects = activeObject.getObjects();\n if (target === activeObject) {\n const pointer = this.getViewportPoint(e);\n target =\n // first search active objects for a target to remove\n this.searchPossibleTargets(prevActiveObjects, pointer) ||\n // if not found, search under active selection for a target to add\n // `prevActiveObjects` will be searched but we already know they will not be found\n this.searchPossibleTargets(this._objects, pointer);\n // if nothing is found bail out\n if (!target || !target.selectable) {\n return false;\n }\n }\n if (target.group === activeObject) {\n // `target` is part of active selection => remove it\n activeObject.remove(target);\n this._hoveredTarget = target;\n this._hoveredTargets = [...this.targets];\n // if after removing an object we are left with one only...\n if (activeObject.size() === 1) {\n // activate last remaining object\n // deselecting the active selection will remove the remaining object from it\n this._setActiveObject(activeObject.item(0), e);\n }\n } else {\n // `target` isn't part of active selection => add it\n activeObject.multiSelectAdd(target);\n this._hoveredTarget = activeObject;\n this._hoveredTargets = [...this.targets];\n }\n this._fireSelectionEvents(prevActiveObjects, e);\n } else {\n (activeObject as IText).exitEditing &&\n (activeObject as IText).exitEditing();\n // add the active object and the target to the active selection and set it as the active object\n const klass =\n classRegistry.getClass<typeof ActiveSelection>('ActiveSelection');\n const newActiveSelection = new klass([], {\n /**\n * it is crucial to pass the canvas ref before calling {@link ActiveSelection#multiSelectAdd}\n * since it uses {@link FabricObject#isInFrontOf} which relies on the canvas ref\n */\n canvas: this,\n });\n newActiveSelection.multiSelectAdd(activeObject, target);\n this._hoveredTarget = newActiveSelection;\n // ISSUE 4115: should we consider subTargets here?\n // this._hoveredTargets = [];\n // this._hoveredTargets = this.targets.concat();\n this._setActiveObject(newActiveSelection, e);\n this._fireSelectionEvents([activeObject], e);\n }\n return true;\n }\n return false;\n }\n\n /**\n * ## Handles selection\n * - selects objects that are contained in (and possibly intersecting) the selection bounding box\n * - sets the active object\n * ---\n * runs on mouse up after a mouse move\n */\n protected handleSelection(e: TPointerEvent) {\n if (!this.selection || !this._groupSelector) {\n return false;\n }\n const { x, y, deltaX, deltaY } = this._groupSelector,\n point1 = new Point(x, y),\n point2 = point1.add(new Point(deltaX, deltaY)),\n tl = point1.min(point2),\n br = point1.max(point2),\n size = br.subtract(tl);\n\n const collectedObjects = this.collectObjects(\n {\n left: tl.x,\n top: tl.y,\n width: size.x,\n height: size.y,\n },\n { includeIntersecting: !this.selectionFullyContained }\n ) as FabricObject[];\n\n const objects =\n // though this method runs only after mouse move the pointer could do a mouse up on the same position as mouse down\n // should it be handled as is?\n point1.eq(point2)\n ? collectedObjects[0]\n ? [collectedObjects[0]]\n : []\n : collectedObjects.length > 1\n ? collectedObjects.filter((object) => !object.onSelect({ e })).reverse()\n : // `setActiveObject` will call `onSelect(collectedObjects[0])` in this case\n collectedObjects;\n\n // set active object\n if (objects.length === 1) {\n // set as active object\n this.setActiveObject(objects[0], e);\n } else if (objects.length > 1) {\n // add to active selection and make it the active object\n const klass =\n classRegistry.getClass<typeof ActiveSelection>('ActiveSelection');\n this.setActiveObject(new klass(objects, { canvas: this }), e);\n }\n\n // cleanup\n this._groupSelector = null;\n return true;\n }\n\n /**\n * @override clear {@link textEditingManager}\n */\n clear() {\n this.textEditingManager.clear();\n super.clear();\n }\n\n /**\n * @override clear {@link textEditingManager}\n */\n destroy() {\n this.removeListeners();\n this.textEditingManager.dispose();\n super.destroy();\n }\n}\n"],"names":["addEventOptions","passive","getEventPoints","canvas","e","viewportPoint","getViewportPoint","scenePoint","getScenePoint","pointer","absolutePointer","addListener","el","_len","arguments","length","args","Array","_key","addEventListener","removeListener","_len2","_key2","removeEventListener","syntheticEventConfig","mouse","in","out","targetIn","targetOut","canvasIn","canvasOut","drag","Canvas","SelectableCanvas","constructor","super","undefined","_defineProperty","this","TextEditingManager","forEach","eventHandler","bind","addOrRemove","_getEventPrefix","enablePointerEvents","functor","eventjsFunctor","canvasElement","upperCanvasEl","eventTypePrefix","getWindowFromElement","_onResize","_onMouseDown","concat","_onMouseMove","_onMouseOut","_onMouseEnter","_onMouseWheel","_onContextMenu","_onDoubleClick","_onDragStart","_onDragEnd","_onDragOver","_onDragEnter","_onDragLeave","_onDrop","_onTouchStart","removeListeners","doc","getDocumentFromElement","_onMouseUp","_onTouchEnd","__onMouseWheel","target","_hoveredTarget","shared","_objectSpread","fire","_hoveredTargets","nestedTarget","_currentTransform","findTarget","_isClick","activeObject","getActiveObject","onDragStart","_dragSource","options","_onDragProgress","stopEvent","_renderDragEffects","source","dirty","dropTarget","_dropTarget","clearContextTop","ctx","contextTop","save","transform","viewportTransform","renderDragSourceEffect","restore","renderDropTargetEffect","contextTopDirty","didDrop","dataTransfer","dropEffect","NONE","_activeObject","subTargets","targets","dragSource","_draggedoverTarget","findDragTargets","_searchPossibleTargets","_objects","eventType","canDrop","_fireEnterLeaveEvents","i","subTarget","_basicEventHandler","stopContextMenu","_cacheTransformEventData","_handleEvent","_resetTransformEventData","getPointerId","evt","changedTouches","identifier","pointerId","_isMainEvent","isPrimary","type","touches","mainTouchId","preventDefault","__onMouseDown","__onMouseUp","_willAddMouseDown","clearTimeout","setTimeout","allowTouchScrolling","shouldStartDragging","__onMouseMove","calcOffset","_shouldRender","_this$_activeObject","isClick","_target","button","fireMiddleClick","fireRightClick","isDrawingMode","_isCurrentlyDrawing","_onMouseUpInDrawingMode","corner","shouldRender","_finalizeCurrentTransform","actionPerformed","targetWasActive","handleSelection","found","findControl","isTouchEvent","key","control","selectable","activeOn","setActiveObject","mouseUpHandler","getMouseUpHandler","call","x","y","isMoving","originalControl","controls","originalMouseUpHandler","_setCursorFromEvent","_groupSelector","__corner","requestRenderAll","isEditing","renderTop","currentTarget","currentSubTargets","_onMouseDownInDrawingMode","discardActiveObject","freeDrawingBrush","onMouseDown","_onMouseMoveInDrawingMode","onMouseMove","setCursor","freeDrawingCursor","onMouseUp","grouped","handleMultiSelection","_shouldClearSelection","selection","p","deltaY","deltaX","alreadySelected","handle","_setupCurrentTransform","mouseDownHandler","getMouseDownHandler","_objectsToRender","_pointer","_absolutePointer","sendPointToPlane","groupSelector","_transformObject","_fireOverOutEvents","textEditingManager","Math","max","fireSyntheticInOutEvents","oldTarget","fireCanvas","data","draggedoverTarget","_ref","_objectWithoutProperties","_excluded","targetChanged","outOpt","nextTarget","inOpt","previousTarget","localPointer","group","calcTransformMatrix","shiftKey","altKey","centeredKey","_performTransformAction","action","actionHandler","setCoords","moveCursor","defaultCursor","hoverCursor","activeSelection","isActiveSelection","cursorStyleHandler","subTargetCheck","reverse","map","isAS","_isSelectionKeyPressed","isDescendantOf","onSelect","getActiveControl","prevActiveObjects","getObjects","searchPossibleTargets","remove","size","_setActiveObject","item","multiSelectAdd","_fireSelectionEvents","exitEditing","newActiveSelection","classRegistry","getClass","point1","Point","point2","add","tl","min","subtract","collectedObjects","collectObjects","left","top","width","height","includeIntersecting","selectionFullyContained","objects","eq","filter","object","klass","clear","destroy","dispose"],"mappings":"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"}
1
+ {"version":3,"file":"Canvas.min.mjs","sources":["../../../src/canvas/Canvas.ts"],"sourcesContent":["import { classRegistry } from '../ClassRegistry';\nimport { NONE } from '../constants';\nimport type {\n CanvasEvents,\n DragEventData,\n ObjectEvents,\n TPointerEvent,\n TPointerEventNames,\n Transform,\n} from '../EventTypeDefs';\nimport { Point } from '../Point';\nimport type { ActiveSelection } from '../shapes/ActiveSelection';\nimport type { Group } from '../shapes/Group';\nimport type { IText } from '../shapes/IText/IText';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { isTouchEvent, stopEvent } from '../util/dom_event';\nimport { getDocumentFromElement, getWindowFromElement } from '../util/dom_misc';\nimport { sendPointToPlane } from '../util/misc/planeChange';\nimport { isActiveSelection } from '../util/typeAssertions';\nimport type { CanvasOptions, TCanvasOptions } from './CanvasOptions';\nimport { SelectableCanvas } from './SelectableCanvas';\nimport { TextEditingManager } from './TextEditingManager';\n\nconst addEventOptions = { passive: false } as EventListenerOptions;\n\nconst getEventPoints = (canvas: Canvas, e: TPointerEvent) => {\n const viewportPoint = canvas.getViewportPoint(e);\n const scenePoint = canvas.getScenePoint(e);\n return {\n viewportPoint,\n scenePoint,\n pointer: viewportPoint,\n absolutePointer: scenePoint,\n };\n};\n\n// just to be clear, the utils are now deprecated and those are here exactly as minifier helpers\n// because el.addEventListener can't me be minified while a const yes and we use it 47 times in this file.\n// few bytes but why give it away.\nconst addListener = (\n el: HTMLElement | Document,\n ...args: Parameters<HTMLElement['addEventListener']>\n) => el.addEventListener(...args);\nconst removeListener = (\n el: HTMLElement | Document,\n ...args: Parameters<HTMLElement['removeEventListener']>\n) => el.removeEventListener(...args);\n\nconst syntheticEventConfig = {\n mouse: {\n in: 'over',\n out: 'out',\n targetIn: 'mouseover',\n targetOut: 'mouseout',\n canvasIn: 'mouse:over',\n canvasOut: 'mouse:out',\n },\n drag: {\n in: 'enter',\n out: 'leave',\n targetIn: 'dragenter',\n targetOut: 'dragleave',\n canvasIn: 'drag:enter',\n canvasOut: 'drag:leave',\n },\n} as const;\n\ntype TSyntheticEventContext = {\n mouse: { e: TPointerEvent };\n drag: DragEventData;\n};\n\nexport class Canvas extends SelectableCanvas implements CanvasOptions {\n /**\n * Contains the id of the touch event that owns the fabric transform\n * @type Number\n * @private\n */\n declare mainTouchId?: number;\n\n declare enablePointerEvents: boolean;\n\n /**\n * Holds a reference to a setTimeout timer for event synchronization\n * @type number\n * @private\n */\n private declare _willAddMouseDown: number;\n\n /**\n * Holds a reference to an object on the canvas that is receiving the drag over event.\n * @type FabricObject\n * @private\n */\n private declare _draggedoverTarget?: FabricObject;\n\n /**\n * Holds a reference to an object on the canvas from where the drag operation started\n * @type FabricObject\n * @private\n */\n private declare _dragSource?: FabricObject;\n\n /**\n * Holds a reference to an object on the canvas that is the current drop target\n * May differ from {@link _draggedoverTarget}\n * @todo inspect whether {@link _draggedoverTarget} and {@link _dropTarget} should be merged somehow\n * @type FabricObject\n * @private\n */\n private declare _dropTarget: FabricObject<ObjectEvents> | undefined;\n\n private _isClick: boolean;\n\n textEditingManager = new TextEditingManager(this);\n\n constructor(el?: string | HTMLCanvasElement, options: TCanvasOptions = {}) {\n super(el, options);\n // bind event handlers\n (\n [\n '_onMouseDown',\n '_onTouchStart',\n '_onMouseMove',\n '_onMouseUp',\n '_onTouchEnd',\n '_onResize',\n // '_onGesture',\n // '_onDrag',\n // '_onShake',\n // '_onLongPress',\n // '_onOrientationChange',\n '_onMouseWheel',\n '_onMouseOut',\n '_onMouseEnter',\n '_onContextMenu',\n '_onDoubleClick',\n '_onDragStart',\n '_onDragEnd',\n '_onDragProgress',\n '_onDragOver',\n '_onDragEnter',\n '_onDragLeave',\n '_onDrop',\n ] as (keyof this)[]\n ).forEach((eventHandler) => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\n this[eventHandler] = (this[eventHandler] as Function).bind(this);\n });\n // register event handlers\n this.addOrRemove(addListener, 'add');\n }\n\n /**\n * return an event prefix pointer or mouse.\n * @private\n */\n private _getEventPrefix() {\n return this.enablePointerEvents ? 'pointer' : 'mouse';\n }\n\n addOrRemove(functor: any, _eventjsFunctor: 'add' | 'remove') {\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n functor(getWindowFromElement(canvasElement), 'resize', this._onResize);\n functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n functor(\n canvasElement,\n `${eventTypePrefix}move`,\n this._onMouseMove,\n addEventOptions,\n );\n functor(canvasElement, `${eventTypePrefix}out`, this._onMouseOut);\n functor(canvasElement, `${eventTypePrefix}enter`, this._onMouseEnter);\n functor(canvasElement, 'wheel', this._onMouseWheel);\n functor(canvasElement, 'contextmenu', this._onContextMenu);\n functor(canvasElement, 'dblclick', this._onDoubleClick);\n functor(canvasElement, 'dragstart', this._onDragStart);\n functor(canvasElement, 'dragend', this._onDragEnd);\n functor(canvasElement, 'dragover', this._onDragOver);\n functor(canvasElement, 'dragenter', this._onDragEnter);\n functor(canvasElement, 'dragleave', this._onDragLeave);\n functor(canvasElement, 'drop', this._onDrop);\n if (!this.enablePointerEvents) {\n functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions);\n }\n // if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n // eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture);\n // eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag);\n // eventjs[eventjsFunctor](\n // canvasElement,\n // 'orientation',\n // this._onOrientationChange\n // );\n // eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake);\n // eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress);\n // }\n }\n\n /**\n * Removes all event listeners\n */\n removeListeners() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n const eventTypePrefix = this._getEventPrefix();\n const doc = getDocumentFromElement(this.upperCanvasEl);\n removeListener(\n doc,\n `${eventTypePrefix}up`,\n this._onMouseUp as EventListener,\n );\n removeListener(\n doc,\n 'touchend',\n this._onTouchEnd as EventListener,\n addEventOptions,\n );\n removeListener(\n doc,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n removeListener(\n doc,\n 'touchmove',\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n }\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n private _onMouseWheel(e: MouseEvent) {\n this.__onMouseWheel(e);\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n private _onMouseOut(e: TPointerEvent) {\n const target = this._hoveredTarget;\n const shared = {\n e,\n ...getEventPoints(this, e),\n };\n this.fire('mouse:out', { ...shared, target });\n this._hoveredTarget = undefined;\n target && target.fire('mouseout', { ...shared });\n this._hoveredTargets.forEach((nestedTarget) => {\n this.fire('mouse:out', { ...shared, target: nestedTarget });\n nestedTarget && nestedTarget.fire('mouseout', { ...shared });\n });\n this._hoveredTargets = [];\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n private _onMouseEnter(e: TPointerEvent) {\n // This find target and consequent 'mouse:over' is used to\n // clear old instances on hovered target.\n // calling findTarget has the side effect of killing target.__corner.\n // as a short term fix we are not firing this if we are currently transforming.\n // as a long term fix we need to separate the action of finding a target with the\n // side effects we added to it.\n if (!this._currentTransform && !this.findTarget(e)) {\n this.fire('mouse:over', {\n e,\n ...getEventPoints(this, e),\n });\n this._hoveredTarget = undefined;\n this._hoveredTargets = [];\n }\n }\n\n /**\n * supports native like text dragging\n * @private\n * @param {DragEvent} e\n */\n private _onDragStart(e: DragEvent) {\n this._isClick = false;\n const activeObject = this.getActiveObject();\n if (activeObject && activeObject.onDragStart(e)) {\n this._dragSource = activeObject;\n const options = { e, target: activeObject };\n this.fire('dragstart', options);\n activeObject.fire('dragstart', options);\n addListener(\n this.upperCanvasEl,\n 'drag',\n this._onDragProgress as EventListener,\n );\n return;\n }\n stopEvent(e);\n }\n\n /**\n * First we clear top context where the effects are being rendered.\n * Then we render the effects.\n * Doing so will render the correct effect for all cases including an overlap between `source` and `target`.\n * @private\n */\n private _renderDragEffects(\n e: DragEvent,\n source?: FabricObject,\n target?: FabricObject,\n ) {\n let dirty = false;\n // clear top context\n const dropTarget = this._dropTarget;\n if (dropTarget && dropTarget !== source && dropTarget !== target) {\n dropTarget.clearContextTop();\n dirty = true;\n }\n source?.clearContextTop();\n target !== source && target?.clearContextTop();\n // render effects\n const ctx = this.contextTop;\n ctx.save();\n ctx.transform(...this.viewportTransform);\n if (source) {\n ctx.save();\n source.transform(ctx);\n source.renderDragSourceEffect(e);\n ctx.restore();\n dirty = true;\n }\n if (target) {\n ctx.save();\n target.transform(ctx);\n target.renderDropTargetEffect(e);\n ctx.restore();\n dirty = true;\n }\n ctx.restore();\n dirty && (this.contextTopDirty = true);\n }\n\n /**\n * supports native like text dragging\n * https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#finishing_a_drag\n * @private\n * @param {DragEvent} e\n */\n private _onDragEnd(e: DragEvent) {\n const didDrop = !!e.dataTransfer && e.dataTransfer.dropEffect !== NONE,\n dropTarget = didDrop ? this._activeObject : undefined,\n options = {\n e,\n target: this._dragSource as FabricObject,\n subTargets: this.targets,\n dragSource: this._dragSource as FabricObject,\n didDrop,\n dropTarget: dropTarget as FabricObject,\n };\n removeListener(\n this.upperCanvasEl,\n 'drag',\n this._onDragProgress as EventListener,\n );\n this.fire('dragend', options);\n this._dragSource && this._dragSource.fire('dragend', options);\n delete this._dragSource;\n // we need to call mouse up synthetically because the browser won't\n this._onMouseUp(e);\n }\n\n /**\n * fire `drag` event on canvas and drag source\n * @private\n * @param {DragEvent} e\n */\n private _onDragProgress(e: DragEvent) {\n const options = {\n e,\n target: this._dragSource as FabricObject | undefined,\n dragSource: this._dragSource as FabricObject | undefined,\n dropTarget: this._draggedoverTarget as FabricObject,\n };\n this.fire('drag', options);\n this._dragSource && this._dragSource.fire('drag', options);\n }\n\n /**\n * As opposed to {@link findTarget} we want the top most object to be returned w/o the active object cutting in line.\n * Override at will\n */\n protected findDragTargets(e: DragEvent) {\n this.targets = [];\n const target = this._searchPossibleTargets(\n this._objects,\n this.getViewportPoint(e),\n );\n return {\n target,\n targets: [...this.targets],\n };\n }\n\n /**\n * prevent default to allow drop event to be fired\n * https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API/Drag_operations#specifying_drop_targets\n * @private\n * @param {DragEvent} [e] Event object fired on Event.js shake\n */\n private _onDragOver(e: DragEvent) {\n const eventType = 'dragover';\n const { target, targets } = this.findDragTargets(e);\n const dragSource = this._dragSource as FabricObject;\n const options = {\n e,\n target,\n subTargets: targets,\n dragSource,\n canDrop: false,\n dropTarget: undefined,\n };\n let dropTarget;\n // fire on canvas\n this.fire(eventType, options);\n // make sure we fire dragenter events before dragover\n // if dragleave is needed, object will not fire dragover so we don't need to trouble ourselves with it\n this._fireEnterLeaveEvents(target, options);\n if (target) {\n if (target.canDrop(e)) {\n dropTarget = target;\n }\n target.fire(eventType, options);\n }\n // propagate the event to subtargets\n for (let i = 0; i < targets.length; i++) {\n const subTarget = targets[i];\n // accept event only if previous targets didn't (the accepting target calls `preventDefault` to inform that the event is taken)\n // TODO: verify if those should loop in inverse order then?\n // what is the order of subtargets?\n if (subTarget.canDrop(e)) {\n dropTarget = subTarget;\n }\n subTarget.fire(eventType, options);\n }\n // render drag effects now that relations between source and target is clear\n this._renderDragEffects(e, dragSource, dropTarget);\n this._dropTarget = dropTarget;\n }\n\n /**\n * fire `dragleave` on `dragover` targets\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n private _onDragEnter(e: DragEvent) {\n const { target, targets } = this.findDragTargets(e);\n const options = {\n e,\n target,\n subTargets: targets,\n dragSource: this._dragSource,\n };\n this.fire('dragenter', options);\n // fire dragenter on targets\n this._fireEnterLeaveEvents(target, options);\n }\n\n /**\n * fire `dragleave` on `dragover` targets\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n private _onDragLeave(e: DragEvent) {\n const options = {\n e,\n target: this._draggedoverTarget,\n subTargets: this.targets,\n dragSource: this._dragSource,\n };\n this.fire('dragleave', options);\n\n // fire dragleave on targets\n this._fireEnterLeaveEvents(undefined, options);\n this._renderDragEffects(e, this._dragSource);\n this._dropTarget = undefined;\n // clear targets\n this.targets = [];\n this._hoveredTargets = [];\n }\n\n /**\n * `drop:before` is a an event that allows you to schedule logic\n * before the `drop` event. Prefer `drop` event always, but if you need\n * to run some drop-disabling logic on an event, since there is no way\n * to handle event handlers ordering, use `drop:before`\n * @private\n * @param {Event} e\n */\n private _onDrop(e: DragEvent) {\n const { target, targets } = this.findDragTargets(e);\n const options = this._basicEventHandler('drop:before', {\n e,\n target,\n subTargets: targets,\n dragSource: this._dragSource,\n ...getEventPoints(this, e),\n });\n // will be set by the drop target\n options.didDrop = false;\n // will be set by the drop target, used in case options.target refuses the drop\n options.dropTarget = undefined;\n // fire `drop`\n this._basicEventHandler('drop', options);\n // inform canvas of the drop\n // we do this because canvas was unaware of what happened at the time the `drop` event was fired on it\n // use for side effects\n this.fire('drop:after', options);\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n private _onContextMenu(e: TPointerEvent): false {\n const target = this.findTarget(e),\n subTargets = this.targets || [];\n const options = this._basicEventHandler('contextmenu:before', {\n e,\n target,\n subTargets,\n });\n // TODO: this line is silly because the dev can subscribe to the event and prevent it themselves\n this.stopContextMenu && stopEvent(e);\n this._basicEventHandler('contextmenu', options);\n return false;\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n private _onDoubleClick(e: TPointerEvent) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData();\n }\n\n /**\n * Return a the id of an event.\n * returns either the pointerId or the identifier or 0 for the mouse event\n * @private\n * @param {Event} evt Event object\n */\n getPointerId(evt: TouchEvent | PointerEvent): number {\n const changedTouches = (evt as TouchEvent).changedTouches;\n\n if (changedTouches) {\n return changedTouches[0] && changedTouches[0].identifier;\n }\n\n if (this.enablePointerEvents) {\n return (evt as PointerEvent).pointerId;\n }\n\n return -1;\n }\n\n /**\n * Determines if an event has the id of the event that is considered main\n * @private\n * @param {evt} event Event object\n */\n _isMainEvent(evt: TPointerEvent): boolean {\n if ((evt as PointerEvent).isPrimary === true) {\n return true;\n }\n if ((evt as PointerEvent).isPrimary === false) {\n return false;\n }\n if (evt.type === 'touchend' && (evt as TouchEvent).touches.length === 0) {\n return true;\n }\n if ((evt as TouchEvent).changedTouches) {\n return (\n (evt as TouchEvent).changedTouches[0].identifier === this.mainTouchId\n );\n }\n return true;\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchStart(e: TouchEvent) {\n e.preventDefault();\n if (this.mainTouchId === undefined) {\n this.mainTouchId = this.getPointerId(e);\n }\n this.__onMouseDown(e);\n this._resetTransformEventData();\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n const doc = getDocumentFromElement(canvasElement);\n addListener(\n doc,\n 'touchend',\n this._onTouchEnd as EventListener,\n addEventOptions,\n );\n addListener(\n doc,\n 'touchmove',\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(\n canvasElement,\n `${eventTypePrefix}down`,\n this._onMouseDown as EventListener,\n );\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown(e: TPointerEvent) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n removeListener(\n canvasElement,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n const doc = getDocumentFromElement(canvasElement);\n addListener(doc, `${eventTypePrefix}up`, this._onMouseUp as EventListener);\n addListener(\n doc,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchEnd(e: TouchEvent) {\n if (e.touches.length > 0) {\n // if there are still touches stop here\n return;\n }\n this.__onMouseUp(e);\n this._resetTransformEventData();\n delete this.mainTouchId;\n const eventTypePrefix = this._getEventPrefix();\n const doc = getDocumentFromElement(this.upperCanvasEl);\n removeListener(\n doc,\n 'touchend',\n this._onTouchEnd as EventListener,\n addEventOptions,\n );\n removeListener(\n doc,\n 'touchmove',\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n if (this._willAddMouseDown) {\n clearTimeout(this._willAddMouseDown);\n }\n this._willAddMouseDown = setTimeout(() => {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n addListener(\n this.upperCanvasEl,\n `${eventTypePrefix}down`,\n this._onMouseDown as EventListener,\n );\n this._willAddMouseDown = 0;\n }, 400) as unknown as number;\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp(e: TPointerEvent) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n const canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n if (this._isMainEvent(e)) {\n const doc = getDocumentFromElement(this.upperCanvasEl);\n removeListener(\n doc,\n `${eventTypePrefix}up`,\n this._onMouseUp as EventListener,\n );\n removeListener(\n doc,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n addListener(\n canvasElement,\n `${eventTypePrefix}move`,\n this._onMouseMove as EventListener,\n addEventOptions,\n );\n }\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove(e: TPointerEvent) {\n const activeObject = this.getActiveObject();\n !this.allowTouchScrolling &&\n (!activeObject ||\n // a drag event sequence is started by the active object flagging itself on mousedown / mousedown:before\n // we must not prevent the event's default behavior in order for the window to start dragging\n !activeObject.shouldStartDragging(e)) &&\n e.preventDefault &&\n e.preventDefault();\n this.__onMouseMove(e);\n }\n\n /**\n * @private\n */\n _onResize() {\n this.calcOffset();\n this._resetTransformEventData();\n }\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n */\n _shouldRender(target: FabricObject | undefined) {\n const activeObject = this.getActiveObject();\n // if just one of them is available or if they are both but are different objects\n // this covers: switch of target, from target to no target, selection of target\n // multiSelection with key and mouse\n return (\n !!activeObject !== !!target ||\n (activeObject && target && activeObject !== target)\n );\n }\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp(e: TPointerEvent) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'up:before');\n\n const transform = this._currentTransform;\n const isClick = this._isClick;\n const target = this._target;\n\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n const { button } = e as MouseEvent;\n if (button) {\n ((this.fireMiddleClick && button === 1) ||\n (this.fireRightClick && button === 2)) &&\n this._handleEvent(e, 'up');\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n let shouldRender = false;\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n if (!isClick) {\n const targetWasActive = target === this._activeObject;\n this.handleSelection(e);\n if (!shouldRender) {\n shouldRender =\n this._shouldRender(target) ||\n (!targetWasActive && target === this._activeObject);\n }\n }\n let pointer, corner;\n if (target) {\n const found = target.findControl(\n this.getViewportPoint(e),\n isTouchEvent(e),\n );\n const { key, control } = found || {};\n corner = key;\n if (\n target.selectable &&\n target !== this._activeObject &&\n target.activeOn === 'up'\n ) {\n this.setActiveObject(target, e);\n shouldRender = true;\n } else if (control) {\n const mouseUpHandler = control.getMouseUpHandler(e, target, control);\n if (mouseUpHandler) {\n pointer = this.getScenePoint(e);\n mouseUpHandler.call(control, e, transform!, pointer.x, pointer.y);\n }\n }\n target.isMoving = false;\n }\n // if we are ending up a transform on a different control or a new object\n // fire the original mouse up from the corner that started the transform\n if (\n transform &&\n (transform.target !== target || transform.corner !== corner)\n ) {\n const originalControl =\n transform.target && transform.target.controls[transform.corner],\n originalMouseUpHandler =\n originalControl &&\n originalControl.getMouseUpHandler(\n e,\n transform.target,\n originalControl,\n );\n pointer = pointer || this.getScenePoint(e);\n originalMouseUpHandler &&\n originalMouseUpHandler.call(\n originalControl,\n e,\n transform,\n pointer.x,\n pointer.y,\n );\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up');\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n target && (target.__corner = undefined);\n if (shouldRender) {\n this.requestRenderAll();\n } else if (!isClick && !(this._activeObject as IText)?.isEditing) {\n this.renderTop();\n }\n }\n\n _basicEventHandler<T extends keyof (CanvasEvents | ObjectEvents)>(\n eventType: T,\n options: (CanvasEvents & ObjectEvents)[T],\n ) {\n const { target, subTargets = [] } = options as {\n target?: FabricObject;\n subTargets: FabricObject[];\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n for (let i = 0; i < subTargets.length; i++) {\n subTargets[i] !== target && subTargets[i].fire(eventType, options);\n }\n return options;\n }\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {TPointerEvent} e event from mouse\n * @param {TPointerEventNames} eventType\n */\n _handleEvent<T extends TPointerEventNames>(e: TPointerEvent, eventType: T) {\n const target = this._target,\n targets = this.targets || [],\n options: CanvasEvents[`mouse:${T}`] = {\n e,\n target,\n subTargets: targets,\n ...getEventPoints(this, e),\n transform: this._currentTransform,\n ...(eventType === 'up:before' || eventType === 'up'\n ? {\n isClick: this._isClick,\n currentTarget: this.findTarget(e),\n // set by the preceding `findTarget` call\n currentSubTargets: this.targets,\n }\n : {}),\n } as CanvasEvents[`mouse:${T}`];\n this.fire(`mouse:${eventType}`, options);\n // this may be a little be more complicated of what we want to handle\n target && target.fire(`mouse${eventType}`, options);\n for (let i = 0; i < targets.length; i++) {\n targets[i] !== target && targets[i].fire(`mouse${eventType}`, options);\n }\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode(e: TPointerEvent) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e);\n this.requestRenderAll();\n }\n // TODO: this is a scene point so it should be renamed\n const pointer = this.getScenePoint(e);\n this.freeDrawingBrush &&\n this.freeDrawingBrush.onMouseDown(pointer, { e, pointer });\n this._handleEvent(e, 'down');\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode(e: TPointerEvent) {\n if (this._isCurrentlyDrawing) {\n const pointer = this.getScenePoint(e);\n this.freeDrawingBrush &&\n this.freeDrawingBrush.onMouseMove(pointer, {\n e,\n // this is an absolute pointer, the naming is wrong\n pointer,\n });\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n }\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode(e: TPointerEvent) {\n const pointer = this.getScenePoint(e);\n if (this.freeDrawingBrush) {\n this._isCurrentlyDrawing = !!this.freeDrawingBrush.onMouseUp({\n e: e,\n // this is an absolute pointer, the naming is wrong\n pointer,\n });\n } else {\n this._isCurrentlyDrawing = false;\n }\n this._handleEvent(e, 'up');\n }\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown(e: TPointerEvent) {\n this._isClick = true;\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n\n let target: FabricObject | undefined = this._target;\n\n // if right/middle click just fire events\n const { button } = e as MouseEvent;\n if (button) {\n ((this.fireMiddleClick && button === 1) ||\n (this.fireRightClick && button === 2)) &&\n this._handleEvent(e, 'down');\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n let shouldRender = this._shouldRender(target);\n let grouped = false;\n if (this.handleMultiSelection(e, target)) {\n // active object might have changed while grouping\n target = this._activeObject;\n grouped = true;\n shouldRender = true;\n } else if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n // we start a group selector rectangle if\n // selection is enabled\n // and there is no target, or the following 3 conditions are satisfied:\n // target is not selectable ( otherwise we selected it )\n // target is not editing\n // target is not already selected ( otherwise we drag )\n if (\n this.selection &&\n (!target ||\n (!target.selectable &&\n !(target as IText).isEditing &&\n target !== this._activeObject))\n ) {\n const p = this.getScenePoint(e);\n this._groupSelector = {\n x: p.x,\n y: p.y,\n deltaY: 0,\n deltaX: 0,\n };\n }\n\n if (target) {\n const alreadySelected = target === this._activeObject;\n if (target.selectable && target.activeOn === 'down') {\n this.setActiveObject(target, e);\n }\n const handle = target.findControl(\n this.getViewportPoint(e),\n isTouchEvent(e),\n );\n if (target === this._activeObject && (handle || !grouped)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n const control = handle ? handle.control : undefined,\n pointer = this.getScenePoint(e),\n mouseDownHandler =\n control && control.getMouseDownHandler(e, target, control);\n mouseDownHandler &&\n mouseDownHandler.call(\n control,\n e,\n this._currentTransform!,\n pointer.x,\n pointer.y,\n );\n }\n }\n // we clear `_objectsToRender` in case of a change in order to repopulate it at rendering\n // run before firing the `down` event to give the dev a chance to populate it themselves\n shouldRender && (this._objectsToRender = undefined);\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n shouldRender && this.requestRenderAll();\n }\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData() {\n this._target = undefined;\n this._pointer = undefined;\n this._absolutePointer = undefined;\n }\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData(e: TPointerEvent) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getViewportPoint(e);\n this._absolutePointer = sendPointToPlane(\n this._pointer,\n undefined,\n this.viewportTransform,\n );\n this._target = this._currentTransform\n ? this._currentTransform.target\n : this.findTarget(e);\n }\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will define whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove(e: TPointerEvent) {\n this._isClick = false;\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'move:before');\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n const groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n const pointer = this.getScenePoint(e);\n\n groupSelector.deltaX = pointer.x - groupSelector.x;\n groupSelector.deltaY = pointer.y - groupSelector.y;\n\n this.renderTop();\n } else if (!this._currentTransform) {\n const target = this.findTarget(e);\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(e, target);\n } else {\n this._transformObject(e);\n }\n this.textEditingManager.onMouseMove(e);\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n }\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents(e: TPointerEvent, target?: FabricObject) {\n const _hoveredTarget = this._hoveredTarget,\n _hoveredTargets = this._hoveredTargets,\n targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents('mouse', {\n e,\n target,\n oldTarget: _hoveredTarget,\n fireCanvas: true,\n });\n for (let i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents('mouse', {\n e,\n target: targets[i],\n oldTarget: _hoveredTargets[i],\n });\n }\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n }\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Object} data Event object fired on dragover\n * @private\n */\n _fireEnterLeaveEvents(target: FabricObject | undefined, data: DragEventData) {\n const draggedoverTarget = this._draggedoverTarget,\n _hoveredTargets = this._hoveredTargets,\n targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents('drag', {\n ...data,\n target,\n oldTarget: draggedoverTarget,\n fireCanvas: true,\n });\n for (let i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents('drag', {\n ...data,\n target: targets[i],\n oldTarget: _hoveredTargets[i],\n });\n }\n this._draggedoverTarget = target;\n }\n\n /**\n * Manage the synthetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Object} data Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSyntheticInOutEvents<T extends keyof TSyntheticEventContext>(\n type: T,\n {\n target,\n oldTarget,\n fireCanvas,\n e,\n ...data\n }: TSyntheticEventContext[T] & {\n target?: FabricObject;\n oldTarget?: FabricObject;\n fireCanvas?: boolean;\n },\n ) {\n const { targetIn, targetOut, canvasIn, canvasOut } =\n syntheticEventConfig[type];\n const targetChanged = oldTarget !== target;\n\n if (oldTarget && targetChanged) {\n const outOpt: CanvasEvents[typeof canvasOut] = {\n ...data,\n e,\n target: oldTarget,\n nextTarget: target,\n ...getEventPoints(this, e),\n };\n fireCanvas && this.fire(canvasOut, outOpt);\n oldTarget.fire(targetOut, outOpt);\n }\n if (target && targetChanged) {\n const inOpt: CanvasEvents[typeof canvasIn] = {\n ...data,\n e,\n target,\n previousTarget: oldTarget,\n ...getEventPoints(this, e),\n };\n fireCanvas && this.fire(canvasIn, inOpt);\n target.fire(targetIn, inOpt);\n }\n }\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel(e: TPointerEvent) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n }\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject(e: TPointerEvent) {\n const scenePoint = this.getScenePoint(e),\n transform = this._currentTransform!,\n target = transform.target,\n // transform pointer to target's containing coordinate plane\n // both pointer and object should agree on every point\n localPointer = target.group\n ? sendPointToPlane(\n scenePoint,\n undefined,\n target.group.calcTransformMatrix(),\n )\n : scenePoint;\n transform.shiftKey = e.shiftKey;\n transform.altKey = !!this.centeredKey && e[this.centeredKey];\n\n this._performTransformAction(e, transform, localPointer);\n transform.actionPerformed && this.requestRenderAll();\n }\n\n /**\n * @private\n */\n _performTransformAction(\n e: TPointerEvent,\n transform: Transform,\n pointer: Point,\n ) {\n const { action, actionHandler, target } = transform;\n\n const actionPerformed =\n !!actionHandler && actionHandler(e, transform, pointer.x, pointer.y);\n actionPerformed && target.setCoords();\n\n // this object could be created from the function in the control handlers\n if (action === 'drag' && actionPerformed) {\n transform.target.isMoving = true;\n this.setCursor(transform.target.moveCursor || this.moveCursor);\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n }\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent(e: TPointerEvent, target?: FabricObject) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return;\n }\n let hoverCursor = target.hoverCursor || this.hoverCursor;\n const activeSelection = isActiveSelection(this._activeObject)\n ? this._activeObject\n : null,\n // only show proper corner when group selection is not active\n corner =\n (!activeSelection || target.group !== activeSelection) &&\n // here we call findTargetCorner always with undefined for the touch parameter.\n // we assume that if you are using a cursor you do not need to interact with\n // the bigger touch area.\n target.findControl(this.getViewportPoint(e));\n\n if (!corner) {\n if ((target as Group).subTargetCheck) {\n // hoverCursor should come from top-most subTarget,\n // so we walk the array backwards\n this.targets\n .concat()\n .reverse()\n .map((_target) => {\n hoverCursor = _target.hoverCursor || hoverCursor;\n });\n }\n this.setCursor(hoverCursor);\n } else {\n const control = corner.control;\n this.setCursor(control.cursorStyleHandler(e, control, target));\n }\n }\n\n /**\n * ## Handles multiple selection\n * - toggles `target` selection (selects/deselects `target` if it isn't/is selected respectively)\n * - sets the active object in case it is not set or in case there is a single active object left under active selection.\n * ---\n * - If the active object is the active selection we add/remove `target` from it\n * - If not, add the active object and `target` to the active selection and make it the active object.\n * @private\n * @param {TPointerEvent} e Event object\n * @param {FabricObject} target target of event to select/deselect\n * @returns true if grouping occurred\n */\n protected handleMultiSelection(e: TPointerEvent, target?: FabricObject) {\n const activeObject = this._activeObject;\n const isAS = isActiveSelection(activeObject);\n if (\n // check if an active object exists on canvas and if the user is pressing the `selectionKey` while canvas supports multi selection.\n !!activeObject &&\n this._isSelectionKeyPressed(e) &&\n this.selection &&\n // on top of that the user also has to hit a target that is selectable.\n !!target &&\n target.selectable &&\n // group target and active object only if they are different objects\n // else we try to find a subtarget of `ActiveSelection`\n (activeObject !== target || isAS) &&\n // make sure `activeObject` and `target` aren't ancestors of each other in case `activeObject` is not `ActiveSelection`\n // if it is then we want to remove `target` from it\n (isAS ||\n (!target.isDescendantOf(activeObject) &&\n !activeObject.isDescendantOf(target))) &&\n // target accepts selection\n !target.onSelect({ e }) &&\n // make sure we are not on top of a control\n !activeObject.getActiveControl()\n ) {\n if (isAS) {\n const prevActiveObjects = activeObject.getObjects();\n if (target === activeObject) {\n const pointer = this.getViewportPoint(e);\n target =\n // first search active objects for a target to remove\n this.searchPossibleTargets(prevActiveObjects, pointer) ||\n // if not found, search under active selection for a target to add\n // `prevActiveObjects` will be searched but we already know they will not be found\n this.searchPossibleTargets(this._objects, pointer);\n // if nothing is found bail out\n if (!target || !target.selectable) {\n return false;\n }\n }\n if (target.group === activeObject) {\n // `target` is part of active selection => remove it\n activeObject.remove(target);\n this._hoveredTarget = target;\n this._hoveredTargets = [...this.targets];\n // if after removing an object we are left with one only...\n if (activeObject.size() === 1) {\n // activate last remaining object\n // deselecting the active selection will remove the remaining object from it\n this._setActiveObject(activeObject.item(0), e);\n }\n } else {\n // `target` isn't part of active selection => add it\n activeObject.multiSelectAdd(target);\n this._hoveredTarget = activeObject;\n this._hoveredTargets = [...this.targets];\n }\n this._fireSelectionEvents(prevActiveObjects, e);\n } else {\n (activeObject as IText).exitEditing &&\n (activeObject as IText).exitEditing();\n // add the active object and the target to the active selection and set it as the active object\n const klass =\n classRegistry.getClass<typeof ActiveSelection>('ActiveSelection');\n const newActiveSelection = new klass([], {\n /**\n * it is crucial to pass the canvas ref before calling {@link ActiveSelection#multiSelectAdd}\n * since it uses {@link FabricObject#isInFrontOf} which relies on the canvas ref\n */\n canvas: this,\n });\n newActiveSelection.multiSelectAdd(activeObject, target);\n this._hoveredTarget = newActiveSelection;\n // ISSUE 4115: should we consider subTargets here?\n // this._hoveredTargets = [];\n // this._hoveredTargets = this.targets.concat();\n this._setActiveObject(newActiveSelection, e);\n this._fireSelectionEvents([activeObject], e);\n }\n return true;\n }\n return false;\n }\n\n /**\n * ## Handles selection\n * - selects objects that are contained in (and possibly intersecting) the selection bounding box\n * - sets the active object\n * ---\n * runs on mouse up after a mouse move\n */\n protected handleSelection(e: TPointerEvent) {\n if (!this.selection || !this._groupSelector) {\n return false;\n }\n const { x, y, deltaX, deltaY } = this._groupSelector,\n point1 = new Point(x, y),\n point2 = point1.add(new Point(deltaX, deltaY)),\n tl = point1.min(point2),\n br = point1.max(point2),\n size = br.subtract(tl);\n\n const collectedObjects = this.collectObjects(\n {\n left: tl.x,\n top: tl.y,\n width: size.x,\n height: size.y,\n },\n { includeIntersecting: !this.selectionFullyContained },\n ) as FabricObject[];\n\n const objects =\n // though this method runs only after mouse move the pointer could do a mouse up on the same position as mouse down\n // should it be handled as is?\n point1.eq(point2)\n ? collectedObjects[0]\n ? [collectedObjects[0]]\n : []\n : collectedObjects.length > 1\n ? collectedObjects\n .filter((object) => !object.onSelect({ e }))\n .reverse()\n : // `setActiveObject` will call `onSelect(collectedObjects[0])` in this case\n collectedObjects;\n\n // set active object\n if (objects.length === 1) {\n // set as active object\n this.setActiveObject(objects[0], e);\n } else if (objects.length > 1) {\n // add to active selection and make it the active object\n const klass =\n classRegistry.getClass<typeof ActiveSelection>('ActiveSelection');\n this.setActiveObject(new klass(objects, { canvas: this }), e);\n }\n\n // cleanup\n this._groupSelector = null;\n return true;\n }\n\n /**\n * @override clear {@link textEditingManager}\n */\n clear() {\n this.textEditingManager.clear();\n super.clear();\n }\n\n /**\n * @override clear {@link textEditingManager}\n */\n destroy() {\n this.removeListeners();\n this.textEditingManager.dispose();\n super.destroy();\n }\n}\n"],"names":["addEventOptions","passive","getEventPoints","canvas","e","viewportPoint","getViewportPoint","scenePoint","getScenePoint","pointer","absolutePointer","addListener","el","_len","arguments","length","args","Array","_key","addEventListener","removeListener","_len2","_key2","removeEventListener","syntheticEventConfig","mouse","in","out","targetIn","targetOut","canvasIn","canvasOut","drag","Canvas","SelectableCanvas","constructor","super","undefined","_defineProperty","this","TextEditingManager","forEach","eventHandler","bind","addOrRemove","_getEventPrefix","enablePointerEvents","functor","_eventjsFunctor","canvasElement","upperCanvasEl","eventTypePrefix","getWindowFromElement","_onResize","_onMouseDown","concat","_onMouseMove","_onMouseOut","_onMouseEnter","_onMouseWheel","_onContextMenu","_onDoubleClick","_onDragStart","_onDragEnd","_onDragOver","_onDragEnter","_onDragLeave","_onDrop","_onTouchStart","removeListeners","doc","getDocumentFromElement","_onMouseUp","_onTouchEnd","__onMouseWheel","target","_hoveredTarget","shared","_objectSpread","fire","_hoveredTargets","nestedTarget","_currentTransform","findTarget","_isClick","activeObject","getActiveObject","onDragStart","_dragSource","options","_onDragProgress","stopEvent","_renderDragEffects","source","dirty","dropTarget","_dropTarget","clearContextTop","ctx","contextTop","save","transform","viewportTransform","renderDragSourceEffect","restore","renderDropTargetEffect","contextTopDirty","didDrop","dataTransfer","dropEffect","NONE","_activeObject","subTargets","targets","dragSource","_draggedoverTarget","findDragTargets","_searchPossibleTargets","_objects","eventType","canDrop","_fireEnterLeaveEvents","i","subTarget","_basicEventHandler","stopContextMenu","_cacheTransformEventData","_handleEvent","_resetTransformEventData","getPointerId","evt","changedTouches","identifier","pointerId","_isMainEvent","isPrimary","type","touches","mainTouchId","preventDefault","__onMouseDown","__onMouseUp","_willAddMouseDown","clearTimeout","setTimeout","allowTouchScrolling","shouldStartDragging","__onMouseMove","calcOffset","_shouldRender","_this$_activeObject","isClick","_target","button","fireMiddleClick","fireRightClick","isDrawingMode","_isCurrentlyDrawing","_onMouseUpInDrawingMode","corner","shouldRender","_finalizeCurrentTransform","actionPerformed","targetWasActive","handleSelection","found","findControl","isTouchEvent","key","control","selectable","activeOn","setActiveObject","mouseUpHandler","getMouseUpHandler","call","x","y","isMoving","originalControl","controls","originalMouseUpHandler","_setCursorFromEvent","_groupSelector","__corner","requestRenderAll","isEditing","renderTop","currentTarget","currentSubTargets","_onMouseDownInDrawingMode","discardActiveObject","freeDrawingBrush","onMouseDown","_onMouseMoveInDrawingMode","onMouseMove","setCursor","freeDrawingCursor","onMouseUp","grouped","handleMultiSelection","_shouldClearSelection","selection","p","deltaY","deltaX","alreadySelected","handle","_setupCurrentTransform","mouseDownHandler","getMouseDownHandler","_objectsToRender","_pointer","_absolutePointer","sendPointToPlane","groupSelector","_transformObject","_fireOverOutEvents","textEditingManager","Math","max","fireSyntheticInOutEvents","oldTarget","fireCanvas","data","draggedoverTarget","_ref","_objectWithoutProperties","_excluded","targetChanged","outOpt","nextTarget","inOpt","previousTarget","localPointer","group","calcTransformMatrix","shiftKey","altKey","centeredKey","_performTransformAction","action","actionHandler","setCoords","moveCursor","defaultCursor","hoverCursor","activeSelection","isActiveSelection","cursorStyleHandler","subTargetCheck","reverse","map","isAS","_isSelectionKeyPressed","isDescendantOf","onSelect","getActiveControl","prevActiveObjects","getObjects","searchPossibleTargets","remove","size","_setActiveObject","item","multiSelectAdd","_fireSelectionEvents","exitEditing","newActiveSelection","classRegistry","getClass","point1","Point","point2","add","tl","min","subtract","collectedObjects","collectObjects","left","top","width","height","includeIntersecting","selectionFullyContained","objects","eq","filter","object","klass","clear","destroy","dispose"],"mappings":"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"}
@@ -98,6 +98,7 @@ class Canvas extends SelectableCanvas {
98
98
  // '_onLongPress',
99
99
  // '_onOrientationChange',
100
100
  '_onMouseWheel', '_onMouseOut', '_onMouseEnter', '_onContextMenu', '_onDoubleClick', '_onDragStart', '_onDragEnd', '_onDragProgress', '_onDragOver', '_onDragEnter', '_onDragLeave', '_onDrop'].forEach(eventHandler => {
101
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
101
102
  this[eventHandler] = this[eventHandler].bind(this);
102
103
  });
103
104
  // register event handlers
@@ -111,7 +112,7 @@ class Canvas extends SelectableCanvas {
111
112
  _getEventPrefix() {
112
113
  return this.enablePointerEvents ? 'pointer' : 'mouse';
113
114
  }
114
- addOrRemove(functor, eventjsFunctor) {
115
+ addOrRemove(functor, _eventjsFunctor) {
115
116
  const canvasElement = this.upperCanvasEl,
116
117
  eventTypePrefix = this._getEventPrefix();
117
118
  functor(getWindowFromElement(canvasElement), 'resize', this._onResize);