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
@@ -1,398 +0,0 @@
1
- (function() {
2
-
3
- function normalize(a, c, p, s) {
4
- if (a < Math.abs(c)) {
5
- a = c;
6
- s = p / 4;
7
- }
8
- else {
9
- //handle the 0/0 case:
10
- if (c === 0 && a === 0) {
11
- s = p / (2 * Math.PI) * Math.asin(1);
12
- }
13
- else {
14
- s = p / (2 * Math.PI) * Math.asin(c / a);
15
- }
16
- }
17
- return { a: a, c: c, p: p, s: s };
18
- }
19
-
20
- function elastic(opts, t, d) {
21
- return opts.a *
22
- Math.pow(2, 10 * (t -= 1)) *
23
- Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );
24
- }
25
-
26
- /**
27
- * Cubic easing out
28
- * @memberOf fabric.util.ease
29
- */
30
- function easeOutCubic(t, b, c, d) {
31
- return c * ((t = t / d - 1) * t * t + 1) + b;
32
- }
33
-
34
- /**
35
- * Cubic easing in and out
36
- * @memberOf fabric.util.ease
37
- */
38
- function easeInOutCubic(t, b, c, d) {
39
- t /= d / 2;
40
- if (t < 1) {
41
- return c / 2 * t * t * t + b;
42
- }
43
- return c / 2 * ((t -= 2) * t * t + 2) + b;
44
- }
45
-
46
- /**
47
- * Quartic easing in
48
- * @memberOf fabric.util.ease
49
- */
50
- function easeInQuart(t, b, c, d) {
51
- return c * (t /= d) * t * t * t + b;
52
- }
53
-
54
- /**
55
- * Quartic easing out
56
- * @memberOf fabric.util.ease
57
- */
58
- function easeOutQuart(t, b, c, d) {
59
- return -c * ((t = t / d - 1) * t * t * t - 1) + b;
60
- }
61
-
62
- /**
63
- * Quartic easing in and out
64
- * @memberOf fabric.util.ease
65
- */
66
- function easeInOutQuart(t, b, c, d) {
67
- t /= d / 2;
68
- if (t < 1) {
69
- return c / 2 * t * t * t * t + b;
70
- }
71
- return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
72
- }
73
-
74
- /**
75
- * Quintic easing in
76
- * @memberOf fabric.util.ease
77
- */
78
- function easeInQuint(t, b, c, d) {
79
- return c * (t /= d) * t * t * t * t + b;
80
- }
81
-
82
- /**
83
- * Quintic easing out
84
- * @memberOf fabric.util.ease
85
- */
86
- function easeOutQuint(t, b, c, d) {
87
- return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
88
- }
89
-
90
- /**
91
- * Quintic easing in and out
92
- * @memberOf fabric.util.ease
93
- */
94
- function easeInOutQuint(t, b, c, d) {
95
- t /= d / 2;
96
- if (t < 1) {
97
- return c / 2 * t * t * t * t * t + b;
98
- }
99
- return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
100
- }
101
-
102
- /**
103
- * Sinusoidal easing in
104
- * @memberOf fabric.util.ease
105
- */
106
- function easeInSine(t, b, c, d) {
107
- return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
108
- }
109
-
110
- /**
111
- * Sinusoidal easing out
112
- * @memberOf fabric.util.ease
113
- */
114
- function easeOutSine(t, b, c, d) {
115
- return c * Math.sin(t / d * (Math.PI / 2)) + b;
116
- }
117
-
118
- /**
119
- * Sinusoidal easing in and out
120
- * @memberOf fabric.util.ease
121
- */
122
- function easeInOutSine(t, b, c, d) {
123
- return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
124
- }
125
-
126
- /**
127
- * Exponential easing in
128
- * @memberOf fabric.util.ease
129
- */
130
- function easeInExpo(t, b, c, d) {
131
- return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
132
- }
133
-
134
- /**
135
- * Exponential easing out
136
- * @memberOf fabric.util.ease
137
- */
138
- function easeOutExpo(t, b, c, d) {
139
- return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
140
- }
141
-
142
- /**
143
- * Exponential easing in and out
144
- * @memberOf fabric.util.ease
145
- */
146
- function easeInOutExpo(t, b, c, d) {
147
- if (t === 0) {
148
- return b;
149
- }
150
- if (t === d) {
151
- return b + c;
152
- }
153
- t /= d / 2;
154
- if (t < 1) {
155
- return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
156
- }
157
- return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
158
- }
159
-
160
- /**
161
- * Circular easing in
162
- * @memberOf fabric.util.ease
163
- */
164
- function easeInCirc(t, b, c, d) {
165
- return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
166
- }
167
-
168
- /**
169
- * Circular easing out
170
- * @memberOf fabric.util.ease
171
- */
172
- function easeOutCirc(t, b, c, d) {
173
- return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
174
- }
175
-
176
- /**
177
- * Circular easing in and out
178
- * @memberOf fabric.util.ease
179
- */
180
- function easeInOutCirc(t, b, c, d) {
181
- t /= d / 2;
182
- if (t < 1) {
183
- return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
184
- }
185
- return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
186
- }
187
-
188
- /**
189
- * Elastic easing in
190
- * @memberOf fabric.util.ease
191
- */
192
- function easeInElastic(t, b, c, d) {
193
- var s = 1.70158, p = 0, a = c;
194
- if (t === 0) {
195
- return b;
196
- }
197
- t /= d;
198
- if (t === 1) {
199
- return b + c;
200
- }
201
- if (!p) {
202
- p = d * 0.3;
203
- }
204
- var opts = normalize(a, c, p, s);
205
- return -elastic(opts, t, d) + b;
206
- }
207
-
208
- /**
209
- * Elastic easing out
210
- * @memberOf fabric.util.ease
211
- */
212
- function easeOutElastic(t, b, c, d) {
213
- var s = 1.70158, p = 0, a = c;
214
- if (t === 0) {
215
- return b;
216
- }
217
- t /= d;
218
- if (t === 1) {
219
- return b + c;
220
- }
221
- if (!p) {
222
- p = d * 0.3;
223
- }
224
- var opts = normalize(a, c, p, s);
225
- return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;
226
- }
227
-
228
- /**
229
- * Elastic easing in and out
230
- * @memberOf fabric.util.ease
231
- */
232
- function easeInOutElastic(t, b, c, d) {
233
- var s = 1.70158, p = 0, a = c;
234
- if (t === 0) {
235
- return b;
236
- }
237
- t /= d / 2;
238
- if (t === 2) {
239
- return b + c;
240
- }
241
- if (!p) {
242
- p = d * (0.3 * 1.5);
243
- }
244
- var opts = normalize(a, c, p, s);
245
- if (t < 1) {
246
- return -0.5 * elastic(opts, t, d) + b;
247
- }
248
- return opts.a * Math.pow(2, -10 * (t -= 1)) *
249
- Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;
250
- }
251
-
252
- /**
253
- * Backwards easing in
254
- * @memberOf fabric.util.ease
255
- */
256
- function easeInBack(t, b, c, d, s) {
257
- if (s === undefined) {
258
- s = 1.70158;
259
- }
260
- return c * (t /= d) * t * ((s + 1) * t - s) + b;
261
- }
262
-
263
- /**
264
- * Backwards easing out
265
- * @memberOf fabric.util.ease
266
- */
267
- function easeOutBack(t, b, c, d, s) {
268
- if (s === undefined) {
269
- s = 1.70158;
270
- }
271
- return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
272
- }
273
-
274
- /**
275
- * Backwards easing in and out
276
- * @memberOf fabric.util.ease
277
- */
278
- function easeInOutBack(t, b, c, d, s) {
279
- if (s === undefined) {
280
- s = 1.70158;
281
- }
282
- t /= d / 2;
283
- if (t < 1) {
284
- return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
285
- }
286
- return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
287
- }
288
-
289
- /**
290
- * Bouncing easing in
291
- * @memberOf fabric.util.ease
292
- */
293
- function easeInBounce(t, b, c, d) {
294
- return c - easeOutBounce (d - t, 0, c, d) + b;
295
- }
296
-
297
- /**
298
- * Bouncing easing out
299
- * @memberOf fabric.util.ease
300
- */
301
- function easeOutBounce(t, b, c, d) {
302
- if ((t /= d) < (1 / 2.75)) {
303
- return c * (7.5625 * t * t) + b;
304
- }
305
- else if (t < (2 / 2.75)) {
306
- return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;
307
- }
308
- else if (t < (2.5 / 2.75)) {
309
- return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;
310
- }
311
- else {
312
- return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;
313
- }
314
- }
315
-
316
- /**
317
- * Bouncing easing in and out
318
- * @memberOf fabric.util.ease
319
- */
320
- function easeInOutBounce(t, b, c, d) {
321
- if (t < d / 2) {
322
- return easeInBounce (t * 2, 0, c, d) * 0.5 + b;
323
- }
324
- return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;
325
- }
326
-
327
- /**
328
- * Easing functions
329
- * See <a href="http://gizma.com/easing/">Easing Equations by Robert Penner</a>
330
- * @namespace fabric.util.ease
331
- */
332
- fabric.util.ease = {
333
-
334
- /**
335
- * Quadratic easing in
336
- * @memberOf fabric.util.ease
337
- */
338
- easeInQuad: function(t, b, c, d) {
339
- return c * (t /= d) * t + b;
340
- },
341
-
342
- /**
343
- * Quadratic easing out
344
- * @memberOf fabric.util.ease
345
- */
346
- easeOutQuad: function(t, b, c, d) {
347
- return -c * (t /= d) * (t - 2) + b;
348
- },
349
-
350
- /**
351
- * Quadratic easing in and out
352
- * @memberOf fabric.util.ease
353
- */
354
- easeInOutQuad: function(t, b, c, d) {
355
- t /= (d / 2);
356
- if (t < 1) {
357
- return c / 2 * t * t + b;
358
- }
359
- return -c / 2 * ((--t) * (t - 2) - 1) + b;
360
- },
361
-
362
- /**
363
- * Cubic easing in
364
- * @memberOf fabric.util.ease
365
- */
366
- easeInCubic: function(t, b, c, d) {
367
- return c * (t /= d) * t * t + b;
368
- },
369
-
370
- easeOutCubic: easeOutCubic,
371
- easeInOutCubic: easeInOutCubic,
372
- easeInQuart: easeInQuart,
373
- easeOutQuart: easeOutQuart,
374
- easeInOutQuart: easeInOutQuart,
375
- easeInQuint: easeInQuint,
376
- easeOutQuint: easeOutQuint,
377
- easeInOutQuint: easeInOutQuint,
378
- easeInSine: easeInSine,
379
- easeOutSine: easeOutSine,
380
- easeInOutSine: easeInOutSine,
381
- easeInExpo: easeInExpo,
382
- easeOutExpo: easeOutExpo,
383
- easeInOutExpo: easeInOutExpo,
384
- easeInCirc: easeInCirc,
385
- easeOutCirc: easeOutCirc,
386
- easeInOutCirc: easeInOutCirc,
387
- easeInElastic: easeInElastic,
388
- easeOutElastic: easeOutElastic,
389
- easeInOutElastic: easeInOutElastic,
390
- easeInBack: easeInBack,
391
- easeOutBack: easeOutBack,
392
- easeInOutBack: easeInOutBack,
393
- easeInBounce: easeInBounce,
394
- easeOutBounce: easeOutBounce,
395
- easeInOutBounce: easeInOutBounce
396
- };
397
-
398
- })();
@@ -1,254 +0,0 @@
1
- (function () {
2
-
3
- var extend = fabric.util.object.extend,
4
- clone = fabric.util.object.clone;
5
-
6
- /**
7
- * @typedef {Object} AnimationOptions
8
- * Animation of a value or list of values.
9
- * When using lists, think of something like this:
10
- * fabric.util.animate({
11
- * startValue: [1, 2, 3],
12
- * endValue: [2, 4, 6],
13
- * onChange: function([a, b, c]) {
14
- * canvas.zoomToPoint({x: b, y: c}, a)
15
- * canvas.renderAll()
16
- * }
17
- * });
18
- * @example
19
- * @property {Function} [onChange] Callback; invoked on every value change
20
- * @property {Function} [onComplete] Callback; invoked when value change is completed
21
- * @example
22
- * // Note: startValue, endValue, and byValue must match the type
23
- * var animationOptions = { startValue: 0, endValue: 1, byValue: 0.25 }
24
- * var animationOptions = { startValue: [0, 1], endValue: [1, 2], byValue: [0.25, 0.25] }
25
- * @property {number | number[]} [startValue=0] Starting value
26
- * @property {number | number[]} [endValue=100] Ending value
27
- * @property {number | number[]} [byValue=100] Value to modify the property by
28
- * @property {Function} [easing] Easing function
29
- * @property {Number} [duration=500] Duration of change (in ms)
30
- * @property {Function} [abort] Additional function with logic. If returns true, animation aborts.
31
- *
32
- * @typedef {() => void} CancelFunction
33
- *
34
- * @typedef {Object} AnimationCurrentState
35
- * @property {number | number[]} currentValue value in range [`startValue`, `endValue`]
36
- * @property {number} completionRate value in range [0, 1]
37
- * @property {number} durationRate value in range [0, 1]
38
- *
39
- * @typedef {(AnimationOptions & AnimationCurrentState & { cancel: CancelFunction }} AnimationContext
40
- */
41
-
42
- /**
43
- * Array holding all running animations
44
- * @memberof fabric
45
- * @type {AnimationContext[]}
46
- */
47
- var RUNNING_ANIMATIONS = [];
48
- fabric.util.object.extend(RUNNING_ANIMATIONS, {
49
-
50
- /**
51
- * cancel all running animations at the next requestAnimFrame
52
- * @returns {AnimationContext[]}
53
- */
54
- cancelAll: function () {
55
- var animations = this.splice(0);
56
- animations.forEach(function (animation) {
57
- animation.cancel();
58
- });
59
- return animations;
60
- },
61
-
62
- /**
63
- * cancel all running animations attached to canvas at the next requestAnimFrame
64
- * @param {fabric.Canvas} canvas
65
- * @returns {AnimationContext[]}
66
- */
67
- cancelByCanvas: function (canvas) {
68
- if (!canvas) {
69
- return [];
70
- }
71
- var cancelled = this.filter(function (animation) {
72
- return typeof animation.target === 'object' && animation.target.canvas === canvas;
73
- });
74
- cancelled.forEach(function (animation) {
75
- animation.cancel();
76
- });
77
- return cancelled;
78
- },
79
-
80
- /**
81
- * cancel all running animations for target at the next requestAnimFrame
82
- * @param {*} target
83
- * @returns {AnimationContext[]}
84
- */
85
- cancelByTarget: function (target) {
86
- var cancelled = this.findAnimationsByTarget(target);
87
- cancelled.forEach(function (animation) {
88
- animation.cancel();
89
- });
90
- return cancelled;
91
- },
92
-
93
- /**
94
- *
95
- * @param {CancelFunction} cancelFunc the function returned by animate
96
- * @returns {number}
97
- */
98
- findAnimationIndex: function (cancelFunc) {
99
- return this.indexOf(this.findAnimation(cancelFunc));
100
- },
101
-
102
- /**
103
- *
104
- * @param {CancelFunction} cancelFunc the function returned by animate
105
- * @returns {AnimationContext | undefined} animation's options object
106
- */
107
- findAnimation: function (cancelFunc) {
108
- return this.find(function (animation) {
109
- return animation.cancel === cancelFunc;
110
- });
111
- },
112
-
113
- /**
114
- *
115
- * @param {*} target the object that is assigned to the target property of the animation context
116
- * @returns {AnimationContext[]} array of animation options object associated with target
117
- */
118
- findAnimationsByTarget: function (target) {
119
- if (!target) {
120
- return [];
121
- }
122
- return this.filter(function (animation) {
123
- return animation.target === target;
124
- });
125
- }
126
- });
127
-
128
- function noop() {
129
- return false;
130
- }
131
-
132
- function defaultEasing(t, b, c, d) {
133
- return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
134
- }
135
-
136
- /**
137
- * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.
138
- * @memberOf fabric.util
139
- * @param {AnimationOptions} [options] Animation options
140
- * @example
141
- * // Note: startValue, endValue, and byValue must match the type
142
- * fabric.util.animate({ startValue: 0, endValue: 1, byValue: 0.25 })
143
- * fabric.util.animate({ startValue: [0, 1], endValue: [1, 2], byValue: [0.25, 0.25] })
144
- * @returns {CancelFunction} cancel function
145
- */
146
- function animate(options) {
147
- options || (options = {});
148
- var cancel = false,
149
- context,
150
- removeFromRegistry = function () {
151
- var index = fabric.runningAnimations.indexOf(context);
152
- return index > -1 && fabric.runningAnimations.splice(index, 1)[0];
153
- };
154
-
155
- context = extend(clone(options), {
156
- cancel: function () {
157
- cancel = true;
158
- return removeFromRegistry();
159
- },
160
- currentValue: 'startValue' in options ? options.startValue : 0,
161
- completionRate: 0,
162
- durationRate: 0
163
- });
164
- fabric.runningAnimations.push(context);
165
-
166
- requestAnimFrame(function(timestamp) {
167
- var start = timestamp || +new Date(),
168
- duration = options.duration || 500,
169
- finish = start + duration, time,
170
- onChange = options.onChange || noop,
171
- abort = options.abort || noop,
172
- onComplete = options.onComplete || noop,
173
- easing = options.easing || defaultEasing,
174
- isMany = 'startValue' in options ? options.startValue.length > 0 : false,
175
- startValue = 'startValue' in options ? options.startValue : 0,
176
- endValue = 'endValue' in options ? options.endValue : 100,
177
- byValue = options.byValue || (isMany ? startValue.map(function(value, i) {
178
- return endValue[i] - startValue[i];
179
- }) : endValue - startValue);
180
-
181
- options.onStart && options.onStart();
182
-
183
- (function tick(ticktime) {
184
- time = ticktime || +new Date();
185
- var currentTime = time > finish ? duration : (time - start),
186
- timePerc = currentTime / duration,
187
- current = isMany ? startValue.map(function(_value, i) {
188
- return easing(currentTime, startValue[i], byValue[i], duration);
189
- }) : easing(currentTime, startValue, byValue, duration),
190
- valuePerc = isMany ? Math.abs((current[0] - startValue[0]) / byValue[0])
191
- : Math.abs((current - startValue) / byValue);
192
- // update context
193
- context.currentValue = isMany ? current.slice() : current;
194
- context.completionRate = valuePerc;
195
- context.durationRate = timePerc;
196
- if (cancel) {
197
- return;
198
- }
199
- if (abort(current, valuePerc, timePerc)) {
200
- removeFromRegistry();
201
- return;
202
- }
203
- if (time > finish) {
204
- // update context
205
- context.currentValue = isMany ? endValue.slice() : endValue;
206
- context.completionRate = 1;
207
- context.durationRate = 1;
208
- // execute callbacks
209
- onChange(isMany ? endValue.slice() : endValue, 1, 1);
210
- onComplete(endValue, 1, 1);
211
- removeFromRegistry();
212
- return;
213
- }
214
- else {
215
- onChange(current, valuePerc, timePerc);
216
- requestAnimFrame(tick);
217
- }
218
- })(start);
219
- });
220
-
221
- return context.cancel;
222
- }
223
-
224
- var _requestAnimFrame = fabric.window.requestAnimationFrame ||
225
- fabric.window.webkitRequestAnimationFrame ||
226
- fabric.window.mozRequestAnimationFrame ||
227
- fabric.window.oRequestAnimationFrame ||
228
- fabric.window.msRequestAnimationFrame ||
229
- function(callback) {
230
- return fabric.window.setTimeout(callback, 1000 / 60);
231
- };
232
-
233
- var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;
234
-
235
- /**
236
- * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/
237
- * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method
238
- * @memberOf fabric.util
239
- * @param {Function} callback Callback to invoke
240
- * @param {DOMElement} element optional Element to associate with animation
241
- */
242
- function requestAnimFrame() {
243
- return _requestAnimFrame.apply(fabric.window, arguments);
244
- }
245
-
246
- function cancelAnimFrame() {
247
- return _cancelAnimFrame.apply(fabric.window, arguments);
248
- }
249
-
250
- fabric.util.animate = animate;
251
- fabric.util.requestAnimFrame = requestAnimFrame;
252
- fabric.util.cancelAnimFrame = cancelAnimFrame;
253
- fabric.runningAnimations = RUNNING_ANIMATIONS;
254
- })();