fabric 5.3.0 → 6.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. package/.babelrc +11 -0
  2. package/.babelrcAlt +19 -0
  3. package/.browserslistrc +5 -0
  4. package/.eslintrc.js +43 -0
  5. package/.eslintrc.json +38 -46
  6. package/.eslintrc_tests +12 -0
  7. package/.gitattributes +2 -0
  8. package/.prettierignore +16 -0
  9. package/.prettierrc +4 -0
  10. package/CHANGELOG.md +491 -189
  11. package/CONTRIBUTING.md +226 -58
  12. package/README.md +188 -239
  13. package/bower.json +1 -3
  14. package/dist/fabric.d.ts +1021 -0
  15. package/dist/index.cjs +28027 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.min.js +1 -0
  19. package/dist/index.mjs +27964 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/dist/index.node.cjs +28092 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.d.ts +15 -0
  24. package/dist/index.node.mjs +28035 -0
  25. package/dist/index.node.mjs.map +1 -0
  26. package/dist/src/Collection.d.ts +126 -0
  27. package/dist/src/CommonMethods.d.ts +32 -0
  28. package/dist/src/EventTypeDefs.d.ts +226 -0
  29. package/dist/src/Intersection.d.ts +100 -0
  30. package/dist/src/Observable.d.ts +54 -0
  31. package/dist/src/Pattern.d.ts +104 -0
  32. package/dist/src/Point.d.ts +232 -0
  33. package/dist/src/Shadow.d.ts +87 -0
  34. package/dist/src/brushes/BaseBrush.d.ts +105 -0
  35. package/dist/src/brushes/CircleBrush.d.ts +49 -0
  36. package/dist/src/brushes/PatternBrush.d.ts +23 -0
  37. package/dist/src/brushes/PencilBrush.d.ts +92 -0
  38. package/dist/src/brushes/SprayBrush.d.ts +79 -0
  39. package/dist/src/cache.d.ts +46 -0
  40. package/dist/src/canvas/Canvas.d.ts +567 -0
  41. package/dist/src/canvas/SelectableCanvas.d.ts +723 -0
  42. package/dist/src/canvas/StaticCanvas.d.ts +751 -0
  43. package/dist/src/canvas/TextEditingManager.d.ts +17 -0
  44. package/dist/src/canvas/canvas_gestures.mixin.d.ts +2 -0
  45. package/dist/src/color/Color.d.ts +174 -0
  46. package/dist/src/color/color_map.d.ts +155 -0
  47. package/dist/src/color/constants.d.ts +22 -0
  48. package/dist/src/color/util.d.ts +12 -0
  49. package/dist/src/config.d.ts +115 -0
  50. package/dist/src/constants.d.ts +14 -0
  51. package/dist/src/controls/Control.d.ts +228 -0
  52. package/dist/src/controls/changeWidth.d.ts +13 -0
  53. package/dist/src/controls/controls.render.d.ts +29 -0
  54. package/dist/src/controls/default_controls.d.ts +50 -0
  55. package/dist/src/controls/drag.d.ts +12 -0
  56. package/dist/src/controls/polyControl.d.ts +5 -0
  57. package/dist/src/controls/rotate.d.ts +12 -0
  58. package/dist/src/controls/scale.d.ts +47 -0
  59. package/dist/src/controls/scaleSkew.d.ts +39 -0
  60. package/dist/src/controls/skew.d.ts +33 -0
  61. package/dist/src/controls/util.d.ts +41 -0
  62. package/dist/src/controls/wrapWithFireEvent.d.ts +8 -0
  63. package/dist/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  64. package/dist/src/env/browser.d.ts +3 -0
  65. package/dist/src/env/index.d.ts +7 -0
  66. package/dist/src/env/node.d.ts +3 -0
  67. package/dist/src/env/types.d.ts +15 -0
  68. package/dist/src/filters/BaseFilter.d.ts +156 -0
  69. package/dist/src/filters/BlendColor.d.ts +80 -0
  70. package/dist/src/filters/BlendImage.d.ts +90 -0
  71. package/dist/src/filters/Blur.d.ts +50 -0
  72. package/dist/src/filters/Boilerplate.d.ts +46 -0
  73. package/dist/src/filters/Brightness.d.ts +46 -0
  74. package/dist/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  75. package/dist/src/filters/ColorMatrix.d.ts +62 -0
  76. package/dist/src/filters/ColorMatrixFilters.d.ts +1169 -0
  77. package/dist/src/filters/Composed.d.ts +47 -0
  78. package/dist/src/filters/Contrast.d.ts +44 -0
  79. package/dist/src/filters/Convolute.d.ts +82 -0
  80. package/dist/src/filters/FilterBackend.d.ts +14 -0
  81. package/dist/src/filters/Gamma.d.ts +53 -0
  82. package/dist/src/filters/Grayscale.d.ts +45 -0
  83. package/dist/src/filters/HueRotation.d.ts +24 -0
  84. package/dist/src/filters/Invert.d.ts +54 -0
  85. package/dist/src/filters/Noise.d.ts +53 -0
  86. package/dist/src/filters/Pixelate.d.ts +43 -0
  87. package/dist/src/filters/RemoveColor.d.ts +62 -0
  88. package/dist/src/filters/Resize.d.ts +134 -0
  89. package/dist/src/filters/Saturation.d.ts +47 -0
  90. package/dist/src/filters/Vibrance.d.ts +47 -0
  91. package/dist/src/filters/WebGLFilterBackend.d.ts +126 -0
  92. package/dist/src/filters/WebGLProbe.d.ts +28 -0
  93. package/dist/src/filters/typedefs.d.ts +49 -0
  94. package/dist/src/gradient/Gradient.d.ts +149 -0
  95. package/dist/src/gradient/constants.d.ts +15 -0
  96. package/dist/src/gradient/parser/index.d.ts +4 -0
  97. package/dist/src/gradient/parser/misc.d.ts +4 -0
  98. package/dist/src/gradient/parser/parseColorStops.d.ts +6 -0
  99. package/dist/src/gradient/parser/parseCoords.d.ts +17 -0
  100. package/dist/src/gradient/typedefs.d.ts +93 -0
  101. package/dist/src/mixins/eraser_brush.mixin.d.ts +2 -0
  102. package/dist/src/mixins/stateful.mixin.d.ts +18 -0
  103. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +2 -0
  104. package/dist/src/parkinglot/straighten.d.ts +2 -0
  105. package/dist/src/parser/applyViewboxTransform.d.ts +5 -0
  106. package/dist/src/parser/attributes.d.ts +6 -0
  107. package/dist/src/parser/constants.d.ts +54 -0
  108. package/dist/src/parser/doesSomeParentMatch.d.ts +2 -0
  109. package/dist/src/parser/elementById.d.ts +6 -0
  110. package/dist/src/parser/elementMatchesRule.d.ts +5 -0
  111. package/dist/src/parser/elements_parser.d.ts +3 -0
  112. package/dist/src/parser/getCSSRules.d.ts +7 -0
  113. package/dist/src/parser/getGlobalStylesForElement.d.ts +5 -0
  114. package/dist/src/parser/getGradientDefs.d.ts +7 -0
  115. package/dist/src/parser/getMultipleNodes.d.ts +2 -0
  116. package/dist/src/parser/getSvgRegex.d.ts +2 -0
  117. package/dist/src/parser/hasAncestorWithNodeName.d.ts +2 -0
  118. package/dist/src/parser/loadSVGFromString.d.ts +12 -0
  119. package/dist/src/parser/loadSVGFromURL.d.ts +13 -0
  120. package/dist/src/parser/normalizeAttr.d.ts +2 -0
  121. package/dist/src/parser/normalizeValue.d.ts +2 -0
  122. package/dist/src/parser/parseAttributes.d.ts +9 -0
  123. package/dist/src/parser/parseElements.d.ts +11 -0
  124. package/dist/src/parser/parseFontDeclaration.d.ts +10 -0
  125. package/dist/src/parser/parsePointsAttribute.d.ts +12 -0
  126. package/dist/src/parser/parseSVGDocument.d.ts +15 -0
  127. package/dist/src/parser/parseStyleAttribute.d.ts +9 -0
  128. package/dist/src/parser/parseStyleObject.d.ts +2 -0
  129. package/dist/src/parser/parseStyleString.d.ts +2 -0
  130. package/dist/src/parser/parseTransformAttribute.d.ts +10 -0
  131. package/dist/src/parser/parseUseDirectives.d.ts +2 -0
  132. package/dist/src/parser/percent.d.ts +9 -0
  133. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  134. package/dist/src/parser/rotateMatrix.d.ts +2 -0
  135. package/dist/src/parser/scaleMatrix.d.ts +2 -0
  136. package/dist/src/parser/selectorMatches.d.ts +2 -0
  137. package/dist/src/parser/setStrokeFillOpacity.d.ts +6 -0
  138. package/dist/src/parser/skewMatrix.d.ts +2 -0
  139. package/dist/src/parser/translateMatrix.d.ts +2 -0
  140. package/dist/src/shapes/ActiveSelection.d.ts +66 -0
  141. package/dist/src/shapes/Circle.d.ts +80 -0
  142. package/dist/src/shapes/Ellipse.d.ts +74 -0
  143. package/dist/src/shapes/Group.d.ts +381 -0
  144. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  145. package/dist/src/shapes/IText/IText.d.ts +322 -0
  146. package/dist/src/shapes/IText/ITextBehavior.d.ts +285 -0
  147. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  148. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +193 -0
  149. package/dist/src/shapes/IText/constants.d.ts +13 -0
  150. package/dist/src/shapes/Image.d.ts +283 -0
  151. package/dist/src/shapes/Line.d.ts +117 -0
  152. package/dist/src/shapes/Object/AnimatableObject.d.ts +33 -0
  153. package/dist/src/shapes/Object/FabricObject.d.ts +9 -0
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +74 -0
  155. package/dist/src/shapes/Object/InteractiveObject.d.ts +282 -0
  156. package/dist/src/shapes/Object/Object.d.ts +906 -0
  157. package/dist/src/shapes/Object/ObjectGeometry.d.ts +343 -0
  158. package/dist/src/shapes/Object/ObjectOrigin.d.ts +178 -0
  159. package/dist/src/shapes/Object/StackedObject.d.ts +62 -0
  160. package/dist/src/shapes/Object/defaultValues.d.ts +77 -0
  161. package/dist/src/shapes/Path.d.ts +123 -0
  162. package/dist/src/shapes/Polygon.d.ts +7 -0
  163. package/dist/src/shapes/Polyline.d.ts +130 -0
  164. package/dist/src/shapes/Rect.d.ts +62 -0
  165. package/dist/src/shapes/Text/StyledText.d.ts +118 -0
  166. package/dist/src/shapes/Text/Text.d.ts +656 -0
  167. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +32 -0
  168. package/dist/src/shapes/Textbox.d.ts +170 -0
  169. package/dist/src/shapes/Triangle.d.ts +17 -0
  170. package/dist/src/typedefs.d.ts +93 -0
  171. package/dist/src/util/animation/AnimationBase.d.ts +54 -0
  172. package/dist/src/util/animation/AnimationFrameProvider.d.ts +8 -0
  173. package/dist/src/util/animation/AnimationRegistry.d.ts +29 -0
  174. package/dist/src/util/animation/ArrayAnimation.d.ts +10 -0
  175. package/dist/src/util/animation/ColorAnimation.d.ts +11 -0
  176. package/dist/src/util/animation/ValueAnimation.d.ts +10 -0
  177. package/dist/src/util/animation/animate.d.ts +37 -0
  178. package/dist/src/util/animation/easing.d.ts +130 -0
  179. package/dist/src/util/animation/types.d.ts +87 -0
  180. package/dist/src/util/applyMixins.d.ts +8 -0
  181. package/dist/src/util/class_registry.d.ts +14 -0
  182. package/dist/src/util/dom_event.d.ts +5 -0
  183. package/dist/src/util/dom_misc.d.ts +40 -0
  184. package/dist/src/util/dom_request.d.ts +14 -0
  185. package/dist/src/util/dom_style.d.ts +7 -0
  186. package/dist/src/util/fireEvent.d.ts +3 -0
  187. package/dist/src/util/internals/cloneDeep.d.ts +2 -0
  188. package/dist/src/util/internals/getRandomInt.d.ts +8 -0
  189. package/dist/src/util/internals/ifNaN.d.ts +8 -0
  190. package/dist/src/util/internals/index.d.ts +4 -0
  191. package/dist/src/util/internals/removeFromArray.d.ts +9 -0
  192. package/dist/src/util/internals/uid.d.ts +2 -0
  193. package/dist/src/util/lang_class.d.ts +12 -0
  194. package/dist/src/util/lang_string.d.ts +22 -0
  195. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  196. package/dist/src/util/misc/capValue.d.ts +2 -0
  197. package/dist/src/util/misc/cos.d.ts +10 -0
  198. package/dist/src/util/misc/dom.d.ts +28 -0
  199. package/dist/src/util/misc/findScaleTo.d.ts +29 -0
  200. package/dist/src/util/misc/groupSVGElements.d.ts +9 -0
  201. package/dist/src/util/misc/isTransparent.d.ts +11 -0
  202. package/dist/src/util/misc/matrix.d.ts +92 -0
  203. package/dist/src/util/misc/mergeClipPaths.d.ts +23 -0
  204. package/dist/src/util/misc/objectEnlive.d.ts +56 -0
  205. package/dist/src/util/misc/objectTransforms.d.ts +68 -0
  206. package/dist/src/util/misc/pick.d.ts +8 -0
  207. package/dist/src/util/misc/planeChange.d.ts +84 -0
  208. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +51 -0
  209. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +81 -0
  210. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +25 -0
  211. package/dist/src/util/misc/projectStroke/index.d.ts +11 -0
  212. package/dist/src/util/misc/projectStroke/types.d.ts +23 -0
  213. package/dist/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  214. package/dist/src/util/misc/resolveOrigin.d.ts +9 -0
  215. package/dist/src/util/misc/rotatePoint.d.ts +12 -0
  216. package/dist/src/util/misc/sin.d.ts +10 -0
  217. package/dist/src/util/misc/svgParsing.d.ts +53 -0
  218. package/dist/src/util/misc/textStyles.d.ts +32 -0
  219. package/dist/src/util/misc/toFixed.d.ts +8 -0
  220. package/dist/src/util/misc/vectors.d.ts +57 -0
  221. package/dist/src/util/path.d.ts +108 -0
  222. package/dist/src/util/transform_matrix_removal.d.ts +14 -0
  223. package/dist/src/util/types.d.ts +19 -0
  224. package/fabric.ts +427 -0
  225. package/index.node.ts +43 -0
  226. package/index.ts +1 -0
  227. package/package.json +90 -39
  228. package/publish.js +0 -26
  229. package/rollup.config.mjs +79 -0
  230. package/rollup.test.config.js +24 -0
  231. package/scripts/build.mjs +50 -0
  232. package/scripts/buildLock.mjs +115 -0
  233. package/scripts/buildReporter.mjs +15 -0
  234. package/scripts/buildStats.mjs +139 -0
  235. package/scripts/dirname.mjs +14 -0
  236. package/scripts/index.mjs +679 -0
  237. package/scripts/transform_files.mjs +504 -0
  238. package/src/Collection.ts +311 -0
  239. package/src/CommonMethods.ts +63 -0
  240. package/src/EventTypeDefs.ts +294 -0
  241. package/src/Intersection.ts +273 -0
  242. package/src/Observable.ts +175 -0
  243. package/src/Pattern.ts +211 -0
  244. package/src/Point.ts +388 -0
  245. package/src/Shadow.ts +215 -0
  246. package/src/brushes/{base_brush.class.js → BaseBrush.ts} +65 -42
  247. package/src/brushes/CircleBrush.ts +145 -0
  248. package/src/brushes/PatternBrush.ts +70 -0
  249. package/src/brushes/PencilBrush.ts +300 -0
  250. package/src/brushes/SprayBrush.ts +219 -0
  251. package/src/cache.ts +89 -0
  252. package/src/canvas/Canvas.ts +1672 -0
  253. package/src/canvas/SelectableCanvas.ts +1636 -0
  254. package/src/canvas/StaticCanvas.ts +1709 -0
  255. package/src/canvas/TextEditingManager.ts +48 -0
  256. package/src/canvas/canvas_gestures.mixin.ts +207 -0
  257. package/src/color/Color.ts +404 -0
  258. package/src/color/color_map.ts +154 -0
  259. package/src/color/constants.ts +26 -0
  260. package/src/color/util.ts +32 -0
  261. package/src/config.ts +159 -0
  262. package/src/constants.ts +19 -0
  263. package/src/controls/Control.ts +377 -0
  264. package/src/controls/changeWidth.ts +52 -0
  265. package/src/controls/controls.render.ts +138 -0
  266. package/src/controls/default_controls.ts +132 -0
  267. package/src/controls/drag.ts +31 -0
  268. package/src/controls/polyControl.ts +135 -0
  269. package/src/controls/rotate.ts +87 -0
  270. package/src/controls/scale.ts +277 -0
  271. package/src/controls/scaleSkew.ts +92 -0
  272. package/src/controls/skew.ts +242 -0
  273. package/src/controls/util.ts +154 -0
  274. package/src/controls/wrapWithFireEvent.ts +25 -0
  275. package/src/controls/wrapWithFixedAnchor.ts +20 -0
  276. package/src/env/browser.ts +28 -0
  277. package/src/env/index.ts +19 -0
  278. package/src/env/node.ts +52 -0
  279. package/src/env/types.ts +15 -0
  280. package/src/filters/{base_filter.class.js → BaseFilter.ts} +201 -149
  281. package/src/filters/BlendColor.ts +258 -0
  282. package/src/filters/BlendImage.ts +254 -0
  283. package/src/filters/Blur.ts +202 -0
  284. package/src/filters/Boilerplate.ts +91 -0
  285. package/src/filters/Brightness.ts +93 -0
  286. package/src/filters/Canvas2dFilterBackend.ts +65 -0
  287. package/src/filters/ColorMatrix.ts +156 -0
  288. package/src/filters/ColorMatrixFilters.ts +106 -0
  289. package/src/filters/Composed.ts +85 -0
  290. package/src/filters/Contrast.ts +94 -0
  291. package/src/filters/Convolute.ts +341 -0
  292. package/src/filters/FilterBackend.ts +32 -0
  293. package/src/filters/Gamma.ts +127 -0
  294. package/src/filters/Grayscale.ts +137 -0
  295. package/src/filters/HueRotation.ts +66 -0
  296. package/src/filters/Invert.ts +117 -0
  297. package/src/filters/Noise.ts +109 -0
  298. package/src/filters/Pixelate.ts +114 -0
  299. package/src/filters/RemoveColor.ts +148 -0
  300. package/src/filters/Resize.ts +540 -0
  301. package/src/filters/Saturation.ts +100 -0
  302. package/src/filters/Vibrance.ts +103 -0
  303. package/src/filters/WebGLFilterBackend.ts +430 -0
  304. package/src/filters/WebGLProbe.ts +62 -0
  305. package/src/filters/typedefs.ts +65 -0
  306. package/src/gradient/Gradient.ts +401 -0
  307. package/src/gradient/constants.ts +12 -0
  308. package/src/gradient/parser/index.ts +3 -0
  309. package/src/gradient/parser/misc.ts +13 -0
  310. package/src/gradient/parser/parseColorStops.ts +55 -0
  311. package/src/gradient/parser/parseCoords.ts +73 -0
  312. package/src/gradient/typedefs.ts +104 -0
  313. package/src/mixins/{eraser_brush.mixin.js → eraser_brush.mixin.ts} +350 -239
  314. package/src/mixins/stateful.mixin.ts +104 -0
  315. package/src/parkinglot/canvas_animation.mixin.ts +121 -0
  316. package/src/parkinglot/straighten.ts +58 -0
  317. package/src/parser/applyViewboxTransform.ts +162 -0
  318. package/src/parser/attributes.ts +25 -0
  319. package/src/parser/constants.ts +118 -0
  320. package/src/parser/doesSomeParentMatch.ts +19 -0
  321. package/src/parser/elementById.ts +23 -0
  322. package/src/parser/elementMatchesRule.ts +19 -0
  323. package/src/parser/elements_parser.ts +191 -0
  324. package/src/parser/getCSSRules.ts +62 -0
  325. package/src/parser/getGlobalStylesForElement.ts +19 -0
  326. package/src/parser/getGradientDefs.ts +32 -0
  327. package/src/parser/getMultipleNodes.ts +15 -0
  328. package/src/parser/getSvgRegex.ts +5 -0
  329. package/src/parser/hasAncestorWithNodeName.ts +14 -0
  330. package/src/parser/loadSVGFromString.ts +26 -0
  331. package/src/parser/loadSVGFromURL.ts +40 -0
  332. package/src/parser/normalizeAttr.ts +10 -0
  333. package/src/parser/normalizeValue.ts +63 -0
  334. package/src/parser/parseAttributes.ts +90 -0
  335. package/src/parser/parseElements.ts +28 -0
  336. package/src/parser/parseFontDeclaration.ts +44 -0
  337. package/src/parser/parsePointsAttribute.ts +36 -0
  338. package/src/parser/parseSVGDocument.ts +106 -0
  339. package/src/parser/parseStyleAttribute.ts +27 -0
  340. package/src/parser/parseStyleObject.ts +15 -0
  341. package/src/parser/parseStyleString.ts +16 -0
  342. package/src/parser/parseTransformAttribute.ts +155 -0
  343. package/src/parser/parseUseDirectives.ts +79 -0
  344. package/src/parser/percent.ts +27 -0
  345. package/src/parser/recursivelyParseGradientsXlink.ts +42 -0
  346. package/src/parser/rotateMatrix.ts +21 -0
  347. package/src/parser/scaleMatrix.ts +9 -0
  348. package/src/parser/selectorMatches.ts +25 -0
  349. package/src/parser/setStrokeFillOpacity.ts +40 -0
  350. package/src/parser/skewMatrix.ts +6 -0
  351. package/src/parser/translateMatrix.ts +8 -0
  352. package/src/shapes/ActiveSelection.ts +157 -0
  353. package/src/shapes/Circle.ts +205 -0
  354. package/src/shapes/Ellipse.ts +154 -0
  355. package/src/shapes/Group.ts +1053 -0
  356. package/src/shapes/IText/DraggableTextDelegate.ts +394 -0
  357. package/src/shapes/IText/IText.ts +666 -0
  358. package/src/shapes/IText/ITextBehavior.ts +1055 -0
  359. package/src/shapes/IText/ITextClickBehavior.ts +321 -0
  360. package/src/shapes/IText/ITextKeyBehavior.ts +683 -0
  361. package/src/shapes/IText/constants.ts +47 -0
  362. package/src/shapes/Image.ts +789 -0
  363. package/src/shapes/Line.ts +329 -0
  364. package/src/shapes/Object/AnimatableObject.ts +106 -0
  365. package/src/shapes/Object/FabricObject.ts +19 -0
  366. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +277 -0
  367. package/src/shapes/Object/InteractiveObject.ts +645 -0
  368. package/src/shapes/Object/Object.ts +1896 -0
  369. package/src/shapes/Object/ObjectGeometry.ts +830 -0
  370. package/src/shapes/Object/ObjectOrigin.ts +354 -0
  371. package/src/shapes/Object/StackedObject.ts +191 -0
  372. package/src/shapes/Object/defaultValues.ts +112 -0
  373. package/src/shapes/Path.ts +395 -0
  374. package/src/shapes/Polygon.ts +19 -0
  375. package/src/shapes/Polyline.ts +333 -0
  376. package/src/shapes/Rect.ts +199 -0
  377. package/src/shapes/Text/StyledText.ts +319 -0
  378. package/src/shapes/Text/Text.ts +1948 -0
  379. package/src/shapes/Text/TextSVGExportMixin.ts +288 -0
  380. package/src/shapes/Textbox.ts +471 -0
  381. package/src/shapes/Triangle.ts +45 -0
  382. package/src/typedefs.ts +119 -0
  383. package/src/util/animation/AnimationBase.ts +166 -0
  384. package/src/util/animation/AnimationFrameProvider.ts +28 -0
  385. package/src/util/animation/AnimationRegistry.ts +58 -0
  386. package/src/util/animation/ArrayAnimation.ts +27 -0
  387. package/src/util/animation/ColorAnimation.ts +74 -0
  388. package/src/util/animation/ValueAnimation.ts +29 -0
  389. package/src/util/animation/animate.ts +74 -0
  390. package/src/util/animation/easing.ts +327 -0
  391. package/src/util/animation/types.ts +136 -0
  392. package/src/util/applyMixins.ts +22 -0
  393. package/src/util/class_registry.ts +54 -0
  394. package/src/util/dom_event.ts +28 -0
  395. package/src/util/dom_misc.ts +138 -0
  396. package/src/util/dom_request.ts +64 -0
  397. package/src/util/dom_style.ts +20 -0
  398. package/src/util/fireEvent.ts +15 -0
  399. package/src/util/internals/cloneDeep.ts +2 -0
  400. package/src/util/internals/getRandomInt.ts +8 -0
  401. package/src/util/internals/ifNaN.ts +9 -0
  402. package/src/util/internals/index.ts +3 -0
  403. package/src/util/internals/removeFromArray.ts +14 -0
  404. package/src/util/internals/uid.ts +3 -0
  405. package/src/util/lang_class.ts +90 -0
  406. package/src/util/lang_string.ts +79 -0
  407. package/src/util/misc/boundingBoxFromPoints.ts +37 -0
  408. package/src/util/misc/capValue.ts +2 -0
  409. package/src/util/misc/cos.ts +24 -0
  410. package/src/util/misc/dom.ts +50 -0
  411. package/src/util/misc/findScaleTo.ts +44 -0
  412. package/src/util/misc/groupSVGElements.ts +15 -0
  413. package/src/util/misc/isTransparent.ts +51 -0
  414. package/src/util/misc/matrix.ts +207 -0
  415. package/src/util/misc/mergeClipPaths.ts +40 -0
  416. package/src/util/misc/objectEnlive.ts +189 -0
  417. package/src/util/misc/objectTransforms.ts +129 -0
  418. package/src/util/misc/pick.ts +17 -0
  419. package/src/util/misc/planeChange.ts +136 -0
  420. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +112 -0
  421. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +231 -0
  422. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +75 -0
  423. package/src/util/misc/projectStroke/index.ts +53 -0
  424. package/src/util/misc/projectStroke/types.ts +24 -0
  425. package/src/util/misc/radiansDegreesConversion.ts +18 -0
  426. package/src/util/misc/resolveOrigin.ts +22 -0
  427. package/src/util/misc/rotatePoint.ts +15 -0
  428. package/src/util/misc/sin.ts +26 -0
  429. package/src/util/misc/svgParsing.ts +181 -0
  430. package/src/util/misc/textStyles.ts +133 -0
  431. package/src/util/misc/toFixed.ts +8 -0
  432. package/src/util/misc/vectors.ts +82 -0
  433. package/src/util/path.ts +941 -0
  434. package/src/util/transform_matrix_removal.ts +60 -0
  435. package/src/util/types.ts +78 -0
  436. package/tsconfig.json +106 -0
  437. package/HEADER.js +0 -203
  438. package/build.js +0 -287
  439. package/dist/fabric.js +0 -31187
  440. package/dist/fabric.min.js +0 -1
  441. package/old-travis-reference.yml +0 -97
  442. package/src/brushes/circle_brush.class.js +0 -144
  443. package/src/brushes/pattern_brush.class.js +0 -61
  444. package/src/brushes/pencil_brush.class.js +0 -310
  445. package/src/brushes/spray_brush.class.js +0 -219
  446. package/src/canvas.class.js +0 -1312
  447. package/src/color.class.js +0 -636
  448. package/src/control.class.js +0 -339
  449. package/src/controls.actions.js +0 -740
  450. package/src/controls.render.js +0 -99
  451. package/src/elements_parser.js +0 -152
  452. package/src/filters/2d_backend.class.js +0 -65
  453. package/src/filters/blendcolor_filter.class.js +0 -251
  454. package/src/filters/blendimage_filter.class.js +0 -247
  455. package/src/filters/blur_filter.class.js +0 -217
  456. package/src/filters/brightness_filter.class.js +0 -113
  457. package/src/filters/colormatrix_filter.class.js +0 -159
  458. package/src/filters/composed_filter.class.js +0 -72
  459. package/src/filters/contrast_filter.class.js +0 -113
  460. package/src/filters/convolute_filter.class.js +0 -352
  461. package/src/filters/filter_boilerplate.js +0 -111
  462. package/src/filters/filter_generator.js +0 -85
  463. package/src/filters/gamma_filter.class.js +0 -136
  464. package/src/filters/grayscale_filter.class.js +0 -154
  465. package/src/filters/hue_rotation.class.js +0 -107
  466. package/src/filters/invert_filter.class.js +0 -111
  467. package/src/filters/noise_filter.class.js +0 -134
  468. package/src/filters/pixelate_filter.class.js +0 -137
  469. package/src/filters/removecolor_filter.class.js +0 -173
  470. package/src/filters/resize_filter.class.js +0 -490
  471. package/src/filters/saturate_filter.class.js +0 -119
  472. package/src/filters/vibrance_filter.class.js +0 -122
  473. package/src/filters/webgl_backend.class.js +0 -396
  474. package/src/globalFabric.js +0 -4
  475. package/src/gradient.class.js +0 -490
  476. package/src/intersection.class.js +0 -172
  477. package/src/log.js +0 -11
  478. package/src/mixins/animation.mixin.js +0 -231
  479. package/src/mixins/canvas_dataurl_exporter.mixin.js +0 -97
  480. package/src/mixins/canvas_events.mixin.js +0 -974
  481. package/src/mixins/canvas_gestures.mixin.js +0 -149
  482. package/src/mixins/canvas_grouping.mixin.js +0 -177
  483. package/src/mixins/canvas_serialization.mixin.js +0 -228
  484. package/src/mixins/collection.mixin.js +0 -170
  485. package/src/mixins/default_controls.js +0 -114
  486. package/src/mixins/itext.svg_export.js +0 -241
  487. package/src/mixins/itext_behavior.mixin.js +0 -940
  488. package/src/mixins/itext_click_behavior.mixin.js +0 -278
  489. package/src/mixins/itext_key_behavior.mixin.js +0 -694
  490. package/src/mixins/object.svg_export.js +0 -258
  491. package/src/mixins/object_geometry.mixin.js +0 -683
  492. package/src/mixins/object_interactivity.mixin.js +0 -314
  493. package/src/mixins/object_origin.mixin.js +0 -255
  494. package/src/mixins/object_stacking.mixin.js +0 -80
  495. package/src/mixins/object_straightening.mixin.js +0 -80
  496. package/src/mixins/observable.mixin.js +0 -141
  497. package/src/mixins/shared_methods.mixin.js +0 -94
  498. package/src/mixins/stateful.mixin.js +0 -107
  499. package/src/mixins/text_style.mixin.js +0 -324
  500. package/src/parser.js +0 -1090
  501. package/src/pattern.class.js +0 -189
  502. package/src/point.class.js +0 -337
  503. package/src/shadow.class.js +0 -195
  504. package/src/shapes/active_selection.class.js +0 -155
  505. package/src/shapes/circle.class.js +0 -210
  506. package/src/shapes/ellipse.class.js +0 -181
  507. package/src/shapes/group.class.js +0 -593
  508. package/src/shapes/image.class.js +0 -764
  509. package/src/shapes/itext.class.js +0 -526
  510. package/src/shapes/line.class.js +0 -324
  511. package/src/shapes/object.class.js +0 -2008
  512. package/src/shapes/path.class.js +0 -384
  513. package/src/shapes/polygon.class.js +0 -81
  514. package/src/shapes/polyline.class.js +0 -268
  515. package/src/shapes/rect.class.js +0 -187
  516. package/src/shapes/text.class.js +0 -1696
  517. package/src/shapes/textbox.class.js +0 -461
  518. package/src/shapes/triangle.class.js +0 -93
  519. package/src/static_canvas.class.js +0 -1881
  520. package/src/util/anim_ease.js +0 -398
  521. package/src/util/animate.js +0 -254
  522. package/src/util/animate_color.js +0 -74
  523. package/src/util/dom_event.js +0 -50
  524. package/src/util/dom_misc.js +0 -300
  525. package/src/util/dom_request.js +0 -54
  526. package/src/util/dom_style.js +0 -70
  527. package/src/util/lang_array.js +0 -94
  528. package/src/util/lang_class.js +0 -115
  529. package/src/util/lang_object.js +0 -75
  530. package/src/util/lang_string.js +0 -110
  531. package/src/util/misc.js +0 -1330
  532. package/src/util/named_accessors.mixin.js +0 -428
  533. package/src/util/path.js +0 -829
@@ -0,0 +1,322 @@
1
+ import { ITextEvents } from './ITextBehavior';
2
+ import { ITextClickBehavior } from './ITextClickBehavior';
3
+ import { AssertKeys, TFiller } from '../../typedefs';
4
+ type CursorBoundaries = {
5
+ left: number;
6
+ top: number;
7
+ leftOffset: number;
8
+ topOffset: number;
9
+ };
10
+ /**
11
+ * @fires changed
12
+ * @fires selection:changed
13
+ * @fires editing:entered
14
+ * @fires editing:exited
15
+ * @fires dragstart
16
+ * @fires drag drag event firing on the drag source
17
+ * @fires dragend
18
+ * @fires copy
19
+ * @fires cut
20
+ * @fires paste
21
+ *
22
+ * #### Supported key combinations
23
+ * ```
24
+ * Move cursor: left, right, up, down
25
+ * Select character: shift + left, shift + right
26
+ * Select text vertically: shift + up, shift + down
27
+ * Move cursor by word: alt + left, alt + right
28
+ * Select words: shift + alt + left, shift + alt + right
29
+ * Move cursor to line start/end: cmd + left, cmd + right or home, end
30
+ * Select till start/end of line: cmd + shift + left, cmd + shift + right or shift + home, shift + end
31
+ * Jump to start/end of text: cmd + up, cmd + down
32
+ * Select till start/end of text: cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown
33
+ * Delete character: backspace
34
+ * Delete word: alt + backspace
35
+ * Delete line: cmd + backspace
36
+ * Forward delete: delete
37
+ * Copy text: ctrl/cmd + c
38
+ * Paste text: ctrl/cmd + v
39
+ * Cut text: ctrl/cmd + x
40
+ * Select entire text: ctrl/cmd + a
41
+ * Quit editing tab or esc
42
+ * ```
43
+ *
44
+ * #### Supported mouse/touch combination
45
+ * ```
46
+ * Position cursor: click/touch
47
+ * Create selection: click/touch & drag
48
+ * Create selection: click & shift + click
49
+ * Select word: double click
50
+ * Select line: triple click
51
+ * ```
52
+ */
53
+ export declare class IText<EventSpec extends ITextEvents = ITextEvents> extends ITextClickBehavior<EventSpec> {
54
+ /**
55
+ * Index where text selection starts (or where cursor is when there is no selection)
56
+ * @type Number
57
+ * @default
58
+ */
59
+ selectionStart: number;
60
+ /**
61
+ * Index where text selection ends
62
+ * @type Number
63
+ * @default
64
+ */
65
+ selectionEnd: number;
66
+ compositionStart: number;
67
+ compositionEnd: number;
68
+ /**
69
+ * Color of text selection
70
+ * @type String
71
+ * @default
72
+ */
73
+ selectionColor: string;
74
+ /**
75
+ * Indicates whether text is in editing mode
76
+ * @type Boolean
77
+ * @default
78
+ */
79
+ isEditing: boolean;
80
+ /**
81
+ * Indicates whether a text can be edited
82
+ * @type Boolean
83
+ * @default
84
+ */
85
+ editable: boolean;
86
+ /**
87
+ * Border color of text object while it's in editing mode
88
+ * @type String
89
+ * @default
90
+ */
91
+ editingBorderColor: string;
92
+ /**
93
+ * Width of cursor (in px)
94
+ * @type Number
95
+ * @default
96
+ */
97
+ cursorWidth: number;
98
+ /**
99
+ * Color of text cursor color in editing mode.
100
+ * if not set (default) will take color from the text.
101
+ * if set to a color value that fabric can understand, it will
102
+ * be used instead of the color of the text at the current position.
103
+ * @type String
104
+ * @default
105
+ */
106
+ cursorColor: string;
107
+ /**
108
+ * Delay between cursor blink (in ms)
109
+ * @type Number
110
+ * @default
111
+ */
112
+ cursorDelay: number;
113
+ /**
114
+ * Duration of cursor fade in (in ms)
115
+ * @type Number
116
+ * @default
117
+ */
118
+ cursorDuration: number;
119
+ compositionColor: string;
120
+ /**
121
+ * Indicates whether internal text char widths can be cached
122
+ * @type Boolean
123
+ * @default
124
+ */
125
+ caching: boolean;
126
+ /**
127
+
128
+ * Constructor
129
+ * @param {String} text Text string
130
+ * @param {Object} [options] Options object
131
+ */
132
+ constructor(text: string, options: object);
133
+ /**
134
+ * While editing handle differently
135
+ * @private
136
+ * @param {string} key
137
+ * @param {*} value
138
+ */
139
+ _set(key: string, value: any): this;
140
+ /**
141
+ * Sets selection start (left boundary of a selection)
142
+ * @param {Number} index Index to set selection start to
143
+ */
144
+ setSelectionStart(index: number): void;
145
+ /**
146
+ * Sets selection end (right boundary of a selection)
147
+ * @param {Number} index Index to set selection end to
148
+ */
149
+ setSelectionEnd(index: number): void;
150
+ /**
151
+ * @private
152
+ * @param {String} property 'selectionStart' or 'selectionEnd'
153
+ * @param {Number} index new position of property
154
+ */
155
+ protected _updateAndFire(property: 'selectionStart' | 'selectionEnd', index: number): void;
156
+ /**
157
+ * Fires the even of selection changed
158
+ * @private
159
+ */
160
+ _fireSelectionChanged(): void;
161
+ /**
162
+ * Initialize text dimensions. Render all text on given context
163
+ * or on a offscreen canvas to get the text width with measureText.
164
+ * Updates this.width and this.height with the proper values.
165
+ * Does not return dimensions.
166
+ * @private
167
+ */
168
+ initDimensions(): void;
169
+ /**
170
+ * Gets style of a current selection/cursor (at the start position)
171
+ * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used.
172
+ * @param {Number} startIndex Start index to get styles at
173
+ * @param {Number} endIndex End index to get styles at, if not specified selectionEnd or startIndex + 1
174
+ * @param {Boolean} [complete] get full style or not
175
+ * @return {Array} styles an array with one, zero or more Style objects
176
+ */
177
+ getSelectionStyles(startIndex?: number, endIndex?: number, complete?: boolean): import("../Text/StyledText").TextStyleDeclaration[];
178
+ /**
179
+ * Sets style of a current selection, if no selection exist, do not set anything.
180
+ * @param {Object} [styles] Styles object
181
+ * @param {Number} [startIndex] Start index to get styles at
182
+ * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1
183
+ */
184
+ setSelectionStyles(styles: object, startIndex?: number, endIndex?: number): void;
185
+ /**
186
+ * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)
187
+ * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.
188
+ * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.
189
+ */
190
+ get2DCursorLocation(selectionStart?: number, skipWrapping?: boolean): {
191
+ lineIndex: number;
192
+ charIndex: number;
193
+ };
194
+ /**
195
+ * @private
196
+ * @param {CanvasRenderingContext2D} ctx Context to render on
197
+ */
198
+ render(ctx: CanvasRenderingContext2D): void;
199
+ /**
200
+ * @override block cursor/selection logic while rendering the exported canvas
201
+ * @todo this workaround should be replaced with a more robust solution
202
+ */
203
+ toCanvasElement(options?: any): HTMLCanvasElement;
204
+ /**
205
+ * Renders cursor or selection (depending on what exists)
206
+ * it does on the contextTop. If contextTop is not available, do nothing.
207
+ */
208
+ renderCursorOrSelection(): void;
209
+ /**
210
+ * Returns cursor boundaries (left, top, leftOffset, topOffset)
211
+ * left/top are left/top of entire text box
212
+ * leftOffset/topOffset are offset from that left/top point of a text box
213
+ * @private
214
+ * @param {number} [index] index from start
215
+ * @param {boolean} [skipCaching]
216
+ */
217
+ _getCursorBoundaries(index?: number, skipCaching?: boolean): CursorBoundaries;
218
+ /**
219
+ * Caches and returns cursor left/top offset relative to instance's center point
220
+ * @private
221
+ * @param {number} index index from start
222
+ * @param {boolean} [skipCaching]
223
+ */
224
+ _getCursorBoundariesOffsets(index: number, skipCaching?: boolean): {
225
+ left: number;
226
+ top: number;
227
+ };
228
+ /**
229
+ * Calculates cursor left/top offset relative to instance's center point
230
+ * @private
231
+ * @param {number} index index from start
232
+ */
233
+ __getCursorBoundariesOffsets(index: number): {
234
+ top: number;
235
+ left: number;
236
+ };
237
+ /**
238
+ * Renders cursor on context Top, outside the animation cycle, on request
239
+ * Used for the drag/drop effect.
240
+ * If contextTop is not available, do nothing.
241
+ */
242
+ renderCursorAt(selectionStart: number): void;
243
+ /**
244
+ * Renders cursor
245
+ * @param {Object} boundaries
246
+ * @param {CanvasRenderingContext2D} ctx transformed context to draw on
247
+ */
248
+ renderCursor(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries): void;
249
+ _renderCursor(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries, selectionStart: number): void;
250
+ /**
251
+ * Renders text selection
252
+ * @param {Object} boundaries Object with left/top/leftOffset/topOffset
253
+ * @param {CanvasRenderingContext2D} ctx transformed context to draw on
254
+ */
255
+ renderSelection(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries): void;
256
+ /**
257
+ * Renders drag start text selection
258
+ */
259
+ renderDragSourceEffect(this: AssertKeys<this, 'canvas'>): void;
260
+ renderDropTargetEffect(e: DragEvent): void;
261
+ /**
262
+ * Renders text selection
263
+ * @private
264
+ * @param {{ selectionStart: number, selectionEnd: number }} selection
265
+ * @param {Object} boundaries Object with left/top/leftOffset/topOffset
266
+ * @param {CanvasRenderingContext2D} ctx transformed context to draw on
267
+ */
268
+ _renderSelection(ctx: CanvasRenderingContext2D, selection: {
269
+ selectionStart: number;
270
+ selectionEnd: number;
271
+ }, boundaries: CursorBoundaries): void;
272
+ /**
273
+ * High level function to know the height of the cursor.
274
+ * the currentChar is the one that precedes the cursor
275
+ * Returns fontSize of char at the current cursor
276
+ * Unused from the library, is for the end user
277
+ * @return {Number} Character font size
278
+ */
279
+ getCurrentCharFontSize(): number;
280
+ /**
281
+ * High level function to know the color of the cursor.
282
+ * the currentChar is the one that precedes the cursor
283
+ * Returns color (fill) of char at the current cursor
284
+ * if the text object has a pattern or gradient for filler, it will return that.
285
+ * Unused by the library, is for the end user
286
+ * @return {String | TFiller} Character color (fill)
287
+ */
288
+ getCurrentCharColor(): string | TFiller;
289
+ /**
290
+ * Returns the cursor position for the getCurrent.. functions
291
+ * @private
292
+ */
293
+ _getCurrentCharIndex(): {
294
+ l: number;
295
+ c: number;
296
+ };
297
+ dispose(): void;
298
+ }
299
+ export declare const iTextDefaultValues: {
300
+ type: string;
301
+ selectionStart: number;
302
+ selectionEnd: number;
303
+ selectionColor: string;
304
+ isEditing: boolean;
305
+ editable: boolean;
306
+ editingBorderColor: string;
307
+ cursorWidth: number;
308
+ cursorColor: string;
309
+ cursorDelay: number;
310
+ cursorDuration: number;
311
+ caching: boolean;
312
+ hiddenTextareaContainer: null;
313
+ _selectionDirection: null;
314
+ _reSpace: RegExp;
315
+ inCompositionMode: boolean;
316
+ keysMap: import("./constants").TKeyMapIText;
317
+ keysMapRtl: import("./constants").TKeyMapIText;
318
+ ctrlKeysMapDown: import("./constants").TKeyMapIText;
319
+ ctrlKeysMapUp: import("./constants").TKeyMapIText;
320
+ };
321
+ export {};
322
+ //# sourceMappingURL=IText.d.ts.map
@@ -0,0 +1,285 @@
1
+ import { ObjectEvents, TPointerEvent, TPointerEventInfo } from '../../EventTypeDefs';
2
+ import type { FabricObject } from '../Object/Object';
3
+ import { Text } from '../Text/Text';
4
+ import { TOnAnimationChangeCallback } from '../../util/animation/types';
5
+ import type { ValueAnimation } from '../../util/animation/ValueAnimation';
6
+ import { TextStyleDeclaration } from '../Text/StyledText';
7
+ export type ITextEvents = ObjectEvents & {
8
+ 'selection:changed': never;
9
+ changed: never | {
10
+ index: number;
11
+ action: string;
12
+ };
13
+ tripleclick: TPointerEventInfo;
14
+ 'editing:entered': never | {
15
+ e: TPointerEvent;
16
+ };
17
+ 'editing:exited': never;
18
+ };
19
+ export declare abstract class ITextBehavior<EventSpec extends ITextEvents = ITextEvents> extends Text<EventSpec> {
20
+ abstract isEditing: boolean;
21
+ abstract cursorDelay: number;
22
+ abstract selectionStart: number;
23
+ abstract selectionEnd: number;
24
+ abstract cursorDuration: number;
25
+ abstract editable: boolean;
26
+ abstract editingBorderColor: string;
27
+ abstract compositionStart: number;
28
+ abstract compositionEnd: number;
29
+ abstract hiddenTextarea: HTMLTextAreaElement | null;
30
+ /**
31
+ * Helps determining when the text is in composition, so that the cursor
32
+ * rendering is altered.
33
+ */
34
+ protected inCompositionMode: boolean;
35
+ protected _reSpace: RegExp;
36
+ private _currentTickState?;
37
+ private _currentTickCompleteState?;
38
+ protected _currentCursorOpacity: number;
39
+ private _textBeforeEdit;
40
+ protected __selectionStartOnMouseDown: number;
41
+ protected selected: boolean;
42
+ protected cursorOffsetCache: {
43
+ left?: number;
44
+ top?: number;
45
+ };
46
+ protected _savedProps?: {
47
+ hasControls: boolean;
48
+ borderColor: string;
49
+ lockMovementX: boolean;
50
+ lockMovementY: boolean;
51
+ selectable: boolean;
52
+ hoverCursor: CSSStyleDeclaration['cursor'] | null;
53
+ defaultCursor?: CSSStyleDeclaration['cursor'];
54
+ moveCursor?: CSSStyleDeclaration['cursor'];
55
+ };
56
+ protected _selectionDirection: 'left' | 'right' | null;
57
+ abstract initHiddenTextarea(): void;
58
+ abstract _fireSelectionChanged(): void;
59
+ abstract renderCursorOrSelection(): void;
60
+ abstract getSelectionStartFromPointer(e: TPointerEvent): number;
61
+ abstract _getCursorBoundaries(index: number, skipCaching?: boolean): {
62
+ left: number;
63
+ top: number;
64
+ leftOffset: number;
65
+ topOffset: number;
66
+ };
67
+ /**
68
+ * Initializes all the interactive behavior of IText
69
+ */
70
+ initBehavior(): void;
71
+ onDeselect(options?: {
72
+ e?: TPointerEvent;
73
+ object?: FabricObject;
74
+ }): boolean;
75
+ /**
76
+ * @private
77
+ */
78
+ _animateCursor({ toValue, duration, delay, onComplete, }: {
79
+ toValue: number;
80
+ duration: number;
81
+ delay?: number;
82
+ onComplete?: TOnAnimationChangeCallback<number, void>;
83
+ }): ValueAnimation;
84
+ private _tick;
85
+ private _onTickComplete;
86
+ /**
87
+ * Initializes delayed cursor
88
+ */
89
+ initDelayedCursor(restart?: boolean): void;
90
+ /**
91
+ * Aborts cursor animation, clears all timeouts and clear textarea context if necessary
92
+ */
93
+ abortCursorAnimation(): void;
94
+ restartCursorIfNeeded(): void;
95
+ /**
96
+ * Selects entire text
97
+ */
98
+ selectAll(): this;
99
+ /**
100
+ * Returns selected text
101
+ * @return {String}
102
+ */
103
+ getSelectedText(): string;
104
+ /**
105
+ * Find new selection index representing start of current word according to current selection index
106
+ * @param {Number} startFrom Current selection index
107
+ * @return {Number} New selection index
108
+ */
109
+ findWordBoundaryLeft(startFrom: number): number;
110
+ /**
111
+ * Find new selection index representing end of current word according to current selection index
112
+ * @param {Number} startFrom Current selection index
113
+ * @return {Number} New selection index
114
+ */
115
+ findWordBoundaryRight(startFrom: number): number;
116
+ /**
117
+ * Find new selection index representing start of current line according to current selection index
118
+ * @param {Number} startFrom Current selection index
119
+ * @return {Number} New selection index
120
+ */
121
+ findLineBoundaryLeft(startFrom: number): number;
122
+ /**
123
+ * Find new selection index representing end of current line according to current selection index
124
+ * @param {Number} startFrom Current selection index
125
+ * @return {Number} New selection index
126
+ */
127
+ findLineBoundaryRight(startFrom: number): number;
128
+ /**
129
+ * Finds index corresponding to beginning or end of a word
130
+ * @param {Number} selectionStart Index of a character
131
+ * @param {Number} direction 1 or -1
132
+ * @return {Number} Index of the beginning or end of a word
133
+ */
134
+ searchWordBoundary(selectionStart: number, direction: number): number;
135
+ /**
136
+ * Selects a word based on the index
137
+ * @param {Number} selectionStart Index of a character
138
+ */
139
+ selectWord(selectionStart: number): void;
140
+ /**
141
+ * Selects a line based on the index
142
+ * @param {Number} selectionStart Index of a character
143
+ */
144
+ selectLine(selectionStart: number): this;
145
+ /**
146
+ * Enters editing state
147
+ */
148
+ enterEditing(e: TPointerEvent): void;
149
+ /**
150
+ * called by {@link canvas#textEditingManager}
151
+ */
152
+ updateSelectionOnMouseMove(e: TPointerEvent): void;
153
+ /**
154
+ * @private
155
+ */
156
+ _setEditingProps(): void;
157
+ /**
158
+ * convert from textarea to grapheme indexes
159
+ */
160
+ fromStringToGraphemeSelection(start: number, end: number, text: string): {
161
+ selectionStart: number;
162
+ selectionEnd: number;
163
+ };
164
+ /**
165
+ * convert from fabric to textarea values
166
+ */
167
+ fromGraphemeToStringSelection(start: number, end: number, graphemes: string[]): {
168
+ selectionStart: number;
169
+ selectionEnd: number;
170
+ };
171
+ /**
172
+ * @private
173
+ */
174
+ _updateTextarea(): void;
175
+ /**
176
+ * @private
177
+ */
178
+ updateFromTextArea(): void;
179
+ /**
180
+ * @private
181
+ */
182
+ updateTextareaPosition(): void;
183
+ /**
184
+ * @private
185
+ * @return {Object} style contains style for hiddenTextarea
186
+ */
187
+ _calcTextareaPosition(): {
188
+ left: string;
189
+ top: string;
190
+ fontSize?: undefined;
191
+ charHeight?: undefined;
192
+ } | {
193
+ left: string;
194
+ top: string;
195
+ fontSize: string;
196
+ charHeight: number;
197
+ };
198
+ /**
199
+ * @private
200
+ */
201
+ _saveEditingProps(): void;
202
+ /**
203
+ * @private
204
+ */
205
+ _restoreEditingProps(): void;
206
+ /**
207
+ * runs the actual logic that exits from editing state, see {@link exitEditing}
208
+ */
209
+ protected _exitEditing(): void;
210
+ /**
211
+ * Exits from editing state and fires relevant events
212
+ */
213
+ exitEditing(): this;
214
+ /**
215
+ * @private
216
+ */
217
+ _removeExtraneousStyles(): void;
218
+ /**
219
+ * remove and reflow a style block from start to end.
220
+ * @param {Number} start linear start position for removal (included in removal)
221
+ * @param {Number} end linear end position for removal ( excluded from removal )
222
+ */
223
+ removeStyleFromTo(start: number, end: number): void;
224
+ /**
225
+ * Shifts line styles up or down
226
+ * @param {Number} lineIndex Index of a line
227
+ * @param {Number} offset Can any number?
228
+ */
229
+ shiftLineStyles(lineIndex: number, offset: number): void;
230
+ /**
231
+ * Handle insertion of more consecutive style lines for when one or more
232
+ * newlines gets added to the text. Since current style needs to be shifted
233
+ * first we shift the current style of the number lines needed, then we add
234
+ * new lines from the last to the first.
235
+ * @param {Number} lineIndex Index of a line
236
+ * @param {Number} charIndex Index of a char
237
+ * @param {Number} qty number of lines to add
238
+ * @param {Array} copiedStyle Array of objects styles
239
+ */
240
+ insertNewlineStyleObject(lineIndex: number, charIndex: number, qty: number, copiedStyle?: {
241
+ [index: number]: TextStyleDeclaration;
242
+ }): void;
243
+ /**
244
+ * Inserts style object for a given line/char index
245
+ * @param {Number} lineIndex Index of a line
246
+ * @param {Number} charIndex Index of a char
247
+ * @param {Number} quantity number Style object to insert, if given
248
+ * @param {Array} copiedStyle array of style objects
249
+ */
250
+ insertCharStyleObject(lineIndex: number, charIndex: number, quantity: number, copiedStyle?: TextStyleDeclaration[]): void;
251
+ /**
252
+ * Inserts style object(s)
253
+ * @param {Array} insertedText Characters at the location where style is inserted
254
+ * @param {Number} start cursor index for inserting style
255
+ * @param {Array} [copiedStyle] array of style objects to insert.
256
+ */
257
+ insertNewStyleBlock(insertedText: string[], start: number, copiedStyle?: TextStyleDeclaration[]): void;
258
+ /**
259
+ * Removes characters from start/end
260
+ * start/end ar per grapheme position in _text array.
261
+ *
262
+ * @param {Number} start
263
+ * @param {Number} end default to start + 1
264
+ */
265
+ removeChars(start: number, end: number): void;
266
+ /**
267
+ * insert characters at start position, before start position.
268
+ * start equal 1 it means the text get inserted between actual grapheme 0 and 1
269
+ * if style array is provided, it must be as the same length of text in graphemes
270
+ * if end is provided and is bigger than start, old text is replaced.
271
+ * start/end ar per grapheme position in _text array.
272
+ *
273
+ * @param {String} text text to insert
274
+ * @param {Array} style array of style objects
275
+ * @param {Number} start
276
+ * @param {Number} end default to start + 1
277
+ */
278
+ insertChars(text: string, style: TextStyleDeclaration[] | undefined, start: number, end?: number): void;
279
+ /**
280
+ * Set the selectionStart and selectionEnd according to the new position of cursor
281
+ * mimic the key - mouse navigation when shift is pressed.
282
+ */
283
+ setSelectionStartEndWithShift(start: number, end: number, newSelection: number): void;
284
+ }
285
+ //# sourceMappingURL=ITextBehavior.d.ts.map
@@ -0,0 +1,81 @@
1
+ import type { TPointerEvent, TPointerEventInfo } from '../../EventTypeDefs';
2
+ import { IPoint, Point } from '../../Point';
3
+ import type { DragMethods } from '../Object/InteractiveObject';
4
+ import { DraggableTextDelegate } from './DraggableTextDelegate';
5
+ import { ITextEvents } from './ITextBehavior';
6
+ import { ITextKeyBehavior } from './ITextKeyBehavior';
7
+ export declare abstract class ITextClickBehavior<EventSpec extends ITextEvents = ITextEvents> extends ITextKeyBehavior<EventSpec> implements DragMethods {
8
+ private __lastSelected;
9
+ private __lastClickTime;
10
+ private __lastLastClickTime;
11
+ private __lastPointer;
12
+ private __newClickTime;
13
+ protected draggableTextDelegate: DraggableTextDelegate;
14
+ initBehavior(): void;
15
+ shouldStartDragging(): boolean;
16
+ /**
17
+ * @public override this method to control whether instance should/shouldn't become a drag source, @see also {@link DraggableTextDelegate#isActive}
18
+ * @returns {boolean} should handle event
19
+ */
20
+ onDragStart(e: DragEvent): boolean;
21
+ /**
22
+ * @public override this method to control whether instance should/shouldn't become a drop target
23
+ */
24
+ canDrop(e: DragEvent): boolean;
25
+ /**
26
+ * Default event handler to simulate triple click
27
+ * @private
28
+ */
29
+ onMouseDown(options: TPointerEventInfo): void;
30
+ isTripleClick(newPointer: IPoint): boolean;
31
+ /**
32
+ * Default handler for double click, select a word
33
+ */
34
+ doubleClickHandler(options: TPointerEventInfo): void;
35
+ /**
36
+ * Default handler for triple click, select a line
37
+ */
38
+ tripleClickHandler(options: TPointerEventInfo): void;
39
+ /**
40
+ * Default event handler for the basic functionalities needed on _mouseDown
41
+ * can be overridden to do something different.
42
+ * Scope of this implementation is: find the click position, set selectionStart
43
+ * find selectionEnd, initialize the drawing of either cursor or selection area
44
+ * initializing a mousedDown on a text area will cancel fabricjs knowledge of
45
+ * current compositionMode. It will be set to false.
46
+ */
47
+ _mouseDownHandler({ e }: TPointerEventInfo): void;
48
+ /**
49
+ * Default event handler for the basic functionalities needed on mousedown:before
50
+ * can be overridden to do something different.
51
+ * Scope of this implementation is: verify the object is already selected when mousing down
52
+ */
53
+ _mouseDownHandlerBefore({ e }: TPointerEventInfo): void;
54
+ /**
55
+ * standard handler for mouse up, overridable
56
+ * @private
57
+ */
58
+ mouseUpHandler({ e, transform, button }: TPointerEventInfo): void;
59
+ /**
60
+ * Changes cursor location in a text depending on passed pointer (x/y) object
61
+ * @param {TPointerEvent} e Event object
62
+ */
63
+ setCursorByClick(e: TPointerEvent): void;
64
+ /**
65
+ * Returns coordinates of a pointer relative to object's top left corner in object's plane
66
+ * @param {Point} [pointer] Pointer to operate upon
67
+ * @return {Point} Coordinates of a pointer (x, y)
68
+ */
69
+ getLocalPointer(pointer: Point): Point;
70
+ /**
71
+ * Returns index of a character corresponding to where an object was clicked
72
+ * @param {TPointerEvent} e Event object
73
+ * @return {Number} Index of a character
74
+ */
75
+ getSelectionStartFromPointer(e: TPointerEvent): number;
76
+ /**
77
+ * @private
78
+ */
79
+ _getNewSelectionStartFromOffset(mouseOffset: IPoint, prevWidth: number, width: number, index: number, jlen: number): number;
80
+ }
81
+ //# sourceMappingURL=ITextClickBehavior.d.ts.map