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
@@ -0,0 +1,220 @@
1
+ import type { TRadian } from '../../typedefs';
2
+ import type { XY, Point } from '../../Point';
3
+ export type TPathSegmentInfoCommon<C extends string> = {
4
+ x: number;
5
+ y: number;
6
+ command?: C;
7
+ length: number;
8
+ };
9
+ export type TCurveInfo<C extends string> = TPathSegmentInfoCommon<C> & {
10
+ /**
11
+ * Get the Point a certain percent distance along the curve
12
+ * @param pct
13
+ */
14
+ iterator: (pct: number) => Point;
15
+ /**
16
+ * Get the angle to a percent
17
+ * @param pct
18
+ */
19
+ angleFinder: (pct: number) => number;
20
+ /**
21
+ * Total length of the curve
22
+ */
23
+ length: number;
24
+ };
25
+ export type TEndPathInfo = TPathSegmentInfoCommon<'Z'> & {
26
+ destX: number;
27
+ destY: number;
28
+ };
29
+ /**
30
+ * Relevant info to calculate path length/points on path
31
+ * for each command type in a simplified parsed path
32
+ */
33
+ export type TPathSegmentCommandInfo = {
34
+ M: TPathSegmentInfoCommon<'M'>;
35
+ L: TPathSegmentInfoCommon<'L'>;
36
+ C: TCurveInfo<'C'>;
37
+ Q: TCurveInfo<'Q'>;
38
+ Z: TEndPathInfo;
39
+ };
40
+ export type TPathSegmentInfo = TPathSegmentCommandInfo[keyof TPathSegmentCommandInfo];
41
+ /**
42
+ * A parsed command of any length (even impossible ones)
43
+ */
44
+ export type TParsedCommand = [command: string] | [command: string, arg1: number] | [command: string, arg1: number, arg2: number] | [command: string, arg1: number, arg2: number, arg3: number] | [command: string, arg1: number, arg2: number, arg3: number, arg4: number] | [
45
+ command: string,
46
+ arg1: number,
47
+ arg2: number,
48
+ arg3: number,
49
+ arg4: number,
50
+ arg5: number
51
+ ] | [
52
+ command: string,
53
+ arg1: number,
54
+ arg2: number,
55
+ arg3: number,
56
+ arg4: number,
57
+ arg5: number,
58
+ arg6: number
59
+ ] | [
60
+ command: string,
61
+ arg1: number,
62
+ arg2: number,
63
+ arg3: number,
64
+ arg4: number,
65
+ arg5: number,
66
+ arg6: number,
67
+ arg7: number
68
+ ];
69
+ /**
70
+ * Command strings of any length
71
+ */
72
+ type TCommand1<T extends TParsedCommand> = `${T[0]}`;
73
+ type TCommand2<T extends TParsedCommand> = `${T[0]} ${T[1]}`;
74
+ type TCommand3<T extends TParsedCommand> = `${T[0]} ${T[1]} ${T[2]}`;
75
+ type TCommand5<T extends TParsedCommand> = `${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]}`;
76
+ type TCommand7<T extends TParsedCommand> = `${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]} ${T[5]} ${T[6]}`;
77
+ type TCommand8<T extends TParsedCommand> = `${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]} ${T[5]} ${T[6]} ${T[7]}`;
78
+ /**
79
+ * Begin parsed SVG path commands
80
+ * Read about commands at {@link https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths|MDN}
81
+ */
82
+ export type TParsedAbsoluteMoveToCommand = [command: 'M', x: number, y: number];
83
+ export type TParsedRelativeMoveToCommand = [
84
+ command: 'm',
85
+ dx: number,
86
+ dy: number
87
+ ];
88
+ export type TParsedMoveToCommand = TParsedAbsoluteMoveToCommand | TParsedRelativeMoveToCommand;
89
+ export type TMoveToCommand = TCommand3<TParsedMoveToCommand>;
90
+ export type TParsedAbsoluteLineCommand = [command: 'L', x: number, y: number];
91
+ export type TParsedRelativeLineCommand = [command: 'l', dx: number, dy: number];
92
+ export type TParsedLineCommand = TParsedAbsoluteLineCommand | TParsedRelativeLineCommand;
93
+ export type TLineCommand = TCommand3<TParsedLineCommand>;
94
+ export type TParsedAbsoluteHorizontalLineCommand = [command: 'H', x: number];
95
+ export type TParsedRelativeHorizontalLineCommand = [command: 'h', dx: number];
96
+ export type TParsedHorizontalLineCommand = TParsedAbsoluteHorizontalLineCommand | TParsedRelativeHorizontalLineCommand;
97
+ export type THorizontalLineCommand = TCommand2<TParsedHorizontalLineCommand>;
98
+ export type TParsedAbsoluteVerticalLineCommand = [command: 'V', y: number];
99
+ export type TParsedRelativeVerticalLineCommand = [command: 'v', dy: number];
100
+ export type TParsedVerticalLineCommand = TParsedAbsoluteVerticalLineCommand | TParsedRelativeVerticalLineCommand;
101
+ export type TVerticalLineCommand = TCommand2<TParsedVerticalLineCommand>;
102
+ export type TParsedAbsoluteClosePathCommand = [command: 'Z'];
103
+ export type TParsedRelativeClosePathCommand = [command: 'z'];
104
+ export type TParsedClosePathCommand = TParsedAbsoluteClosePathCommand | TParsedRelativeClosePathCommand;
105
+ export type TClosePathCommand = TCommand1<TParsedClosePathCommand>;
106
+ export type TParsedAbsoluteCubicCurveCommand = [
107
+ command: 'C',
108
+ controlPoint1X: number,
109
+ controlPoint1Y: number,
110
+ controlPoint2X: number,
111
+ controlPoint2Y: number,
112
+ endX: number,
113
+ endY: number
114
+ ];
115
+ export type TParsedRelativeCubicCurveCommand = [
116
+ command: 'c',
117
+ controlPoint1DX: number,
118
+ controlPoint1DY: number,
119
+ controlPoint2DX: number,
120
+ controlPoint2DY: number,
121
+ endDX: number,
122
+ endDY: number
123
+ ];
124
+ export type TParsedCubicCurveCommand = TParsedAbsoluteCubicCurveCommand | TParsedRelativeCubicCurveCommand;
125
+ export type TCubicCurveCommand = TCommand7<TParsedCubicCurveCommand>;
126
+ export type TParsedAbsoluteCubicCurveShortcutCommand = [
127
+ command: 'S',
128
+ controlPoint2X: number,
129
+ controlPoint2Y: number,
130
+ endX: number,
131
+ endY: number
132
+ ];
133
+ export type TParsedRelativeCubicCurveShortcutCommand = [
134
+ command: 's',
135
+ controlPoint2DX: number,
136
+ controlPoint2DY: number,
137
+ endDX: number,
138
+ endDY: number
139
+ ];
140
+ export type TParsedCubicCurveShortcutCommand = TParsedAbsoluteCubicCurveShortcutCommand | TParsedRelativeCubicCurveShortcutCommand;
141
+ export type TCubicCurveShortcutCommand = TCommand5<TParsedCubicCurveShortcutCommand>;
142
+ export type TParsedAbsoluteQuadraticCurveCommand = [
143
+ command: 'Q',
144
+ controlPointX: number,
145
+ controlPointY: number,
146
+ endX: number,
147
+ endY: number
148
+ ];
149
+ export type TParsedRelativeQuadraticCurveCommand = [
150
+ command: 'q',
151
+ controlPointDX: number,
152
+ controlPointDY: number,
153
+ endDX: number,
154
+ endDY: number
155
+ ];
156
+ export type TParsedQuadraticCurveCommand = TParsedAbsoluteQuadraticCurveCommand | TParsedRelativeQuadraticCurveCommand;
157
+ export type TQuadraticCurveCommand = TCommand5<TParsedQuadraticCurveCommand>;
158
+ export type TParsedAbsoluteQuadraticCurveShortcutCommand = [
159
+ command: 'T',
160
+ endX: number,
161
+ endY: number
162
+ ];
163
+ export type TParsedRelativeQuadraticCurveShortcutCommand = [
164
+ command: 't',
165
+ endDX: number,
166
+ endDY: number
167
+ ];
168
+ export type TParsedQuadraticCurveShortcutCommand = TParsedAbsoluteQuadraticCurveShortcutCommand | TParsedRelativeQuadraticCurveShortcutCommand;
169
+ export type TQuadraticCurveShortcutCommand = TCommand3<TParsedQuadraticCurveShortcutCommand>;
170
+ export type TParsedAbsoluteArcCommand = [
171
+ command: 'A',
172
+ radiusX: number,
173
+ radiusY: number,
174
+ rotation: TRadian,
175
+ largeArc: 0 | 1,
176
+ sweep: 0 | 1,
177
+ endX: number,
178
+ endY: number
179
+ ];
180
+ export type TParsedRelativeArcCommand = [
181
+ command: 'a',
182
+ radiusX: number,
183
+ radiusY: number,
184
+ rotation: TRadian,
185
+ largeArc: 0 | 1,
186
+ sweep: 0 | 1,
187
+ endDX: number,
188
+ endDY: number
189
+ ];
190
+ export type TParsedArcCommand = TParsedAbsoluteArcCommand | TParsedRelativeArcCommand;
191
+ export type TArcCommandSingleFlag<T extends TParsedArcCommand> = `${T[0]} ${T[1]} ${T[2]} ${T[3]} ${T[4]}${T[5]} ${T[6]} ${T[7]}`;
192
+ export type TArcCommand = TCommand8<TParsedArcCommand> | TArcCommandSingleFlag<TParsedArcCommand>;
193
+ /**
194
+ * End parsed path commands
195
+ */
196
+ /**
197
+ * Any old valid SVG path command
198
+ */
199
+ export type TComplexParsedCommand = TParsedMoveToCommand | TParsedLineCommand | TParsedHorizontalLineCommand | TParsedVerticalLineCommand | TParsedClosePathCommand | TParsedCubicCurveCommand | TParsedCubicCurveShortcutCommand | TParsedQuadraticCurveCommand | TParsedQuadraticCurveShortcutCommand | TParsedArcCommand;
200
+ /**
201
+ * A series of path commands
202
+ */
203
+ export type TComplexPathData = TComplexParsedCommand[];
204
+ /**
205
+ * Any SVG command that all Fabric functions can understand
206
+ *
207
+ */
208
+ export type TSimpleParsedCommand = TParsedAbsoluteMoveToCommand | TParsedAbsoluteLineCommand | TParsedAbsoluteClosePathCommand | TParsedAbsoluteCubicCurveCommand | TParsedAbsoluteQuadraticCurveCommand;
209
+ /**
210
+ * A series of simple paths
211
+ */
212
+ export type TSimplePathData = TSimpleParsedCommand[];
213
+ /**
214
+ * A point (vector) and angle between the vector and x-axis
215
+ */
216
+ export type TPointAngle = XY & {
217
+ angle: TRadian;
218
+ };
219
+ export {};
220
+ //# sourceMappingURL=typedefs.d.ts.map
@@ -0,0 +1,14 @@
1
+ import type { FabricObject } from '../shapes/Object/FabricObject';
2
+ import { TMat2D } from '../typedefs';
3
+ type FabricObjectWithTransformMatrix = FabricObject & {
4
+ transformMatrix?: TMat2D;
5
+ };
6
+ /**
7
+ * This function is an helper for svg import. it removes the transform matrix
8
+ * and set to object properties that fabricjs can handle
9
+ * @private
10
+ * @param {Object} preserveAspectRatioOptions
11
+ */
12
+ export declare const removeTransformMatrixForSvgParsing: (object: FabricObjectWithTransformMatrix, preserveAspectRatioOptions?: any) => void;
13
+ export {};
14
+ //# sourceMappingURL=transform_matrix_removal.d.ts.map
@@ -0,0 +1,19 @@
1
+ import type { ActiveSelection } from '../shapes/ActiveSelection';
2
+ import type { Group } from '../shapes/Group';
3
+ import type { FabricObject, TCachedFabricObject } from '../shapes/Object/Object';
4
+ import type { FabricObjectWithDragSupport } from '../shapes/Object/InteractiveObject';
5
+ import type { TFiller } from '../typedefs';
6
+ import type { Text } from '../shapes/Text/Text';
7
+ import type { Pattern } from '../Pattern';
8
+ import type { IText } from '../shapes/IText/IText';
9
+ import type { Textbox } from '../shapes/Textbox';
10
+ export declare const isFiller: (filler: TFiller | string | null) => filler is TFiller;
11
+ export declare const isSerializableFiller: (filler: TFiller | string | null) => filler is TFiller;
12
+ export declare const isPattern: (filler: TFiller) => filler is Pattern;
13
+ export declare const isCollection: (fabricObject?: FabricObject) => fabricObject is Group | ActiveSelection;
14
+ export declare const isActiveSelection: (fabricObject?: FabricObject) => fabricObject is ActiveSelection;
15
+ export declare const isTextObject: (fabricObject?: FabricObject) => fabricObject is Text<Partial<import("../shapes/Text/Text").TextProps>, import("../shapes/Text/Text").SerializedTextProps, import("../EventTypeDefs").ObjectEvents>;
16
+ export declare const isInteractiveTextObject: (fabricObject?: FabricObject) => fabricObject is IText<import("../shapes/IText/IText").ITextProps, import("../shapes/IText/IText").SerializedITextProps, import("../shapes/IText/ITextBehavior").ITextEvents> | Textbox;
17
+ export declare const isFabricObjectCached: (fabricObject: FabricObject) => fabricObject is TCachedFabricObject;
18
+ export declare const isFabricObjectWithDragSupport: (fabricObject?: FabricObject) => fabricObject is FabricObjectWithDragSupport;
19
+ //# sourceMappingURL=types.d.ts.map
package/fabric.ts ADDED
@@ -0,0 +1,51 @@
1
+ export { getEnv, getDocument, getWindow } from './src/env';
2
+ export { cache } from './src/cache';
3
+ export { VERSION as version, iMatrix } from './src/constants';
4
+ export { config } from './src/config';
5
+ export { classRegistry } from './src/ClassRegistry';
6
+ export { runningAnimations } from './src/util/animation/AnimationRegistry';
7
+
8
+ export { Observable } from './src/Observable';
9
+
10
+ export { StaticCanvas } from './src/canvas/StaticCanvas';
11
+ export { Canvas } from './src/canvas/Canvas';
12
+
13
+ export { Point } from './src/Point';
14
+ export { Intersection } from './src/Intersection';
15
+ export { Color } from './src/color/Color';
16
+
17
+ export { Gradient } from './src/gradient/Gradient';
18
+ export { Pattern } from './src/Pattern';
19
+ export { Shadow } from './src/Shadow';
20
+
21
+ export { BaseBrush } from './src/brushes/BaseBrush';
22
+ export { PencilBrush } from './src/brushes/PencilBrush';
23
+ export { CircleBrush } from './src/brushes/CircleBrush';
24
+ export { SprayBrush } from './src/brushes/SprayBrush';
25
+ export { PatternBrush } from './src/brushes/PatternBrush';
26
+
27
+ export { FabricObject as Object } from './src/shapes/Object/FabricObject';
28
+ export { Line } from './src/shapes/Line';
29
+ export { Circle } from './src/shapes/Circle';
30
+ export { Triangle } from './src/shapes/Triangle';
31
+ export { Ellipse } from './src/shapes/Ellipse';
32
+ export { Rect } from './src/shapes/Rect';
33
+ export { Path } from './src/shapes/Path';
34
+ export { Polyline } from './src/shapes/Polyline';
35
+ export { Polygon } from './src/shapes/Polygon';
36
+ export { Text } from './src/shapes/Text/Text';
37
+ export { IText } from './src/shapes/IText/IText';
38
+ export { Textbox } from './src/shapes/Textbox';
39
+ export { Group } from './src/shapes/Group';
40
+ export { ActiveSelection } from './src/shapes/ActiveSelection';
41
+ export { Image } from './src/shapes/Image';
42
+ export { createCollectionMixin } from './src/Collection';
43
+
44
+ export * as util from './src/util';
45
+
46
+ export * from './src/parser';
47
+
48
+ export { Control } from './src/controls/Control';
49
+ export * as controlsUtils from './src/controls';
50
+
51
+ export * from './src/filters';
package/index.node.ts ADDED
@@ -0,0 +1,37 @@
1
+ // first we set the env variable by importing the node env file
2
+ import { getNodeCanvas } from './src/env/node';
3
+
4
+ import type { JpegConfig, PngConfig } from 'canvas';
5
+ import {
6
+ Canvas as CanvasBase,
7
+ StaticCanvas as StaticCanvasBase,
8
+ } from './fabric';
9
+ import { FabricObject } from './src/shapes/Object/Object';
10
+
11
+ FabricObject.ownDefaults.objectCaching = false;
12
+
13
+ export * from './fabric';
14
+
15
+ export class StaticCanvas extends StaticCanvasBase {
16
+ getNodeCanvas() {
17
+ return getNodeCanvas(this.lowerCanvasEl);
18
+ }
19
+ createPNGStream(opts?: PngConfig) {
20
+ return this.getNodeCanvas().createPNGStream(opts);
21
+ }
22
+ createJPEGStream(opts?: JpegConfig) {
23
+ return this.getNodeCanvas().createJPEGStream(opts);
24
+ }
25
+ }
26
+
27
+ export class Canvas extends CanvasBase {
28
+ getNodeCanvas() {
29
+ return getNodeCanvas(this.lowerCanvasEl);
30
+ }
31
+ createPNGStream(opts?: PngConfig) {
32
+ return this.getNodeCanvas().createPNGStream(opts);
33
+ }
34
+ createJPEGStream(opts?: JpegConfig) {
35
+ return this.getNodeCanvas().createJPEGStream(opts);
36
+ }
37
+ }
package/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './fabric';
package/package.json CHANGED
@@ -2,16 +2,23 @@
2
2
  "name": "fabric",
3
3
  "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
4
4
  "homepage": "http://fabricjs.com/",
5
- "version": "5.3.0",
5
+ "version": "6.0.0-beta3",
6
6
  "author": "Juriy Zaytsev <kangax@gmail.com>",
7
7
  "contributors": [
8
8
  {
9
9
  "name": "Andrea Bogazzi",
10
- "email": "andreabogazzi79@gmail.com"
10
+ "email": "andreabogazzi79@gmail.com",
11
+ "url": "https://github.com/asturur"
11
12
  },
12
13
  {
13
14
  "name": "Steve Eberhardt",
14
- "email": "melchiar2@gmail.com"
15
+ "email": "melchiar2@gmail.com",
16
+ "url": "https://github.com/melchiar"
17
+ },
18
+ {
19
+ "name": "Shachar Nencel",
20
+ "email": "shacharnen@gmail.com",
21
+ "url": "https://github.com/ShaMan123"
15
22
  }
16
23
  ],
17
24
  "keywords": [
@@ -24,17 +31,6 @@
24
31
  "HTML5",
25
32
  "object model"
26
33
  ],
27
- "browser": {
28
- "canvas": false,
29
- "fs": false,
30
- "jsdom": false,
31
- "jsdom/lib/jsdom/living/generated/utils": false,
32
- "jsdom/lib/jsdom/utils": false,
33
- "http": false,
34
- "https": false,
35
- "xmldom": false,
36
- "url": false
37
- },
38
34
  "repository": {
39
35
  "type": "git",
40
36
  "url": "https://github.com/fabricjs/fabric.js"
@@ -44,49 +40,113 @@
44
40
  },
45
41
  "license": "MIT",
46
42
  "scripts": {
43
+ "docs": "typedoc --out docs fabric.ts",
44
+ "cli": "node ./scripts/index.mjs",
45
+ "sandboxscript": "node ./scripts/sandbox.mjs",
47
46
  "changelog": "auto-changelog -o change-output.md --unreleased-only",
48
- "build": "node build.js modules=ALL requirejs exclude=gestures,accessors,erasing",
49
- "build:fast": "node build.js modules=ALL requirejs fast exclude=gestures,accessors,erasing",
50
- "build:watch": "onchange 'src/**/**' 'HEADER.js' 'lib/**/**' -- npm run build_export",
51
- "link:watch": "onchange 'src/**/**' 'HEADER.js' 'lib/**/**' -- npm link",
52
- "build_with_gestures": "node build.js modules=ALL exclude=accessors",
53
- "build_export": "npm run build:fast && npm run export_dist_to_site",
54
- "test:single": "qunit test/node_test_setup.js test/lib",
47
+ "build": "npm run cli -- build",
48
+ "build:fast": "npm run build -- -f",
49
+ "dev": "npm run cli -- dev",
50
+ "start": "npm run sandboxscript -- start",
51
+ "export": "npm run cli -- website export",
52
+ "build-tests": "rollup -c ./rollup.test.config.js",
53
+ "test": "npm run cli -- test",
54
+ "sandbox": "npm run sandboxscript -- sandbox",
55
+ "test:unit-browser": "npm run test -- -s unit -p 8080 -l -c chrome firefox",
56
+ "test:visual-browser": "npm run test -- -s visual -p 8081 -l -c chrome firefox",
55
57
  "test:coverage": "nyc --silent qunit test/node_test_setup.js test/lib test/unit",
56
58
  "test:visual:coverage": "nyc --silent --no-clean qunit test/node_test_setup.js test/lib test/visual",
57
59
  "coverage:report": "nyc report --reporter=lcov --reporter=text",
58
- "test": "qunit --require ./test/node_test_setup.js test/lib test/unit",
59
- "test:visual": "qunit test/node_test_setup.js test/lib test/visual",
60
- "test:visual:single": "qunit test/node_test_setup.js test/lib",
61
- "test:all": "npm run test && npm run test:visual",
62
- "lint": "eslint --config .eslintrc.json src",
60
+ "lint": "eslint --config .eslintrc.js src/**/*.ts",
63
61
  "lint_tests": "eslint test/unit --config .eslintrc_tests && eslint test/visual --config .eslintrc_tests",
64
- "export_gesture_to_site": "cp dist/fabric.js ../fabricjs.com/lib/fabric_with_gestures.js",
65
- "export_dist_to_site": "cp dist/fabric.js ../fabricjs.com/lib/fabric.js && cp package.json ../fabricjs.com/lib/package.json && cp -r src HEADER.js lib ../fabricjs.com/build/files/",
66
- "export_tests_to_site": "cp test/unit/*.js ../fabricjs.com/test/unit && cp -r test/visual/* ../fabricjs.com/test/visual && cp -r test/fixtures/* ../fabricjs.com/test/fixtures && cp -r test/lib/* ../fabricjs.com/test/lib",
67
- "all": "npm run build && npm run test && npm run test:visual && npm run lint && npm run lint_tests && npm run export_dist_to_site && npm run export_tests_to_site",
68
- "testem": "testem .",
69
- "testem:ci": "testem ci"
62
+ "all": "npm run build && npm run test -- --all && npm run lint && npm run lint_tests && npm run export",
63
+ "prettier:check": "prettier --check .",
64
+ "prettier:write": "prettier --write .",
65
+ "babel-constants": "babel --no-babelrc src/constants.ts --extensions '.ts' --out-dir dist/src/ --config-file ./.babelrcAlt --plugins=babel-plugin-import-json-value",
66
+ "babel-src": "babel --no-babelrc src --extensions '.ts' --ignore 'src/constants.ts' --out-dir dist/src --config-file ./.babelrcAlt"
70
67
  },
71
68
  "optionalDependencies": {
72
69
  "canvas": "^2.8.0",
73
- "jsdom": "^19.0.0"
70
+ "jsdom": "^20.0.1"
74
71
  },
75
72
  "devDependencies": {
73
+ "@babel/cli": "^7.20.7",
74
+ "@babel/core": "^7.20.12",
75
+ "@babel/preset-env": "^7.20.2",
76
+ "@babel/preset-typescript": "^7.18.6",
77
+ "@rollup/plugin-babel": "^6.0.3",
78
+ "@rollup/plugin-json": "^6.0.0",
79
+ "@rollup/plugin-terser": "^0.3.0",
80
+ "@rollup/plugin-typescript": "^11.0.0",
81
+ "@types/fs-extra": "^9.0.13",
82
+ "@types/jsdom": "^20.0.1",
83
+ "@types/lodash": "^4.14.180",
84
+ "@types/node": "^17.0.21",
85
+ "@typescript-eslint/eslint-plugin": "^5.53.0",
86
+ "@typescript-eslint/parser": "^5.53.0",
87
+ "abort-controller": "^3.0.0",
76
88
  "auto-changelog": "^2.3.0",
89
+ "axios": "^0.27.2",
90
+ "babel-plugin-import-json-value": "^0.1.2",
91
+ "busboy": "^1.6.0",
77
92
  "chalk": "^2.4.1",
78
- "deep-object-diff": "^1.1.7",
79
- "eslint": "4.18.x",
93
+ "commander": "^9.1.0",
94
+ "eslint": "^8.34.0",
95
+ "eslint-config-prettier": "^8.6.0",
96
+ "fireworm": "^0.7.2",
97
+ "fs-extra": "^10.0.1",
98
+ "fuzzy": "^0.1.3",
99
+ "inquirer": "^8.2.1",
100
+ "inquirer-checkbox-plus-prompt": "^1.0.1",
101
+ "kill-port": "^2.0.1",
102
+ "micromatch": "^4.0.5",
103
+ "moment": "^2.29.1",
80
104
  "nyc": "^15.1.0",
81
- "onchange": "^7.1.0",
82
105
  "pixelmatch": "^4.0.2",
106
+ "prettier": "2.7.1",
107
+ "ps-list": "^8.1.0",
83
108
  "qunit": "^2.17.2",
84
- "testem": "^3.2.0",
85
- "uglify-js": "3.3.x"
109
+ "rollup": "^3.9.1",
110
+ "semver": "^7.3.8",
111
+ "source-map-support": "^0.5.21",
112
+ "testem": "^3.8.0",
113
+ "tslib": "^2.4.1",
114
+ "typedoc": "^0.23.24",
115
+ "typescript": "^4.9.4"
86
116
  },
87
117
  "engines": {
88
118
  "node": ">=14.0.0"
89
119
  },
90
- "main": "./dist/fabric.js",
91
- "dependencies": {}
120
+ "module": "./dist/index.mjs",
121
+ "main": "./dist/index.node.cjs",
122
+ "types": "./dist/index.d.ts",
123
+ "typesVersions": {
124
+ ">=4.2": {
125
+ "*": [
126
+ "dist/index.d.ts"
127
+ ],
128
+ "node": [
129
+ "dist/index.node.d.ts"
130
+ ],
131
+ "src/*": [
132
+ "src/*"
133
+ ]
134
+ }
135
+ },
136
+ "exports": {
137
+ ".": {
138
+ "import": "./dist/index.mjs",
139
+ "require": "./dist/index.js",
140
+ "default": "./dist/index.js",
141
+ "node": null,
142
+ "types": "./dist/index.d.ts"
143
+ },
144
+ "./node": {
145
+ "import": "./dist/index.node.mjs",
146
+ "require": "./dist/index.node.cjs",
147
+ "default": "./dist/index.node.cjs",
148
+ "node": "./dist/index.node.cjs",
149
+ "types": "./dist/index.node.d.ts"
150
+ }
151
+ }
92
152
  }
package/publish.js CHANGED
@@ -1,14 +1,5 @@
1
1
  var cp = require('child_process');
2
- var path = require('path');
3
- var fs = require('fs');
4
2
 
5
- // useful changelog regexp for atom
6
- // \(#([0-9]+)\) [#$1](https://github.com/fabricjs/fabric.js/pull/$1)
7
-
8
- // eslint-disable-next-line no-undef
9
- var pkgPath = path.resolve(__dirname, './package.json');
10
- var pkgText = fs.readFileSync(pkgPath); // get original pkg text to restore it later
11
- var pkgObject = JSON.parse(pkgText); // parsed pkg to override its fields
12
3
  var args = process.argv.slice(2).join(' '); // args will be passed to npm publish (like --dry-run)
13
4
  var preRelease = process.env.PRE_RELEASE;
14
5
 
@@ -18,25 +9,8 @@ if (preRelease === 'true') {
18
9
  args = '--tag beta ' + args;
19
10
  }
20
11
 
21
- // override package.json with updated fields
22
- fs.writeFileSync(
23
- pkgPath,
24
- JSON.stringify(Object.assign(pkgObject, {
25
- optionalDependencies: {},
26
- version: pkgObject.version + '-browser',
27
- }), null, '\t')
28
- );
29
-
30
12
  console.log('npm publish ' + args);
31
13
 
32
- // publish -browser version
33
- cp.execSync('npm publish ' + args);
34
-
35
- console.log('Browser package is published');
36
-
37
- // restore the original package.json contents
38
- fs.writeFileSync(pkgPath, pkgText);
39
-
40
14
  // publish the main version (the package is published "above" the -browser version)
41
15
  cp.execSync('npm publish ' + args);
42
16
 
@@ -0,0 +1,91 @@
1
+ import json from '@rollup/plugin-json';
2
+ import terser from '@rollup/plugin-terser';
3
+ import ts from '@rollup/plugin-typescript';
4
+ import { babel } from '@rollup/plugin-babel';
5
+ import path from 'path';
6
+ import chalk from 'chalk';
7
+ // import dts from "rollup-plugin-dts";
8
+
9
+ const splitter = /\n|\s|,/g;
10
+
11
+ const buildOutput = process.env.BUILD_OUTPUT || './dist/index.js';
12
+
13
+ const dirname = path.dirname(buildOutput);
14
+ const basename = path.basename(buildOutput, '.js');
15
+
16
+ const plugins = [
17
+ json(),
18
+ ts({
19
+ noForceEmit: true,
20
+ tsconfig: './tsconfig.json',
21
+ }),
22
+ babel({
23
+ extensions: ['.ts', '.js'],
24
+ babelHelpers: 'bundled',
25
+ }),
26
+ ];
27
+
28
+ /**
29
+ * disallow circular deps
30
+ * @see https://rollupjs.org/configuration-options/#onwarn
31
+ * @param {*} warning
32
+ * @param {*} warn
33
+ */
34
+ function onwarn(warning, warn) {
35
+ if (warning.code === 'CIRCULAR_DEPENDENCY') {
36
+ console.error(chalk.redBright(warning.message));
37
+ throw Object.assign(new Error(), warning);
38
+ }
39
+ warn(warning);
40
+ }
41
+
42
+ // https://rollupjs.org/guide/en/#configuration-files
43
+ export default [
44
+ {
45
+ input: process.env.BUILD_INPUT?.split(splitter) || ['./index.ts'],
46
+ output: [
47
+ {
48
+ file: path.resolve(dirname, `${basename}.mjs`),
49
+ name: 'fabric',
50
+ format: 'es',
51
+ sourcemap: true,
52
+ },
53
+ {
54
+ file: path.resolve(dirname, `${basename}.js`),
55
+ name: 'fabric',
56
+ format: 'umd',
57
+ sourcemap: true,
58
+ },
59
+ Number(process.env.MINIFY)
60
+ ? {
61
+ file: path.resolve(dirname, `${basename}.min.js`),
62
+ name: 'fabric',
63
+ format: 'umd',
64
+ plugins: [terser()],
65
+ }
66
+ : null,
67
+ ],
68
+ plugins,
69
+ onwarn,
70
+ },
71
+ {
72
+ input: ['./index.node.ts'],
73
+ output: [
74
+ {
75
+ file: path.resolve(dirname, `${basename}.node.mjs`),
76
+ name: 'fabric',
77
+ format: 'es',
78
+ sourcemap: true,
79
+ },
80
+ {
81
+ file: path.resolve(dirname, `${basename}.node.cjs`),
82
+ name: 'fabric',
83
+ format: 'cjs',
84
+ sourcemap: true,
85
+ },
86
+ ],
87
+ plugins,
88
+ onwarn,
89
+ external: ['jsdom', 'jsdom/lib/jsdom/living/generated/utils.js', 'canvas'],
90
+ },
91
+ ];