fabric 5.3.0 → 6.0.0-beta3

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