fabric 5.3.0 → 6.0.0-beta10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintignore +3 -0
  5. package/.eslintrc.js +51 -0
  6. package/.eslintrc.json +38 -46
  7. package/.eslintrc_tests +12 -0
  8. package/.gitattributes +2 -0
  9. package/.gitpod.yml +17 -1
  10. package/.prettierignore +19 -0
  11. package/.prettierrc +4 -0
  12. package/CHANGELOG.md +615 -189
  13. package/CONTRIBUTING.md +233 -59
  14. package/README.md +200 -235
  15. package/babel-jest.config.js +6 -0
  16. package/bower.json +1 -3
  17. package/dist/fabric.d.ts +54 -0
  18. package/dist/index.d.ts +2 -0
  19. package/dist/index.js +28452 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/index.min.js +1 -0
  22. package/dist/index.mjs +28385 -0
  23. package/dist/index.mjs.map +1 -0
  24. package/dist/index.node.cjs +28538 -0
  25. package/dist/index.node.cjs.map +1 -0
  26. package/dist/index.node.d.ts +20 -0
  27. package/dist/index.node.mjs +28477 -0
  28. package/dist/index.node.mjs.map +1 -0
  29. package/dist/src/ClassRegistry.d.ts +13 -0
  30. package/dist/src/Collection.d.ts +136 -0
  31. package/dist/src/CommonMethods.d.ts +32 -0
  32. package/dist/src/EventTypeDefs.d.ts +227 -0
  33. package/dist/src/Intersection.d.ts +112 -0
  34. package/dist/src/Observable.d.ts +60 -0
  35. package/dist/src/Pattern/Pattern.d.ts +99 -0
  36. package/dist/src/Pattern/index.d.ts +3 -0
  37. package/dist/src/Pattern/types.d.ts +9 -0
  38. package/dist/src/Point.d.ts +232 -0
  39. package/dist/src/Shadow.d.ts +96 -0
  40. package/dist/src/brushes/BaseBrush.d.ts +101 -0
  41. package/dist/src/brushes/CircleBrush.d.ts +44 -0
  42. package/dist/src/brushes/CircleBrush.test.d.ts +2 -0
  43. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  44. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  45. package/dist/src/brushes/SprayBrush.d.ts +74 -0
  46. package/dist/src/brushes/typedefs.d.ts +18 -0
  47. package/dist/src/cache.d.ts +47 -0
  48. package/dist/src/canvas/Canvas.d.ts +364 -0
  49. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +29 -0
  50. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +29 -0
  51. package/dist/src/canvas/DOMManagers/util.d.ts +24 -0
  52. package/dist/src/canvas/DOMManagers/util.spec.d.ts +2 -0
  53. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  54. package/dist/src/canvas/StaticCanvas.d.ts +747 -0
  55. package/dist/src/canvas/TextEditingManager.d.ts +21 -0
  56. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  57. package/dist/src/color/Color.d.ts +152 -0
  58. package/dist/src/color/color_map.d.ts +155 -0
  59. package/dist/src/color/constants.d.ts +104 -0
  60. package/dist/src/color/typedefs.d.ts +16 -0
  61. package/dist/src/color/util.d.ts +27 -0
  62. package/dist/src/config.d.ts +115 -0
  63. package/dist/src/constants.d.ts +21 -0
  64. package/dist/src/controls/Control.d.ts +229 -0
  65. package/dist/src/controls/changeWidth.d.ts +13 -0
  66. package/dist/src/controls/commonControls.d.ts +28 -0
  67. package/dist/src/controls/controlRendering.d.ts +29 -0
  68. package/dist/src/controls/drag.d.ts +12 -0
  69. package/dist/src/controls/fireEvent.d.ts +3 -0
  70. package/dist/src/controls/index.d.ts +13 -0
  71. package/dist/src/controls/polyControl.d.ts +5 -0
  72. package/dist/src/controls/rotate.d.ts +12 -0
  73. package/dist/src/controls/scale.d.ts +47 -0
  74. package/dist/src/controls/scaleSkew.d.ts +39 -0
  75. package/dist/src/controls/skew.d.ts +33 -0
  76. package/dist/src/controls/util.d.ts +41 -0
  77. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  78. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  79. package/dist/src/env/browser.d.ts +3 -0
  80. package/dist/src/env/index.d.ts +28 -0
  81. package/dist/src/env/node.d.ts +6 -0
  82. package/dist/src/env/types.d.ts +15 -0
  83. package/dist/src/filters/BaseFilter.d.ts +160 -0
  84. package/dist/src/filters/BlendColor.d.ts +81 -0
  85. package/dist/src/filters/BlendImage.d.ts +93 -0
  86. package/dist/src/filters/Blur.d.ts +52 -0
  87. package/dist/src/filters/Boilerplate.d.ts +48 -0
  88. package/dist/src/filters/Brightness.d.ts +48 -0
  89. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  90. package/dist/src/filters/ColorMatrix.d.ts +64 -0
  91. package/dist/src/filters/ColorMatrixFilters.d.ts +537 -0
  92. package/dist/src/filters/Composed.d.ts +46 -0
  93. package/dist/src/filters/Contrast.d.ts +46 -0
  94. package/dist/src/filters/Convolute.d.ts +83 -0
  95. package/dist/src/filters/FilterBackend.d.ts +15 -0
  96. package/dist/src/filters/GLProbes/GLProbe.d.ts +7 -0
  97. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +11 -0
  98. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  99. package/dist/src/filters/Gamma.d.ts +55 -0
  100. package/dist/src/filters/Grayscale.d.ts +47 -0
  101. package/dist/src/filters/HueRotation.d.ts +25 -0
  102. package/dist/src/filters/Invert.d.ts +56 -0
  103. package/dist/src/filters/Noise.d.ts +55 -0
  104. package/dist/src/filters/Pixelate.d.ts +45 -0
  105. package/dist/src/filters/RemoveColor.d.ts +64 -0
  106. package/dist/src/filters/Resize.d.ts +137 -0
  107. package/dist/src/filters/Saturation.d.ts +49 -0
  108. package/dist/src/filters/Vibrance.d.ts +49 -0
  109. package/dist/src/filters/WebGLFilterBackend.d.ts +128 -0
  110. package/dist/src/filters/filters.d.ts +21 -0
  111. package/dist/src/filters/index.d.ts +7 -0
  112. package/dist/src/filters/shaders/baseFilter.d.ts +4 -0
  113. package/dist/src/filters/shaders/blendColor.d.ts +13 -0
  114. package/dist/src/filters/shaders/blendImage.d.ts +3 -0
  115. package/dist/src/filters/shaders/blur.d.ts +2 -0
  116. package/dist/src/filters/shaders/brightness.d.ts +2 -0
  117. package/dist/src/filters/shaders/colorMatrix.d.ts +2 -0
  118. package/dist/src/filters/shaders/constrast.d.ts +2 -0
  119. package/dist/src/filters/shaders/convolute.d.ts +11 -0
  120. package/dist/src/filters/shaders/gamma.d.ts +2 -0
  121. package/dist/src/filters/shaders/grayscale.d.ts +3 -0
  122. package/dist/src/filters/shaders/invert.d.ts +2 -0
  123. package/dist/src/filters/shaders/noise.d.ts +2 -0
  124. package/dist/src/filters/shaders/pixelate.d.ts +2 -0
  125. package/dist/src/filters/shaders/removeColor.d.ts +2 -0
  126. package/dist/src/filters/shaders/saturation.d.ts +2 -0
  127. package/dist/src/filters/shaders/vibrance.d.ts +2 -0
  128. package/dist/src/filters/typedefs.d.ts +48 -0
  129. package/dist/src/filters/utils.d.ts +3 -0
  130. package/dist/src/gradient/Gradient.d.ts +150 -0
  131. package/dist/src/gradient/constants.d.ts +15 -0
  132. package/dist/src/gradient/index.d.ts +3 -0
  133. package/dist/src/gradient/parser/index.d.ts +4 -0
  134. package/dist/src/gradient/parser/misc.d.ts +4 -0
  135. package/dist/src/gradient/parser/parseColorStops.d.ts +3 -0
  136. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  137. package/dist/src/gradient/typedefs.d.ts +93 -0
  138. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  139. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  140. package/dist/src/parkinglot/straighten.d.ts +2 -0
  141. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  142. package/dist/src/parser/attributes.d.ts +6 -0
  143. package/dist/src/parser/constants.d.ts +53 -0
  144. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  145. package/dist/src/parser/elementById.d.ts +6 -0
  146. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  147. package/dist/src/parser/elements_parser.d.ts +3 -0
  148. package/dist/src/parser/getCSSRules.d.ts +7 -0
  149. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  150. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  151. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  152. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  153. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  154. package/dist/src/parser/index.d.ts +9 -0
  155. package/dist/src/parser/loadSVGFromString.d.ts +18 -0
  156. package/dist/src/parser/loadSVGFromURL.d.ts +19 -0
  157. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  158. package/dist/src/parser/normalizeValue.d.ts +2 -0
  159. package/dist/src/parser/parseAttributes.d.ts +9 -0
  160. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  161. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  162. package/dist/src/parser/parseSVGDocument.d.ts +23 -0
  163. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  164. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  165. package/dist/src/parser/parseStyleString.d.ts +2 -0
  166. package/dist/src/parser/parseTransformAttribute.d.ts +11 -0
  167. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  168. package/dist/src/parser/percent.d.ts +9 -0
  169. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  170. package/dist/src/parser/selectorMatches.d.ts +2 -0
  171. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  172. package/dist/src/parser/typedefs.d.ts +9 -0
  173. package/dist/src/shapes/ActiveSelection.d.ts +83 -0
  174. package/dist/src/shapes/Circle.d.ts +99 -0
  175. package/dist/src/shapes/Ellipse.d.ts +84 -0
  176. package/dist/src/shapes/Group.d.ts +407 -0
  177. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  178. package/dist/src/shapes/IText/IText.d.ts +336 -0
  179. package/dist/src/shapes/IText/ITextBehavior.d.ts +287 -0
  180. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +73 -0
  181. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +195 -0
  182. package/dist/src/shapes/IText/constants.d.ts +13 -0
  183. package/dist/src/shapes/Image.d.ts +309 -0
  184. package/dist/src/shapes/Line.d.ts +121 -0
  185. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  186. package/dist/src/shapes/Object/FabricObject.d.ts +11 -0
  187. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  188. package/dist/src/shapes/Object/InteractiveObject.d.ts +296 -0
  189. package/dist/src/shapes/Object/Object.d.ts +599 -0
  190. package/dist/src/shapes/Object/ObjectGeometry.d.ts +327 -0
  191. package/dist/src/shapes/Object/ObjectOrigin.d.ts +109 -0
  192. package/dist/src/shapes/Object/StackedObject.d.ts +72 -0
  193. package/dist/src/shapes/Object/defaultValues.d.ts +76 -0
  194. package/dist/src/shapes/Object/types/BaseProps.d.ts +84 -0
  195. package/dist/src/shapes/Object/types/BorderProps.d.ts +37 -0
  196. package/dist/src/shapes/Object/types/ControlProps.d.ts +62 -0
  197. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +96 -0
  198. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  199. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  200. package/dist/src/shapes/Object/types/ObjectProps.d.ts +42 -0
  201. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  202. package/dist/src/shapes/Object/types/index.d.ts +6 -0
  203. package/dist/src/shapes/Path.d.ts +214 -0
  204. package/dist/src/shapes/Polygon.d.ts +10 -0
  205. package/dist/src/shapes/Polyline.d.ts +147 -0
  206. package/dist/src/shapes/Rect.d.ts +82 -0
  207. package/dist/src/shapes/Text/StyledText.d.ts +123 -0
  208. package/dist/src/shapes/Text/Text.d.ts +688 -0
  209. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  210. package/dist/src/shapes/Text/constants.d.ts +13 -0
  211. package/dist/src/shapes/Textbox.d.ts +204 -0
  212. package/dist/src/shapes/Triangle.d.ts +26 -0
  213. package/dist/src/typedefs.d.ts +96 -0
  214. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  215. package/dist/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  216. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  217. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  218. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  219. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  220. package/dist/src/util/animation/animate.d.ts +37 -0
  221. package/dist/src/util/animation/easing.d.ts +130 -0
  222. package/dist/src/util/animation/index.d.ts +3 -0
  223. package/dist/src/util/animation/types.d.ts +87 -0
  224. package/dist/src/util/applyMixins.d.ts +8 -0
  225. package/dist/src/util/dom_event.d.ts +5 -0
  226. package/dist/src/util/dom_misc.d.ts +12 -0
  227. package/dist/src/util/dom_request.d.ts +14 -0
  228. package/dist/src/util/dom_style.d.ts +7 -0
  229. package/dist/src/util/index.d.ts +36 -0
  230. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +2 -0
  231. package/dist/src/util/internals/cleanupSvgAttribute.test.d.ts +2 -0
  232. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  233. package/dist/src/util/internals/cloneDeep.test.d.ts +2 -0
  234. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  235. package/dist/src/util/internals/getRandomInt.test.d.ts +2 -0
  236. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  237. package/dist/src/util/internals/index.d.ts +4 -0
  238. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  239. package/dist/src/util/internals/uid.d.ts +2 -0
  240. package/dist/src/util/lang_string.d.ts +22 -0
  241. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  242. package/dist/src/util/misc/capValue.d.ts +2 -0
  243. package/dist/src/util/misc/cos.d.ts +10 -0
  244. package/dist/src/util/misc/dom.d.ts +28 -0
  245. package/dist/src/util/misc/findScaleTo.d.ts +20 -0
  246. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  247. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  248. package/dist/src/util/misc/matrix.d.ts +168 -0
  249. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  250. package/dist/src/util/misc/objectEnlive.d.ts +41 -0
  251. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  252. package/dist/src/util/misc/pick.d.ts +9 -0
  253. package/dist/src/util/misc/planeChange.d.ts +81 -0
  254. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +52 -0
  255. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +82 -0
  256. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +26 -0
  257. package/dist/src/util/misc/projectStroke/index.d.ts +12 -0
  258. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  259. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  260. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  261. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  262. package/dist/src/util/misc/sin.d.ts +10 -0
  263. package/dist/src/util/misc/svgParsing.d.ts +45 -0
  264. package/dist/src/util/misc/textStyles.d.ts +32 -0
  265. package/dist/src/util/misc/toFixed.d.ts +8 -0
  266. package/dist/src/util/misc/vectors.d.ts +58 -0
  267. package/dist/src/util/path/index.d.ts +96 -0
  268. package/dist/src/util/path/regex.d.ts +2 -0
  269. package/dist/src/util/path/typechecks.d.ts +24 -0
  270. package/dist/src/util/path/typedefs.d.ts +220 -0
  271. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  272. package/dist/src/util/typeAssertions.d.ts +19 -0
  273. package/e2e/site/index.html +25 -0
  274. package/e2e/utils/objects.ts +36 -0
  275. package/fabric.ts +72 -0
  276. package/index.node.ts +43 -0
  277. package/index.ts +1 -0
  278. package/jest.config.js +194 -0
  279. package/lib/aligning_guidelines.js +2 -2
  280. package/package.json +110 -40
  281. package/playwright.config.ts +64 -0
  282. package/publish.js +0 -26
  283. package/rollup.config.mjs +99 -0
  284. package/rollup.test.config.js +24 -0
  285. package/scripts/build.mjs +50 -0
  286. package/scripts/buildLock.mjs +115 -0
  287. package/scripts/buildReporter.mjs +15 -0
  288. package/scripts/buildStats.mjs +139 -0
  289. package/scripts/dirname.mjs +14 -0
  290. package/scripts/git.mjs +36 -0
  291. package/scripts/index.mjs +564 -0
  292. package/scripts/sandbox.mjs +149 -0
  293. package/src/ClassRegistry.ts +56 -0
  294. package/src/Collection.ts +346 -0
  295. package/src/CommonMethods.ts +63 -0
  296. package/src/EventTypeDefs.ts +298 -0
  297. package/src/Intersection.ts +302 -0
  298. package/src/Observable.ts +181 -0
  299. package/src/Pattern/Pattern.ts +207 -0
  300. package/src/Pattern/index.ts +2 -0
  301. package/src/Pattern/types.ts +17 -0
  302. package/src/Point.ts +388 -0
  303. package/src/Shadow.ts +214 -0
  304. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +63 -42
  305. package/src/brushes/CircleBrush.test.ts +11 -0
  306. package/src/brushes/CircleBrush.ts +140 -0
  307. package/src/brushes/PatternBrush.ts +70 -0
  308. package/src/brushes/PencilBrush.ts +300 -0
  309. package/src/brushes/SprayBrush.ts +214 -0
  310. package/src/brushes/typedefs.ts +18 -0
  311. package/src/cache.ts +90 -0
  312. package/src/canvas/Canvas.ts +1598 -0
  313. package/src/canvas/DOMManagers/CanvasDOMManager.ts +124 -0
  314. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +80 -0
  315. package/src/canvas/DOMManagers/util.spec.ts +26 -0
  316. package/src/canvas/DOMManagers/util.ts +98 -0
  317. package/src/canvas/SelectableCanvas.ts +1506 -0
  318. package/src/canvas/StaticCanvas.ts +1634 -0
  319. package/src/canvas/TextEditingManager.ts +70 -0
  320. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  321. package/src/color/Color.ts +320 -0
  322. package/src/color/color_map.ts +154 -0
  323. package/src/color/constants.ts +107 -0
  324. package/src/color/typedefs.ts +18 -0
  325. package/src/color/util.ts +93 -0
  326. package/src/config.ts +159 -0
  327. package/src/constants.ts +29 -0
  328. package/src/controls/Control.ts +385 -0
  329. package/src/controls/changeWidth.ts +53 -0
  330. package/src/controls/commonControls.ts +105 -0
  331. package/src/controls/controlRendering.ts +138 -0
  332. package/src/controls/drag.ts +32 -0
  333. package/src/controls/fireEvent.ts +18 -0
  334. package/src/controls/index.ts +22 -0
  335. package/src/controls/polyControl.ts +135 -0
  336. package/src/controls/rotate.ts +87 -0
  337. package/src/controls/scale.ts +277 -0
  338. package/src/controls/scaleSkew.ts +92 -0
  339. package/src/controls/skew.ts +243 -0
  340. package/src/controls/util.ts +155 -0
  341. package/src/controls/wrapWithFireEvent.ts +25 -0
  342. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  343. package/src/env/browser.ts +32 -0
  344. package/src/env/index.ts +38 -0
  345. package/src/env/node.ts +58 -0
  346. package/src/env/types.ts +15 -0
  347. package/src/filters/{base_filter.class.js → BaseFilter.ts} +203 -151
  348. package/src/filters/BlendColor.ts +219 -0
  349. package/src/filters/BlendImage.ts +230 -0
  350. package/src/filters/Blur.ts +181 -0
  351. package/src/filters/Boilerplate.ts +94 -0
  352. package/src/filters/Brightness.ts +85 -0
  353. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  354. package/src/filters/ColorMatrix.ts +147 -0
  355. package/src/filters/ColorMatrixFilters.ts +79 -0
  356. package/src/filters/Composed.ts +78 -0
  357. package/src/filters/Contrast.ts +84 -0
  358. package/src/filters/Convolute.ts +186 -0
  359. package/src/filters/FilterBackend.ts +38 -0
  360. package/src/filters/GLProbes/GLProbe.ts +7 -0
  361. package/src/filters/GLProbes/NodeGLProbe.ts +15 -0
  362. package/src/filters/GLProbes/WebGLProbe.ts +47 -0
  363. package/src/filters/Gamma.ts +112 -0
  364. package/src/filters/Grayscale.ts +104 -0
  365. package/src/filters/HueRotation.ts +64 -0
  366. package/src/filters/Invert.ts +101 -0
  367. package/src/filters/Noise.ts +96 -0
  368. package/src/filters/Pixelate.ts +98 -0
  369. package/src/filters/RemoveColor.ts +137 -0
  370. package/src/filters/Resize.ts +540 -0
  371. package/src/filters/Saturation.ts +89 -0
  372. package/src/filters/Vibrance.ts +90 -0
  373. package/src/filters/WebGLFilterBackend.ts +456 -0
  374. package/src/filters/filters.ts +28 -0
  375. package/src/filters/index.ts +12 -0
  376. package/src/filters/shaders/baseFilter.ts +17 -0
  377. package/src/filters/shaders/blendColor.ts +33 -0
  378. package/src/filters/shaders/blendImage.ts +32 -0
  379. package/src/filters/shaders/blur.ts +24 -0
  380. package/src/filters/shaders/brightness.ts +11 -0
  381. package/src/filters/shaders/colorMatrix.ts +12 -0
  382. package/src/filters/shaders/constrast.ts +11 -0
  383. package/src/filters/shaders/convolute.ts +154 -0
  384. package/src/filters/shaders/gamma.ts +15 -0
  385. package/src/filters/shaders/grayscale.ts +36 -0
  386. package/src/filters/shaders/invert.ts +19 -0
  387. package/src/filters/shaders/noise.ts +16 -0
  388. package/src/filters/shaders/pixelate.ts +19 -0
  389. package/src/filters/shaders/removeColor.ts +13 -0
  390. package/src/filters/shaders/saturation.ts +15 -0
  391. package/src/filters/shaders/vibrance.ts +16 -0
  392. package/src/filters/typedefs.ts +59 -0
  393. package/src/filters/utils.ts +7 -0
  394. package/src/gradient/Gradient.ts +409 -0
  395. package/src/gradient/constants.ts +12 -0
  396. package/src/gradient/index.ts +2 -0
  397. package/src/gradient/parser/index.ts +3 -0
  398. package/src/gradient/parser/misc.ts +13 -0
  399. package/src/gradient/parser/parseColorStops.ts +56 -0
  400. package/src/gradient/parser/parseCoords.ts +73 -0
  401. package/src/gradient/typedefs.ts +104 -0
  402. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  403. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  404. package/src/parkinglot/straighten.ts +58 -0
  405. package/src/parser/applyViewboxTransform.ts +158 -0
  406. package/src/parser/attributes.ts +25 -0
  407. package/src/parser/constants.ts +116 -0
  408. package/src/parser/doesSomeParentMatch.ts +18 -0
  409. package/src/parser/elementById.ts +21 -0
  410. package/src/parser/elementMatchesRule.ts +16 -0
  411. package/src/parser/elements_parser.ts +158 -0
  412. package/src/parser/getCSSRules.ts +61 -0
  413. package/src/parser/getGlobalStylesForElement.ts +19 -0
  414. package/src/parser/getGradientDefs.ts +31 -0
  415. package/src/parser/getMultipleNodes.ts +15 -0
  416. package/src/parser/getSvgRegex.ts +3 -0
  417. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  418. package/src/parser/index.ts +8 -0
  419. package/src/parser/loadSVGFromString.ts +29 -0
  420. package/src/parser/loadSVGFromURL.ts +47 -0
  421. package/src/parser/normalizeAttr.ts +10 -0
  422. package/src/parser/normalizeValue.ts +64 -0
  423. package/src/parser/parseAttributes.ts +90 -0
  424. package/src/parser/parseFontDeclaration.ts +44 -0
  425. package/src/parser/parsePointsAttribute.ts +34 -0
  426. package/src/parser/parseSVGDocument.ts +118 -0
  427. package/src/parser/parseStyleAttribute.ts +27 -0
  428. package/src/parser/parseStyleObject.ts +15 -0
  429. package/src/parser/parseStyleString.ts +16 -0
  430. package/src/parser/parseTransformAttribute.ts +94 -0
  431. package/src/parser/parseUseDirectives.ts +78 -0
  432. package/src/parser/percent.ts +27 -0
  433. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  434. package/src/parser/selectorMatches.ts +25 -0
  435. package/src/parser/setStrokeFillOpacity.ts +40 -0
  436. package/src/parser/typedefs.ts +13 -0
  437. package/src/shapes/ActiveSelection.ts +192 -0
  438. package/src/shapes/Circle.ts +236 -0
  439. package/src/shapes/Ellipse.ts +177 -0
  440. package/src/shapes/Group.ts +1103 -0
  441. package/src/shapes/IText/DraggableTextDelegate.ts +385 -0
  442. package/src/shapes/IText/IText.ts +696 -0
  443. package/src/shapes/IText/ITextBehavior.ts +1073 -0
  444. package/src/shapes/IText/ITextClickBehavior.ts +292 -0
  445. package/src/shapes/IText/ITextKeyBehavior.ts +675 -0
  446. package/src/shapes/IText/constants.ts +53 -0
  447. package/src/shapes/Image.ts +848 -0
  448. package/src/shapes/Line.ts +285 -0
  449. package/src/shapes/Object/AnimatableObject.ts +103 -0
  450. package/src/shapes/Object/FabricObject.ts +29 -0
  451. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +278 -0
  452. package/src/shapes/Object/InteractiveObject.ts +669 -0
  453. package/src/shapes/Object/Object.ts +1589 -0
  454. package/src/shapes/Object/ObjectGeometry.ts +814 -0
  455. package/src/shapes/Object/ObjectOrigin.ts +277 -0
  456. package/src/shapes/Object/StackedObject.ts +206 -0
  457. package/src/shapes/Object/defaultValues.ts +110 -0
  458. package/src/shapes/Object/types/BaseProps.ts +96 -0
  459. package/src/shapes/Object/types/BorderProps.ts +40 -0
  460. package/src/shapes/Object/types/ControlProps.ts +69 -0
  461. package/src/shapes/Object/types/FabricObjectProps.ts +111 -0
  462. package/src/shapes/Object/types/FillStrokeProps.ts +90 -0
  463. package/src/shapes/Object/types/LockInteractionProps.ts +57 -0
  464. package/src/shapes/Object/types/ObjectProps.ts +49 -0
  465. package/src/shapes/Object/types/SerializedObjectProps.ts +73 -0
  466. package/src/shapes/Object/types/index.ts +8 -0
  467. package/src/shapes/Path.ts +434 -0
  468. package/src/shapes/Polygon.ts +22 -0
  469. package/src/shapes/Polyline.ts +364 -0
  470. package/src/shapes/Rect.ts +230 -0
  471. package/src/shapes/Text/StyledText.ts +323 -0
  472. package/src/shapes/Text/Text.ts +1891 -0
  473. package/src/shapes/Text/TextSVGExportMixin.ts +289 -0
  474. package/src/shapes/Text/constants.ts +111 -0
  475. package/src/shapes/Textbox.ts +526 -0
  476. package/src/shapes/Triangle.ts +62 -0
  477. package/src/typedefs.ts +121 -0
  478. package/src/util/animation/AnimationBase.ts +166 -0
  479. package/src/util/animation/AnimationFrameProvider.ts +9 -0
  480. package/src/util/animation/AnimationRegistry.ts +58 -0
  481. package/src/util/animation/ArrayAnimation.ts +27 -0
  482. package/src/util/animation/ColorAnimation.ts +74 -0
  483. package/src/util/animation/ValueAnimation.ts +29 -0
  484. package/src/util/animation/animate.ts +74 -0
  485. package/src/util/animation/easing.ts +327 -0
  486. package/src/util/animation/index.ts +2 -0
  487. package/src/util/animation/types.ts +136 -0
  488. package/src/util/applyMixins.ts +22 -0
  489. package/src/util/dom_event.ts +28 -0
  490. package/src/util/dom_misc.ts +44 -0
  491. package/src/util/dom_request.ts +64 -0
  492. package/src/util/dom_style.ts +20 -0
  493. package/src/util/index.ts +106 -0
  494. package/src/util/internals/cleanupSvgAttribute.test.ts +16 -0
  495. package/src/util/internals/cleanupSvgAttribute.ts +8 -0
  496. package/src/util/internals/cloneDeep.test.ts +16 -0
  497. package/src/util/internals/cloneDeep.ts +2 -0
  498. package/src/util/internals/getRandomInt.test.ts +33 -0
  499. package/src/util/internals/getRandomInt.ts +8 -0
  500. package/src/util/internals/ifNaN.ts +9 -0
  501. package/src/util/internals/index.ts +3 -0
  502. package/src/util/internals/removeFromArray.ts +14 -0
  503. package/src/util/internals/uid.ts +3 -0
  504. package/src/util/lang_string.ts +79 -0
  505. package/src/util/misc/boundingBoxFromPoints.ts +38 -0
  506. package/src/util/misc/capValue.ts +2 -0
  507. package/src/util/misc/cos.ts +24 -0
  508. package/src/util/misc/dom.ts +55 -0
  509. package/src/util/misc/findScaleTo.ts +29 -0
  510. package/src/util/misc/groupSVGElements.ts +15 -0
  511. package/src/util/misc/isTransparent.ts +28 -0
  512. package/src/util/misc/matrix.ts +313 -0
  513. package/src/util/misc/mergeClipPaths.ts +40 -0
  514. package/src/util/misc/objectEnlive.ts +174 -0
  515. package/src/util/misc/objectTransforms.ts +130 -0
  516. package/src/util/misc/pick.ts +29 -0
  517. package/src/util/misc/planeChange.ts +127 -0
  518. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +113 -0
  519. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +227 -0
  520. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +76 -0
  521. package/src/util/misc/projectStroke/index.ts +55 -0
  522. package/src/util/misc/projectStroke/types.ts +24 -0
  523. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  524. package/src/util/misc/resolveOrigin.ts +22 -0
  525. package/src/util/misc/rotatePoint.ts +15 -0
  526. package/src/util/misc/sin.ts +26 -0
  527. package/src/util/misc/svgParsing.ts +171 -0
  528. package/src/util/misc/textStyles.ts +132 -0
  529. package/src/util/misc/toFixed.ts +8 -0
  530. package/src/util/misc/vectors.ts +83 -0
  531. package/src/util/path/index.ts +1039 -0
  532. package/src/util/path/regex.ts +39 -0
  533. package/src/util/path/typechecks.ts +145 -0
  534. package/src/util/path/typedefs.ts +305 -0
  535. package/src/util/transform_matrix_removal.ts +61 -0
  536. package/src/util/typeAssertions.ts +78 -0
  537. package/tsconfig.json +106 -0
  538. package/HEADER.js +0 -203
  539. package/build.js +0 -287
  540. package/dist/fabric.js +0 -31187
  541. package/dist/fabric.min.js +0 -1
  542. package/old-travis-reference.yml +0 -97
  543. package/src/brushes/circle_brush.class.js +0 -144
  544. package/src/brushes/pattern_brush.class.js +0 -61
  545. package/src/brushes/pencil_brush.class.js +0 -310
  546. package/src/brushes/spray_brush.class.js +0 -219
  547. package/src/canvas.class.js +0 -1312
  548. package/src/color.class.js +0 -636
  549. package/src/control.class.js +0 -339
  550. package/src/controls.actions.js +0 -740
  551. package/src/controls.render.js +0 -99
  552. package/src/elements_parser.js +0 -152
  553. package/src/filters/2d_backend.class.js +0 -65
  554. package/src/filters/blendcolor_filter.class.js +0 -251
  555. package/src/filters/blendimage_filter.class.js +0 -247
  556. package/src/filters/blur_filter.class.js +0 -217
  557. package/src/filters/brightness_filter.class.js +0 -113
  558. package/src/filters/colormatrix_filter.class.js +0 -159
  559. package/src/filters/composed_filter.class.js +0 -72
  560. package/src/filters/contrast_filter.class.js +0 -113
  561. package/src/filters/convolute_filter.class.js +0 -352
  562. package/src/filters/filter_boilerplate.js +0 -111
  563. package/src/filters/filter_generator.js +0 -85
  564. package/src/filters/gamma_filter.class.js +0 -136
  565. package/src/filters/grayscale_filter.class.js +0 -154
  566. package/src/filters/hue_rotation.class.js +0 -107
  567. package/src/filters/invert_filter.class.js +0 -111
  568. package/src/filters/noise_filter.class.js +0 -134
  569. package/src/filters/pixelate_filter.class.js +0 -137
  570. package/src/filters/removecolor_filter.class.js +0 -173
  571. package/src/filters/resize_filter.class.js +0 -490
  572. package/src/filters/saturate_filter.class.js +0 -119
  573. package/src/filters/vibrance_filter.class.js +0 -122
  574. package/src/filters/webgl_backend.class.js +0 -396
  575. package/src/globalFabric.js +0 -4
  576. package/src/gradient.class.js +0 -490
  577. package/src/intersection.class.js +0 -172
  578. package/src/log.js +0 -11
  579. package/src/mixins/animation.mixin.js +0 -231
  580. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  581. package/src/mixins/canvas_events.mixin.js +0 -974
  582. package/src/mixins/canvas_gestures.mixin.js +0 -149
  583. package/src/mixins/canvas_grouping.mixin.js +0 -177
  584. package/src/mixins/canvas_serialization.mixin.js +0 -228
  585. package/src/mixins/collection.mixin.js +0 -170
  586. package/src/mixins/default_controls.js +0 -114
  587. package/src/mixins/itext.svg_export.js +0 -241
  588. package/src/mixins/itext_behavior.mixin.js +0 -940
  589. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  590. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  591. package/src/mixins/object.svg_export.js +0 -258
  592. package/src/mixins/object_geometry.mixin.js +0 -683
  593. package/src/mixins/object_interactivity.mixin.js +0 -314
  594. package/src/mixins/object_origin.mixin.js +0 -255
  595. package/src/mixins/object_stacking.mixin.js +0 -80
  596. package/src/mixins/object_straightening.mixin.js +0 -80
  597. package/src/mixins/observable.mixin.js +0 -141
  598. package/src/mixins/shared_methods.mixin.js +0 -94
  599. package/src/mixins/stateful.mixin.js +0 -107
  600. package/src/mixins/text_style.mixin.js +0 -324
  601. package/src/parser.js +0 -1090
  602. package/src/pattern.class.js +0 -189
  603. package/src/point.class.js +0 -337
  604. package/src/shadow.class.js +0 -195
  605. package/src/shapes/active_selection.class.js +0 -155
  606. package/src/shapes/circle.class.js +0 -210
  607. package/src/shapes/ellipse.class.js +0 -181
  608. package/src/shapes/group.class.js +0 -593
  609. package/src/shapes/image.class.js +0 -764
  610. package/src/shapes/itext.class.js +0 -526
  611. package/src/shapes/line.class.js +0 -324
  612. package/src/shapes/object.class.js +0 -2008
  613. package/src/shapes/path.class.js +0 -384
  614. package/src/shapes/polygon.class.js +0 -81
  615. package/src/shapes/polyline.class.js +0 -268
  616. package/src/shapes/rect.class.js +0 -187
  617. package/src/shapes/text.class.js +0 -1696
  618. package/src/shapes/textbox.class.js +0 -461
  619. package/src/shapes/triangle.class.js +0 -93
  620. package/src/static_canvas.class.js +0 -1881
  621. package/src/util/anim_ease.js +0 -398
  622. package/src/util/animate.js +0 -254
  623. package/src/util/animate_color.js +0 -74
  624. package/src/util/dom_event.js +0 -50
  625. package/src/util/dom_misc.js +0 -300
  626. package/src/util/dom_request.js +0 -54
  627. package/src/util/dom_style.js +0 -70
  628. package/src/util/lang_array.js +0 -94
  629. package/src/util/lang_class.js +0 -115
  630. package/src/util/lang_object.js +0 -75
  631. package/src/util/lang_string.js +0 -110
  632. package/src/util/misc.js +0 -1330
  633. package/src/util/named_accessors.mixin.js +0 -428
  634. package/src/util/path.js +0 -829
@@ -1,490 +0,0 @@
1
- (function() {
2
-
3
- /* _FROM_SVG_START_ */
4
- function getColorStop(el, multiplier) {
5
- var style = el.getAttribute('style'),
6
- offset = el.getAttribute('offset') || 0,
7
- color, colorAlpha, opacity, i;
8
-
9
- // convert percents to absolute values
10
- offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);
11
- offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;
12
- if (style) {
13
- var keyValuePairs = style.split(/\s*;\s*/);
14
-
15
- if (keyValuePairs[keyValuePairs.length - 1] === '') {
16
- keyValuePairs.pop();
17
- }
18
-
19
- for (i = keyValuePairs.length; i--; ) {
20
-
21
- var split = keyValuePairs[i].split(/\s*:\s*/),
22
- key = split[0].trim(),
23
- value = split[1].trim();
24
-
25
- if (key === 'stop-color') {
26
- color = value;
27
- }
28
- else if (key === 'stop-opacity') {
29
- opacity = value;
30
- }
31
- }
32
- }
33
-
34
- if (!color) {
35
- color = el.getAttribute('stop-color') || 'rgb(0,0,0)';
36
- }
37
- if (!opacity) {
38
- opacity = el.getAttribute('stop-opacity');
39
- }
40
-
41
- color = new fabric.Color(color);
42
- colorAlpha = color.getAlpha();
43
- opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);
44
- opacity *= colorAlpha * multiplier;
45
-
46
- return {
47
- offset: offset,
48
- color: color.toRgb(),
49
- opacity: opacity
50
- };
51
- }
52
-
53
- function getLinearCoords(el) {
54
- return {
55
- x1: el.getAttribute('x1') || 0,
56
- y1: el.getAttribute('y1') || 0,
57
- x2: el.getAttribute('x2') || '100%',
58
- y2: el.getAttribute('y2') || 0
59
- };
60
- }
61
-
62
- function getRadialCoords(el) {
63
- return {
64
- x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',
65
- y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',
66
- r1: 0,
67
- x2: el.getAttribute('cx') || '50%',
68
- y2: el.getAttribute('cy') || '50%',
69
- r2: el.getAttribute('r') || '50%'
70
- };
71
- }
72
- /* _FROM_SVG_END_ */
73
-
74
- var clone = fabric.util.object.clone;
75
-
76
- /**
77
- * Gradient class
78
- * @class fabric.Gradient
79
- * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}
80
- * @see {@link fabric.Gradient#initialize} for constructor definition
81
- */
82
- fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {
83
-
84
- /**
85
- * Horizontal offset for aligning gradients coming from SVG when outside pathgroups
86
- * @type Number
87
- * @default 0
88
- */
89
- offsetX: 0,
90
-
91
- /**
92
- * Vertical offset for aligning gradients coming from SVG when outside pathgroups
93
- * @type Number
94
- * @default 0
95
- */
96
- offsetY: 0,
97
-
98
- /**
99
- * A transform matrix to apply to the gradient before painting.
100
- * Imported from svg gradients, is not applied with the current transform in the center.
101
- * Before this transform is applied, the origin point is at the top left corner of the object
102
- * plus the addition of offsetY and offsetX.
103
- * @type Number[]
104
- * @default null
105
- */
106
- gradientTransform: null,
107
-
108
- /**
109
- * coordinates units for coords.
110
- * If `pixels`, the number of coords are in the same unit of width / height.
111
- * If set as `percentage` the coords are still a number, but 1 means 100% of width
112
- * for the X and 100% of the height for the y. It can be bigger than 1 and negative.
113
- * allowed values pixels or percentage.
114
- * @type String
115
- * @default 'pixels'
116
- */
117
- gradientUnits: 'pixels',
118
-
119
- /**
120
- * Gradient type linear or radial
121
- * @type String
122
- * @default 'pixels'
123
- */
124
- type: 'linear',
125
-
126
- /**
127
- * Constructor
128
- * @param {Object} options Options object with type, coords, gradientUnits and colorStops
129
- * @param {Object} [options.type] gradient type linear or radial
130
- * @param {Object} [options.gradientUnits] gradient units
131
- * @param {Object} [options.offsetX] SVG import compatibility
132
- * @param {Object} [options.offsetY] SVG import compatibility
133
- * @param {Object[]} options.colorStops contains the colorstops.
134
- * @param {Object} options.coords contains the coords of the gradient
135
- * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial
136
- * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial
137
- * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial
138
- * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial
139
- * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle
140
- * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle
141
- * @return {fabric.Gradient} thisArg
142
- */
143
- initialize: function(options) {
144
- options || (options = { });
145
- options.coords || (options.coords = { });
146
-
147
- var coords, _this = this;
148
-
149
- // sets everything, then coords and colorstops get sets again
150
- Object.keys(options).forEach(function(option) {
151
- _this[option] = options[option];
152
- });
153
-
154
- if (this.id) {
155
- this.id += '_' + fabric.Object.__uid++;
156
- }
157
- else {
158
- this.id = fabric.Object.__uid++;
159
- }
160
-
161
- coords = {
162
- x1: options.coords.x1 || 0,
163
- y1: options.coords.y1 || 0,
164
- x2: options.coords.x2 || 0,
165
- y2: options.coords.y2 || 0
166
- };
167
-
168
- if (this.type === 'radial') {
169
- coords.r1 = options.coords.r1 || 0;
170
- coords.r2 = options.coords.r2 || 0;
171
- }
172
-
173
- this.coords = coords;
174
- this.colorStops = options.colorStops.slice();
175
- },
176
-
177
- /**
178
- * Adds another colorStop
179
- * @param {Object} colorStop Object with offset and color
180
- * @return {fabric.Gradient} thisArg
181
- */
182
- addColorStop: function(colorStops) {
183
- for (var position in colorStops) {
184
- var color = new fabric.Color(colorStops[position]);
185
- this.colorStops.push({
186
- offset: parseFloat(position),
187
- color: color.toRgb(),
188
- opacity: color.getAlpha()
189
- });
190
- }
191
- return this;
192
- },
193
-
194
- /**
195
- * Returns object representation of a gradient
196
- * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
197
- * @return {Object}
198
- */
199
- toObject: function(propertiesToInclude) {
200
- var object = {
201
- type: this.type,
202
- coords: this.coords,
203
- colorStops: this.colorStops,
204
- offsetX: this.offsetX,
205
- offsetY: this.offsetY,
206
- gradientUnits: this.gradientUnits,
207
- gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform
208
- };
209
- fabric.util.populateWithProperties(this, object, propertiesToInclude);
210
-
211
- return object;
212
- },
213
-
214
- /* _TO_SVG_START_ */
215
- /**
216
- * Returns SVG representation of an gradient
217
- * @param {Object} object Object to create a gradient for
218
- * @return {String} SVG representation of an gradient (linear/radial)
219
- */
220
- toSVG: function(object, options) {
221
- var coords = clone(this.coords, true), i, len, options = options || {},
222
- markup, commonAttributes, colorStops = clone(this.colorStops, true),
223
- needsSwap = coords.r1 > coords.r2,
224
- transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(),
225
- offsetX = -this.offsetX, offsetY = -this.offsetY,
226
- withViewport = !!options.additionalTransform,
227
- gradientUnits = this.gradientUnits === 'pixels' ? 'userSpaceOnUse' : 'objectBoundingBox';
228
- // colorStops must be sorted ascending
229
- colorStops.sort(function(a, b) {
230
- return a.offset - b.offset;
231
- });
232
-
233
- if (gradientUnits === 'objectBoundingBox') {
234
- offsetX /= object.width;
235
- offsetY /= object.height;
236
- }
237
- else {
238
- offsetX += object.width / 2;
239
- offsetY += object.height / 2;
240
- }
241
- if (object.type === 'path' && this.gradientUnits !== 'percentage') {
242
- offsetX -= object.pathOffset.x;
243
- offsetY -= object.pathOffset.y;
244
- }
245
-
246
-
247
- transform[4] -= offsetX;
248
- transform[5] -= offsetY;
249
-
250
- commonAttributes = 'id="SVGID_' + this.id +
251
- '" gradientUnits="' + gradientUnits + '"';
252
- commonAttributes += ' gradientTransform="' + (withViewport ?
253
- options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '" ';
254
-
255
- if (this.type === 'linear') {
256
- markup = [
257
- '<linearGradient ',
258
- commonAttributes,
259
- ' x1="', coords.x1,
260
- '" y1="', coords.y1,
261
- '" x2="', coords.x2,
262
- '" y2="', coords.y2,
263
- '">\n'
264
- ];
265
- }
266
- else if (this.type === 'radial') {
267
- // svg radial gradient has just 1 radius. the biggest.
268
- markup = [
269
- '<radialGradient ',
270
- commonAttributes,
271
- ' cx="', needsSwap ? coords.x1 : coords.x2,
272
- '" cy="', needsSwap ? coords.y1 : coords.y2,
273
- '" r="', needsSwap ? coords.r1 : coords.r2,
274
- '" fx="', needsSwap ? coords.x2 : coords.x1,
275
- '" fy="', needsSwap ? coords.y2 : coords.y1,
276
- '">\n'
277
- ];
278
- }
279
-
280
- if (this.type === 'radial') {
281
- if (needsSwap) {
282
- // svg goes from internal to external radius. if radius are inverted, swap color stops.
283
- colorStops = colorStops.concat();
284
- colorStops.reverse();
285
- for (i = 0, len = colorStops.length; i < len; i++) {
286
- colorStops[i].offset = 1 - colorStops[i].offset;
287
- }
288
- }
289
- var minRadius = Math.min(coords.r1, coords.r2);
290
- if (minRadius > 0) {
291
- // i have to shift all colorStops and add new one in 0.
292
- var maxRadius = Math.max(coords.r1, coords.r2),
293
- percentageShift = minRadius / maxRadius;
294
- for (i = 0, len = colorStops.length; i < len; i++) {
295
- colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);
296
- }
297
- }
298
- }
299
-
300
- for (i = 0, len = colorStops.length; i < len; i++) {
301
- var colorStop = colorStops[i];
302
- markup.push(
303
- '<stop ',
304
- 'offset="', (colorStop.offset * 100) + '%',
305
- '" style="stop-color:', colorStop.color,
306
- (typeof colorStop.opacity !== 'undefined' ? ';stop-opacity: ' + colorStop.opacity : ';'),
307
- '"/>\n'
308
- );
309
- }
310
-
311
- markup.push((this.type === 'linear' ? '</linearGradient>\n' : '</radialGradient>\n'));
312
-
313
- return markup.join('');
314
- },
315
- /* _TO_SVG_END_ */
316
-
317
- /**
318
- * Returns an instance of CanvasGradient
319
- * @param {CanvasRenderingContext2D} ctx Context to render on
320
- * @return {CanvasGradient}
321
- */
322
- toLive: function(ctx) {
323
- var gradient, coords = fabric.util.object.clone(this.coords), i, len;
324
-
325
- if (!this.type) {
326
- return;
327
- }
328
-
329
- if (this.type === 'linear') {
330
- gradient = ctx.createLinearGradient(
331
- coords.x1, coords.y1, coords.x2, coords.y2);
332
- }
333
- else if (this.type === 'radial') {
334
- gradient = ctx.createRadialGradient(
335
- coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);
336
- }
337
-
338
- for (i = 0, len = this.colorStops.length; i < len; i++) {
339
- var color = this.colorStops[i].color,
340
- opacity = this.colorStops[i].opacity,
341
- offset = this.colorStops[i].offset;
342
-
343
- if (typeof opacity !== 'undefined') {
344
- color = new fabric.Color(color).setAlpha(opacity).toRgba();
345
- }
346
- gradient.addColorStop(offset, color);
347
- }
348
-
349
- return gradient;
350
- }
351
- });
352
-
353
- fabric.util.object.extend(fabric.Gradient, {
354
-
355
- /* _FROM_SVG_START_ */
356
- /**
357
- * Returns {@link fabric.Gradient} instance from an SVG element
358
- * @static
359
- * @memberOf fabric.Gradient
360
- * @param {SVGGradientElement} el SVG gradient element
361
- * @param {fabric.Object} instance
362
- * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity.
363
- * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly gradients
364
- * that uses gradientUnits as 'userSpaceOnUse' and percentages.
365
- * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg
366
- * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg
367
- * @param {Object.number} width width part of the svg tag if viewBox is not specified
368
- * @param {Object.number} height height part of the svg tag if viewBox is not specified
369
- * @return {fabric.Gradient} Gradient instance
370
- * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement
371
- * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement
372
- */
373
- fromElement: function(el, instance, opacityAttr, svgOptions) {
374
- /**
375
- * @example:
376
- *
377
- * <linearGradient id="linearGrad1">
378
- * <stop offset="0%" stop-color="white"/>
379
- * <stop offset="100%" stop-color="black"/>
380
- * </linearGradient>
381
- *
382
- * OR
383
- *
384
- * <linearGradient id="linearGrad2">
385
- * <stop offset="0" style="stop-color:rgb(255,255,255)"/>
386
- * <stop offset="1" style="stop-color:rgb(0,0,0)"/>
387
- * </linearGradient>
388
- *
389
- * OR
390
- *
391
- * <radialGradient id="radialGrad1">
392
- * <stop offset="0%" stop-color="white" stop-opacity="1" />
393
- * <stop offset="50%" stop-color="black" stop-opacity="0.5" />
394
- * <stop offset="100%" stop-color="white" stop-opacity="1" />
395
- * </radialGradient>
396
- *
397
- * OR
398
- *
399
- * <radialGradient id="radialGrad2">
400
- * <stop offset="0" stop-color="rgb(255,255,255)" />
401
- * <stop offset="0.5" stop-color="rgb(0,0,0)" />
402
- * <stop offset="1" stop-color="rgb(255,255,255)" />
403
- * </radialGradient>
404
- *
405
- */
406
-
407
- var multiplier = parseFloat(opacityAttr) / (/%$/.test(opacityAttr) ? 100 : 1);
408
- multiplier = multiplier < 0 ? 0 : multiplier > 1 ? 1 : multiplier;
409
- if (isNaN(multiplier)) {
410
- multiplier = 1;
411
- }
412
-
413
- var colorStopEls = el.getElementsByTagName('stop'),
414
- type,
415
- gradientUnits = el.getAttribute('gradientUnits') === 'userSpaceOnUse' ?
416
- 'pixels' : 'percentage',
417
- gradientTransform = el.getAttribute('gradientTransform') || '',
418
- colorStops = [],
419
- coords, i, offsetX = 0, offsetY = 0,
420
- transformMatrix;
421
- if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {
422
- type = 'linear';
423
- coords = getLinearCoords(el);
424
- }
425
- else {
426
- type = 'radial';
427
- coords = getRadialCoords(el);
428
- }
429
-
430
- for (i = colorStopEls.length; i--; ) {
431
- colorStops.push(getColorStop(colorStopEls[i], multiplier));
432
- }
433
-
434
- transformMatrix = fabric.parseTransformAttribute(gradientTransform);
435
-
436
- __convertPercentUnitsToValues(instance, coords, svgOptions, gradientUnits);
437
-
438
- if (gradientUnits === 'pixels') {
439
- offsetX = -instance.left;
440
- offsetY = -instance.top;
441
- }
442
-
443
- var gradient = new fabric.Gradient({
444
- id: el.getAttribute('id'),
445
- type: type,
446
- coords: coords,
447
- colorStops: colorStops,
448
- gradientUnits: gradientUnits,
449
- gradientTransform: transformMatrix,
450
- offsetX: offsetX,
451
- offsetY: offsetY,
452
- });
453
-
454
- return gradient;
455
- }
456
- /* _FROM_SVG_END_ */
457
- });
458
-
459
- /**
460
- * @private
461
- */
462
- function __convertPercentUnitsToValues(instance, options, svgOptions, gradientUnits) {
463
- var propValue, finalValue;
464
- Object.keys(options).forEach(function(prop) {
465
- propValue = options[prop];
466
- if (propValue === 'Infinity') {
467
- finalValue = 1;
468
- }
469
- else if (propValue === '-Infinity') {
470
- finalValue = 0;
471
- }
472
- else {
473
- finalValue = parseFloat(options[prop], 10);
474
- if (typeof propValue === 'string' && /^(\d+\.\d+)%|(\d+)%$/.test(propValue)) {
475
- finalValue *= 0.01;
476
- if (gradientUnits === 'pixels') {
477
- // then we need to fix those percentages here in svg parsing
478
- if (prop === 'x1' || prop === 'x2' || prop === 'r2') {
479
- finalValue *= svgOptions.viewBoxWidth || svgOptions.width;
480
- }
481
- if (prop === 'y1' || prop === 'y2') {
482
- finalValue *= svgOptions.viewBoxHeight || svgOptions.height;
483
- }
484
- }
485
- }
486
- }
487
- options[prop] = finalValue;
488
- });
489
- }
490
- })();
@@ -1,172 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */
6
- var fabric = global.fabric || (global.fabric = { });
7
-
8
- if (fabric.Intersection) {
9
- fabric.warn('fabric.Intersection is already defined');
10
- return;
11
- }
12
-
13
- /**
14
- * Intersection class
15
- * @class fabric.Intersection
16
- * @memberOf fabric
17
- * @constructor
18
- */
19
- function Intersection(status) {
20
- this.status = status;
21
- this.points = [];
22
- }
23
-
24
- fabric.Intersection = Intersection;
25
-
26
- fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {
27
-
28
- constructor: Intersection,
29
-
30
- /**
31
- * Appends a point to intersection
32
- * @param {fabric.Point} point
33
- * @return {fabric.Intersection} thisArg
34
- * @chainable
35
- */
36
- appendPoint: function (point) {
37
- this.points.push(point);
38
- return this;
39
- },
40
-
41
- /**
42
- * Appends points to intersection
43
- * @param {Array} points
44
- * @return {fabric.Intersection} thisArg
45
- * @chainable
46
- */
47
- appendPoints: function (points) {
48
- this.points = this.points.concat(points);
49
- return this;
50
- }
51
- };
52
-
53
- /**
54
- * Checks if one line intersects another
55
- * TODO: rename in intersectSegmentSegment
56
- * @static
57
- * @param {fabric.Point} a1
58
- * @param {fabric.Point} a2
59
- * @param {fabric.Point} b1
60
- * @param {fabric.Point} b2
61
- * @return {fabric.Intersection}
62
- */
63
- fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {
64
- var result,
65
- uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),
66
- ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),
67
- uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);
68
- if (uB !== 0) {
69
- var ua = uaT / uB,
70
- ub = ubT / uB;
71
- if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {
72
- result = new Intersection('Intersection');
73
- result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));
74
- }
75
- else {
76
- result = new Intersection();
77
- }
78
- }
79
- else {
80
- if (uaT === 0 || ubT === 0) {
81
- result = new Intersection('Coincident');
82
- }
83
- else {
84
- result = new Intersection('Parallel');
85
- }
86
- }
87
- return result;
88
- };
89
-
90
- /**
91
- * Checks if line intersects polygon
92
- * TODO: rename in intersectSegmentPolygon
93
- * fix detection of coincident
94
- * @static
95
- * @param {fabric.Point} a1
96
- * @param {fabric.Point} a2
97
- * @param {Array} points
98
- * @return {fabric.Intersection}
99
- */
100
- fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {
101
- var result = new Intersection(),
102
- length = points.length,
103
- b1, b2, inter, i;
104
-
105
- for (i = 0; i < length; i++) {
106
- b1 = points[i];
107
- b2 = points[(i + 1) % length];
108
- inter = Intersection.intersectLineLine(a1, a2, b1, b2);
109
-
110
- result.appendPoints(inter.points);
111
- }
112
- if (result.points.length > 0) {
113
- result.status = 'Intersection';
114
- }
115
- return result;
116
- };
117
-
118
- /**
119
- * Checks if polygon intersects another polygon
120
- * @static
121
- * @param {Array} points1
122
- * @param {Array} points2
123
- * @return {fabric.Intersection}
124
- */
125
- fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {
126
- var result = new Intersection(),
127
- length = points1.length, i;
128
-
129
- for (i = 0; i < length; i++) {
130
- var a1 = points1[i],
131
- a2 = points1[(i + 1) % length],
132
- inter = Intersection.intersectLinePolygon(a1, a2, points2);
133
-
134
- result.appendPoints(inter.points);
135
- }
136
- if (result.points.length > 0) {
137
- result.status = 'Intersection';
138
- }
139
- return result;
140
- };
141
-
142
- /**
143
- * Checks if polygon intersects rectangle
144
- * @static
145
- * @param {Array} points
146
- * @param {fabric.Point} r1
147
- * @param {fabric.Point} r2
148
- * @return {fabric.Intersection}
149
- */
150
- fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {
151
- var min = r1.min(r2),
152
- max = r1.max(r2),
153
- topRight = new fabric.Point(max.x, min.y),
154
- bottomLeft = new fabric.Point(min.x, max.y),
155
- inter1 = Intersection.intersectLinePolygon(min, topRight, points),
156
- inter2 = Intersection.intersectLinePolygon(topRight, max, points),
157
- inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),
158
- inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),
159
- result = new Intersection();
160
-
161
- result.appendPoints(inter1.points);
162
- result.appendPoints(inter2.points);
163
- result.appendPoints(inter3.points);
164
- result.appendPoints(inter4.points);
165
-
166
- if (result.points.length > 0) {
167
- result.status = 'Intersection';
168
- }
169
- return result;
170
- };
171
-
172
- })(typeof exports !== 'undefined' ? exports : this);
package/src/log.js DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * Wrapper around `console.log` (when available)
3
- * @param {*} [values] Values to log
4
- */
5
- fabric.log = console.log;
6
-
7
- /**
8
- * Wrapper around `console.warn` (when available)
9
- * @param {*} [values] Values to log as a warning
10
- */
11
- fabric.warn = console.warn;