fabric 5.3.0 → 6.0.0-beta3

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