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,723 @@
1
+ import { Point } from '../Point';
2
+ import { FabricObject } from '../shapes/Object/FabricObject';
3
+ import { CanvasEvents, ModifierKey, TOptionalModifierKey, TPointerEvent, Transform } from '../EventTypeDefs';
4
+ import { StaticCanvas, TCanvasSizeOptions } from './StaticCanvas';
5
+ import { TMat2D, TOriginX, TOriginY, TSize } from '../typedefs';
6
+ import type { BaseBrush } from '../brushes/BaseBrush';
7
+ import { TSVGReviver } from '../typedefs';
8
+ type TDestroyedCanvas = Omit<SelectableCanvas<CanvasEvents>, 'contextTop' | 'contextCache' | 'lowerCanvasEl' | 'upperCanvasEl' | 'cacheCanvasEl' | 'wrapperEl'> & {
9
+ wrapperEl?: HTMLDivElement;
10
+ cacheCanvasEl?: HTMLCanvasElement;
11
+ upperCanvasEl?: HTMLCanvasElement;
12
+ lowerCanvasEl?: HTMLCanvasElement;
13
+ contextCache?: CanvasRenderingContext2D | null;
14
+ contextTop?: CanvasRenderingContext2D | null;
15
+ };
16
+ /**
17
+ * Canvas class
18
+ * @class Canvas
19
+ * @extends StaticCanvas
20
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}
21
+ *
22
+ * @fires object:modified at the end of a transform
23
+ * @fires object:rotating while an object is being rotated from the control
24
+ * @fires object:scaling while an object is being scaled by controls
25
+ * @fires object:moving while an object is being dragged
26
+ * @fires object:skewing while an object is being skewed from the controls
27
+ *
28
+ * @fires before:transform before a transform is is started
29
+ * @fires before:selection:cleared
30
+ * @fires selection:cleared
31
+ * @fires selection:updated
32
+ * @fires selection:created
33
+ *
34
+ * @fires path:created after a drawing operation ends and the path is added
35
+ * @fires mouse:down
36
+ * @fires mouse:move
37
+ * @fires mouse:up
38
+ * @fires mouse:down:before on mouse down, before the inner fabric logic runs
39
+ * @fires mouse:move:before on mouse move, before the inner fabric logic runs
40
+ * @fires mouse:up:before on mouse up, before the inner fabric logic runs
41
+ * @fires mouse:over
42
+ * @fires mouse:out
43
+ * @fires mouse:dblclick whenever a native dbl click event fires on the canvas.
44
+ *
45
+ * @fires dragover
46
+ * @fires dragenter
47
+ * @fires dragleave
48
+ * @fires drag:enter object drag enter
49
+ * @fires drag:leave object drag leave
50
+ * @fires drop:before before drop event. Prepare for the drop event (same native event).
51
+ * @fires drop
52
+ * @fires drop:after after drop event. Run logic on canvas after event has been accepted/declined (same native event).
53
+ * @example
54
+ * let a: fabric.Object, b: fabric.Object;
55
+ * let flag = false;
56
+ * canvas.add(a, b);
57
+ * a.on('drop:before', opt => {
58
+ * // we want a to accept the drop even though it's below b in the stack
59
+ * flag = this.canDrop(opt.e);
60
+ * });
61
+ * b.canDrop = function(e) {
62
+ * !flag && this.draggableTextDelegate.canDrop(e);
63
+ * }
64
+ * b.on('dragover', opt => b.set('fill', opt.dropTarget === b ? 'pink' : 'black'));
65
+ * a.on('drop', opt => {
66
+ * opt.e.defaultPrevented // drop occurred
67
+ * opt.didDrop // drop occurred on canvas
68
+ * opt.target // drop target
69
+ * opt.target !== a && a.set('text', 'I lost');
70
+ * });
71
+ * canvas.on('drop:after', opt => {
72
+ * // inform user who won
73
+ * if(!opt.e.defaultPrevented) {
74
+ * // no winners
75
+ * }
76
+ * else if(!opt.didDrop) {
77
+ * // my objects didn't win, some other lucky object
78
+ * }
79
+ * else {
80
+ * // we have a winner it's opt.target!!
81
+ * }
82
+ * })
83
+ *
84
+ * @fires after:render at the end of the render process, receives the context in the callback
85
+ * @fires before:render at start the render process, receives the context in the callback
86
+ *
87
+ * @fires contextmenu:before
88
+ * @fires contextmenu
89
+ * @example
90
+ * let handler;
91
+ * targets.forEach(target => {
92
+ * target.on('contextmenu:before', opt => {
93
+ * // decide which target should handle the event before canvas hijacks it
94
+ * if (someCaseHappens && opt.targets.includes(target)) {
95
+ * handler = target;
96
+ * }
97
+ * });
98
+ * target.on('contextmenu', opt => {
99
+ * // do something fantastic
100
+ * });
101
+ * });
102
+ * canvas.on('contextmenu', opt => {
103
+ * if (!handler) {
104
+ * // no one takes responsibility, it's always left to me
105
+ * // let's show them how it's done!
106
+ * }
107
+ * });
108
+ *
109
+ */
110
+ export declare class SelectableCanvas<EventSpec extends CanvasEvents = CanvasEvents> extends StaticCanvas<EventSpec> {
111
+ _objects: FabricObject[];
112
+ /**
113
+ * When true, objects can be transformed by one side (unproportionally)
114
+ * when dragged on the corners that normally would not do that.
115
+ * @type Boolean
116
+ * @default
117
+ * @since fabric 4.0 // changed name and default value
118
+ */
119
+ uniformScaling: boolean;
120
+ /**
121
+ * Indicates which key switches uniform scaling.
122
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
123
+ * If `null` or 'none' or any other string that is not a modifier key
124
+ * feature is disabled.
125
+ * totally wrong named. this sounds like `uniform scaling`
126
+ * if Canvas.uniformScaling is true, pressing this will set it to false
127
+ * and viceversa.
128
+ * @since 1.6.2
129
+ * @type ModifierKey
130
+ * @default
131
+ */
132
+ uniScaleKey: TOptionalModifierKey;
133
+ /**
134
+ * When true, objects use center point as the origin of scale transformation.
135
+ * <b>Backwards incompatibility note:</b> This property replaces "centerTransform" (Boolean).
136
+ * @since 1.3.4
137
+ * @type Boolean
138
+ * @default
139
+ */
140
+ centeredScaling: boolean;
141
+ /**
142
+ * When true, objects use center point as the origin of rotate transformation.
143
+ * <b>Backwards incompatibility note:</b> This property replaces "centerTransform" (Boolean).
144
+ * @since 1.3.4
145
+ * @type Boolean
146
+ * @default
147
+ */
148
+ centeredRotation: boolean;
149
+ /**
150
+ * Indicates which key enable centered Transform
151
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
152
+ * If `null` or 'none' or any other string that is not a modifier key
153
+ * feature is disabled feature disabled.
154
+ * @since 1.6.2
155
+ * @type ModifierKey
156
+ * @default
157
+ */
158
+ centeredKey: TOptionalModifierKey;
159
+ /**
160
+ * Indicates which key enable alternate action on corner
161
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
162
+ * If `null` or 'none' or any other string that is not a modifier key
163
+ * feature is disabled feature disabled.
164
+ * @since 1.6.2
165
+ * @type ModifierKey
166
+ * @default
167
+ */
168
+ altActionKey: TOptionalModifierKey;
169
+ /**
170
+ * Indicates that canvas is interactive. This property should not be changed.
171
+ * @type Boolean
172
+ * @default
173
+ */
174
+ interactive: boolean;
175
+ /**
176
+ * Indicates whether group selection should be enabled
177
+ * @type Boolean
178
+ * @default
179
+ */
180
+ selection: boolean;
181
+ /**
182
+ * Indicates which key or keys enable multiple click selection
183
+ * Pass value as a string or array of strings
184
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
185
+ * If `null` or empty or containing any other string that is not a modifier key
186
+ * feature is disabled.
187
+ * @since 1.6.2
188
+ * @type ModifierKey|ModifierKey[]
189
+ * @default
190
+ */
191
+ selectionKey: TOptionalModifierKey | ModifierKey[];
192
+ /**
193
+ * Indicates which key enable alternative selection
194
+ * in case of target overlapping with active object
195
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
196
+ * For a series of reason that come from the general expectations on how
197
+ * things should work, this feature works only for preserveObjectStacking true.
198
+ * If `null` or 'none' or any other string that is not a modifier key
199
+ * feature is disabled.
200
+ * @since 1.6.5
201
+ * @type null|ModifierKey
202
+ * @default
203
+ */
204
+ altSelectionKey: TOptionalModifierKey;
205
+ /**
206
+ * Color of selection
207
+ * @type String
208
+ * @default
209
+ */
210
+ selectionColor: string;
211
+ /**
212
+ * Default dash array pattern
213
+ * If not empty the selection border is dashed
214
+ * @type Array
215
+ */
216
+ selectionDashArray: number[];
217
+ /**
218
+ * Color of the border of selection (usually slightly darker than color of selection itself)
219
+ * @type String
220
+ * @default
221
+ */
222
+ selectionBorderColor: string;
223
+ /**
224
+ * Width of a line used in object/group selection
225
+ * @type Number
226
+ * @default
227
+ */
228
+ selectionLineWidth: number;
229
+ /**
230
+ * Select only shapes that are fully contained in the dragged selection rectangle.
231
+ * @type Boolean
232
+ * @default
233
+ */
234
+ selectionFullyContained: boolean;
235
+ /**
236
+ * Default cursor value used when hovering over an object on canvas
237
+ * @type CSSStyleDeclaration['cursor']
238
+ * @default move
239
+ */
240
+ hoverCursor: CSSStyleDeclaration['cursor'];
241
+ /**
242
+ * Default cursor value used when moving an object on canvas
243
+ * @type CSSStyleDeclaration['cursor']
244
+ * @default move
245
+ */
246
+ moveCursor: CSSStyleDeclaration['cursor'];
247
+ /**
248
+ * Default cursor value used for the entire canvas
249
+ * @type String
250
+ * @default default
251
+ */
252
+ defaultCursor: CSSStyleDeclaration['cursor'];
253
+ /**
254
+ * Cursor value used during free drawing
255
+ * @type String
256
+ * @default crosshair
257
+ */
258
+ freeDrawingCursor: CSSStyleDeclaration['cursor'];
259
+ /**
260
+ * Cursor value used for disabled elements ( corners with disabled action )
261
+ * @type String
262
+ * @since 2.0.0
263
+ * @default not-allowed
264
+ */
265
+ notAllowedCursor: CSSStyleDeclaration['cursor'];
266
+ /**
267
+ * Default element class that's given to wrapper (div) element of canvas
268
+ * @type String
269
+ * @default
270
+ */
271
+ containerClass: string;
272
+ /**
273
+ * When true, object detection happens on per-pixel basis rather than on per-bounding-box
274
+ * @type Boolean
275
+ * @default
276
+ */
277
+ perPixelTargetFind: boolean;
278
+ /**
279
+ * Number of pixels around target pixel to tolerate (consider active) during object detection
280
+ * @type Number
281
+ * @default
282
+ */
283
+ targetFindTolerance: number;
284
+ /**
285
+ * When true, target detection is skipped. Target detection will return always undefined.
286
+ * click selection won't work anymore, events will fire with no targets.
287
+ * if something is selected before setting it to true, it will be deselected at the first click.
288
+ * area selection will still work. check the `selection` property too.
289
+ * if you deactivate both, you should look into staticCanvas.
290
+ * @type Boolean
291
+ * @default
292
+ */
293
+ skipTargetFind: boolean;
294
+ /**
295
+ * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.
296
+ * After mousedown, mousemove creates a shape,
297
+ * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.
298
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}
299
+ * @type Boolean
300
+ * @default
301
+ */
302
+ isDrawingMode: boolean;
303
+ /**
304
+ * Indicates whether objects should remain in current stack position when selected.
305
+ * When false objects are brought to top and rendered as part of the selection group
306
+ * @type Boolean
307
+ * @default
308
+ */
309
+ preserveObjectStacking: boolean;
310
+ /**
311
+ * Indicates if the right click on canvas can output the context menu or not
312
+ * @type Boolean
313
+ * @since 1.6.5
314
+ * @default
315
+ */
316
+ stopContextMenu: boolean;
317
+ /**
318
+ * Indicates if the canvas can fire right click events
319
+ * @type Boolean
320
+ * @since 1.6.5
321
+ * @default
322
+ */
323
+ fireRightClick: boolean;
324
+ /**
325
+ * Indicates if the canvas can fire middle click events
326
+ * @type Boolean
327
+ * @since 1.7.8
328
+ * @default
329
+ */
330
+ fireMiddleClick: boolean;
331
+ /**
332
+ * Keep track of the subTargets for Mouse Events
333
+ * @type FabricObject[]
334
+ */
335
+ targets: FabricObject[];
336
+ /**
337
+ * Keep track of the hovered target
338
+ * @type FabricObject | null
339
+ * @private
340
+ */
341
+ _hoveredTarget?: FabricObject;
342
+ /**
343
+ * hold the list of nested targets hovered
344
+ * @type FabricObject[]
345
+ * @private
346
+ */
347
+ _hoveredTargets: FabricObject[];
348
+ /**
349
+ * hold the list of objects to render
350
+ * @type FabricObject[]
351
+ * @private
352
+ */
353
+ _objectsToRender?: FabricObject[];
354
+ /**
355
+ * hold a referenfce to a data structure that contains information
356
+ * on the current on going transform
357
+ * @type
358
+ * @private
359
+ */
360
+ _currentTransform: Transform | null;
361
+ /**
362
+ * hold a reference to a data structure used to track the selecion
363
+ * box on canvas drag
364
+ * on the current on going transform
365
+ * @type
366
+ * @private
367
+ */
368
+ _groupSelector: any;
369
+ /**
370
+ * internal flag used to understand if the context top requires a cleanup
371
+ * in case this is true, the contextTop will be cleared at the next render
372
+ * @type boolean
373
+ * @private
374
+ */
375
+ contextTopDirty: boolean;
376
+ /**
377
+ * a reference to the context of an additional canvas that is used for scratch operations
378
+ * @TODOL This is created automatically when needed, while it shouldn't. is probably not even often needed
379
+ * and is a memory waste. We should either have one that gets added/deleted
380
+ * @type CanvasRenderingContext2D
381
+ * @private
382
+ */
383
+ contextCache: CanvasRenderingContext2D;
384
+ /**
385
+ * During a mouse event we may need the pointer multiple times in multiple functions.
386
+ * _absolutePointer holds a reference to the pointer in fabricCanvas/design coordinates that is valid for the event
387
+ * lifespan. Every fabricJS mouse event create and delete the cache every time
388
+ * We do this because there are some HTML DOM inspection functions to get the actual pointer coordinates
389
+ * @type {Point}
390
+ */
391
+ protected _absolutePointer?: Point;
392
+ /**
393
+ * During a mouse event we may need the pointer multiple times in multiple functions.
394
+ * _pointer holds a reference to the pointer in html coordinates that is valid for the event
395
+ * lifespan. Every fabricJS mouse event create and delete the cache every time
396
+ * We do this because there are some HTML DOM inspection functions to get the actual pointer coordinates
397
+ * @type {Point}
398
+ */
399
+ protected _pointer?: Point;
400
+ /**
401
+ * During a mouse event we may need the target multiple times in multiple functions.
402
+ * _target holds a reference to the target that is valid for the event
403
+ * lifespan. Every fabricJS mouse event create and delete the cache every time
404
+ * @type {FabricObject}
405
+ */
406
+ protected _target?: FabricObject;
407
+ upperCanvasEl: HTMLCanvasElement;
408
+ contextTop: CanvasRenderingContext2D;
409
+ wrapperEl: HTMLDivElement;
410
+ cacheCanvasEl: HTMLCanvasElement;
411
+ protected _isCurrentlyDrawing: boolean;
412
+ freeDrawingBrush?: BaseBrush;
413
+ _activeObject?: FabricObject;
414
+ protected initElements(el: string | HTMLCanvasElement): void;
415
+ protected _initRetinaScaling(): void;
416
+ /**
417
+ * @private
418
+ * @param {FabricObject} obj Object that was added
419
+ */
420
+ _onObjectAdded(obj: FabricObject): void;
421
+ /**
422
+ * @private
423
+ * @param {FabricObject} obj Object that was removed
424
+ */
425
+ _onObjectRemoved(obj: FabricObject): void;
426
+ /**
427
+ * Divides objects in two groups, one to render immediately
428
+ * and one to render as activeGroup.
429
+ * @return {Array} objects to render immediately and pushes the other in the activeGroup.
430
+ */
431
+ _chooseObjectsToRender(): FabricObject[];
432
+ /**
433
+ * Renders both the top canvas and the secondary container canvas.
434
+ */
435
+ renderAll(): void;
436
+ /**
437
+ * text selection is rendered by the active text instance during the rendering cycle
438
+ */
439
+ renderTopLayer(ctx: CanvasRenderingContext2D): void;
440
+ /**
441
+ * Method to render only the top canvas.
442
+ * Also used to render the group selection box.
443
+ * Does not render text selection.
444
+ */
445
+ renderTop(): void;
446
+ /**
447
+ * Given a pointer on the canvas with a viewport applied,
448
+ * find out the opinter in
449
+ * @private
450
+ */
451
+ _normalizePointer(object: FabricObject, pointer: Point): Point;
452
+ /**
453
+ * Returns true if object is transparent at a certain location
454
+ * Clarification: this is `is target transparent at location X or are controls there`
455
+ * @TODO this seems dumb that we treat controls with transparency. we can find controls
456
+ * programmatically without painting them, the cache canvas optimization is always valid
457
+ * @param {FabricObject} target Object to check
458
+ * @param {Number} x Left coordinate
459
+ * @param {Number} y Top coordinate
460
+ * @return {Boolean}
461
+ */
462
+ isTargetTransparent(target: FabricObject, x: number, y: number): boolean;
463
+ /**
464
+ * takes an event and determines if selection key has been pressed
465
+ * @private
466
+ * @param {TPointerEvent} e Event object
467
+ */
468
+ _isSelectionKeyPressed(e: TPointerEvent): boolean;
469
+ /**
470
+ * @private
471
+ * @param {TPointerEvent} e Event object
472
+ * @param {FabricObject} target
473
+ */
474
+ _shouldClearSelection(e: TPointerEvent, target?: FabricObject): boolean;
475
+ /**
476
+ * This method will take in consideration a modifier key pressed and the control we are
477
+ * about to drag, and try to guess the anchor point ( origin ) of the transormation.
478
+ * This should be really in the realm of controls, and we should remove specific code for legacy
479
+ * embedded actions.
480
+ * @TODO this probably deserve discussion/rediscovery and change/refactor
481
+ * @private
482
+ * @deprecated
483
+ * @param {FabricObject} target
484
+ * @param {string} action
485
+ * @param {boolean} altKey
486
+ * @returns {boolean} true if the transformation should be centered
487
+ */
488
+ private _shouldCenterTransform;
489
+ /**
490
+ * Given the control clicked, determine the origin of the transform.
491
+ * This is bad because controls can totally have custom names
492
+ * should disappear before release 4.0
493
+ * @private
494
+ * @deprecated
495
+ */
496
+ _getOriginFromCorner(target: FabricObject, controlName: string): {
497
+ x: TOriginX;
498
+ y: TOriginY;
499
+ };
500
+ /**
501
+ * @private
502
+ * @param {Event} e Event object
503
+ * @param {FaricObject} target
504
+ */
505
+ _setupCurrentTransform(e: TPointerEvent, target: FabricObject, alreadySelected: boolean): void;
506
+ /**
507
+ * Set the cursor type of the canvas element
508
+ * @param {String} value Cursor type of the canvas element.
509
+ * @see http://www.w3.org/TR/css3-ui/#cursor
510
+ */
511
+ setCursor(value: CSSStyleDeclaration['cursor']): void;
512
+ /**
513
+ * @private
514
+ * @param {CanvasRenderingContext2D} ctx to draw the selection on
515
+ */
516
+ _drawSelection(ctx: CanvasRenderingContext2D): void;
517
+ /**
518
+ * Method that determines what object we are clicking on
519
+ * the skipGroup parameter is for internal use, is needed for shift+click action
520
+ * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target
521
+ * or the outside part of the corner.
522
+ * @param {Event} e mouse event
523
+ * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through
524
+ * @return {FabricObject | null} the target found
525
+ */
526
+ findTarget(e: TPointerEvent, skipGroup?: boolean): FabricObject | undefined;
527
+ /**
528
+ * Checks point is inside the object.
529
+ * @param {Object} [pointer] x,y object of point coordinates we want to check.
530
+ * @param {FabricObject} obj Object to test against
531
+ * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.
532
+ * @return {Boolean} true if point is contained within an area of given object
533
+ * @private
534
+ */
535
+ _checkTarget(pointer: Point, obj: FabricObject, globalPointer: Point): boolean;
536
+ /**
537
+ * Internal Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted
538
+ * @param {Array} [objects] objects array to look into
539
+ * @param {Object} [pointer] x,y object of point coordinates we want to check.
540
+ * @return {FabricObject} **top most object from given `objects`** that contains pointer
541
+ * @private
542
+ */
543
+ _searchPossibleTargets(objects: FabricObject[], pointer: Point): FabricObject | undefined;
544
+ /**
545
+ * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted
546
+ * @see {@link fabric.Canvas#_searchPossibleTargets}
547
+ * @param {FabricObject[]} [objects] objects array to look into
548
+ * @param {Object} [pointer] x,y object of point coordinates we want to check.
549
+ * @return {FabricObject} **top most object on screen** that contains pointer
550
+ */
551
+ searchPossibleTargets(objects: FabricObject[], pointer: Point): FabricObject | undefined;
552
+ /**
553
+ * Returns pointer coordinates without the effect of the viewport
554
+ * @param {Object} pointer with "x" and "y" number values in canvas HTML coordinates
555
+ * @return {Object} object with "x" and "y" number values in fabricCanvas coordinates
556
+ */
557
+ restorePointerVpt(pointer: Point): Point;
558
+ /**
559
+ * Returns pointer coordinates relative to canvas.
560
+ * Can return coordinates with or without viewportTransform.
561
+ * ignoreVpt false gives back coordinates that represent
562
+ * the point clicked on canvas element.
563
+ * ignoreVpt true gives back coordinates after being processed
564
+ * by the viewportTransform ( sort of coordinates of what is displayed
565
+ * on the canvas where you are clicking.
566
+ * ignoreVpt true = HTMLElement coordinates relative to top,left
567
+ * ignoreVpt false, default = fabric space coordinates, the same used for shape position
568
+ * To interact with your shapes top and left you want to use ignoreVpt true
569
+ * most of the time, while ignoreVpt false will give you coordinates
570
+ * compatible with the object.oCoords system.
571
+ * of the time.
572
+ * @param {Event} e
573
+ * @param {Boolean} ignoreVpt
574
+ * @return {Point}
575
+ */
576
+ getPointer(e: TPointerEvent, ignoreVpt?: boolean): Point;
577
+ /**
578
+ * Internal use only
579
+ * @protected
580
+ */
581
+ protected _setDimensionsImpl(dimensions: TSize, options?: TCanvasSizeOptions): void;
582
+ /**
583
+ * Helper for setting width/height
584
+ * @private
585
+ * @param {String} prop property (width|height)
586
+ * @param {Number} value value to set property to
587
+ */
588
+ _setBackstoreDimension(prop: keyof TSize, value: number): void;
589
+ /**
590
+ * Helper for setting css width/height
591
+ * @private
592
+ * @param {String} prop property (width|height)
593
+ * @param {String} value value to set property to
594
+ */
595
+ _setCssDimension(prop: keyof TSize, value: string): void;
596
+ /**
597
+ * @private
598
+ * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized
599
+ */
600
+ protected _createUpperCanvas(): void;
601
+ protected _createCacheCanvas(): void;
602
+ protected _initWrapperElement(): void;
603
+ /**
604
+ * @private
605
+ * @param {HTMLCanvasElement} element canvas element to apply styles on
606
+ */
607
+ protected _applyCanvasStyle(element: HTMLCanvasElement): void;
608
+ /**
609
+ * Returns context of top canvas where interactions are drawn
610
+ * @returns {CanvasRenderingContext2D}
611
+ */
612
+ getTopContext(): CanvasRenderingContext2D;
613
+ /**
614
+ * Returns context of canvas where object selection is drawn
615
+ * @alias
616
+ * @return {CanvasRenderingContext2D}
617
+ */
618
+ getSelectionContext(): CanvasRenderingContext2D;
619
+ /**
620
+ * Returns &lt;canvas> element on which object selection is drawn
621
+ * @return {HTMLCanvasElement}
622
+ */
623
+ getSelectionElement(): HTMLCanvasElement;
624
+ /**
625
+ * Returns currently active object
626
+ * @return {FabricObject | null} active object
627
+ */
628
+ getActiveObject(): FabricObject | undefined;
629
+ /**
630
+ * Returns an array with the current selected objects
631
+ * @return {FabricObject[]} active objects array
632
+ */
633
+ getActiveObjects(): FabricObject[];
634
+ /**
635
+ * @private
636
+ * Compares the old activeObject with the current one and fires correct events
637
+ * @param {FabricObject[]} oldObjects old activeObject
638
+ * @param {TPointerEvent} e mouse event triggering the selection events
639
+ */
640
+ _fireSelectionEvents(oldObjects: FabricObject[], e?: TPointerEvent): void;
641
+ /**
642
+ * Sets given object as the only active object on canvas
643
+ * @param {FabricObject} object Object to set as an active one
644
+ * @param {TPointerEvent} [e] Event (passed along when firing "object:selected")
645
+ * @chainable
646
+ */
647
+ setActiveObject(object: FabricObject, e?: TPointerEvent): void;
648
+ /**
649
+ * This is a private method for now.
650
+ * This is supposed to be equivalent to setActiveObject but without firing
651
+ * any event. There is commitment to have this stay this way.
652
+ * This is the functional part of setActiveObject.
653
+ * @private
654
+ * @param {Object} object to set as active
655
+ * @param {Event} [e] Event (passed along when firing "object:selected")
656
+ * @return {Boolean} true if the selection happened
657
+ */
658
+ _setActiveObject(object: FabricObject, e?: TPointerEvent): boolean;
659
+ /**
660
+ * This is a private method for now.
661
+ * This is supposed to be equivalent to discardActiveObject but without firing
662
+ * any selection events ( can still fire object transformation events ). There is commitment to have this stay this way.
663
+ * This is the functional part of discardActiveObject.
664
+ * @param {Event} [e] Event (passed along when firing "object:deselected")
665
+ * @param {Object} object the next object to set as active, reason why we are discarding this
666
+ * @return {Boolean} true if the selection happened
667
+ * @private
668
+ */
669
+ _discardActiveObject(e?: TPointerEvent, object?: FabricObject): boolean;
670
+ /**
671
+ * Discards currently active object and fire events. If the function is called by fabric
672
+ * as a consequence of a mouse event, the event is passed as a parameter and
673
+ * sent to the fire function for the custom events. When used as a method the
674
+ * e param does not have any application.
675
+ * @param {event} e
676
+ * @chainable
677
+ */
678
+ discardActiveObject(e?: TPointerEvent): void;
679
+ /**
680
+ * Sets viewport transformation of this canvas instance
681
+ * @param {Array} vpt a Canvas 2D API transform matrix
682
+ */
683
+ setViewportTransform(vpt: TMat2D): void;
684
+ /**
685
+ * Clears the canvas element, disposes objects, removes all event listeners and frees resources
686
+ *
687
+ * **CAUTION**:
688
+ *
689
+ * This method is **UNSAFE**.
690
+ * You may encounter a race condition using it if there's a requested render.
691
+ * Call this method only if you are sure rendering has settled.
692
+ * Consider using {@link dispose} as it is **SAFE**
693
+ *
694
+ * @private
695
+ */
696
+ destroy(this: TDestroyedCanvas): void;
697
+ /**
698
+ * Clears all contexts (background, main, top) of an instance
699
+ */
700
+ clear(): void;
701
+ /**
702
+ * Draws objects' controls (borders/controls)
703
+ * @param {CanvasRenderingContext2D} ctx Context to render controls on
704
+ */
705
+ drawControls(ctx: CanvasRenderingContext2D): void;
706
+ /**
707
+ * @private
708
+ */
709
+ _toObject(instance: FabricObject, methodName: 'toObject' | 'toDatalessObject', propertiesToInclude: string[]): Record<string, any>;
710
+ /**
711
+ * Realises an object's group transformation on it
712
+ * @private
713
+ * @param {FabricObject} [instance] the object to transform (gets mutated)
714
+ * @returns the original values of instance which were changed
715
+ */
716
+ _realizeGroupTransformOnObject(instance: FabricObject): Partial<typeof instance>;
717
+ /**
718
+ * @private
719
+ */
720
+ _setSVGObject(markup: string[], instance: FabricObject, reviver: TSVGReviver): void;
721
+ }
722
+ export {};
723
+ //# sourceMappingURL=SelectableCanvas.d.ts.map