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,8 @@
1
+ import { Constructor } from '../typedefs';
2
+ /***
3
+ * https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern
4
+ */
5
+ export declare function applyMixins<T extends Constructor, S extends Constructor>(derivedCtor: T, constructors: S[]): T & {
6
+ prototype: InstanceType<T & S>;
7
+ };
8
+ //# sourceMappingURL=applyMixins.d.ts.map
@@ -0,0 +1,5 @@
1
+ import { Point } from '../Point';
2
+ export declare const getPointer: (event: any) => Point;
3
+ export declare const isTouchEvent: (event: any) => boolean;
4
+ export declare const stopEvent: (e: Event) => void;
5
+ //# sourceMappingURL=dom_event.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Wraps element with another element
3
+ * @param {HTMLElement} element Element to wrap
4
+ * @param {HTMLElement|String} wrapper Element to wrap with
5
+ * @param {Object} [attributes] Attributes to set on a wrapper
6
+ * @return {HTMLElement} wrapper
7
+ */
8
+ export declare function wrapElement(element: HTMLElement, wrapper: HTMLDivElement): HTMLDivElement;
9
+ /**
10
+ * Returns element scroll offsets
11
+ * @param {HTMLElement} element Element to operate on
12
+ * @return {Object} Object with left/top values
13
+ */
14
+ export declare function getScrollLeftTop(element: HTMLElement): {
15
+ left: number;
16
+ top: number;
17
+ };
18
+ /**
19
+ * Returns offset for a given element
20
+ * @param {HTMLElement} element Element to get offset for
21
+ * @return {Object} Object with "left" and "top" properties
22
+ */
23
+ export declare function getElementOffset(element: HTMLElement): {
24
+ left: number;
25
+ top: number;
26
+ };
27
+ /**
28
+ * Makes element unselectable
29
+ * @param {HTMLElement} element Element to make unselectable
30
+ * @return {HTMLElement} Element that was passed in
31
+ */
32
+ export declare function makeElementUnselectable(element: HTMLElement): HTMLElement;
33
+ /**
34
+ * Makes element selectable
35
+ * @param {HTMLElement} element Element to make selectable
36
+ * @return {HTMLElement} Element that was passed in
37
+ */
38
+ export declare function makeElementSelectable(element: HTMLElement): HTMLElement;
39
+ //# sourceMappingURL=dom_misc.d.ts.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cross-browser abstraction for sending XMLHttpRequest
3
+ * @deprecated this has to go away, we can use a modern browser method to do the same.
4
+ * @param {String} url URL to send XMLHttpRequest to
5
+ * @param {Object} [options] Options object
6
+ * @param {String} [options.method="GET"]
7
+ * @param {Record<string, string>} [options.parameters] parameters to append to url in GET or in body
8
+ * @param {String} [options.body] body to send with POST or PUT request
9
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
10
+ * @param {Function} options.onComplete Callback to invoke when request is completed
11
+ * @return {XMLHttpRequest} request
12
+ */
13
+ export declare function request(url: any, options?: {}): any;
14
+ //# sourceMappingURL=dom_request.d.ts.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * wrapper for setting element's style
3
+ * @param {HTMLElement} element
4
+ * @param {Object | string} styles
5
+ */
6
+ export declare function setStyle(element: any, styles: any): void;
7
+ //# sourceMappingURL=dom_style.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { BasicTransformEvent, TModificationEvents } from '../EventTypeDefs';
2
+ export declare const fireEvent: (eventName: TModificationEvents, options: BasicTransformEvent) => void;
3
+ //# sourceMappingURL=fireEvent.d.ts.map
@@ -0,0 +1,35 @@
1
+ export { cos } from './misc/cos';
2
+ export { sin } from './misc/sin';
3
+ export { rotateVector, createVector, calcAngleBetweenVectors, getUnitVector, getBisector, } from './misc/vectors';
4
+ export { degreesToRadians, radiansToDegrees, } from './misc/radiansDegreesConversion';
5
+ export { rotatePoint } from './misc/rotatePoint';
6
+ export { projectStrokeOnPoints } from './misc/projectStroke';
7
+ export { transformPoint, invertTransform, composeMatrix, qrDecompose, calcDimensionsMatrix, calcRotateMatrix, multiplyTransformMatrices, isIdentityMatrix, } from './misc/matrix';
8
+ export { stylesFromArray, stylesToArray, hasStyleChanged, } from './misc/textStyles';
9
+ export { createCanvasElement, createImage, copyCanvasElement, toDataURL, } from './misc/dom';
10
+ export { toFixed } from './misc/toFixed';
11
+ export { matrixToSVG, parsePreserveAspectRatioAttribute, parseUnit, getSvgAttributes, } from './misc/svgParsing';
12
+ export { groupSVGElements } from './misc/groupSVGElements';
13
+ export { findScaleToFit, findScaleToCover } from './misc/findScaleTo';
14
+ export { capValue } from './misc/capValue';
15
+ export { saveObjectTransform, resetObjectTransform, addTransformToObject, applyTransformToObject, removeTransformFromObject, sizeAfterTransform, } from './misc/objectTransforms';
16
+ export { makeBoundingBoxFromPoints } from './misc/boundingBoxFromPoints';
17
+ export { calcPlaneChangeMatrix, sendPointToPlane, transformPointRelativeToCanvas, sendObjectToPlane, } from './misc/planeChange';
18
+ export * as string from './lang_string';
19
+ export { loadImage, enlivenObjects, enlivenObjectEnlivables, } from './misc/objectEnlive';
20
+ export { pick } from './misc/pick';
21
+ export { joinPath, parsePath, makePathSimpler, getSmoothPathFromPoints, getPathSegmentsInfo, getBoundsOfCurve, getPointOnPath, transformPath, getRegularPolygonPath, } from './path';
22
+ export { setStyle } from './dom_style';
23
+ export { isTouchEvent, getPointer } from './dom_event';
24
+ export { getElementOffset, makeElementUnselectable, makeElementSelectable, } from './dom_misc';
25
+ export { isTransparent } from './misc/isTransparent';
26
+ export { mergeClipPaths } from './misc/mergeClipPaths';
27
+ export { animate, animateColor } from './animation/animate';
28
+ export * as ease from './animation/easing';
29
+ export { requestAnimFrame, cancelAnimFrame, } from './animation/AnimationFrameProvider';
30
+ export { removeFromArray } from './internals/removeFromArray';
31
+ export { getRandomInt } from './internals/getRandomInt';
32
+ export { wrapElement } from './dom_misc';
33
+ export { request } from './dom_request';
34
+ export { removeTransformMatrixForSvgParsing } from './transform_matrix_removal';
35
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const cloneDeep: <T extends object>(object: T) => T;
2
+ //# sourceMappingURL=cloneDeep.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Returns random number between 2 specified ones.
3
+ * @param {Number} min lower limit
4
+ * @param {Number} max upper limit
5
+ * @return {Number} random value (between min and max)
6
+ */
7
+ export declare const getRandomInt: (min: number, max: number) => number;
8
+ //# sourceMappingURL=getRandomInt.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ *
3
+ * @param value value to check if NaN
4
+ * @param [valueIfNaN]
5
+ * @returns `fallback` is `value is NaN
6
+ */
7
+ export declare const ifNaN: (value: number, valueIfNaN?: number) => number;
8
+ //# sourceMappingURL=ifNaN.d.ts.map
@@ -0,0 +1,4 @@
1
+ export { getRandomInt } from './getRandomInt';
2
+ export { ifNaN } from './ifNaN';
3
+ export { removeFromArray } from './removeFromArray';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Removes value from an array.
3
+ * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`
4
+ * @param {Array} array
5
+ * @param {*} value
6
+ * @return {Array} original array
7
+ */
8
+ export declare const removeFromArray: <T>(array: T[], value: T) => T[];
9
+ //# sourceMappingURL=removeFromArray.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const uid: () => number;
2
+ //# sourceMappingURL=uid.d.ts.map
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Capitalizes a string
3
+ * @param {String} string String to capitalize
4
+ * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized
5
+ * and other letters stay untouched, if false first letter is capitalized
6
+ * and other letters are converted to lowercase.
7
+ * @return {String} Capitalized version of a string
8
+ */
9
+ export declare const capitalize: (string: string, firstLetterOnly?: boolean) => string;
10
+ /**
11
+ * Escapes XML in a string
12
+ * @param {String} string String to escape
13
+ * @return {String} Escaped version of a string
14
+ */
15
+ export declare const escapeXml: (string: string) => string;
16
+ /**
17
+ * Divide a string in the user perceived single units
18
+ * @param {String} textstring String to escape
19
+ * @return {Array} array containing the graphemes
20
+ */
21
+ export declare const graphemeSplit: (textstring: string) => string[];
22
+ //# sourceMappingURL=lang_string.d.ts.map
@@ -0,0 +1,9 @@
1
+ import { XY } from '../../Point';
2
+ import { TBBox } from '../../typedefs';
3
+ /**
4
+ * Calculates bounding box (left, top, width, height) from given `points`
5
+ * @param {XY[]} points
6
+ * @return {Object} Object with left, top, width, height properties
7
+ */
8
+ export declare const makeBoundingBoxFromPoints: (points: XY[]) => TBBox;
9
+ //# sourceMappingURL=boundingBoxFromPoints.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare const capValue: (min: number, value: number, max: number) => number;
2
+ //# sourceMappingURL=capValue.d.ts.map
@@ -0,0 +1,10 @@
1
+ import type { TRadian } from '../../typedefs';
2
+ /**
3
+ * Calculate the cos of an angle, avoiding returning floats for known results
4
+ * This function is here just to avoid getting 0.999999999999999 when dealing
5
+ * with numbers that are really 1 or 0.
6
+ * @param {TRadian} angle the angle
7
+ * @return {Number} the cosin value for angle.
8
+ */
9
+ export declare const cos: (angle: TRadian) => number;
10
+ //# sourceMappingURL=cos.d.ts.map
@@ -0,0 +1,28 @@
1
+ import { ImageFormat } from '../../typedefs';
2
+ /**
3
+ * Creates canvas element
4
+ * @return {CanvasElement} initialized canvas element
5
+ */
6
+ export declare const createCanvasElement: () => HTMLCanvasElement;
7
+ /**
8
+ * Creates image element (works on client and node)
9
+ * @return {HTMLImageElement} HTML image element
10
+ */
11
+ export declare const createImage: () => HTMLImageElement;
12
+ /**
13
+ * Creates a canvas element that is a copy of another and is also painted
14
+ * @param {CanvasElement} canvas to copy size and content of
15
+ * @return {CanvasElement} initialized canvas element
16
+ */
17
+ export declare const copyCanvasElement: (canvas: HTMLCanvasElement) => HTMLCanvasElement;
18
+ /**
19
+ * since 2.6.0 moved from canvas instance to utility.
20
+ * possibly useless
21
+ * @param {CanvasElement} canvasEl to copy size and content of
22
+ * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too
23
+ * @param {Number} quality <= 1 and > 0
24
+ * @return {String} data url
25
+ */
26
+ export declare const toDataURL: (canvasEl: HTMLCanvasElement, format: ImageFormat, quality: number) => string;
27
+ export declare const isHTMLCanvas: (canvas: HTMLCanvasElement | string) => canvas is HTMLCanvasElement;
28
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1,29 @@
1
+ export interface IWithDimensions {
2
+ /**
3
+ * natural unscaled width of the object
4
+ */
5
+ width: number;
6
+ /**
7
+ * natural unscaled height of the object
8
+ */
9
+ height: number;
10
+ }
11
+ /**
12
+ * Finds the scale for the object source to fit inside the object destination,
13
+ * keeping aspect ratio intact.
14
+ * respect the total allowed area for the cache.
15
+ * @param {IWithDimensions} source
16
+ * @param {IWithDimensions} destination
17
+ * @return {Number} scale factor to apply to source to fit into destination
18
+ */
19
+ export declare const findScaleToFit: (source: IWithDimensions, destination: IWithDimensions) => number;
20
+ /**
21
+ * Finds the scale for the object source to cover entirely the object destination,
22
+ * keeping aspect ratio intact.
23
+ * respect the total allowed area for the cache.
24
+ * @param {IWithDimensions} source
25
+ * @param {IWithDimensions} destination
26
+ * @return {Number} scale factor to apply to source to cover destination
27
+ */
28
+ export declare const findScaleToCover: (source: IWithDimensions, destination: IWithDimensions) => number;
29
+ //# sourceMappingURL=findScaleTo.d.ts.map
@@ -0,0 +1,9 @@
1
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
2
+ /**
3
+ * Groups SVG elements (usually those retrieved from SVG document)
4
+ * @static
5
+ * @param {FabricObject[]} elements FabricObject(s) parsed from svg, to group
6
+ * @return {FabricObject | Group}
7
+ */
8
+ export declare const groupSVGElements: (elements: FabricObject[]) => FabricObject<Partial<import("../../shapes/Object/types").FabricObjectProps>, import("../../shapes/Object/types").SerializedObjectProps, import("../../EventTypeDefs").ObjectEvents>;
9
+ //# sourceMappingURL=groupSVGElements.d.ts.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Returns true if context has transparent pixel
3
+ * at specified location (taking tolerance into account)
4
+ * @param {CanvasRenderingContext2D} ctx context
5
+ * @param {Number} x x coordinate in canvasElementCoordinate, not fabric space. integer
6
+ * @param {Number} y y coordinate in canvasElementCoordinate, not fabric space. integer
7
+ * @param {Number} tolerance Tolerance pixels around the point, not alpha tolerance, integer
8
+ * @return {boolean} true if transparent
9
+ */
10
+ export declare const isTransparent: (ctx: CanvasRenderingContext2D, x: number, y: number, tolerance: number) => boolean;
11
+ //# sourceMappingURL=isTransparent.d.ts.map
@@ -0,0 +1,92 @@
1
+ import { XY, Point } from '../../Point';
2
+ import { TDegree, TMat2D } from '../../typedefs';
3
+ type TRotateMatrixArgs = {
4
+ angle?: TDegree;
5
+ };
6
+ type TTranslateMatrixArgs = {
7
+ translateX?: number;
8
+ translateY?: number;
9
+ };
10
+ export type TScaleMatrixArgs = {
11
+ scaleX?: number;
12
+ scaleY?: number;
13
+ flipX?: boolean;
14
+ flipY?: boolean;
15
+ skewX?: TDegree;
16
+ skewY?: TDegree;
17
+ };
18
+ export type TComposeMatrixArgs = TTranslateMatrixArgs & TRotateMatrixArgs & TScaleMatrixArgs;
19
+ export type TQrDecomposeOut = Required<Omit<TComposeMatrixArgs, 'flipX' | 'flipY'>>;
20
+ export declare const isIdentityMatrix: (mat: TMat2D) => boolean;
21
+ /**
22
+ * Apply transform t to point p
23
+ * @param {Point | XY} p The point to transform
24
+ * @param {Array} t The transform
25
+ * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied
26
+ * @return {Point} The transformed point
27
+ */
28
+ export declare const transformPoint: (p: XY, t: TMat2D, ignoreOffset?: boolean) => Point;
29
+ /**
30
+ * Invert transformation t
31
+ * @param {Array} t The transform
32
+ * @return {Array} The inverted transform
33
+ */
34
+ export declare const invertTransform: (t: TMat2D) => TMat2D;
35
+ /**
36
+ * Multiply matrix A by matrix B to nest transformations
37
+ * @param {TMat2D} a First transformMatrix
38
+ * @param {TMat2D} b Second transformMatrix
39
+ * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices
40
+ * @return {TMat2D} The product of the two transform matrices
41
+ */
42
+ export declare const multiplyTransformMatrices: (a: TMat2D, b: TMat2D, is2x2?: boolean) => TMat2D;
43
+ /**
44
+ * Decomposes standard 2x3 matrix into transform components
45
+ * @param {TMat2D} a transformMatrix
46
+ * @return {Object} Components of transform
47
+ */
48
+ export declare const qrDecompose: (a: TMat2D) => TQrDecomposeOut;
49
+ /**
50
+ * Returns a transform matrix starting from an object of the same kind of
51
+ * the one returned from qrDecompose, useful also if you want to calculate some
52
+ * transformations from an object that is not enlived yet
53
+ * @param {Object} options
54
+ * @param {Number} [options.angle] angle in degrees
55
+ * @return {TMat2D} transform matrix
56
+ */
57
+ export declare const calcRotateMatrix: ({ angle }: TRotateMatrixArgs) => TMat2D;
58
+ /**
59
+ * Returns a transform matrix starting from an object of the same kind of
60
+ * the one returned from qrDecompose, useful also if you want to calculate some
61
+ * transformations from an object that is not enlived yet.
62
+ * is called DimensionsTransformMatrix because those properties are the one that influence
63
+ * the size of the resulting box of the object.
64
+ * @param {Object} options
65
+ * @param {Number} [options.scaleX]
66
+ * @param {Number} [options.scaleY]
67
+ * @param {Boolean} [options.flipX]
68
+ * @param {Boolean} [options.flipY]
69
+ * @param {Number} [options.skewX]
70
+ * @param {Number} [options.skewY]
71
+ * @return {Number[]} transform matrix
72
+ */
73
+ export declare const calcDimensionsMatrix: ({ scaleX, scaleY, flipX, flipY, skewX, skewY, }: TScaleMatrixArgs) => TMat2D;
74
+ /**
75
+ * Returns a transform matrix starting from an object of the same kind of
76
+ * the one returned from qrDecompose, useful also if you want to calculate some
77
+ * transformations from an object that is not enlived yet
78
+ * @param {Object} options
79
+ * @param {Number} [options.angle]
80
+ * @param {Number} [options.scaleX]
81
+ * @param {Number} [options.scaleY]
82
+ * @param {Boolean} [options.flipX]
83
+ * @param {Boolean} [options.flipY]
84
+ * @param {Number} [options.skewX]
85
+ * @param {Number} [options.skewY]
86
+ * @param {Number} [options.translateX]
87
+ * @param {Number} [options.translateY]
88
+ * @return {Number[]} transform matrix
89
+ */
90
+ export declare const composeMatrix: ({ translateX, translateY, angle, ...otherOptions }: TComposeMatrixArgs) => TMat2D;
91
+ export {};
92
+ //# sourceMappingURL=matrix.d.ts.map
@@ -0,0 +1,23 @@
1
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
2
+ import { Group } from '../../shapes/Group';
3
+ /**
4
+ * Merges 2 clip paths into one visually equal clip path
5
+ *
6
+ * **IMPORTANT**:\
7
+ * Does **NOT** clone the arguments, clone them proir if necessary.
8
+ *
9
+ * Creates a wrapper (group) that contains one clip path and is clipped by the other so content is kept where both overlap.
10
+ * Use this method if both the clip paths may have nested clip paths of their own, so assigning one to the other's clip path property is not possible.
11
+ *
12
+ * In order to handle the `inverted` property we follow logic described in the following cases:\
13
+ * **(1)** both clip paths are inverted - the clip paths pass the inverted prop to the wrapper and loose it themselves.\
14
+ * **(2)** one is inverted and the other isn't - the wrapper shouldn't become inverted and the inverted clip path must clip the non inverted one to produce an identical visual effect.\
15
+ * **(3)** both clip paths are not inverted - wrapper and clip paths remain unchanged.
16
+ *
17
+ * @memberOf fabric.util
18
+ * @param {fabric.Object} c1
19
+ * @param {fabric.Object} c2
20
+ * @returns {fabric.Object} merged clip path
21
+ */
22
+ export declare const mergeClipPaths: (c1: FabricObject, c2: FabricObject) => Group;
23
+ //# sourceMappingURL=mergeClipPaths.d.ts.map
@@ -0,0 +1,56 @@
1
+ import type { FabricObject } from '../../shapes/Object/FabricObject';
2
+ import type { TCrossOrigin, TFiller } from '../../typedefs';
3
+ export type LoadImageOptions = {
4
+ /**
5
+ * see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
6
+ */
7
+ signal?: AbortSignal;
8
+ /**
9
+ * cors value for the image loading, default to anonymous
10
+ */
11
+ crossOrigin?: TCrossOrigin;
12
+ };
13
+ /**
14
+ * Loads image element from given url and resolve it, or catch.
15
+ * @param {String} url URL representing an image
16
+ * @param {LoadImageOptions} [options] image loading options
17
+ * @returns {Promise<HTMLImageElement>} the loaded image.
18
+ */
19
+ export declare const loadImage: (url: string, { signal, crossOrigin }?: LoadImageOptions) => Promise<HTMLImageElement>;
20
+ export type EnlivenObjectOptions = {
21
+ /**
22
+ * handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
23
+ */
24
+ signal?: AbortSignal;
25
+ /**
26
+ * Method for further parsing of object elements,
27
+ * called after each fabric object created.
28
+ */
29
+ reviver?: (serializedObj: Record<string, any>, instance: FabricObject) => void;
30
+ /**
31
+ * Namespace to get klass "Class" object from
32
+ */
33
+ namespace?: any;
34
+ };
35
+ /**
36
+ * Creates corresponding fabric instances from their object representations
37
+ * @param {Object[]} objects Objects to enliven
38
+ * @param {EnlivenObjectOptions} [options]
39
+ * @param {object} [options.namespace] Namespace to get klass "Class" object from
40
+ * @param {(serializedObj: object, instance: FabricObject) => any} [options.reviver] Method for further parsing of object elements,
41
+ * called after each fabric object created.
42
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
43
+ * @returns {Promise<FabricObject[]>}
44
+ */
45
+ export declare const enlivenObjects: (objects: any[], { signal, reviver }?: EnlivenObjectOptions) => Promise<FabricObject<Partial<import("../../shapes/Object/types").FabricObjectProps>, import("../../shapes/Object/types").SerializedObjectProps, import("../../EventTypeDefs").ObjectEvents>[]>;
46
+ /**
47
+ * Creates corresponding fabric instances residing in an object, e.g. `clipPath`
48
+ * @param {Object} object with properties to enlive ( fill, stroke, clipPath, path )
49
+ * @param {object} [options]
50
+ * @param {AbortSignal} [options.signal] handle aborting, see https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal
51
+ * @returns {Promise<Record<string, FabricObject | TFiller | null>>} the input object with enlived values
52
+ */
53
+ export declare const enlivenObjectEnlivables: <R = Record<string, FabricObject<Partial<import("../../shapes/Object/types").FabricObjectProps>, import("../../shapes/Object/types").SerializedObjectProps, import("../../EventTypeDefs").ObjectEvents> | TFiller | null>>(serializedObject: any, { signal }?: {
54
+ signal?: AbortSignal | undefined;
55
+ }) => Promise<R>;
56
+ //# sourceMappingURL=objectEnlive.d.ts.map
@@ -0,0 +1,68 @@
1
+ import { Point } from '../../Point';
2
+ import type { FabricObject } from '../../shapes/Object/Object';
3
+ import { TMat2D } from '../../typedefs';
4
+ import type { TScaleMatrixArgs } from './matrix';
5
+ /**
6
+ * given an object and a transform, apply the inverse transform to the object,
7
+ * this is equivalent to remove from that object that transformation, so that
8
+ * added in a space with the removed transform, the object will be the same as before.
9
+ * Removing from an object a transform that scale by 2 is like scaling it by 1/2.
10
+ * Removing from an object a transform that rotate by 30deg is like rotating by 30deg
11
+ * in the opposite direction.
12
+ * This util is used to add objects inside transformed groups or nested groups.
13
+ * @param {FabricObject} object the object you want to transform
14
+ * @param {TMat2D} transform the destination transform
15
+ */
16
+ export declare const removeTransformFromObject: (object: FabricObject, transform: TMat2D) => void;
17
+ /**
18
+ * given an object and a transform, apply the transform to the object.
19
+ * this is equivalent to change the space where the object is drawn.
20
+ * Adding to an object a transform that scale by 2 is like scaling it by 2.
21
+ * This is used when removing an object from an active selection for example.
22
+ * @param {FabricObject} object the object you want to transform
23
+ * @param {Array} transform the destination transform
24
+ */
25
+ export declare const addTransformToObject: (object: FabricObject, transform: TMat2D) => void;
26
+ /**
27
+ * discard an object transform state and apply the one from the matrix.
28
+ * @param {FabricObject} object the object you want to transform
29
+ * @param {Array} transform the destination transform
30
+ */
31
+ export declare const applyTransformToObject: (object: FabricObject, transform: TMat2D) => void;
32
+ /**
33
+ * reset an object transform state to neutral. Top and left are not accounted for
34
+ * @param {FabricObject} target object to transform
35
+ */
36
+ export declare const resetObjectTransform: (target: FabricObject) => void;
37
+ /**
38
+ * Extract Object transform values
39
+ * @param {FabricObject} target object to read from
40
+ * @return {Object} Components of transform
41
+ */
42
+ export declare const saveObjectTransform: (target: FabricObject) => {
43
+ scaleX: number;
44
+ scaleY: number;
45
+ skewX: number;
46
+ skewY: number;
47
+ angle: import("../../typedefs").TDegree;
48
+ left: number;
49
+ flipX: boolean;
50
+ flipY: boolean;
51
+ top: number;
52
+ };
53
+ /**
54
+ * given a width and height, return the size of the bounding box
55
+ * that can contains the box with width/height with applied transform
56
+ * described in options.
57
+ * Use to calculate the boxes around objects for controls.
58
+ * @param {Number} width
59
+ * @param {Number} height
60
+ * @param {Object} options
61
+ * @param {Number} options.scaleX
62
+ * @param {Number} options.scaleY
63
+ * @param {Number} options.skewX
64
+ * @param {Number} options.skewY
65
+ * @returns {Point} size
66
+ */
67
+ export declare const sizeAfterTransform: (width: number, height: number, options: TScaleMatrixArgs) => Point;
68
+ //# sourceMappingURL=objectTransforms.d.ts.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Populates an object with properties of another object
3
+ * @param {Object} source Source object
4
+ * @param {string[]} properties Properties names to include
5
+ * @returns object populated with the picked keys
6
+ */
7
+ export declare const pick: <T extends Record<string, any>>(source: T, keys?: (keyof T)[]) => Partial<T>;
8
+ export declare const pickBy: <T extends Record<string, any>>(source: T, predicate: <K extends keyof T>(value: T[K], key: K, collection: T) => boolean) => Partial<T>;
9
+ //# sourceMappingURL=pick.d.ts.map
@@ -0,0 +1,84 @@
1
+ import type { Point } from '../../Point';
2
+ import type { FabricObject } from '../../shapes/Object/Object';
3
+ import type { TMat2D } from '../../typedefs';
4
+ import type { StaticCanvas } from '../../canvas/StaticCanvas';
5
+ export declare const enum ObjectRelation {
6
+ sibling = "sibling",
7
+ child = "child"
8
+ }
9
+ /**
10
+ * We are actually looking for the transformation from the destination plane to the source plane (change of basis matrix)\
11
+ * The object will exist on the destination plane and we want it to seem unchanged by it so we invert the destination matrix (`to`) and then apply the source matrix (`from`)
12
+ * @param [from]
13
+ * @param [to]
14
+ * @returns
15
+ */
16
+ export declare const calcPlaneChangeMatrix: (from?: TMat2D, to?: TMat2D) => TMat2D;
17
+ /**
18
+ * Sends a point from the source coordinate plane to the destination coordinate plane.\
19
+ * From the canvas/viewer's perspective the point remains unchanged.
20
+ *
21
+ * @example <caption>Send point from canvas plane to group plane</caption>
22
+ * var obj = new Rect({ left: 20, top: 20, width: 60, height: 60, strokeWidth: 0 });
23
+ * var group = new Group([obj], { strokeWidth: 0 });
24
+ * var sentPoint1 = sendPointToPlane(new Point(50, 50), undefined, group.calcTransformMatrix());
25
+ * var sentPoint2 = sendPointToPlane(new Point(50, 50), iMatrix, group.calcTransformMatrix());
26
+ * console.log(sentPoint1, sentPoint2) // both points print (0,0) which is the center of group
27
+ *
28
+ * @see {transformPointRelativeToCanvas} for transforming relative to canvas
29
+ * @param {Point} point
30
+ * @param {TMat2D} [from] plane matrix containing object. Passing `undefined` is equivalent to passing the identity matrix, which means `point` exists in the canvas coordinate plane.
31
+ * @param {TMat2D} [to] destination plane matrix to contain object. Passing `undefined` means `point` should be sent to the canvas coordinate plane.
32
+ * @returns {Point} transformed point
33
+ */
34
+ export declare const sendPointToPlane: (point: Point, from?: TMat2D, to?: TMat2D) => Point;
35
+ /**
36
+ * Transform point relative to canvas.
37
+ * From the viewport/viewer's perspective the point remains unchanged.
38
+ *
39
+ * `child` relation means `point` exists in the coordinate plane created by `canvas`.
40
+ * In other words point is measured according to canvas' top left corner
41
+ * meaning that if `point` is equal to (0,0) it is positioned at canvas' top left corner.
42
+ *
43
+ * `sibling` relation means `point` exists in the same coordinate plane as canvas.
44
+ * In other words they both relate to the same (0,0) and agree on every point, which is how an event relates to canvas.
45
+ *
46
+ * @param {Point} point
47
+ * @param {StaticCanvas} canvas
48
+ * @param {'sibling'|'child'} relationBefore current relation of point to canvas
49
+ * @param {'sibling'|'child'} relationAfter desired relation of point to canvas
50
+ * @returns {Point} transformed point
51
+ */
52
+ export declare const transformPointRelativeToCanvas: (point: Point, canvas: StaticCanvas, relationBefore: ObjectRelation, relationAfter: ObjectRelation) => Point;
53
+ /**
54
+ *
55
+ * A util that abstracts applying transform to objects.\
56
+ * Sends `object` to the destination coordinate plane by applying the relevant transformations.\
57
+ * Changes the space/plane where `object` is drawn.\
58
+ * From the canvas/viewer's perspective `object` remains unchanged.
59
+ *
60
+ * @example <caption>Move clip path from one object to another while preserving it's appearance as viewed by canvas/viewer</caption>
61
+ * let obj, obj2;
62
+ * let clipPath = new Circle({ radius: 50 });
63
+ * obj.clipPath = clipPath;
64
+ * // render
65
+ * sendObjectToPlane(clipPath, obj.calcTransformMatrix(), obj2.calcTransformMatrix());
66
+ * obj.clipPath = undefined;
67
+ * obj2.clipPath = clipPath;
68
+ * // render, clipPath now clips obj2 but seems unchanged from the eyes of the viewer
69
+ *
70
+ * @example <caption>Clip an object's clip path with an existing object</caption>
71
+ * let obj, existingObj;
72
+ * let clipPath = new Circle({ radius: 50 });
73
+ * obj.clipPath = clipPath;
74
+ * let transformTo = multiplyTransformMatrices(obj.calcTransformMatrix(), clipPath.calcTransformMatrix());
75
+ * sendObjectToPlane(existingObj, existingObj.group?.calcTransformMatrix(), transformTo);
76
+ * clipPath.clipPath = existingObj;
77
+ *
78
+ * @param {FabricObject} object
79
+ * @param {Matrix} [from] plane matrix containing object. Passing `undefined` is equivalent to passing the identity matrix, which means `object` is a direct child of canvas.
80
+ * @param {Matrix} [to] destination plane matrix to contain object. Passing `undefined` means `object` should be sent to the canvas coordinate plane.
81
+ * @returns {Matrix} the transform matrix that was applied to `object`
82
+ */
83
+ export declare const sendObjectToPlane: (object: FabricObject, from?: TMat2D, to?: TMat2D) => TMat2D;
84
+ //# sourceMappingURL=planeChange.d.ts.map