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,51 @@
1
+ import { IPoint, Point } from '../../../Point';
2
+ import { StrokeProjectionsBase } from './StrokeProjectionsBase';
3
+ import { TProjection, TProjectStrokeOnPointsOptions } from './types';
4
+ /**
5
+ * class in charge of finding projections for each type of line cap for start/end of an open path
6
+ * @see {@link [Open path projections at #8344](https://github.com/fabricjs/fabric.js/pull/8344#1-open-path)}
7
+ *
8
+ * Reference:
9
+ * - MDN:
10
+ * - https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineCap
11
+ * - https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linecap
12
+ * - Spec: https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-linecap-dev
13
+ * - Playground to understand how the line joins works: https://hypertolosana.github.io/efficient-webgl-stroking/index.html
14
+ * - View the calculated projections for each of the control points: https://codesandbox.io/s/project-stroke-points-with-context-to-trace-b8jc4j?file=/src/index.js
15
+ */
16
+ export declare class StrokeLineCapProjections extends StrokeProjectionsBase {
17
+ /**
18
+ * edge point
19
+ */
20
+ A: Point;
21
+ /**
22
+ * point next to edge point
23
+ */
24
+ T: Point;
25
+ constructor(A: IPoint, T: IPoint, options: TProjectStrokeOnPointsOptions);
26
+ calcOrthogonalProjection(from: Point, to: Point, magnitude?: number): Point;
27
+ /**
28
+ * OPEN PATH START/END - Line cap: Butt
29
+ * Calculation: to find the projections, just find the points orthogonal to the stroke
30
+ *
31
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#1-1-butt
32
+ */
33
+ projectButt(): Point[];
34
+ /**
35
+ * OPEN PATH START/END - Line cap: Round
36
+ * Calculation: same as stroke line join `round`
37
+ *
38
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#1-2-round
39
+ */
40
+ projectRound(): Point[];
41
+ /**
42
+ * OPEN PATH START/END - Line cap: Square
43
+ * Calculation: project a rectangle of points on the stroke in the opposite direction of the vector `AT`
44
+ *
45
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#1-3-square
46
+ */
47
+ projectSquare(): Point[];
48
+ protected projectPoints(): Point[];
49
+ project(): TProjection[];
50
+ }
51
+ //# sourceMappingURL=StrokeLineCapProjections.d.ts.map
@@ -0,0 +1,81 @@
1
+ import { IPoint, Point } from '../../../Point';
2
+ import { getBisector } from '../vectors';
3
+ import { StrokeProjectionsBase } from './StrokeProjectionsBase';
4
+ import { TProjection, TProjectStrokeOnPointsOptions } from './types';
5
+ /**
6
+ * class in charge of finding projections for each type of line join
7
+ * @see {@link [Closed path projections at #8344](https://github.com/fabricjs/fabric.js/pull/8344#2-closed-path)}
8
+ *
9
+ * - MDN:
10
+ * - https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
11
+ * - https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-linejoin
12
+ * - Spec: https://svgwg.org/svg2-draft/painting.html#StrokeLinejoinProperty
13
+ * - Playground to understand how the line joins works: https://hypertolosana.github.io/efficient-webgl-stroking/index.html
14
+ * - View the calculated projections for each of the control points: https://codesandbox.io/s/project-stroke-points-with-context-to-trace-b8jc4j?file=/src/index.js
15
+ *
16
+ */
17
+ export declare class StrokeLineJoinProjections extends StrokeProjectionsBase {
18
+ /**
19
+ * The point being projected (the angle ∠BAC)
20
+ */
21
+ A: Point;
22
+ /**
23
+ * The point before A
24
+ */
25
+ B: Point;
26
+ /**
27
+ * The point after A
28
+ */
29
+ C: Point;
30
+ /**
31
+ * The bisector of A (∠BAC)
32
+ */
33
+ bisector: ReturnType<typeof getBisector>;
34
+ constructor(A: IPoint, B: IPoint, C: IPoint, options: TProjectStrokeOnPointsOptions);
35
+ get bisectorVector(): Point;
36
+ get bisectorAngle(): import("../../../typedefs").TRadian;
37
+ calcOrthogonalProjection(from: Point, to: Point, magnitude?: number): Point;
38
+ /**
39
+ * BEVEL
40
+ * Calculation: the projection points are formed by the vector orthogonal to the vertex.
41
+ *
42
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#2-2-bevel
43
+ */
44
+ projectBevel(): Point[];
45
+ /**
46
+ * MITER
47
+ * Calculation: the corner is formed by extending the outer edges of the stroke
48
+ * at the tangents of the path segments until they intersect.
49
+ *
50
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#2-1-miter
51
+ */
52
+ projectMiter(): Point[];
53
+ /**
54
+ * ROUND (without skew)
55
+ * Calculation: the projections are the two vectors parallel to X and Y axes
56
+ *
57
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#2-3-1-round-without-skew
58
+ */
59
+ private projectRoundNoSkew;
60
+ /**
61
+ * ROUND (with skew)
62
+ * Calculation: the projections are the points furthest from the vertex in
63
+ * the direction of the X and Y axes after distortion.
64
+ *
65
+ * @todo TODO:
66
+ * - Consider only projections that are inside the beginning and end of the circle segment
67
+ *
68
+ * @see https://github.com/fabricjs/fabric.js/pull/8344#2-3-2-round-skew
69
+ */
70
+ private projectRoundWithSkew;
71
+ projectRound(): Point[];
72
+ /**
73
+ * Project stroke width on points returning projections for each point as follows:
74
+ * - `miter`: 1 point corresponding to the outer boundary. If the miter limit is exceeded, it will be 2 points (becomes bevel)
75
+ * - `bevel`: 2 points corresponding to the bevel possible boundaries, orthogonal to the stroke.
76
+ * - `round`: same as `bevel` when it has no skew, with skew are 4 points.
77
+ */
78
+ protected projectPoints(): Point[];
79
+ project(): TProjection[];
80
+ }
81
+ //# sourceMappingURL=StrokeLineJoinProjections.d.ts.map
@@ -0,0 +1,25 @@
1
+ import { IPoint, Point } from '../../../Point';
2
+ import { TProjectStrokeOnPointsOptions, TProjection } from './types';
3
+ /**
4
+ * @see https://github.com/fabricjs/fabric.js/pull/8344
5
+ */
6
+ export declare abstract class StrokeProjectionsBase {
7
+ options: TProjectStrokeOnPointsOptions;
8
+ scale: Point;
9
+ strokeUniformScalar: Point;
10
+ strokeProjectionMagnitude: number;
11
+ static getAcuteAngleFactor(vector1: Point, vector2?: Point): 1 | -1;
12
+ constructor(options: TProjectStrokeOnPointsOptions);
13
+ /**
14
+ * When the stroke is uniform, scaling affects the arrangement of points. So we must take it into account.
15
+ */
16
+ protected createSideVector(from: IPoint, to: IPoint): Point;
17
+ protected abstract calcOrthogonalProjection(from: Point, to: Point, magnitude?: number): Point;
18
+ protected projectOrthogonally(from: Point, to: Point, magnitude?: number): Point;
19
+ protected isSkewed(): boolean;
20
+ protected applySkew(point: Point): Point;
21
+ protected scaleUnitVector(unitVector: Point, scalar: number): Point;
22
+ protected abstract projectPoints(): Point[];
23
+ abstract project(): TProjection[];
24
+ }
25
+ //# sourceMappingURL=StrokeProjectionsBase.d.ts.map
@@ -0,0 +1,11 @@
1
+ import { IPoint } from '../../../Point';
2
+ import { TProjection, TProjectStrokeOnPointsOptions } from './types';
3
+ /**
4
+ *
5
+ * Used to calculate object's bounding box
6
+ *
7
+ * @see https://github.com/fabricjs/fabric.js/pull/8344
8
+ *
9
+ */
10
+ export declare const projectStrokeOnPoints: (points: IPoint[], options: TProjectStrokeOnPointsOptions, openPath?: boolean) => TProjection[];
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,23 @@
1
+ import { Point } from '../../../Point';
2
+ import { TDegree } from '../../../typedefs';
3
+ import { getBisector } from '../vectors';
4
+ export type TProjectStrokeOnPointsOptions = {
5
+ strokeWidth: number;
6
+ strokeLineCap: CanvasLineCap;
7
+ strokeLineJoin: CanvasLineJoin;
8
+ /**
9
+ * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit
10
+ */
11
+ strokeMiterLimit: number;
12
+ strokeUniform: boolean;
13
+ scaleX: number;
14
+ scaleY: number;
15
+ skewX: TDegree;
16
+ skewY: TDegree;
17
+ };
18
+ export type TProjection = {
19
+ projectedPoint: Point;
20
+ originPoint: Point;
21
+ bisector?: ReturnType<typeof getBisector>;
22
+ };
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,14 @@
1
+ import type { TRadian, TDegree } from '../../typedefs';
2
+ /**
3
+ * Transforms degrees to radians.
4
+ * @param {TDegree} degrees value in degrees
5
+ * @return {TRadian} value in radians
6
+ */
7
+ export declare const degreesToRadians: (degrees: TDegree) => TRadian;
8
+ /**
9
+ * Transforms radians to degrees.
10
+ * @param {TRadian} radians value in radians
11
+ * @return {TDegree} value in degrees
12
+ */
13
+ export declare const radiansToDegrees: (radians: TRadian) => TDegree;
14
+ //# sourceMappingURL=radiansDegreesConversion.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { TOriginX, TOriginY } from '../../typedefs';
2
+ /**
3
+ * Resolves origin value relative to center
4
+ * @private
5
+ * @param {TOriginX | TOriginY} originValue originX / originY
6
+ * @returns number
7
+ */
8
+ export declare const resolveOrigin: (originValue: TOriginX | TOriginY | number) => number;
9
+ //# sourceMappingURL=resolveOrigin.d.ts.map
@@ -0,0 +1,12 @@
1
+ import type { Point } from '../../Point';
2
+ import type { TRadian } from '../../typedefs';
3
+ /**
4
+ * Rotates `point` around `origin` with `radians`
5
+ * @deprecated use the Point.rotate
6
+ * @param {Point} origin The origin of the rotation
7
+ * @param {Point} origin The origin of the rotation
8
+ * @param {TRadian} radians The radians of the angle for the rotation
9
+ * @return {Point} The new rotated point
10
+ */
11
+ export declare const rotatePoint: (point: Point, origin: Point, radians: TRadian) => Point;
12
+ //# sourceMappingURL=rotatePoint.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 sin value for angle.
8
+ */
9
+ export declare const sin: (angle: TRadian) => number;
10
+ //# sourceMappingURL=sin.d.ts.map
@@ -0,0 +1,53 @@
1
+ import { SVGElementName, TBBox, TMat2D } from '../../typedefs';
2
+ /**
3
+ * Returns array of attributes for given svg that fabric parses
4
+ * @param {SVGElementName} type Type of svg element (eg. 'circle')
5
+ * @return {Array} string names of supported attributes
6
+ */
7
+ export declare const getSvgAttributes: (type: SVGElementName) => string[];
8
+ /**
9
+ * Converts from attribute value to pixel value if applicable.
10
+ * Returns converted pixels or original value not converted.
11
+ * @param {string} value number to operate on
12
+ * @param {number} fontSize
13
+ * @return {number}
14
+ */
15
+ export declare const parseUnit: (value: string, fontSize: number) => number;
16
+ export declare const enum MeetOrSlice {
17
+ meet = "meet",
18
+ slice = "slice"
19
+ }
20
+ export declare const enum MinMidMax {
21
+ min = "Min",
22
+ mid = "Mid",
23
+ max = "Max",
24
+ none = "none"
25
+ }
26
+ export type TPreserveArParsed = {
27
+ meetOrSlice: MeetOrSlice;
28
+ alignX: MinMidMax;
29
+ alignY: MinMidMax;
30
+ };
31
+ /**
32
+ * Parse preserveAspectRatio attribute from element
33
+ * https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/preserveAspectRatio
34
+ * @param {string} attribute to be parsed
35
+ * @return {Object} an object containing align and meetOrSlice attribute
36
+ */
37
+ export declare const parsePreserveAspectRatioAttribute: (attribute: string) => TPreserveArParsed;
38
+ /**
39
+ * given an array of 6 number returns something like `"matrix(...numbers)"`
40
+ * @param {TMat2D} transform an array with 6 numbers
41
+ * @return {String} transform matrix for svg
42
+ */
43
+ export declare const matrixToSVG: (transform: TMat2D) => string;
44
+ /**
45
+ * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values
46
+ * we work around it by "moving" alpha channel into opacity attribute and setting fill's alpha to 1
47
+ * @param prop
48
+ * @param value
49
+ * @returns
50
+ */
51
+ export declare const colorPropToSVG: (prop: string, value?: any) => string;
52
+ export declare const createSVGRect: (color: string, { left, top, width, height }: TBBox, precision?: number) => string;
53
+ //# sourceMappingURL=svgParsing.d.ts.map
@@ -0,0 +1,32 @@
1
+ import type { TextStyle, TextStyleDeclaration } from '../../shapes/Text/StyledText';
2
+ export type TextStyleArray = {
3
+ start: number;
4
+ end: number;
5
+ style: TextStyleDeclaration;
6
+ }[];
7
+ /**
8
+ * @param {Object} prevStyle first style to compare
9
+ * @param {Object} thisStyle second style to compare
10
+ * @param {boolean} forTextSpans whether to check overline, underline, and line-through properties
11
+ * @return {boolean} true if the style changed
12
+ */
13
+ export declare const hasStyleChanged: (prevStyle: TextStyleDeclaration, thisStyle: TextStyleDeclaration, forTextSpans?: boolean) => boolean;
14
+ /**
15
+ * Returns the array form of a text object's inline styles property with styles grouped in ranges
16
+ * rather than per character. This format is less verbose, and is better suited for storage
17
+ * so it is used in serialization (not during runtime).
18
+ * @param {object} styles per character styles for a text object
19
+ * @param {String} text the text string that the styles are applied to
20
+ * @return {{start: number, end: number, style: object}[]}
21
+ */
22
+ export declare const stylesToArray: (styles: TextStyle, text: string) => TextStyleArray;
23
+ /**
24
+ * Returns the object form of the styles property with styles that are assigned per
25
+ * character rather than grouped by range. This format is more verbose, and is
26
+ * only used during runtime (not for serialization/storage)
27
+ * @param {Array} styles the serialized form of a text object's styles
28
+ * @param {String} text the text string that the styles are applied to
29
+ * @return {Object}
30
+ */
31
+ export declare const stylesFromArray: (styles: TextStyleArray | TextStyle, text: string) => TextStyle;
32
+ //# sourceMappingURL=textStyles.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * A wrapper around Number#toFixed, which contrary to native method returns number, not string.
3
+ * @param {number|string} number number to operate on
4
+ * @param {number} fractionDigits number of fraction digits to "leave"
5
+ * @return {number}
6
+ */
7
+ export declare const toFixed: (number: number | string, fractionDigits: number) => number;
8
+ //# sourceMappingURL=toFixed.d.ts.map
@@ -0,0 +1,57 @@
1
+ import { IPoint, Point } from '../../Point';
2
+ import { TRadian } from '../../typedefs';
3
+ /**
4
+ * Rotates `vector` with `radians`
5
+ * @param {Point} vector The vector to rotate (x and y)
6
+ * @param {Number} radians The radians of the angle for the rotation
7
+ * @return {Point} The new rotated point
8
+ */
9
+ export declare const rotateVector: (vector: Point, radians: TRadian) => Point;
10
+ /**
11
+ * Creates a vector from points represented as a point
12
+ *
13
+ * @param {Point} from
14
+ * @param {Point} to
15
+ * @returns {Point} vector
16
+ */
17
+ export declare const createVector: (from: IPoint, to: IPoint) => Point;
18
+ /**
19
+ * return the magnitude of a vector
20
+ * @return {number}
21
+ */
22
+ export declare const magnitude: (point: Point) => number;
23
+ /**
24
+ * Calculates the angle between 2 vectors
25
+ * @param {Point} a
26
+ * @param {Point} b
27
+ * @returns the angle in radians from `a` to `b`
28
+ */
29
+ export declare const calcAngleBetweenVectors: (a: Point, b: Point) => TRadian;
30
+ /**
31
+ * Calculates the angle between the x axis and the vector
32
+ * @param {Point} v
33
+ * @returns the angle in radians of `v`
34
+ */
35
+ export declare const calcVectorRotation: (v: Point) => TRadian;
36
+ /**
37
+ * @param {Point} v
38
+ * @returns {Point} vector representing the unit vector pointing to the direction of `v`
39
+ */
40
+ export declare const getUnitVector: (v: Point) => Point;
41
+ /**
42
+ * @param {Point} A
43
+ * @param {Point} B
44
+ * @param {Point} C
45
+ * @returns {{ vector: Point, angle: TRadian}} vector representing the bisector of A and A's angle
46
+ */
47
+ export declare const getBisector: (A: Point, B: Point, C: Point) => {
48
+ vector: Point;
49
+ angle: TRadian;
50
+ };
51
+ /**
52
+ * @param {Point} v
53
+ * @param {Boolean} [counterClockwise] the direction of the orthogonal vector, defaults to `true`
54
+ * @returns {Point} the unit orthogonal vector
55
+ */
56
+ export declare const getOrthonormalVector: (v: Point, counterClockwise?: boolean) => Point;
57
+ //# sourceMappingURL=vectors.d.ts.map
@@ -0,0 +1,108 @@
1
+ import { Point } from '../Point';
2
+ import type { PathData, TMat2D } from '../typedefs';
3
+ type PathSegmentInfoCommon = {
4
+ x: number;
5
+ y: number;
6
+ command: string;
7
+ length: number;
8
+ };
9
+ type CurveInfo = PathSegmentInfoCommon & {
10
+ iterator: (pct: number) => Point;
11
+ angleFinder: (pct: number) => number;
12
+ length: number;
13
+ };
14
+ export type PathSegmentInfo = {
15
+ M: PathSegmentInfoCommon;
16
+ L: PathSegmentInfoCommon;
17
+ C: CurveInfo;
18
+ Q: CurveInfo;
19
+ Z: PathSegmentInfoCommon & {
20
+ destX: number;
21
+ destY: number;
22
+ };
23
+ };
24
+ export type TPathSegmentsInfo = PathSegmentInfo[keyof PathSegmentInfo];
25
+ /**
26
+ * Calculate bounding box of a beziercurve
27
+ * @param {Number} x0 starting point
28
+ * @param {Number} y0
29
+ * @param {Number} x1 first control point
30
+ * @param {Number} y1
31
+ * @param {Number} x2 secondo control point
32
+ * @param {Number} y2
33
+ * @param {Number} x3 end of bezier
34
+ * @param {Number} y3
35
+ */
36
+ export declare function getBoundsOfCurve(x0: any, y0: any, x1: any, y1: any, x2: any, y2: any, x3: any, y3: any): any;
37
+ /**
38
+ * Converts arc to a bunch of bezier curves
39
+ * @param {Number} fx starting point x
40
+ * @param {Number} fy starting point y
41
+ * @param {Array} coords Arc command
42
+ */
43
+ export declare const fromArcToBeziers: (fx: any, fy: any, [_, rx, ry, rot, large, sweep, tx, ty]?: [any?, any?, any?, any?, any?, any?, any?, any?]) => any[];
44
+ /**
45
+ * This function take a parsed SVG path and make it simpler for fabricJS logic.
46
+ * simplification consist of: only UPPERCASE absolute commands ( relative converted to absolute )
47
+ * S converted in C, T converted in Q, A converted in C.
48
+ * @param {PathData} path the array of commands of a parsed svg path for `Path`
49
+ * @return {PathData} the simplified array of commands of a parsed svg path for `Path`
50
+ */
51
+ export declare const makePathSimpler: (path: PathData) => PathData;
52
+ /**
53
+ * Run over a parsed and simplified path and extract some information (length of each command and starting point)
54
+ * @param {PathData} path parsed path commands
55
+ * @return {Array} path commands information
56
+ */
57
+ export declare const getPathSegmentsInfo: (path: PathData) => TPathSegmentsInfo[];
58
+ export declare const getPointOnPath: (path: PathData, distance: number, infos?: ReturnType<typeof getPathSegmentsInfo>) => Point | {
59
+ x: number;
60
+ y: number;
61
+ angle: number;
62
+ } | undefined;
63
+ /**
64
+ *
65
+ * @param {string} pathString
66
+ * @return {(string|number)[][]} An array of SVG path commands
67
+ * @example <caption>Usage</caption>
68
+ * parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [
69
+ * ['M', 3, 4],
70
+ * ['Q', 3, 5, 2, 1, 4, 0],
71
+ * ['Q', 9, 12, 2, 1, 4, 0],
72
+ * ];
73
+ *
74
+ */
75
+ export declare const parsePath: (pathString: any) => any[];
76
+ /**
77
+ *
78
+ * Converts points to a smooth SVG path
79
+ * @param {{ x: number,y: number }[]} points Array of points
80
+ * @param {number} [correction] Apply a correction to the path (usually we use `width / 1000`). If value is undefined 0 is used as the correction value.
81
+ * @return {(string|number)[][]} An array of SVG path commands
82
+ */
83
+ export declare const getSmoothPathFromPoints: (points: any, correction?: number) => (string | number)[][];
84
+ /**
85
+ * Transform a path by transforming each segment.
86
+ * it has to be a simplified path or it won't work.
87
+ * WARNING: this depends from pathOffset for correct operation
88
+ * @param {PathData} path fabricJS parsed and simplified path commands
89
+ * @param {TMat2D} transform matrix that represent the transformation
90
+ * @param {Point} [pathOffset] `Path.pathOffset`
91
+ * @returns {Array} the transformed path
92
+ */
93
+ export declare const transformPath: (path: PathData, transform: TMat2D, pathOffset: Point) => (string | number)[][];
94
+ /**
95
+ * Returns an array of path commands to create a regular polygon
96
+ * @param {number} radius
97
+ * @param {number} numVertexes
98
+ * @returns {(string|number)[][]} An array of SVG path commands
99
+ */
100
+ export declare const getRegularPolygonPath: (numVertexes: any, radius: any) => any[];
101
+ /**
102
+ * Join path commands to go back to svg format
103
+ * @param {Array} pathData fabricJS parsed path commands
104
+ * @return {String} joined path 'M 0 0 L 20 30'
105
+ */
106
+ export declare const joinPath: (pathData: any) => any;
107
+ export {};
108
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1,14 @@
1
+ import type { FabricObject } from '../shapes/Object/FabricObject';
2
+ import { TMat2D } from '../typedefs';
3
+ type FabricObjectWithTransformMatrix = FabricObject & {
4
+ transformMatrix?: TMat2D;
5
+ };
6
+ /**
7
+ * This function is an helper for svg import. it removes the transform matrix
8
+ * and set to object properties that fabricjs can handle
9
+ * @private
10
+ * @param {Object} preserveAspectRatioOptions
11
+ */
12
+ export declare const removeTransformMatrixForSvgParsing: (object: FabricObjectWithTransformMatrix, preserveAspectRatioOptions?: any) => void;
13
+ export {};
14
+ //# sourceMappingURL=transform_matrix_removal.d.ts.map
@@ -0,0 +1,19 @@
1
+ import type { ActiveSelection } from '../shapes/ActiveSelection';
2
+ import type { Group } from '../shapes/Group';
3
+ import type { FabricObject, TCachedFabricObject } from '../shapes/Object/Object';
4
+ import type { FabricObjectWithDragSupport } from '../shapes/Object/InteractiveObject';
5
+ import type { TFiller } from '../typedefs';
6
+ import type { Text } from '../shapes/Text/Text';
7
+ import type { Pattern } from '../Pattern';
8
+ import type { IText } from '../shapes/IText/IText';
9
+ import type { Textbox } from '../shapes/Textbox';
10
+ export declare const isFiller: (filler: TFiller | string | null) => filler is TFiller;
11
+ export declare const isSerializableFiller: (filler: TFiller | string | null) => filler is TFiller;
12
+ export declare const isPattern: (filler: TFiller) => filler is Pattern;
13
+ export declare const isCollection: (fabricObject?: FabricObject) => fabricObject is Group | ActiveSelection;
14
+ export declare const isActiveSelection: (fabricObject?: FabricObject) => fabricObject is ActiveSelection;
15
+ export declare const isTextObject: (fabricObject?: FabricObject) => fabricObject is Text<import("../EventTypeDefs").ObjectEvents>;
16
+ export declare const isInteractiveTextObject: (fabricObject?: FabricObject) => fabricObject is IText<import("../shapes/IText/ITextBehavior").ITextEvents> | Textbox;
17
+ export declare const isFabricObjectCached: (fabricObject: FabricObject) => fabricObject is TCachedFabricObject;
18
+ export declare const isFabricObjectWithDragSupport: (fabricObject?: FabricObject) => fabricObject is FabricObjectWithDragSupport;
19
+ //# sourceMappingURL=types.d.ts.map