fabric 5.3.0 → 6.0.0-beta10

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 (634) 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 +51 -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 +615 -189
  13. package/CONTRIBUTING.md +233 -59
  14. package/README.md +200 -235
  15. package/babel-jest.config.js +6 -0
  16. package/bower.json +1 -3
  17. package/dist/fabric.d.ts +54 -0
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.js +28452 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/index.min.js +1 -0
  22. package/dist/index.mjs +28385 -0
  23. package/dist/index.mjs.map +1 -0
  24. package/dist/index.node.cjs +28538 -0
  25. package/dist/index.node.cjs.map +1 -0
  26. package/dist/index.node.d.ts +20 -0
  27. package/dist/index.node.mjs +28477 -0
  28. package/dist/index.node.mjs.map +1 -0
  29. package/dist/src/ClassRegistry.d.ts +13 -0
  30. package/dist/src/Collection.d.ts +136 -0
  31. package/dist/src/CommonMethods.d.ts +32 -0
  32. package/dist/src/EventTypeDefs.d.ts +227 -0
  33. package/dist/src/Intersection.d.ts +112 -0
  34. package/dist/src/Observable.d.ts +60 -0
  35. package/dist/src/Pattern/Pattern.d.ts +99 -0
  36. package/dist/src/Pattern/index.d.ts +3 -0
  37. package/dist/src/Pattern/types.d.ts +9 -0
  38. package/dist/src/Point.d.ts +232 -0
  39. package/dist/src/Shadow.d.ts +96 -0
  40. package/dist/src/brushes/BaseBrush.d.ts +101 -0
  41. package/dist/src/brushes/CircleBrush.d.ts +44 -0
  42. package/dist/src/brushes/CircleBrush.test.d.ts +2 -0
  43. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  44. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  45. package/dist/src/brushes/SprayBrush.d.ts +74 -0
  46. package/dist/src/brushes/typedefs.d.ts +18 -0
  47. package/dist/src/cache.d.ts +47 -0
  48. package/dist/src/canvas/Canvas.d.ts +364 -0
  49. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +29 -0
  50. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +29 -0
  51. package/dist/src/canvas/DOMManagers/util.d.ts +24 -0
  52. package/dist/src/canvas/DOMManagers/util.spec.d.ts +2 -0
  53. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  54. package/dist/src/canvas/StaticCanvas.d.ts +747 -0
  55. package/dist/src/canvas/TextEditingManager.d.ts +21 -0
  56. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  57. package/dist/src/color/Color.d.ts +152 -0
  58. package/dist/src/color/color_map.d.ts +155 -0
  59. package/dist/src/color/constants.d.ts +104 -0
  60. package/dist/src/color/typedefs.d.ts +16 -0
  61. package/dist/src/color/util.d.ts +27 -0
  62. package/dist/src/config.d.ts +115 -0
  63. package/dist/src/constants.d.ts +21 -0
  64. package/dist/src/controls/Control.d.ts +229 -0
  65. package/dist/src/controls/changeWidth.d.ts +13 -0
  66. package/dist/src/controls/commonControls.d.ts +28 -0
  67. package/dist/src/controls/controlRendering.d.ts +29 -0
  68. package/dist/src/controls/drag.d.ts +12 -0
  69. package/dist/src/controls/fireEvent.d.ts +3 -0
  70. package/dist/src/controls/index.d.ts +13 -0
  71. package/dist/src/controls/polyControl.d.ts +5 -0
  72. package/dist/src/controls/rotate.d.ts +12 -0
  73. package/dist/src/controls/scale.d.ts +47 -0
  74. package/dist/src/controls/scaleSkew.d.ts +39 -0
  75. package/dist/src/controls/skew.d.ts +33 -0
  76. package/dist/src/controls/util.d.ts +41 -0
  77. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  78. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  79. package/dist/src/env/browser.d.ts +3 -0
  80. package/dist/src/env/index.d.ts +28 -0
  81. package/dist/src/env/node.d.ts +6 -0
  82. package/dist/src/env/types.d.ts +15 -0
  83. package/dist/src/filters/BaseFilter.d.ts +160 -0
  84. package/dist/src/filters/BlendColor.d.ts +81 -0
  85. package/dist/src/filters/BlendImage.d.ts +93 -0
  86. package/dist/src/filters/Blur.d.ts +52 -0
  87. package/dist/src/filters/Boilerplate.d.ts +48 -0
  88. package/dist/src/filters/Brightness.d.ts +48 -0
  89. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  90. package/dist/src/filters/ColorMatrix.d.ts +64 -0
  91. package/dist/src/filters/ColorMatrixFilters.d.ts +537 -0
  92. package/dist/src/filters/Composed.d.ts +46 -0
  93. package/dist/src/filters/Contrast.d.ts +46 -0
  94. package/dist/src/filters/Convolute.d.ts +83 -0
  95. package/dist/src/filters/FilterBackend.d.ts +15 -0
  96. package/dist/src/filters/GLProbes/GLProbe.d.ts +7 -0
  97. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
  98. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  99. package/dist/src/filters/Gamma.d.ts +55 -0
  100. package/dist/src/filters/Grayscale.d.ts +47 -0
  101. package/dist/src/filters/HueRotation.d.ts +25 -0
  102. package/dist/src/filters/Invert.d.ts +56 -0
  103. package/dist/src/filters/Noise.d.ts +55 -0
  104. package/dist/src/filters/Pixelate.d.ts +45 -0
  105. package/dist/src/filters/RemoveColor.d.ts +64 -0
  106. package/dist/src/filters/Resize.d.ts +137 -0
  107. package/dist/src/filters/Saturation.d.ts +49 -0
  108. package/dist/src/filters/Vibrance.d.ts +49 -0
  109. package/dist/src/filters/WebGLFilterBackend.d.ts +128 -0
  110. package/dist/src/filters/filters.d.ts +21 -0
  111. package/dist/src/filters/index.d.ts +7 -0
  112. package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
  113. package/dist/src/filters/shaders/blendColor.d.ts +13 -0
  114. package/dist/src/filters/shaders/blendImage.d.ts +3 -0
  115. package/dist/src/filters/shaders/blur.d.ts +2 -0
  116. package/dist/src/filters/shaders/brightness.d.ts +2 -0
  117. package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
  118. package/dist/src/filters/shaders/constrast.d.ts +2 -0
  119. package/dist/src/filters/shaders/convolute.d.ts +11 -0
  120. package/dist/src/filters/shaders/gamma.d.ts +2 -0
  121. package/dist/src/filters/shaders/grayscale.d.ts +3 -0
  122. package/dist/src/filters/shaders/invert.d.ts +2 -0
  123. package/dist/src/filters/shaders/noise.d.ts +2 -0
  124. package/dist/src/filters/shaders/pixelate.d.ts +2 -0
  125. package/dist/src/filters/shaders/removeColor.d.ts +2 -0
  126. package/dist/src/filters/shaders/saturation.d.ts +2 -0
  127. package/dist/src/filters/shaders/vibrance.d.ts +2 -0
  128. package/dist/src/filters/typedefs.d.ts +48 -0
  129. package/dist/src/filters/utils.d.ts +3 -0
  130. package/dist/src/gradient/Gradient.d.ts +150 -0
  131. package/dist/src/gradient/constants.d.ts +15 -0
  132. package/dist/src/gradient/index.d.ts +3 -0
  133. package/dist/src/gradient/parser/index.d.ts +4 -0
  134. package/dist/src/gradient/parser/misc.d.ts +4 -0
  135. package/dist/src/gradient/parser/parseColorStops.d.ts +3 -0
  136. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  137. package/dist/src/gradient/typedefs.d.ts +93 -0
  138. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  139. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  140. package/dist/src/parkinglot/straighten.d.ts +2 -0
  141. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  142. package/dist/src/parser/attributes.d.ts +6 -0
  143. package/dist/src/parser/constants.d.ts +53 -0
  144. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  145. package/dist/src/parser/elementById.d.ts +6 -0
  146. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  147. package/dist/src/parser/elements_parser.d.ts +3 -0
  148. package/dist/src/parser/getCSSRules.d.ts +7 -0
  149. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  150. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  151. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  152. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  153. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  154. package/dist/src/parser/index.d.ts +9 -0
  155. package/dist/src/parser/loadSVGFromString.d.ts +18 -0
  156. package/dist/src/parser/loadSVGFromURL.d.ts +19 -0
  157. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  158. package/dist/src/parser/normalizeValue.d.ts +2 -0
  159. package/dist/src/parser/parseAttributes.d.ts +9 -0
  160. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  161. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  162. package/dist/src/parser/parseSVGDocument.d.ts +23 -0
  163. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  164. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  165. package/dist/src/parser/parseStyleString.d.ts +2 -0
  166. package/dist/src/parser/parseTransformAttribute.d.ts +11 -0
  167. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  168. package/dist/src/parser/percent.d.ts +9 -0
  169. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  170. package/dist/src/parser/selectorMatches.d.ts +2 -0
  171. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  172. package/dist/src/parser/typedefs.d.ts +9 -0
  173. package/dist/src/shapes/ActiveSelection.d.ts +83 -0
  174. package/dist/src/shapes/Circle.d.ts +99 -0
  175. package/dist/src/shapes/Ellipse.d.ts +84 -0
  176. package/dist/src/shapes/Group.d.ts +407 -0
  177. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  178. package/dist/src/shapes/IText/IText.d.ts +336 -0
  179. package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
  180. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +73 -0
  181. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
  182. package/dist/src/shapes/IText/constants.d.ts +13 -0
  183. package/dist/src/shapes/Image.d.ts +309 -0
  184. package/dist/src/shapes/Line.d.ts +121 -0
  185. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  186. package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
  187. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  188. package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
  189. package/dist/src/shapes/Object/Object.d.ts +599 -0
  190. package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
  191. package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
  192. package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
  193. package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
  194. package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
  195. package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
  196. package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
  197. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
  198. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  199. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  200. package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
  201. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  202. package/dist/src/shapes/Object/types/index.d.ts +6 -0
  203. package/dist/src/shapes/Path.d.ts +214 -0
  204. package/dist/src/shapes/Polygon.d.ts +10 -0
  205. package/dist/src/shapes/Polyline.d.ts +147 -0
  206. package/dist/src/shapes/Rect.d.ts +82 -0
  207. package/dist/src/shapes/Text/StyledText.d.ts +123 -0
  208. package/dist/src/shapes/Text/Text.d.ts +688 -0
  209. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  210. package/dist/src/shapes/Text/constants.d.ts +13 -0
  211. package/dist/src/shapes/Textbox.d.ts +204 -0
  212. package/dist/src/shapes/Triangle.d.ts +26 -0
  213. package/dist/src/typedefs.d.ts +96 -0
  214. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  215. package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  216. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  217. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  218. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  219. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  220. package/dist/src/util/animation/animate.d.ts +37 -0
  221. package/dist/src/util/animation/easing.d.ts +130 -0
  222. package/dist/src/util/animation/index.d.ts +3 -0
  223. package/dist/src/util/animation/types.d.ts +87 -0
  224. package/dist/src/util/applyMixins.d.ts +8 -0
  225. package/dist/src/util/dom_event.d.ts +5 -0
  226. package/dist/src/util/dom_misc.d.ts +12 -0
  227. package/dist/src/util/dom_request.d.ts +14 -0
  228. package/dist/src/util/dom_style.d.ts +7 -0
  229. package/dist/src/util/index.d.ts +36 -0
  230. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +2 -0
  231. package/dist/src/util/internals/cleanupSvgAttribute.test.d.ts +2 -0
  232. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  233. package/dist/src/util/internals/cloneDeep.test.d.ts +2 -0
  234. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  235. package/dist/src/util/internals/getRandomInt.test.d.ts +2 -0
  236. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  237. package/dist/src/util/internals/index.d.ts +4 -0
  238. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  239. package/dist/src/util/internals/uid.d.ts +2 -0
  240. package/dist/src/util/lang_string.d.ts +22 -0
  241. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  242. package/dist/src/util/misc/capValue.d.ts +2 -0
  243. package/dist/src/util/misc/cos.d.ts +10 -0
  244. package/dist/src/util/misc/dom.d.ts +28 -0
  245. package/dist/src/util/misc/findScaleTo.d.ts +20 -0
  246. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  247. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  248. package/dist/src/util/misc/matrix.d.ts +168 -0
  249. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  250. package/dist/src/util/misc/objectEnlive.d.ts +41 -0
  251. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  252. package/dist/src/util/misc/pick.d.ts +9 -0
  253. package/dist/src/util/misc/planeChange.d.ts +81 -0
  254. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +52 -0
  255. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +82 -0
  256. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +26 -0
  257. package/dist/src/util/misc/projectStroke/index.d.ts +12 -0
  258. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  259. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  260. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  261. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  262. package/dist/src/util/misc/sin.d.ts +10 -0
  263. package/dist/src/util/misc/svgParsing.d.ts +45 -0
  264. package/dist/src/util/misc/textStyles.d.ts +32 -0
  265. package/dist/src/util/misc/toFixed.d.ts +8 -0
  266. package/dist/src/util/misc/vectors.d.ts +58 -0
  267. package/dist/src/util/path/index.d.ts +96 -0
  268. package/dist/src/util/path/regex.d.ts +2 -0
  269. package/dist/src/util/path/typechecks.d.ts +24 -0
  270. package/dist/src/util/path/typedefs.d.ts +220 -0
  271. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  272. package/dist/src/util/typeAssertions.d.ts +19 -0
  273. package/e2e/site/index.html +25 -0
  274. package/e2e/utils/objects.ts +36 -0
  275. package/fabric.ts +72 -0
  276. package/index.node.ts +43 -0
  277. package/index.ts +1 -0
  278. package/jest.config.js +194 -0
  279. package/lib/aligning_guidelines.js +2 -2
  280. package/package.json +110 -40
  281. package/playwright.config.ts +64 -0
  282. package/publish.js +0 -26
  283. package/rollup.config.mjs +99 -0
  284. package/rollup.test.config.js +24 -0
  285. package/scripts/build.mjs +50 -0
  286. package/scripts/buildLock.mjs +115 -0
  287. package/scripts/buildReporter.mjs +15 -0
  288. package/scripts/buildStats.mjs +139 -0
  289. package/scripts/dirname.mjs +14 -0
  290. package/scripts/git.mjs +36 -0
  291. package/scripts/index.mjs +564 -0
  292. package/scripts/sandbox.mjs +149 -0
  293. package/src/ClassRegistry.ts +56 -0
  294. package/src/Collection.ts +346 -0
  295. package/src/CommonMethods.ts +63 -0
  296. package/src/EventTypeDefs.ts +298 -0
  297. package/src/Intersection.ts +302 -0
  298. package/src/Observable.ts +181 -0
  299. package/src/Pattern/Pattern.ts +207 -0
  300. package/src/Pattern/index.ts +2 -0
  301. package/src/Pattern/types.ts +17 -0
  302. package/src/Point.ts +388 -0
  303. package/src/Shadow.ts +214 -0
  304. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +63 -42
  305. package/src/brushes/CircleBrush.test.ts +11 -0
  306. package/src/brushes/CircleBrush.ts +140 -0
  307. package/src/brushes/PatternBrush.ts +70 -0
  308. package/src/brushes/PencilBrush.ts +300 -0
  309. package/src/brushes/SprayBrush.ts +214 -0
  310. package/src/brushes/typedefs.ts +18 -0
  311. package/src/cache.ts +90 -0
  312. package/src/canvas/Canvas.ts +1598 -0
  313. package/src/canvas/DOMManagers/CanvasDOMManager.ts +124 -0
  314. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +80 -0
  315. package/src/canvas/DOMManagers/util.spec.ts +26 -0
  316. package/src/canvas/DOMManagers/util.ts +98 -0
  317. package/src/canvas/SelectableCanvas.ts +1506 -0
  318. package/src/canvas/StaticCanvas.ts +1634 -0
  319. package/src/canvas/TextEditingManager.ts +70 -0
  320. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  321. package/src/color/Color.ts +320 -0
  322. package/src/color/color_map.ts +154 -0
  323. package/src/color/constants.ts +107 -0
  324. package/src/color/typedefs.ts +18 -0
  325. package/src/color/util.ts +93 -0
  326. package/src/config.ts +159 -0
  327. package/src/constants.ts +29 -0
  328. package/src/controls/Control.ts +385 -0
  329. package/src/controls/changeWidth.ts +53 -0
  330. package/src/controls/commonControls.ts +105 -0
  331. package/src/controls/controlRendering.ts +138 -0
  332. package/src/controls/drag.ts +32 -0
  333. package/src/controls/fireEvent.ts +18 -0
  334. package/src/controls/index.ts +22 -0
  335. package/src/controls/polyControl.ts +135 -0
  336. package/src/controls/rotate.ts +87 -0
  337. package/src/controls/scale.ts +277 -0
  338. package/src/controls/scaleSkew.ts +92 -0
  339. package/src/controls/skew.ts +243 -0
  340. package/src/controls/util.ts +155 -0
  341. package/src/controls/wrapWithFireEvent.ts +25 -0
  342. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  343. package/src/env/browser.ts +32 -0
  344. package/src/env/index.ts +38 -0
  345. package/src/env/node.ts +58 -0
  346. package/src/env/types.ts +15 -0
  347. package/src/filters/{base_filter.class.js → BaseFilter.ts} +203 -151
  348. package/src/filters/BlendColor.ts +219 -0
  349. package/src/filters/BlendImage.ts +230 -0
  350. package/src/filters/Blur.ts +181 -0
  351. package/src/filters/Boilerplate.ts +94 -0
  352. package/src/filters/Brightness.ts +85 -0
  353. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  354. package/src/filters/ColorMatrix.ts +147 -0
  355. package/src/filters/ColorMatrixFilters.ts +79 -0
  356. package/src/filters/Composed.ts +78 -0
  357. package/src/filters/Contrast.ts +84 -0
  358. package/src/filters/Convolute.ts +186 -0
  359. package/src/filters/FilterBackend.ts +38 -0
  360. package/src/filters/GLProbes/GLProbe.ts +7 -0
  361. package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
  362. package/src/filters/GLProbes/WebGLProbe.ts +47 -0
  363. package/src/filters/Gamma.ts +112 -0
  364. package/src/filters/Grayscale.ts +104 -0
  365. package/src/filters/HueRotation.ts +64 -0
  366. package/src/filters/Invert.ts +101 -0
  367. package/src/filters/Noise.ts +96 -0
  368. package/src/filters/Pixelate.ts +98 -0
  369. package/src/filters/RemoveColor.ts +137 -0
  370. package/src/filters/Resize.ts +540 -0
  371. package/src/filters/Saturation.ts +89 -0
  372. package/src/filters/Vibrance.ts +90 -0
  373. package/src/filters/WebGLFilterBackend.ts +456 -0
  374. package/src/filters/filters.ts +28 -0
  375. package/src/filters/index.ts +12 -0
  376. package/src/filters/shaders/baseFilter.ts +17 -0
  377. package/src/filters/shaders/blendColor.ts +33 -0
  378. package/src/filters/shaders/blendImage.ts +32 -0
  379. package/src/filters/shaders/blur.ts +24 -0
  380. package/src/filters/shaders/brightness.ts +11 -0
  381. package/src/filters/shaders/colorMatrix.ts +12 -0
  382. package/src/filters/shaders/constrast.ts +11 -0
  383. package/src/filters/shaders/convolute.ts +154 -0
  384. package/src/filters/shaders/gamma.ts +15 -0
  385. package/src/filters/shaders/grayscale.ts +36 -0
  386. package/src/filters/shaders/invert.ts +19 -0
  387. package/src/filters/shaders/noise.ts +16 -0
  388. package/src/filters/shaders/pixelate.ts +19 -0
  389. package/src/filters/shaders/removeColor.ts +13 -0
  390. package/src/filters/shaders/saturation.ts +15 -0
  391. package/src/filters/shaders/vibrance.ts +16 -0
  392. package/src/filters/typedefs.ts +59 -0
  393. package/src/filters/utils.ts +7 -0
  394. package/src/gradient/Gradient.ts +409 -0
  395. package/src/gradient/constants.ts +12 -0
  396. package/src/gradient/index.ts +2 -0
  397. package/src/gradient/parser/index.ts +3 -0
  398. package/src/gradient/parser/misc.ts +13 -0
  399. package/src/gradient/parser/parseColorStops.ts +56 -0
  400. package/src/gradient/parser/parseCoords.ts +73 -0
  401. package/src/gradient/typedefs.ts +104 -0
  402. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  403. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  404. package/src/parkinglot/straighten.ts +58 -0
  405. package/src/parser/applyViewboxTransform.ts +158 -0
  406. package/src/parser/attributes.ts +25 -0
  407. package/src/parser/constants.ts +116 -0
  408. package/src/parser/doesSomeParentMatch.ts +18 -0
  409. package/src/parser/elementById.ts +21 -0
  410. package/src/parser/elementMatchesRule.ts +16 -0
  411. package/src/parser/elements_parser.ts +158 -0
  412. package/src/parser/getCSSRules.ts +61 -0
  413. package/src/parser/getGlobalStylesForElement.ts +19 -0
  414. package/src/parser/getGradientDefs.ts +31 -0
  415. package/src/parser/getMultipleNodes.ts +15 -0
  416. package/src/parser/getSvgRegex.ts +3 -0
  417. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  418. package/src/parser/index.ts +8 -0
  419. package/src/parser/loadSVGFromString.ts +29 -0
  420. package/src/parser/loadSVGFromURL.ts +47 -0
  421. package/src/parser/normalizeAttr.ts +10 -0
  422. package/src/parser/normalizeValue.ts +64 -0
  423. package/src/parser/parseAttributes.ts +90 -0
  424. package/src/parser/parseFontDeclaration.ts +44 -0
  425. package/src/parser/parsePointsAttribute.ts +34 -0
  426. package/src/parser/parseSVGDocument.ts +118 -0
  427. package/src/parser/parseStyleAttribute.ts +27 -0
  428. package/src/parser/parseStyleObject.ts +15 -0
  429. package/src/parser/parseStyleString.ts +16 -0
  430. package/src/parser/parseTransformAttribute.ts +94 -0
  431. package/src/parser/parseUseDirectives.ts +78 -0
  432. package/src/parser/percent.ts +27 -0
  433. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  434. package/src/parser/selectorMatches.ts +25 -0
  435. package/src/parser/setStrokeFillOpacity.ts +40 -0
  436. package/src/parser/typedefs.ts +13 -0
  437. package/src/shapes/ActiveSelection.ts +192 -0
  438. package/src/shapes/Circle.ts +236 -0
  439. package/src/shapes/Ellipse.ts +177 -0
  440. package/src/shapes/Group.ts +1103 -0
  441. package/src/shapes/IText/DraggableTextDelegate.ts +385 -0
  442. package/src/shapes/IText/IText.ts +696 -0
  443. package/src/shapes/IText/ITextBehavior.ts +1073 -0
  444. package/src/shapes/IText/ITextClickBehavior.ts +292 -0
  445. package/src/shapes/IText/ITextKeyBehavior.ts +675 -0
  446. package/src/shapes/IText/constants.ts +53 -0
  447. package/src/shapes/Image.ts +848 -0
  448. package/src/shapes/Line.ts +285 -0
  449. package/src/shapes/Object/AnimatableObject.ts +103 -0
  450. package/src/shapes/Object/FabricObject.ts +29 -0
  451. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +278 -0
  452. package/src/shapes/Object/InteractiveObject.ts +669 -0
  453. package/src/shapes/Object/Object.ts +1589 -0
  454. package/src/shapes/Object/ObjectGeometry.ts +814 -0
  455. package/src/shapes/Object/ObjectOrigin.ts +277 -0
  456. package/src/shapes/Object/StackedObject.ts +206 -0
  457. package/src/shapes/Object/defaultValues.ts +110 -0
  458. package/src/shapes/Object/types/BaseProps.ts +96 -0
  459. package/src/shapes/Object/types/BorderProps.ts +40 -0
  460. package/src/shapes/Object/types/ControlProps.ts +69 -0
  461. package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
  462. package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
  463. package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
  464. package/src/shapes/Object/types/ObjectProps.ts +49 -0
  465. package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
  466. package/src/shapes/Object/types/index.ts +8 -0
  467. package/src/shapes/Path.ts +434 -0
  468. package/src/shapes/Polygon.ts +22 -0
  469. package/src/shapes/Polyline.ts +364 -0
  470. package/src/shapes/Rect.ts +230 -0
  471. package/src/shapes/Text/StyledText.ts +323 -0
  472. package/src/shapes/Text/Text.ts +1891 -0
  473. package/src/shapes/Text/TextSVGExportMixin.ts +289 -0
  474. package/src/shapes/Text/constants.ts +111 -0
  475. package/src/shapes/Textbox.ts +526 -0
  476. package/src/shapes/Triangle.ts +62 -0
  477. package/src/typedefs.ts +121 -0
  478. package/src/util/animation/AnimationBase.ts +166 -0
  479. package/src/util/animation/AnimationFrameProvider.ts +9 -0
  480. package/src/util/animation/AnimationRegistry.ts +58 -0
  481. package/src/util/animation/ArrayAnimation.ts +27 -0
  482. package/src/util/animation/ColorAnimation.ts +74 -0
  483. package/src/util/animation/ValueAnimation.ts +29 -0
  484. package/src/util/animation/animate.ts +74 -0
  485. package/src/util/animation/easing.ts +327 -0
  486. package/src/util/animation/index.ts +2 -0
  487. package/src/util/animation/types.ts +136 -0
  488. package/src/util/applyMixins.ts +22 -0
  489. package/src/util/dom_event.ts +28 -0
  490. package/src/util/dom_misc.ts +44 -0
  491. package/src/util/dom_request.ts +64 -0
  492. package/src/util/dom_style.ts +20 -0
  493. package/src/util/index.ts +106 -0
  494. package/src/util/internals/cleanupSvgAttribute.test.ts +16 -0
  495. package/src/util/internals/cleanupSvgAttribute.ts +8 -0
  496. package/src/util/internals/cloneDeep.test.ts +16 -0
  497. package/src/util/internals/cloneDeep.ts +2 -0
  498. package/src/util/internals/getRandomInt.test.ts +33 -0
  499. package/src/util/internals/getRandomInt.ts +8 -0
  500. package/src/util/internals/ifNaN.ts +9 -0
  501. package/src/util/internals/index.ts +3 -0
  502. package/src/util/internals/removeFromArray.ts +14 -0
  503. package/src/util/internals/uid.ts +3 -0
  504. package/src/util/lang_string.ts +79 -0
  505. package/src/util/misc/boundingBoxFromPoints.ts +38 -0
  506. package/src/util/misc/capValue.ts +2 -0
  507. package/src/util/misc/cos.ts +24 -0
  508. package/src/util/misc/dom.ts +55 -0
  509. package/src/util/misc/findScaleTo.ts +29 -0
  510. package/src/util/misc/groupSVGElements.ts +15 -0
  511. package/src/util/misc/isTransparent.ts +28 -0
  512. package/src/util/misc/matrix.ts +313 -0
  513. package/src/util/misc/mergeClipPaths.ts +40 -0
  514. package/src/util/misc/objectEnlive.ts +174 -0
  515. package/src/util/misc/objectTransforms.ts +130 -0
  516. package/src/util/misc/pick.ts +29 -0
  517. package/src/util/misc/planeChange.ts +127 -0
  518. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +113 -0
  519. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +227 -0
  520. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +76 -0
  521. package/src/util/misc/projectStroke/index.ts +55 -0
  522. package/src/util/misc/projectStroke/types.ts +24 -0
  523. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  524. package/src/util/misc/resolveOrigin.ts +22 -0
  525. package/src/util/misc/rotatePoint.ts +15 -0
  526. package/src/util/misc/sin.ts +26 -0
  527. package/src/util/misc/svgParsing.ts +171 -0
  528. package/src/util/misc/textStyles.ts +132 -0
  529. package/src/util/misc/toFixed.ts +8 -0
  530. package/src/util/misc/vectors.ts +83 -0
  531. package/src/util/path/index.ts +1039 -0
  532. package/src/util/path/regex.ts +39 -0
  533. package/src/util/path/typechecks.ts +145 -0
  534. package/src/util/path/typedefs.ts +305 -0
  535. package/src/util/transform_matrix_removal.ts +61 -0
  536. package/src/util/typeAssertions.ts +78 -0
  537. package/tsconfig.json +106 -0
  538. package/HEADER.js +0 -203
  539. package/build.js +0 -287
  540. package/dist/fabric.js +0 -31187
  541. package/dist/fabric.min.js +0 -1
  542. package/old-travis-reference.yml +0 -97
  543. package/src/brushes/circle_brush.class.js +0 -144
  544. package/src/brushes/pattern_brush.class.js +0 -61
  545. package/src/brushes/pencil_brush.class.js +0 -310
  546. package/src/brushes/spray_brush.class.js +0 -219
  547. package/src/canvas.class.js +0 -1312
  548. package/src/color.class.js +0 -636
  549. package/src/control.class.js +0 -339
  550. package/src/controls.actions.js +0 -740
  551. package/src/controls.render.js +0 -99
  552. package/src/elements_parser.js +0 -152
  553. package/src/filters/2d_backend.class.js +0 -65
  554. package/src/filters/blendcolor_filter.class.js +0 -251
  555. package/src/filters/blendimage_filter.class.js +0 -247
  556. package/src/filters/blur_filter.class.js +0 -217
  557. package/src/filters/brightness_filter.class.js +0 -113
  558. package/src/filters/colormatrix_filter.class.js +0 -159
  559. package/src/filters/composed_filter.class.js +0 -72
  560. package/src/filters/contrast_filter.class.js +0 -113
  561. package/src/filters/convolute_filter.class.js +0 -352
  562. package/src/filters/filter_boilerplate.js +0 -111
  563. package/src/filters/filter_generator.js +0 -85
  564. package/src/filters/gamma_filter.class.js +0 -136
  565. package/src/filters/grayscale_filter.class.js +0 -154
  566. package/src/filters/hue_rotation.class.js +0 -107
  567. package/src/filters/invert_filter.class.js +0 -111
  568. package/src/filters/noise_filter.class.js +0 -134
  569. package/src/filters/pixelate_filter.class.js +0 -137
  570. package/src/filters/removecolor_filter.class.js +0 -173
  571. package/src/filters/resize_filter.class.js +0 -490
  572. package/src/filters/saturate_filter.class.js +0 -119
  573. package/src/filters/vibrance_filter.class.js +0 -122
  574. package/src/filters/webgl_backend.class.js +0 -396
  575. package/src/globalFabric.js +0 -4
  576. package/src/gradient.class.js +0 -490
  577. package/src/intersection.class.js +0 -172
  578. package/src/log.js +0 -11
  579. package/src/mixins/animation.mixin.js +0 -231
  580. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  581. package/src/mixins/canvas_events.mixin.js +0 -974
  582. package/src/mixins/canvas_gestures.mixin.js +0 -149
  583. package/src/mixins/canvas_grouping.mixin.js +0 -177
  584. package/src/mixins/canvas_serialization.mixin.js +0 -228
  585. package/src/mixins/collection.mixin.js +0 -170
  586. package/src/mixins/default_controls.js +0 -114
  587. package/src/mixins/itext.svg_export.js +0 -241
  588. package/src/mixins/itext_behavior.mixin.js +0 -940
  589. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  590. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  591. package/src/mixins/object.svg_export.js +0 -258
  592. package/src/mixins/object_geometry.mixin.js +0 -683
  593. package/src/mixins/object_interactivity.mixin.js +0 -314
  594. package/src/mixins/object_origin.mixin.js +0 -255
  595. package/src/mixins/object_stacking.mixin.js +0 -80
  596. package/src/mixins/object_straightening.mixin.js +0 -80
  597. package/src/mixins/observable.mixin.js +0 -141
  598. package/src/mixins/shared_methods.mixin.js +0 -94
  599. package/src/mixins/stateful.mixin.js +0 -107
  600. package/src/mixins/text_style.mixin.js +0 -324
  601. package/src/parser.js +0 -1090
  602. package/src/pattern.class.js +0 -189
  603. package/src/point.class.js +0 -337
  604. package/src/shadow.class.js +0 -195
  605. package/src/shapes/active_selection.class.js +0 -155
  606. package/src/shapes/circle.class.js +0 -210
  607. package/src/shapes/ellipse.class.js +0 -181
  608. package/src/shapes/group.class.js +0 -593
  609. package/src/shapes/image.class.js +0 -764
  610. package/src/shapes/itext.class.js +0 -526
  611. package/src/shapes/line.class.js +0 -324
  612. package/src/shapes/object.class.js +0 -2008
  613. package/src/shapes/path.class.js +0 -384
  614. package/src/shapes/polygon.class.js +0 -81
  615. package/src/shapes/polyline.class.js +0 -268
  616. package/src/shapes/rect.class.js +0 -187
  617. package/src/shapes/text.class.js +0 -1696
  618. package/src/shapes/textbox.class.js +0 -461
  619. package/src/shapes/triangle.class.js +0 -93
  620. package/src/static_canvas.class.js +0 -1881
  621. package/src/util/anim_ease.js +0 -398
  622. package/src/util/animate.js +0 -254
  623. package/src/util/animate_color.js +0 -74
  624. package/src/util/dom_event.js +0 -50
  625. package/src/util/dom_misc.js +0 -300
  626. package/src/util/dom_request.js +0 -54
  627. package/src/util/dom_style.js +0 -70
  628. package/src/util/lang_array.js +0 -94
  629. package/src/util/lang_class.js +0 -115
  630. package/src/util/lang_object.js +0 -75
  631. package/src/util/lang_string.js +0 -110
  632. package/src/util/misc.js +0 -1330
  633. package/src/util/named_accessors.mixin.js +0 -428
  634. 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
- })();