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,99 +0,0 @@
1
- (function(global) {
2
-
3
- 'use strict';
4
-
5
- var fabric = global.fabric || (global.fabric = { }),
6
- degreesToRadians = fabric.util.degreesToRadians,
7
- controls = fabric.controlsUtils;
8
-
9
- /**
10
- * Render a round control, as per fabric features.
11
- * This function is written to respect object properties like transparentCorners, cornerSize
12
- * cornerColor, cornerStrokeColor
13
- * plus the addition of offsetY and offsetX.
14
- * @param {CanvasRenderingContext2D} ctx context to render on
15
- * @param {Number} left x coordinate where the control center should be
16
- * @param {Number} top y coordinate where the control center should be
17
- * @param {Object} styleOverride override for fabric.Object controls style
18
- * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls
19
- */
20
- function renderCircleControl (ctx, left, top, styleOverride, fabricObject) {
21
- styleOverride = styleOverride || {};
22
- var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,
23
- ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,
24
- transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?
25
- styleOverride.transparentCorners : fabricObject.transparentCorners,
26
- methodName = transparentCorners ? 'stroke' : 'fill',
27
- stroke = !transparentCorners && (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor),
28
- myLeft = left,
29
- myTop = top, size;
30
- ctx.save();
31
- ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;
32
- ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;
33
- // as soon as fabric react v5, remove ie11, use proper ellipse code.
34
- if (xSize > ySize) {
35
- size = xSize;
36
- ctx.scale(1.0, ySize / xSize);
37
- myTop = top * xSize / ySize;
38
- }
39
- else if (ySize > xSize) {
40
- size = ySize;
41
- ctx.scale(xSize / ySize, 1.0);
42
- myLeft = left * ySize / xSize;
43
- }
44
- else {
45
- size = xSize;
46
- }
47
- // this is still wrong
48
- ctx.lineWidth = 1;
49
- ctx.beginPath();
50
- ctx.arc(myLeft, myTop, size / 2, 0, 2 * Math.PI, false);
51
- ctx[methodName]();
52
- if (stroke) {
53
- ctx.stroke();
54
- }
55
- ctx.restore();
56
- }
57
-
58
- /**
59
- * Render a square control, as per fabric features.
60
- * This function is written to respect object properties like transparentCorners, cornerSize
61
- * cornerColor, cornerStrokeColor
62
- * plus the addition of offsetY and offsetX.
63
- * @param {CanvasRenderingContext2D} ctx context to render on
64
- * @param {Number} left x coordinate where the control center should be
65
- * @param {Number} top y coordinate where the control center should be
66
- * @param {Object} styleOverride override for fabric.Object controls style
67
- * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls
68
- */
69
- function renderSquareControl(ctx, left, top, styleOverride, fabricObject) {
70
- styleOverride = styleOverride || {};
71
- var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,
72
- ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,
73
- transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?
74
- styleOverride.transparentCorners : fabricObject.transparentCorners,
75
- methodName = transparentCorners ? 'stroke' : 'fill',
76
- stroke = !transparentCorners && (
77
- styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor
78
- ), xSizeBy2 = xSize / 2, ySizeBy2 = ySize / 2;
79
- ctx.save();
80
- ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;
81
- ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;
82
- // this is still wrong
83
- ctx.lineWidth = 1;
84
- ctx.translate(left, top);
85
- ctx.rotate(degreesToRadians(fabricObject.angle));
86
- // this does not work, and fixed with ( && ) does not make sense.
87
- // to have real transparent corners we need the controls on upperCanvas
88
- // transparentCorners || ctx.clearRect(-xSizeBy2, -ySizeBy2, xSize, ySize);
89
- ctx[methodName + 'Rect'](-xSizeBy2, -ySizeBy2, xSize, ySize);
90
- if (stroke) {
91
- ctx.strokeRect(-xSizeBy2, -ySizeBy2, xSize, ySize);
92
- }
93
- ctx.restore();
94
- }
95
-
96
- controls.renderCircleControl = renderCircleControl;
97
- controls.renderSquareControl = renderSquareControl;
98
-
99
- })(typeof exports !== 'undefined' ? exports : this);
@@ -1,152 +0,0 @@
1
- fabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions, doc) {
2
- this.elements = elements;
3
- this.callback = callback;
4
- this.options = options;
5
- this.reviver = reviver;
6
- this.svgUid = (options && options.svgUid) || 0;
7
- this.parsingOptions = parsingOptions;
8
- this.regexUrl = /^url\(['"]?#([^'"]+)['"]?\)/g;
9
- this.doc = doc;
10
- };
11
-
12
- (function(proto) {
13
- proto.parse = function() {
14
- this.instances = new Array(this.elements.length);
15
- this.numElements = this.elements.length;
16
- this.createObjects();
17
- };
18
-
19
- proto.createObjects = function() {
20
- var _this = this;
21
- this.elements.forEach(function(element, i) {
22
- element.setAttribute('svgUid', _this.svgUid);
23
- _this.createObject(element, i);
24
- });
25
- };
26
-
27
- proto.findTag = function(el) {
28
- return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];
29
- };
30
-
31
- proto.createObject = function(el, index) {
32
- var klass = this.findTag(el);
33
- if (klass && klass.fromElement) {
34
- try {
35
- klass.fromElement(el, this.createCallback(index, el), this.options);
36
- }
37
- catch (err) {
38
- fabric.log(err);
39
- }
40
- }
41
- else {
42
- this.checkIfDone();
43
- }
44
- };
45
-
46
- proto.createCallback = function(index, el) {
47
- var _this = this;
48
- return function(obj) {
49
- var _options;
50
- _this.resolveGradient(obj, el, 'fill');
51
- _this.resolveGradient(obj, el, 'stroke');
52
- if (obj instanceof fabric.Image && obj._originalElement) {
53
- _options = obj.parsePreserveAspectRatioAttribute(el);
54
- }
55
- obj._removeTransformMatrix(_options);
56
- _this.resolveClipPath(obj, el);
57
- _this.reviver && _this.reviver(el, obj);
58
- _this.instances[index] = obj;
59
- _this.checkIfDone();
60
- };
61
- };
62
-
63
- proto.extractPropertyDefinition = function(obj, property, storage) {
64
- var value = obj[property], regex = this.regexUrl;
65
- if (!regex.test(value)) {
66
- return;
67
- }
68
- regex.lastIndex = 0;
69
- var id = regex.exec(value)[1];
70
- regex.lastIndex = 0;
71
- return fabric[storage][this.svgUid][id];
72
- };
73
-
74
- proto.resolveGradient = function(obj, el, property) {
75
- var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs');
76
- if (gradientDef) {
77
- var opacityAttr = el.getAttribute(property + '-opacity');
78
- var gradient = fabric.Gradient.fromElement(gradientDef, obj, opacityAttr, this.options);
79
- obj.set(property, gradient);
80
- }
81
- };
82
-
83
- proto.createClipPathCallback = function(obj, container) {
84
- return function(_newObj) {
85
- _newObj._removeTransformMatrix();
86
- _newObj.fillRule = _newObj.clipRule;
87
- container.push(_newObj);
88
- };
89
- };
90
-
91
- proto.resolveClipPath = function(obj, usingElement) {
92
- var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'),
93
- element, klass, objTransformInv, container, gTransform, options;
94
- if (clipPath) {
95
- container = [];
96
- objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix());
97
- // move the clipPath tag as sibling to the real element that is using it
98
- var clipPathTag = clipPath[0].parentNode;
99
- var clipPathOwner = usingElement;
100
- while (clipPathOwner.parentNode && clipPathOwner.getAttribute('clip-path') !== obj.clipPath) {
101
- clipPathOwner = clipPathOwner.parentNode;
102
- }
103
- clipPathOwner.parentNode.appendChild(clipPathTag);
104
- for (var i = 0; i < clipPath.length; i++) {
105
- element = clipPath[i];
106
- klass = this.findTag(element);
107
- klass.fromElement(
108
- element,
109
- this.createClipPathCallback(obj, container),
110
- this.options
111
- );
112
- }
113
- if (container.length === 1) {
114
- clipPath = container[0];
115
- }
116
- else {
117
- clipPath = new fabric.Group(container);
118
- }
119
- gTransform = fabric.util.multiplyTransformMatrices(
120
- objTransformInv,
121
- clipPath.calcTransformMatrix()
122
- );
123
- if (clipPath.clipPath) {
124
- this.resolveClipPath(clipPath, clipPathOwner);
125
- }
126
- var options = fabric.util.qrDecompose(gTransform);
127
- clipPath.flipX = false;
128
- clipPath.flipY = false;
129
- clipPath.set('scaleX', options.scaleX);
130
- clipPath.set('scaleY', options.scaleY);
131
- clipPath.angle = options.angle;
132
- clipPath.skewX = options.skewX;
133
- clipPath.skewY = 0;
134
- clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center');
135
- obj.clipPath = clipPath;
136
- }
137
- else {
138
- // if clip-path does not resolve to any element, delete the property.
139
- delete obj.clipPath;
140
- }
141
- };
142
-
143
- proto.checkIfDone = function() {
144
- if (--this.numElements === 0) {
145
- this.instances = this.instances.filter(function(el) {
146
- // eslint-disable-next-line no-eq-null, eqeqeq
147
- return el != null;
148
- });
149
- this.callback(this.instances, this.elements);
150
- }
151
- };
152
- })(fabric.ElementsParser.prototype);
@@ -1,65 +0,0 @@
1
- (function() {
2
-
3
- 'use strict';
4
-
5
- var noop = function() {};
6
-
7
- fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;
8
-
9
- /**
10
- * Canvas 2D filter backend.
11
- */
12
- function Canvas2dFilterBackend() {};
13
-
14
- Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {
15
- evictCachesForKey: noop,
16
- dispose: noop,
17
- clearWebGLCaches: noop,
18
-
19
- /**
20
- * Experimental. This object is a sort of repository of help layers used to avoid
21
- * of recreating them during frequent filtering. If you are previewing a filter with
22
- * a slider you probably do not want to create help layers every filter step.
23
- * in this object there will be appended some canvases, created once, resized sometimes
24
- * cleared never. Clearing is left to the developer.
25
- **/
26
- resources: {
27
-
28
- },
29
-
30
- /**
31
- * Apply a set of filters against a source image and draw the filtered output
32
- * to the provided destination canvas.
33
- *
34
- * @param {EnhancedFilter} filters The filter to apply.
35
- * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.
36
- * @param {Number} sourceWidth The width of the source input.
37
- * @param {Number} sourceHeight The height of the source input.
38
- * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.
39
- */
40
- applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {
41
- var ctx = targetCanvas.getContext('2d');
42
- ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);
43
- var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);
44
- var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);
45
- var pipelineState = {
46
- sourceWidth: sourceWidth,
47
- sourceHeight: sourceHeight,
48
- imageData: imageData,
49
- originalEl: sourceElement,
50
- originalImageData: originalImageData,
51
- canvasEl: targetCanvas,
52
- ctx: ctx,
53
- filterBackend: this,
54
- };
55
- filters.forEach(function(filter) { filter.applyTo(pipelineState); });
56
- if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {
57
- targetCanvas.width = pipelineState.imageData.width;
58
- targetCanvas.height = pipelineState.imageData.height;
59
- }
60
- ctx.putImageData(pipelineState.imageData, 0, 0);
61
- return pipelineState;
62
- },
63
-
64
- };
65
- })();
@@ -1,251 +0,0 @@
1
- (function(global) {
2
- 'use strict';
3
-
4
- var fabric = global.fabric,
5
- filters = fabric.Image.filters,
6
- createClass = fabric.util.createClass;
7
-
8
- /**
9
- * Color Blend filter class
10
- * @class fabric.Image.filter.BlendColor
11
- * @memberOf fabric.Image.filters
12
- * @extends fabric.Image.filters.BaseFilter
13
- * @example
14
- * var filter = new fabric.Image.filters.BlendColor({
15
- * color: '#000',
16
- * mode: 'multiply'
17
- * });
18
- *
19
- * var filter = new fabric.Image.filters.BlendImage({
20
- * image: fabricImageObject,
21
- * mode: 'multiply',
22
- * alpha: 0.5
23
- * });
24
- * object.filters.push(filter);
25
- * object.applyFilters();
26
- * canvas.renderAll();
27
- */
28
-
29
- filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {
30
- type: 'BlendColor',
31
-
32
- /**
33
- * Color to make the blend operation with. default to a reddish color since black or white
34
- * gives always strong result.
35
- * @type String
36
- * @default
37
- **/
38
- color: '#F95C63',
39
-
40
- /**
41
- * Blend mode for the filter: one of multiply, add, diff, screen, subtract,
42
- * darken, lighten, overlay, exclusion, tint.
43
- * @type String
44
- * @default
45
- **/
46
- mode: 'multiply',
47
-
48
- /**
49
- * alpha value. represent the strength of the blend color operation.
50
- * @type Number
51
- * @default
52
- **/
53
- alpha: 1,
54
-
55
- /**
56
- * Fragment source for the Multiply program
57
- */
58
- fragmentSource: {
59
- multiply: 'gl_FragColor.rgb *= uColor.rgb;\n',
60
- screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\n',
61
- add: 'gl_FragColor.rgb += uColor.rgb;\n',
62
- diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\n',
63
- subtract: 'gl_FragColor.rgb -= uColor.rgb;\n',
64
- lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\n',
65
- darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\n',
66
- exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\n',
67
- overlay: 'if (uColor.r < 0.5) {\n' +
68
- 'gl_FragColor.r *= 2.0 * uColor.r;\n' +
69
- '} else {\n' +
70
- 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\n' +
71
- '}\n' +
72
- 'if (uColor.g < 0.5) {\n' +
73
- 'gl_FragColor.g *= 2.0 * uColor.g;\n' +
74
- '} else {\n' +
75
- 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\n' +
76
- '}\n' +
77
- 'if (uColor.b < 0.5) {\n' +
78
- 'gl_FragColor.b *= 2.0 * uColor.b;\n' +
79
- '} else {\n' +
80
- 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\n' +
81
- '}\n',
82
- tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\n' +
83
- 'gl_FragColor.rgb += uColor.rgb;\n',
84
- },
85
-
86
- /**
87
- * build the fragment source for the filters, joining the common part with
88
- * the specific one.
89
- * @param {String} mode the mode of the filter, a key of this.fragmentSource
90
- * @return {String} the source to be compiled
91
- * @private
92
- */
93
- buildSource: function(mode) {
94
- return 'precision highp float;\n' +
95
- 'uniform sampler2D uTexture;\n' +
96
- 'uniform vec4 uColor;\n' +
97
- 'varying vec2 vTexCoord;\n' +
98
- 'void main() {\n' +
99
- 'vec4 color = texture2D(uTexture, vTexCoord);\n' +
100
- 'gl_FragColor = color;\n' +
101
- 'if (color.a > 0.0) {\n' +
102
- this.fragmentSource[mode] +
103
- '}\n' +
104
- '}';
105
- },
106
-
107
- /**
108
- * Retrieves the cached shader.
109
- * @param {Object} options
110
- * @param {WebGLRenderingContext} options.context The GL context used for rendering.
111
- * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.
112
- */
113
- retrieveShader: function(options) {
114
- var cacheKey = this.type + '_' + this.mode, shaderSource;
115
- if (!options.programCache.hasOwnProperty(cacheKey)) {
116
- shaderSource = this.buildSource(this.mode);
117
- options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);
118
- }
119
- return options.programCache[cacheKey];
120
- },
121
-
122
- /**
123
- * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.
124
- *
125
- * @param {Object} options
126
- * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.
127
- */
128
- applyTo2d: function(options) {
129
- var imageData = options.imageData,
130
- data = imageData.data, iLen = data.length,
131
- tr, tg, tb,
132
- r, g, b,
133
- source, alpha1 = 1 - this.alpha;
134
-
135
- source = new fabric.Color(this.color).getSource();
136
- tr = source[0] * this.alpha;
137
- tg = source[1] * this.alpha;
138
- tb = source[2] * this.alpha;
139
-
140
- for (var i = 0; i < iLen; i += 4) {
141
-
142
- r = data[i];
143
- g = data[i + 1];
144
- b = data[i + 2];
145
-
146
- switch (this.mode) {
147
- case 'multiply':
148
- data[i] = r * tr / 255;
149
- data[i + 1] = g * tg / 255;
150
- data[i + 2] = b * tb / 255;
151
- break;
152
- case 'screen':
153
- data[i] = 255 - (255 - r) * (255 - tr) / 255;
154
- data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;
155
- data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;
156
- break;
157
- case 'add':
158
- data[i] = r + tr;
159
- data[i + 1] = g + tg;
160
- data[i + 2] = b + tb;
161
- break;
162
- case 'diff':
163
- case 'difference':
164
- data[i] = Math.abs(r - tr);
165
- data[i + 1] = Math.abs(g - tg);
166
- data[i + 2] = Math.abs(b - tb);
167
- break;
168
- case 'subtract':
169
- data[i] = r - tr;
170
- data[i + 1] = g - tg;
171
- data[i + 2] = b - tb;
172
- break;
173
- case 'darken':
174
- data[i] = Math.min(r, tr);
175
- data[i + 1] = Math.min(g, tg);
176
- data[i + 2] = Math.min(b, tb);
177
- break;
178
- case 'lighten':
179
- data[i] = Math.max(r, tr);
180
- data[i + 1] = Math.max(g, tg);
181
- data[i + 2] = Math.max(b, tb);
182
- break;
183
- case 'overlay':
184
- data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);
185
- data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);
186
- data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);
187
- break;
188
- case 'exclusion':
189
- data[i] = tr + r - ((2 * tr * r) / 255);
190
- data[i + 1] = tg + g - ((2 * tg * g) / 255);
191
- data[i + 2] = tb + b - ((2 * tb * b) / 255);
192
- break;
193
- case 'tint':
194
- data[i] = tr + r * alpha1;
195
- data[i + 1] = tg + g * alpha1;
196
- data[i + 2] = tb + b * alpha1;
197
- }
198
- }
199
- },
200
-
201
- /**
202
- * Return WebGL uniform locations for this filter's shader.
203
- *
204
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
205
- * @param {WebGLShaderProgram} program This filter's compiled shader program.
206
- */
207
- getUniformLocations: function(gl, program) {
208
- return {
209
- uColor: gl.getUniformLocation(program, 'uColor'),
210
- };
211
- },
212
-
213
- /**
214
- * Send data from this filter to its shader program's uniforms.
215
- *
216
- * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.
217
- * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects
218
- */
219
- sendUniformData: function(gl, uniformLocations) {
220
- var source = new fabric.Color(this.color).getSource();
221
- source[0] = this.alpha * source[0] / 255;
222
- source[1] = this.alpha * source[1] / 255;
223
- source[2] = this.alpha * source[2] / 255;
224
- source[3] = this.alpha;
225
- gl.uniform4fv(uniformLocations.uColor, source);
226
- },
227
-
228
- /**
229
- * Returns object representation of an instance
230
- * @return {Object} Object representation of an instance
231
- */
232
- toObject: function() {
233
- return {
234
- type: this.type,
235
- color: this.color,
236
- mode: this.mode,
237
- alpha: this.alpha
238
- };
239
- }
240
- });
241
-
242
- /**
243
- * Returns filter instance from an object representation
244
- * @static
245
- * @param {Object} object Object to create an instance from
246
- * @param {function} [callback] to be invoked after filter creation
247
- * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor
248
- */
249
- fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;
250
-
251
- })(typeof exports !== 'undefined' ? exports : this);