fabric 5.3.0-browser → 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 +142 -88
  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,906 @@
1
+ import { ObjectEvents } from '../../EventTypeDefs';
2
+ import { AnimatableObject } from './AnimatableObject';
3
+ import { Point } from '../../Point';
4
+ import { Shadow } from '../../Shadow';
5
+ import type { TClassProperties, TDegree, TFiller, TSize, TCacheCanvasDimensions } from '../../typedefs';
6
+ import type { Group } from '../Group';
7
+ import type { Image } from '../Image';
8
+ export type TCachedFabricObject = FabricObject & Required<Pick<FabricObject, 'zoomX' | 'zoomY' | '_cacheCanvas' | '_cacheContext' | 'cacheTranslationX' | 'cacheTranslationY'>> & {
9
+ _cacheContext: CanvasRenderingContext2D;
10
+ };
11
+ /**
12
+ * Root object class from which all 2d shape classes inherit from
13
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}
14
+ *
15
+ * @fires added
16
+ * @fires removed
17
+ *
18
+ * @fires selected
19
+ * @fires deselected
20
+ *
21
+ * @fires rotating
22
+ * @fires scaling
23
+ * @fires moving
24
+ * @fires skewing
25
+ * @fires modified
26
+ *
27
+ * @fires mousedown
28
+ * @fires mouseup
29
+ * @fires mouseover
30
+ * @fires mouseout
31
+ * @fires mousewheel
32
+ * @fires mousedblclick
33
+ *
34
+ * @fires dragover
35
+ * @fires dragenter
36
+ * @fires dragleave
37
+ * @fires drop
38
+ */
39
+ export declare class FabricObject<EventSpec extends ObjectEvents = ObjectEvents> extends AnimatableObject<EventSpec> {
40
+ type: string;
41
+ /**
42
+ * Opacity of an object
43
+ * @type Number
44
+ * @default 1
45
+ */
46
+ opacity: number;
47
+ /**
48
+ * Size of object's controlling corners (in pixels)
49
+ * @type Number
50
+ * @default 13
51
+ */
52
+ cornerSize: number;
53
+ /**
54
+ * Size of object's controlling corners when touch interaction is detected
55
+ * @type Number
56
+ * @default 24
57
+ */
58
+ touchCornerSize: number;
59
+ /**
60
+ * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)
61
+ * @type Boolean
62
+ * @default true
63
+ */
64
+ transparentCorners: boolean;
65
+ /**
66
+ * Default cursor value used when hovering over this object on canvas
67
+ * @type CSSStyleDeclaration['cursor'] | null
68
+ * @default null
69
+ */
70
+ hoverCursor: CSSStyleDeclaration['cursor'] | null;
71
+ /**
72
+ * Default cursor value used when moving this object on canvas
73
+ * @type CSSStyleDeclaration['cursor'] | null
74
+ * @default null
75
+ */
76
+ moveCursor: CSSStyleDeclaration['cursor'] | null;
77
+ /**
78
+ * Color of controlling borders of an object (when it's active)
79
+ * @type String
80
+ * @default rgb(178,204,255)
81
+ */
82
+ borderColor: string;
83
+ /**
84
+ * Array specifying dash pattern of an object's borders (hasBorder must be true)
85
+ * @since 1.6.2
86
+ * @type Array | null
87
+ * default null;
88
+ */
89
+ borderDashArray: number[] | null;
90
+ /**
91
+ * Color of controlling corners of an object (when it's active)
92
+ * @type String
93
+ * @default rgb(178,204,255)
94
+ */
95
+ cornerColor: string;
96
+ /**
97
+ * Color of controlling corners of an object (when it's active and transparentCorners false)
98
+ * @since 1.6.2
99
+ * @type String
100
+ * @default null
101
+ */
102
+ cornerStrokeColor: string;
103
+ /**
104
+ * Specify style of control, 'rect' or 'circle'
105
+ * This is deprecated. In the futuer there will be a standard control render
106
+ * And you can swap it with one of the alternative proposed with the control api
107
+ * @since 1.6.2
108
+ * @type 'rect' | 'circle'
109
+ * @default rect
110
+ * @deprecated
111
+ */
112
+ cornerStyle: 'rect' | 'circle';
113
+ /**
114
+ * Array specifying dash pattern of an object's control (hasBorder must be true)
115
+ * @since 1.6.2
116
+ * @type Array | null
117
+ */
118
+ cornerDashArray: number[] | null;
119
+ /**
120
+ * When true, this object will use center point as the origin of transformation
121
+ * when being scaled via the controls.
122
+ * <b>Backwards incompatibility note:</b> This property replaces "centerTransform" (Boolean).
123
+ * @since 1.3.4
124
+ * @type Boolean
125
+ * @default
126
+ */
127
+ centeredScaling: false;
128
+ /**
129
+ * When true, this object will use center point as the origin of transformation
130
+ * when being rotated via the controls.
131
+ * <b>Backwards incompatibility note:</b> This property replaces "centerTransform" (Boolean).
132
+ * @since 1.3.4
133
+ * @type Boolean
134
+ * @default
135
+ */
136
+ centeredRotation: true;
137
+ /**
138
+ * When defined, an object is rendered via stroke and this property specifies its color
139
+ * takes css colors https://www.w3.org/TR/css-color-3/
140
+ * @type String
141
+ * @default null
142
+ */
143
+ stroke: string | TFiller | null;
144
+ /**
145
+ * Color of object's fill
146
+ * takes css colors https://www.w3.org/TR/css-color-3/
147
+ * @type String
148
+ * @default rgb(0,0,0)
149
+ */
150
+ fill: string | TFiller | null;
151
+ /**
152
+ * Fill rule used to fill an object
153
+ * accepted values are nonzero, evenodd
154
+ * <b>Backwards incompatibility note:</b> This property was used for setting globalCompositeOperation until v1.4.12 (use `globalCompositeOperation` instead)
155
+ * @type String
156
+ * @default nonzero
157
+ */
158
+ fillRule: CanvasFillRule;
159
+ /**
160
+ * Composite rule used for canvas globalCompositeOperation
161
+ * @type String
162
+ * @default
163
+ */
164
+ globalCompositeOperation: GlobalCompositeOperation;
165
+ /**
166
+ * Background color of an object.
167
+ * takes css colors https://www.w3.org/TR/css-color-3/
168
+ * @type String
169
+ * @default
170
+ */
171
+ backgroundColor: string;
172
+ /**
173
+ * Selection Background color of an object. colored layer behind the object when it is active.
174
+ * does not mix good with globalCompositeOperation methods.
175
+ * @type String
176
+ * @deprecated
177
+ * @default
178
+ */
179
+ selectionBackgroundColor: string;
180
+ /**
181
+ * Array specifying dash pattern of an object's stroke (stroke must be defined)
182
+ * @type Array
183
+ * @default null;
184
+ */
185
+ strokeDashArray: number[] | null;
186
+ /**
187
+ * Line offset of an object's stroke
188
+ * @type Number
189
+ * @default 0
190
+ */
191
+ strokeDashOffset: number;
192
+ /**
193
+ * Line endings style of an object's stroke (one of "butt", "round", "square")
194
+ * @type String
195
+ * @default butt
196
+ */
197
+ strokeLineCap: CanvasLineCap;
198
+ /**
199
+ * Corner style of an object's stroke (one of "bevel", "round", "miter")
200
+ * @type String
201
+ * @default
202
+ */
203
+ strokeLineJoin: CanvasLineJoin;
204
+ /**
205
+ * Maximum miter length (used for strokeLineJoin = "miter") of an object's stroke
206
+ * @type Number
207
+ * @default 4
208
+ */
209
+ strokeMiterLimit: number;
210
+ /**
211
+ * Shadow object representing shadow of this shape
212
+ * @type Shadow
213
+ * @default null
214
+ */
215
+ shadow: Shadow | null;
216
+ /**
217
+ * Opacity of object's controlling borders when object is active and moving
218
+ * @type Number
219
+ * @default 0.4
220
+ */
221
+ borderOpacityWhenMoving: number;
222
+ /**
223
+ * Scale factor of object's controlling borders
224
+ * bigger number will make a thicker border
225
+ * border is 1, so this is basically a border thickness
226
+ * since there is no way to change the border itself.
227
+ * @type Number
228
+ * @default 1
229
+ */
230
+ borderScaleFactor: number;
231
+ /**
232
+ * Minimum allowed scale value of an object
233
+ * @type Number
234
+ * @default 0
235
+ */
236
+ minScaleLimit: number;
237
+ /**
238
+ * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).
239
+ * But events still fire on it.
240
+ * @type Boolean
241
+ * @default
242
+ */
243
+ selectable: boolean;
244
+ /**
245
+ * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4
246
+ * @type Boolean
247
+ * @default
248
+ */
249
+ evented: boolean;
250
+ /**
251
+ * When set to `false`, an object is not rendered on canvas
252
+ * @type Boolean
253
+ * @default
254
+ */
255
+ visible: boolean;
256
+ /**
257
+ * When set to `false`, object's controls are not displayed and can not be used to manipulate object
258
+ * @type Boolean
259
+ * @default
260
+ */
261
+ hasControls: boolean;
262
+ /**
263
+ * When set to `false`, object's controlling borders are not rendered
264
+ * @type Boolean
265
+ * @default
266
+ */
267
+ hasBorders: boolean;
268
+ /**
269
+ * When set to `true`, objects are "found" on canvas on per-pixel basis rather than according to bounding box
270
+ * @type Boolean
271
+ * @default
272
+ */
273
+ perPixelTargetFind: boolean;
274
+ /**
275
+ * When `false`, default object's values are not included in its serialization
276
+ * @type Boolean
277
+ * @default
278
+ */
279
+ includeDefaultValues: boolean;
280
+ /**
281
+ * When `true`, object horizontal movement is locked
282
+ * @type Boolean
283
+ * @default
284
+ */
285
+ lockMovementX: boolean;
286
+ /**
287
+ * When `true`, object vertical movement is locked
288
+ * @type Boolean
289
+ * @default
290
+ */
291
+ lockMovementY: boolean;
292
+ /**
293
+ * When `true`, object rotation is locked
294
+ * @type Boolean
295
+ * @default
296
+ */
297
+ lockRotation: boolean;
298
+ /**
299
+ * When `true`, object horizontal scaling is locked
300
+ * @type Boolean
301
+ * @default
302
+ */
303
+ lockScalingX: boolean;
304
+ /**
305
+ * When `true`, object vertical scaling is locked
306
+ * @type Boolean
307
+ * @default
308
+ */
309
+ lockScalingY: boolean;
310
+ /**
311
+ * When `true`, object horizontal skewing is locked
312
+ * @type Boolean
313
+ * @default
314
+ */
315
+ lockSkewingX: boolean;
316
+ /**
317
+ * When `true`, object vertical skewing is locked
318
+ * @type Boolean
319
+ * @default
320
+ */
321
+ lockSkewingY: boolean;
322
+ /**
323
+ * When `true`, object cannot be flipped by scaling into negative values
324
+ * @type Boolean
325
+ * @default
326
+ */
327
+ lockScalingFlip: boolean;
328
+ /**
329
+ * When `true`, object is not exported in OBJECT/JSON
330
+ * @since 1.6.3
331
+ * @type Boolean
332
+ * @default
333
+ */
334
+ excludeFromExport: boolean;
335
+ /**
336
+ * When `true`, object is cached on an additional canvas.
337
+ * When `false`, object is not cached unless necessary ( clipPath )
338
+ * default to true
339
+ * @since 1.7.0
340
+ * @type Boolean
341
+ * @default true
342
+ */
343
+ objectCaching: boolean;
344
+ /**
345
+ * When set to `true`, object's cache will be rerendered next render call.
346
+ * since 1.7.0
347
+ * @type Boolean
348
+ * @default true
349
+ */
350
+ dirty: boolean;
351
+ /**
352
+ * Determines if the fill or the stroke is drawn first (one of "fill" or "stroke")
353
+ * @type String
354
+ * @default
355
+ */
356
+ paintFirst: 'fill' | 'stroke';
357
+ /**
358
+ * When 'down', object is set to active on mousedown/touchstart
359
+ * When 'up', object is set to active on mouseup/touchend
360
+ * Experimental. Let's see if this breaks anything before supporting officially
361
+ * @private
362
+ * since 4.4.0
363
+ * @type String
364
+ * @default 'down'
365
+ */
366
+ activeOn: 'down' | 'up';
367
+ /**
368
+ * This list of properties is used to check if the state of an object is changed.
369
+ * This state change now is only used for children of groups to understand if a group
370
+ * needs its cache regenerated during a .set call
371
+ * @type Array
372
+ */
373
+ stateProperties: string[];
374
+ /**
375
+ * List of properties to consider when checking if cache needs refresh
376
+ * Those properties are checked by
377
+ * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty
378
+ * and refreshed at the next render
379
+ * @type Array
380
+ */
381
+ cacheProperties: string[];
382
+ /**
383
+ * a fabricObject that, without stroke define a clipping area with their shape. filled in black
384
+ * the clipPath object gets used when the object has rendered, and the context is placed in the center
385
+ * of the object cacheCanvas.
386
+ * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center'
387
+ * @type FabricObject
388
+ */
389
+ clipPath?: FabricObject;
390
+ /**
391
+ * Meaningful ONLY when the object is used as clipPath.
392
+ * if true, the clipPath will make the object clip to the outside of the clipPath
393
+ * since 2.4.0
394
+ * @type boolean
395
+ * @default false
396
+ */
397
+ inverted: boolean;
398
+ /**
399
+ * Meaningful ONLY when the object is used as clipPath.
400
+ * if true, the clipPath will have its top and left relative to canvas, and will
401
+ * not be influenced by the object transform. This will make the clipPath relative
402
+ * to the canvas, but clipping just a particular object.
403
+ * WARNING this is beta, this feature may change or be renamed.
404
+ * since 2.4.0
405
+ * @type boolean
406
+ * @default false
407
+ */
408
+ absolutePositioned: boolean;
409
+ /**
410
+ * Quick access for the _cacheCanvas rendering context
411
+ * This is part of the objectCaching feature
412
+ * since 1.7.0
413
+ * @type boolean
414
+ * @default undefined
415
+ * @private
416
+ */
417
+ _cacheContext: CanvasRenderingContext2D | null;
418
+ /**
419
+ * A reference to the HTMLCanvasElement that is used to contain the cache of the object
420
+ * this canvas element is resized and cleared as needed
421
+ * Is marked private, you can read it, don't use it since it is handled by fabric
422
+ * since 1.7.0
423
+ * @type HTMLCanvasElement
424
+ * @default undefined
425
+ * @private
426
+ */
427
+ _cacheCanvas?: HTMLCanvasElement;
428
+ /**
429
+ * Size of the cache canvas, width
430
+ * since 1.7.0
431
+ * @type number
432
+ * @default undefined
433
+ * @private
434
+ */
435
+ cacheWidth?: number;
436
+ /**
437
+ * Size of the cache canvas, height
438
+ * since 1.7.0
439
+ * @type number
440
+ * @default undefined
441
+ * @private
442
+ */
443
+ cacheHeight?: number;
444
+ /**
445
+ * zoom level used on the cacheCanvas to draw the cache, X axe
446
+ * since 1.7.0
447
+ * @type number
448
+ * @default undefined
449
+ * @private
450
+ */
451
+ zoomX?: number;
452
+ /**
453
+ * zoom level used on the cacheCanvas to draw the cache, Y axe
454
+ * since 1.7.0
455
+ * @type number
456
+ * @default undefined
457
+ * @private
458
+ */
459
+ zoomY?: number;
460
+ /**
461
+ * zoom level used on the cacheCanvas to draw the cache, Y axe
462
+ * since 1.7.0
463
+ * @type number
464
+ * @default undefined
465
+ * @private
466
+ */
467
+ cacheTranslationX?: number;
468
+ /**
469
+ * translation of the cacheCanvas away from the center, for subpixel accuracy and crispness
470
+ * since 1.7.0
471
+ * @type number
472
+ * @default undefined
473
+ * @private
474
+ */
475
+ cacheTranslationY?: number;
476
+ /**
477
+ * A reference to the parent of the object, usually a Group
478
+ * @type number
479
+ * @default undefined
480
+ * @private
481
+ */
482
+ group?: Group;
483
+ /**
484
+ * A reference to the parent of the object
485
+ * Used to keep the original parent ref when the object has been added to an ActiveSelection, hence loosing the `group` ref
486
+ */
487
+ __owningGroup?: Group;
488
+ /**
489
+ * Indicate if the object is sitting on a cache dedicated to it
490
+ * or is part of a larger cache for many object ( a group for example)
491
+ * @type number
492
+ * @default undefined
493
+ * @private
494
+ */
495
+ ownCaching?: boolean;
496
+ /**
497
+ * Private. indicates if the object inside a group is on a transformed context or not
498
+ * or is part of a larger cache for many object ( a group for example)
499
+ * @type boolean
500
+ * @default undefined
501
+ * @private
502
+ */
503
+ _transformDone?: boolean;
504
+ /**
505
+ * Constructor
506
+ * @param {Object} [options] Options object
507
+ */
508
+ constructor(options?: Partial<TClassProperties<FabricObject>>);
509
+ /**
510
+ * Create a the canvas used to keep the cached copy of the object
511
+ * @private
512
+ */
513
+ _createCacheCanvas(): void;
514
+ /**
515
+ * Limit the cache dimensions so that X * Y do not cross config.perfLimitSizeTotal
516
+ * and each side do not cross fabric.cacheSideLimit
517
+ * those numbers are configurable so that you can get as much detail as you want
518
+ * making bargain with performances.
519
+ * @param {Object} dims
520
+ * @param {Object} dims.width width of canvas
521
+ * @param {Object} dims.height height of canvas
522
+ * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache
523
+ * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache
524
+ * @return {Object}.width width of canvas
525
+ * @return {Object}.height height of canvas
526
+ * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache
527
+ * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache
528
+ */
529
+ _limitCacheSize(dims: TSize & {
530
+ zoomX: number;
531
+ zoomY: number;
532
+ capped: boolean;
533
+ } & any): any;
534
+ /**
535
+ * Return the dimension and the zoom level needed to create a cache canvas
536
+ * big enough to host the object to be cached.
537
+ * @private
538
+ * @return {Object}.x width of object to be cached
539
+ * @return {Object}.y height of object to be cached
540
+ * @return {Object}.width width of canvas
541
+ * @return {Object}.height height of canvas
542
+ * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache
543
+ * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache
544
+ */
545
+ _getCacheCanvasDimensions(): TCacheCanvasDimensions;
546
+ /**
547
+ * Update width and height of the canvas for cache
548
+ * returns true or false if canvas needed resize.
549
+ * @private
550
+ * @return {Boolean} true if the canvas has been resized
551
+ */
552
+ _updateCacheCanvas(): boolean;
553
+ /**
554
+ * Sets object's properties from options, for class constructor only.
555
+ * Needs to be overridden for different defaults.
556
+ * @protected
557
+ * @param {Object} [options] Options object
558
+ */
559
+ protected setOptions(options?: Record<string, any>): void;
560
+ /**
561
+ * Transforms context when rendering an object
562
+ * @param {CanvasRenderingContext2D} ctx Context
563
+ */
564
+ transform(ctx: CanvasRenderingContext2D): void;
565
+ /**
566
+ * Returns an object representation of an instance
567
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
568
+ * @return {Object} Object representation of an instance
569
+ */
570
+ toObject(propertiesToInclude?: string[]): Record<string, any>;
571
+ /**
572
+ * Returns (dataless) object representation of an instance
573
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
574
+ * @return {Object} Object representation of an instance
575
+ */
576
+ toDatalessObject(propertiesToInclude?: string[]): Record<string, any>;
577
+ /**
578
+ * @private
579
+ * @param {Object} object
580
+ */
581
+ _removeDefaultValues(object: Record<string, any>): Record<string, any>;
582
+ /**
583
+ * Returns a string representation of an instance
584
+ * @return {String}
585
+ */
586
+ toString(): string;
587
+ /**
588
+ * Return the object scale factor counting also the group scaling
589
+ * @return {Point}
590
+ */
591
+ getObjectScaling(): Point;
592
+ /**
593
+ * Return the object scale factor counting also the group scaling, zoom and retina
594
+ * @return {Object} object with scaleX and scaleY properties
595
+ */
596
+ getTotalObjectScaling(): Point;
597
+ /**
598
+ * Return the object opacity counting also the group property
599
+ * @return {Number}
600
+ */
601
+ getObjectOpacity(): number;
602
+ /**
603
+ * Makes sure the scale is valid and modifies it if necessary
604
+ * @todo: this is a control action issue, not a geometry one
605
+ * @private
606
+ * @param {Number} value, unconstrained
607
+ * @return {Number} constrained value;
608
+ */
609
+ _constrainScale(value: number): number;
610
+ /**
611
+ * @private
612
+ * @param {String} key
613
+ * @param {*} value
614
+ */
615
+ _set(key: string, value: any): this;
616
+ isNotVisible(): boolean;
617
+ /**
618
+ * Renders an object on a specified context
619
+ * @param {CanvasRenderingContext2D} ctx Context to render on
620
+ */
621
+ render(ctx: CanvasRenderingContext2D): void;
622
+ drawSelectionBackground(ctx: CanvasRenderingContext2D): void;
623
+ renderCache(options?: any): void;
624
+ /**
625
+ * Remove cacheCanvas and its dimensions from the objects
626
+ */
627
+ _removeCacheCanvas(): void;
628
+ /**
629
+ * return true if the object will draw a stroke
630
+ * Does not consider text styles. This is just a shortcut used at rendering time
631
+ * We want it to be an approximation and be fast.
632
+ * wrote to avoid extra caching, it has to return true when stroke happens,
633
+ * can guess when it will not happen at 100% chance, does not matter if it misses
634
+ * some use case where the stroke is invisible.
635
+ * @since 3.0.0
636
+ * @returns Boolean
637
+ */
638
+ hasStroke(): boolean | "" | null;
639
+ /**
640
+ * return true if the object will draw a fill
641
+ * Does not consider text styles. This is just a shortcut used at rendering time
642
+ * We want it to be an approximation and be fast.
643
+ * wrote to avoid extra caching, it has to return true when fill happens,
644
+ * can guess when it will not happen at 100% chance, does not matter if it misses
645
+ * some use case where the fill is invisible.
646
+ * @since 3.0.0
647
+ * @returns Boolean
648
+ */
649
+ hasFill(): boolean | "" | null;
650
+ /**
651
+ * When set to `true`, force the object to have its own cache, even if it is inside a group
652
+ * it may be needed when your object behave in a particular way on the cache and always needs
653
+ * its own isolated canvas to render correctly.
654
+ * Created to be overridden
655
+ * since 1.7.12
656
+ * @returns Boolean
657
+ */
658
+ needsItsOwnCache(): boolean;
659
+ /**
660
+ * Decide if the object should cache or not. Create its own cache level
661
+ * objectCaching is a global flag, wins over everything
662
+ * needsItsOwnCache should be used when the object drawing method requires
663
+ * a cache step. None of the fabric classes requires it.
664
+ * Generally you do not cache objects in groups because the group outside is cached.
665
+ * Read as: cache if is needed, or if the feature is enabled but we are not already caching.
666
+ * @return {Boolean}
667
+ */
668
+ shouldCache(): boolean;
669
+ /**
670
+ * Check if this object or a child object will cast a shadow
671
+ * used by Group.shouldCache to know if child has a shadow recursively
672
+ * @return {Boolean}
673
+ * @deprecated
674
+ */
675
+ willDrawShadow(): boolean;
676
+ /**
677
+ * Execute the drawing operation for an object clipPath
678
+ * @param {CanvasRenderingContext2D} ctx Context to render on
679
+ * @param {FabricObject} clipPath
680
+ */
681
+ drawClipPathOnCache(ctx: CanvasRenderingContext2D, clipPath: TCachedFabricObject): void;
682
+ /**
683
+ * Execute the drawing operation for an object on a specified context
684
+ * @param {CanvasRenderingContext2D} ctx Context to render on
685
+ * @param {boolean} forClipping apply clipping styles
686
+ */
687
+ drawObject(ctx: CanvasRenderingContext2D, forClipping?: boolean): void;
688
+ /**
689
+ * Prepare clipPath state and cache and draw it on instance's cache
690
+ * @param {CanvasRenderingContext2D} ctx
691
+ * @param {FabricObject} clipPath
692
+ */
693
+ _drawClipPath(ctx: CanvasRenderingContext2D, clipPath?: FabricObject): void;
694
+ /**
695
+ * Paint the cached copy of the object on the target context.
696
+ * @param {CanvasRenderingContext2D} ctx Context to render on
697
+ */
698
+ drawCacheOnCanvas(this: TCachedFabricObject, ctx: CanvasRenderingContext2D): void;
699
+ /**
700
+ * Check if cache is dirty
701
+ * @param {Boolean} skipCanvas skip canvas checks because this object is painted
702
+ * on parent canvas.
703
+ */
704
+ isCacheDirty(skipCanvas?: boolean): boolean;
705
+ /**
706
+ * Draws a background for the object big as its untransformed dimensions
707
+ * @private
708
+ * @param {CanvasRenderingContext2D} ctx Context to render on
709
+ */
710
+ _renderBackground(ctx: CanvasRenderingContext2D): void;
711
+ /**
712
+ * @private
713
+ * @param {CanvasRenderingContext2D} ctx Context to render on
714
+ */
715
+ _setOpacity(ctx: CanvasRenderingContext2D): void;
716
+ _setStrokeStyles(ctx: CanvasRenderingContext2D, decl: Pick<this, 'stroke' | 'strokeWidth' | 'strokeLineCap' | 'strokeDashOffset' | 'strokeLineJoin' | 'strokeMiterLimit'>): void;
717
+ _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>): void;
718
+ _setClippingProperties(ctx: CanvasRenderingContext2D): void;
719
+ /**
720
+ * @private
721
+ * Sets line dash
722
+ * @param {CanvasRenderingContext2D} ctx Context to set the dash line on
723
+ * @param {Array} dashArray array representing dashes
724
+ */
725
+ _setLineDash(ctx: CanvasRenderingContext2D, dashArray?: number[] | null): void;
726
+ /**
727
+ * @private
728
+ * @param {CanvasRenderingContext2D} ctx Context to render on
729
+ */
730
+ _setShadow(ctx: CanvasRenderingContext2D): void;
731
+ /**
732
+ * @private
733
+ * @param {CanvasRenderingContext2D} ctx Context to render on
734
+ */
735
+ _removeShadow(ctx: CanvasRenderingContext2D): void;
736
+ /**
737
+ * @private
738
+ * @param {CanvasRenderingContext2D} ctx Context to render on
739
+ * @param {TFiller} filler {@link Pattern} or {@link Gradient}
740
+ */
741
+ _applyPatternGradientTransform(ctx: CanvasRenderingContext2D, filler: TFiller): {
742
+ offsetX: number;
743
+ offsetY: number;
744
+ };
745
+ /**
746
+ * @private
747
+ * @param {CanvasRenderingContext2D} ctx Context to render on
748
+ */
749
+ _renderPaintInOrder(ctx: CanvasRenderingContext2D): void;
750
+ /**
751
+ * @private
752
+ * function that actually render something on the context.
753
+ * empty here to allow Obects to work on tests to benchmark fabric functionalites
754
+ * not related to rendering
755
+ * @param {CanvasRenderingContext2D} ctx Context to render on
756
+ */
757
+ _render(ctx: CanvasRenderingContext2D): void;
758
+ /**
759
+ * @private
760
+ * @param {CanvasRenderingContext2D} ctx Context to render on
761
+ */
762
+ _renderFill(ctx: CanvasRenderingContext2D): void;
763
+ /**
764
+ * @private
765
+ * @param {CanvasRenderingContext2D} ctx Context to render on
766
+ */
767
+ _renderStroke(ctx: CanvasRenderingContext2D): void;
768
+ /**
769
+ * This function try to patch the missing gradientTransform on canvas gradients.
770
+ * transforming a context to transform the gradient, is going to transform the stroke too.
771
+ * we want to transform the gradient but not the stroke operation, so we create
772
+ * a transformed gradient on a pattern and then we use the pattern instead of the gradient.
773
+ * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size
774
+ * is limited.
775
+ * @private
776
+ * @param {CanvasRenderingContext2D} ctx Context to render on
777
+ * @param {Gradient} filler
778
+ */
779
+ _applyPatternForTransformedGradient(ctx: CanvasRenderingContext2D, filler: TFiller): void;
780
+ /**
781
+ * This function is an helper for svg import. it returns the center of the object in the svg
782
+ * untransformed coordinates
783
+ * @private
784
+ * @return {Point} center point from element coordinates
785
+ */
786
+ _findCenterFromElement(): Point;
787
+ /**
788
+ * Clones an instance.
789
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
790
+ * @returns {Promise<FabricObject>}
791
+ */
792
+ clone(propertiesToInclude: string[]): any;
793
+ /**
794
+ * Creates an instance of Image out of an object
795
+ * makes use of toCanvasElement.
796
+ * Once this method was based on toDataUrl and loadImage, so it also had a quality
797
+ * and format option. toCanvasElement is faster and produce no loss of quality.
798
+ * If you need to get a real Jpeg or Png from an object, using toDataURL is the right way to do it.
799
+ * toCanvasElement and then toBlob from the obtained canvas is also a good option.
800
+ * @todo fix the export type, it could not be Image but the type that getClass return for 'image'.
801
+ * @param {Object} [options] for clone as image, passed to toDataURL
802
+ * @param {Number} [options.multiplier=1] Multiplier to scale by
803
+ * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14
804
+ * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14
805
+ * @param {Number} [options.width] Cropping width. Introduced in v1.2.14
806
+ * @param {Number} [options.height] Cropping height. Introduced in v1.2.14
807
+ * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4
808
+ * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4
809
+ * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2
810
+ * @return {Image} Object cloned as image.
811
+ */
812
+ cloneAsImage(options: any): Image;
813
+ /**
814
+ * Converts an object into a HTMLCanvas element
815
+ * @param {Object} options Options object
816
+ * @param {Number} [options.multiplier=1] Multiplier to scale by
817
+ * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14
818
+ * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14
819
+ * @param {Number} [options.width] Cropping width. Introduced in v1.2.14
820
+ * @param {Number} [options.height] Cropping height. Introduced in v1.2.14
821
+ * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4
822
+ * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4
823
+ * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2
824
+ * @return {HTMLCanvasElement} Returns DOM element <canvas> with the FabricObject
825
+ */
826
+ toCanvasElement(options?: any): HTMLCanvasElement;
827
+ /**
828
+ * Converts an object into a data-url-like string
829
+ * @param {Object} options Options object
830
+ * @param {String} [options.format=png] The format of the output image. Either "jpeg" or "png"
831
+ * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.
832
+ * @param {Number} [options.multiplier=1] Multiplier to scale by
833
+ * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14
834
+ * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14
835
+ * @param {Number} [options.width] Cropping width. Introduced in v1.2.14
836
+ * @param {Number} [options.height] Cropping height. Introduced in v1.2.14
837
+ * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4
838
+ * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4
839
+ * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2
840
+ * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format
841
+ */
842
+ toDataURL(options?: any): string;
843
+ /**
844
+ * Returns true if specified type is identical to the type of an instance
845
+ * @param {String} type Type to check against
846
+ * @return {Boolean}
847
+ */
848
+ isType(...types: string[]): boolean;
849
+ /**
850
+ * Returns complexity of an instance
851
+ * @return {Number} complexity of this instance (is 1 unless subclassed)
852
+ */
853
+ complexity(): number;
854
+ /**
855
+ * Returns a JSON representation of an instance
856
+ * @return {Object} JSON
857
+ */
858
+ toJSON(): Record<string, any>;
859
+ /**
860
+ * Sets "angle" of an instance with centered rotation
861
+ * @param {TDegree} angle Angle value (in degrees)
862
+ */
863
+ rotate(angle: TDegree): void;
864
+ /**
865
+ * This callback function is called by the parent group of an object every
866
+ * time a non-delegated property changes on the group. It is passed the key
867
+ * and value as parameters. Not adding in this function's signature to avoid
868
+ * Travis build error about unused variables.
869
+ */
870
+ setOnGroup(): void;
871
+ /**
872
+ * Sets canvas globalCompositeOperation for specific object
873
+ * custom composition operation for the particular object can be specified using globalCompositeOperation property
874
+ * @param {CanvasRenderingContext2D} ctx Rendering canvas context
875
+ */
876
+ _setupCompositeOperation(ctx: CanvasRenderingContext2D): void;
877
+ /**
878
+ * cancel instance's running animations
879
+ * override if necessary to dispose artifacts such as `clipPath`
880
+ */
881
+ dispose(): void;
882
+ /**
883
+ *
884
+ * @param {Function} klass
885
+ * @param {object} object
886
+ * @param {object} [options]
887
+ * @param {string} [options.extraParam] property to pass as first argument to the constructor
888
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
889
+ * @returns {Promise<FabricObject>}
890
+ */
891
+ static _fromObject(object: Record<string, unknown>, { extraParam, ...options }?: {
892
+ extraParam?: string;
893
+ signal?: AbortSignal;
894
+ }): Promise<FabricObject>;
895
+ /**
896
+ *
897
+ * @param {object} object
898
+ * @param {object} [options]
899
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
900
+ * @returns {Promise<FabricObject>}
901
+ */
902
+ static fromObject(object: Record<string, unknown>, options?: {
903
+ signal?: AbortSignal;
904
+ }): Promise<FabricObject>;
905
+ }
906
+ //# sourceMappingURL=Object.d.ts.map