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,228 @@
1
+ import { ControlActionHandler, TPointerEvent, TransformActionHandler } from '../EventTypeDefs';
2
+ import { Point } from '../Point';
3
+ import type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';
4
+ import { TDegree, TMat2D } from '../typedefs';
5
+ import { ControlRenderingStyleOverride } from './controlRendering';
6
+ export declare class Control {
7
+ /**
8
+ * keep track of control visibility.
9
+ * mainly for backward compatibility.
10
+ * if you do not want to see a control, you can remove it
11
+ * from the control set.
12
+ * @type {Boolean}
13
+ * @default true
14
+ */
15
+ visible: boolean;
16
+ /**
17
+ * Name of the action that the control will likely execute.
18
+ * This is optional. FabricJS uses to identify what the user is doing for some
19
+ * extra optimizations. If you are writing a custom control and you want to know
20
+ * somewhere else in the code what is going on, you can use this string here.
21
+ * you can also provide a custom getActionName if your control run multiple actions
22
+ * depending on some external state.
23
+ * default to scale since is the most common, used on 4 corners by default
24
+ * @type {String}
25
+ * @default 'scale'
26
+ */
27
+ actionName: string;
28
+ /**
29
+ * Drawing angle of the control.
30
+ * NOT used for now, but name marked as needed for internal logic
31
+ * example: to reuse the same drawing function for different rotated controls
32
+ * @type {Number}
33
+ * @default 0
34
+ */
35
+ angle: number;
36
+ /**
37
+ * Relative position of the control. X
38
+ * 0,0 is the center of the Object, while -0.5 (left) or 0.5 (right) are the extremities
39
+ * of the bounding box.
40
+ * @type {Number}
41
+ * @default 0
42
+ */
43
+ x: number;
44
+ /**
45
+ * Relative position of the control. Y
46
+ * 0,0 is the center of the Object, while -0.5 (top) or 0.5 (bottom) are the extremities
47
+ * of the bounding box.
48
+ * @type {Number}
49
+ * @default 0
50
+ */
51
+ y: number;
52
+ /**
53
+ * Horizontal offset of the control from the defined position. In pixels
54
+ * Positive offset moves the control to the right, negative to the left.
55
+ * It used when you want to have position of control that does not scale with
56
+ * the bounding box. Example: rotation control is placed at x:0, y: 0.5 on
57
+ * the boundind box, with an offset of 30 pixels vertically. Those 30 pixels will
58
+ * stay 30 pixels no matter how the object is big. Another example is having 2
59
+ * controls in the corner, that stay in the same position when the object scale.
60
+ * of the bounding box.
61
+ * @type {Number}
62
+ * @default 0
63
+ */
64
+ offsetX: number;
65
+ /**
66
+ * Vertical offset of the control from the defined position. In pixels
67
+ * Positive offset moves the control to the bottom, negative to the top.
68
+ * @type {Number}
69
+ * @default 0
70
+ */
71
+ offsetY: number;
72
+ /**
73
+ * Sets the length of the control. If null, defaults to object's cornerSize.
74
+ * Expects both sizeX and sizeY to be set when set.
75
+ * @type {?Number}
76
+ * @default null
77
+ */
78
+ sizeX: number | null;
79
+ /**
80
+ * Sets the height of the control. If null, defaults to object's cornerSize.
81
+ * Expects both sizeX and sizeY to be set when set.
82
+ * @type {?Number}
83
+ * @default null
84
+ */
85
+ sizeY: number | null;
86
+ /**
87
+ * Sets the length of the touch area of the control. If null, defaults to object's touchCornerSize.
88
+ * Expects both touchSizeX and touchSizeY to be set when set.
89
+ * @type {?Number}
90
+ * @default null
91
+ */
92
+ touchSizeX: number | null;
93
+ /**
94
+ * Sets the height of the touch area of the control. If null, defaults to object's touchCornerSize.
95
+ * Expects both touchSizeX and touchSizeY to be set when set.
96
+ * @type {?Number}
97
+ * @default null
98
+ */
99
+ touchSizeY: number | null;
100
+ /**
101
+ * Css cursor style to display when the control is hovered.
102
+ * if the method `cursorStyleHandler` is provided, this property is ignored.
103
+ * @type {String}
104
+ * @default 'crosshair'
105
+ */
106
+ cursorStyle: string;
107
+ /**
108
+ * If controls has an offsetY or offsetX, draw a line that connects
109
+ * the control to the bounding box
110
+ * @type {Boolean}
111
+ * @default false
112
+ */
113
+ withConnection: boolean;
114
+ constructor(options: Partial<Control>);
115
+ /**
116
+ * The control actionHandler, provide one to handle action ( control being moved )
117
+ * @param {Event} eventData the native mouse event
118
+ * @param {Transform} transformData properties of the current transform
119
+ * @param {Number} x x position of the cursor
120
+ * @param {Number} y y position of the cursor
121
+ * @return {Boolean} true if the action/event modified the object
122
+ */
123
+ actionHandler: TransformActionHandler;
124
+ /**
125
+ * The control handler for mouse down, provide one to handle mouse down on control
126
+ * @param {Event} eventData the native mouse event
127
+ * @param {Transform} transformData properties of the current transform
128
+ * @param {Number} x x position of the cursor
129
+ * @param {Number} y y position of the cursor
130
+ * @return {Boolean} true if the action/event modified the object
131
+ */
132
+ mouseDownHandler?: ControlActionHandler;
133
+ /**
134
+ * The control mouseUpHandler, provide one to handle an effect on mouse up.
135
+ * @param {Event} eventData the native mouse event
136
+ * @param {Transform} transformData properties of the current transform
137
+ * @param {Number} x x position of the cursor
138
+ * @param {Number} y y position of the cursor
139
+ * @return {Boolean} true if the action/event modified the object
140
+ */
141
+ mouseUpHandler?: ControlActionHandler;
142
+ /**
143
+ * Returns control actionHandler
144
+ * @param {Event} eventData the native mouse event
145
+ * @param {FabricObject} fabricObject on which the control is displayed
146
+ * @param {Control} control control for which the action handler is being asked
147
+ * @return {Function} the action handler
148
+ */
149
+ getActionHandler(eventData: TPointerEvent, fabricObject: InteractiveFabricObject, control: Control): TransformActionHandler | undefined;
150
+ /**
151
+ * Returns control mouseDown handler
152
+ * @param {Event} eventData the native mouse event
153
+ * @param {FabricObject} fabricObject on which the control is displayed
154
+ * @param {Control} control control for which the action handler is being asked
155
+ * @return {Function} the action handler
156
+ */
157
+ getMouseDownHandler(eventData: TPointerEvent, fabricObject: InteractiveFabricObject, control: Control): ControlActionHandler | undefined;
158
+ /**
159
+ * Returns control mouseUp handler.
160
+ * During actions the fabricObject or the control can be of different obj
161
+ * @param {Event} eventData the native mouse event
162
+ * @param {FabricObject} fabricObject on which the control is displayed
163
+ * @param {Control} control control for which the action handler is being asked
164
+ * @return {Function} the action handler
165
+ */
166
+ getMouseUpHandler(eventData: TPointerEvent, fabricObject: InteractiveFabricObject, control: Control): ControlActionHandler | undefined;
167
+ /**
168
+ * Returns control cursorStyle for css using cursorStyle. If you need a more elaborate
169
+ * function you can pass one in the constructor
170
+ * the cursorStyle property
171
+ * @param {Event} eventData the native mouse event
172
+ * @param {Control} control the current control ( likely this)
173
+ * @param {FabricObject} object on which the control is displayed
174
+ * @return {String}
175
+ */
176
+ cursorStyleHandler(eventData: TPointerEvent, control: Control, fabricObject: InteractiveFabricObject): string;
177
+ /**
178
+ * Returns the action name. The basic implementation just return the actionName property.
179
+ * @param {Event} eventData the native mouse event
180
+ * @param {Control} control the current control ( likely this)
181
+ * @param {FabricObject} object on which the control is displayed
182
+ * @return {String}
183
+ */
184
+ getActionName(eventData: TPointerEvent, control: Control, fabricObject: InteractiveFabricObject): string;
185
+ /**
186
+ * Returns controls visibility
187
+ * @param {FabricObject} object on which the control is displayed
188
+ * @param {String} controlKey key where the control is memorized on the
189
+ * @return {Boolean}
190
+ */
191
+ getVisibility(fabricObject: InteractiveFabricObject, controlKey: string): boolean;
192
+ /**
193
+ * Sets controls visibility
194
+ * @param {Boolean} visibility for the object
195
+ * @return {Void}
196
+ */
197
+ setVisibility(visibility: boolean, name: string, fabricObject: InteractiveFabricObject): void;
198
+ positionHandler(dim: Point, finalMatrix: TMat2D, fabricObject: InteractiveFabricObject, currentControl: Control): Point;
199
+ /**
200
+ * Returns the coords for this control based on object values.
201
+ * @param {Number} objectAngle angle from the fabric object holding the control
202
+ * @param {Number} objectCornerSize cornerSize from the fabric object holding the control (or touchCornerSize if
203
+ * isTouch is true)
204
+ * @param {Number} centerX x coordinate where the control center should be
205
+ * @param {Number} centerY y coordinate where the control center should be
206
+ * @param {boolean} isTouch true if touch corner, false if normal corner
207
+ */
208
+ calcCornerCoords(objectAngle: TDegree, objectCornerSize: number, centerX: number, centerY: number, isTouch: boolean): {
209
+ tl: Point;
210
+ tr: Point;
211
+ bl: Point;
212
+ br: Point;
213
+ };
214
+ /**
215
+ * Render function for the control.
216
+ * When this function runs the context is unscaled. unrotate. Just retina scaled.
217
+ * all the functions will have to translate to the point left,top before starting Drawing
218
+ * if they want to draw a control where the position is detected.
219
+ * left and top are the result of the positionHandler function
220
+ * @param {RenderingContext2D} ctx the context where the control will be drawn
221
+ * @param {Number} left position of the canvas where we are about to render the control.
222
+ * @param {Number} top position of the canvas where we are about to render the control.
223
+ * @param {Object} styleOverride
224
+ * @param {FabricObject} fabricObject the object where the control is about to be rendered
225
+ */
226
+ render(ctx: CanvasRenderingContext2D, left: number, top: number, styleOverride: ControlRenderingStyleOverride | undefined, fabricObject: InteractiveFabricObject): void;
227
+ }
228
+ //# sourceMappingURL=Control.d.ts.map
@@ -0,0 +1,13 @@
1
+ import { TransformActionHandler } from '../EventTypeDefs';
2
+ /**
3
+ * Action handler to change object's width
4
+ * Needs to be wrapped with `wrapWithFixedAnchor` to be effective
5
+ * @param {Event} eventData javascript event that is doing the transform
6
+ * @param {Object} transform javascript object containing a series of information around the current transform
7
+ * @param {number} x current mouse x position, canvas normalized
8
+ * @param {number} y current mouse y position, canvas normalized
9
+ * @return {Boolean} true if some change happened
10
+ */
11
+ export declare const changeObjectWidth: TransformActionHandler;
12
+ export declare const changeWidth: TransformActionHandler<import("../EventTypeDefs").Transform>;
13
+ //# sourceMappingURL=changeWidth.d.ts.map
@@ -0,0 +1,28 @@
1
+ import { Control } from './Control';
2
+ export declare const createObjectDefaultControls: () => {
3
+ ml: Control;
4
+ mr: Control;
5
+ mb: Control;
6
+ mt: Control;
7
+ tl: Control;
8
+ tr: Control;
9
+ bl: Control;
10
+ br: Control;
11
+ mtr: Control;
12
+ };
13
+ export declare const createResizeControls: () => {
14
+ mr: Control;
15
+ ml: Control;
16
+ };
17
+ export declare const createTextboxDefaultControls: () => {
18
+ mr: Control;
19
+ ml: Control;
20
+ mb: Control;
21
+ mt: Control;
22
+ tl: Control;
23
+ tr: Control;
24
+ bl: Control;
25
+ br: Control;
26
+ mtr: Control;
27
+ };
28
+ //# sourceMappingURL=commonControls.d.ts.map
@@ -0,0 +1,29 @@
1
+ import type { InteractiveFabricObject } from '../shapes/Object/InteractiveObject';
2
+ import type { Control } from './Control';
3
+ export type ControlRenderingStyleOverride = Partial<Pick<InteractiveFabricObject, 'cornerStyle' | 'cornerSize' | 'cornerColor' | 'cornerStrokeColor' | 'cornerDashArray' | 'transparentCorners'>>;
4
+ export type ControlRenderer = (ctx: CanvasRenderingContext2D, left: number, top: number, styleOverride: ControlRenderingStyleOverride, fabricObject: InteractiveFabricObject) => void;
5
+ /**
6
+ * Render a round control, as per fabric features.
7
+ * This function is written to respect object properties like transparentCorners, cornerSize
8
+ * cornerColor, cornerStrokeColor
9
+ * plus the addition of offsetY and offsetX.
10
+ * @param {CanvasRenderingContext2D} ctx context to render on
11
+ * @param {Number} left x coordinate where the control center should be
12
+ * @param {Number} top y coordinate where the control center should be
13
+ * @param {Object} styleOverride override for FabricObject controls style
14
+ * @param {FabricObject} fabricObject the fabric object for which we are rendering controls
15
+ */
16
+ export declare function renderCircleControl(this: Control, ctx: CanvasRenderingContext2D, left: number, top: number, styleOverride: ControlRenderingStyleOverride, fabricObject: InteractiveFabricObject): void;
17
+ /**
18
+ * Render a square control, as per fabric features.
19
+ * This function is written to respect object properties like transparentCorners, cornerSize
20
+ * cornerColor, cornerStrokeColor
21
+ * plus the addition of offsetY and offsetX.
22
+ * @param {CanvasRenderingContext2D} ctx context to render on
23
+ * @param {Number} left x coordinate where the control center should be
24
+ * @param {Number} top y coordinate where the control center should be
25
+ * @param {Object} styleOverride override for FabricObject controls style
26
+ * @param {FabricObject} fabricObject the fabric object for which we are rendering controls
27
+ */
28
+ export declare function renderSquareControl(this: Control, ctx: CanvasRenderingContext2D, left: number, top: number, styleOverride: ControlRenderingStyleOverride, fabricObject: InteractiveFabricObject): void;
29
+ //# sourceMappingURL=controlRendering.d.ts.map
@@ -0,0 +1,12 @@
1
+ import { TransformActionHandler } from '../EventTypeDefs';
2
+ /**
3
+ * Action handler
4
+ * @private
5
+ * @param {Event} eventData javascript event that is doing the transform
6
+ * @param {Object} transform javascript object containing a series of information around the current transform
7
+ * @param {number} x current mouse x position, canvas normalized
8
+ * @param {number} y current mouse y position, canvas normalized
9
+ * @return {Boolean} true if the translation occurred
10
+ */
11
+ export declare const dragHandler: TransformActionHandler;
12
+ //# sourceMappingURL=drag.d.ts.map
@@ -0,0 +1,13 @@
1
+ export { changeWidth } from './changeWidth';
2
+ export { renderCircleControl, renderSquareControl } from './controlRendering';
3
+ export * from './commonControls';
4
+ export { dragHandler } from './drag';
5
+ export { createPolyControls } from './polyControl';
6
+ export { rotationStyleHandler, rotationWithSnapping } from './rotate';
7
+ export { scaleCursorStyleHandler, scalingEqually, scalingX, scalingY, } from './scale';
8
+ export { scaleOrSkewActionName, scaleSkewCursorStyleHandler, scalingXOrSkewingY, scalingYOrSkewingX, } from './scaleSkew';
9
+ export { skewCursorStyleHandler, skewHandlerX, skewHandlerY } from './skew';
10
+ export { getLocalPoint } from './util';
11
+ export { wrapWithFireEvent } from './wrapWithFireEvent';
12
+ export { wrapWithFixedAnchor } from './wrapWithFixedAnchor';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ import { Control } from './Control';
2
+ import type { Polyline } from '../shapes/Polyline';
3
+ export declare function createPolyControls(poly: Polyline, options?: Partial<Control>): Record<string, Control>;
4
+ export declare function createPolyControls(numOfControls: number, options?: Partial<Control>): Record<string, Control>;
5
+ //# sourceMappingURL=polyControl.d.ts.map
@@ -0,0 +1,12 @@
1
+ import { ControlCursorCallback, TransformActionHandler } from '../EventTypeDefs';
2
+ /**
3
+ * Find the correct style for the control that is used for rotation.
4
+ * this function is very simple and it just take care of not-allowed or standard cursor
5
+ * @param {Event} eventData the javascript event that is causing the scale
6
+ * @param {Control} control the control that is interested in the action
7
+ * @param {FabricObject} fabricObject the fabric object that is interested in the action
8
+ * @return {String} a valid css string for the cursor
9
+ */
10
+ export declare const rotationStyleHandler: ControlCursorCallback;
11
+ export declare const rotationWithSnapping: TransformActionHandler<import("../EventTypeDefs").Transform>;
12
+ //# sourceMappingURL=rotate.d.ts.map
@@ -0,0 +1,47 @@
1
+ import { ControlCursorCallback, TPointerEvent, Transform, TransformActionHandler } from '../EventTypeDefs';
2
+ import type { FabricObject } from '../shapes/Object/FabricObject';
3
+ import { TAxis } from '../typedefs';
4
+ type ScaleTransform = Transform & {
5
+ gestureScale?: number;
6
+ signX?: number;
7
+ signY?: number;
8
+ };
9
+ type ScaleBy = TAxis | 'equally' | '' | undefined;
10
+ /**
11
+ * Inspect event and fabricObject properties to understand if the scaling action
12
+ * @param {Event} eventData from the user action
13
+ * @param {FabricObject} fabricObject the fabric object about to scale
14
+ * @return {Boolean} true if scale is proportional
15
+ */
16
+ export declare function scaleIsProportional(eventData: TPointerEvent, fabricObject: FabricObject): boolean;
17
+ /**
18
+ * Inspect fabricObject to understand if the current scaling action is allowed
19
+ * @param {FabricObject} fabricObject the fabric object about to scale
20
+ * @param {String} by 'x' or 'y' or ''
21
+ * @param {Boolean} scaleProportionally true if we are trying to scale proportionally
22
+ * @return {Boolean} true if scaling is not allowed at current conditions
23
+ */
24
+ export declare function scalingIsForbidden(fabricObject: FabricObject, by: ScaleBy, scaleProportionally: boolean): boolean;
25
+ /**
26
+ * return the correct cursor style for the scale action
27
+ * @param {Event} eventData the javascript event that is causing the scale
28
+ * @param {Control} control the control that is interested in the action
29
+ * @param {FabricObject} fabricObject the fabric object that is interested in the action
30
+ * @return {String} a valid css string for the cursor
31
+ */
32
+ export declare const scaleCursorStyleHandler: ControlCursorCallback;
33
+ /**
34
+ * Generic scaling logic, to scale from corners either equally or freely.
35
+ * Needs to be wrapped with `wrapWithFixedAnchor` to be effective
36
+ * @param {Event} eventData javascript event that is doing the transform
37
+ * @param {Object} transform javascript object containing a series of information around the current transform
38
+ * @param {number} x current mouse x position, canvas normalized
39
+ * @param {number} y current mouse y position, canvas normalized
40
+ * @return {Boolean} true if some change happened
41
+ */
42
+ export declare const scaleObjectFromCorner: TransformActionHandler<ScaleTransform>;
43
+ export declare const scalingEqually: TransformActionHandler<ScaleTransform>;
44
+ export declare const scalingX: TransformActionHandler<ScaleTransform>;
45
+ export declare const scalingY: TransformActionHandler<ScaleTransform>;
46
+ export {};
47
+ //# sourceMappingURL=scale.d.ts.map
@@ -0,0 +1,39 @@
1
+ import { ControlCallback, ControlCursorCallback, TransformActionHandler } from '../EventTypeDefs';
2
+ import { TAxisKey } from '../typedefs';
3
+ /**
4
+ * Inspect event, control and fabricObject to return the correct action name
5
+ * @param {Event} eventData the javascript event that is causing the scale
6
+ * @param {Control} control the control that is interested in the action
7
+ * @param {FabricObject} fabricObject the fabric object that is interested in the action
8
+ * @return {String} an action name
9
+ */
10
+ export declare const scaleOrSkewActionName: ControlCallback<TAxisKey<'skew' | 'scale'> | ''>;
11
+ /**
12
+ * Combine skew and scale style handlers to cover fabric standard use case
13
+ * @param {Event} eventData the javascript event that is causing the scale
14
+ * @param {Control} control the control that is interested in the action
15
+ * @param {FabricObject} fabricObject the fabric object that is interested in the action
16
+ * @return {String} a valid css string for the cursor
17
+ */
18
+ export declare const scaleSkewCursorStyleHandler: ControlCursorCallback;
19
+ /**
20
+ * Composed action handler to either scale X or skew Y
21
+ * Needs to be wrapped with `wrapWithFixedAnchor` to be effective
22
+ * @param {Event} eventData javascript event that is doing the transform
23
+ * @param {Object} transform javascript object containing a series of information around the current transform
24
+ * @param {number} x current mouse x position, canvas normalized
25
+ * @param {number} y current mouse y position, canvas normalized
26
+ * @return {Boolean} true if some change happened
27
+ */
28
+ export declare const scalingXOrSkewingY: TransformActionHandler;
29
+ /**
30
+ * Composed action handler to either scale Y or skew X
31
+ * Needs to be wrapped with `wrapWithFixedAnchor` to be effective
32
+ * @param {Event} eventData javascript event that is doing the transform
33
+ * @param {Object} transform javascript object containing a series of information around the current transform
34
+ * @param {number} x current mouse x position, canvas normalized
35
+ * @param {number} y current mouse y position, canvas normalized
36
+ * @return {Boolean} true if some change happened
37
+ */
38
+ export declare const scalingYOrSkewingX: TransformActionHandler;
39
+ //# sourceMappingURL=scaleSkew.d.ts.map
@@ -0,0 +1,33 @@
1
+ import { ControlCursorCallback, Transform, TransformActionHandler } from '../EventTypeDefs';
2
+ export type SkewTransform = Transform & {
3
+ skewingSide: -1 | 1;
4
+ };
5
+ /**
6
+ * return the correct cursor style for the skew action
7
+ * @param {Event} eventData the javascript event that is causing the scale
8
+ * @param {Control} control the control that is interested in the action
9
+ * @param {FabricObject} fabricObject the fabric object that is interested in the action
10
+ * @return {String} a valid css string for the cursor
11
+ */
12
+ export declare const skewCursorStyleHandler: ControlCursorCallback;
13
+ /**
14
+ * Wrapped Action handler for skewing on the X axis, takes care of the
15
+ * skew direction and determines the correct transform origin for the anchor point
16
+ * @param {Event} eventData javascript event that is doing the transform
17
+ * @param {Object} transform javascript object containing a series of information around the current transform
18
+ * @param {number} x current mouse x position, canvas normalized
19
+ * @param {number} y current mouse y position, canvas normalized
20
+ * @return {Boolean} true if some change happened
21
+ */
22
+ export declare const skewHandlerX: TransformActionHandler;
23
+ /**
24
+ * Wrapped Action handler for skewing on the Y axis, takes care of the
25
+ * skew direction and determines the correct transform origin for the anchor point
26
+ * @param {Event} eventData javascript event that is doing the transform
27
+ * @param {Object} transform javascript object containing a series of information around the current transform
28
+ * @param {number} x current mouse x position, canvas normalized
29
+ * @param {number} y current mouse y position, canvas normalized
30
+ * @return {Boolean} true if some change happened
31
+ */
32
+ export declare const skewHandlerY: TransformActionHandler;
33
+ //# sourceMappingURL=skew.d.ts.map
@@ -0,0 +1,41 @@
1
+ import { TPointerEvent, Transform, TransformAction, BasicTransformEvent } from '../EventTypeDefs';
2
+ import { Point } from '../Point';
3
+ import type { FabricObject } from '../shapes/Object/FabricObject';
4
+ import { TOriginX, TOriginY } from '../typedefs';
5
+ import type { Control } from './Control';
6
+ export declare const NOT_ALLOWED_CURSOR = "not-allowed";
7
+ /**
8
+ * @param {Boolean} alreadySelected true if target is already selected
9
+ * @param {String} corner a string representing the corner ml, mr, tl ...
10
+ * @param {Event} e Event object
11
+ * @param {FabricObject} [target] inserted back to help overriding. Unused
12
+ */
13
+ export declare const getActionFromCorner: (alreadySelected: boolean, corner: string, e: TPointerEvent, target: FabricObject) => string;
14
+ /**
15
+ * Checks if transform is centered
16
+ * @param {Object} transform transform data
17
+ * @return {Boolean} true if transform is centered
18
+ */
19
+ export declare function isTransformCentered(transform: Transform): boolean;
20
+ export declare function invertOrigin(origin: TOriginX | TOriginY): number;
21
+ export declare const isLocked: (target: FabricObject, lockingKey: 'lockMovementX' | 'lockMovementY' | 'lockRotation' | 'lockScalingX' | 'lockScalingY' | 'lockSkewingX' | 'lockSkewingY' | 'lockScalingFlip') => boolean;
22
+ export declare const commonEventInfo: TransformAction<Transform, BasicTransformEvent>;
23
+ /**
24
+ * Combine control position and object angle to find the control direction compared
25
+ * to the object center.
26
+ * @param {FabricObject} fabricObject the fabric object for which we are rendering controls
27
+ * @param {Control} control the control class
28
+ * @return {Number} 0 - 7 a quadrant number
29
+ */
30
+ export declare function findCornerQuadrant(fabricObject: FabricObject, control: Control): number;
31
+ /**
32
+ * Transforms a point to the offset from the given origin
33
+ * @param {Object} transform
34
+ * @param {String} originX
35
+ * @param {String} originY
36
+ * @param {number} x
37
+ * @param {number} y
38
+ * @return {Fabric.Point} the normalized point
39
+ */
40
+ export declare function getLocalPoint({ target, corner }: Transform, originX: TOriginX, originY: TOriginY, x: number, y: number): Point;
41
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1,8 @@
1
+ import { TModificationEvents, Transform, TransformActionHandler } from '../EventTypeDefs';
2
+ /**
3
+ * Wrap an action handler with firing an event if the action is performed
4
+ * @param {Function} actionHandler the function to wrap
5
+ * @return {Function} a function with an action handler signature
6
+ */
7
+ export declare const wrapWithFireEvent: <T extends Transform>(eventName: TModificationEvents, actionHandler: TransformActionHandler<T>) => TransformActionHandler<T>;
8
+ //# sourceMappingURL=wrapWithFireEvent.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { Transform, TransformActionHandler } from '../EventTypeDefs';
2
+ /**
3
+ * Wrap an action handler with saving/restoring object position on the transform.
4
+ * this is the code that permits to objects to keep their position while transforming.
5
+ * @param {Function} actionHandler the function to wrap
6
+ * @return {Function} a function with an action handler signature
7
+ */
8
+ export declare function wrapWithFixedAnchor<T extends Transform>(actionHandler: TransformActionHandler<T>): TransformActionHandler<T>;
9
+ //# sourceMappingURL=wrapWithFixedAnchor.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { TFabricEnv } from './types';
2
+ export declare const getEnv: () => TFabricEnv;
3
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * This file is consumed by fabric.
3
+ * The `./node` and `./browser` files define the env variable that is used by this module.
4
+ * The `./node` module sets the env at import time.
5
+ * The `./browser` module is defined to be the default env and doesn't set the env at all.
6
+ * This is done in order to support isomorphic usage for browser and node applications
7
+ * since window and document aren't defined at time of import in SSR, we can't set env so we avoid it by deferring to the default env.
8
+ */
9
+ import { TFabricEnv } from './types';
10
+ import type { DOMWindow } from 'jsdom';
11
+ export declare const setEnv: (value: TFabricEnv) => void;
12
+ export declare const getEnv: () => TFabricEnv;
13
+ export declare const getDocument: () => Document;
14
+ export declare const getWindow: () => Window | DOMWindow;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,5 @@
1
+ import type { Canvas as NodeCanvas } from 'canvas';
2
+ import { TFabricEnv } from './types';
3
+ export declare const getNodeCanvas: (canvasEl: HTMLCanvasElement) => NodeCanvas;
4
+ export declare const getEnv: () => TFabricEnv;
5
+ //# sourceMappingURL=node.d.ts.map
@@ -0,0 +1,15 @@
1
+ import { GLProbe } from '../filters/GLProbes/GLProbe';
2
+ import type { DOMWindow } from 'jsdom';
3
+ export type TCopyPasteData = {
4
+ copiedText?: string;
5
+ copiedStyle?: Record<string, string>;
6
+ };
7
+ export type TFabricEnv = {
8
+ document: Document;
9
+ window: Window | DOMWindow;
10
+ isTouchSupported: boolean;
11
+ WebGLProbe: GLProbe;
12
+ dispose(element: Element): void;
13
+ copyPasteData: TCopyPasteData;
14
+ };
15
+ //# sourceMappingURL=types.d.ts.map