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,673 @@
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
+ import type { FabricObjectProps, SerializedObjectProps, TProps } from '../Object/types';
7
+ type TPathSide = 'left' | 'right';
8
+ type TPathAlign = 'baseline' | 'center' | 'ascender' | 'descender';
9
+ /**
10
+ * Measure and return the info of a single grapheme.
11
+ * needs the the info of previous graphemes already filled
12
+ * Override to customize measuring
13
+ */
14
+ export type GraphemeBBox<onPath = false> = {
15
+ width: number;
16
+ height: number;
17
+ kernedWidth: number;
18
+ left: number;
19
+ deltaY: number;
20
+ } & (onPath extends true ? {
21
+ renderLeft: number;
22
+ renderTop: number;
23
+ angle: number;
24
+ } : Record<string, never>);
25
+ interface UniqueTextProps {
26
+ charSpacing: number;
27
+ lineHeight: number;
28
+ fontSize: number;
29
+ fontWeight: string;
30
+ fontFamily: string;
31
+ fontStyle: string;
32
+ pathSide: TPathSide;
33
+ pathAlign: TPathAlign;
34
+ underline: boolean;
35
+ overline: boolean;
36
+ linethrough: boolean;
37
+ textAlign: string;
38
+ direction: CanvasDirection;
39
+ path?: Path;
40
+ }
41
+ export interface SerializedTextProps extends SerializedObjectProps, UniqueTextProps {
42
+ }
43
+ export interface TextProps extends FabricObjectProps, UniqueTextProps {
44
+ }
45
+ /**
46
+ * Text class
47
+ * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}
48
+ */
49
+ export declare class Text<Props extends TProps<TextProps> = Partial<TextProps>, SProps extends SerializedTextProps = SerializedTextProps, EventSpec extends ObjectEvents = ObjectEvents> extends StyledText<Props, SProps, EventSpec> implements UniqueTextProps {
50
+ /**
51
+ * Properties that requires a text layout recalculation when changed
52
+ * @type string[]
53
+ * @protected
54
+ */
55
+ static textLayoutProperties: string[];
56
+ /**
57
+ * @private
58
+ */
59
+ _reNewline: RegExp;
60
+ /**
61
+ * Use this regular expression to filter for whitespaces that is not a new line.
62
+ * Mostly used when text is 'justify' aligned.
63
+ * @private
64
+ */
65
+ _reSpacesAndTabs: RegExp;
66
+ /**
67
+ * Use this regular expression to filter for whitespace that is not a new line.
68
+ * Mostly used when text is 'justify' aligned.
69
+ * @private
70
+ */
71
+ _reSpaceAndTab: RegExp;
72
+ /**
73
+ * Use this regular expression to filter consecutive groups of non spaces.
74
+ * Mostly used when text is 'justify' aligned.
75
+ * @private
76
+ */
77
+ _reWords: RegExp;
78
+ text: string;
79
+ /**
80
+ * Font size (in pixels)
81
+ * @type Number
82
+ * @default
83
+ */
84
+ fontSize: number;
85
+ /**
86
+ * Font weight (e.g. bold, normal, 400, 600, 800)
87
+ * @type {(Number|String)}
88
+ * @default
89
+ */
90
+ fontWeight: string;
91
+ /**
92
+ * Font family
93
+ * @type String
94
+ * @default
95
+ */
96
+ fontFamily: string;
97
+ /**
98
+ * Text decoration underline.
99
+ * @type Boolean
100
+ * @default
101
+ */
102
+ underline: boolean;
103
+ /**
104
+ * Text decoration overline.
105
+ * @type Boolean
106
+ * @default
107
+ */
108
+ overline: boolean;
109
+ /**
110
+ * Text decoration linethrough.
111
+ * @type Boolean
112
+ * @default
113
+ */
114
+ linethrough: boolean;
115
+ /**
116
+ * Text alignment. Possible values: "left", "center", "right", "justify",
117
+ * "justify-left", "justify-center" or "justify-right".
118
+ * @type String
119
+ * @default
120
+ */
121
+ textAlign: string;
122
+ /**
123
+ * Font style . Possible values: "", "normal", "italic" or "oblique".
124
+ * @type String
125
+ * @default
126
+ */
127
+ fontStyle: string;
128
+ /**
129
+ * Line height
130
+ * @type Number
131
+ * @default
132
+ */
133
+ lineHeight: number;
134
+ /**
135
+ * Superscript schema object (minimum overlap)
136
+ */
137
+ superscript: {
138
+ /**
139
+ * fontSize factor
140
+ * @default 0.6
141
+ */
142
+ size: number;
143
+ /**
144
+ * baseline-shift factor (upwards)
145
+ * @default -0.35
146
+ */
147
+ baseline: number;
148
+ };
149
+ /**
150
+ * Subscript schema object (minimum overlap)
151
+ */
152
+ subscript: {
153
+ /**
154
+ * fontSize factor
155
+ * @default 0.6
156
+ */
157
+ size: number;
158
+ /**
159
+ * baseline-shift factor (downwards)
160
+ * @default 0.11
161
+ */
162
+ baseline: number;
163
+ };
164
+ /**
165
+ * Background color of text lines
166
+ * @type String
167
+ * @default
168
+ */
169
+ textBackgroundColor: string;
170
+ styles: TextStyle;
171
+ /**
172
+ * Path that the text should follow.
173
+ * since 4.6.0 the path will be drawn automatically.
174
+ * if you want to make the path visible, give it a stroke and strokeWidth or fill value
175
+ * if you want it to be hidden, assign visible = false to the path.
176
+ * This feature is in BETA, and SVG import/export is not yet supported.
177
+ * @type Path
178
+ * @example
179
+ * const textPath = new Text('Text on a path', {
180
+ * top: 150,
181
+ * left: 150,
182
+ * textAlign: 'center',
183
+ * charSpacing: -50,
184
+ * path: new Path('M 0 0 C 50 -100 150 -100 200 0', {
185
+ * strokeWidth: 1,
186
+ * visible: false
187
+ * }),
188
+ * pathSide: 'left',
189
+ * pathStartOffset: 0
190
+ * });
191
+ * @default
192
+ */
193
+ path: Path | null;
194
+ /**
195
+ * Offset amount for text path starting position
196
+ * Only used when text has a path
197
+ * @type Number
198
+ * @default
199
+ */
200
+ pathStartOffset: number;
201
+ /**
202
+ * Which side of the path the text should be drawn on.
203
+ * Only used when text has a path
204
+ * @type {TPathSide} 'left|right'
205
+ * @default
206
+ */
207
+ pathSide: TPathSide;
208
+ /**
209
+ * How text is aligned to the path. This property determines
210
+ * the perpendicular position of each character relative to the path.
211
+ * (one of "baseline", "center", "ascender", "descender")
212
+ * This feature is in BETA, and its behavior may change
213
+ * @type TPathAlign
214
+ * @default
215
+ */
216
+ pathAlign: TPathAlign;
217
+ /**
218
+ * @private
219
+ */
220
+ _fontSizeFraction: number;
221
+ /**
222
+ * @private
223
+ */
224
+ offsets: {
225
+ underline: number;
226
+ linethrough: number;
227
+ overline: number;
228
+ };
229
+ /**
230
+ * Text Line proportion to font Size (in pixels)
231
+ * @type Number
232
+ * @default
233
+ */
234
+ _fontSizeMult: number;
235
+ /**
236
+ * additional space between characters
237
+ * expressed in thousands of em unit
238
+ * @type Number
239
+ * @default
240
+ */
241
+ charSpacing: number;
242
+ /**
243
+ * Baseline shift, styles only, keep at 0 for the main text object
244
+ * @type {Number}
245
+ * @default
246
+ */
247
+ deltaY: number;
248
+ /**
249
+ * WARNING: EXPERIMENTAL. NOT SUPPORTED YET
250
+ * determine the direction of the text.
251
+ * This has to be set manually together with textAlign and originX for proper
252
+ * experience.
253
+ * some interesting link for the future
254
+ * https://www.w3.org/International/questions/qa-bidi-unicode-controls
255
+ * @since 4.5.0
256
+ * @type {CanvasDirection} 'ltr|rtl'
257
+ * @default
258
+ */
259
+ direction: CanvasDirection;
260
+ /**
261
+ * contains characters bounding boxes
262
+ */
263
+ protected __charBounds: GraphemeBBox[][];
264
+ /**
265
+ * use this size when measuring text. To avoid IE11 rounding errors
266
+ * @type {Number}
267
+ * @default
268
+ * @readonly
269
+ * @private
270
+ */
271
+ CACHE_FONT_SIZE: number;
272
+ /**
273
+ * contains the min text width to avoid getting 0
274
+ * @type {Number}
275
+ * @default
276
+ */
277
+ MIN_TEXT_WIDTH: number;
278
+ /**
279
+ * contains the the text of the object, divided in lines as they are displayed
280
+ * on screen. Wrapping will divide the text independently of line breaks
281
+ * @type {string[]}
282
+ * @default
283
+ */
284
+ textLines: string[];
285
+ /**
286
+ * same as textlines, but each line is an array of graphemes as split by splitByGrapheme
287
+ * @type {string[]}
288
+ * @default
289
+ */
290
+ _textLines: string[][];
291
+ _unwrappedTextLines: string[][];
292
+ _text: string[];
293
+ cursorWidth: number;
294
+ __lineHeights: number[];
295
+ __lineWidths: number[];
296
+ initialized?: true;
297
+ static cacheProperties: string[];
298
+ static ownDefaults: Record<string, any>;
299
+ static getDefaults(): {
300
+ [x: string]: any;
301
+ };
302
+ constructor(text: string, options: any);
303
+ /**
304
+ * If text has a path, it will add the extra information needed
305
+ * for path and text calculations
306
+ */
307
+ setPathInfo(): void;
308
+ /**
309
+ * @private
310
+ * Divides text into lines of text and lines of graphemes.
311
+ */
312
+ _splitText(): {
313
+ _unwrappedLines: string[][];
314
+ lines: string[];
315
+ graphemeText: string[];
316
+ graphemeLines: string[][];
317
+ };
318
+ /**
319
+ * Initialize or update text dimensions.
320
+ * Updates this.width and this.height with the proper values.
321
+ * Does not return dimensions.
322
+ */
323
+ initDimensions(): void;
324
+ /**
325
+ * Enlarge space boxes and shift the others
326
+ */
327
+ enlargeSpaces(): void;
328
+ /**
329
+ * Detect if the text line is ended with an hard break
330
+ * text and itext do not have wrapping, return false
331
+ * @return {Boolean}
332
+ */
333
+ isEndOfWrapping(lineIndex: number): boolean;
334
+ /**
335
+ * Detect if a line has a linebreak and so we need to account for it when moving
336
+ * and counting style.
337
+ * It return always for text and Itext.
338
+ * @return Number
339
+ */
340
+ missingNewlineOffset(lineIndex: number): number;
341
+ /**
342
+ * Returns 2d representation (lineIndex and charIndex) of cursor
343
+ * @param {Number} selectionStart
344
+ * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.
345
+ */
346
+ get2DCursorLocation(selectionStart: number, skipWrapping?: boolean): {
347
+ lineIndex: number;
348
+ charIndex: number;
349
+ };
350
+ /**
351
+ * Returns string representation of an instance
352
+ * @return {String} String representation of text object
353
+ */
354
+ toString(): string;
355
+ /**
356
+ * Return the dimension and the zoom level needed to create a cache canvas
357
+ * big enough to host the object to be cached.
358
+ * @private
359
+ * @param {Object} dim.x width of object to be cached
360
+ * @param {Object} dim.y height of object to be cached
361
+ * @return {Object}.width width of canvas
362
+ * @return {Object}.height height of canvas
363
+ * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache
364
+ * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache
365
+ */
366
+ _getCacheCanvasDimensions(): TCacheCanvasDimensions;
367
+ /**
368
+ * @private
369
+ * @param {CanvasRenderingContext2D} ctx Context to render on
370
+ */
371
+ _render(ctx: CanvasRenderingContext2D): void;
372
+ /**
373
+ * @private
374
+ * @param {CanvasRenderingContext2D} ctx Context to render on
375
+ */
376
+ _renderText(ctx: CanvasRenderingContext2D): void;
377
+ /**
378
+ * Set the font parameter of the context with the object properties or with charStyle
379
+ * @private
380
+ * @param {CanvasRenderingContext2D} ctx Context to render on
381
+ * @param {Object} [charStyle] object with font style properties
382
+ * @param {String} [charStyle.fontFamily] Font Family
383
+ * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )
384
+ * @param {String} [charStyle.fontWeight] Font weight
385
+ * @param {String} [charStyle.fontStyle] Font style (italic|normal)
386
+ */
387
+ _setTextStyles(ctx: CanvasRenderingContext2D, charStyle?: any, forMeasuring?: boolean): void;
388
+ /**
389
+ * calculate and return the text Width measuring each line.
390
+ * @private
391
+ * @param {CanvasRenderingContext2D} ctx Context to render on
392
+ * @return {Number} Maximum width of Text object
393
+ */
394
+ calcTextWidth(): number;
395
+ /**
396
+ * @private
397
+ * @param {String} method Method name ("fillText" or "strokeText")
398
+ * @param {CanvasRenderingContext2D} ctx Context to render on
399
+ * @param {String} line Text to render
400
+ * @param {Number} left Left position of text
401
+ * @param {Number} top Top position of text
402
+ * @param {Number} lineIndex Index of a line in a text
403
+ */
404
+ _renderTextLine(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, line: string[], left: number, top: number, lineIndex: number): void;
405
+ /**
406
+ * Renders the text background for lines, taking care of style
407
+ * @private
408
+ * @param {CanvasRenderingContext2D} ctx Context to render on
409
+ */
410
+ _renderTextLinesBackground(ctx: CanvasRenderingContext2D): void;
411
+ /**
412
+ * measure and return the width of a single character.
413
+ * possibly overridden to accommodate different measure logic or
414
+ * to hook some external lib for character measurement
415
+ * @private
416
+ * @param {String} _char, char to be measured
417
+ * @param {Object} charStyle style of char to be measured
418
+ * @param {String} [previousChar] previous char
419
+ * @param {Object} [prevCharStyle] style of previous char
420
+ */
421
+ _measureChar(_char: string, charStyle: TextStyleDeclaration, previousChar: string | undefined, prevCharStyle: any): {
422
+ width: number;
423
+ kernedWidth: number;
424
+ };
425
+ /**
426
+ * Computes height of character at given position
427
+ * @param {Number} line the line index number
428
+ * @param {Number} _char the character index number
429
+ * @return {Number} fontSize of the character
430
+ */
431
+ getHeightOfChar(line: number, _char: number): number;
432
+ /**
433
+ * measure a text line measuring all characters.
434
+ * @param {Number} lineIndex line number
435
+ */
436
+ measureLine(lineIndex: number): {
437
+ width: number;
438
+ numOfSpaces: number;
439
+ };
440
+ /**
441
+ * measure every grapheme of a line, populating __charBounds
442
+ * @param {Number} lineIndex
443
+ * @return {Object} object.width total width of characters
444
+ * @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs
445
+ */
446
+ _measureLine(lineIndex: number): {
447
+ width: number;
448
+ numOfSpaces: number;
449
+ };
450
+ /**
451
+ * Calculate the angle and the left,top position of the char that follow a path.
452
+ * It appends it to graphemeInfo to be reused later at rendering
453
+ * @private
454
+ * @param {Number} positionInPath to be measured
455
+ * @param {GraphemeBBox} graphemeInfo current grapheme box information
456
+ * @param {Object} startingPoint position of the point
457
+ */
458
+ _setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox<true>, startingPoint: Point): void;
459
+ /**
460
+ *
461
+ * @param {String} grapheme to be measured
462
+ * @param {Number} lineIndex index of the line where the char is
463
+ * @param {Number} charIndex position in the line
464
+ * @param {String} [prevGrapheme] character preceding the one to be measured
465
+ * @returns {GraphemeBBox} grapheme bbox
466
+ */
467
+ _getGraphemeBox(grapheme: string, lineIndex: number, charIndex: number, prevGrapheme?: string, skipLeft?: boolean): GraphemeBBox;
468
+ /**
469
+ * Calculate height of line at 'lineIndex'
470
+ * @param {Number} lineIndex index of line to calculate
471
+ * @return {Number}
472
+ */
473
+ getHeightOfLine(lineIndex: number): number;
474
+ /**
475
+ * Calculate text box height
476
+ */
477
+ calcTextHeight(): number;
478
+ /**
479
+ * @private
480
+ * @return {Number} Left offset
481
+ */
482
+ _getLeftOffset(): number;
483
+ /**
484
+ * @private
485
+ * @return {Number} Top offset
486
+ */
487
+ _getTopOffset(): number;
488
+ /**
489
+ * @private
490
+ * @param {CanvasRenderingContext2D} ctx Context to render on
491
+ * @param {String} method Method name ("fillText" or "strokeText")
492
+ */
493
+ _renderTextCommon(ctx: CanvasRenderingContext2D, method: 'fillText' | 'strokeText'): void;
494
+ /**
495
+ * @private
496
+ * @param {CanvasRenderingContext2D} ctx Context to render on
497
+ */
498
+ _renderTextFill(ctx: CanvasRenderingContext2D): void;
499
+ /**
500
+ * @private
501
+ * @param {CanvasRenderingContext2D} ctx Context to render on
502
+ */
503
+ _renderTextStroke(ctx: CanvasRenderingContext2D): void;
504
+ /**
505
+ * @private
506
+ * @param {String} method fillText or strokeText.
507
+ * @param {CanvasRenderingContext2D} ctx Context to render on
508
+ * @param {Array} line Content of the line, splitted in an array by grapheme
509
+ * @param {Number} left
510
+ * @param {Number} top
511
+ * @param {Number} lineIndex
512
+ */
513
+ _renderChars(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, line: Array<any>, left: number, top: number, lineIndex: number): void;
514
+ /**
515
+ * This function try to patch the missing gradientTransform on canvas gradients.
516
+ * transforming a context to transform the gradient, is going to transform the stroke too.
517
+ * we want to transform the gradient but not the stroke operation, so we create
518
+ * a transformed gradient on a pattern and then we use the pattern instead of the gradient.
519
+ * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size
520
+ * is limited.
521
+ * @private
522
+ * @param {TFiller} filler a fabric gradient instance
523
+ * @return {CanvasPattern} a pattern to use as fill/stroke style
524
+ */
525
+ _applyPatternGradientTransformText(filler: TFiller): CanvasPattern;
526
+ handleFiller<T extends 'fill' | 'stroke'>(ctx: CanvasRenderingContext2D, property: `${T}Style`, filler: TFiller | string): {
527
+ offsetX: number;
528
+ offsetY: number;
529
+ };
530
+ _setStrokeStyles(ctx: CanvasRenderingContext2D, { stroke, strokeWidth }: Pick<this, 'stroke' | 'strokeWidth'>): {
531
+ offsetX: number;
532
+ offsetY: number;
533
+ };
534
+ _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>): {
535
+ offsetX: number;
536
+ offsetY: number;
537
+ };
538
+ /**
539
+ * @private
540
+ * @param {String} method
541
+ * @param {CanvasRenderingContext2D} ctx Context to render on
542
+ * @param {Number} lineIndex
543
+ * @param {Number} charIndex
544
+ * @param {String} _char
545
+ * @param {Number} left Left coordinate
546
+ * @param {Number} top Top coordinate
547
+ * @param {Number} lineHeight Height of the line
548
+ */
549
+ _renderChar(method: 'fillText' | 'strokeText', ctx: CanvasRenderingContext2D, lineIndex: number, charIndex: number, _char: string, left: number, top: number): void;
550
+ /**
551
+ * Turns the character into a 'superior figure' (i.e. 'superscript')
552
+ * @param {Number} start selection start
553
+ * @param {Number} end selection end
554
+ */
555
+ setSuperscript(start: number, end: number): void;
556
+ /**
557
+ * Turns the character into an 'inferior figure' (i.e. 'subscript')
558
+ * @param {Number} start selection start
559
+ * @param {Number} end selection end
560
+ */
561
+ setSubscript(start: number, end: number): void;
562
+ /**
563
+ * Applies 'schema' at given position
564
+ * @private
565
+ * @param {Number} start selection start
566
+ * @param {Number} end selection end
567
+ * @param {Number} schema
568
+ */
569
+ protected _setScript(start: number, end: number, schema: {
570
+ size: number;
571
+ baseline: number;
572
+ }): void;
573
+ /**
574
+ * @private
575
+ * @param {Number} lineIndex index text line
576
+ * @return {Number} Line left offset
577
+ */
578
+ _getLineLeftOffset(lineIndex: number): number;
579
+ /**
580
+ * @private
581
+ */
582
+ _clearCache(): void;
583
+ /**
584
+ * Measure a single line given its index. Used to calculate the initial
585
+ * text bounding box. The values are calculated and stored in __lineWidths cache.
586
+ * @private
587
+ * @param {Number} lineIndex line number
588
+ * @return {Number} Line width
589
+ */
590
+ getLineWidth(lineIndex: number): number;
591
+ _getWidthOfCharSpacing(): number;
592
+ /**
593
+ * Retrieves the value of property at given character position
594
+ * @param {Number} lineIndex the line number
595
+ * @param {Number} charIndex the character number
596
+ * @param {String} property the property name
597
+ * @returns the value of 'property'
598
+ */
599
+ getValueOfPropertyAt(lineIndex: number, charIndex: number, property: string): any;
600
+ /**
601
+ * @private
602
+ * @param {CanvasRenderingContext2D} ctx Context to render on
603
+ */
604
+ _renderTextDecoration(ctx: CanvasRenderingContext2D, type: 'underline' | 'linethrough' | 'overline'): void;
605
+ /**
606
+ * return font declaration string for canvas context
607
+ * @param {Object} [styleObject] object
608
+ * @returns {String} font declaration formatted for canvas context.
609
+ */
610
+ _getFontDeclaration(styleObject?: TextStyleDeclaration, forMeasuring?: boolean): string;
611
+ /**
612
+ * Renders text instance on a specified context
613
+ * @param {CanvasRenderingContext2D} ctx Context to render on
614
+ */
615
+ render(ctx: CanvasRenderingContext2D): void;
616
+ /**
617
+ * Override this method to customize grapheme splitting
618
+ * @todo the util `graphemeSplit` needs to be injectable in some way.
619
+ * is more comfortable to inject the correct util rather than having to override text
620
+ * in the middle of the prototype chain
621
+ * @param {string} value
622
+ * @returns {string[]} array of graphemes
623
+ */
624
+ graphemeSplit(value: string): string[];
625
+ /**
626
+ * Returns the text as an array of lines.
627
+ * @param {String} text text to split
628
+ * @returns Lines in the text
629
+ */
630
+ _splitTextIntoLines(text: string): {
631
+ _unwrappedLines: string[][];
632
+ lines: string[];
633
+ graphemeText: string[];
634
+ graphemeLines: string[][];
635
+ };
636
+ /**
637
+ * Returns object representation of an instance
638
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
639
+ * @return {Object} Object representation of an instance
640
+ */
641
+ toObject<T extends Omit<Props & TClassProperties<this>, keyof SProps>, K extends keyof T = never>(propertiesToInclude?: K[]): Pick<T, K> & SProps;
642
+ set(key: string | any, value?: any): this;
643
+ /**
644
+ * Returns complexity of an instance
645
+ * @return {Number} complexity
646
+ */
647
+ complexity(): number;
648
+ static genericFonts: string[];
649
+ /**
650
+ * List of attribute names to account for when parsing SVG element (used by {@link Text.fromElement})
651
+ * @static
652
+ * @memberOf Text
653
+ * @see: http://www.w3.org/TR/SVG/text.html#TextElement
654
+ */
655
+ static ATTRIBUTE_NAMES: string[];
656
+ /**
657
+ * Returns Text instance from an SVG element (<b>not yet implemented</b>)
658
+ * @static
659
+ * @memberOf Text
660
+ * @param {SVGElement} element Element to parse
661
+ * @param {Function} callback callback function invoked after parsing
662
+ * @param {Object} [options] Options object
663
+ */
664
+ static fromElement(element: SVGElement, callback: (text: Text | null) => any, options: object): any;
665
+ /**
666
+ * Returns Text instance from an object representation
667
+ * @param {Object} object plain js Object to create an instance from
668
+ * @returns {Promise<Text>}
669
+ */
670
+ static fromObject<T extends TProps<SerializedTextProps>>(object: T): Promise<Text<Partial<TextProps>, SerializedTextProps, ObjectEvents>>;
671
+ }
672
+ export {};
673
+ //# 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