fabric 5.3.0 → 6.0.0-beta10

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