fabric 5.3.0 → 6.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -1,314 +0,0 @@
1
- (function() {
2
-
3
- var degreesToRadians = fabric.util.degreesToRadians;
4
-
5
- fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {
6
- /**
7
- * Determines which corner has been clicked
8
- * @private
9
- * @param {Object} pointer The pointer indicating the mouse position
10
- * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found
11
- */
12
- _findTargetCorner: function(pointer, forTouch) {
13
- // objects in group, anykind, are not self modificable,
14
- // must not return an hovered corner.
15
- if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {
16
- return false;
17
- }
18
-
19
- var ex = pointer.x,
20
- ey = pointer.y,
21
- xPoints,
22
- lines, keys = Object.keys(this.oCoords),
23
- j = keys.length - 1, i;
24
- this.__corner = 0;
25
-
26
- // cycle in reverse order so we pick first the one on top
27
- for (; j >= 0; j--) {
28
- i = keys[j];
29
- if (!this.isControlVisible(i)) {
30
- continue;
31
- }
32
-
33
- lines = this._getImageLines(forTouch ? this.oCoords[i].touchCorner : this.oCoords[i].corner);
34
- // // debugging
35
- //
36
- // this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);
37
- // this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);
38
- //
39
- // this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);
40
- // this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);
41
- //
42
- // this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);
43
- // this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);
44
- //
45
- // this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);
46
- // this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);
47
-
48
- xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);
49
- if (xPoints !== 0 && xPoints % 2 === 1) {
50
- this.__corner = i;
51
- return i;
52
- }
53
- }
54
- return false;
55
- },
56
-
57
- /**
58
- * Calls a function for each control. The function gets called,
59
- * with the control, the object that is calling the iterator and the control's key
60
- * @param {Function} fn function to iterate over the controls over
61
- */
62
- forEachControl: function(fn) {
63
- for (var i in this.controls) {
64
- fn(this.controls[i], i, this);
65
- };
66
- },
67
-
68
- /**
69
- * Sets the coordinates of the draggable boxes in the corners of
70
- * the image used to scale/rotate it.
71
- * note: if we would switch to ROUND corner area, all of this would disappear.
72
- * everything would resolve to a single point and a pythagorean theorem for the distance
73
- * @private
74
- */
75
- _setCornerCoords: function() {
76
- var coords = this.oCoords;
77
-
78
- for (var control in coords) {
79
- var controlObject = this.controls[control];
80
- coords[control].corner = controlObject.calcCornerCoords(
81
- this.angle, this.cornerSize, coords[control].x, coords[control].y, false);
82
- coords[control].touchCorner = controlObject.calcCornerCoords(
83
- this.angle, this.touchCornerSize, coords[control].x, coords[control].y, true);
84
- }
85
- },
86
-
87
- /**
88
- * Draws a colored layer behind the object, inside its selection borders.
89
- * Requires public options: padding, selectionBackgroundColor
90
- * this function is called when the context is transformed
91
- * has checks to be skipped when the object is on a staticCanvas
92
- * @param {CanvasRenderingContext2D} ctx Context to draw on
93
- * @return {fabric.Object} thisArg
94
- * @chainable
95
- */
96
- drawSelectionBackground: function(ctx) {
97
- if (!this.selectionBackgroundColor ||
98
- (this.canvas && !this.canvas.interactive) ||
99
- (this.canvas && this.canvas._activeObject !== this)
100
- ) {
101
- return this;
102
- }
103
- ctx.save();
104
- var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),
105
- vpt = this.canvas.viewportTransform;
106
- ctx.translate(center.x, center.y);
107
- ctx.scale(1 / vpt[0], 1 / vpt[3]);
108
- ctx.rotate(degreesToRadians(this.angle));
109
- ctx.fillStyle = this.selectionBackgroundColor;
110
- ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);
111
- ctx.restore();
112
- return this;
113
- },
114
-
115
- /**
116
- * Draws borders of an object's bounding box.
117
- * Requires public properties: width, height
118
- * Requires public options: padding, borderColor
119
- * @param {CanvasRenderingContext2D} ctx Context to draw on
120
- * @param {Object} styleOverride object to override the object style
121
- * @return {fabric.Object} thisArg
122
- * @chainable
123
- */
124
- drawBorders: function(ctx, styleOverride) {
125
- styleOverride = styleOverride || {};
126
- var wh = this._calculateCurrentDimensions(),
127
- strokeWidth = this.borderScaleFactor,
128
- width = wh.x + strokeWidth,
129
- height = wh.y + strokeWidth,
130
- hasControls = typeof styleOverride.hasControls !== 'undefined' ?
131
- styleOverride.hasControls : this.hasControls,
132
- shouldStroke = false;
133
-
134
- ctx.save();
135
- ctx.strokeStyle = styleOverride.borderColor || this.borderColor;
136
- this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);
137
-
138
- ctx.strokeRect(
139
- -width / 2,
140
- -height / 2,
141
- width,
142
- height
143
- );
144
-
145
- if (hasControls) {
146
- ctx.beginPath();
147
- this.forEachControl(function(control, key, fabricObject) {
148
- // in this moment, the ctx is centered on the object.
149
- // width and height of the above function are the size of the bbox.
150
- if (control.withConnection && control.getVisibility(fabricObject, key)) {
151
- // reset movement for each control
152
- shouldStroke = true;
153
- ctx.moveTo(control.x * width, control.y * height);
154
- ctx.lineTo(
155
- control.x * width + control.offsetX,
156
- control.y * height + control.offsetY
157
- );
158
- }
159
- });
160
- if (shouldStroke) {
161
- ctx.stroke();
162
- }
163
- }
164
- ctx.restore();
165
- return this;
166
- },
167
-
168
- /**
169
- * Draws borders of an object's bounding box when it is inside a group.
170
- * Requires public properties: width, height
171
- * Requires public options: padding, borderColor
172
- * @param {CanvasRenderingContext2D} ctx Context to draw on
173
- * @param {object} options object representing current object parameters
174
- * @param {Object} styleOverride object to override the object style
175
- * @return {fabric.Object} thisArg
176
- * @chainable
177
- */
178
- drawBordersInGroup: function(ctx, options, styleOverride) {
179
- styleOverride = styleOverride || {};
180
- var bbox = fabric.util.sizeAfterTransform(this.width, this.height, options),
181
- strokeWidth = this.strokeWidth,
182
- strokeUniform = this.strokeUniform,
183
- borderScaleFactor = this.borderScaleFactor,
184
- width =
185
- bbox.x + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleX) + borderScaleFactor,
186
- height =
187
- bbox.y + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleY) + borderScaleFactor;
188
- ctx.save();
189
- this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);
190
- ctx.strokeStyle = styleOverride.borderColor || this.borderColor;
191
- ctx.strokeRect(
192
- -width / 2,
193
- -height / 2,
194
- width,
195
- height
196
- );
197
-
198
- ctx.restore();
199
- return this;
200
- },
201
-
202
- /**
203
- * Draws corners of an object's bounding box.
204
- * Requires public properties: width, height
205
- * Requires public options: cornerSize, padding
206
- * @param {CanvasRenderingContext2D} ctx Context to draw on
207
- * @param {Object} styleOverride object to override the object style
208
- * @return {fabric.Object} thisArg
209
- * @chainable
210
- */
211
- drawControls: function(ctx, styleOverride) {
212
- styleOverride = styleOverride || {};
213
- ctx.save();
214
- var retinaScaling = this.canvas.getRetinaScaling(), matrix, p;
215
- ctx.setTransform(retinaScaling, 0, 0, retinaScaling, 0, 0);
216
- ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;
217
- if (!this.transparentCorners) {
218
- ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;
219
- }
220
- this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray);
221
- this.setCoords();
222
- if (this.group) {
223
- // fabricJS does not really support drawing controls inside groups,
224
- // this piece of code here helps having at least the control in places.
225
- // If an application needs to show some objects as selected because of some UI state
226
- // can still call Object._renderControls() on any object they desire, independently of groups.
227
- // using no padding, circular controls and hiding the rotating cursor is higly suggested,
228
- matrix = this.group.calcTransformMatrix();
229
- }
230
- this.forEachControl(function(control, key, fabricObject) {
231
- p = fabricObject.oCoords[key];
232
- if (control.getVisibility(fabricObject, key)) {
233
- if (matrix) {
234
- p = fabric.util.transformPoint(p, matrix);
235
- }
236
- control.render(ctx, p.x, p.y, styleOverride, fabricObject);
237
- }
238
- });
239
- ctx.restore();
240
-
241
- return this;
242
- },
243
-
244
- /**
245
- * Returns true if the specified control is visible, false otherwise.
246
- * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.
247
- * @returns {Boolean} true if the specified control is visible, false otherwise
248
- */
249
- isControlVisible: function(controlKey) {
250
- return this.controls[controlKey] && this.controls[controlKey].getVisibility(this, controlKey);
251
- },
252
-
253
- /**
254
- * Sets the visibility of the specified control.
255
- * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.
256
- * @param {Boolean} visible true to set the specified control visible, false otherwise
257
- * @return {fabric.Object} thisArg
258
- * @chainable
259
- */
260
- setControlVisible: function(controlKey, visible) {
261
- if (!this._controlsVisibility) {
262
- this._controlsVisibility = {};
263
- }
264
- this._controlsVisibility[controlKey] = visible;
265
- return this;
266
- },
267
-
268
- /**
269
- * Sets the visibility state of object controls.
270
- * @param {Object} [options] Options object
271
- * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it
272
- * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it
273
- * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it
274
- * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it
275
- * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it
276
- * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it
277
- * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it
278
- * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it
279
- * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it
280
- * @return {fabric.Object} thisArg
281
- * @chainable
282
- */
283
- setControlsVisibility: function(options) {
284
- options || (options = { });
285
-
286
- for (var p in options) {
287
- this.setControlVisible(p, options[p]);
288
- }
289
- return this;
290
- },
291
-
292
-
293
- /**
294
- * This callback function is called every time _discardActiveObject or _setActiveObject
295
- * try to to deselect this object. If the function returns true, the process is cancelled
296
- * @param {Object} [options] options sent from the upper functions
297
- * @param {Event} [options.e] event if the process is generated by an event
298
- */
299
- onDeselect: function() {
300
- // implemented by sub-classes, as needed.
301
- },
302
-
303
-
304
- /**
305
- * This callback function is called every time _discardActiveObject or _setActiveObject
306
- * try to to select this object. If the function returns true, the process is cancelled
307
- * @param {Object} [options] options sent from the upper functions
308
- * @param {Event} [options.e] event if the process is generated by an event
309
- */
310
- onSelect: function() {
311
- // implemented by sub-classes, as needed.
312
- }
313
- });
314
- })();
@@ -1,255 +0,0 @@
1
- (function() {
2
-
3
- var degreesToRadians = fabric.util.degreesToRadians,
4
- originXOffset = {
5
- left: -0.5,
6
- center: 0,
7
- right: 0.5
8
- },
9
- originYOffset = {
10
- top: -0.5,
11
- center: 0,
12
- bottom: 0.5
13
- };
14
-
15
- fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {
16
-
17
- /**
18
- * Translates the coordinates from a set of origin to another (based on the object's dimensions)
19
- * @param {fabric.Point} point The point which corresponds to the originX and originY params
20
- * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'
21
- * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'
22
- * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'
23
- * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'
24
- * @return {fabric.Point}
25
- */
26
- translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {
27
- var x = point.x,
28
- y = point.y,
29
- offsetX, offsetY, dim;
30
-
31
- if (typeof fromOriginX === 'string') {
32
- fromOriginX = originXOffset[fromOriginX];
33
- }
34
- else {
35
- fromOriginX -= 0.5;
36
- }
37
-
38
- if (typeof toOriginX === 'string') {
39
- toOriginX = originXOffset[toOriginX];
40
- }
41
- else {
42
- toOriginX -= 0.5;
43
- }
44
-
45
- offsetX = toOriginX - fromOriginX;
46
-
47
- if (typeof fromOriginY === 'string') {
48
- fromOriginY = originYOffset[fromOriginY];
49
- }
50
- else {
51
- fromOriginY -= 0.5;
52
- }
53
-
54
- if (typeof toOriginY === 'string') {
55
- toOriginY = originYOffset[toOriginY];
56
- }
57
- else {
58
- toOriginY -= 0.5;
59
- }
60
-
61
- offsetY = toOriginY - fromOriginY;
62
-
63
- if (offsetX || offsetY) {
64
- dim = this._getTransformedDimensions();
65
- x = point.x + offsetX * dim.x;
66
- y = point.y + offsetY * dim.y;
67
- }
68
-
69
- return new fabric.Point(x, y);
70
- },
71
-
72
- /**
73
- * Translates the coordinates from origin to center coordinates (based on the object's dimensions)
74
- * @param {fabric.Point} point The point which corresponds to the originX and originY params
75
- * @param {String} originX Horizontal origin: 'left', 'center' or 'right'
76
- * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
77
- * @return {fabric.Point}
78
- */
79
- translateToCenterPoint: function(point, originX, originY) {
80
- var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');
81
- if (this.angle) {
82
- return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));
83
- }
84
- return p;
85
- },
86
-
87
- /**
88
- * Translates the coordinates from center to origin coordinates (based on the object's dimensions)
89
- * @param {fabric.Point} center The point which corresponds to center of the object
90
- * @param {String} originX Horizontal origin: 'left', 'center' or 'right'
91
- * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
92
- * @return {fabric.Point}
93
- */
94
- translateToOriginPoint: function(center, originX, originY) {
95
- var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);
96
- if (this.angle) {
97
- return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));
98
- }
99
- return p;
100
- },
101
-
102
- /**
103
- * Returns the real center coordinates of the object
104
- * @return {fabric.Point}
105
- */
106
- getCenterPoint: function() {
107
- var leftTop = new fabric.Point(this.left, this.top);
108
- return this.translateToCenterPoint(leftTop, this.originX, this.originY);
109
- },
110
-
111
- /**
112
- * Returns the coordinates of the object based on center coordinates
113
- * @param {fabric.Point} point The point which corresponds to the originX and originY params
114
- * @return {fabric.Point}
115
- */
116
- // getOriginPoint: function(center) {
117
- // return this.translateToOriginPoint(center, this.originX, this.originY);
118
- // },
119
-
120
- /**
121
- * Returns the coordinates of the object as if it has a different origin
122
- * @param {String} originX Horizontal origin: 'left', 'center' or 'right'
123
- * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
124
- * @return {fabric.Point}
125
- */
126
- getPointByOrigin: function(originX, originY) {
127
- var center = this.getCenterPoint();
128
- return this.translateToOriginPoint(center, originX, originY);
129
- },
130
-
131
- /**
132
- * Returns the point in local coordinates
133
- * @param {fabric.Point} point The point relative to the global coordinate system
134
- * @param {String} originX Horizontal origin: 'left', 'center' or 'right'
135
- * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
136
- * @return {fabric.Point}
137
- */
138
- toLocalPoint: function(point, originX, originY) {
139
- var center = this.getCenterPoint(),
140
- p, p2;
141
-
142
- if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {
143
- p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);
144
- }
145
- else {
146
- p = new fabric.Point(this.left, this.top);
147
- }
148
-
149
- p2 = new fabric.Point(point.x, point.y);
150
- if (this.angle) {
151
- p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));
152
- }
153
- return p2.subtractEquals(p);
154
- },
155
-
156
- /**
157
- * Returns the point in global coordinates
158
- * @param {fabric.Point} The point relative to the local coordinate system
159
- * @return {fabric.Point}
160
- */
161
- // toGlobalPoint: function(point) {
162
- // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));
163
- // },
164
-
165
- /**
166
- * Sets the position of the object taking into consideration the object's origin
167
- * @param {fabric.Point} pos The new position of the object
168
- * @param {String} originX Horizontal origin: 'left', 'center' or 'right'
169
- * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'
170
- * @return {void}
171
- */
172
- setPositionByOrigin: function(pos, originX, originY) {
173
- var center = this.translateToCenterPoint(pos, originX, originY),
174
- position = this.translateToOriginPoint(center, this.originX, this.originY);
175
- this.set('left', position.x);
176
- this.set('top', position.y);
177
- },
178
-
179
- /**
180
- * @param {String} to One of 'left', 'center', 'right'
181
- */
182
- adjustPosition: function(to) {
183
- var angle = degreesToRadians(this.angle),
184
- hypotFull = this.getScaledWidth(),
185
- xFull = fabric.util.cos(angle) * hypotFull,
186
- yFull = fabric.util.sin(angle) * hypotFull,
187
- offsetFrom, offsetTo;
188
-
189
- //TODO: this function does not consider mixed situation like top, center.
190
- if (typeof this.originX === 'string') {
191
- offsetFrom = originXOffset[this.originX];
192
- }
193
- else {
194
- offsetFrom = this.originX - 0.5;
195
- }
196
- if (typeof to === 'string') {
197
- offsetTo = originXOffset[to];
198
- }
199
- else {
200
- offsetTo = to - 0.5;
201
- }
202
- this.left += xFull * (offsetTo - offsetFrom);
203
- this.top += yFull * (offsetTo - offsetFrom);
204
- this.setCoords();
205
- this.originX = to;
206
- },
207
-
208
- /**
209
- * Sets the origin/position of the object to it's center point
210
- * @private
211
- * @return {void}
212
- */
213
- _setOriginToCenter: function() {
214
- this._originalOriginX = this.originX;
215
- this._originalOriginY = this.originY;
216
-
217
- var center = this.getCenterPoint();
218
-
219
- this.originX = 'center';
220
- this.originY = 'center';
221
-
222
- this.left = center.x;
223
- this.top = center.y;
224
- },
225
-
226
- /**
227
- * Resets the origin/position of the object to it's original origin
228
- * @private
229
- * @return {void}
230
- */
231
- _resetOrigin: function() {
232
- var originPoint = this.translateToOriginPoint(
233
- this.getCenterPoint(),
234
- this._originalOriginX,
235
- this._originalOriginY);
236
-
237
- this.originX = this._originalOriginX;
238
- this.originY = this._originalOriginY;
239
-
240
- this.left = originPoint.x;
241
- this.top = originPoint.y;
242
-
243
- this._originalOriginX = null;
244
- this._originalOriginY = null;
245
- },
246
-
247
- /**
248
- * @private
249
- */
250
- _getLeftTopCoords: function() {
251
- return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');
252
- },
253
- });
254
-
255
- })();
@@ -1,80 +0,0 @@
1
- fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {
2
-
3
- /**
4
- * Moves an object to the bottom of the stack of drawn objects
5
- * @return {fabric.Object} thisArg
6
- * @chainable
7
- */
8
- sendToBack: function() {
9
- if (this.group) {
10
- fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);
11
- }
12
- else if (this.canvas) {
13
- this.canvas.sendToBack(this);
14
- }
15
- return this;
16
- },
17
-
18
- /**
19
- * Moves an object to the top of the stack of drawn objects
20
- * @return {fabric.Object} thisArg
21
- * @chainable
22
- */
23
- bringToFront: function() {
24
- if (this.group) {
25
- fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);
26
- }
27
- else if (this.canvas) {
28
- this.canvas.bringToFront(this);
29
- }
30
- return this;
31
- },
32
-
33
- /**
34
- * Moves an object down in stack of drawn objects
35
- * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object
36
- * @return {fabric.Object} thisArg
37
- * @chainable
38
- */
39
- sendBackwards: function(intersecting) {
40
- if (this.group) {
41
- fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);
42
- }
43
- else if (this.canvas) {
44
- this.canvas.sendBackwards(this, intersecting);
45
- }
46
- return this;
47
- },
48
-
49
- /**
50
- * Moves an object up in stack of drawn objects
51
- * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object
52
- * @return {fabric.Object} thisArg
53
- * @chainable
54
- */
55
- bringForward: function(intersecting) {
56
- if (this.group) {
57
- fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);
58
- }
59
- else if (this.canvas) {
60
- this.canvas.bringForward(this, intersecting);
61
- }
62
- return this;
63
- },
64
-
65
- /**
66
- * Moves an object to specified level in stack of drawn objects
67
- * @param {Number} index New position of object
68
- * @return {fabric.Object} thisArg
69
- * @chainable
70
- */
71
- moveTo: function(index) {
72
- if (this.group && this.group.type !== 'activeSelection') {
73
- fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);
74
- }
75
- else if (this.canvas) {
76
- this.canvas.moveTo(this, index);
77
- }
78
- return this;
79
- }
80
- });