fabric 5.3.0 → 6.0.0-beta1

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 (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -0,0 +1,126 @@
1
+ import type { Constructor } from './typedefs';
2
+ import type { BaseFabricObject } from './EventTypeDefs';
3
+ export declare function createCollectionMixin<TBase extends Constructor>(Base: TBase): {
4
+ new (...args: any[]): {
5
+ /**
6
+ * @type {BaseFabricObject[]}
7
+ * @TODO needs to end up in the constructor too
8
+ */
9
+ _objects: BaseFabricObject[];
10
+ _onObjectAdded(object: BaseFabricObject): void;
11
+ _onObjectRemoved(object: BaseFabricObject): void;
12
+ _onStackOrderChanged(object: BaseFabricObject): void;
13
+ /**
14
+ * Adds objects to collection
15
+ * Objects should be instances of (or inherit from) BaseFabricObject
16
+ * @param {...BaseFabricObject[]} objects to add
17
+ * @returns {number} new array length
18
+ */
19
+ add(...objects: BaseFabricObject[]): number;
20
+ /**
21
+ * Inserts an object into collection at specified index
22
+ * @param {number} index Index to insert object at
23
+ * @param {...BaseFabricObject[]} objects Object(s) to insert
24
+ * @returns {number} new array length
25
+ */
26
+ insertAt(index: number, ...objects: BaseFabricObject[]): number;
27
+ /**
28
+ * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)
29
+ * @private
30
+ * @param {...BaseFabricObject[]} objects objects to remove
31
+ * @returns {BaseFabricObject[]} removed objects
32
+ */
33
+ remove(...objects: BaseFabricObject[]): BaseFabricObject[];
34
+ /**
35
+ * Executes given function for each object in this group
36
+ * A simple shortcut for getObjects().forEach, before es6 was more complicated,
37
+ * now is just a shortcut.
38
+ * @param {Function} callback
39
+ * Callback invoked with current object as first argument,
40
+ * index - as second and an array of all objects - as third.
41
+ */
42
+ forEachObject(callback: (object: BaseFabricObject, index: number, array: BaseFabricObject[]) => any): void;
43
+ /**
44
+ * Returns an array of children objects of this instance
45
+ * @param {...String} [types] When specified, only objects of these types are returned
46
+ * @return {Array}
47
+ */
48
+ getObjects(...types: string[]): BaseFabricObject[];
49
+ /**
50
+ * Returns object at specified index
51
+ * @param {Number} index
52
+ * @return {Object} object at index
53
+ */
54
+ item(index: number): BaseFabricObject;
55
+ /**
56
+ * Returns true if collection contains no objects
57
+ * @return {Boolean} true if collection is empty
58
+ */
59
+ isEmpty(): boolean;
60
+ /**
61
+ * Returns a size of a collection (i.e: length of an array containing its objects)
62
+ * @return {Number} Collection size
63
+ */
64
+ size(): number;
65
+ /**
66
+ * Returns true if collection contains an object.\
67
+ * **Prefer using {@link `BaseFabricObject#isDescendantOf`} for performance reasons**
68
+ * instead of `a.contains(b)` use `b.isDescendantOf(a)`
69
+ * @param {Object} object Object to check against
70
+ * @param {Boolean} [deep=false] `true` to check all descendants, `false` to check only `_objects`
71
+ * @return {Boolean} `true` if collection contains an object
72
+ */
73
+ contains(object: BaseFabricObject, deep?: boolean): boolean;
74
+ /**
75
+ * Returns number representation of a collection complexity
76
+ * @return {Number} complexity
77
+ */
78
+ complexity(): number;
79
+ /**
80
+ * Moves an object or the objects of a multiple selection
81
+ * to the bottom of the stack of drawn objects
82
+ * @param {fabric.Object} object Object to send to back
83
+ * @returns {boolean} true if change occurred
84
+ */
85
+ sendObjectToBack(object: BaseFabricObject): boolean;
86
+ /**
87
+ * Moves an object or the objects of a multiple selection
88
+ * to the top of the stack of drawn objects
89
+ * @param {fabric.Object} object Object to send
90
+ * @returns {boolean} true if change occurred
91
+ */
92
+ bringObjectToFront(object: BaseFabricObject): boolean;
93
+ /**
94
+ * Moves an object or a selection down in stack of drawn objects
95
+ * An optional parameter, `intersecting` allows to move the object in behind
96
+ * the first intersecting object. Where intersection is calculated with
97
+ * bounding box. If no intersection is found, there will not be change in the
98
+ * stack.
99
+ * @param {fabric.Object} object Object to send
100
+ * @param {boolean} [intersecting] If `true`, send object behind next lower intersecting object
101
+ * @returns {boolean} true if change occurred
102
+ */
103
+ sendObjectBackwards(object: BaseFabricObject, intersecting?: boolean): boolean;
104
+ /**
105
+ * Moves an object or a selection up in stack of drawn objects
106
+ * An optional parameter, intersecting allows to move the object in front
107
+ * of the first intersecting object. Where intersection is calculated with
108
+ * bounding box. If no intersection is found, there will not be change in the
109
+ * stack.
110
+ * @param {fabric.Object} object Object to send
111
+ * @param {boolean} [intersecting] If `true`, send object in front of next upper intersecting object
112
+ * @returns {boolean} true if change occurred
113
+ */
114
+ bringObjectForward(object: BaseFabricObject, intersecting?: boolean): boolean;
115
+ /**
116
+ * Moves an object to specified level in stack of drawn objects
117
+ * @param {fabric.Object} object Object to send
118
+ * @param {number} index Position to move to
119
+ * @returns {boolean} true if change occurred
120
+ */
121
+ moveObjectTo(object: BaseFabricObject, index: number): boolean;
122
+ findNewLowerIndex(object: BaseFabricObject, idx: number, intersecting?: boolean): number;
123
+ findNewUpperIndex(object: BaseFabricObject, idx: number, intersecting?: boolean): number;
124
+ };
125
+ } & TBase;
126
+ //# sourceMappingURL=Collection.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { Observable } from './Observable';
2
+ export declare class CommonMethods<EventSpec> extends Observable<EventSpec> {
3
+ /**
4
+ * Sets object's properties from options, for initialization only
5
+ * @protected
6
+ * @param {Object} [options] Options object
7
+ */
8
+ protected _setOptions(options?: any): void;
9
+ /**
10
+ * @private
11
+ */
12
+ _setObject(obj: Record<string, any>): void;
13
+ /**
14
+ * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.
15
+ * @param {String|Object} key Property name or object (if object, iterate over the object properties)
16
+ * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)
17
+ */
18
+ set(key: string | Record<string, any>, value?: any): this;
19
+ _set(key: string, value: any): void;
20
+ /**
21
+ * Toggles specified property from `true` to `false` or from `false` to `true`
22
+ * @param {String} property Property to toggle
23
+ */
24
+ toggle(property: string): this;
25
+ /**
26
+ * Basic getter
27
+ * @param {String} property Property name
28
+ * @return {*} value of a property
29
+ */
30
+ get(property: string): any;
31
+ }
32
+ //# sourceMappingURL=CommonMethods.d.ts.map
@@ -0,0 +1,226 @@
1
+ import type { Control } from './controls/Control';
2
+ import type { Point } from './Point';
3
+ import type { FabricObject } from './shapes/Object/FabricObject';
4
+ import type { FabricObject as StaticFabricObject } from './shapes/Object/Object';
5
+ import type { FabricObjectSVGExportMixin } from './shapes/Object/FabricObjectSVGExportMixin';
6
+ import type { Group } from './shapes/Group';
7
+ import type { TOriginX, TOriginY, TRadian } from './typedefs';
8
+ import type { saveObjectTransform } from './util/misc/objectTransforms';
9
+ import type { Canvas } from './canvas/Canvas';
10
+ import type { IText } from './shapes/IText/IText';
11
+ import type { StaticCanvas } from './canvas/StaticCanvas';
12
+ export interface BaseFabricObject extends StaticFabricObject, FabricObjectSVGExportMixin {
13
+ }
14
+ export type ModifierKey = keyof Pick<MouseEvent | PointerEvent | TouchEvent, 'altKey' | 'shiftKey' | 'ctrlKey' | 'metaKey'>;
15
+ export type TOptionalModifierKey = ModifierKey | null | undefined;
16
+ export type TPointerEvent = MouseEvent | TouchEvent | PointerEvent;
17
+ export type TransformAction<T extends Transform = Transform, R = void> = (eventData: TPointerEvent, transform: T, x: number, y: number) => R;
18
+ /**
19
+ * Control handlers that define a transformation
20
+ * Those handlers run when the user starts a transform and during a transform
21
+ */
22
+ export type TransformActionHandler<T extends Transform = Transform> = TransformAction<T, boolean>;
23
+ /**
24
+ * Control handlers that run on control click/down/up
25
+ * Those handlers run with or without a transform defined
26
+ */
27
+ export type ControlActionHandler = TransformAction<Transform, any>;
28
+ export type ControlCallback<R = void> = (eventData: TPointerEvent, control: Control, fabricObject: FabricObject) => R;
29
+ export type ControlCursorCallback = ControlCallback<string>;
30
+ /**
31
+ * relative to target's containing coordinate plane
32
+ * both agree on every point
33
+ */
34
+ export type Transform = {
35
+ target: FabricObject;
36
+ action: string;
37
+ actionHandler?: TransformActionHandler;
38
+ corner: string | 0;
39
+ scaleX: number;
40
+ scaleY: number;
41
+ skewX: number;
42
+ skewY: number;
43
+ offsetX: number;
44
+ offsetY: number;
45
+ originX: TOriginX;
46
+ originY: TOriginY;
47
+ ex: number;
48
+ ey: number;
49
+ lastX: number;
50
+ lastY: number;
51
+ theta: TRadian;
52
+ width: number;
53
+ height: number;
54
+ shiftKey: boolean;
55
+ altKey: boolean;
56
+ original: ReturnType<typeof saveObjectTransform> & {
57
+ originX: TOriginX;
58
+ originY: TOriginY;
59
+ };
60
+ actionPerformed: boolean;
61
+ };
62
+ export type TEvent<E extends Event = TPointerEvent> = {
63
+ e: E;
64
+ };
65
+ type TEventWithTarget<E extends Event = TPointerEvent> = TEvent<E> & {
66
+ target: FabricObject;
67
+ };
68
+ export type BasicTransformEvent<E extends Event = TPointerEvent> = TEvent<E> & {
69
+ transform: Transform;
70
+ pointer: Point;
71
+ };
72
+ export type TModificationEvents = 'moving' | 'scaling' | 'rotating' | 'skewing' | 'resizing';
73
+ export type ModifiedEvent<E extends Event = TPointerEvent> = TEvent<E> & {
74
+ transform: Transform;
75
+ target: FabricObject;
76
+ action: string;
77
+ };
78
+ type ModificationEventsSpec<Prefix extends string = '', Modification = BasicTransformEvent, Modified = ModifiedEvent | never> = Record<`${Prefix}${TModificationEvents}`, Modification> & Record<`${Prefix}modified`, Modified>;
79
+ type ObjectModificationEvents = ModificationEventsSpec;
80
+ type CanvasModificationEvents = ModificationEventsSpec<'object:', BasicTransformEvent & {
81
+ target: FabricObject;
82
+ }, ModifiedEvent | {
83
+ target: FabricObject;
84
+ }> & {
85
+ 'before:transform': TEvent & {
86
+ transform: Transform;
87
+ };
88
+ };
89
+ export type TPointerEventInfo<E extends TPointerEvent = TPointerEvent> = TEvent<E> & {
90
+ target?: FabricObject;
91
+ subTargets?: FabricObject[];
92
+ button?: number;
93
+ isClick: boolean;
94
+ pointer: Point;
95
+ transform?: Transform | null;
96
+ absolutePointer: Point;
97
+ currentSubTargets?: FabricObject[];
98
+ currentTarget?: FabricObject | null;
99
+ };
100
+ type SimpleEventHandler<T extends Event = TPointerEvent> = TEvent<T> & {
101
+ target?: FabricObject;
102
+ subTargets: FabricObject[];
103
+ };
104
+ type InEvent = {
105
+ previousTarget?: FabricObject;
106
+ };
107
+ type OutEvent = {
108
+ nextTarget?: FabricObject;
109
+ };
110
+ export type DragEventData = TEvent<DragEvent> & {
111
+ target?: FabricObject;
112
+ subTargets?: FabricObject[];
113
+ dragSource?: FabricObject;
114
+ canDrop?: boolean;
115
+ didDrop?: boolean;
116
+ dropTarget?: FabricObject;
117
+ };
118
+ export type DropEventData = DragEventData & {
119
+ pointer: Point;
120
+ };
121
+ type DnDEvents = {
122
+ dragstart: TEventWithTarget<DragEvent>;
123
+ drag: DragEventData;
124
+ dragover: DragEventData;
125
+ dragenter: DragEventData & InEvent;
126
+ dragleave: DragEventData & OutEvent;
127
+ dragend: DragEventData;
128
+ 'drop:before': DropEventData;
129
+ drop: DropEventData;
130
+ 'drop:after': DropEventData;
131
+ };
132
+ type CanvasDnDEvents = DnDEvents & {
133
+ 'drag:enter': DragEventData & InEvent;
134
+ 'drag:leave': DragEventData & OutEvent;
135
+ };
136
+ type CanvasSelectionEvents = {
137
+ 'selection:created': Partial<TEvent> & {
138
+ selected: FabricObject[];
139
+ };
140
+ 'selection:updated': Partial<TEvent> & {
141
+ selected: FabricObject[];
142
+ deselected: FabricObject[];
143
+ };
144
+ 'before:selection:cleared': Partial<TEvent> & {
145
+ deselected: FabricObject[];
146
+ };
147
+ 'selection:cleared': Partial<TEvent> & {
148
+ deselected: FabricObject[];
149
+ };
150
+ };
151
+ export type CollectionEvents = {
152
+ 'object:added': {
153
+ target: StaticFabricObject;
154
+ };
155
+ 'object:removed': {
156
+ target: StaticFabricObject;
157
+ };
158
+ };
159
+ type BeforeSuffix<T extends string> = `${T}:before`;
160
+ type WithBeforeSuffix<T extends string> = T | BeforeSuffix<T>;
161
+ type TPointerEvents<Prefix extends string> = Record<`${Prefix}${WithBeforeSuffix<'down'> | WithBeforeSuffix<'move'> | WithBeforeSuffix<'up'> | 'dblclick'}`, TPointerEventInfo> & Record<`${Prefix}wheel`, TPointerEventInfo<WheelEvent>> & Record<`${Prefix}over`, TPointerEventInfo & InEvent> & Record<`${Prefix}out`, TPointerEventInfo & OutEvent>;
162
+ export type TPointerEventNames = WithBeforeSuffix<'down'> | WithBeforeSuffix<'move'> | WithBeforeSuffix<'up'> | 'dblclick' | 'wheel';
163
+ export type ObjectPointerEvents = TPointerEvents<'mouse'>;
164
+ export type CanvasPointerEvents = TPointerEvents<'mouse:'>;
165
+ export type MiscEvents = {
166
+ 'contextmenu:before': SimpleEventHandler<Event>;
167
+ contextmenu: SimpleEventHandler<Event>;
168
+ };
169
+ export type ObjectEvents = ObjectPointerEvents & DnDEvents & MiscEvents & ObjectModificationEvents & {
170
+ selected: Partial<TEvent> & {
171
+ target: FabricObject;
172
+ };
173
+ deselected: Partial<TEvent> & {
174
+ target: FabricObject;
175
+ };
176
+ added: {
177
+ target: Group | Canvas | StaticCanvas;
178
+ };
179
+ removed: {
180
+ target: Group | Canvas | StaticCanvas;
181
+ };
182
+ 'erasing:end': {
183
+ path: FabricObject;
184
+ };
185
+ };
186
+ export type StaticCanvasEvents = CollectionEvents & {
187
+ 'canvas:cleared': never;
188
+ 'before:render': {
189
+ ctx: CanvasRenderingContext2D;
190
+ };
191
+ 'after:render': {
192
+ ctx: CanvasRenderingContext2D;
193
+ };
194
+ };
195
+ export type CanvasEvents = StaticCanvasEvents & CanvasPointerEvents & CanvasDnDEvents & MiscEvents & CanvasModificationEvents & CanvasSelectionEvents & {
196
+ 'before:path:created': {
197
+ path: FabricObject;
198
+ };
199
+ 'path:created': {
200
+ path: FabricObject;
201
+ };
202
+ 'erasing:start': never;
203
+ 'erasing:end': never | {
204
+ path: FabricObject;
205
+ targets: FabricObject[];
206
+ subTargets: FabricObject[];
207
+ drawables: {
208
+ backgroundImage?: FabricObject;
209
+ overlayImage?: FabricObject;
210
+ };
211
+ };
212
+ 'text:selection:changed': {
213
+ target: IText;
214
+ };
215
+ 'text:changed': {
216
+ target: IText;
217
+ };
218
+ 'text:editing:entered': {
219
+ target: IText;
220
+ };
221
+ 'text:editing:exited': {
222
+ target: IText;
223
+ };
224
+ };
225
+ export {};
226
+ //# sourceMappingURL=EventTypeDefs.d.ts.map
@@ -0,0 +1,100 @@
1
+ import { Point } from './Point';
2
+ export type IntersectionType = 'Intersection' | 'Coincident' | 'Parallel';
3
+ export declare class Intersection {
4
+ points: Point[];
5
+ status?: IntersectionType;
6
+ constructor(status?: IntersectionType);
7
+ /**
8
+ * Used to verify if a point is alredy in the collection
9
+ * @param {Point} point
10
+ * @returns {boolean}
11
+ */
12
+ private includes;
13
+ /**
14
+ * Appends points of intersection
15
+ * @param {...Point[]} points
16
+ * @return {Intersection} thisArg
17
+ * @chainable
18
+ */
19
+ private append;
20
+ /**
21
+ * Checks if a line intersects another
22
+ * @static
23
+ * @param {Point} a1
24
+ * @param {Point} a2
25
+ * @param {Point} b1
26
+ * @param {Point} b2
27
+ * @param {boolean} [aInfinite=true] check segment intersection by passing `false`
28
+ * @param {boolean} [bInfinite=true] check segment intersection by passing `false`
29
+ * @return {Intersection}
30
+ */
31
+ static intersectLineLine(a1: Point, a2: Point, b1: Point, b2: Point, aInfinite?: boolean, bInfinite?: boolean): Intersection;
32
+ /**
33
+ * Checks if a segment intersects a line
34
+ * @see {@link intersectLineLine} for line intersection
35
+ * @static
36
+ * @param {Point} s1 boundary point of segment
37
+ * @param {Point} s2 other boundary point of segment
38
+ * @param {Point} l1 point on line
39
+ * @param {Point} l2 other point on line
40
+ * @return {Intersection}
41
+ */
42
+ static intersectSegmentLine(s1: Point, s2: Point, l1: Point, l2: Point): Intersection;
43
+ /**
44
+ * Checks if a segment intersects another
45
+ * @see {@link intersectLineLine} for line intersection
46
+ * @static
47
+ * @param {Point} a1 boundary point of segment
48
+ * @param {Point} a2 other boundary point of segment
49
+ * @param {Point} b1 boundary point of segment
50
+ * @param {Point} b2 other boundary point of segment
51
+ * @return {Intersection}
52
+ */
53
+ static intersectSegmentSegment(a1: Point, a2: Point, b1: Point, b2: Point): Intersection;
54
+ /**
55
+ * Checks if line intersects polygon
56
+ *
57
+ * @todo account for stroke
58
+ *
59
+ * @static
60
+ * @see {@link intersectSegmentPolygon} for segment intersection
61
+ * @param {Point} a1 point on line
62
+ * @param {Point} a2 other point on line
63
+ * @param {Point[]} points polygon points
64
+ * @param {boolean} [infinite=true] check segment intersection by passing `false`
65
+ * @return {Intersection}
66
+ */
67
+ static intersectLinePolygon(a1: Point, a2: Point, points: Point[], infinite?: boolean): Intersection;
68
+ /**
69
+ * Checks if segment intersects polygon
70
+ * @static
71
+ * @see {@link intersectLinePolygon} for line intersection
72
+ * @param {Point} a1 boundary point of segment
73
+ * @param {Point} a2 other boundary point of segment
74
+ * @param {Point[]} points polygon points
75
+ * @return {Intersection}
76
+ */
77
+ static intersectSegmentPolygon(a1: Point, a2: Point, points: Point[]): Intersection;
78
+ /**
79
+ * Checks if polygon intersects another polygon
80
+ *
81
+ * @todo account for stroke
82
+ *
83
+ * @static
84
+ * @param {Point[]} points1
85
+ * @param {Point[]} points2
86
+ * @return {Intersection}
87
+ */
88
+ static intersectPolygonPolygon(points1: Point[], points2: Point[]): Intersection;
89
+ /**
90
+ * Checks if polygon intersects rectangle
91
+ * @static
92
+ * @see {@link intersectPolygonPolygon} for polygon intersection
93
+ * @param {Point[]} points polygon points
94
+ * @param {Point} r1 top left point of rect
95
+ * @param {Point} r2 bottom right point of rect
96
+ * @return {Intersection}
97
+ */
98
+ static intersectPolygonRectangle(points: Point[], r1: Point, r2: Point): Intersection;
99
+ }
100
+ //# sourceMappingURL=Intersection.d.ts.map
@@ -0,0 +1,54 @@
1
+ export type TEventCallback<T = any> = (options: T) => any;
2
+ type EventRegistryObject<K extends string | number | symbol = string, E = any> = Record<K, TEventCallback<E>>;
3
+ /**
4
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}
5
+ * @see {@link http://fabricjs.com/events|Events demo}
6
+ */
7
+ export declare class Observable<EventSpec> {
8
+ private __eventListeners;
9
+ /**
10
+ * Observes specified event
11
+ * @alias on
12
+ * @param {string} eventName Event name (eg. 'after:render')
13
+ * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})
14
+ * @param {Function} handler Function that receives a notification when an event of the specified type occurs
15
+ * @return {Function} disposer
16
+ */
17
+ on<K extends keyof EventSpec, E extends EventSpec[K]>(eventName: K, handler: TEventCallback<E>): VoidFunction;
18
+ on<K extends string, E>(eventName: K, handler: TEventCallback<E>): VoidFunction;
19
+ on<K extends keyof EventSpec, E extends EventSpec[K]>(handlers: EventRegistryObject<K, E>): VoidFunction;
20
+ /**
21
+ * Observes specified event **once**
22
+ * @alias once
23
+ * @param {string} eventName Event name (eg. 'after:render')
24
+ * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})
25
+ * @param {Function} handler Function that receives a notification when an event of the specified type occurs
26
+ * @return {Function} disposer
27
+ */
28
+ once<K extends keyof EventSpec, E extends EventSpec[K]>(eventName: K, handler: TEventCallback<E>): VoidFunction;
29
+ once<K extends string, E>(eventName: K, handler: TEventCallback<E>): VoidFunction;
30
+ once<K extends keyof EventSpec, E extends EventSpec[K]>(handlers: EventRegistryObject<K, E>): VoidFunction;
31
+ /**
32
+ * @private
33
+ * @param {string} eventName
34
+ * @param {Function} [handler]
35
+ */
36
+ private _removeEventListener;
37
+ /**
38
+ * Stops event observing for a particular event handler. Calling this method
39
+ * without arguments removes all handlers for all events
40
+ * @param {string} eventName Event name (eg. 'after:render')
41
+ * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})
42
+ * @param {Function} handler Function to be deleted from EventListeners
43
+ */
44
+ off<K extends keyof EventSpec>(eventName: K, handler: TEventCallback): void;
45
+ off(handlers: EventRegistryObject): void;
46
+ /**
47
+ * Fires event with an optional options object
48
+ * @param {String} eventName Event name to fire
49
+ * @param {Object} [options] Options object
50
+ */
51
+ fire<K extends keyof EventSpec>(eventName: K, options?: EventSpec[K]): void;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=Observable.d.ts.map
@@ -0,0 +1,104 @@
1
+ import { TCrossOrigin, TMat2D, TSize } from './typedefs';
2
+ export type TPatternRepeat = 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat';
3
+ type TExportedKeys = 'crossOrigin' | 'offsetX' | 'offsetY' | 'patternTransform' | 'repeat' | 'source';
4
+ export type TPatternOptions = Partial<Pick<Pattern, TExportedKeys>>;
5
+ export type TPatternSerialized = TPatternOptions & {
6
+ source: string;
7
+ };
8
+ export type TPatternHydrationOptions = {
9
+ /**
10
+ * handle aborting
11
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
12
+ */
13
+ signal?: AbortSignal;
14
+ };
15
+ type TImageSource = {
16
+ source: HTMLImageElement;
17
+ };
18
+ type TCanvasSource = {
19
+ source: HTMLCanvasElement;
20
+ };
21
+ /**
22
+ * @see {@link http://fabricjs.com/patterns demo}
23
+ * @see {@link http://fabricjs.com/dynamic-patterns demo}
24
+ */
25
+ export declare class Pattern {
26
+ type: string;
27
+ /**
28
+ * @type TPatternRepeat
29
+ * @defaults
30
+ */
31
+ repeat: TPatternRepeat;
32
+ /**
33
+ * Pattern horizontal offset from object's left/top corner
34
+ * @type Number
35
+ * @default
36
+ */
37
+ offsetX: number;
38
+ /**
39
+ * Pattern vertical offset from object's left/top corner
40
+ * @type Number
41
+ * @default
42
+ */
43
+ offsetY: number;
44
+ /**
45
+ * @type TCrossOrigin
46
+ * @default
47
+ */
48
+ crossOrigin: TCrossOrigin;
49
+ /**
50
+ * transform matrix to change the pattern, imported from svgs.
51
+ * @todo verify if using the identity matrix as default makes the rest of the code more easy
52
+ * @type Array
53
+ * @default
54
+ */
55
+ patternTransform: TMat2D | null;
56
+ /**
57
+ * The actual pixel source of the pattern
58
+ */
59
+ source: CanvasImageSource;
60
+ /**
61
+ * If true, this object will not be exported during the serialization of a canvas
62
+ * @type boolean
63
+ */
64
+ excludeFromExport?: boolean;
65
+ /**
66
+ * ID used for SVG export functionalities
67
+ * @type number
68
+ */
69
+ readonly id: number;
70
+ /**
71
+ * Constructor
72
+ * @param {Object} [options] Options object
73
+ * @param {option.source} [source] the pattern source, eventually empty or a drawable
74
+ */
75
+ constructor(options?: TPatternOptions);
76
+ /**
77
+ * @returns true if {@link source} is an <img> element
78
+ */
79
+ isImageSource(): this is TImageSource;
80
+ /**
81
+ * @returns true if {@link source} is a <canvas> element
82
+ */
83
+ isCanvasSource(): this is TCanvasSource;
84
+ sourceToString(): string;
85
+ /**
86
+ * Returns an instance of CanvasPattern
87
+ * @param {CanvasRenderingContext2D} ctx Context to create pattern
88
+ * @return {CanvasPattern}
89
+ */
90
+ toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null;
91
+ /**
92
+ * Returns object representation of a pattern
93
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
94
+ * @return {object} Object representation of a pattern instance
95
+ */
96
+ toObject(propertiesToInclude?: string[]): Record<string, any>;
97
+ /**
98
+ * Returns SVG representation of a pattern
99
+ */
100
+ toSVG({ width, height }: TSize): string;
101
+ static fromObject({ source, ...serialized }: TPatternSerialized, options: TPatternHydrationOptions): Promise<Pattern>;
102
+ }
103
+ export {};
104
+ //# sourceMappingURL=Pattern.d.ts.map