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,751 @@
1
+ import type { CanvasEvents, StaticCanvasEvents } from '../EventTypeDefs';
2
+ import { CommonMethods } from '../CommonMethods';
3
+ import { Point } from '../Point';
4
+ import type { BaseFabricObject as FabricObject } from '../EventTypeDefs';
5
+ import type { TCachedFabricObject } from '../shapes/Object/Object';
6
+ import { TCornerPoint, TDataUrlOptions, TFiller, TMat2D, TSize, TSVGReviver, TToCanvasElementOptions, TValidToObjectMethod } from '../typedefs';
7
+ import { EnlivenObjectOptions } from '../util/misc/objectEnlive';
8
+ export type TCanvasSizeOptions = {
9
+ backstoreOnly?: boolean;
10
+ cssOnly?: boolean;
11
+ };
12
+ export type TSVGExportOptions = {
13
+ suppressPreamble?: boolean;
14
+ viewBox?: {
15
+ x: number;
16
+ y: number;
17
+ width: number;
18
+ height: number;
19
+ };
20
+ encoding?: 'UTF-8';
21
+ width?: string;
22
+ height?: string;
23
+ reviver?: TSVGReviver;
24
+ };
25
+ type TCanvasHydrationOption = {
26
+ signal?: AbortSignal;
27
+ };
28
+ declare const StaticCanvas_base: {
29
+ new (...args: any[]): {
30
+ _objects: FabricObject[];
31
+ _onObjectAdded(object: FabricObject): void;
32
+ _onObjectRemoved(object: FabricObject): void;
33
+ _onStackOrderChanged(object: FabricObject): void;
34
+ add(...objects: FabricObject[]): number;
35
+ insertAt(index: number, ...objects: FabricObject[]): number;
36
+ remove(...objects: FabricObject[]): FabricObject[];
37
+ forEachObject(callback: (object: FabricObject, index: number, array: FabricObject[]) => any): void;
38
+ getObjects(...types: string[]): FabricObject[];
39
+ item(index: number): FabricObject;
40
+ isEmpty(): boolean;
41
+ size(): number;
42
+ contains(object: FabricObject, deep?: boolean | undefined): boolean;
43
+ complexity(): number;
44
+ sendObjectToBack(object: FabricObject): boolean;
45
+ bringObjectToFront(object: FabricObject): boolean;
46
+ sendObjectBackwards(object: FabricObject, intersecting?: boolean | undefined): boolean;
47
+ bringObjectForward(object: FabricObject, intersecting?: boolean | undefined): boolean;
48
+ moveObjectTo(object: FabricObject, index: number): boolean;
49
+ findNewLowerIndex(object: FabricObject, idx: number, intersecting?: boolean | undefined): number;
50
+ findNewUpperIndex(object: FabricObject, idx: number, intersecting?: boolean | undefined): number;
51
+ };
52
+ } & {
53
+ new (): CommonMethods<CanvasEvents>;
54
+ };
55
+ /**
56
+ * Static canvas class
57
+ * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo}
58
+ * @fires before:render
59
+ * @fires after:render
60
+ * @fires canvas:cleared
61
+ * @fires object:added
62
+ * @fires object:removed
63
+ */
64
+ export declare class StaticCanvas<EventSpec extends StaticCanvasEvents = StaticCanvasEvents> extends StaticCanvas_base {
65
+ /**
66
+ * Background color of canvas instance.
67
+ * @type {(String|TFiller)}
68
+ * @default
69
+ */
70
+ backgroundColor: TFiller | string;
71
+ /**
72
+ * Background image of canvas instance.
73
+ * since 2.4.0 image caching is active, please when putting an image as background, add to the
74
+ * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom
75
+ * vale. As an alternative you can disable image objectCaching
76
+ * @type FabricObject
77
+ * @default
78
+ */
79
+ backgroundImage: FabricObject | null;
80
+ /**
81
+ * Overlay color of canvas instance.
82
+ * @since 1.3.9
83
+ * @type {(String|TFiller)}
84
+ * @default
85
+ */
86
+ overlayColor: TFiller | string;
87
+ /**
88
+ * Overlay image of canvas instance.
89
+ * since 2.4.0 image caching is active, please when putting an image as overlay, add to the
90
+ * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom
91
+ * vale. As an alternative you can disable image objectCaching
92
+ * @type FabricObject
93
+ * @default
94
+ */
95
+ overlayImage: FabricObject | null;
96
+ /**
97
+ * Indicates whether toObject/toDatalessObject should include default values
98
+ * if set to false, takes precedence over the object value.
99
+ * @type Boolean
100
+ * @default
101
+ */
102
+ includeDefaultValues: boolean;
103
+ /**
104
+ * Indicates whether {@link add}, {@link insertAt} and {@link remove},
105
+ * {@link moveTo}, {@link clear} and many more, should also re-render canvas.
106
+ * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once
107
+ * since the renders are queued and executed one per frame.
108
+ * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )
109
+ * Left default to true to do not break documentation and old app, fiddles.
110
+ * @type Boolean
111
+ * @default
112
+ */
113
+ renderOnAddRemove: boolean;
114
+ /**
115
+ * Indicates whether object controls (borders/controls) are rendered above overlay image
116
+ * @type Boolean
117
+ * @default
118
+ */
119
+ controlsAboveOverlay: boolean;
120
+ /**
121
+ * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas
122
+ * @type Boolean
123
+ * @default
124
+ */
125
+ allowTouchScrolling: boolean;
126
+ /**
127
+ * Indicates whether this canvas will use image smoothing, this is on by default in browsers
128
+ * @type Boolean
129
+ * @default
130
+ */
131
+ imageSmoothingEnabled: boolean;
132
+ /**
133
+ * The transformation (a Canvas 2D API transform matrix) which focuses the viewport
134
+ * @type Array
135
+ * @example <caption>Default transform</caption>
136
+ * canvas.viewportTransform = [1, 0, 0, 1, 0, 0];
137
+ * @example <caption>Scale by 70% and translate toward bottom-right by 50, without skewing</caption>
138
+ * canvas.viewportTransform = [0.7, 0, 0, 0.7, 50, 50];
139
+ * @default
140
+ */
141
+ viewportTransform: TMat2D;
142
+ /**
143
+ * if set to false background image is not affected by viewport transform
144
+ * @since 1.6.3
145
+ * @type Boolean
146
+ * @todo we should really find a different way to do this
147
+ * @default
148
+ */
149
+ backgroundVpt: boolean;
150
+ /**
151
+ * if set to false overlya image is not affected by viewport transform
152
+ * @since 1.6.3
153
+ * @type Boolean
154
+ * @todo we should really find a different way to do this
155
+ * @default
156
+ */
157
+ overlayVpt: boolean;
158
+ /**
159
+ * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens
160
+ * @type Boolean
161
+ * @default
162
+ */
163
+ enableRetinaScaling: boolean;
164
+ /**
165
+ * Describe canvas element extension over design
166
+ * properties are tl,tr,bl,br.
167
+ * if canvas is not zoomed/panned those points are the four corner of canvas
168
+ * if canvas is viewportTransformed you those points indicate the extension
169
+ * of canvas element in plain untrasformed coordinates
170
+ * The coordinates get updated with @method calcViewportBoundaries.
171
+ */
172
+ vptCoords: TCornerPoint;
173
+ /**
174
+ * Based on vptCoords and object.aCoords, skip rendering of objects that
175
+ * are not included in current viewport.
176
+ * May greatly help in applications with crowded canvas and use of zoom/pan
177
+ * If One of the corner of the bounding box of the object is on the canvas
178
+ * the objects get rendered.
179
+ * @type Boolean
180
+ * @default
181
+ */
182
+ skipOffscreen: boolean;
183
+ /**
184
+ * a fabricObject that, without stroke define a clipping area with their shape. filled in black
185
+ * the clipPath object gets used when the canvas has rendered, and the context is placed in the
186
+ * top left corner of the canvas.
187
+ * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true
188
+ * @type FabricObject
189
+ */
190
+ clipPath: FabricObject;
191
+ /**
192
+ * A reference to the canvas actual HTMLCanvasElement.
193
+ * Can be use to read the raw pixels, but never write or manipulate
194
+ * @type HTMLCanvasElement
195
+ */
196
+ lowerCanvasEl: HTMLCanvasElement;
197
+ contextContainer: CanvasRenderingContext2D;
198
+ /**
199
+ * Width in virtual/logical pixels of the canvas.
200
+ * The canvas can be larger than width if retina scaling is active
201
+ * @type number
202
+ */
203
+ width: number;
204
+ /**
205
+ * Height in virtual/logical pixels of the canvas.
206
+ * The canvas can be taller than width if retina scaling is active
207
+ * @type height
208
+ */
209
+ height: number;
210
+ /**
211
+ * If true the Canvas is in the process or has been disposed/destroyed.
212
+ * No more rendering operation will be executed on this canvas.
213
+ * @type boolean
214
+ */
215
+ destroyed?: boolean;
216
+ /**
217
+ * Started the process of disposing but not done yet.
218
+ * WIll likely complete the render cycle already scheduled but stopping adding more.
219
+ * @type boolean
220
+ */
221
+ disposed?: boolean;
222
+ /**
223
+ * Keeps a copy of the canvas style before setting retina scaling and other potions
224
+ * in order to return it to original state on dispose
225
+ * @type string
226
+ */
227
+ _originalCanvasStyle?: string;
228
+ _offset: {
229
+ left: number;
230
+ top: number;
231
+ };
232
+ protected hasLostContext: boolean;
233
+ protected nextRenderHandle: number;
234
+ protected __cleanupTask?: {
235
+ (): void;
236
+ kill: (reason?: any) => void;
237
+ };
238
+ constructor(el: string | HTMLCanvasElement, options?: {});
239
+ protected initElements(el: string | HTMLCanvasElement): void;
240
+ add(...objects: FabricObject[]): number;
241
+ insertAt(index: number, ...objects: FabricObject[]): number;
242
+ remove(...objects: FabricObject[]): FabricObject[];
243
+ _onObjectAdded(obj: FabricObject): void;
244
+ _onObjectRemoved(obj: FabricObject): void;
245
+ _onStackOrderChanged(): void;
246
+ /**
247
+ * @private
248
+ */
249
+ _isRetinaScaling(): boolean;
250
+ /**
251
+ * @private
252
+ * @return {Number} retinaScaling if applied, otherwise 1;
253
+ */
254
+ getRetinaScaling(): number;
255
+ protected _initRetinaScaling(): void;
256
+ protected __initRetinaScaling(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D): void;
257
+ /**
258
+ * Calculates canvas element offset relative to the document
259
+ * This method is also attached as "resize" event handler of window
260
+ */
261
+ calcOffset(): {
262
+ left: number;
263
+ top: number;
264
+ };
265
+ /**
266
+ * @private
267
+ */
268
+ protected _createCanvasElement(): HTMLCanvasElement;
269
+ /**
270
+ * Creates a bottom canvas
271
+ * @private
272
+ * @param {HTMLElement} [canvasEl]
273
+ */
274
+ protected _createLowerCanvas(canvasEl: HTMLCanvasElement | string): void;
275
+ /**
276
+ * Returns canvas width (in px)
277
+ * @return {Number}
278
+ */
279
+ getWidth(): number;
280
+ /**
281
+ * Returns canvas height (in px)
282
+ * @return {Number}
283
+ */
284
+ getHeight(): number;
285
+ /**
286
+ * Sets width of this canvas instance
287
+ * @param {Number|String} value Value to set width to
288
+ * @param {Object} [options] Options object
289
+ * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions
290
+ * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions
291
+ * @deprecated will be removed in 7.0
292
+ */
293
+ setWidth(value: number, options: TCanvasSizeOptions): void;
294
+ /**
295
+ * Sets height of this canvas instance
296
+ * @param {Number|String} value Value to set height to
297
+ * @param {Object} [options] Options object
298
+ * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions
299
+ * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions
300
+ * @deprecated will be removed in 7.0
301
+ */
302
+ setHeight(value: number, options: TCanvasSizeOptions): void;
303
+ /**
304
+ * Internal use only
305
+ * @protected
306
+ */
307
+ protected _setDimensionsImpl(dimensions: Partial<TSize>, { cssOnly, backstoreOnly }?: TCanvasSizeOptions): void;
308
+ /**
309
+ * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)
310
+ * @param {Object} dimensions Object with width/height properties
311
+ * @param {Number|String} [dimensions.width] Width of canvas element
312
+ * @param {Number|String} [dimensions.height] Height of canvas element
313
+ * @param {Object} [options] Options object
314
+ * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions
315
+ * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions
316
+ */
317
+ setDimensions(dimensions: Partial<TSize>, { cssOnly, backstoreOnly }?: TCanvasSizeOptions): void;
318
+ /**
319
+ * Helper for setting width/height
320
+ * @private
321
+ * @param {String} prop property (width|height)
322
+ * @param {Number} value value to set property to
323
+ * @todo subclass in canvas and handle upperCanvasEl there.
324
+ */
325
+ _setBackstoreDimension(prop: keyof TSize, value: number): void;
326
+ /**
327
+ * Helper for setting css width/height
328
+ * @private
329
+ * @param {String} prop property (width|height)
330
+ * @param {String} value value to set property to
331
+ * @todo subclass in canvas and handle upperCanvasEl there.
332
+ */
333
+ _setCssDimension(prop: keyof TSize, value: string): void;
334
+ /**
335
+ * Returns canvas zoom level
336
+ * @return {Number}
337
+ */
338
+ getZoom(): number;
339
+ /**
340
+ * Sets viewport transformation of this canvas instance
341
+ * @param {Array} vpt a Canvas 2D API transform matrix
342
+ */
343
+ setViewportTransform(vpt: TMat2D): void;
344
+ /**
345
+ * Sets zoom level of this canvas instance, the zoom centered around point
346
+ * meaning that following zoom to point with the same point will have the visual
347
+ * effect of the zoom originating from that point. The point won't move.
348
+ * It has nothing to do with canvas center or visual center of the viewport.
349
+ * @param {Point} point to zoom with respect to
350
+ * @param {Number} value to set zoom to, less than 1 zooms out
351
+ */
352
+ zoomToPoint(point: Point, value: number): void;
353
+ /**
354
+ * Sets zoom level of this canvas instance
355
+ * @param {Number} value to set zoom to, less than 1 zooms out
356
+ */
357
+ setZoom(value: number): void;
358
+ /**
359
+ * Pan viewport so as to place point at top left corner of canvas
360
+ * @param {Point} point to move to
361
+ */
362
+ absolutePan(point: Point): void;
363
+ /**
364
+ * Pans viewpoint relatively
365
+ * @param {Point} point (position vector) to move by
366
+ */
367
+ relativePan(point: Point): void;
368
+ /**
369
+ * Returns &lt;canvas> element corresponding to this instance
370
+ * @return {HTMLCanvasElement}
371
+ */
372
+ getElement(): HTMLCanvasElement;
373
+ /**
374
+ * Clears specified context of canvas element
375
+ * @param {CanvasRenderingContext2D} ctx Context to clear
376
+ */
377
+ clearContext(ctx: CanvasRenderingContext2D): void;
378
+ /**
379
+ * Returns context of canvas where objects are drawn
380
+ * @return {CanvasRenderingContext2D}
381
+ */
382
+ getContext(): CanvasRenderingContext2D;
383
+ /**
384
+ * Clears all contexts (background, main, top) of an instance
385
+ */
386
+ clear(): void;
387
+ /**
388
+ * Renders the canvas
389
+ */
390
+ renderAll(): void;
391
+ /**
392
+ * Function created to be instance bound at initialization
393
+ * used in requestAnimationFrame rendering
394
+ * Let the fabricJS call it. If you call it manually you could have more
395
+ * animationFrame stacking on to of each other
396
+ * for an imperative rendering, use canvas.renderAll
397
+ * @private
398
+ */
399
+ renderAndReset(): void;
400
+ /**
401
+ * Append a renderAll request to next animation frame.
402
+ * unless one is already in progress, in that case nothing is done
403
+ * a boolean flag will avoid appending more.
404
+ */
405
+ requestRenderAll(): void;
406
+ /**
407
+ * Calculate the position of the 4 corner of canvas with current viewportTransform.
408
+ * helps to determinate when an object is in the current rendering viewport using
409
+ * object absolute coordinates ( aCoords )
410
+ * @return {Object} points.tl
411
+ * @chainable
412
+ */
413
+ calcViewportBoundaries(): TCornerPoint;
414
+ cancelRequestedRender(): void;
415
+ drawControls(ctx: CanvasRenderingContext2D): void;
416
+ /**
417
+ * Renders background, objects, overlay and controls.
418
+ * @param {CanvasRenderingContext2D} ctx
419
+ * @param {Array} objects to render
420
+ */
421
+ renderCanvas(ctx: CanvasRenderingContext2D, objects: FabricObject[]): void;
422
+ /**
423
+ * Paint the cached clipPath on the lowerCanvasEl
424
+ * @param {CanvasRenderingContext2D} ctx Context to render on
425
+ */
426
+ drawClipPathOnCanvas(ctx: CanvasRenderingContext2D, clipPath: TCachedFabricObject): void;
427
+ /**
428
+ * @private
429
+ * @param {CanvasRenderingContext2D} ctx Context to render on
430
+ * @param {Array} objects to render
431
+ */
432
+ _renderObjects(ctx: CanvasRenderingContext2D, objects: FabricObject[]): void;
433
+ /**
434
+ * @private
435
+ * @param {CanvasRenderingContext2D} ctx Context to render on
436
+ * @param {string} property 'background' or 'overlay'
437
+ */
438
+ _renderBackgroundOrOverlay(ctx: CanvasRenderingContext2D, property: 'background' | 'overlay'): void;
439
+ /**
440
+ * @private
441
+ * @param {CanvasRenderingContext2D} ctx Context to render on
442
+ */
443
+ _renderBackground(ctx: CanvasRenderingContext2D): void;
444
+ /**
445
+ * @private
446
+ * @param {CanvasRenderingContext2D} ctx Context to render on
447
+ */
448
+ _renderOverlay(ctx: CanvasRenderingContext2D): void;
449
+ /**
450
+ * Returns coordinates of a center of canvas.
451
+ * Returned value is an object with top and left properties
452
+ * @return {Object} object with "top" and "left" number values
453
+ * @deprecated migrate to `getCenterPoint`
454
+ */
455
+ getCenter(): {
456
+ top: number;
457
+ left: number;
458
+ };
459
+ /**
460
+ * Returns coordinates of a center of canvas.
461
+ * @return {Point}
462
+ */
463
+ getCenterPoint(): Point;
464
+ /**
465
+ * Centers object horizontally in the canvas
466
+ */
467
+ centerObjectH(object: FabricObject): void;
468
+ /**
469
+ * Centers object vertically in the canvas
470
+ * @param {FabricObject} object Object to center vertically
471
+ */
472
+ centerObjectV(object: FabricObject): void;
473
+ /**
474
+ * Centers object vertically and horizontally in the canvas
475
+ * @param {FabricObject} object Object to center vertically and horizontally
476
+ */
477
+ centerObject(object: FabricObject): void;
478
+ /**
479
+ * Centers object vertically and horizontally in the viewport
480
+ * @param {FabricObject} object Object to center vertically and horizontally
481
+ */
482
+ viewportCenterObject(object: FabricObject): void;
483
+ /**
484
+ * Centers object horizontally in the viewport, object.top is unchanged
485
+ * @param {FabricObject} object Object to center vertically and horizontally
486
+ */
487
+ viewportCenterObjectH(object: FabricObject): void;
488
+ /**
489
+ * Centers object Vertically in the viewport, object.top is unchanged
490
+ * @param {FabricObject} object Object to center vertically and horizontally
491
+ */
492
+ viewportCenterObjectV(object: FabricObject): void;
493
+ /**
494
+ * Calculate the point in canvas that correspond to the center of actual viewport.
495
+ * @return {Point} vpCenter, viewport center
496
+ */
497
+ getVpCenter(): Point;
498
+ /**
499
+ * @private
500
+ * @param {FabricObject} object Object to center
501
+ * @param {Point} center Center point
502
+ */
503
+ _centerObject(object: FabricObject, center: Point): void;
504
+ /**
505
+ * Returns dataless JSON representation of canvas
506
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
507
+ * @return {String} json string
508
+ */
509
+ toDatalessJSON(propertiesToInclude?: string[]): any;
510
+ /**
511
+ * Returns object representation of canvas
512
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
513
+ * @return {Object} object representation of an instance
514
+ */
515
+ toObject(propertiesToInclude?: string[]): any;
516
+ /**
517
+ * Returns Object representation of canvas
518
+ * this alias is provided because if you call JSON.stringify on an instance,
519
+ * the toJSON object will be invoked if it exists.
520
+ * Having a toJSON method means you can do JSON.stringify(myCanvas)
521
+ * @return {Object} JSON compatible object
522
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}
523
+ * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}
524
+ * @example <caption>JSON without additional properties</caption>
525
+ * var json = canvas.toJSON();
526
+ * @example <caption>JSON with additional properties included</caption>
527
+ * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY']);
528
+ * @example <caption>JSON without default values</caption>
529
+ * var json = canvas.toJSON();
530
+ */
531
+ toJSON(): any;
532
+ /**
533
+ * Returns dataless object representation of canvas
534
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
535
+ * @return {Object} object representation of an instance
536
+ */
537
+ toDatalessObject(propertiesToInclude?: string[]): any;
538
+ /**
539
+ * @private
540
+ */
541
+ _toObjectMethod(methodName: TValidToObjectMethod, propertiesToInclude?: string[]): any;
542
+ /**
543
+ * @private
544
+ */
545
+ _toObject(instance: FabricObject, methodName: TValidToObjectMethod, propertiesToInclude?: string[]): Record<string, any>;
546
+ /**
547
+ * @private
548
+ */
549
+ __serializeBgOverlay(methodName: TValidToObjectMethod, propertiesToInclude?: string[]): any;
550
+ /**
551
+ * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,
552
+ * a zoomed canvas will then produce zoomed SVG output.
553
+ * @type Boolean
554
+ * @default
555
+ */
556
+ svgViewportTransformation: boolean;
557
+ /**
558
+ * Returns SVG representation of canvas
559
+ * @function
560
+ * @param {Object} [options] Options object for SVG output
561
+ * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included
562
+ * @param {Object} [options.viewBox] SVG viewbox object
563
+ * @param {Number} [options.viewBox.x] x-coordinate of viewbox
564
+ * @param {Number} [options.viewBox.y] y-coordinate of viewbox
565
+ * @param {Number} [options.viewBox.width] Width of viewbox
566
+ * @param {Number} [options.viewBox.height] Height of viewbox
567
+ * @param {String} [options.encoding=UTF-8] Encoding of SVG output
568
+ * @param {String} [options.width] desired width of svg with or without units
569
+ * @param {String} [options.height] desired height of svg with or without units
570
+ * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.
571
+ * @return {String} SVG string
572
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}
573
+ * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}
574
+ * @example <caption>Normal SVG output</caption>
575
+ * var svg = canvas.toSVG();
576
+ * @example <caption>SVG output without preamble (without &lt;?xml ../>)</caption>
577
+ * var svg = canvas.toSVG({suppressPreamble: true});
578
+ * @example <caption>SVG output with viewBox attribute</caption>
579
+ * var svg = canvas.toSVG({
580
+ * viewBox: {
581
+ * x: 100,
582
+ * y: 100,
583
+ * width: 200,
584
+ * height: 300
585
+ * }
586
+ * });
587
+ * @example <caption>SVG output with different encoding (default: UTF-8)</caption>
588
+ * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});
589
+ * @example <caption>Modify SVG output with reviver function</caption>
590
+ * var svg = canvas.toSVG(null, function(svg) {
591
+ * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');
592
+ * });
593
+ */
594
+ toSVG(options: TSVGExportOptions | undefined, reviver: TSVGReviver): string;
595
+ /**
596
+ * @private
597
+ */
598
+ _setSVGPreamble(markup: string[], options: TSVGExportOptions): void;
599
+ /**
600
+ * @private
601
+ */
602
+ _setSVGHeader(markup: string[], options: TSVGExportOptions): void;
603
+ createSVGClipPathMarkup(options: TSVGExportOptions): string;
604
+ /**
605
+ * Creates markup containing SVG referenced elements like patterns, gradients etc.
606
+ * @return {String}
607
+ */
608
+ createSVGRefElementsMarkup(): string;
609
+ /**
610
+ * Creates markup containing SVG font faces,
611
+ * font URLs for font faces must be collected by developers
612
+ * and are not extracted from the DOM by fabricjs
613
+ * @param {Array} objects Array of fabric objects
614
+ * @return {String}
615
+ */
616
+ createSVGFontFacesMarkup(): string;
617
+ /**
618
+ * @private
619
+ */
620
+ _setSVGObjects(markup: string[], reviver: TSVGReviver): void;
621
+ /**
622
+ * This is its own function because the Canvas ( non static ) requires extra code here
623
+ * @private
624
+ */
625
+ _setSVGObject(markup: string[], instance: FabricObject, reviver: TSVGReviver): void;
626
+ /**
627
+ * @private
628
+ */
629
+ _setSVGBgOverlayImage(markup: string[], property: 'overlayImage' | 'backgroundImage', reviver: TSVGReviver): void;
630
+ /**
631
+ * @TODO this seems to handle patterns but fail at gradients.
632
+ * @private
633
+ */
634
+ _setSVGBgOverlayColor(markup: string[], property: 'background' | 'overlay'): void;
635
+ /**
636
+ * Populates canvas with data from the specified JSON.
637
+ * JSON format must conform to the one of {@link fabric.Canvas#toJSON}
638
+ *
639
+ * **IMPORTANT**: It is recommended to abort loading tasks before calling this method to prevent race conditions and unnecessary networking
640
+ *
641
+ * @param {String|Object} json JSON string or object
642
+ * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.
643
+ * @param {Object} [options] options
644
+ * @param {AbortSignal} [options.signal] see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
645
+ * @return {Promise<Canvas | StaticCanvas>} instance
646
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}
647
+ * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}
648
+ * @example <caption>loadFromJSON</caption>
649
+ * canvas.loadFromJSON(json).then((canvas) => canvas.requestRenderAll());
650
+ * @example <caption>loadFromJSON with reviver</caption>
651
+ * canvas.loadFromJSON(json, function(o, object) {
652
+ * // `o` = json object
653
+ * // `object` = fabric.Object instance
654
+ * // ... do some stuff ...
655
+ * }).then((canvas) => {
656
+ * ... canvas is restored, add your code.
657
+ * });
658
+ *
659
+ */
660
+ loadFromJSON(json: string | Record<string, any>, reviver?: EnlivenObjectOptions['reviver'], { signal }?: TCanvasHydrationOption): Promise<this>;
661
+ /**
662
+ * Clones canvas instance
663
+ * @param {string[]} [properties] Array of properties to include in the cloned canvas and children
664
+ */
665
+ clone(properties: string[]): Promise<this>;
666
+ /**
667
+ * Clones canvas instance without cloning existing data.
668
+ * This essentially copies canvas dimensions since loadFromJSON does not affect canvas size.
669
+ */
670
+ cloneWithoutData(): this;
671
+ /**
672
+ * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately
673
+ * @param {Object} [options] Options object
674
+ * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png"
675
+ * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.
676
+ * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent
677
+ * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14
678
+ * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14
679
+ * @param {Number} [options.width] Cropping width. Introduced in v1.2.14
680
+ * @param {Number} [options.height] Cropping height. Introduced in v1.2.14
681
+ * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0
682
+ * @param {(object: fabric.Object) => boolean} [options.filter] Function to filter objects.
683
+ * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format
684
+ * @see {@link https://jsfiddle.net/xsjua1rd/ demo}
685
+ * @example <caption>Generate jpeg dataURL with lower quality</caption>
686
+ * var dataURL = canvas.toDataURL({
687
+ * format: 'jpeg',
688
+ * quality: 0.8
689
+ * });
690
+ * @example <caption>Generate cropped png dataURL (clipping of canvas)</caption>
691
+ * var dataURL = canvas.toDataURL({
692
+ * format: 'png',
693
+ * left: 100,
694
+ * top: 100,
695
+ * width: 200,
696
+ * height: 200
697
+ * });
698
+ * @example <caption>Generate double scaled png dataURL</caption>
699
+ * var dataURL = canvas.toDataURL({
700
+ * format: 'png',
701
+ * multiplier: 2
702
+ * });
703
+ * @example <caption>Generate dataURL with objects that overlap a specified object</caption>
704
+ * var myObject;
705
+ * var dataURL = canvas.toDataURL({
706
+ * filter: (object) => object.isContainedWithinObject(myObject) || object.intersectsWithObject(myObject)
707
+ * });
708
+ */
709
+ toDataURL(options?: TDataUrlOptions): string;
710
+ /**
711
+ * Create a new HTMLCanvas element painted with the current canvas content.
712
+ * No need to resize the actual one or repaint it.
713
+ * Will transfer object ownership to a new canvas, paint it, and set everything back.
714
+ * This is an intermediary step used to get to a dataUrl but also it is useful to
715
+ * create quick image copies of a canvas without passing for the dataUrl string
716
+ * @param {Number} [multiplier] a zoom factor.
717
+ * @param {Object} [options] Cropping informations
718
+ * @param {Number} [options.left] Cropping left offset.
719
+ * @param {Number} [options.top] Cropping top offset.
720
+ * @param {Number} [options.width] Cropping width.
721
+ * @param {Number} [options.height] Cropping height.
722
+ * @param {(object: fabric.Object) => boolean} [options.filter] Function to filter objects.
723
+ */
724
+ toCanvasElement(multiplier?: number, { width, height, left, top, filter }?: TToCanvasElementOptions): HTMLCanvasElement;
725
+ /**
726
+ * Waits until rendering has settled to destroy the canvas
727
+ * @returns {Promise<boolean>} a promise resolving to `true` once the canvas has been destroyed or to `false` if the canvas has was already destroyed
728
+ * @throws if aborted by a consequent call
729
+ */
730
+ dispose(): Promise<boolean>;
731
+ /**
732
+ * Clears the canvas element, disposes objects and frees resources
733
+ *
734
+ * **CAUTION**:
735
+ *
736
+ * This method is **UNSAFE**.
737
+ * You may encounter a race condition using it if there's a requested render.
738
+ * Call this method only if you are sure rendering has settled.
739
+ * Consider using {@link dispose} as it is **SAFE**
740
+ *
741
+ * @private
742
+ */
743
+ destroy(): void;
744
+ /**
745
+ * Returns a string representation of an instance
746
+ * @return {String} string representation of an instance
747
+ */
748
+ toString(): string;
749
+ }
750
+ export {};
751
+ //# sourceMappingURL=StaticCanvas.d.ts.map