fabric 5.3.0 → 6.0.0-beta3

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 (604) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintignore +3 -0
  5. package/.eslintrc.js +43 -0
  6. package/.eslintrc.json +38 -46
  7. package/.eslintrc_tests +12 -0
  8. package/.gitattributes +2 -0
  9. package/.gitpod.yml +17 -1
  10. package/.prettierignore +19 -0
  11. package/.prettierrc +4 -0
  12. package/CHANGELOG.md +532 -189
  13. package/CONTRIBUTING.md +224 -59
  14. package/README.md +200 -235
  15. package/bower.json +1 -3
  16. package/dist/fabric.d.ts +42 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +27582 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/index.min.js +1 -0
  21. package/dist/index.mjs +27519 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/index.node.cjs +27663 -0
  24. package/dist/index.node.cjs.map +1 -0
  25. package/dist/index.node.d.ts +14 -0
  26. package/dist/index.node.mjs +27606 -0
  27. package/dist/index.node.mjs.map +1 -0
  28. package/dist/src/ClassRegistry.d.ts +13 -0
  29. package/dist/src/Collection.d.ts +136 -0
  30. package/dist/src/CommonMethods.d.ts +32 -0
  31. package/dist/src/EventTypeDefs.d.ts +227 -0
  32. package/dist/src/Intersection.d.ts +112 -0
  33. package/dist/src/Observable.d.ts +60 -0
  34. package/dist/src/Pattern.d.ts +113 -0
  35. package/dist/src/Point.d.ts +232 -0
  36. package/dist/src/Shadow.d.ts +97 -0
  37. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  38. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  39. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  40. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  41. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  42. package/dist/src/cache.d.ts +47 -0
  43. package/dist/src/canvas/Canvas.d.ts +548 -0
  44. package/dist/src/canvas/SelectableCanvas.d.ts +754 -0
  45. package/dist/src/canvas/StaticCanvas.d.ts +778 -0
  46. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  47. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  48. package/dist/src/color/Color.d.ts +174 -0
  49. package/dist/src/color/color_map.d.ts +155 -0
  50. package/dist/src/color/constants.d.ts +22 -0
  51. package/dist/src/color/util.d.ts +12 -0
  52. package/dist/src/config.d.ts +115 -0
  53. package/dist/src/constants.d.ts +14 -0
  54. package/dist/src/controls/Control.d.ts +228 -0
  55. package/dist/src/controls/changeWidth.d.ts +13 -0
  56. package/dist/src/controls/commonControls.d.ts +28 -0
  57. package/dist/src/controls/controlRendering.d.ts +29 -0
  58. package/dist/src/controls/drag.d.ts +12 -0
  59. package/dist/src/controls/index.d.ts +13 -0
  60. package/dist/src/controls/polyControl.d.ts +5 -0
  61. package/dist/src/controls/rotate.d.ts +12 -0
  62. package/dist/src/controls/scale.d.ts +47 -0
  63. package/dist/src/controls/scaleSkew.d.ts +39 -0
  64. package/dist/src/controls/skew.d.ts +33 -0
  65. package/dist/src/controls/util.d.ts +41 -0
  66. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  67. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  68. package/dist/src/env/browser.d.ts +3 -0
  69. package/dist/src/env/index.d.ts +15 -0
  70. package/dist/src/env/node.d.ts +5 -0
  71. package/dist/src/env/types.d.ts +15 -0
  72. package/dist/src/filters/BaseFilter.d.ts +153 -0
  73. package/dist/src/filters/BlendColor.d.ts +80 -0
  74. package/dist/src/filters/BlendImage.d.ts +92 -0
  75. package/dist/src/filters/Blur.d.ts +51 -0
  76. package/dist/src/filters/Boilerplate.d.ts +48 -0
  77. package/dist/src/filters/Brightness.d.ts +47 -0
  78. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  79. package/dist/src/filters/ColorMatrix.d.ts +63 -0
  80. package/dist/src/filters/ColorMatrixFilters.d.ts +545 -0
  81. package/dist/src/filters/Composed.d.ts +45 -0
  82. package/dist/src/filters/Contrast.d.ts +45 -0
  83. package/dist/src/filters/Convolute.d.ts +82 -0
  84. package/dist/src/filters/FilterBackend.d.ts +14 -0
  85. package/dist/src/filters/GLProbes/GLProbe.d.ts +11 -0
  86. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
  87. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  88. package/dist/src/filters/Gamma.d.ts +54 -0
  89. package/dist/src/filters/Grayscale.d.ts +46 -0
  90. package/dist/src/filters/HueRotation.d.ts +24 -0
  91. package/dist/src/filters/Invert.d.ts +55 -0
  92. package/dist/src/filters/Noise.d.ts +54 -0
  93. package/dist/src/filters/Pixelate.d.ts +44 -0
  94. package/dist/src/filters/RemoveColor.d.ts +63 -0
  95. package/dist/src/filters/Resize.d.ts +136 -0
  96. package/dist/src/filters/Saturation.d.ts +48 -0
  97. package/dist/src/filters/Vibrance.d.ts +48 -0
  98. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  99. package/dist/src/filters/filters.d.ts +21 -0
  100. package/dist/src/filters/index.d.ts +5 -0
  101. package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
  102. package/dist/src/filters/shaders/blendColor.d.ts +13 -0
  103. package/dist/src/filters/shaders/blendImage.d.ts +3 -0
  104. package/dist/src/filters/shaders/blur.d.ts +2 -0
  105. package/dist/src/filters/shaders/brightness.d.ts +2 -0
  106. package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
  107. package/dist/src/filters/shaders/constrast.d.ts +2 -0
  108. package/dist/src/filters/shaders/convolute.d.ts +11 -0
  109. package/dist/src/filters/shaders/gamma.d.ts +2 -0
  110. package/dist/src/filters/shaders/grayscale.d.ts +3 -0
  111. package/dist/src/filters/shaders/invert.d.ts +2 -0
  112. package/dist/src/filters/shaders/noise.d.ts +2 -0
  113. package/dist/src/filters/shaders/pixelate.d.ts +2 -0
  114. package/dist/src/filters/shaders/removeColor.d.ts +2 -0
  115. package/dist/src/filters/shaders/saturation.d.ts +2 -0
  116. package/dist/src/filters/shaders/vibrance.d.ts +2 -0
  117. package/dist/src/filters/typedefs.d.ts +49 -0
  118. package/dist/src/gradient/Gradient.d.ts +149 -0
  119. package/dist/src/gradient/constants.d.ts +15 -0
  120. package/dist/src/gradient/parser/index.d.ts +4 -0
  121. package/dist/src/gradient/parser/misc.d.ts +4 -0
  122. package/dist/src/gradient/parser/parseColorStops.d.ts +3 -0
  123. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  124. package/dist/src/gradient/typedefs.d.ts +93 -0
  125. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  126. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  127. package/dist/src/parkinglot/straighten.d.ts +2 -0
  128. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  129. package/dist/src/parser/attributes.d.ts +6 -0
  130. package/dist/src/parser/constants.d.ts +53 -0
  131. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  132. package/dist/src/parser/elementById.d.ts +6 -0
  133. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  134. package/dist/src/parser/elements_parser.d.ts +3 -0
  135. package/dist/src/parser/getCSSRules.d.ts +7 -0
  136. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  137. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  138. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  139. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  140. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  141. package/dist/src/parser/index.d.ts +10 -0
  142. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  143. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  144. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  145. package/dist/src/parser/normalizeValue.d.ts +2 -0
  146. package/dist/src/parser/parseAttributes.d.ts +9 -0
  147. package/dist/src/parser/parseElements.d.ts +11 -0
  148. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  149. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  150. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  151. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  152. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  153. package/dist/src/parser/parseStyleString.d.ts +2 -0
  154. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  155. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  156. package/dist/src/parser/percent.d.ts +9 -0
  157. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  158. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  159. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  160. package/dist/src/parser/selectorMatches.d.ts +2 -0
  161. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  162. package/dist/src/parser/skewMatrix.d.ts +2 -0
  163. package/dist/src/parser/translateMatrix.d.ts +2 -0
  164. package/dist/src/shapes/ActiveSelection.d.ts +82 -0
  165. package/dist/src/shapes/Circle.d.ts +99 -0
  166. package/dist/src/shapes/Ellipse.d.ts +84 -0
  167. package/dist/src/shapes/Group.d.ts +408 -0
  168. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  169. package/dist/src/shapes/IText/IText.d.ts +335 -0
  170. package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
  171. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +83 -0
  172. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
  173. package/dist/src/shapes/IText/constants.d.ts +13 -0
  174. package/dist/src/shapes/Image.d.ts +311 -0
  175. package/dist/src/shapes/Line.d.ts +126 -0
  176. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  177. package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
  178. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  179. package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
  180. package/dist/src/shapes/Object/Object.d.ts +594 -0
  181. package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
  182. package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
  183. package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
  184. package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
  185. package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
  186. package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
  187. package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
  188. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
  189. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  190. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  191. package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
  192. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  193. package/dist/src/shapes/Object/types/index.d.ts +6 -0
  194. package/dist/src/shapes/Path.d.ts +130 -0
  195. package/dist/src/shapes/Polygon.d.ts +9 -0
  196. package/dist/src/shapes/Polyline.d.ts +140 -0
  197. package/dist/src/shapes/Rect.d.ts +76 -0
  198. package/dist/src/shapes/Text/StyledText.d.ts +119 -0
  199. package/dist/src/shapes/Text/Text.d.ts +673 -0
  200. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  201. package/dist/src/shapes/Text/constants.d.ts +7 -0
  202. package/dist/src/shapes/Textbox.d.ts +185 -0
  203. package/dist/src/shapes/Triangle.d.ts +25 -0
  204. package/dist/src/typedefs.d.ts +90 -0
  205. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  206. package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  207. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  208. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  209. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  210. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  211. package/dist/src/util/animation/animate.d.ts +37 -0
  212. package/dist/src/util/animation/easing.d.ts +130 -0
  213. package/dist/src/util/animation/types.d.ts +87 -0
  214. package/dist/src/util/applyMixins.d.ts +8 -0
  215. package/dist/src/util/dom_event.d.ts +5 -0
  216. package/dist/src/util/dom_misc.d.ts +39 -0
  217. package/dist/src/util/dom_request.d.ts +14 -0
  218. package/dist/src/util/dom_style.d.ts +7 -0
  219. package/dist/src/util/fireEvent.d.ts +3 -0
  220. package/dist/src/util/index.d.ts +35 -0
  221. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  222. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  223. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  224. package/dist/src/util/internals/index.d.ts +4 -0
  225. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  226. package/dist/src/util/internals/uid.d.ts +2 -0
  227. package/dist/src/util/lang_string.d.ts +22 -0
  228. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  229. package/dist/src/util/misc/capValue.d.ts +2 -0
  230. package/dist/src/util/misc/cos.d.ts +10 -0
  231. package/dist/src/util/misc/dom.d.ts +28 -0
  232. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  233. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  234. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  235. package/dist/src/util/misc/matrix.d.ts +92 -0
  236. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  237. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  238. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  239. package/dist/src/util/misc/pick.d.ts +9 -0
  240. package/dist/src/util/misc/planeChange.d.ts +84 -0
  241. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  242. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  243. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  244. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  245. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  246. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  247. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  248. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  249. package/dist/src/util/misc/sin.d.ts +10 -0
  250. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  251. package/dist/src/util/misc/textStyles.d.ts +32 -0
  252. package/dist/src/util/misc/toFixed.d.ts +8 -0
  253. package/dist/src/util/misc/vectors.d.ts +57 -0
  254. package/dist/src/util/path/index.d.ts +96 -0
  255. package/dist/src/util/path/regex.d.ts +3 -0
  256. package/dist/src/util/path/typechecks.d.ts +24 -0
  257. package/dist/src/util/path/typedefs.d.ts +220 -0
  258. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  259. package/dist/src/util/types.d.ts +19 -0
  260. package/fabric.ts +51 -0
  261. package/index.node.ts +37 -0
  262. package/index.ts +1 -0
  263. package/package.json +100 -40
  264. package/publish.js +0 -26
  265. package/rollup.config.mjs +91 -0
  266. package/rollup.test.config.js +24 -0
  267. package/scripts/build.mjs +50 -0
  268. package/scripts/buildLock.mjs +115 -0
  269. package/scripts/buildReporter.mjs +15 -0
  270. package/scripts/buildStats.mjs +139 -0
  271. package/scripts/dirname.mjs +14 -0
  272. package/scripts/git.mjs +36 -0
  273. package/scripts/index.mjs +564 -0
  274. package/scripts/sandbox.mjs +149 -0
  275. package/src/ClassRegistry.ts +56 -0
  276. package/src/Collection.ts +346 -0
  277. package/src/CommonMethods.ts +63 -0
  278. package/src/EventTypeDefs.ts +296 -0
  279. package/src/Intersection.ts +302 -0
  280. package/src/Observable.ts +181 -0
  281. package/src/Pattern.ts +227 -0
  282. package/src/Point.ts +388 -0
  283. package/src/Shadow.ts +214 -0
  284. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  285. package/src/brushes/CircleBrush.ts +145 -0
  286. package/src/brushes/PatternBrush.ts +70 -0
  287. package/src/brushes/PencilBrush.ts +300 -0
  288. package/src/brushes/SprayBrush.ts +219 -0
  289. package/src/cache.ts +90 -0
  290. package/src/canvas/Canvas.ts +1607 -0
  291. package/src/canvas/SelectableCanvas.ts +1608 -0
  292. package/src/canvas/StaticCanvas.ts +1734 -0
  293. package/src/canvas/TextEditingManager.ts +48 -0
  294. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  295. package/src/color/Color.ts +404 -0
  296. package/src/color/color_map.ts +154 -0
  297. package/src/color/constants.ts +26 -0
  298. package/src/color/util.ts +32 -0
  299. package/src/config.ts +159 -0
  300. package/src/constants.ts +20 -0
  301. package/src/controls/Control.ts +380 -0
  302. package/src/controls/changeWidth.ts +52 -0
  303. package/src/controls/commonControls.ts +105 -0
  304. package/src/controls/controlRendering.ts +138 -0
  305. package/src/controls/drag.ts +31 -0
  306. package/src/controls/index.ts +22 -0
  307. package/src/controls/polyControl.ts +135 -0
  308. package/src/controls/rotate.ts +87 -0
  309. package/src/controls/scale.ts +277 -0
  310. package/src/controls/scaleSkew.ts +92 -0
  311. package/src/controls/skew.ts +242 -0
  312. package/src/controls/util.ts +154 -0
  313. package/src/controls/wrapWithFireEvent.ts +25 -0
  314. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  315. package/src/env/browser.ts +32 -0
  316. package/src/env/index.ts +24 -0
  317. package/src/env/node.ts +56 -0
  318. package/src/env/types.ts +15 -0
  319. package/src/filters/{base_filter.class.js → BaseFilter.ts} +192 -151
  320. package/src/filters/BlendColor.ts +217 -0
  321. package/src/filters/BlendImage.ts +228 -0
  322. package/src/filters/Blur.ts +179 -0
  323. package/src/filters/Boilerplate.ts +94 -0
  324. package/src/filters/Brightness.ts +83 -0
  325. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  326. package/src/filters/ColorMatrix.ts +145 -0
  327. package/src/filters/ColorMatrixFilters.ts +77 -0
  328. package/src/filters/Composed.ts +76 -0
  329. package/src/filters/Contrast.ts +82 -0
  330. package/src/filters/Convolute.ts +184 -0
  331. package/src/filters/FilterBackend.ts +34 -0
  332. package/src/filters/GLProbes/GLProbe.ts +11 -0
  333. package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
  334. package/src/filters/GLProbes/WebGLProbe.ts +46 -0
  335. package/src/filters/Gamma.ts +110 -0
  336. package/src/filters/Grayscale.ts +102 -0
  337. package/src/filters/HueRotation.ts +62 -0
  338. package/src/filters/Invert.ts +99 -0
  339. package/src/filters/Noise.ts +94 -0
  340. package/src/filters/Pixelate.ts +96 -0
  341. package/src/filters/RemoveColor.ts +135 -0
  342. package/src/filters/Resize.ts +538 -0
  343. package/src/filters/Saturation.ts +87 -0
  344. package/src/filters/Vibrance.ts +88 -0
  345. package/src/filters/WebGLFilterBackend.ts +430 -0
  346. package/src/filters/filters.ts +28 -0
  347. package/src/filters/index.ts +5 -0
  348. package/src/filters/shaders/baseFilter.ts +19 -0
  349. package/src/filters/shaders/blendColor.ts +33 -0
  350. package/src/filters/shaders/blendImage.ts +32 -0
  351. package/src/filters/shaders/blur.ts +24 -0
  352. package/src/filters/shaders/brightness.ts +11 -0
  353. package/src/filters/shaders/colorMatrix.ts +12 -0
  354. package/src/filters/shaders/constrast.ts +11 -0
  355. package/src/filters/shaders/convolute.ts +154 -0
  356. package/src/filters/shaders/gamma.ts +15 -0
  357. package/src/filters/shaders/grayscale.ts +36 -0
  358. package/src/filters/shaders/invert.ts +19 -0
  359. package/src/filters/shaders/noise.ts +16 -0
  360. package/src/filters/shaders/pixelate.ts +19 -0
  361. package/src/filters/shaders/removeColor.ts +13 -0
  362. package/src/filters/shaders/saturation.ts +15 -0
  363. package/src/filters/shaders/vibrance.ts +16 -0
  364. package/src/filters/typedefs.ts +65 -0
  365. package/src/gradient/Gradient.ts +406 -0
  366. package/src/gradient/constants.ts +12 -0
  367. package/src/gradient/parser/index.ts +3 -0
  368. package/src/gradient/parser/misc.ts +13 -0
  369. package/src/gradient/parser/parseColorStops.ts +56 -0
  370. package/src/gradient/parser/parseCoords.ts +73 -0
  371. package/src/gradient/typedefs.ts +104 -0
  372. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  373. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  374. package/src/parkinglot/straighten.ts +58 -0
  375. package/src/parser/applyViewboxTransform.ts +157 -0
  376. package/src/parser/attributes.ts +25 -0
  377. package/src/parser/constants.ts +115 -0
  378. package/src/parser/doesSomeParentMatch.ts +19 -0
  379. package/src/parser/elementById.ts +21 -0
  380. package/src/parser/elementMatchesRule.ts +16 -0
  381. package/src/parser/elements_parser.ts +191 -0
  382. package/src/parser/getCSSRules.ts +62 -0
  383. package/src/parser/getGlobalStylesForElement.ts +19 -0
  384. package/src/parser/getGradientDefs.ts +31 -0
  385. package/src/parser/getMultipleNodes.ts +15 -0
  386. package/src/parser/getSvgRegex.ts +5 -0
  387. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  388. package/src/parser/index.ts +9 -0
  389. package/src/parser/loadSVGFromString.ts +26 -0
  390. package/src/parser/loadSVGFromURL.ts +40 -0
  391. package/src/parser/normalizeAttr.ts +10 -0
  392. package/src/parser/normalizeValue.ts +63 -0
  393. package/src/parser/parseAttributes.ts +90 -0
  394. package/src/parser/parseElements.ts +28 -0
  395. package/src/parser/parseFontDeclaration.ts +44 -0
  396. package/src/parser/parsePointsAttribute.ts +34 -0
  397. package/src/parser/parseSVGDocument.ts +93 -0
  398. package/src/parser/parseStyleAttribute.ts +27 -0
  399. package/src/parser/parseStyleObject.ts +15 -0
  400. package/src/parser/parseStyleString.ts +16 -0
  401. package/src/parser/parseTransformAttribute.ts +155 -0
  402. package/src/parser/parseUseDirectives.ts +78 -0
  403. package/src/parser/percent.ts +27 -0
  404. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  405. package/src/parser/rotateMatrix.ts +21 -0
  406. package/src/parser/scaleMatrix.ts +9 -0
  407. package/src/parser/selectorMatches.ts +25 -0
  408. package/src/parser/setStrokeFillOpacity.ts +40 -0
  409. package/src/parser/skewMatrix.ts +6 -0
  410. package/src/parser/translateMatrix.ts +8 -0
  411. package/src/shapes/ActiveSelection.ts +189 -0
  412. package/src/shapes/Circle.ts +242 -0
  413. package/src/shapes/Ellipse.ts +179 -0
  414. package/src/shapes/Group.ts +1100 -0
  415. package/src/shapes/IText/DraggableTextDelegate.ts +382 -0
  416. package/src/shapes/IText/IText.ts +693 -0
  417. package/src/shapes/IText/ITextBehavior.ts +1064 -0
  418. package/src/shapes/IText/ITextClickBehavior.ts +325 -0
  419. package/src/shapes/IText/ITextKeyBehavior.ts +685 -0
  420. package/src/shapes/IText/constants.ts +47 -0
  421. package/src/shapes/Image.ts +841 -0
  422. package/src/shapes/Line.ts +346 -0
  423. package/src/shapes/Object/AnimatableObject.ts +106 -0
  424. package/src/shapes/Object/FabricObject.ts +29 -0
  425. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  426. package/src/shapes/Object/InteractiveObject.ts +672 -0
  427. package/src/shapes/Object/Object.ts +1561 -0
  428. package/src/shapes/Object/ObjectGeometry.ts +813 -0
  429. package/src/shapes/Object/ObjectOrigin.ts +276 -0
  430. package/src/shapes/Object/StackedObject.ts +206 -0
  431. package/src/shapes/Object/defaultValues.ts +108 -0
  432. package/src/shapes/Object/types/BaseProps.ts +96 -0
  433. package/src/shapes/Object/types/BorderProps.ts +40 -0
  434. package/src/shapes/Object/types/ControlProps.ts +69 -0
  435. package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
  436. package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
  437. package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
  438. package/src/shapes/Object/types/ObjectProps.ts +46 -0
  439. package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
  440. package/src/shapes/Object/types/index.ts +8 -0
  441. package/src/shapes/Path.ts +416 -0
  442. package/src/shapes/Polygon.ts +20 -0
  443. package/src/shapes/Polyline.ts +359 -0
  444. package/src/shapes/Rect.ts +233 -0
  445. package/src/shapes/Text/StyledText.ts +329 -0
  446. package/src/shapes/Text/Text.ts +1884 -0
  447. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  448. package/src/shapes/Text/constants.ts +91 -0
  449. package/src/shapes/Textbox.ts +477 -0
  450. package/src/shapes/Triangle.ts +60 -0
  451. package/src/typedefs.ts +115 -0
  452. package/src/util/animation/AnimationBase.ts +166 -0
  453. package/src/util/animation/AnimationFrameProvider.ts +9 -0
  454. package/src/util/animation/AnimationRegistry.ts +58 -0
  455. package/src/util/animation/ArrayAnimation.ts +27 -0
  456. package/src/util/animation/ColorAnimation.ts +74 -0
  457. package/src/util/animation/ValueAnimation.ts +29 -0
  458. package/src/util/animation/animate.ts +74 -0
  459. package/src/util/animation/easing.ts +327 -0
  460. package/src/util/animation/types.ts +136 -0
  461. package/src/util/applyMixins.ts +22 -0
  462. package/src/util/dom_event.ts +28 -0
  463. package/src/util/dom_misc.ts +121 -0
  464. package/src/util/dom_request.ts +64 -0
  465. package/src/util/dom_style.ts +20 -0
  466. package/src/util/fireEvent.ts +15 -0
  467. package/src/util/index.ts +102 -0
  468. package/src/util/internals/cloneDeep.ts +2 -0
  469. package/src/util/internals/getRandomInt.ts +8 -0
  470. package/src/util/internals/ifNaN.ts +9 -0
  471. package/src/util/internals/index.ts +3 -0
  472. package/src/util/internals/removeFromArray.ts +14 -0
  473. package/src/util/internals/uid.ts +3 -0
  474. package/src/util/lang_string.ts +79 -0
  475. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  476. package/src/util/misc/capValue.ts +2 -0
  477. package/src/util/misc/cos.ts +24 -0
  478. package/src/util/misc/dom.ts +50 -0
  479. package/src/util/misc/findScaleTo.ts +44 -0
  480. package/src/util/misc/groupSVGElements.ts +15 -0
  481. package/src/util/misc/isTransparent.ts +28 -0
  482. package/src/util/misc/matrix.ts +207 -0
  483. package/src/util/misc/mergeClipPaths.ts +40 -0
  484. package/src/util/misc/objectEnlive.ts +189 -0
  485. package/src/util/misc/objectTransforms.ts +129 -0
  486. package/src/util/misc/pick.ts +29 -0
  487. package/src/util/misc/planeChange.ts +136 -0
  488. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  489. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +226 -0
  490. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  491. package/src/util/misc/projectStroke/index.ts +53 -0
  492. package/src/util/misc/projectStroke/types.ts +24 -0
  493. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  494. package/src/util/misc/resolveOrigin.ts +22 -0
  495. package/src/util/misc/rotatePoint.ts +15 -0
  496. package/src/util/misc/sin.ts +26 -0
  497. package/src/util/misc/svgParsing.ts +181 -0
  498. package/src/util/misc/textStyles.ts +134 -0
  499. package/src/util/misc/toFixed.ts +8 -0
  500. package/src/util/misc/vectors.ts +82 -0
  501. package/src/util/path/index.ts +1038 -0
  502. package/src/util/path/regex.ts +41 -0
  503. package/src/util/path/typechecks.ts +145 -0
  504. package/src/util/path/typedefs.ts +305 -0
  505. package/src/util/transform_matrix_removal.ts +60 -0
  506. package/src/util/types.ts +78 -0
  507. package/tsconfig.json +106 -0
  508. package/HEADER.js +0 -203
  509. package/build.js +0 -287
  510. package/dist/fabric.js +0 -31187
  511. package/dist/fabric.min.js +0 -1
  512. package/old-travis-reference.yml +0 -97
  513. package/src/brushes/circle_brush.class.js +0 -144
  514. package/src/brushes/pattern_brush.class.js +0 -61
  515. package/src/brushes/pencil_brush.class.js +0 -310
  516. package/src/brushes/spray_brush.class.js +0 -219
  517. package/src/canvas.class.js +0 -1312
  518. package/src/color.class.js +0 -636
  519. package/src/control.class.js +0 -339
  520. package/src/controls.actions.js +0 -740
  521. package/src/controls.render.js +0 -99
  522. package/src/elements_parser.js +0 -152
  523. package/src/filters/2d_backend.class.js +0 -65
  524. package/src/filters/blendcolor_filter.class.js +0 -251
  525. package/src/filters/blendimage_filter.class.js +0 -247
  526. package/src/filters/blur_filter.class.js +0 -217
  527. package/src/filters/brightness_filter.class.js +0 -113
  528. package/src/filters/colormatrix_filter.class.js +0 -159
  529. package/src/filters/composed_filter.class.js +0 -72
  530. package/src/filters/contrast_filter.class.js +0 -113
  531. package/src/filters/convolute_filter.class.js +0 -352
  532. package/src/filters/filter_boilerplate.js +0 -111
  533. package/src/filters/filter_generator.js +0 -85
  534. package/src/filters/gamma_filter.class.js +0 -136
  535. package/src/filters/grayscale_filter.class.js +0 -154
  536. package/src/filters/hue_rotation.class.js +0 -107
  537. package/src/filters/invert_filter.class.js +0 -111
  538. package/src/filters/noise_filter.class.js +0 -134
  539. package/src/filters/pixelate_filter.class.js +0 -137
  540. package/src/filters/removecolor_filter.class.js +0 -173
  541. package/src/filters/resize_filter.class.js +0 -490
  542. package/src/filters/saturate_filter.class.js +0 -119
  543. package/src/filters/vibrance_filter.class.js +0 -122
  544. package/src/filters/webgl_backend.class.js +0 -396
  545. package/src/globalFabric.js +0 -4
  546. package/src/gradient.class.js +0 -490
  547. package/src/intersection.class.js +0 -172
  548. package/src/log.js +0 -11
  549. package/src/mixins/animation.mixin.js +0 -231
  550. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  551. package/src/mixins/canvas_events.mixin.js +0 -974
  552. package/src/mixins/canvas_gestures.mixin.js +0 -149
  553. package/src/mixins/canvas_grouping.mixin.js +0 -177
  554. package/src/mixins/canvas_serialization.mixin.js +0 -228
  555. package/src/mixins/collection.mixin.js +0 -170
  556. package/src/mixins/default_controls.js +0 -114
  557. package/src/mixins/itext.svg_export.js +0 -241
  558. package/src/mixins/itext_behavior.mixin.js +0 -940
  559. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  560. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  561. package/src/mixins/object.svg_export.js +0 -258
  562. package/src/mixins/object_geometry.mixin.js +0 -683
  563. package/src/mixins/object_interactivity.mixin.js +0 -314
  564. package/src/mixins/object_origin.mixin.js +0 -255
  565. package/src/mixins/object_stacking.mixin.js +0 -80
  566. package/src/mixins/object_straightening.mixin.js +0 -80
  567. package/src/mixins/observable.mixin.js +0 -141
  568. package/src/mixins/shared_methods.mixin.js +0 -94
  569. package/src/mixins/stateful.mixin.js +0 -107
  570. package/src/mixins/text_style.mixin.js +0 -324
  571. package/src/parser.js +0 -1090
  572. package/src/pattern.class.js +0 -189
  573. package/src/point.class.js +0 -337
  574. package/src/shadow.class.js +0 -195
  575. package/src/shapes/active_selection.class.js +0 -155
  576. package/src/shapes/circle.class.js +0 -210
  577. package/src/shapes/ellipse.class.js +0 -181
  578. package/src/shapes/group.class.js +0 -593
  579. package/src/shapes/image.class.js +0 -764
  580. package/src/shapes/itext.class.js +0 -526
  581. package/src/shapes/line.class.js +0 -324
  582. package/src/shapes/object.class.js +0 -2008
  583. package/src/shapes/path.class.js +0 -384
  584. package/src/shapes/polygon.class.js +0 -81
  585. package/src/shapes/polyline.class.js +0 -268
  586. package/src/shapes/rect.class.js +0 -187
  587. package/src/shapes/text.class.js +0 -1696
  588. package/src/shapes/textbox.class.js +0 -461
  589. package/src/shapes/triangle.class.js +0 -93
  590. package/src/static_canvas.class.js +0 -1881
  591. package/src/util/anim_ease.js +0 -398
  592. package/src/util/animate.js +0 -254
  593. package/src/util/animate_color.js +0 -74
  594. package/src/util/dom_event.js +0 -50
  595. package/src/util/dom_misc.js +0 -300
  596. package/src/util/dom_request.js +0 -54
  597. package/src/util/dom_style.js +0 -70
  598. package/src/util/lang_array.js +0 -94
  599. package/src/util/lang_class.js +0 -115
  600. package/src/util/lang_object.js +0 -75
  601. package/src/util/lang_string.js +0 -110
  602. package/src/util/misc.js +0 -1330
  603. package/src/util/named_accessors.mixin.js +0 -428
  604. package/src/util/path.js +0 -829
@@ -0,0 +1,51 @@
1
+ import { XY, 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: XY, T: XY, 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 { XY, 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: XY, B: XY, C: XY, 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 { XY, 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: XY, to: XY): 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 { XY } 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: XY[], 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 { XY, 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: XY, to: XY) => 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,96 @@
1
+ import type { TMat2D, TRectBounds } from '../../typedefs';
2
+ import { TComplexPathData, TParsedAbsoluteCubicCurveCommand, TPathSegmentInfo, TPointAngle, TSimplePathData, TParsedArcCommand } from './typedefs';
3
+ import { Point } from '../../Point';
4
+ /**
5
+ * Calculate bounding box of a cubic Bezier curve
6
+ * Taken from http://jsbin.com/ivomiq/56/edit (no credits available)
7
+ * TODO: can we normalize this with the starting points set at 0 and then translated the bbox?
8
+ * @param {number} begx starting point
9
+ * @param {number} begy
10
+ * @param {number} cp1x first control point
11
+ * @param {number} cp1y
12
+ * @param {number} cp2x second control point
13
+ * @param {number} cp2y
14
+ * @param {number} endx end of bezier
15
+ * @param {number} endy
16
+ * @return {TRectBounds} the rectangular bounds
17
+ */
18
+ export declare function getBoundsOfCurve(begx: number, begy: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, endx: number, endy: number): TRectBounds;
19
+ /**
20
+ * Converts arc to a bunch of cubic Bezier curves
21
+ * @param {number} fx starting point x
22
+ * @param {number} fy starting point y
23
+ * @param {TParsedArcCommand} coords Arc command
24
+ */
25
+ export declare const fromArcToBeziers: (fx: number, fy: number, [_, rx, ry, rot, large, sweep, tx, ty]: TParsedArcCommand) => TParsedAbsoluteCubicCurveCommand[];
26
+ /**
27
+ * This function takes a parsed SVG path and makes it simpler for fabricJS logic.
28
+ * Simplification consist of:
29
+ * - All commands converted to absolute (lowercase to uppercase)
30
+ * - S converted to C
31
+ * - T converted to Q
32
+ * - A converted to C
33
+ * @param {TComplexPathData} path the array of commands of a parsed SVG path for `Path`
34
+ * @return {TSimplePathData} the simplified array of commands of a parsed SVG path for `Path`
35
+ * TODO: figure out how to remove the type assertions in a nice way
36
+ */
37
+ export declare const makePathSimpler: (path: TComplexPathData) => TSimplePathData;
38
+ /**
39
+ * Run over a parsed and simplified path and extract some information (length of each command and starting point)
40
+ * @param {TSimplePathData} path parsed path commands
41
+ * @return {TPathSegmentInfo[]} path commands information
42
+ */
43
+ export declare const getPathSegmentsInfo: (path: TSimplePathData) => TPathSegmentInfo[];
44
+ /**
45
+ * Get the point on the path that is distance along the path
46
+ * @param path
47
+ * @param distance
48
+ * @param infos
49
+ */
50
+ export declare const getPointOnPath: (path: TSimplePathData, distance: number, infos?: TPathSegmentInfo[]) => TPointAngle | undefined;
51
+ /**
52
+ *
53
+ * @param {string} pathString
54
+ * @return {TComplexPathData} An array of SVG path commands
55
+ * @example <caption>Usage</caption>
56
+ * parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [
57
+ * ['M', 3, 4],
58
+ * ['Q', 3, 5, 2, 1, 4, 0],
59
+ * ['Q', 9, 12, 2, 1, 4, 0],
60
+ * ];
61
+ *
62
+ */
63
+ export declare const parsePath: (pathString: string) => TComplexPathData;
64
+ /**
65
+ *
66
+ * Converts points to a smooth SVG path
67
+ * @param {XY[]} points Array of points
68
+ * @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.
69
+ * @return {(string|number)[][]} An array of SVG path commands
70
+ */
71
+ export declare const getSmoothPathFromPoints: (points: Point[], correction?: number) => TSimplePathData;
72
+ /**
73
+ * Transform a path by transforming each segment.
74
+ * it has to be a simplified path or it won't work.
75
+ * WARNING: this depends from pathOffset for correct operation
76
+ * @param {TSimplePathData} path fabricJS parsed and simplified path commands
77
+ * @param {TMat2D} transform matrix that represent the transformation
78
+ * @param {Point} [pathOffset] `Path.pathOffset`
79
+ * @returns {TSimplePathData} the transformed path
80
+ */
81
+ export declare const transformPath: (path: TSimplePathData, transform: TMat2D, pathOffset: Point) => TSimplePathData;
82
+ /**
83
+ * Returns an array of path commands to create a regular polygon
84
+ * @param {number} numVertexes
85
+ * @param {number} radius
86
+ * @returns {TSimplePathData} An array of SVG path commands
87
+ */
88
+ export declare const getRegularPolygonPath: (numVertexes: number, radius: number) => TSimplePathData;
89
+ /**
90
+ * Join path commands to go back to svg format
91
+ * @param {TSimplePathData} pathData fabricJS parsed path commands
92
+ * @param {number} fractionDigits number of fraction digits to "leave"
93
+ * @return {String} joined path 'M 0 0 L 20 30'
94
+ */
95
+ export declare const joinPath: (pathData: TSimplePathData, fractionDigits?: number) => string;
96
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,3 @@
1
+ export declare const numberRegExStr: string;
2
+ export declare const rePathCommand: string;
3
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1,24 @@
1
+ import type { TComplexParsedCommand, TParsedAbsoluteArcCommand, TParsedAbsoluteClosePathCommand, TParsedAbsoluteCubicCurveCommand, TParsedAbsoluteCubicCurveShortcutCommand, TParsedAbsoluteHorizontalLineCommand, TParsedAbsoluteLineCommand, TParsedAbsoluteMoveToCommand, TParsedAbsoluteQuadraticCurveCommand, TParsedAbsoluteQuadraticCurveShortcutCommand, TParsedAbsoluteVerticalLineCommand, TParsedClosePathCommand, TParsedLineCommand, TParsedRelativeArcCommand, TParsedRelativeClosePathCommand, TParsedRelativeCubicCurveCommand, TParsedRelativeCubicCurveShortcutCommand, TParsedRelativeHorizontalLineCommand, TParsedRelativeLineCommand, TParsedRelativeMoveToCommand, TParsedRelativeQuadraticCurveCommand, TParsedRelativeQuadraticCurveShortcutCommand, TParsedRelativeVerticalLineCommand } from './typedefs';
2
+ export declare function isAbsMoveToCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteMoveToCommand;
3
+ export declare function isRelMoveToCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeMoveToCommand;
4
+ export declare function isAbsLineCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteLineCommand;
5
+ export declare function isRelLineCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeLineCommand;
6
+ export declare function isLineCommand(cmd: TComplexParsedCommand): cmd is TParsedLineCommand;
7
+ export declare function isAbsHorizontalLineCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteHorizontalLineCommand;
8
+ export declare function isRelHorizontalLineCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeHorizontalLineCommand;
9
+ export declare function isAbsVerticalLineCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteVerticalLineCommand;
10
+ export declare function isRelVerticalLineCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeVerticalLineCommand;
11
+ export declare function isAbsClosePathCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteClosePathCommand;
12
+ export declare function isRelClosePathCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeClosePathCommand;
13
+ export declare function isClosePathCommand(cmd: TComplexParsedCommand): cmd is TParsedClosePathCommand;
14
+ export declare function isAbsCubicCurveCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteCubicCurveCommand;
15
+ export declare function isRelCubicCurveCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeCubicCurveCommand;
16
+ export declare function isAbsCubicCurveShortcutCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteCubicCurveShortcutCommand;
17
+ export declare function isRelCubicCurveShortcutCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeCubicCurveShortcutCommand;
18
+ export declare function isAbsQuadraticCurveCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteQuadraticCurveCommand;
19
+ export declare function isRelQuadraticCurveCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeQuadraticCurveCommand;
20
+ export declare function isAbsQuadraticCurveShortcutCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteQuadraticCurveShortcutCommand;
21
+ export declare function isRelQuadraticCurveShortcutCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeQuadraticCurveShortcutCommand;
22
+ export declare function isAbsArcCmd(cmd: TComplexParsedCommand): cmd is TParsedAbsoluteArcCommand;
23
+ export declare function isRelArcCmd(cmd: TComplexParsedCommand): cmd is TParsedRelativeArcCommand;
24
+ //# sourceMappingURL=typechecks.d.ts.map