fabric 5.3.0 → 6.0.0-beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintignore +3 -0
  5. package/.eslintrc.js +43 -0
  6. package/.eslintrc.json +38 -46
  7. package/.eslintrc_tests +12 -0
  8. package/.gitattributes +2 -0
  9. package/.gitpod.yml +17 -1
  10. package/.prettierignore +19 -0
  11. package/.prettierrc +4 -0
  12. package/CHANGELOG.md +532 -189
  13. package/CONTRIBUTING.md +224 -59
  14. package/README.md +200 -235
  15. package/bower.json +1 -3
  16. package/dist/fabric.d.ts +42 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.js +27582 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/index.min.js +1 -0
  21. package/dist/index.mjs +27519 -0
  22. package/dist/index.mjs.map +1 -0
  23. package/dist/index.node.cjs +27663 -0
  24. package/dist/index.node.cjs.map +1 -0
  25. package/dist/index.node.d.ts +14 -0
  26. package/dist/index.node.mjs +27606 -0
  27. package/dist/index.node.mjs.map +1 -0
  28. package/dist/src/ClassRegistry.d.ts +13 -0
  29. package/dist/src/Collection.d.ts +136 -0
  30. package/dist/src/CommonMethods.d.ts +32 -0
  31. package/dist/src/EventTypeDefs.d.ts +227 -0
  32. package/dist/src/Intersection.d.ts +112 -0
  33. package/dist/src/Observable.d.ts +60 -0
  34. package/dist/src/Pattern.d.ts +113 -0
  35. package/dist/src/Point.d.ts +232 -0
  36. package/dist/src/Shadow.d.ts +97 -0
  37. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  38. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  39. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  40. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  41. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  42. package/dist/src/cache.d.ts +47 -0
  43. package/dist/src/canvas/Canvas.d.ts +548 -0
  44. package/dist/src/canvas/SelectableCanvas.d.ts +754 -0
  45. package/dist/src/canvas/StaticCanvas.d.ts +778 -0
  46. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  47. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  48. package/dist/src/color/Color.d.ts +174 -0
  49. package/dist/src/color/color_map.d.ts +155 -0
  50. package/dist/src/color/constants.d.ts +22 -0
  51. package/dist/src/color/util.d.ts +12 -0
  52. package/dist/src/config.d.ts +115 -0
  53. package/dist/src/constants.d.ts +14 -0
  54. package/dist/src/controls/Control.d.ts +228 -0
  55. package/dist/src/controls/changeWidth.d.ts +13 -0
  56. package/dist/src/controls/commonControls.d.ts +28 -0
  57. package/dist/src/controls/controlRendering.d.ts +29 -0
  58. package/dist/src/controls/drag.d.ts +12 -0
  59. package/dist/src/controls/index.d.ts +13 -0
  60. package/dist/src/controls/polyControl.d.ts +5 -0
  61. package/dist/src/controls/rotate.d.ts +12 -0
  62. package/dist/src/controls/scale.d.ts +47 -0
  63. package/dist/src/controls/scaleSkew.d.ts +39 -0
  64. package/dist/src/controls/skew.d.ts +33 -0
  65. package/dist/src/controls/util.d.ts +41 -0
  66. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  67. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  68. package/dist/src/env/browser.d.ts +3 -0
  69. package/dist/src/env/index.d.ts +15 -0
  70. package/dist/src/env/node.d.ts +5 -0
  71. package/dist/src/env/types.d.ts +15 -0
  72. package/dist/src/filters/BaseFilter.d.ts +153 -0
  73. package/dist/src/filters/BlendColor.d.ts +80 -0
  74. package/dist/src/filters/BlendImage.d.ts +92 -0
  75. package/dist/src/filters/Blur.d.ts +51 -0
  76. package/dist/src/filters/Boilerplate.d.ts +48 -0
  77. package/dist/src/filters/Brightness.d.ts +47 -0
  78. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  79. package/dist/src/filters/ColorMatrix.d.ts +63 -0
  80. package/dist/src/filters/ColorMatrixFilters.d.ts +545 -0
  81. package/dist/src/filters/Composed.d.ts +45 -0
  82. package/dist/src/filters/Contrast.d.ts +45 -0
  83. package/dist/src/filters/Convolute.d.ts +82 -0
  84. package/dist/src/filters/FilterBackend.d.ts +14 -0
  85. package/dist/src/filters/GLProbes/GLProbe.d.ts +11 -0
  86. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
  87. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  88. package/dist/src/filters/Gamma.d.ts +54 -0
  89. package/dist/src/filters/Grayscale.d.ts +46 -0
  90. package/dist/src/filters/HueRotation.d.ts +24 -0
  91. package/dist/src/filters/Invert.d.ts +55 -0
  92. package/dist/src/filters/Noise.d.ts +54 -0
  93. package/dist/src/filters/Pixelate.d.ts +44 -0
  94. package/dist/src/filters/RemoveColor.d.ts +63 -0
  95. package/dist/src/filters/Resize.d.ts +136 -0
  96. package/dist/src/filters/Saturation.d.ts +48 -0
  97. package/dist/src/filters/Vibrance.d.ts +48 -0
  98. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  99. package/dist/src/filters/filters.d.ts +21 -0
  100. package/dist/src/filters/index.d.ts +5 -0
  101. package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
  102. package/dist/src/filters/shaders/blendColor.d.ts +13 -0
  103. package/dist/src/filters/shaders/blendImage.d.ts +3 -0
  104. package/dist/src/filters/shaders/blur.d.ts +2 -0
  105. package/dist/src/filters/shaders/brightness.d.ts +2 -0
  106. package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
  107. package/dist/src/filters/shaders/constrast.d.ts +2 -0
  108. package/dist/src/filters/shaders/convolute.d.ts +11 -0
  109. package/dist/src/filters/shaders/gamma.d.ts +2 -0
  110. package/dist/src/filters/shaders/grayscale.d.ts +3 -0
  111. package/dist/src/filters/shaders/invert.d.ts +2 -0
  112. package/dist/src/filters/shaders/noise.d.ts +2 -0
  113. package/dist/src/filters/shaders/pixelate.d.ts +2 -0
  114. package/dist/src/filters/shaders/removeColor.d.ts +2 -0
  115. package/dist/src/filters/shaders/saturation.d.ts +2 -0
  116. package/dist/src/filters/shaders/vibrance.d.ts +2 -0
  117. package/dist/src/filters/typedefs.d.ts +49 -0
  118. package/dist/src/gradient/Gradient.d.ts +149 -0
  119. package/dist/src/gradient/constants.d.ts +15 -0
  120. package/dist/src/gradient/parser/index.d.ts +4 -0
  121. package/dist/src/gradient/parser/misc.d.ts +4 -0
  122. package/dist/src/gradient/parser/parseColorStops.d.ts +3 -0
  123. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  124. package/dist/src/gradient/typedefs.d.ts +93 -0
  125. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  126. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  127. package/dist/src/parkinglot/straighten.d.ts +2 -0
  128. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  129. package/dist/src/parser/attributes.d.ts +6 -0
  130. package/dist/src/parser/constants.d.ts +53 -0
  131. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  132. package/dist/src/parser/elementById.d.ts +6 -0
  133. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  134. package/dist/src/parser/elements_parser.d.ts +3 -0
  135. package/dist/src/parser/getCSSRules.d.ts +7 -0
  136. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  137. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  138. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  139. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  140. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  141. package/dist/src/parser/index.d.ts +10 -0
  142. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  143. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  144. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  145. package/dist/src/parser/normalizeValue.d.ts +2 -0
  146. package/dist/src/parser/parseAttributes.d.ts +9 -0
  147. package/dist/src/parser/parseElements.d.ts +11 -0
  148. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  149. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  150. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  151. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  152. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  153. package/dist/src/parser/parseStyleString.d.ts +2 -0
  154. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  155. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  156. package/dist/src/parser/percent.d.ts +9 -0
  157. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  158. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  159. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  160. package/dist/src/parser/selectorMatches.d.ts +2 -0
  161. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  162. package/dist/src/parser/skewMatrix.d.ts +2 -0
  163. package/dist/src/parser/translateMatrix.d.ts +2 -0
  164. package/dist/src/shapes/ActiveSelection.d.ts +82 -0
  165. package/dist/src/shapes/Circle.d.ts +99 -0
  166. package/dist/src/shapes/Ellipse.d.ts +84 -0
  167. package/dist/src/shapes/Group.d.ts +408 -0
  168. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  169. package/dist/src/shapes/IText/IText.d.ts +335 -0
  170. package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
  171. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +83 -0
  172. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
  173. package/dist/src/shapes/IText/constants.d.ts +13 -0
  174. package/dist/src/shapes/Image.d.ts +311 -0
  175. package/dist/src/shapes/Line.d.ts +126 -0
  176. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  177. package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
  178. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  179. package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
  180. package/dist/src/shapes/Object/Object.d.ts +594 -0
  181. package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
  182. package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
  183. package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
  184. package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
  185. package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
  186. package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
  187. package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
  188. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
  189. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  190. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  191. package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
  192. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  193. package/dist/src/shapes/Object/types/index.d.ts +6 -0
  194. package/dist/src/shapes/Path.d.ts +130 -0
  195. package/dist/src/shapes/Polygon.d.ts +9 -0
  196. package/dist/src/shapes/Polyline.d.ts +140 -0
  197. package/dist/src/shapes/Rect.d.ts +76 -0
  198. package/dist/src/shapes/Text/StyledText.d.ts +119 -0
  199. package/dist/src/shapes/Text/Text.d.ts +673 -0
  200. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  201. package/dist/src/shapes/Text/constants.d.ts +7 -0
  202. package/dist/src/shapes/Textbox.d.ts +185 -0
  203. package/dist/src/shapes/Triangle.d.ts +25 -0
  204. package/dist/src/typedefs.d.ts +90 -0
  205. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  206. package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  207. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  208. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  209. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  210. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  211. package/dist/src/util/animation/animate.d.ts +37 -0
  212. package/dist/src/util/animation/easing.d.ts +130 -0
  213. package/dist/src/util/animation/types.d.ts +87 -0
  214. package/dist/src/util/applyMixins.d.ts +8 -0
  215. package/dist/src/util/dom_event.d.ts +5 -0
  216. package/dist/src/util/dom_misc.d.ts +39 -0
  217. package/dist/src/util/dom_request.d.ts +14 -0
  218. package/dist/src/util/dom_style.d.ts +7 -0
  219. package/dist/src/util/fireEvent.d.ts +3 -0
  220. package/dist/src/util/index.d.ts +35 -0
  221. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  222. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  223. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  224. package/dist/src/util/internals/index.d.ts +4 -0
  225. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  226. package/dist/src/util/internals/uid.d.ts +2 -0
  227. package/dist/src/util/lang_string.d.ts +22 -0
  228. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  229. package/dist/src/util/misc/capValue.d.ts +2 -0
  230. package/dist/src/util/misc/cos.d.ts +10 -0
  231. package/dist/src/util/misc/dom.d.ts +28 -0
  232. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  233. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  234. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  235. package/dist/src/util/misc/matrix.d.ts +92 -0
  236. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  237. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  238. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  239. package/dist/src/util/misc/pick.d.ts +9 -0
  240. package/dist/src/util/misc/planeChange.d.ts +84 -0
  241. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  242. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  243. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  244. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  245. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  246. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  247. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  248. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  249. package/dist/src/util/misc/sin.d.ts +10 -0
  250. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  251. package/dist/src/util/misc/textStyles.d.ts +32 -0
  252. package/dist/src/util/misc/toFixed.d.ts +8 -0
  253. package/dist/src/util/misc/vectors.d.ts +57 -0
  254. package/dist/src/util/path/index.d.ts +96 -0
  255. package/dist/src/util/path/regex.d.ts +3 -0
  256. package/dist/src/util/path/typechecks.d.ts +24 -0
  257. package/dist/src/util/path/typedefs.d.ts +220 -0
  258. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  259. package/dist/src/util/types.d.ts +19 -0
  260. package/fabric.ts +51 -0
  261. package/index.node.ts +37 -0
  262. package/index.ts +1 -0
  263. package/package.json +100 -40
  264. package/publish.js +0 -26
  265. package/rollup.config.mjs +91 -0
  266. package/rollup.test.config.js +24 -0
  267. package/scripts/build.mjs +50 -0
  268. package/scripts/buildLock.mjs +115 -0
  269. package/scripts/buildReporter.mjs +15 -0
  270. package/scripts/buildStats.mjs +139 -0
  271. package/scripts/dirname.mjs +14 -0
  272. package/scripts/git.mjs +36 -0
  273. package/scripts/index.mjs +564 -0
  274. package/scripts/sandbox.mjs +149 -0
  275. package/src/ClassRegistry.ts +56 -0
  276. package/src/Collection.ts +346 -0
  277. package/src/CommonMethods.ts +63 -0
  278. package/src/EventTypeDefs.ts +296 -0
  279. package/src/Intersection.ts +302 -0
  280. package/src/Observable.ts +181 -0
  281. package/src/Pattern.ts +227 -0
  282. package/src/Point.ts +388 -0
  283. package/src/Shadow.ts +214 -0
  284. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  285. package/src/brushes/CircleBrush.ts +145 -0
  286. package/src/brushes/PatternBrush.ts +70 -0
  287. package/src/brushes/PencilBrush.ts +300 -0
  288. package/src/brushes/SprayBrush.ts +219 -0
  289. package/src/cache.ts +90 -0
  290. package/src/canvas/Canvas.ts +1607 -0
  291. package/src/canvas/SelectableCanvas.ts +1608 -0
  292. package/src/canvas/StaticCanvas.ts +1734 -0
  293. package/src/canvas/TextEditingManager.ts +48 -0
  294. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  295. package/src/color/Color.ts +404 -0
  296. package/src/color/color_map.ts +154 -0
  297. package/src/color/constants.ts +26 -0
  298. package/src/color/util.ts +32 -0
  299. package/src/config.ts +159 -0
  300. package/src/constants.ts +20 -0
  301. package/src/controls/Control.ts +380 -0
  302. package/src/controls/changeWidth.ts +52 -0
  303. package/src/controls/commonControls.ts +105 -0
  304. package/src/controls/controlRendering.ts +138 -0
  305. package/src/controls/drag.ts +31 -0
  306. package/src/controls/index.ts +22 -0
  307. package/src/controls/polyControl.ts +135 -0
  308. package/src/controls/rotate.ts +87 -0
  309. package/src/controls/scale.ts +277 -0
  310. package/src/controls/scaleSkew.ts +92 -0
  311. package/src/controls/skew.ts +242 -0
  312. package/src/controls/util.ts +154 -0
  313. package/src/controls/wrapWithFireEvent.ts +25 -0
  314. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  315. package/src/env/browser.ts +32 -0
  316. package/src/env/index.ts +24 -0
  317. package/src/env/node.ts +56 -0
  318. package/src/env/types.ts +15 -0
  319. package/src/filters/{base_filter.class.js → BaseFilter.ts} +192 -151
  320. package/src/filters/BlendColor.ts +217 -0
  321. package/src/filters/BlendImage.ts +228 -0
  322. package/src/filters/Blur.ts +179 -0
  323. package/src/filters/Boilerplate.ts +94 -0
  324. package/src/filters/Brightness.ts +83 -0
  325. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  326. package/src/filters/ColorMatrix.ts +145 -0
  327. package/src/filters/ColorMatrixFilters.ts +77 -0
  328. package/src/filters/Composed.ts +76 -0
  329. package/src/filters/Contrast.ts +82 -0
  330. package/src/filters/Convolute.ts +184 -0
  331. package/src/filters/FilterBackend.ts +34 -0
  332. package/src/filters/GLProbes/GLProbe.ts +11 -0
  333. package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
  334. package/src/filters/GLProbes/WebGLProbe.ts +46 -0
  335. package/src/filters/Gamma.ts +110 -0
  336. package/src/filters/Grayscale.ts +102 -0
  337. package/src/filters/HueRotation.ts +62 -0
  338. package/src/filters/Invert.ts +99 -0
  339. package/src/filters/Noise.ts +94 -0
  340. package/src/filters/Pixelate.ts +96 -0
  341. package/src/filters/RemoveColor.ts +135 -0
  342. package/src/filters/Resize.ts +538 -0
  343. package/src/filters/Saturation.ts +87 -0
  344. package/src/filters/Vibrance.ts +88 -0
  345. package/src/filters/WebGLFilterBackend.ts +430 -0
  346. package/src/filters/filters.ts +28 -0
  347. package/src/filters/index.ts +5 -0
  348. package/src/filters/shaders/baseFilter.ts +19 -0
  349. package/src/filters/shaders/blendColor.ts +33 -0
  350. package/src/filters/shaders/blendImage.ts +32 -0
  351. package/src/filters/shaders/blur.ts +24 -0
  352. package/src/filters/shaders/brightness.ts +11 -0
  353. package/src/filters/shaders/colorMatrix.ts +12 -0
  354. package/src/filters/shaders/constrast.ts +11 -0
  355. package/src/filters/shaders/convolute.ts +154 -0
  356. package/src/filters/shaders/gamma.ts +15 -0
  357. package/src/filters/shaders/grayscale.ts +36 -0
  358. package/src/filters/shaders/invert.ts +19 -0
  359. package/src/filters/shaders/noise.ts +16 -0
  360. package/src/filters/shaders/pixelate.ts +19 -0
  361. package/src/filters/shaders/removeColor.ts +13 -0
  362. package/src/filters/shaders/saturation.ts +15 -0
  363. package/src/filters/shaders/vibrance.ts +16 -0
  364. package/src/filters/typedefs.ts +65 -0
  365. package/src/gradient/Gradient.ts +406 -0
  366. package/src/gradient/constants.ts +12 -0
  367. package/src/gradient/parser/index.ts +3 -0
  368. package/src/gradient/parser/misc.ts +13 -0
  369. package/src/gradient/parser/parseColorStops.ts +56 -0
  370. package/src/gradient/parser/parseCoords.ts +73 -0
  371. package/src/gradient/typedefs.ts +104 -0
  372. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  373. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  374. package/src/parkinglot/straighten.ts +58 -0
  375. package/src/parser/applyViewboxTransform.ts +157 -0
  376. package/src/parser/attributes.ts +25 -0
  377. package/src/parser/constants.ts +115 -0
  378. package/src/parser/doesSomeParentMatch.ts +19 -0
  379. package/src/parser/elementById.ts +21 -0
  380. package/src/parser/elementMatchesRule.ts +16 -0
  381. package/src/parser/elements_parser.ts +191 -0
  382. package/src/parser/getCSSRules.ts +62 -0
  383. package/src/parser/getGlobalStylesForElement.ts +19 -0
  384. package/src/parser/getGradientDefs.ts +31 -0
  385. package/src/parser/getMultipleNodes.ts +15 -0
  386. package/src/parser/getSvgRegex.ts +5 -0
  387. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  388. package/src/parser/index.ts +9 -0
  389. package/src/parser/loadSVGFromString.ts +26 -0
  390. package/src/parser/loadSVGFromURL.ts +40 -0
  391. package/src/parser/normalizeAttr.ts +10 -0
  392. package/src/parser/normalizeValue.ts +63 -0
  393. package/src/parser/parseAttributes.ts +90 -0
  394. package/src/parser/parseElements.ts +28 -0
  395. package/src/parser/parseFontDeclaration.ts +44 -0
  396. package/src/parser/parsePointsAttribute.ts +34 -0
  397. package/src/parser/parseSVGDocument.ts +93 -0
  398. package/src/parser/parseStyleAttribute.ts +27 -0
  399. package/src/parser/parseStyleObject.ts +15 -0
  400. package/src/parser/parseStyleString.ts +16 -0
  401. package/src/parser/parseTransformAttribute.ts +155 -0
  402. package/src/parser/parseUseDirectives.ts +78 -0
  403. package/src/parser/percent.ts +27 -0
  404. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  405. package/src/parser/rotateMatrix.ts +21 -0
  406. package/src/parser/scaleMatrix.ts +9 -0
  407. package/src/parser/selectorMatches.ts +25 -0
  408. package/src/parser/setStrokeFillOpacity.ts +40 -0
  409. package/src/parser/skewMatrix.ts +6 -0
  410. package/src/parser/translateMatrix.ts +8 -0
  411. package/src/shapes/ActiveSelection.ts +189 -0
  412. package/src/shapes/Circle.ts +242 -0
  413. package/src/shapes/Ellipse.ts +179 -0
  414. package/src/shapes/Group.ts +1100 -0
  415. package/src/shapes/IText/DraggableTextDelegate.ts +382 -0
  416. package/src/shapes/IText/IText.ts +693 -0
  417. package/src/shapes/IText/ITextBehavior.ts +1064 -0
  418. package/src/shapes/IText/ITextClickBehavior.ts +325 -0
  419. package/src/shapes/IText/ITextKeyBehavior.ts +685 -0
  420. package/src/shapes/IText/constants.ts +47 -0
  421. package/src/shapes/Image.ts +841 -0
  422. package/src/shapes/Line.ts +346 -0
  423. package/src/shapes/Object/AnimatableObject.ts +106 -0
  424. package/src/shapes/Object/FabricObject.ts +29 -0
  425. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  426. package/src/shapes/Object/InteractiveObject.ts +672 -0
  427. package/src/shapes/Object/Object.ts +1561 -0
  428. package/src/shapes/Object/ObjectGeometry.ts +813 -0
  429. package/src/shapes/Object/ObjectOrigin.ts +276 -0
  430. package/src/shapes/Object/StackedObject.ts +206 -0
  431. package/src/shapes/Object/defaultValues.ts +108 -0
  432. package/src/shapes/Object/types/BaseProps.ts +96 -0
  433. package/src/shapes/Object/types/BorderProps.ts +40 -0
  434. package/src/shapes/Object/types/ControlProps.ts +69 -0
  435. package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
  436. package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
  437. package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
  438. package/src/shapes/Object/types/ObjectProps.ts +46 -0
  439. package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
  440. package/src/shapes/Object/types/index.ts +8 -0
  441. package/src/shapes/Path.ts +416 -0
  442. package/src/shapes/Polygon.ts +20 -0
  443. package/src/shapes/Polyline.ts +359 -0
  444. package/src/shapes/Rect.ts +233 -0
  445. package/src/shapes/Text/StyledText.ts +329 -0
  446. package/src/shapes/Text/Text.ts +1884 -0
  447. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  448. package/src/shapes/Text/constants.ts +91 -0
  449. package/src/shapes/Textbox.ts +477 -0
  450. package/src/shapes/Triangle.ts +60 -0
  451. package/src/typedefs.ts +115 -0
  452. package/src/util/animation/AnimationBase.ts +166 -0
  453. package/src/util/animation/AnimationFrameProvider.ts +9 -0
  454. package/src/util/animation/AnimationRegistry.ts +58 -0
  455. package/src/util/animation/ArrayAnimation.ts +27 -0
  456. package/src/util/animation/ColorAnimation.ts +74 -0
  457. package/src/util/animation/ValueAnimation.ts +29 -0
  458. package/src/util/animation/animate.ts +74 -0
  459. package/src/util/animation/easing.ts +327 -0
  460. package/src/util/animation/types.ts +136 -0
  461. package/src/util/applyMixins.ts +22 -0
  462. package/src/util/dom_event.ts +28 -0
  463. package/src/util/dom_misc.ts +121 -0
  464. package/src/util/dom_request.ts +64 -0
  465. package/src/util/dom_style.ts +20 -0
  466. package/src/util/fireEvent.ts +15 -0
  467. package/src/util/index.ts +102 -0
  468. package/src/util/internals/cloneDeep.ts +2 -0
  469. package/src/util/internals/getRandomInt.ts +8 -0
  470. package/src/util/internals/ifNaN.ts +9 -0
  471. package/src/util/internals/index.ts +3 -0
  472. package/src/util/internals/removeFromArray.ts +14 -0
  473. package/src/util/internals/uid.ts +3 -0
  474. package/src/util/lang_string.ts +79 -0
  475. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  476. package/src/util/misc/capValue.ts +2 -0
  477. package/src/util/misc/cos.ts +24 -0
  478. package/src/util/misc/dom.ts +50 -0
  479. package/src/util/misc/findScaleTo.ts +44 -0
  480. package/src/util/misc/groupSVGElements.ts +15 -0
  481. package/src/util/misc/isTransparent.ts +28 -0
  482. package/src/util/misc/matrix.ts +207 -0
  483. package/src/util/misc/mergeClipPaths.ts +40 -0
  484. package/src/util/misc/objectEnlive.ts +189 -0
  485. package/src/util/misc/objectTransforms.ts +129 -0
  486. package/src/util/misc/pick.ts +29 -0
  487. package/src/util/misc/planeChange.ts +136 -0
  488. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  489. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +226 -0
  490. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  491. package/src/util/misc/projectStroke/index.ts +53 -0
  492. package/src/util/misc/projectStroke/types.ts +24 -0
  493. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  494. package/src/util/misc/resolveOrigin.ts +22 -0
  495. package/src/util/misc/rotatePoint.ts +15 -0
  496. package/src/util/misc/sin.ts +26 -0
  497. package/src/util/misc/svgParsing.ts +181 -0
  498. package/src/util/misc/textStyles.ts +134 -0
  499. package/src/util/misc/toFixed.ts +8 -0
  500. package/src/util/misc/vectors.ts +82 -0
  501. package/src/util/path/index.ts +1038 -0
  502. package/src/util/path/regex.ts +41 -0
  503. package/src/util/path/typechecks.ts +145 -0
  504. package/src/util/path/typedefs.ts +305 -0
  505. package/src/util/transform_matrix_removal.ts +60 -0
  506. package/src/util/types.ts +78 -0
  507. package/tsconfig.json +106 -0
  508. package/HEADER.js +0 -203
  509. package/build.js +0 -287
  510. package/dist/fabric.js +0 -31187
  511. package/dist/fabric.min.js +0 -1
  512. package/old-travis-reference.yml +0 -97
  513. package/src/brushes/circle_brush.class.js +0 -144
  514. package/src/brushes/pattern_brush.class.js +0 -61
  515. package/src/brushes/pencil_brush.class.js +0 -310
  516. package/src/brushes/spray_brush.class.js +0 -219
  517. package/src/canvas.class.js +0 -1312
  518. package/src/color.class.js +0 -636
  519. package/src/control.class.js +0 -339
  520. package/src/controls.actions.js +0 -740
  521. package/src/controls.render.js +0 -99
  522. package/src/elements_parser.js +0 -152
  523. package/src/filters/2d_backend.class.js +0 -65
  524. package/src/filters/blendcolor_filter.class.js +0 -251
  525. package/src/filters/blendimage_filter.class.js +0 -247
  526. package/src/filters/blur_filter.class.js +0 -217
  527. package/src/filters/brightness_filter.class.js +0 -113
  528. package/src/filters/colormatrix_filter.class.js +0 -159
  529. package/src/filters/composed_filter.class.js +0 -72
  530. package/src/filters/contrast_filter.class.js +0 -113
  531. package/src/filters/convolute_filter.class.js +0 -352
  532. package/src/filters/filter_boilerplate.js +0 -111
  533. package/src/filters/filter_generator.js +0 -85
  534. package/src/filters/gamma_filter.class.js +0 -136
  535. package/src/filters/grayscale_filter.class.js +0 -154
  536. package/src/filters/hue_rotation.class.js +0 -107
  537. package/src/filters/invert_filter.class.js +0 -111
  538. package/src/filters/noise_filter.class.js +0 -134
  539. package/src/filters/pixelate_filter.class.js +0 -137
  540. package/src/filters/removecolor_filter.class.js +0 -173
  541. package/src/filters/resize_filter.class.js +0 -490
  542. package/src/filters/saturate_filter.class.js +0 -119
  543. package/src/filters/vibrance_filter.class.js +0 -122
  544. package/src/filters/webgl_backend.class.js +0 -396
  545. package/src/globalFabric.js +0 -4
  546. package/src/gradient.class.js +0 -490
  547. package/src/intersection.class.js +0 -172
  548. package/src/log.js +0 -11
  549. package/src/mixins/animation.mixin.js +0 -231
  550. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  551. package/src/mixins/canvas_events.mixin.js +0 -974
  552. package/src/mixins/canvas_gestures.mixin.js +0 -149
  553. package/src/mixins/canvas_grouping.mixin.js +0 -177
  554. package/src/mixins/canvas_serialization.mixin.js +0 -228
  555. package/src/mixins/collection.mixin.js +0 -170
  556. package/src/mixins/default_controls.js +0 -114
  557. package/src/mixins/itext.svg_export.js +0 -241
  558. package/src/mixins/itext_behavior.mixin.js +0 -940
  559. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  560. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  561. package/src/mixins/object.svg_export.js +0 -258
  562. package/src/mixins/object_geometry.mixin.js +0 -683
  563. package/src/mixins/object_interactivity.mixin.js +0 -314
  564. package/src/mixins/object_origin.mixin.js +0 -255
  565. package/src/mixins/object_stacking.mixin.js +0 -80
  566. package/src/mixins/object_straightening.mixin.js +0 -80
  567. package/src/mixins/observable.mixin.js +0 -141
  568. package/src/mixins/shared_methods.mixin.js +0 -94
  569. package/src/mixins/stateful.mixin.js +0 -107
  570. package/src/mixins/text_style.mixin.js +0 -324
  571. package/src/parser.js +0 -1090
  572. package/src/pattern.class.js +0 -189
  573. package/src/point.class.js +0 -337
  574. package/src/shadow.class.js +0 -195
  575. package/src/shapes/active_selection.class.js +0 -155
  576. package/src/shapes/circle.class.js +0 -210
  577. package/src/shapes/ellipse.class.js +0 -181
  578. package/src/shapes/group.class.js +0 -593
  579. package/src/shapes/image.class.js +0 -764
  580. package/src/shapes/itext.class.js +0 -526
  581. package/src/shapes/line.class.js +0 -324
  582. package/src/shapes/object.class.js +0 -2008
  583. package/src/shapes/path.class.js +0 -384
  584. package/src/shapes/polygon.class.js +0 -81
  585. package/src/shapes/polyline.class.js +0 -268
  586. package/src/shapes/rect.class.js +0 -187
  587. package/src/shapes/text.class.js +0 -1696
  588. package/src/shapes/textbox.class.js +0 -461
  589. package/src/shapes/triangle.class.js +0 -93
  590. package/src/static_canvas.class.js +0 -1881
  591. package/src/util/anim_ease.js +0 -398
  592. package/src/util/animate.js +0 -254
  593. package/src/util/animate_color.js +0 -74
  594. package/src/util/dom_event.js +0 -50
  595. package/src/util/dom_misc.js +0 -300
  596. package/src/util/dom_request.js +0 -54
  597. package/src/util/dom_style.js +0 -70
  598. package/src/util/lang_array.js +0 -94
  599. package/src/util/lang_class.js +0 -115
  600. package/src/util/lang_object.js +0 -75
  601. package/src/util/lang_string.js +0 -110
  602. package/src/util/misc.js +0 -1330
  603. package/src/util/named_accessors.mixin.js +0 -428
  604. package/src/util/path.js +0 -829
@@ -0,0 +1,754 @@
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 { AssertKeys, TMat2D, TOriginX, TOriginY, TSize } from '../typedefs';
6
+ import type { BaseBrush } from '../brushes/BaseBrush';
7
+ import { TSVGReviver } from '../typedefs';
8
+ import { ActiveSelection } from '../shapes/ActiveSelection';
9
+ export declare const DefaultCanvasProperties: {
10
+ uniformScaling: boolean;
11
+ uniScaleKey: string;
12
+ centeredScaling: boolean;
13
+ centeredRotation: boolean;
14
+ centeredKey: string;
15
+ altActionKey: string;
16
+ selection: boolean;
17
+ selectionKey: string;
18
+ selectionColor: string;
19
+ selectionDashArray: never[];
20
+ selectionBorderColor: string;
21
+ selectionLineWidth: number;
22
+ selectionFullyContained: boolean;
23
+ hoverCursor: string;
24
+ moveCursor: string;
25
+ defaultCursor: string;
26
+ freeDrawingCursor: string;
27
+ notAllowedCursor: string;
28
+ containerClass: string;
29
+ perPixelTargetFind: boolean;
30
+ targetFindTolerance: number;
31
+ skipTargetFind: boolean;
32
+ preserveObjectStacking: boolean;
33
+ stopContextMenu: boolean;
34
+ fireRightClick: boolean;
35
+ fireMiddleClick: boolean;
36
+ enablePointerEvents: boolean;
37
+ };
38
+ /**
39
+ * Canvas class
40
+ * @class Canvas
41
+ * @extends StaticCanvas
42
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}
43
+ *
44
+ * @fires object:modified at the end of a transform
45
+ * @fires object:rotating while an object is being rotated from the control
46
+ * @fires object:scaling while an object is being scaled by controls
47
+ * @fires object:moving while an object is being dragged
48
+ * @fires object:skewing while an object is being skewed from the controls
49
+ *
50
+ * @fires before:transform before a transform is is started
51
+ * @fires before:selection:cleared
52
+ * @fires selection:cleared
53
+ * @fires selection:updated
54
+ * @fires selection:created
55
+ *
56
+ * @fires path:created after a drawing operation ends and the path is added
57
+ * @fires mouse:down
58
+ * @fires mouse:move
59
+ * @fires mouse:up
60
+ * @fires mouse:down:before on mouse down, before the inner fabric logic runs
61
+ * @fires mouse:move:before on mouse move, before the inner fabric logic runs
62
+ * @fires mouse:up:before on mouse up, before the inner fabric logic runs
63
+ * @fires mouse:over
64
+ * @fires mouse:out
65
+ * @fires mouse:dblclick whenever a native dbl click event fires on the canvas.
66
+ *
67
+ * @fires dragover
68
+ * @fires dragenter
69
+ * @fires dragleave
70
+ * @fires drag:enter object drag enter
71
+ * @fires drag:leave object drag leave
72
+ * @fires drop:before before drop event. Prepare for the drop event (same native event).
73
+ * @fires drop
74
+ * @fires drop:after after drop event. Run logic on canvas after event has been accepted/declined (same native event).
75
+ * @example
76
+ * let a: fabric.Object, b: fabric.Object;
77
+ * let flag = false;
78
+ * canvas.add(a, b);
79
+ * a.on('drop:before', opt => {
80
+ * // we want a to accept the drop even though it's below b in the stack
81
+ * flag = this.canDrop(opt.e);
82
+ * });
83
+ * b.canDrop = function(e) {
84
+ * !flag && this.draggableTextDelegate.canDrop(e);
85
+ * }
86
+ * b.on('dragover', opt => b.set('fill', opt.dropTarget === b ? 'pink' : 'black'));
87
+ * a.on('drop', opt => {
88
+ * opt.e.defaultPrevented // drop occurred
89
+ * opt.didDrop // drop occurred on canvas
90
+ * opt.target // drop target
91
+ * opt.target !== a && a.set('text', 'I lost');
92
+ * });
93
+ * canvas.on('drop:after', opt => {
94
+ * // inform user who won
95
+ * if(!opt.e.defaultPrevented) {
96
+ * // no winners
97
+ * }
98
+ * else if(!opt.didDrop) {
99
+ * // my objects didn't win, some other lucky object
100
+ * }
101
+ * else {
102
+ * // we have a winner it's opt.target!!
103
+ * }
104
+ * })
105
+ *
106
+ * @fires after:render at the end of the render process, receives the context in the callback
107
+ * @fires before:render at start the render process, receives the context in the callback
108
+ *
109
+ * @fires contextmenu:before
110
+ * @fires contextmenu
111
+ * @example
112
+ * let handler;
113
+ * targets.forEach(target => {
114
+ * target.on('contextmenu:before', opt => {
115
+ * // decide which target should handle the event before canvas hijacks it
116
+ * if (someCaseHappens && opt.targets.includes(target)) {
117
+ * handler = target;
118
+ * }
119
+ * });
120
+ * target.on('contextmenu', opt => {
121
+ * // do something fantastic
122
+ * });
123
+ * });
124
+ * canvas.on('contextmenu', opt => {
125
+ * if (!handler) {
126
+ * // no one takes responsibility, it's always left to me
127
+ * // let's show them how it's done!
128
+ * }
129
+ * });
130
+ *
131
+ */
132
+ export declare class SelectableCanvas<EventSpec extends CanvasEvents = CanvasEvents> extends StaticCanvas<EventSpec> {
133
+ _objects: FabricObject[];
134
+ /**
135
+ * When true, objects can be transformed by one side (unproportionally)
136
+ * when dragged on the corners that normally would not do that.
137
+ * @type Boolean
138
+ * @default
139
+ * @since fabric 4.0 // changed name and default value
140
+ */
141
+ uniformScaling: boolean;
142
+ /**
143
+ * Indicates which key switches uniform scaling.
144
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
145
+ * If `null` or 'none' or any other string that is not a modifier key
146
+ * feature is disabled.
147
+ * totally wrong named. this sounds like `uniform scaling`
148
+ * if Canvas.uniformScaling is true, pressing this will set it to false
149
+ * and viceversa.
150
+ * @since 1.6.2
151
+ * @type ModifierKey
152
+ * @default
153
+ */
154
+ uniScaleKey: TOptionalModifierKey;
155
+ /**
156
+ * When true, objects use center point as the origin of scale transformation.
157
+ * <b>Backwards incompatibility note:</b> This property replaces "centerTransform" (Boolean).
158
+ * @since 1.3.4
159
+ * @type Boolean
160
+ * @default
161
+ */
162
+ centeredScaling: boolean;
163
+ /**
164
+ * When true, objects use center point as the origin of rotate transformation.
165
+ * <b>Backwards incompatibility note:</b> This property replaces "centerTransform" (Boolean).
166
+ * @since 1.3.4
167
+ * @type Boolean
168
+ * @default
169
+ */
170
+ centeredRotation: boolean;
171
+ /**
172
+ * Indicates which key enable centered Transform
173
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
174
+ * If `null` or 'none' or any other string that is not a modifier key
175
+ * feature is disabled feature disabled.
176
+ * @since 1.6.2
177
+ * @type ModifierKey
178
+ * @default
179
+ */
180
+ centeredKey: TOptionalModifierKey;
181
+ /**
182
+ * Indicates which key enable alternate action on corner
183
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
184
+ * If `null` or 'none' or any other string that is not a modifier key
185
+ * feature is disabled feature disabled.
186
+ * @since 1.6.2
187
+ * @type ModifierKey
188
+ * @default
189
+ */
190
+ altActionKey: TOptionalModifierKey;
191
+ /**
192
+ * Indicates that canvas is interactive. This property should not be changed.
193
+ * @type Boolean
194
+ * @default
195
+ */
196
+ interactive: boolean;
197
+ /**
198
+ * Indicates whether group selection should be enabled
199
+ * @type Boolean
200
+ * @default
201
+ */
202
+ selection: boolean;
203
+ /**
204
+ * Indicates which key or keys enable multiple click selection
205
+ * Pass value as a string or array of strings
206
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
207
+ * If `null` or empty or containing any other string that is not a modifier key
208
+ * feature is disabled.
209
+ * @since 1.6.2
210
+ * @type ModifierKey|ModifierKey[]
211
+ * @default
212
+ */
213
+ selectionKey: TOptionalModifierKey | ModifierKey[];
214
+ /**
215
+ * Indicates which key enable alternative selection
216
+ * in case of target overlapping with active object
217
+ * values: 'altKey', 'shiftKey', 'ctrlKey'.
218
+ * For a series of reason that come from the general expectations on how
219
+ * things should work, this feature works only for preserveObjectStacking true.
220
+ * If `null` or 'none' or any other string that is not a modifier key
221
+ * feature is disabled.
222
+ * @since 1.6.5
223
+ * @type null|ModifierKey
224
+ * @default
225
+ */
226
+ altSelectionKey: TOptionalModifierKey;
227
+ /**
228
+ * Color of selection
229
+ * @type String
230
+ * @default
231
+ */
232
+ selectionColor: string;
233
+ /**
234
+ * Default dash array pattern
235
+ * If not empty the selection border is dashed
236
+ * @type Array
237
+ */
238
+ selectionDashArray: number[];
239
+ /**
240
+ * Color of the border of selection (usually slightly darker than color of selection itself)
241
+ * @type String
242
+ * @default
243
+ */
244
+ selectionBorderColor: string;
245
+ /**
246
+ * Width of a line used in object/group selection
247
+ * @type Number
248
+ * @default
249
+ */
250
+ selectionLineWidth: number;
251
+ /**
252
+ * Select only shapes that are fully contained in the dragged selection rectangle.
253
+ * @type Boolean
254
+ * @default
255
+ */
256
+ selectionFullyContained: boolean;
257
+ /**
258
+ * Default cursor value used when hovering over an object on canvas
259
+ * @type CSSStyleDeclaration['cursor']
260
+ * @default move
261
+ */
262
+ hoverCursor: CSSStyleDeclaration['cursor'];
263
+ /**
264
+ * Default cursor value used when moving an object on canvas
265
+ * @type CSSStyleDeclaration['cursor']
266
+ * @default move
267
+ */
268
+ moveCursor: CSSStyleDeclaration['cursor'];
269
+ /**
270
+ * Default cursor value used for the entire canvas
271
+ * @type String
272
+ * @default default
273
+ */
274
+ defaultCursor: CSSStyleDeclaration['cursor'];
275
+ /**
276
+ * Cursor value used during free drawing
277
+ * @type String
278
+ * @default crosshair
279
+ */
280
+ freeDrawingCursor: CSSStyleDeclaration['cursor'];
281
+ /**
282
+ * Cursor value used for disabled elements ( corners with disabled action )
283
+ * @type String
284
+ * @since 2.0.0
285
+ * @default not-allowed
286
+ */
287
+ notAllowedCursor: CSSStyleDeclaration['cursor'];
288
+ /**
289
+ * Default element class that's given to wrapper (div) element of canvas
290
+ * @type String
291
+ * @default
292
+ */
293
+ containerClass: string;
294
+ /**
295
+ * When true, object detection happens on per-pixel basis rather than on per-bounding-box
296
+ * @type Boolean
297
+ * @default
298
+ */
299
+ perPixelTargetFind: boolean;
300
+ /**
301
+ * Number of pixels around target pixel to tolerate (consider active) during object detection
302
+ * @type Number
303
+ * @default
304
+ */
305
+ targetFindTolerance: number;
306
+ /**
307
+ * When true, target detection is skipped. Target detection will return always undefined.
308
+ * click selection won't work anymore, events will fire with no targets.
309
+ * if something is selected before setting it to true, it will be deselected at the first click.
310
+ * area selection will still work. check the `selection` property too.
311
+ * if you deactivate both, you should look into staticCanvas.
312
+ * @type Boolean
313
+ * @default
314
+ */
315
+ skipTargetFind: boolean;
316
+ /**
317
+ * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.
318
+ * After mousedown, mousemove creates a shape,
319
+ * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.
320
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}
321
+ * @type Boolean
322
+ * @default
323
+ */
324
+ isDrawingMode: boolean;
325
+ /**
326
+ * Indicates whether objects should remain in current stack position when selected.
327
+ * When false objects are brought to top and rendered as part of the selection group
328
+ * @type Boolean
329
+ * @default
330
+ */
331
+ preserveObjectStacking: boolean;
332
+ /**
333
+ * Indicates if the right click on canvas can output the context menu or not
334
+ * @type Boolean
335
+ * @since 1.6.5
336
+ * @default
337
+ */
338
+ stopContextMenu: boolean;
339
+ /**
340
+ * Indicates if the canvas can fire right click events
341
+ * @type Boolean
342
+ * @since 1.6.5
343
+ * @default
344
+ */
345
+ fireRightClick: boolean;
346
+ /**
347
+ * Indicates if the canvas can fire middle click events
348
+ * @type Boolean
349
+ * @since 1.7.8
350
+ * @default
351
+ */
352
+ fireMiddleClick: boolean;
353
+ /**
354
+ * Keep track of the subTargets for Mouse Events
355
+ * @type FabricObject[]
356
+ */
357
+ targets: FabricObject[];
358
+ /**
359
+ * Keep track of the hovered target
360
+ * @type FabricObject | null
361
+ * @private
362
+ */
363
+ _hoveredTarget?: FabricObject;
364
+ /**
365
+ * hold the list of nested targets hovered
366
+ * @type FabricObject[]
367
+ * @private
368
+ */
369
+ _hoveredTargets: FabricObject[];
370
+ /**
371
+ * hold the list of objects to render
372
+ * @type FabricObject[]
373
+ * @private
374
+ */
375
+ _objectsToRender?: FabricObject[];
376
+ /**
377
+ * hold a referenfce to a data structure that contains information
378
+ * on the current on going transform
379
+ * @type
380
+ * @private
381
+ */
382
+ _currentTransform: Transform | null;
383
+ /**
384
+ * hold a reference to a data structure used to track the selection
385
+ * box on canvas drag
386
+ * on the current on going transform
387
+ * @type
388
+ * @private
389
+ */
390
+ protected _groupSelector: {
391
+ x: number;
392
+ y: number;
393
+ deltaX: number;
394
+ deltaY: number;
395
+ } | null;
396
+ /**
397
+ * internal flag used to understand if the context top requires a cleanup
398
+ * in case this is true, the contextTop will be cleared at the next render
399
+ * @type boolean
400
+ * @private
401
+ */
402
+ contextTopDirty: boolean;
403
+ /**
404
+ * During a mouse event we may need the pointer multiple times in multiple functions.
405
+ * _absolutePointer holds a reference to the pointer in fabricCanvas/design coordinates that is valid for the event
406
+ * lifespan. Every fabricJS mouse event create and delete the cache every time
407
+ * We do this because there are some HTML DOM inspection functions to get the actual pointer coordinates
408
+ * @type {Point}
409
+ */
410
+ protected _absolutePointer?: Point;
411
+ /**
412
+ * During a mouse event we may need the pointer multiple times in multiple functions.
413
+ * _pointer holds a reference to the pointer in html coordinates that is valid for the event
414
+ * lifespan. Every fabricJS mouse event create and delete the cache every time
415
+ * We do this because there are some HTML DOM inspection functions to get the actual pointer coordinates
416
+ * @type {Point}
417
+ */
418
+ protected _pointer?: Point;
419
+ /**
420
+ * During a mouse event we may need the target multiple times in multiple functions.
421
+ * _target holds a reference to the target that is valid for the event
422
+ * lifespan. Every fabricJS mouse event create and delete the cache every time
423
+ * @type {FabricObject}
424
+ */
425
+ protected _target?: FabricObject;
426
+ static ownDefaults: Record<string, any>;
427
+ static getDefaults(): Record<string, any>;
428
+ upperCanvasEl: HTMLCanvasElement;
429
+ contextTop: CanvasRenderingContext2D;
430
+ wrapperEl: HTMLDivElement;
431
+ private pixelFindCanvasEl;
432
+ private pixelFindContext;
433
+ protected _isCurrentlyDrawing: boolean;
434
+ freeDrawingBrush?: BaseBrush;
435
+ _activeObject?: FabricObject;
436
+ protected readonly _activeSelection: ActiveSelection;
437
+ constructor(el: string | HTMLCanvasElement, options?: {});
438
+ protected initElements(el: string | HTMLCanvasElement): void;
439
+ protected _initRetinaScaling(): void;
440
+ /**
441
+ * @private
442
+ * @param {FabricObject} obj Object that was added
443
+ */
444
+ _onObjectAdded(obj: FabricObject): void;
445
+ /**
446
+ * @private
447
+ * @param {FabricObject} obj Object that was removed
448
+ */
449
+ _onObjectRemoved(obj: FabricObject): void;
450
+ /**
451
+ * Divides objects in two groups, one to render immediately
452
+ * and one to render as activeGroup.
453
+ * @return {Array} objects to render immediately and pushes the other in the activeGroup.
454
+ */
455
+ _chooseObjectsToRender(): FabricObject[];
456
+ /**
457
+ * Renders both the top canvas and the secondary container canvas.
458
+ */
459
+ renderAll(): void;
460
+ /**
461
+ * text selection is rendered by the active text instance during the rendering cycle
462
+ */
463
+ renderTopLayer(ctx: CanvasRenderingContext2D): void;
464
+ /**
465
+ * Method to render only the top canvas.
466
+ * Also used to render the group selection box.
467
+ * Does not render text selection.
468
+ */
469
+ renderTop(): void;
470
+ /**
471
+ * Given a pointer on the canvas with a viewport applied,
472
+ * find out the pointer in object coordinates
473
+ * @private
474
+ */
475
+ _normalizePointer(object: FabricObject, pointer: Point): Point;
476
+ /**
477
+ * Set the canvas tolerance value for pixel taret find.
478
+ * Use only integer numbers.
479
+ * @private
480
+ */
481
+ setTargetFindTolerance(value: number): void;
482
+ /**
483
+ * Returns true if object is transparent at a certain location
484
+ * Clarification: this is `is target transparent at location X or are controls there`
485
+ * @TODO this seems dumb that we treat controls with transparency. we can find controls
486
+ * programmatically without painting them, the cache canvas optimization is always valid
487
+ * @param {FabricObject} target Object to check
488
+ * @param {Number} x Left coordinate
489
+ * @param {Number} y Top coordinate
490
+ * @return {Boolean}
491
+ */
492
+ isTargetTransparent(target: FabricObject, x: number, y: number): boolean;
493
+ /**
494
+ * takes an event and determines if selection key has been pressed
495
+ * @private
496
+ * @param {TPointerEvent} e Event object
497
+ */
498
+ _isSelectionKeyPressed(e: TPointerEvent): boolean;
499
+ /**
500
+ * @private
501
+ * @param {TPointerEvent} e Event object
502
+ * @param {FabricObject} target
503
+ */
504
+ _shouldClearSelection(e: TPointerEvent, target?: FabricObject): target is undefined;
505
+ /**
506
+ * This method will take in consideration a modifier key pressed and the control we are
507
+ * about to drag, and try to guess the anchor point ( origin ) of the transormation.
508
+ * This should be really in the realm of controls, and we should remove specific code for legacy
509
+ * embedded actions.
510
+ * @TODO this probably deserve discussion/rediscovery and change/refactor
511
+ * @private
512
+ * @deprecated
513
+ * @param {FabricObject} target
514
+ * @param {string} action
515
+ * @param {boolean} altKey
516
+ * @returns {boolean} true if the transformation should be centered
517
+ */
518
+ private _shouldCenterTransform;
519
+ /**
520
+ * Given the control clicked, determine the origin of the transform.
521
+ * This is bad because controls can totally have custom names
522
+ * should disappear before release 4.0
523
+ * @private
524
+ * @deprecated
525
+ */
526
+ _getOriginFromCorner(target: FabricObject, controlName: string): {
527
+ x: TOriginX;
528
+ y: TOriginY;
529
+ };
530
+ /**
531
+ * @private
532
+ * @param {Event} e Event object
533
+ * @param {FaricObject} target
534
+ */
535
+ _setupCurrentTransform(e: TPointerEvent, target: FabricObject, alreadySelected: boolean): void;
536
+ /**
537
+ * Set the cursor type of the canvas element
538
+ * @param {String} value Cursor type of the canvas element.
539
+ * @see http://www.w3.org/TR/css3-ui/#cursor
540
+ */
541
+ setCursor(value: CSSStyleDeclaration['cursor']): void;
542
+ /**
543
+ * @private
544
+ * @param {CanvasRenderingContext2D} ctx to draw the selection on
545
+ */
546
+ _drawSelection(ctx: CanvasRenderingContext2D): void;
547
+ /**
548
+ * Method that determines what object we are clicking on
549
+ * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target
550
+ * or the outside part of the corner.
551
+ * @param {Event} e mouse event
552
+ * @return {FabricObject | null} the target found
553
+ */
554
+ findTarget(e: TPointerEvent): FabricObject | undefined;
555
+ /**
556
+ * Checks point is inside the object.
557
+ * @param {Object} [pointer] x,y object of point coordinates we want to check.
558
+ * @param {FabricObject} obj Object to test against
559
+ * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.
560
+ * @return {Boolean} true if point is contained within an area of given object
561
+ * @private
562
+ */
563
+ _checkTarget(pointer: Point, obj: FabricObject, globalPointer: Point): boolean;
564
+ /**
565
+ * Internal Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted
566
+ * @param {Array} [objects] objects array to look into
567
+ * @param {Object} [pointer] x,y object of point coordinates we want to check.
568
+ * @return {FabricObject} **top most object from given `objects`** that contains pointer
569
+ * @private
570
+ */
571
+ _searchPossibleTargets(objects: FabricObject[], pointer: Point): FabricObject | undefined;
572
+ /**
573
+ * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted
574
+ * @see {@link fabric.Canvas#_searchPossibleTargets}
575
+ * @param {FabricObject[]} [objects] objects array to look into
576
+ * @param {Object} [pointer] x,y object of point coordinates we want to check.
577
+ * @return {FabricObject} **top most object on screen** that contains pointer
578
+ */
579
+ searchPossibleTargets(objects: FabricObject[], pointer: Point): FabricObject | undefined;
580
+ /**
581
+ * Returns pointer coordinates without the effect of the viewport
582
+ * @param {Object} pointer with "x" and "y" number values in canvas HTML coordinates
583
+ * @return {Object} object with "x" and "y" number values in fabricCanvas coordinates
584
+ */
585
+ restorePointerVpt(pointer: Point): Point;
586
+ /**
587
+ * Returns pointer coordinates relative to canvas.
588
+ * Can return coordinates with or without viewportTransform.
589
+ * ignoreVpt false gives back coordinates that represent
590
+ * the point clicked on canvas element.
591
+ * ignoreVpt true gives back coordinates after being processed
592
+ * by the viewportTransform ( sort of coordinates of what is displayed
593
+ * on the canvas where you are clicking.
594
+ * ignoreVpt true = HTMLElement coordinates relative to top,left
595
+ * ignoreVpt false, default = fabric space coordinates, the same used for shape position
596
+ * To interact with your shapes top and left you want to use ignoreVpt true
597
+ * most of the time, while ignoreVpt false will give you coordinates
598
+ * compatible with the object.oCoords system.
599
+ * of the time.
600
+ * @param {Event} e
601
+ * @param {Boolean} ignoreVpt
602
+ * @return {Point}
603
+ */
604
+ getPointer(e: TPointerEvent, ignoreVpt?: boolean): Point;
605
+ /**
606
+ * Internal use only
607
+ * @protected
608
+ */
609
+ protected _setDimensionsImpl(dimensions: TSize, options?: TCanvasSizeOptions): void;
610
+ /**
611
+ * Helper for setting width/height
612
+ * @private
613
+ * @param {String} prop property (width|height)
614
+ * @param {Number} value value to set property to
615
+ */
616
+ _setBackstoreDimension(prop: keyof TSize, value: number): void;
617
+ /**
618
+ * Helper for setting css width/height
619
+ * @private
620
+ * @param {String} prop property (width|height)
621
+ * @param {String} value value to set property to
622
+ */
623
+ _setCssDimension(prop: keyof TSize, value: string): void;
624
+ /**
625
+ * @private
626
+ * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized
627
+ */
628
+ protected _createUpperCanvas(): void;
629
+ protected _createCacheCanvas(): void;
630
+ protected _initWrapperElement(): void;
631
+ /**
632
+ * @private
633
+ * @param {HTMLCanvasElement} element canvas element to apply styles on
634
+ */
635
+ protected _applyCanvasStyle(element: HTMLCanvasElement): void;
636
+ /**
637
+ * Returns context of top canvas where interactions are drawn
638
+ * @returns {CanvasRenderingContext2D}
639
+ */
640
+ getTopContext(): CanvasRenderingContext2D;
641
+ /**
642
+ * Returns context of canvas where object selection is drawn
643
+ * @alias
644
+ * @return {CanvasRenderingContext2D}
645
+ */
646
+ getSelectionContext(): CanvasRenderingContext2D;
647
+ /**
648
+ * Returns &lt;canvas> element on which object selection is drawn
649
+ * @return {HTMLCanvasElement}
650
+ */
651
+ getSelectionElement(): HTMLCanvasElement;
652
+ /**
653
+ * Returns currently active object
654
+ * @return {FabricObject | null} active object
655
+ */
656
+ getActiveObject(): FabricObject | undefined;
657
+ /**
658
+ * Returns instance's active selection
659
+ */
660
+ getActiveSelection(): ActiveSelection;
661
+ /**
662
+ * Returns an array with the current selected objects
663
+ * @return {FabricObject[]} active objects array
664
+ */
665
+ getActiveObjects(): FabricObject[];
666
+ /**
667
+ * @private
668
+ * Compares the old activeObject with the current one and fires correct events
669
+ * @param {FabricObject[]} oldObjects old activeObject
670
+ * @param {TPointerEvent} e mouse event triggering the selection events
671
+ */
672
+ _fireSelectionEvents(oldObjects: FabricObject[], e?: TPointerEvent): void;
673
+ /**
674
+ * Sets given object as the only active object on canvas
675
+ * @param {FabricObject} object Object to set as an active one
676
+ * @param {TPointerEvent} [e] Event (passed along when firing "object:selected")
677
+ * @return {Boolean} true if the object has been selected
678
+ */
679
+ setActiveObject(object: FabricObject, e?: TPointerEvent): this is AssertKeys<this, '_activeObject'>;
680
+ /**
681
+ * This is supposed to be equivalent to setActiveObject but without firing
682
+ * any event. There is commitment to have this stay this way.
683
+ * This is the functional part of setActiveObject.
684
+ * @param {Object} object to set as active
685
+ * @param {Event} [e] Event (passed along when firing "object:selected")
686
+ * @return {Boolean} true if the object has been selected
687
+ */
688
+ _setActiveObject(object: FabricObject, e?: TPointerEvent): this is AssertKeys<this, '_activeObject'>;
689
+ /**
690
+ * This is supposed to be equivalent to discardActiveObject but without firing
691
+ * any selection events ( can still fire object transformation events ). There is commitment to have this stay this way.
692
+ * This is the functional part of discardActiveObject.
693
+ * @param {Event} [e] Event (passed along when firing "object:deselected")
694
+ * @param {Object} object the next object to set as active, reason why we are discarding this
695
+ * @return {Boolean} true if the active object has been discarded
696
+ */
697
+ _discardActiveObject(e?: TPointerEvent, object?: FabricObject): this is {
698
+ _activeObject: undefined;
699
+ };
700
+ /**
701
+ * Discards currently active object and fire events. If the function is called by fabric
702
+ * as a consequence of a mouse event, the event is passed as a parameter and
703
+ * sent to the fire function for the custom events. When used as a method the
704
+ * e param does not have any application.
705
+ * @param {event} e
706
+ * @return {Boolean} true if the active object has been discarded
707
+ */
708
+ discardActiveObject(e?: TPointerEvent): this is {
709
+ _activeObject: undefined;
710
+ };
711
+ /**
712
+ * Sets viewport transformation of this canvas instance
713
+ * @param {Array} vpt a Canvas 2D API transform matrix
714
+ */
715
+ setViewportTransform(vpt: TMat2D): void;
716
+ /**
717
+ * Clears the canvas element, disposes objects, removes all event listeners and frees resources
718
+ *
719
+ * **CAUTION**:
720
+ *
721
+ * This method is **UNSAFE**.
722
+ * You may encounter a race condition using it if there's a requested render.
723
+ * Call this method only if you are sure rendering has settled.
724
+ * Consider using {@link dispose} as it is **SAFE**
725
+ *
726
+ * @private
727
+ */
728
+ destroy(): void;
729
+ /**
730
+ * Clears all contexts (background, main, top) of an instance
731
+ */
732
+ clear(): void;
733
+ /**
734
+ * Draws objects' controls (borders/controls)
735
+ * @param {CanvasRenderingContext2D} ctx Context to render controls on
736
+ */
737
+ drawControls(ctx: CanvasRenderingContext2D): void;
738
+ /**
739
+ * @private
740
+ */
741
+ _toObject(instance: FabricObject, methodName: 'toObject' | 'toDatalessObject', propertiesToInclude: string[]): Record<string, any>;
742
+ /**
743
+ * Realizes an object's group transformation on it
744
+ * @private
745
+ * @param {FabricObject} [instance] the object to transform (gets mutated)
746
+ * @returns the original values of instance which were changed
747
+ */
748
+ _realizeGroupTransformOnObject(instance: FabricObject): Partial<typeof instance>;
749
+ /**
750
+ * @private
751
+ */
752
+ _setSVGObject(markup: string[], instance: FabricObject, reviver: TSVGReviver): void;
753
+ }
754
+ //# sourceMappingURL=SelectableCanvas.d.ts.map