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,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;