fabric 5.3.0 → 6.0.0-beta1

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 (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -0,0 +1,656 @@
1
+ import { ObjectEvents } from '../../EventTypeDefs';
2
+ import { TextStyle, TextStyleDeclaration, StyledText } from './StyledText';
3
+ import type { Point } from '../../Point';
4
+ import type { TCacheCanvasDimensions, TClassProperties, TFiller } from '../../typedefs';
5
+ import { Path } from '../Path';
6
+ /**
7
+ * Measure and return the info of a single grapheme.
8
+ * needs the the info of previous graphemes already filled
9
+ * Override to customize measuring
10
+ */
11
+ export type GraphemeBBox<onPath = false> = {
12
+ width: number;
13
+ height: number;
14
+ kernedWidth: number;
15
+ left: number;
16
+ deltaY: number;
17
+ } & (onPath extends true ? {
18
+ renderLeft: number;
19
+ renderTop: number;
20
+ angle: number;
21
+ } : Record<string, never>);
22
+ /**
23
+ * Text class
24
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}
25
+ */
26
+ export declare class Text<EventSpec extends ObjectEvents = ObjectEvents> extends StyledText<EventSpec> {
27
+ /**
28
+ * Properties which when set cause object to change dimensions
29
+ * @type Array
30
+ * @private
31
+ */
32
+ _dimensionAffectingProps: string[];
33
+ /**
34
+ * @private
35
+ */
36
+ _reNewline: RegExp;
37
+ /**
38
+ * Use this regular expression to filter for whitespaces that is not a new line.
39
+ * Mostly used when text is 'justify' aligned.
40
+ * @private
41
+ */
42
+ _reSpacesAndTabs: RegExp;
43
+ /**
44
+ * Use this regular expression to filter for whitespace that is not a new line.
45
+ * Mostly used when text is 'justify' aligned.
46
+ * @private
47
+ */
48
+ _reSpaceAndTab: RegExp;
49
+ /**
50
+ * Use this regular expression to filter consecutive groups of non spaces.
51
+ * Mostly used when text is 'justify' aligned.
52
+ * @private
53
+ */
54
+ _reWords: RegExp;
55
+ text: string;
56
+ /**
57
+ * Font size (in pixels)
58
+ * @type Number
59
+ * @default
60
+ */
61
+ fontSize: number;
62
+ /**
63
+ * Font weight (e.g. bold, normal, 400, 600, 800)
64
+ * @type {(Number|String)}
65
+ * @default
66
+ */
67
+ fontWeight: string;
68
+ /**
69
+ * Font family
70
+ * @type String
71
+ * @default
72
+ */
73
+ fontFamily: string;
74
+ /**
75
+ * Text decoration underline.
76
+ * @type Boolean
77
+ * @default
78
+ */
79
+ underline: boolean;
80
+ /**
81
+ * Text decoration overline.
82
+ * @type Boolean
83
+ * @default
84
+ */
85
+ overline: boolean;
86
+ /**
87
+ * Text decoration linethrough.
88
+ * @type Boolean
89
+ * @default
90
+ */
91
+ linethrough: boolean;
92
+ /**
93
+ * Text alignment. Possible values: "left", "center", "right", "justify",
94
+ * "justify-left", "justify-center" or "justify-right".
95
+ * @type String
96
+ * @default
97
+ */
98
+ textAlign: string;
99
+ /**
100
+ * Font style . Possible values: "", "normal", "italic" or "oblique".
101
+ * @type String
102
+ * @default
103
+ */
104
+ fontStyle: string;
105
+ /**
106
+ * Line height
107
+ * @type Number
108
+ * @default
109
+ */
110
+ lineHeight: number;
111
+ /**
112
+ * Superscript schema object (minimum overlap)
113
+ */
114
+ superscript: {
115
+ /**
116
+ * fontSize factor
117
+ * @default 0.6
118
+ */
119
+ size: number;
120
+ /**
121
+ * baseline-shift factor (upwards)
122
+ * @default -0.35
123
+ */
124
+ baseline: number;
125
+ };
126
+ /**
127
+ * Subscript schema object (minimum overlap)
128
+ */
129
+ subscript: {
130
+ /**
131
+ * fontSize factor
132
+ * @default 0.6
133
+ */
134
+ size: number;
135
+ /**
136
+ * baseline-shift factor (downwards)
137
+ * @default 0.11
138
+ */
139
+ baseline: number;
140
+ };
141
+ /**
142
+ * Background color of text lines
143
+ * @type String
144
+ * @default
145
+ */
146
+ textBackgroundColor: string;
147
+ protected _styleProperties: string[];
148
+ styles: TextStyle;
149
+ /**
150
+ * Path that the text should follow.
151
+ * since 4.6.0 the path will be drawn automatically.
152
+ * if you want to make the path visible, give it a stroke and strokeWidth or fill value
153
+ * if you want it to be hidden, assign visible = false to the path.
154
+ * This feature is in BETA, and SVG import/export is not yet supported.
155
+ * @type Path
156
+ * @example
157
+ * const textPath = new Text('Text on a path', {
158
+ * top: 150,
159
+ * left: 150,
160
+ * textAlign: 'center',
161
+ * charSpacing: -50,
162
+ * path: new Path('M 0 0 C 50 -100 150 -100 200 0', {
163
+ * strokeWidth: 1,
164
+ * visible: false
165
+ * }),
166
+ * pathSide: 'left',
167
+ * pathStartOffset: 0
168
+ * });
169
+ * @default
170
+ */
171
+ path: Path;
172
+ /**
173
+ * Offset amount for text path starting position
174
+ * Only used when text has a path
175
+ * @type Number
176
+ * @default
177
+ */
178
+ pathStartOffset: number;
179
+ /**
180
+ * Which side of the path the text should be drawn on.
181
+ * Only used when text has a path
182
+ * @type {String} 'left|right'
183
+ * @default
184
+ */
185
+ pathSide: string;
186
+ /**
187
+ * How text is aligned to the path. This property determines
188
+ * the perpendicular position of each character relative to the path.
189
+ * (one of "baseline", "center", "ascender", "descender")
190
+ * This feature is in BETA, and its behavior may change
191
+ * @type String
192
+ * @default
193
+ */
194
+ pathAlign: string;
195
+ /**
196
+ * @private
197
+ */
198
+ _fontSizeFraction: number;
199
+ /**
200
+ * @private
201
+ */
202
+ offsets: {
203
+ underline: number;
204
+ linethrough: number;
205
+ overline: number;
206
+ };
207
+ /**
208
+ * Text Line proportion to font Size (in pixels)
209
+ * @type Number
210
+ * @default
211
+ */
212
+ _fontSizeMult: number;
213
+ /**
214
+ * additional space between characters
215
+ * expressed in thousands of em unit
216
+ * @type Number
217
+ * @default
218
+ */
219
+ charSpacing: number;
220
+ /**
221
+ * Baseline shift, styles only, keep at 0 for the main text object
222
+ * @type {Number}
223
+ * @default
224
+ */
225
+ deltaY: number;
226
+ /**
227
+ * WARNING: EXPERIMENTAL. NOT SUPPORTED YET
228
+ * determine the direction of the text.
229
+ * This has to be set manually together with textAlign and originX for proper
230
+ * experience.
231
+ * some interesting link for the future
232
+ * https://www.w3.org/International/questions/qa-bidi-unicode-controls
233
+ * @since 4.5.0
234
+ * @type {String} 'ltr|rtl'
235
+ * @default
236
+ */
237
+ direction: string;
238
+ /**
239
+ * contains characters bounding boxes
240
+ */
241
+ protected __charBounds: GraphemeBBox[][];
242
+ /**
243
+ * use this size when measuring text. To avoid IE11 rounding errors
244
+ * @type {Number}
245
+ * @default
246
+ * @readonly
247
+ * @private
248
+ */
249
+ CACHE_FONT_SIZE: number;
250
+ /**
251
+ * contains the min text width to avoid getting 0
252
+ * @type {Number}
253
+ * @default
254
+ */
255
+ MIN_TEXT_WIDTH: number;
256
+ /**
257
+ * contains the the text of the object, divided in lines as they are displayed
258
+ * on screen. Wrapping will divide the text independently of line breaks
259
+ * @type {string[]}
260
+ * @default
261
+ */
262
+ textLines: string[];
263
+ /**
264
+ * same as textlines, but each line is an array of graphemes as split by splitByGrapheme
265
+ * @type {string[]}
266
+ * @default
267
+ */
268
+ _textLines: string[][];
269
+ _unwrappedTextLines: string[][];
270
+ _text: string[];
271
+ cursorWidth: number;
272
+ __lineHeights: number[];
273
+ __lineWidths: number[];
274
+ _forceClearCache: boolean;
275
+ initialized?: true;
276
+ constructor(text: string, options: any);
277
+ /**
278
+ * If text has a path, it will add the extra information needed
279
+ * for path and text calculations
280
+ */
281
+ setPathInfo(): void;
282
+ /**
283
+ * @private
284
+ * Divides text into lines of text and lines of graphemes.
285
+ */
286
+ _splitText(): {
287
+ _unwrappedLines: string[][];
288
+ lines: string[];
289
+ graphemeText: string[];
290
+ graphemeLines: string[][];
291
+ };
292
+ /**
293
+ * Initialize or update text dimensions.
294
+ * Updates this.width and this.height with the proper values.
295
+ * Does not return dimensions.
296
+ */
297
+ initDimensions(): void;
298
+ /**
299
+ * Enlarge space boxes and shift the others
300
+ */
301
+ enlargeSpaces(): void;
302
+ /**
303
+ * Detect if the text line is ended with an hard break
304
+ * text and itext do not have wrapping, return false
305
+ * @return {Boolean}
306
+ */
307
+ isEndOfWrapping(lineIndex: number): boolean;
308
+ /**
309
+ * Detect if a line has a linebreak and so we need to account for it when moving
310
+ * and counting style.
311
+ * It return always for text and Itext.
312
+ * @return Number
313
+ */
314
+ missingNewlineOffset(lineIndex: number): number;
315
+ /**
316
+ * Returns 2d representation (lineIndex and charIndex) of cursor
317
+ * @param {Number} selectionStart
318
+ * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.
319
+ */
320
+ get2DCursorLocation(selectionStart: number, skipWrapping?: boolean): {
321
+ lineIndex: number;
322
+ charIndex: number;
323
+ };
324
+ /**
325
+ * Returns string representation of an instance
326
+ * @return {String} String representation of text object
327
+ */
328
+ toString(): string;
329
+ /**
330
+ * Return the dimension and the zoom level needed to create a cache canvas
331
+ * big enough to host the object to be cached.
332
+ * @private
333
+ * @param {Object} dim.x width of object to be cached
334
+ * @param {Object} dim.y height of object to be cached
335
+ * @return {Object}.width width of canvas
336
+ * @return {Object}.height height of canvas
337
+ * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache
338
+ * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache
339
+ */
340
+ _getCacheCanvasDimensions(): TCacheCanvasDimensions;
341
+ /**
342
+ * @private
343
+ * @param {CanvasRenderingContext2D} ctx Context to render on
344
+ */
345
+ _render(ctx: CanvasRenderingContext2D): void;
346
+ /**
347
+ * @private
348
+ * @param {CanvasRenderingContext2D} ctx Context to render on
349
+ */
350
+ _renderText(ctx: CanvasRenderingContext2D): void;
351
+ /**
352
+ * Set the font parameter of the context with the object properties or with charStyle
353
+ * @private
354
+ * @param {CanvasRenderingContext2D} ctx Context to render on
355
+ * @param {Object} [charStyle] object with font style properties
356
+ * @param {String} [charStyle.fontFamily] Font Family
357
+ * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )
358
+ * @param {String} [charStyle.fontWeight] Font weight
359
+ * @param {String} [charStyle.fontStyle] Font style (italic|normal)
360
+ */
361
+ _setTextStyles(ctx: CanvasRenderingContext2D, charStyle?: any, forMeasuring?: boolean): void;
362
+ /**
363
+ * calculate and return the text Width measuring each line.
364
+ * @private
365
+ * @param {CanvasRenderingContext2D} ctx Context to render on
366
+ * @return {Number} Maximum width of Text object
367
+ */
368
+ calcTextWidth(): number;
369
+ /**
370
+ * @private
371
+ * @param {String} method Method name ("fillText" or "strokeText")
372
+ * @param {CanvasRenderingContext2D} ctx Context to render on
373
+ * @param {String} line Text to render
374
+ * @param {Number} left Left position of text
375
+ * @param {Number} top Top position of text
376
+ * @param {Number} lineIndex Index of a line in a text
377
+ */
378
+ _renderTextLine(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, line: string[], left: number, top: number, lineIndex: number): void;
379
+ /**
380
+ * Renders the text background for lines, taking care of style
381
+ * @private
382
+ * @param {CanvasRenderingContext2D} ctx Context to render on
383
+ */
384
+ _renderTextLinesBackground(ctx: CanvasRenderingContext2D): void;
385
+ /**
386
+ * measure and return the width of a single character.
387
+ * possibly overridden to accommodate different measure logic or
388
+ * to hook some external lib for character measurement
389
+ * @private
390
+ * @param {String} _char, char to be measured
391
+ * @param {Object} charStyle style of char to be measured
392
+ * @param {String} [previousChar] previous char
393
+ * @param {Object} [prevCharStyle] style of previous char
394
+ */
395
+ _measureChar(_char: string, charStyle: TextStyleDeclaration, previousChar: string | undefined, prevCharStyle: any): {
396
+ width: number;
397
+ kernedWidth: number;
398
+ };
399
+ /**
400
+ * Computes height of character at given position
401
+ * @param {Number} line the line index number
402
+ * @param {Number} _char the character index number
403
+ * @return {Number} fontSize of the character
404
+ */
405
+ getHeightOfChar(line: number, _char: number): number;
406
+ /**
407
+ * measure a text line measuring all characters.
408
+ * @param {Number} lineIndex line number
409
+ */
410
+ measureLine(lineIndex: number): {
411
+ width: number;
412
+ numOfSpaces: number;
413
+ };
414
+ /**
415
+ * measure every grapheme of a line, populating __charBounds
416
+ * @param {Number} lineIndex
417
+ * @return {Object} object.width total width of characters
418
+ * @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs
419
+ */
420
+ _measureLine(lineIndex: number): {
421
+ width: number;
422
+ numOfSpaces: number;
423
+ };
424
+ /**
425
+ * Calculate the angle and the left,top position of the char that follow a path.
426
+ * It appends it to graphemeInfo to be reused later at rendering
427
+ * @private
428
+ * @param {Number} positionInPath to be measured
429
+ * @param {GraphemeBBox} graphemeInfo current grapheme box information
430
+ * @param {Object} startingPoint position of the point
431
+ */
432
+ _setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox<true>, startingPoint: Point): void;
433
+ /**
434
+ *
435
+ * @param {String} grapheme to be measured
436
+ * @param {Number} lineIndex index of the line where the char is
437
+ * @param {Number} charIndex position in the line
438
+ * @param {String} [prevGrapheme] character preceding the one to be measured
439
+ * @returns {GraphemeBBox} grapheme bbox
440
+ */
441
+ _getGraphemeBox(grapheme: string, lineIndex: number, charIndex: number, prevGrapheme?: string, skipLeft?: boolean): GraphemeBBox;
442
+ /**
443
+ * Calculate height of line at 'lineIndex'
444
+ * @param {Number} lineIndex index of line to calculate
445
+ * @return {Number}
446
+ */
447
+ getHeightOfLine(lineIndex: number): number;
448
+ /**
449
+ * Calculate text box height
450
+ */
451
+ calcTextHeight(): number;
452
+ /**
453
+ * @private
454
+ * @return {Number} Left offset
455
+ */
456
+ _getLeftOffset(): number;
457
+ /**
458
+ * @private
459
+ * @return {Number} Top offset
460
+ */
461
+ _getTopOffset(): number;
462
+ /**
463
+ * @private
464
+ * @param {CanvasRenderingContext2D} ctx Context to render on
465
+ * @param {String} method Method name ("fillText" or "strokeText")
466
+ */
467
+ _renderTextCommon(ctx: CanvasRenderingContext2D, method: 'fillText' | 'strokeText'): void;
468
+ /**
469
+ * @private
470
+ * @param {CanvasRenderingContext2D} ctx Context to render on
471
+ */
472
+ _renderTextFill(ctx: CanvasRenderingContext2D): void;
473
+ /**
474
+ * @private
475
+ * @param {CanvasRenderingContext2D} ctx Context to render on
476
+ */
477
+ _renderTextStroke(ctx: CanvasRenderingContext2D): void;
478
+ /**
479
+ * @private
480
+ * @param {String} method fillText or strokeText.
481
+ * @param {CanvasRenderingContext2D} ctx Context to render on
482
+ * @param {Array} line Content of the line, splitted in an array by grapheme
483
+ * @param {Number} left
484
+ * @param {Number} top
485
+ * @param {Number} lineIndex
486
+ */
487
+ _renderChars(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, line: Array<any>, left: number, top: number, lineIndex: number): void;
488
+ /**
489
+ * This function try to patch the missing gradientTransform on canvas gradients.
490
+ * transforming a context to transform the gradient, is going to transform the stroke too.
491
+ * we want to transform the gradient but not the stroke operation, so we create
492
+ * a transformed gradient on a pattern and then we use the pattern instead of the gradient.
493
+ * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size
494
+ * is limited.
495
+ * @private
496
+ * @param {TFiller} filler a fabric gradient instance
497
+ * @return {CanvasPattern} a pattern to use as fill/stroke style
498
+ */
499
+ _applyPatternGradientTransformText(filler: TFiller): CanvasPattern;
500
+ handleFiller<T extends 'fill' | 'stroke'>(ctx: CanvasRenderingContext2D, property: `${T}Style`, filler: TFiller | string): {
501
+ offsetX: number;
502
+ offsetY: number;
503
+ };
504
+ _setStrokeStyles(ctx: CanvasRenderingContext2D, { stroke, strokeWidth }: Pick<this, 'stroke' | 'strokeWidth'>): {
505
+ offsetX: number;
506
+ offsetY: number;
507
+ };
508
+ _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>): {
509
+ offsetX: number;
510
+ offsetY: number;
511
+ };
512
+ /**
513
+ * @private
514
+ * @param {String} method
515
+ * @param {CanvasRenderingContext2D} ctx Context to render on
516
+ * @param {Number} lineIndex
517
+ * @param {Number} charIndex
518
+ * @param {String} _char
519
+ * @param {Number} left Left coordinate
520
+ * @param {Number} top Top coordinate
521
+ * @param {Number} lineHeight Height of the line
522
+ */
523
+ _renderChar(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, lineIndex: number, charIndex: number, _char: string, left: number, top: number): void;
524
+ /**
525
+ * Turns the character into a 'superior figure' (i.e. 'superscript')
526
+ * @param {Number} start selection start
527
+ * @param {Number} end selection end
528
+ */
529
+ setSuperscript(start: number, end: number): void;
530
+ /**
531
+ * Turns the character into an 'inferior figure' (i.e. 'subscript')
532
+ * @param {Number} start selection start
533
+ * @param {Number} end selection end
534
+ */
535
+ setSubscript(start: number, end: number): void;
536
+ /**
537
+ * Applies 'schema' at given position
538
+ * @private
539
+ * @param {Number} start selection start
540
+ * @param {Number} end selection end
541
+ * @param {Number} schema
542
+ */
543
+ protected _setScript(start: number, end: number, schema: {
544
+ size: number;
545
+ baseline: number;
546
+ }): void;
547
+ /**
548
+ * @private
549
+ * @param {Number} lineIndex index text line
550
+ * @return {Number} Line left offset
551
+ */
552
+ _getLineLeftOffset(lineIndex: number): number;
553
+ /**
554
+ * @private
555
+ */
556
+ _clearCache(): void;
557
+ /**
558
+ * @private
559
+ */
560
+ _shouldClearDimensionCache(): any;
561
+ /**
562
+ * Measure a single line given its index. Used to calculate the initial
563
+ * text bounding box. The values are calculated and stored in __lineWidths cache.
564
+ * @private
565
+ * @param {Number} lineIndex line number
566
+ * @return {Number} Line width
567
+ */
568
+ getLineWidth(lineIndex: number): number;
569
+ _getWidthOfCharSpacing(): number;
570
+ /**
571
+ * Retrieves the value of property at given character position
572
+ * @param {Number} lineIndex the line number
573
+ * @param {Number} charIndex the character number
574
+ * @param {String} property the property name
575
+ * @returns the value of 'property'
576
+ */
577
+ getValueOfPropertyAt(lineIndex: number, charIndex: number, property: string): any;
578
+ /**
579
+ * @private
580
+ * @param {CanvasRenderingContext2D} ctx Context to render on
581
+ */
582
+ _renderTextDecoration(ctx: CanvasRenderingContext2D, type: 'underline' | 'linethrough' | 'overline'): void;
583
+ /**
584
+ * return font declaration string for canvas context
585
+ * @param {Object} [styleObject] object
586
+ * @returns {String} font declaration formatted for canvas context.
587
+ */
588
+ _getFontDeclaration(styleObject?: TextStyleDeclaration, forMeasuring?: boolean): string;
589
+ /**
590
+ * Renders text instance on a specified context
591
+ * @param {CanvasRenderingContext2D} ctx Context to render on
592
+ */
593
+ render(ctx: CanvasRenderingContext2D): void;
594
+ /**
595
+ * Override this method to customize grapheme splitting
596
+ * @todo the util `graphemeSplit` needs to be injectable in some way.
597
+ * is more comfortable to inject the correct util rather than having to override text
598
+ * in the middle of the prototype chain
599
+ * @param {string} value
600
+ * @returns {string[]} array of graphemes
601
+ */
602
+ graphemeSplit(value: string): string[];
603
+ /**
604
+ * Returns the text as an array of lines.
605
+ * @param {String} text text to split
606
+ * @returns Lines in the text
607
+ */
608
+ _splitTextIntoLines(text: string): {
609
+ _unwrappedLines: string[][];
610
+ lines: string[];
611
+ graphemeText: string[];
612
+ graphemeLines: string[][];
613
+ };
614
+ /**
615
+ * Returns object representation of an instance
616
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
617
+ * @return {Object} Object representation of an instance
618
+ */
619
+ toObject(propertiesToInclude?: (keyof this)[]): {
620
+ path?: {
621
+ path: (string | number)[][];
622
+ } | undefined;
623
+ styles: import("../../util/misc/textStyles").TextStyleArray;
624
+ };
625
+ set(key: string | any, value?: any): this;
626
+ /**
627
+ * Returns complexity of an instance
628
+ * @return {Number} complexity
629
+ */
630
+ complexity(): number;
631
+ static genericFonts: string[];
632
+ /**
633
+ * List of attribute names to account for when parsing SVG element (used by {@link Text.fromElement})
634
+ * @static
635
+ * @memberOf Text
636
+ * @see: http://www.w3.org/TR/SVG/text.html#TextElement
637
+ */
638
+ static ATTRIBUTE_NAMES: string[];
639
+ /**
640
+ * Returns Text instance from an SVG element (<b>not yet implemented</b>)
641
+ * @static
642
+ * @memberOf Text
643
+ * @param {SVGElement} element Element to parse
644
+ * @param {Function} callback callback function invoked after parsing
645
+ * @param {Object} [options] Options object
646
+ */
647
+ static fromElement(element: SVGElement, callback: (text: Text | null) => any, options: object): any;
648
+ /**
649
+ * Returns Text instance from an object representation
650
+ * @param {Object} object plain js Object to create an instance from
651
+ * @returns {Promise<Text>}
652
+ */
653
+ static fromObject(object: Record<string, any>): Promise<Text>;
654
+ }
655
+ export declare const textDefaultValues: Partial<TClassProperties<Text>>;
656
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1,32 @@
1
+ import { TSVGReviver } from '../../typedefs';
2
+ import { FabricObjectSVGExportMixin } from '../Object/FabricObjectSVGExportMixin';
3
+ export declare class TextSVGExportMixin extends FabricObjectSVGExportMixin {
4
+ _toSVG(): string[];
5
+ toSVG(reviver: TSVGReviver): string;
6
+ private _getSVGLeftTopOffsets;
7
+ private _wrapSVGTextAndBg;
8
+ /**
9
+ * @private
10
+ * @param {Number} textTopOffset Text top offset
11
+ * @param {Number} textLeftOffset Text left offset
12
+ * @return {Object}
13
+ */
14
+ private _getSVGTextAndBg;
15
+ private _createTextCharSpan;
16
+ private _setSVGTextLineText;
17
+ private _setSVGTextLineBg;
18
+ /**
19
+ * @deprecated unused
20
+ */
21
+ _getSVGLineTopOffset(lineIndex: number): {
22
+ lineTop: number;
23
+ offset: number;
24
+ };
25
+ /**
26
+ * Returns styles-string for svg-export
27
+ * @param {Boolean} skipShadow a boolean to skip shadow filter output
28
+ * @return {String}
29
+ */
30
+ getSvgStyles(skipShadow?: boolean): string;
31
+ }
32
+ //# sourceMappingURL=TextSVGExportMixin.d.ts.map