fabric 5.3.0 → 6.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -0,0 +1,170 @@
1
+ import { TClassProperties } from '../typedefs';
2
+ import { IText } from './IText/IText';
3
+ /**
4
+ * Textbox class, based on IText, allows the user to resize the text rectangle
5
+ * and wraps lines automatically. Textboxes have their Y scaling locked, the
6
+ * user can only change width. Height is adjusted automatically based on the
7
+ * wrapping of lines.
8
+ */
9
+ export declare class Textbox extends IText {
10
+ /**
11
+ * Minimum width of textbox, in pixels.
12
+ * @type Number
13
+ * @default
14
+ */
15
+ minWidth: number;
16
+ /**
17
+ * Minimum calculated width of a textbox, in pixels.
18
+ * fixed to 2 so that an empty textbox cannot go to 0
19
+ * and is still selectable without text.
20
+ * @type Number
21
+ * @default
22
+ */
23
+ dynamicMinWidth: number;
24
+ /**
25
+ * Use this boolean property in order to split strings that have no white space concept.
26
+ * this is a cheap way to help with chinese/japanese
27
+ * @type Boolean
28
+ * @since 2.6.0
29
+ */
30
+ splitByGrapheme: boolean;
31
+ /**
32
+ * Unlike superclass's version of this function, Textbox does not update
33
+ * its width.
34
+ * @private
35
+ * @override
36
+ */
37
+ initDimensions(): void;
38
+ /**
39
+ * Generate an object that translates the style object so that it is
40
+ * broken up by visual lines (new lines and automatic wrapping).
41
+ * The original text styles object is broken up by actual lines (new lines only),
42
+ * which is only sufficient for Text / IText
43
+ * @private
44
+ */
45
+ _generateStyleMap(textInfo: any): {};
46
+ /**
47
+ * Returns true if object has a style property or has it on a specified line
48
+ * @param {Number} lineIndex
49
+ * @return {Boolean}
50
+ */
51
+ styleHas(property: any, lineIndex: number): boolean;
52
+ /**
53
+ * Returns true if object has no styling or no styling in a line
54
+ * @param {Number} lineIndex , lineIndex is on wrapped lines.
55
+ * @return {Boolean}
56
+ */
57
+ isEmptyStyles(lineIndex: number): boolean;
58
+ /**
59
+ * @param {Number} lineIndex
60
+ * @param {Number} charIndex
61
+ * @private
62
+ */
63
+ _getStyleDeclaration(lineIndex: number, charIndex: number): import("./Text/StyledText").TextStyleDeclaration | null;
64
+ /**
65
+ * @param {Number} lineIndex
66
+ * @param {Number} charIndex
67
+ * @param {Object} style
68
+ * @private
69
+ */
70
+ _setStyleDeclaration(lineIndex: number, charIndex: number, style: object): void;
71
+ /**
72
+ * @param {Number} lineIndex
73
+ * @param {Number} charIndex
74
+ * @private
75
+ */
76
+ _deleteStyleDeclaration(lineIndex: number, charIndex: number): void;
77
+ /**
78
+ * probably broken need a fix
79
+ * Returns the real style line that correspond to the wrapped lineIndex line
80
+ * Used just to verify if the line does exist or not.
81
+ * @param {Number} lineIndex
82
+ * @returns {Boolean} if the line exists or not
83
+ * @private
84
+ */
85
+ _getLineStyle(lineIndex: number): boolean;
86
+ /**
87
+ * Set the line style to an empty object so that is initialized
88
+ * @param {Number} lineIndex
89
+ * @param {Object} style
90
+ * @private
91
+ */
92
+ _setLineStyle(lineIndex: number): void;
93
+ /**
94
+ * Wraps text using the 'width' property of Textbox. First this function
95
+ * splits text on newlines, so we preserve newlines entered by the user.
96
+ * Then it wraps each line using the width of the Textbox by calling
97
+ * _wrapLine().
98
+ * @param {Array} lines The string array of text that is split into lines
99
+ * @param {Number} desiredWidth width you want to wrap to
100
+ * @returns {Array} Array of lines
101
+ */
102
+ _wrapText(lines: Array<any>, desiredWidth: number): Array<any>;
103
+ /**
104
+ * Helper function to measure a string of text, given its lineIndex and charIndex offset
105
+ * It gets called when charBounds are not available yet.
106
+ * Override if necessary
107
+ * Use with {@link Textbox#wordSplit}
108
+ *
109
+ * @param {CanvasRenderingContext2D} ctx
110
+ * @param {String} text
111
+ * @param {number} lineIndex
112
+ * @param {number} charOffset
113
+ * @returns {number}
114
+ */
115
+ _measureWord(word: any, lineIndex: number, charOffset?: number): number;
116
+ /**
117
+ * Override this method to customize word splitting
118
+ * Use with {@link Textbox#_measureWord}
119
+ * @param {string} value
120
+ * @returns {string[]} array of words
121
+ */
122
+ wordSplit(value: string): string[];
123
+ /**
124
+ * Wraps a line of text using the width of the Textbox and a context.
125
+ * @param {Array} line The grapheme array that represent the line
126
+ * @param {Number} lineIndex
127
+ * @param {Number} desiredWidth width you want to wrap the line to
128
+ * @param {Number} reservedSpace space to remove from wrapping for custom functionalities
129
+ * @returns {Array} Array of line(s) into which the given text is wrapped
130
+ * to.
131
+ */
132
+ _wrapLine(_line: any, lineIndex: number, desiredWidth: number, reservedSpace?: number): Array<any>;
133
+ /**
134
+ * Detect if the text line is ended with an hard break
135
+ * text and itext do not have wrapping, return false
136
+ * @param {Number} lineIndex text to split
137
+ * @return {Boolean}
138
+ */
139
+ isEndOfWrapping(lineIndex: number): boolean;
140
+ /**
141
+ * Detect if a line has a linebreak and so we need to account for it when moving
142
+ * and counting style.
143
+ * @return Number
144
+ */
145
+ missingNewlineOffset(lineIndex: any): 1 | 0;
146
+ /**
147
+ * Gets lines of text to render in the Textbox. This function calculates
148
+ * text wrapping on the fly every time it is called.
149
+ * @param {String} text text to split
150
+ * @returns {Array} Array of lines in the Textbox.
151
+ * @override
152
+ */
153
+ _splitTextIntoLines(text: string): {
154
+ _unwrappedLines: string[][];
155
+ lines: string[];
156
+ graphemeText: string[];
157
+ graphemeLines: string[][];
158
+ };
159
+ getMinWidth(): number;
160
+ _removeExtraneousStyles(): void;
161
+ /**
162
+ * Returns object representation of an instance
163
+ * @method toObject
164
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
165
+ * @return {Object} object representation of an instance
166
+ */
167
+ toObject(propertiesToInclude: Array<any>): object;
168
+ }
169
+ export declare const textboxDefaultValues: Partial<TClassProperties<Textbox>>;
170
+ //# sourceMappingURL=Textbox.d.ts.map
@@ -0,0 +1,17 @@
1
+ import { TClassProperties } from '../typedefs';
2
+ import { FabricObject } from './Object/FabricObject';
3
+ export declare class Triangle extends FabricObject {
4
+ /**
5
+ * @private
6
+ * @param {CanvasRenderingContext2D} ctx Context to render on
7
+ */
8
+ _render(ctx: CanvasRenderingContext2D): void;
9
+ /**
10
+ * Returns svg representation of an instance
11
+ * @return {Array} an array of strings with the specific svg representation
12
+ * of the instance
13
+ */
14
+ _toSVG(): string[];
15
+ }
16
+ export declare const triangleDefaultValues: Partial<TClassProperties<Triangle>>;
17
+ //# sourceMappingURL=Triangle.d.ts.map
@@ -0,0 +1,93 @@
1
+ import { BaseFabricObject } from './EventTypeDefs';
2
+ import type { Gradient } from './gradient/Gradient';
3
+ import type { Pattern } from './Pattern';
4
+ import type { Point } from './Point';
5
+ interface NominalTag<T> {
6
+ nominalTag?: T;
7
+ }
8
+ type Nominal<Type, Tag> = NominalTag<Tag> & Type;
9
+ type TNonFunctionPropertyNames<T> = {
10
+ [K in keyof T]: T[K] extends Function ? never : K;
11
+ }[keyof T];
12
+ export type TClassProperties<T> = Pick<T, TNonFunctionPropertyNames<T>>;
13
+ export type Constructor<T = object> = new (...args: any[]) => T;
14
+ declare const enum Degree {
15
+ }
16
+ declare const enum Radian {
17
+ }
18
+ export type TDegree = Nominal<number, Degree>;
19
+ export type TRadian = Nominal<number, Radian>;
20
+ export type TAxis = 'x' | 'y';
21
+ export type TAxisKey<T extends string> = `${T}${Capitalize<TAxis>}`;
22
+ export type TFiller = Gradient<'linear'> | Gradient<'radial'> | Pattern;
23
+ export type TSize = {
24
+ width: number;
25
+ height: number;
26
+ };
27
+ export type TBBox = {
28
+ left: number;
29
+ top: number;
30
+ } & TSize;
31
+ export type Percent = `${number}%`;
32
+ export declare const enum ImageFormat {
33
+ jpeg = "jpeg",
34
+ jpg = "jpeg",
35
+ png = "png"
36
+ }
37
+ export declare const enum SVGElementName {
38
+ linearGradient = "linearGradient",
39
+ radialGradient = "radialGradient",
40
+ stop = "stop"
41
+ }
42
+ export declare const enum SupportedSVGUnit {
43
+ mm = "mm",
44
+ cm = "cm",
45
+ in = "in",
46
+ pt = "pt",
47
+ pc = "pc",
48
+ em = "em"
49
+ }
50
+ export type TMat2D = [number, number, number, number, number, number];
51
+ /**
52
+ * SVG path commands
53
+ */
54
+ export type PathData = (string | number)[][];
55
+ /**
56
+ * An invalid keyword and an empty string will be handled as the `anonymous` keyword.
57
+ * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes
58
+ */
59
+ export type TCrossOrigin = '' | 'anonymous' | 'use-credentials' | null;
60
+ export type TOriginX = 'center' | 'left' | 'right' | number;
61
+ export type TOriginY = 'center' | 'top' | 'bottom' | number;
62
+ export type TCornerPoint = {
63
+ tl: Point;
64
+ tr: Point;
65
+ bl: Point;
66
+ br: Point;
67
+ };
68
+ export type TSVGReviver = (markup: string) => string;
69
+ export type TValidToObjectMethod = 'toDatalessObject' | 'toObject';
70
+ export type TCacheCanvasDimensions = {
71
+ width: number;
72
+ height: number;
73
+ zoomX: number;
74
+ zoomY: number;
75
+ x: number;
76
+ y: number;
77
+ };
78
+ export type TToCanvasElementOptions = {
79
+ left?: number;
80
+ top?: number;
81
+ width?: number;
82
+ height?: number;
83
+ filter?: (object: BaseFabricObject) => boolean;
84
+ };
85
+ export type TDataUrlOptions = TToCanvasElementOptions & {
86
+ multiplier: number;
87
+ format?: ImageFormat;
88
+ quality?: number;
89
+ enableRetinaScaling?: boolean;
90
+ };
91
+ export type AssertKeys<T, K extends keyof T> = T & Record<K, NonNullable<T[K]>>;
92
+ export {};
93
+ //# sourceMappingURL=typedefs.d.ts.map
@@ -0,0 +1,54 @@
1
+ import { AnimationState, TBaseAnimationOptions, TEasingFunction } from './types';
2
+ export declare abstract class AnimationBase<T extends number | number[] = number | number[]> {
3
+ readonly startValue: T;
4
+ readonly endValue: T;
5
+ readonly duration: number;
6
+ readonly delay: number;
7
+ protected readonly byValue: T;
8
+ protected readonly easing: TEasingFunction<T>;
9
+ private readonly _onStart;
10
+ private readonly _onChange;
11
+ private readonly _onComplete;
12
+ private readonly _abort;
13
+ /**
14
+ * Used to register the animation to a target object
15
+ * so that it can be cancelled within the object context
16
+ */
17
+ readonly target?: unknown;
18
+ private _state;
19
+ /**
20
+ * Time %, or the ratio of `timeElapsed / duration`
21
+ * @see tick
22
+ */
23
+ durationProgress: number;
24
+ /**
25
+ * Value %, or the ratio of `(currentValue - startValue) / (endValue - startValue)`
26
+ */
27
+ valueProgress: number;
28
+ /**
29
+ * Current value
30
+ */
31
+ value: T;
32
+ /**
33
+ * Animation start time ms
34
+ */
35
+ private startTime;
36
+ constructor({ startValue, byValue, duration, delay, easing, onStart, onChange, onComplete, abort, target, }: TBaseAnimationOptions<T>);
37
+ get state(): AnimationState;
38
+ isDone(): boolean;
39
+ /**
40
+ * Calculate the current value based on the easing parameters
41
+ * @param timeElapsed in ms
42
+ * @protected
43
+ */
44
+ protected abstract calculate(timeElapsed: number): {
45
+ value: T;
46
+ valueProgress: number;
47
+ };
48
+ start(): void;
49
+ private tick;
50
+ private register;
51
+ private unregister;
52
+ abort(): void;
53
+ }
54
+ //# sourceMappingURL=AnimationBase.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/
3
+ * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method
4
+ * @param {Function} callback Callback to invoke
5
+ */
6
+ export declare function requestAnimFrame(callback: FrameRequestCallback): number;
7
+ export declare function cancelAnimFrame(handle: number): void;
8
+ //# sourceMappingURL=AnimationFrameProvider.d.ts.map
@@ -0,0 +1,29 @@
1
+ import type { Canvas } from '../../canvas/Canvas';
2
+ import type { AnimationBase } from './AnimationBase';
3
+ /**
4
+ * Array holding all running animations
5
+ */
6
+ declare class AnimationRegistry extends Array<AnimationBase> {
7
+ /**
8
+ * Remove a single animation using an animation context
9
+ * @param {AnimationBase} context
10
+ */
11
+ remove(context: AnimationBase): void;
12
+ /**
13
+ * Cancel all running animations on the next frame
14
+ */
15
+ cancelAll(): AnimationBase<number | number[]>[];
16
+ /**
17
+ * Cancel all running animations attached to a Canvas on the next frame
18
+ * @param {Canvas} canvas
19
+ */
20
+ cancelByCanvas(canvas: Canvas): AnimationBase<number | number[]>[];
21
+ /**
22
+ * Cancel all running animations for target on the next frame
23
+ * @param target
24
+ */
25
+ cancelByTarget(target: AnimationBase['target']): AnimationBase<number | number[]>[];
26
+ }
27
+ export declare const runningAnimations: AnimationRegistry;
28
+ export {};
29
+ //# sourceMappingURL=AnimationRegistry.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { AnimationBase } from './AnimationBase';
2
+ import { ArrayAnimationOptions } from './types';
3
+ export declare class ArrayAnimation extends AnimationBase<number[]> {
4
+ constructor({ startValue, endValue, ...options }: ArrayAnimationOptions);
5
+ protected calculate(timeElapsed: number): {
6
+ value: number[];
7
+ valueProgress: number;
8
+ };
9
+ }
10
+ //# sourceMappingURL=ArrayAnimation.d.ts.map
@@ -0,0 +1,11 @@
1
+ import { TRGBAColorSource } from '../../color/Color';
2
+ import { AnimationBase } from './AnimationBase';
3
+ import type { ColorAnimationOptions } from './types';
4
+ export declare class ColorAnimation extends AnimationBase<TRGBAColorSource> {
5
+ constructor({ startValue, endValue, easing, onChange, onComplete, abort, ...options }: ColorAnimationOptions);
6
+ protected calculate(timeElapsed: number): {
7
+ value: TRGBAColorSource;
8
+ valueProgress: number;
9
+ };
10
+ }
11
+ //# sourceMappingURL=ColorAnimation.d.ts.map
@@ -0,0 +1,10 @@
1
+ import { AnimationBase } from './AnimationBase';
2
+ import { ValueAnimationOptions } from './types';
3
+ export declare class ValueAnimation extends AnimationBase<number> {
4
+ constructor({ startValue, endValue, ...otherOptions }: ValueAnimationOptions);
5
+ protected calculate(timeElapsed: number): {
6
+ value: number;
7
+ valueProgress: number;
8
+ };
9
+ }
10
+ //# sourceMappingURL=ValueAnimation.d.ts.map
@@ -0,0 +1,37 @@
1
+ import { ValueAnimation } from './ValueAnimation';
2
+ import { ArrayAnimation } from './ArrayAnimation';
3
+ import { ColorAnimation } from './ColorAnimation';
4
+ import { ValueAnimationOptions, ArrayAnimationOptions, ColorAnimationOptions } from './types';
5
+ import { TColorArg } from '../../color/Color';
6
+ export type TAnimation<T extends number | number[] | TColorArg> = T extends TColorArg ? ColorAnimation : T extends number[] ? ArrayAnimation : ValueAnimation;
7
+ /**
8
+ * Changes value(s) from startValue to endValue within a certain period of time,
9
+ * invoking callbacks as the value(s) change.
10
+ *
11
+ * @example
12
+ * animate({
13
+ * startValue: 1,
14
+ * endValue: 0,
15
+ * onChange: (v) => {
16
+ * obj.set('opacity', v);
17
+ * // since we are running in a requested frame we should call `renderAll` and not `requestRenderAll`
18
+ * canvas.renderAll();
19
+ * }
20
+ * });
21
+ *
22
+ * @example Using lists:
23
+ * animate({
24
+ * startValue: [1, 2, 3],
25
+ * endValue: [2, 4, 6],
26
+ * onChange: ([x, y, zoom]) => {
27
+ * canvas.zoomToPoint(new Point(x, y), zoom);
28
+ * canvas.renderAll();
29
+ * }
30
+ * });
31
+ *
32
+ */
33
+ export declare function animate(options: ArrayAnimationOptions): ArrayAnimation;
34
+ export declare function animate(options: ValueAnimationOptions): ValueAnimation;
35
+ export declare function animate<T extends ValueAnimationOptions | ArrayAnimationOptions>(options: T): T extends ArrayAnimationOptions ? ArrayAnimation : ValueAnimation;
36
+ export declare function animateColor(options: ColorAnimationOptions): ColorAnimation;
37
+ //# sourceMappingURL=animate.d.ts.map
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Easing functions
3
+ * @see {@link http://gizma.com/easing/ Easing Equations by Robert Penner}
4
+ */
5
+ import { TEasingFunction } from './types';
6
+ /**
7
+ * Default sinusoidal easing
8
+ */
9
+ export declare const defaultEasing: TEasingFunction;
10
+ /**
11
+ * Cubic easing in
12
+ */
13
+ export declare const easeInCubic: TEasingFunction;
14
+ /**
15
+ * Cubic easing out
16
+ */
17
+ export declare const easeOutCubic: TEasingFunction;
18
+ /**
19
+ * Cubic easing in and out
20
+ */
21
+ export declare const easeInOutCubic: TEasingFunction;
22
+ /**
23
+ * Quartic easing in
24
+ */
25
+ export declare const easeInQuart: TEasingFunction;
26
+ /**
27
+ * Quartic easing out
28
+ */
29
+ export declare const easeOutQuart: TEasingFunction;
30
+ /**
31
+ * Quartic easing in and out
32
+ */
33
+ export declare const easeInOutQuart: TEasingFunction;
34
+ /**
35
+ * Quintic easing in
36
+ */
37
+ export declare const easeInQuint: TEasingFunction;
38
+ /**
39
+ * Quintic easing out
40
+ */
41
+ export declare const easeOutQuint: TEasingFunction;
42
+ /**
43
+ * Quintic easing in and out
44
+ */
45
+ export declare const easeInOutQuint: TEasingFunction;
46
+ /**
47
+ * Sinusoidal easing in
48
+ */
49
+ export declare const easeInSine: TEasingFunction;
50
+ /**
51
+ * Sinusoidal easing out
52
+ */
53
+ export declare const easeOutSine: TEasingFunction;
54
+ /**
55
+ * Sinusoidal easing in and out
56
+ */
57
+ export declare const easeInOutSine: TEasingFunction;
58
+ /**
59
+ * Exponential easing in
60
+ */
61
+ export declare const easeInExpo: TEasingFunction;
62
+ /**
63
+ * Exponential easing out
64
+ */
65
+ export declare const easeOutExpo: TEasingFunction;
66
+ /**
67
+ * Exponential easing in and out
68
+ */
69
+ export declare const easeInOutExpo: TEasingFunction;
70
+ /**
71
+ * Circular easing in
72
+ */
73
+ export declare const easeInCirc: TEasingFunction;
74
+ /**
75
+ * Circular easing out
76
+ */
77
+ export declare const easeOutCirc: TEasingFunction;
78
+ /**
79
+ * Circular easing in and out
80
+ */
81
+ export declare const easeInOutCirc: TEasingFunction;
82
+ /**
83
+ * Elastic easing in
84
+ */
85
+ export declare const easeInElastic: TEasingFunction;
86
+ /**
87
+ * Elastic easing out
88
+ */
89
+ export declare const easeOutElastic: TEasingFunction;
90
+ /**
91
+ * Elastic easing in and out
92
+ */
93
+ export declare const easeInOutElastic: TEasingFunction;
94
+ /**
95
+ * Backwards easing in
96
+ */
97
+ export declare const easeInBack: TEasingFunction;
98
+ /**
99
+ * Backwards easing out
100
+ */
101
+ export declare const easeOutBack: TEasingFunction;
102
+ /**
103
+ * Backwards easing in and out
104
+ */
105
+ export declare const easeInOutBack: TEasingFunction;
106
+ /**
107
+ * Bouncing easing out
108
+ */
109
+ export declare const easeOutBounce: TEasingFunction;
110
+ /**
111
+ * Bouncing easing in
112
+ */
113
+ export declare const easeInBounce: TEasingFunction;
114
+ /**
115
+ * Bouncing easing in and out
116
+ */
117
+ export declare const easeInOutBounce: TEasingFunction;
118
+ /**
119
+ * Quadratic easing in
120
+ */
121
+ export declare const easeInQuad: TEasingFunction;
122
+ /**
123
+ * Quadratic easing out
124
+ */
125
+ export declare const easeOutQuad: TEasingFunction;
126
+ /**
127
+ * Quadratic easing in and out
128
+ */
129
+ export declare const easeInOutQuad: TEasingFunction;
130
+ //# sourceMappingURL=easing.d.ts.map
@@ -0,0 +1,87 @@
1
+ import { TColorArg } from '../../color/Color';
2
+ export type AnimationState = 'pending' | 'running' | 'completed' | 'aborted';
3
+ /**
4
+ * Callback called every frame
5
+ * @param {number | number[]} value current value of the animation.
6
+ * @param {number} valueProgress ∈ [0, 1], the current animation progress reflected on value, normalized.
7
+ * 0 is the starting value and 1 is the ending value.
8
+ * @param {number} durationProgress ∈ [0, 1], the current animation duration normalized to 1.
9
+ */
10
+ export type TOnAnimationChangeCallback<T, R = void> = (value: T, valueProgress: number, durationProgress: number) => R;
11
+ /**
12
+ * Called on each step to determine if animation should abort
13
+ * @returns truthy if animation should abort
14
+ */
15
+ export type TAbortCallback<T> = TOnAnimationChangeCallback<T, boolean>;
16
+ /**
17
+ * An easing function used to calculate the current value
18
+ * @see {@link AnimationBase['calculate']}
19
+ *
20
+ * @param timeElapsed ms elapsed since start
21
+ * @param startValue
22
+ * @param byValue
23
+ * @param duration in ms
24
+ * @returns next value
25
+ */
26
+ export type TEasingFunction<T = unknown> = T extends number[] ? (timeElapsed: number, startValue: number, byValue: number, duration: number, index: number) => number : (timeElapsed: number, startValue: number, byValue: number, duration: number) => number;
27
+ export type TAnimationBaseOptions<T> = {
28
+ /**
29
+ * Duration of the animation in ms
30
+ * @default 500
31
+ */
32
+ duration: number;
33
+ /**
34
+ * Delay to start the animation in ms
35
+ * @default 0
36
+ */
37
+ delay: number;
38
+ /**
39
+ * Easing function
40
+ * @default {defaultEasing}
41
+ */
42
+ easing: TEasingFunction<T>;
43
+ /**
44
+ * The object this animation is being performed on
45
+ */
46
+ target: unknown;
47
+ };
48
+ export type TAnimationCallbacks<T> = {
49
+ /**
50
+ * Called when the animation starts
51
+ */
52
+ onStart: VoidFunction;
53
+ /**
54
+ * Called at each frame of the animation
55
+ */
56
+ onChange: TOnAnimationChangeCallback<T>;
57
+ /**
58
+ * Called after the last frame of the animation
59
+ */
60
+ onComplete: TOnAnimationChangeCallback<T>;
61
+ /**
62
+ * Function called at each frame.
63
+ * If it returns true, abort
64
+ */
65
+ abort: TAbortCallback<T>;
66
+ };
67
+ export type TBaseAnimationOptions<T, TCallback = T, TEasing = T> = Partial<TAnimationBaseOptions<TEasing> & TAnimationCallbacks<TCallback>> & {
68
+ startValue: T;
69
+ byValue: T;
70
+ };
71
+ export type TAnimationOptions<T, TCallback = T, TEasing = T> = Partial<TAnimationBaseOptions<TEasing> & TAnimationCallbacks<TCallback> & {
72
+ /**
73
+ * Starting value(s)
74
+ * @default 0
75
+ */
76
+ startValue: T;
77
+ /**
78
+ * Ending value(s)
79
+ * @default 100
80
+ */
81
+ endValue: T;
82
+ }>;
83
+ export type ValueAnimationOptions = TAnimationOptions<number>;
84
+ export type ArrayAnimationOptions = TAnimationOptions<number[]>;
85
+ export type ColorAnimationOptions = TAnimationOptions<TColorArg, string, number[]>;
86
+ export type AnimationOptions<T extends number | number[] | TColorArg> = T extends TColorArg ? ColorAnimationOptions : T extends number[] ? ArrayAnimationOptions : ValueAnimationOptions;
87
+ //# sourceMappingURL=types.d.ts.map
@@ -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,14 @@
1
+ export declare const JSON = "json";
2
+ export declare const SVG = "svg";
3
+ export declare class ClassRegistry {
4
+ [JSON]: Map<string, any>;
5
+ [SVG]: Map<string, any>;
6
+ constructor();
7
+ getClass(classType: string): any;
8
+ setClass(classConstructor: any, classType?: string): void;
9
+ getSVGClass(SVGTagName: string): any;
10
+ setSVGClass(classConstructor: any, SVGTagName?: string): void;
11
+ }
12
+ declare const classRegistry: ClassRegistry;
13
+ export { classRegistry };
14
+ //# sourceMappingURL=class_registry.d.ts.map