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,5 @@
1
+ import { Point } from '../Point';
2
+ export declare const getPointer: (event: any) => Point;
3
+ export declare const isTouchEvent: (event: any) => boolean;
4
+ export declare const stopEvent: (e: Event) => void;
5
+ //# sourceMappingURL=dom_event.d.ts.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Wraps element with another element
3
+ * @param {HTMLElement} element Element to wrap
4
+ * @param {HTMLElement|String} wrapper Element to wrap with
5
+ * @param {Object} [attributes] Attributes to set on a wrapper
6
+ * @return {HTMLElement} wrapper
7
+ */
8
+ export declare function wrapElement(element: any, wrapper: any): any;
9
+ /**
10
+ * Returns element scroll offsets
11
+ * @param {HTMLElement} element Element to operate on
12
+ * @return {Object} Object with left/top values
13
+ */
14
+ export declare function getScrollLeftTop(element: any): {
15
+ left: number;
16
+ top: number;
17
+ };
18
+ /**
19
+ * Returns offset for a given element
20
+ * @param {HTMLElement} element Element to get offset for
21
+ * @return {Object} Object with "left" and "top" properties
22
+ */
23
+ export declare function getElementOffset(element: any): {
24
+ left: number;
25
+ top: number;
26
+ };
27
+ /**
28
+ * Makes element unselectable
29
+ * @param {HTMLElement} element Element to make unselectable
30
+ * @return {HTMLElement} Element that was passed in
31
+ */
32
+ export declare function makeElementUnselectable(element: any): any;
33
+ /**
34
+ * Makes element selectable
35
+ * @param {HTMLElement} element Element to make selectable
36
+ * @return {HTMLElement} Element that was passed in
37
+ */
38
+ export declare function makeElementSelectable(element: any): any;
39
+ export declare function cleanUpJsdomNode(element: any): void;
40
+ //# sourceMappingURL=dom_misc.d.ts.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cross-browser abstraction for sending XMLHttpRequest
3
+ * @deprecated this has to go away, we can use a modern browser method to do the same.
4
+ * @param {String} url URL to send XMLHttpRequest to
5
+ * @param {Object} [options] Options object
6
+ * @param {String} [options.method="GET"]
7
+ * @param {Record<string, string>} [options.parameters] parameters to append to url in GET or in body
8
+ * @param {String} [options.body] body to send with POST or PUT request
9
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
10
+ * @param {Function} options.onComplete Callback to invoke when request is completed
11
+ * @return {XMLHttpRequest} request
12
+ */
13
+ export declare function request(url: any, options?: {}): any;
14
+ //# sourceMappingURL=dom_request.d.ts.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * wrapper for setting element's style
3
+ * @param {HTMLElement} element
4
+ * @param {Object | string} styles
5
+ */
6
+ export declare function setStyle(element: any, styles: any): void;
7
+ //# sourceMappingURL=dom_style.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { BasicTransformEvent, TModificationEvents } from '../EventTypeDefs';
2
+ export declare const fireEvent: (eventName: TModificationEvents, options: BasicTransformEvent) => void;
3
+ //# sourceMappingURL=fireEvent.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const cloneDeep: <T extends object>(object: T) => T;
2
+ //# sourceMappingURL=cloneDeep.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns random number between 2 specified ones.
3
+ * @param {Number} min lower limit
4
+ * @param {Number} max upper limit
5
+ * @return {Number} random value (between min and max)
6
+ */
7
+ export declare const getRandomInt: (min: number, max: number) => number;
8
+ //# sourceMappingURL=getRandomInt.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param value value to check if NaN
4
+ * @param [valueIfNaN]
5
+ * @returns `fallback` is `value is NaN
6
+ */
7
+ export declare const ifNaN: (value: number, valueIfNaN?: number) => number;
8
+ //# sourceMappingURL=ifNaN.d.ts.map
@@ -0,0 +1,4 @@
1
+ export { getRandomInt } from './getRandomInt';
2
+ export { ifNaN } from './ifNaN';
3
+ export { removeFromArray } from './removeFromArray';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Removes value from an array.
3
+ * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`
4
+ * @param {Array} array
5
+ * @param {*} value
6
+ * @return {Array} original array
7
+ */
8
+ export declare const removeFromArray: <T>(array: T[], value: T) => T[];
9
+ //# sourceMappingURL=removeFromArray.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const uid: () => number;
2
+ //# sourceMappingURL=uid.d.ts.map
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Helper for creation of "classes".
3
+ * @param {Function} [parent] optional "Class" to inherit from
4
+ * @param {Object} [properties] Properties shared by all instances of this class
5
+ * (be careful modifying objects defined here as this would affect all instances)
6
+ */
7
+ export declare function createClass(...args: any[]): {
8
+ (...klassArgs: any[]): void;
9
+ superclass: any;
10
+ prototype: any;
11
+ };
12
+ //# sourceMappingURL=lang_class.d.ts.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Capitalizes a string
3
+ * @param {String} string String to capitalize
4
+ * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized
5
+ * and other letters stay untouched, if false first letter is capitalized
6
+ * and other letters are converted to lowercase.
7
+ * @return {String} Capitalized version of a string
8
+ */
9
+ export declare const capitalize: (string: string, firstLetterOnly?: boolean) => string;
10
+ /**
11
+ * Escapes XML in a string
12
+ * @param {String} string String to escape
13
+ * @return {String} Escaped version of a string
14
+ */
15
+ export declare const escapeXml: (string: string) => string;
16
+ /**
17
+ * Divide a string in the user perceived single units
18
+ * @param {String} textstring String to escape
19
+ * @return {Array} array containing the graphemes
20
+ */
21
+ export declare const graphemeSplit: (textstring: string) => string[];
22
+ //# sourceMappingURL=lang_string.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { IPoint } from '../../Point';
2
+ import { TBBox } from '../../typedefs';
3
+ /**
4
+ * Calculates bounding box (left, top, width, height) from given `points`
5
+ * @param {IPoint[]} points
6
+ * @return {Object} Object with left, top, width, height properties
7
+ */
8
+ export declare const makeBoundingBoxFromPoints: (points: IPoint[]) => TBBox;
9
+ //# sourceMappingURL=boundingBoxFromPoints.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const capValue: (min: number, value: number, max: number) => number;
2
+ //# sourceMappingURL=capValue.d.ts.map
@@ -0,0 +1,10 @@
1
+ import type { TRadian } from '../../typedefs';
2
+ /**
3
+ * Calculate the cos of an angle, avoiding returning floats for known results
4
+ * This function is here just to avoid getting 0.999999999999999 when dealing
5
+ * with numbers that are really 1 or 0.
6
+ * @param {TRadian} angle the angle
7
+ * @return {Number} the cosin value for angle.
8
+ */
9
+ export declare const cos: (angle: TRadian) => number;
10
+ //# sourceMappingURL=cos.d.ts.map
@@ -0,0 +1,28 @@
1
+ import { ImageFormat } from '../../typedefs';
2
+ /**
3
+ * Creates canvas element
4
+ * @return {CanvasElement} initialized canvas element
5
+ */
6
+ export declare const createCanvasElement: () => HTMLCanvasElement;
7
+ /**
8
+ * Creates image element (works on client and node)
9
+ * @return {HTMLImageElement} HTML image element
10
+ */
11
+ export declare const createImage: () => HTMLImageElement;
12
+ /**
13
+ * Creates a canvas element that is a copy of another and is also painted
14
+ * @param {CanvasElement} canvas to copy size and content of
15
+ * @return {CanvasElement} initialized canvas element
16
+ */
17
+ export declare const copyCanvasElement: (canvas: HTMLCanvasElement) => HTMLCanvasElement;
18
+ /**
19
+ * since 2.6.0 moved from canvas instance to utility.
20
+ * possibly useless
21
+ * @param {CanvasElement} canvasEl to copy size and content of
22
+ * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too
23
+ * @param {Number} quality <= 1 and > 0
24
+ * @return {String} data url
25
+ */
26
+ export declare const toDataURL: (canvasEl: HTMLCanvasElement, format: ImageFormat, quality: number) => string;
27
+ export declare const isHTMLCanvas: (canvas: HTMLCanvasElement | string) => canvas is HTMLCanvasElement;
28
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1,29 @@
1
+ export interface IWithDimensions {
2
+ /**
3
+ * natural unscaled width of the object
4
+ */
5
+ width: number;
6
+ /**
7
+ * natural unscaled height of the object
8
+ */
9
+ height: number;
10
+ }
11
+ /**
12
+ * Finds the scale for the object source to fit inside the object destination,
13
+ * keeping aspect ratio intact.
14
+ * respect the total allowed area for the cache.
15
+ * @param {IWithDimensions} source
16
+ * @param {IWithDimensions} destination
17
+ * @return {Number} scale factor to apply to source to fit into destination
18
+ */
19
+ export declare const findScaleToFit: (source: IWithDimensions, destination: IWithDimensions) => number;
20
+ /**
21
+ * Finds the scale for the object source to cover entirely the object destination,
22
+ * keeping aspect ratio intact.
23
+ * respect the total allowed area for the cache.
24
+ * @param {IWithDimensions} source
25
+ * @param {IWithDimensions} destination
26
+ * @return {Number} scale factor to apply to source to cover destination
27
+ */
28
+ export declare const findScaleToCover: (source: IWithDimensions, destination: IWithDimensions) => number;
29
+ //# sourceMappingURL=findScaleTo.d.ts.map
@@ -0,0 +1,9 @@
1
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
2
+ /**
3
+ * Groups SVG elements (usually those retrieved from SVG document)
4
+ * @static
5
+ * @param {FabricObject[]} elements FabricObject(s) parsed from svg, to group
6
+ * @return {FabricObject | Group}
7
+ */
8
+ export declare const groupSVGElements: (elements: FabricObject[]) => FabricObject<import("../../EventTypeDefs").ObjectEvents>;
9
+ //# sourceMappingURL=groupSVGElements.d.ts.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Returns true if context has transparent pixel
3
+ * at specified location (taking tolerance into account)
4
+ * @param {CanvasRenderingContext2D} ctx context
5
+ * @param {Number} x x coordinate in canvasElementCoordinate, not fabric space
6
+ * @param {Number} y y coordinate in canvasElementCoordinate, not fabric space
7
+ * @param {Number} tolerance Tolerance pixels around the point, not alpha tolerance
8
+ * @return {boolean} true if transparent
9
+ */
10
+ export declare const isTransparent: (ctx: CanvasRenderingContext2D, x: number, y: number, tolerance: number) => boolean;
11
+ //# sourceMappingURL=isTransparent.d.ts.map
@@ -0,0 +1,92 @@
1
+ import { IPoint, Point } from '../../Point';
2
+ import { TDegree, TMat2D } from '../../typedefs';
3
+ type TRotateMatrixArgs = {
4
+ angle?: TDegree;
5
+ };
6
+ type TTranslateMatrixArgs = {
7
+ translateX?: number;
8
+ translateY?: number;
9
+ };
10
+ export type TScaleMatrixArgs = {
11
+ scaleX?: number;
12
+ scaleY?: number;
13
+ flipX?: boolean;
14
+ flipY?: boolean;
15
+ skewX?: TDegree;
16
+ skewY?: TDegree;
17
+ };
18
+ export type TComposeMatrixArgs = TTranslateMatrixArgs & TRotateMatrixArgs & TScaleMatrixArgs;
19
+ export type TQrDecomposeOut = Required<Omit<TComposeMatrixArgs, 'flipX' | 'flipY'>>;
20
+ export declare const isIdentityMatrix: (mat: TMat2D) => boolean;
21
+ /**
22
+ * Apply transform t to point p
23
+ * @param {Point | IPoint} p The point to transform
24
+ * @param {Array} t The transform
25
+ * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied
26
+ * @return {Point} The transformed point
27
+ */
28
+ export declare const transformPoint: (p: IPoint, t: TMat2D, ignoreOffset?: boolean) => Point;
29
+ /**
30
+ * Invert transformation t
31
+ * @param {Array} t The transform
32
+ * @return {Array} The inverted transform
33
+ */
34
+ export declare const invertTransform: (t: TMat2D) => TMat2D;
35
+ /**
36
+ * Multiply matrix A by matrix B to nest transformations
37
+ * @param {TMat2D} a First transformMatrix
38
+ * @param {TMat2D} b Second transformMatrix
39
+ * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices
40
+ * @return {TMat2D} The product of the two transform matrices
41
+ */
42
+ export declare const multiplyTransformMatrices: (a: TMat2D, b: TMat2D, is2x2?: boolean) => TMat2D;
43
+ /**
44
+ * Decomposes standard 2x3 matrix into transform components
45
+ * @param {TMat2D} a transformMatrix
46
+ * @return {Object} Components of transform
47
+ */
48
+ export declare const qrDecompose: (a: TMat2D) => TQrDecomposeOut;
49
+ /**
50
+ * Returns a transform matrix starting from an object of the same kind of
51
+ * the one returned from qrDecompose, useful also if you want to calculate some
52
+ * transformations from an object that is not enlived yet
53
+ * @param {Object} options
54
+ * @param {Number} [options.angle] angle in degrees
55
+ * @return {TMat2D} transform matrix
56
+ */
57
+ export declare const calcRotateMatrix: ({ angle }: TRotateMatrixArgs) => TMat2D;
58
+ /**
59
+ * Returns a transform matrix starting from an object of the same kind of
60
+ * the one returned from qrDecompose, useful also if you want to calculate some
61
+ * transformations from an object that is not enlived yet.
62
+ * is called DimensionsTransformMatrix because those properties are the one that influence
63
+ * the size of the resulting box of the object.
64
+ * @param {Object} options
65
+ * @param {Number} [options.scaleX]
66
+ * @param {Number} [options.scaleY]
67
+ * @param {Boolean} [options.flipX]
68
+ * @param {Boolean} [options.flipY]
69
+ * @param {Number} [options.skewX]
70
+ * @param {Number} [options.skewY]
71
+ * @return {Number[]} transform matrix
72
+ */
73
+ export declare const calcDimensionsMatrix: ({ scaleX, scaleY, flipX, flipY, skewX, skewY, }: TScaleMatrixArgs) => TMat2D;
74
+ /**
75
+ * Returns a transform matrix starting from an object of the same kind of
76
+ * the one returned from qrDecompose, useful also if you want to calculate some
77
+ * transformations from an object that is not enlived yet
78
+ * @param {Object} options
79
+ * @param {Number} [options.angle]
80
+ * @param {Number} [options.scaleX]
81
+ * @param {Number} [options.scaleY]
82
+ * @param {Boolean} [options.flipX]
83
+ * @param {Boolean} [options.flipY]
84
+ * @param {Number} [options.skewX]
85
+ * @param {Number} [options.skewY]
86
+ * @param {Number} [options.translateX]
87
+ * @param {Number} [options.translateY]
88
+ * @return {Number[]} transform matrix
89
+ */
90
+ export declare const composeMatrix: ({ translateX, translateY, angle, ...otherOptions }: TComposeMatrixArgs) => TMat2D;
91
+ export {};
92
+ //# sourceMappingURL=matrix.d.ts.map
@@ -0,0 +1,23 @@
1
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
2
+ import { Group } from '../../shapes/Group';
3
+ /**
4
+ * Merges 2 clip paths into one visually equal clip path
5
+ *
6
+ * **IMPORTANT**:\
7
+ * Does **NOT** clone the arguments, clone them proir if necessary.
8
+ *
9
+ * Creates a wrapper (group) that contains one clip path and is clipped by the other so content is kept where both overlap.
10
+ * Use this method if both the clip paths may have nested clip paths of their own, so assigning one to the other's clip path property is not possible.
11
+ *
12
+ * In order to handle the `inverted` property we follow logic described in the following cases:\
13
+ * **(1)** both clip paths are inverted - the clip paths pass the inverted prop to the wrapper and loose it themselves.\
14
+ * **(2)** one is inverted and the other isn't - the wrapper shouldn't become inverted and the inverted clip path must clip the non inverted one to produce an identical visual effect.\
15
+ * **(3)** both clip paths are not inverted - wrapper and clip paths remain unchanged.
16
+ *
17
+ * @memberOf fabric.util
18
+ * @param {fabric.Object} c1
19
+ * @param {fabric.Object} c2
20
+ * @returns {fabric.Object} merged clip path
21
+ */
22
+ export declare const mergeClipPaths: (c1: FabricObject, c2: FabricObject) => Group;
23
+ //# sourceMappingURL=mergeClipPaths.d.ts.map
@@ -0,0 +1,56 @@
1
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
2
+ import type { TCrossOrigin, TFiller } from '../../typedefs';
3
+ export type LoadImageOptions = {
4
+ /**
5
+ * see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
6
+ */
7
+ signal?: AbortSignal;
8
+ /**
9
+ * cors value for the image loading, default to anonymous
10
+ */
11
+ crossOrigin?: TCrossOrigin;
12
+ };
13
+ /**
14
+ * Loads image element from given url and resolve it, or catch.
15
+ * @param {String} url URL representing an image
16
+ * @param {LoadImageOptions} [options] image loading options
17
+ * @returns {Promise<HTMLImageElement>} the loaded image.
18
+ */
19
+ export declare const loadImage: (url: string, { signal, crossOrigin }?: LoadImageOptions) => Promise<HTMLImageElement>;
20
+ export type EnlivenObjectOptions = {
21
+ /**
22
+ * handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
23
+ */
24
+ signal?: AbortSignal;
25
+ /**
26
+ * Method for further parsing of object elements,
27
+ * called after each fabric object created.
28
+ */
29
+ reviver?: (serializedObj: Record<string, any>, instance: FabricObject) => void;
30
+ /**
31
+ * Namespace to get klass "Class" object from
32
+ */
33
+ namespace?: any;
34
+ };
35
+ /**
36
+ * Creates corresponding fabric instances from their object representations
37
+ * @param {Object[]} objects Objects to enliven
38
+ * @param {EnlivenObjectOptions} [options]
39
+ * @param {object} [options.namespace] Namespace to get klass "Class" object from
40
+ * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,
41
+ * called after each fabric object created.
42
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
43
+ * @returns {Promise<FabricObject[]>}
44
+ */
45
+ export declare const enlivenObjects: (objects: any[], { signal, reviver }?: EnlivenObjectOptions) => Promise<FabricObject<import("../../EventTypeDefs").ObjectEvents>[]>;
46
+ /**
47
+ * Creates corresponding fabric instances residing in an object, e.g. `clipPath`
48
+ * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )
49
+ * @param {object} [options]
50
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
51
+ * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values
52
+ */
53
+ export declare const enlivenObjectEnlivables: <R = Record<string, TFiller | FabricObject<import("../../EventTypeDefs").ObjectEvents> | null>>(serializedObject: any, { signal }?: {
54
+ signal?: AbortSignal | undefined;
55
+ }) => Promise<R>;
56
+ //# sourceMappingURL=objectEnlive.d.ts.map
@@ -0,0 +1,68 @@
1
+ import { Point } from '../../Point';
2
+ import type { FabricObject } from '../../shapes/Object/Object';
3
+ import { TMat2D } from '../../typedefs';
4
+ import type { TScaleMatrixArgs } from './matrix';
5
+ /**
6
+ * given an object and a transform, apply the inverse transform to the object,
7
+ * this is equivalent to remove from that object that transformation, so that
8
+ * added in a space with the removed transform, the object will be the same as before.
9
+ * Removing from an object a transform that scale by 2 is like scaling it by 1/2.
10
+ * Removing from an object a transform that rotate by 30deg is like rotating by 30deg
11
+ * in the opposite direction.
12
+ * This util is used to add objects inside transformed groups or nested groups.
13
+ * @param {FabricObject} object the object you want to transform
14
+ * @param {TMat2D} transform the destination transform
15
+ */
16
+ export declare const removeTransformFromObject: (object: FabricObject, transform: TMat2D) => void;
17
+ /**
18
+ * given an object and a transform, apply the transform to the object.
19
+ * this is equivalent to change the space where the object is drawn.
20
+ * Adding to an object a transform that scale by 2 is like scaling it by 2.
21
+ * This is used when removing an object from an active selection for example.
22
+ * @param {FabricObject} object the object you want to transform
23
+ * @param {Array} transform the destination transform
24
+ */
25
+ export declare const addTransformToObject: (object: FabricObject, transform: TMat2D) => void;
26
+ /**
27
+ * discard an object transform state and apply the one from the matrix.
28
+ * @param {FabricObject} object the object you want to transform
29
+ * @param {Array} transform the destination transform
30
+ */
31
+ export declare const applyTransformToObject: (object: FabricObject, transform: TMat2D) => void;
32
+ /**
33
+ * reset an object transform state to neutral. Top and left are not accounted for
34
+ * @param {FabricObject} target object to transform
35
+ */
36
+ export declare const resetObjectTransform: (target: FabricObject) => void;
37
+ /**
38
+ * Extract Object transform values
39
+ * @param {FabricObject} target object to read from
40
+ * @return {Object} Components of transform
41
+ */
42
+ export declare const saveObjectTransform: (target: FabricObject) => {
43
+ scaleX: number;
44
+ scaleY: number;
45
+ skewX: number;
46
+ skewY: number;
47
+ angle: import("../../typedefs").TDegree;
48
+ left: number;
49
+ flipX: boolean;
50
+ flipY: boolean;
51
+ top: number;
52
+ };
53
+ /**
54
+ * given a width and height, return the size of the bounding box
55
+ * that can contains the box with width/height with applied transform
56
+ * described in options.
57
+ * Use to calculate the boxes around objects for controls.
58
+ * @param {Number} width
59
+ * @param {Number} height
60
+ * @param {Object} options
61
+ * @param {Number} options.scaleX
62
+ * @param {Number} options.scaleY
63
+ * @param {Number} options.skewX
64
+ * @param {Number} options.skewY
65
+ * @returns {Point} size
66
+ */
67
+ export declare const sizeAfterTransform: (width: number, height: number, options: TScaleMatrixArgs) => Point;
68
+ //# sourceMappingURL=objectTransforms.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Populates an object with properties of another object
3
+ * @param {Object} source Source object
4
+ * @param {string[]} properties Properties names to include
5
+ * @returns object populated with the picked keys
6
+ */
7
+ export declare const pick: <T extends Record<string, any>>(source: T, keys?: (keyof T)[]) => Partial<T>;
8
+ //# sourceMappingURL=pick.d.ts.map
@@ -0,0 +1,84 @@
1
+ import type { Point } from '../../Point';
2
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
3
+ import type { TMat2D } from '../../typedefs';
4
+ import type { StaticCanvas } from '../../canvas/StaticCanvas';
5
+ export declare const enum ObjectRelation {
6
+ sibling = "sibling",
7
+ child = "child"
8
+ }
9
+ /**
10
+ * We are actually looking for the transformation from the destination plane to the source plane (change of basis matrix)\
11
+ * The object will exist on the destination plane and we want it to seem unchanged by it so we invert the destination matrix (`to`) and then apply the source matrix (`from`)
12
+ * @param [from]
13
+ * @param [to]
14
+ * @returns
15
+ */
16
+ export declare const calcPlaneChangeMatrix: (from?: TMat2D, to?: TMat2D) => TMat2D;
17
+ /**
18
+ * Sends a point from the source coordinate plane to the destination coordinate plane.\
19
+ * From the canvas/viewer's perspective the point remains unchanged.
20
+ *
21
+ * @example <caption>Send point from canvas plane to group plane</caption>
22
+ * var obj = new Rect({ left: 20, top: 20, width: 60, height: 60, strokeWidth: 0 });
23
+ * var group = new Group([obj], { strokeWidth: 0 });
24
+ * var sentPoint1 = sendPointToPlane(new Point(50, 50), undefined, group.calcTransformMatrix());
25
+ * var sentPoint2 = sendPointToPlane(new Point(50, 50), iMatrix, group.calcTransformMatrix());
26
+ * console.log(sentPoint1, sentPoint2) // both points print (0,0) which is the center of group
27
+ *
28
+ * @see {transformPointRelativeToCanvas} for transforming relative to canvas
29
+ * @param {Point} point
30
+ * @param {TMat2D} [from] plane matrix containing object. Passing `undefined` is equivalent to passing the identity matrix, which means `point` exists in the canvas coordinate plane.
31
+ * @param {TMat2D} [to] destination plane matrix to contain object. Passing `undefined` means `point` should be sent to the canvas coordinate plane.
32
+ * @returns {Point} transformed point
33
+ */
34
+ export declare const sendPointToPlane: (point: Point, from?: TMat2D, to?: TMat2D) => Point;
35
+ /**
36
+ * Transform point relative to canvas.
37
+ * From the viewport/viewer's perspective the point remains unchanged.
38
+ *
39
+ * `child` relation means `point` exists in the coordinate plane created by `canvas`.
40
+ * In other words point is measured according to canvas' top left corner
41
+ * meaning that if `point` is equal to (0,0) it is positioned at canvas' top left corner.
42
+ *
43
+ * `sibling` relation means `point` exists in the same coordinate plane as canvas.
44
+ * In other words they both relate to the same (0,0) and agree on every point, which is how an event relates to canvas.
45
+ *
46
+ * @param {Point} point
47
+ * @param {StaticCanvas} canvas
48
+ * @param {'sibling'|'child'} relationBefore current relation of point to canvas
49
+ * @param {'sibling'|'child'} relationAfter desired relation of point to canvas
50
+ * @returns {Point} transformed point
51
+ */
52
+ export declare const transformPointRelativeToCanvas: (point: Point, canvas: StaticCanvas, relationBefore: ObjectRelation, relationAfter: ObjectRelation) => Point;
53
+ /**
54
+ *
55
+ * A util that abstracts applying transform to objects.\
56
+ * Sends `object` to the destination coordinate plane by applying the relevant transformations.\
57
+ * Changes the space/plane where `object` is drawn.\
58
+ * From the canvas/viewer's perspective `object` remains unchanged.
59
+ *
60
+ * @example <caption>Move clip path from one object to another while preserving it's appearance as viewed by canvas/viewer</caption>
61
+ * let obj, obj2;
62
+ * let clipPath = new Circle({ radius: 50 });
63
+ * obj.clipPath = clipPath;
64
+ * // render
65
+ * sendObjectToPlane(clipPath, obj.calcTransformMatrix(), obj2.calcTransformMatrix());
66
+ * obj.clipPath = undefined;
67
+ * obj2.clipPath = clipPath;
68
+ * // render, clipPath now clips obj2 but seems unchanged from the eyes of the viewer
69
+ *
70
+ * @example <caption>Clip an object's clip path with an existing object</caption>
71
+ * let obj, existingObj;
72
+ * let clipPath = new Circle({ radius: 50 });
73
+ * obj.clipPath = clipPath;
74
+ * let transformTo = multiplyTransformMatrices(obj.calcTransformMatrix(), clipPath.calcTransformMatrix());
75
+ * sendObjectToPlane(existingObj, existingObj.group?.calcTransformMatrix(), transformTo);
76
+ * clipPath.clipPath = existingObj;
77
+ *
78
+ * @param {FabricObject} object
79
+ * @param {Matrix} [from] plane matrix containing object. Passing `undefined` is equivalent to passing the identity matrix, which means `object` is a direct child of canvas.
80
+ * @param {Matrix} [to] destination plane matrix to contain object. Passing `undefined` means `object` should be sent to the canvas coordinate plane.
81
+ * @returns {Matrix} the transform matrix that was applied to `object`
82
+ */
83
+ export declare const sendObjectToPlane: (object: FabricObject, from?: TMat2D, to?: TMat2D) => TMat2D;
84
+ //# sourceMappingURL=planeChange.d.ts.map