@nasser-sw/fabric 7.0.1-beta2 → 7.0.1-beta4

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 (2524) hide show
  1. package/.babelrc +0 -0
  2. package/.babelrcAlt +0 -0
  3. package/.browserslistrc +0 -0
  4. package/.editorconfig +0 -0
  5. package/.gitattributes +0 -0
  6. package/.gitpod.yml +0 -0
  7. package/.prettierignore +0 -0
  8. package/.prettierrc +0 -0
  9. package/0 +0 -0
  10. package/CHANGELOG.md +0 -0
  11. package/CODE_OF_CONDUCT.md +0 -0
  12. package/CONTRIBUTING.md +0 -0
  13. package/LICENSE +0 -0
  14. package/OVERLAY_EDITOR_MIGRATION.md +0 -0
  15. package/README.md +0 -0
  16. package/SECURITY.md +0 -0
  17. package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs +0 -0
  18. package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs.map +0 -0
  19. package/dist/_virtual/_rollupPluginBabelHelpers.mjs +0 -0
  20. package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -0
  21. package/dist/extensions/aligning_guidelines/constant.d.ts +0 -0
  22. package/dist/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  23. package/dist/extensions/aligning_guidelines/index.d.ts +0 -0
  24. package/dist/extensions/aligning_guidelines/index.d.ts.map +0 -0
  25. package/dist/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  26. package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  27. package/dist/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  28. package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  29. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  30. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  31. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  32. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  33. package/dist/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  34. package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  35. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  36. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  37. package/dist/extensions/data_updaters/gradient/index.d.ts +0 -0
  38. package/dist/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  39. package/dist/extensions/data_updaters/origins/index.d.ts +0 -0
  40. package/dist/extensions/data_updaters/origins/index.d.ts.map +0 -0
  41. package/dist/extensions/index.d.ts +0 -0
  42. package/dist/extensions/index.d.ts.map +0 -0
  43. package/dist/fabric.d.ts +0 -0
  44. package/dist/fabric.d.ts.map +0 -0
  45. package/dist/fabric.min.mjs +0 -0
  46. package/dist/fabric.min.mjs.map +0 -0
  47. package/dist/fabric.mjs +0 -0
  48. package/dist/fabric.mjs.map +0 -0
  49. package/dist/index.d.ts +0 -0
  50. package/dist/index.d.ts.map +0 -0
  51. package/dist/index.js +1585 -1151
  52. package/dist/index.js.map +1 -1
  53. package/dist/index.min.js +1 -1
  54. package/dist/index.min.js.map +1 -1
  55. package/dist/index.min.mjs +1 -1
  56. package/dist/index.min.mjs.map +1 -1
  57. package/dist/index.mjs +1585 -1151
  58. package/dist/index.mjs.map +1 -1
  59. package/dist/index.node.cjs +1585 -1151
  60. package/dist/index.node.cjs.map +1 -1
  61. package/dist/index.node.d.ts +0 -0
  62. package/dist/index.node.d.ts.map +0 -0
  63. package/dist/index.node.mjs +1585 -1151
  64. package/dist/index.node.mjs.map +1 -1
  65. package/dist/package.json.min.mjs +1 -1
  66. package/dist/package.json.min.mjs.map +0 -0
  67. package/dist/package.json.mjs +1 -1
  68. package/dist/package.json.mjs.map +0 -0
  69. package/dist/src/ClassRegistry.d.ts +0 -0
  70. package/dist/src/ClassRegistry.d.ts.map +0 -0
  71. package/dist/src/ClassRegistry.min.mjs +0 -0
  72. package/dist/src/ClassRegistry.min.mjs.map +0 -0
  73. package/dist/src/ClassRegistry.mjs +0 -0
  74. package/dist/src/ClassRegistry.mjs.map +0 -0
  75. package/dist/src/Collection.d.ts +0 -0
  76. package/dist/src/Collection.d.ts.map +0 -0
  77. package/dist/src/Collection.min.mjs +0 -0
  78. package/dist/src/Collection.min.mjs.map +0 -0
  79. package/dist/src/Collection.mjs +0 -0
  80. package/dist/src/Collection.mjs.map +0 -0
  81. package/dist/src/CommonMethods.d.ts +0 -0
  82. package/dist/src/CommonMethods.d.ts.map +0 -0
  83. package/dist/src/CommonMethods.min.mjs +0 -0
  84. package/dist/src/CommonMethods.min.mjs.map +0 -0
  85. package/dist/src/CommonMethods.mjs +0 -0
  86. package/dist/src/CommonMethods.mjs.map +0 -0
  87. package/dist/src/EventTypeDefs.d.ts +0 -0
  88. package/dist/src/EventTypeDefs.d.ts.map +0 -0
  89. package/dist/src/Intersection.d.ts +0 -0
  90. package/dist/src/Intersection.d.ts.map +0 -0
  91. package/dist/src/Intersection.min.mjs +0 -0
  92. package/dist/src/Intersection.min.mjs.map +0 -0
  93. package/dist/src/Intersection.mjs +0 -0
  94. package/dist/src/Intersection.mjs.map +0 -0
  95. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  96. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  97. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs +0 -0
  98. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +0 -0
  99. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs +0 -0
  100. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +0 -0
  101. package/dist/src/LayoutManager/LayoutManager.d.ts +0 -0
  102. package/dist/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  103. package/dist/src/LayoutManager/LayoutManager.min.mjs +0 -0
  104. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +0 -0
  105. package/dist/src/LayoutManager/LayoutManager.mjs +0 -0
  106. package/dist/src/LayoutManager/LayoutManager.mjs.map +0 -0
  107. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  108. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  109. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +0 -0
  110. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +0 -0
  111. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +0 -0
  112. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +0 -0
  113. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  114. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  115. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +0 -0
  116. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs.map +0 -0
  117. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +0 -0
  118. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs.map +0 -0
  119. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  120. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  121. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +0 -0
  122. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +0 -0
  123. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +0 -0
  124. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +0 -0
  125. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  126. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  127. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +0 -0
  128. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +0 -0
  129. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +0 -0
  130. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +0 -0
  131. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  132. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  133. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs +0 -0
  134. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +0 -0
  135. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs +0 -0
  136. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +0 -0
  137. package/dist/src/LayoutManager/constants.d.ts +0 -0
  138. package/dist/src/LayoutManager/constants.d.ts.map +0 -0
  139. package/dist/src/LayoutManager/constants.min.mjs +0 -0
  140. package/dist/src/LayoutManager/constants.min.mjs.map +0 -0
  141. package/dist/src/LayoutManager/constants.mjs +0 -0
  142. package/dist/src/LayoutManager/constants.mjs.map +0 -0
  143. package/dist/src/LayoutManager/index.d.ts +0 -0
  144. package/dist/src/LayoutManager/index.d.ts.map +0 -0
  145. package/dist/src/LayoutManager/types.d.ts +0 -0
  146. package/dist/src/LayoutManager/types.d.ts.map +0 -0
  147. package/dist/src/Observable.d.ts +0 -0
  148. package/dist/src/Observable.d.ts.map +0 -0
  149. package/dist/src/Observable.min.mjs +0 -0
  150. package/dist/src/Observable.min.mjs.map +0 -0
  151. package/dist/src/Observable.mjs +0 -0
  152. package/dist/src/Observable.mjs.map +0 -0
  153. package/dist/src/Pattern/Pattern.d.ts +0 -0
  154. package/dist/src/Pattern/Pattern.d.ts.map +0 -0
  155. package/dist/src/Pattern/Pattern.min.mjs +0 -0
  156. package/dist/src/Pattern/Pattern.min.mjs.map +0 -0
  157. package/dist/src/Pattern/Pattern.mjs +0 -0
  158. package/dist/src/Pattern/Pattern.mjs.map +0 -0
  159. package/dist/src/Pattern/index.d.ts +0 -0
  160. package/dist/src/Pattern/index.d.ts.map +0 -0
  161. package/dist/src/Pattern/types.d.ts +0 -0
  162. package/dist/src/Pattern/types.d.ts.map +0 -0
  163. package/dist/src/Point.d.ts +0 -0
  164. package/dist/src/Point.d.ts.map +0 -0
  165. package/dist/src/Point.min.mjs +0 -0
  166. package/dist/src/Point.min.mjs.map +0 -0
  167. package/dist/src/Point.mjs +0 -0
  168. package/dist/src/Point.mjs.map +0 -0
  169. package/dist/src/Shadow.d.ts +0 -0
  170. package/dist/src/Shadow.d.ts.map +0 -0
  171. package/dist/src/Shadow.min.mjs +0 -0
  172. package/dist/src/Shadow.min.mjs.map +0 -0
  173. package/dist/src/Shadow.mjs +0 -0
  174. package/dist/src/Shadow.mjs.map +0 -0
  175. package/dist/src/brushes/BaseBrush.d.ts +0 -0
  176. package/dist/src/brushes/BaseBrush.d.ts.map +0 -0
  177. package/dist/src/brushes/BaseBrush.min.mjs +0 -0
  178. package/dist/src/brushes/BaseBrush.min.mjs.map +0 -0
  179. package/dist/src/brushes/BaseBrush.mjs +0 -0
  180. package/dist/src/brushes/BaseBrush.mjs.map +0 -0
  181. package/dist/src/brushes/CircleBrush.d.ts +0 -0
  182. package/dist/src/brushes/CircleBrush.d.ts.map +0 -0
  183. package/dist/src/brushes/CircleBrush.min.mjs +0 -0
  184. package/dist/src/brushes/CircleBrush.min.mjs.map +0 -0
  185. package/dist/src/brushes/CircleBrush.mjs +0 -0
  186. package/dist/src/brushes/CircleBrush.mjs.map +0 -0
  187. package/dist/src/brushes/PatternBrush.d.ts +0 -0
  188. package/dist/src/brushes/PatternBrush.d.ts.map +0 -0
  189. package/dist/src/brushes/PatternBrush.min.mjs +0 -0
  190. package/dist/src/brushes/PatternBrush.min.mjs.map +0 -0
  191. package/dist/src/brushes/PatternBrush.mjs +0 -0
  192. package/dist/src/brushes/PatternBrush.mjs.map +0 -0
  193. package/dist/src/brushes/PencilBrush.d.ts +0 -0
  194. package/dist/src/brushes/PencilBrush.d.ts.map +0 -0
  195. package/dist/src/brushes/PencilBrush.min.mjs +0 -0
  196. package/dist/src/brushes/PencilBrush.min.mjs.map +0 -0
  197. package/dist/src/brushes/PencilBrush.mjs +0 -0
  198. package/dist/src/brushes/PencilBrush.mjs.map +0 -0
  199. package/dist/src/brushes/SprayBrush.d.ts +0 -0
  200. package/dist/src/brushes/SprayBrush.d.ts.map +0 -0
  201. package/dist/src/brushes/SprayBrush.min.mjs +0 -0
  202. package/dist/src/brushes/SprayBrush.min.mjs.map +0 -0
  203. package/dist/src/brushes/SprayBrush.mjs +0 -0
  204. package/dist/src/brushes/SprayBrush.mjs.map +0 -0
  205. package/dist/src/brushes/typedefs.d.ts +0 -0
  206. package/dist/src/brushes/typedefs.d.ts.map +0 -0
  207. package/dist/src/cache.d.ts +0 -0
  208. package/dist/src/cache.d.ts.map +0 -0
  209. package/dist/src/cache.min.mjs +0 -0
  210. package/dist/src/cache.min.mjs.map +0 -0
  211. package/dist/src/cache.mjs +0 -0
  212. package/dist/src/cache.mjs.map +0 -0
  213. package/dist/src/canvas/Canvas.d.ts +0 -0
  214. package/dist/src/canvas/Canvas.d.ts.map +0 -0
  215. package/dist/src/canvas/Canvas.min.mjs +0 -0
  216. package/dist/src/canvas/Canvas.min.mjs.map +0 -0
  217. package/dist/src/canvas/Canvas.mjs +0 -0
  218. package/dist/src/canvas/Canvas.mjs.map +0 -0
  219. package/dist/src/canvas/CanvasOptions.d.ts +0 -0
  220. package/dist/src/canvas/CanvasOptions.d.ts.map +0 -0
  221. package/dist/src/canvas/CanvasOptions.min.mjs +0 -0
  222. package/dist/src/canvas/CanvasOptions.min.mjs.map +0 -0
  223. package/dist/src/canvas/CanvasOptions.mjs +0 -0
  224. package/dist/src/canvas/CanvasOptions.mjs.map +0 -0
  225. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  226. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  227. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +0 -0
  228. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +0 -0
  229. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +0 -0
  230. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +0 -0
  231. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  232. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  233. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +0 -0
  234. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +0 -0
  235. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +0 -0
  236. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +0 -0
  237. package/dist/src/canvas/DOMManagers/util.d.ts +0 -0
  238. package/dist/src/canvas/DOMManagers/util.d.ts.map +0 -0
  239. package/dist/src/canvas/DOMManagers/util.min.mjs +0 -0
  240. package/dist/src/canvas/DOMManagers/util.min.mjs.map +0 -0
  241. package/dist/src/canvas/DOMManagers/util.mjs +0 -0
  242. package/dist/src/canvas/DOMManagers/util.mjs.map +0 -0
  243. package/dist/src/canvas/SelectableCanvas.d.ts +0 -0
  244. package/dist/src/canvas/SelectableCanvas.d.ts.map +0 -0
  245. package/dist/src/canvas/SelectableCanvas.min.mjs +0 -0
  246. package/dist/src/canvas/SelectableCanvas.min.mjs.map +0 -0
  247. package/dist/src/canvas/SelectableCanvas.mjs +0 -0
  248. package/dist/src/canvas/SelectableCanvas.mjs.map +0 -0
  249. package/dist/src/canvas/StaticCanvas.d.ts +0 -0
  250. package/dist/src/canvas/StaticCanvas.d.ts.map +0 -0
  251. package/dist/src/canvas/StaticCanvas.min.mjs +0 -0
  252. package/dist/src/canvas/StaticCanvas.min.mjs.map +0 -0
  253. package/dist/src/canvas/StaticCanvas.mjs +0 -0
  254. package/dist/src/canvas/StaticCanvas.mjs.map +0 -0
  255. package/dist/src/canvas/StaticCanvasOptions.d.ts +0 -0
  256. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  257. package/dist/src/canvas/StaticCanvasOptions.min.mjs +0 -0
  258. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +0 -0
  259. package/dist/src/canvas/StaticCanvasOptions.mjs +0 -0
  260. package/dist/src/canvas/StaticCanvasOptions.mjs.map +0 -0
  261. package/dist/src/canvas/TextEditingManager.d.ts +0 -0
  262. package/dist/src/canvas/TextEditingManager.d.ts.map +0 -0
  263. package/dist/src/canvas/TextEditingManager.min.mjs +0 -0
  264. package/dist/src/canvas/TextEditingManager.min.mjs.map +0 -0
  265. package/dist/src/canvas/TextEditingManager.mjs +0 -0
  266. package/dist/src/canvas/TextEditingManager.mjs.map +0 -0
  267. package/dist/src/canvas/canvas_gestures.mixin.d.ts +0 -0
  268. package/dist/src/canvas/canvas_gestures.mixin.d.ts.map +0 -0
  269. package/dist/src/color/Color.d.ts +0 -0
  270. package/dist/src/color/Color.d.ts.map +0 -0
  271. package/dist/src/color/Color.min.mjs +0 -0
  272. package/dist/src/color/Color.min.mjs.map +0 -0
  273. package/dist/src/color/Color.mjs +0 -0
  274. package/dist/src/color/Color.mjs.map +0 -0
  275. package/dist/src/color/color_map.d.ts +0 -0
  276. package/dist/src/color/color_map.d.ts.map +0 -0
  277. package/dist/src/color/color_map.min.mjs +0 -0
  278. package/dist/src/color/color_map.min.mjs.map +0 -0
  279. package/dist/src/color/color_map.mjs +0 -0
  280. package/dist/src/color/color_map.mjs.map +0 -0
  281. package/dist/src/color/constants.d.ts +0 -0
  282. package/dist/src/color/constants.d.ts.map +0 -0
  283. package/dist/src/color/constants.min.mjs +0 -0
  284. package/dist/src/color/constants.min.mjs.map +0 -0
  285. package/dist/src/color/constants.mjs +0 -0
  286. package/dist/src/color/constants.mjs.map +0 -0
  287. package/dist/src/color/typedefs.d.ts +0 -0
  288. package/dist/src/color/typedefs.d.ts.map +0 -0
  289. package/dist/src/color/util.d.ts +0 -0
  290. package/dist/src/color/util.d.ts.map +0 -0
  291. package/dist/src/color/util.min.mjs +0 -0
  292. package/dist/src/color/util.min.mjs.map +0 -0
  293. package/dist/src/color/util.mjs +0 -0
  294. package/dist/src/color/util.mjs.map +0 -0
  295. package/dist/src/config.d.ts +0 -0
  296. package/dist/src/config.d.ts.map +0 -0
  297. package/dist/src/config.min.mjs +0 -0
  298. package/dist/src/config.min.mjs.map +0 -0
  299. package/dist/src/config.mjs +0 -0
  300. package/dist/src/config.mjs.map +0 -0
  301. package/dist/src/constants.d.ts +0 -0
  302. package/dist/src/constants.d.ts.map +0 -0
  303. package/dist/src/constants.min.mjs +0 -0
  304. package/dist/src/constants.min.mjs.map +0 -0
  305. package/dist/src/constants.mjs +0 -0
  306. package/dist/src/constants.mjs.map +0 -0
  307. package/dist/src/controls/Control.d.ts +0 -0
  308. package/dist/src/controls/Control.d.ts.map +0 -0
  309. package/dist/src/controls/Control.min.mjs +0 -0
  310. package/dist/src/controls/Control.min.mjs.map +0 -0
  311. package/dist/src/controls/Control.mjs +0 -0
  312. package/dist/src/controls/Control.mjs.map +0 -0
  313. package/dist/src/controls/changeHeight.d.ts +0 -0
  314. package/dist/src/controls/changeHeight.d.ts.map +0 -0
  315. package/dist/src/controls/changeWidth.d.ts +0 -0
  316. package/dist/src/controls/changeWidth.d.ts.map +0 -0
  317. package/dist/src/controls/changeWidth.min.mjs +0 -0
  318. package/dist/src/controls/changeWidth.min.mjs.map +0 -0
  319. package/dist/src/controls/changeWidth.mjs +0 -0
  320. package/dist/src/controls/changeWidth.mjs.map +0 -0
  321. package/dist/src/controls/commonControls.d.ts +0 -0
  322. package/dist/src/controls/commonControls.d.ts.map +0 -0
  323. package/dist/src/controls/commonControls.min.mjs +0 -0
  324. package/dist/src/controls/commonControls.min.mjs.map +0 -0
  325. package/dist/src/controls/commonControls.mjs +0 -0
  326. package/dist/src/controls/commonControls.mjs.map +0 -0
  327. package/dist/src/controls/controlRendering.d.ts +0 -0
  328. package/dist/src/controls/controlRendering.d.ts.map +0 -0
  329. package/dist/src/controls/controlRendering.min.mjs +0 -0
  330. package/dist/src/controls/controlRendering.min.mjs.map +0 -0
  331. package/dist/src/controls/controlRendering.mjs +0 -0
  332. package/dist/src/controls/controlRendering.mjs.map +0 -0
  333. package/dist/src/controls/drag.d.ts +0 -0
  334. package/dist/src/controls/drag.d.ts.map +0 -0
  335. package/dist/src/controls/drag.min.mjs +0 -0
  336. package/dist/src/controls/drag.min.mjs.map +0 -0
  337. package/dist/src/controls/drag.mjs +0 -0
  338. package/dist/src/controls/drag.mjs.map +0 -0
  339. package/dist/src/controls/fireEvent.d.ts +0 -0
  340. package/dist/src/controls/fireEvent.d.ts.map +0 -0
  341. package/dist/src/controls/fireEvent.min.mjs +0 -0
  342. package/dist/src/controls/fireEvent.min.mjs.map +0 -0
  343. package/dist/src/controls/fireEvent.mjs +0 -0
  344. package/dist/src/controls/fireEvent.mjs.map +0 -0
  345. package/dist/src/controls/index.d.ts +0 -0
  346. package/dist/src/controls/index.d.ts.map +0 -0
  347. package/dist/src/controls/index.min.mjs +0 -0
  348. package/dist/src/controls/index.min.mjs.map +0 -0
  349. package/dist/src/controls/index.mjs +0 -0
  350. package/dist/src/controls/index.mjs.map +0 -0
  351. package/dist/src/controls/pathControl.d.ts +0 -0
  352. package/dist/src/controls/pathControl.d.ts.map +0 -0
  353. package/dist/src/controls/pathControl.min.mjs +0 -0
  354. package/dist/src/controls/pathControl.min.mjs.map +0 -0
  355. package/dist/src/controls/pathControl.mjs +0 -0
  356. package/dist/src/controls/pathControl.mjs.map +0 -0
  357. package/dist/src/controls/polyControl.d.ts +0 -0
  358. package/dist/src/controls/polyControl.d.ts.map +0 -0
  359. package/dist/src/controls/polyControl.min.mjs +0 -0
  360. package/dist/src/controls/polyControl.min.mjs.map +0 -0
  361. package/dist/src/controls/polyControl.mjs +0 -0
  362. package/dist/src/controls/polyControl.mjs.map +0 -0
  363. package/dist/src/controls/rotate.d.ts +0 -0
  364. package/dist/src/controls/rotate.d.ts.map +0 -0
  365. package/dist/src/controls/rotate.min.mjs +0 -0
  366. package/dist/src/controls/rotate.min.mjs.map +0 -0
  367. package/dist/src/controls/rotate.mjs +0 -0
  368. package/dist/src/controls/rotate.mjs.map +0 -0
  369. package/dist/src/controls/scale.d.ts +0 -0
  370. package/dist/src/controls/scale.d.ts.map +0 -0
  371. package/dist/src/controls/scale.min.mjs +0 -0
  372. package/dist/src/controls/scale.min.mjs.map +0 -0
  373. package/dist/src/controls/scale.mjs +0 -0
  374. package/dist/src/controls/scale.mjs.map +0 -0
  375. package/dist/src/controls/scaleSkew.d.ts +0 -0
  376. package/dist/src/controls/scaleSkew.d.ts.map +0 -0
  377. package/dist/src/controls/scaleSkew.min.mjs +0 -0
  378. package/dist/src/controls/scaleSkew.min.mjs.map +0 -0
  379. package/dist/src/controls/scaleSkew.mjs +0 -0
  380. package/dist/src/controls/scaleSkew.mjs.map +0 -0
  381. package/dist/src/controls/skew.d.ts +0 -0
  382. package/dist/src/controls/skew.d.ts.map +0 -0
  383. package/dist/src/controls/skew.min.mjs +0 -0
  384. package/dist/src/controls/skew.min.mjs.map +0 -0
  385. package/dist/src/controls/skew.mjs +0 -0
  386. package/dist/src/controls/skew.mjs.map +0 -0
  387. package/dist/src/controls/util.d.ts +0 -0
  388. package/dist/src/controls/util.d.ts.map +0 -0
  389. package/dist/src/controls/util.min.mjs +0 -0
  390. package/dist/src/controls/util.min.mjs.map +0 -0
  391. package/dist/src/controls/util.mjs +0 -0
  392. package/dist/src/controls/util.mjs.map +0 -0
  393. package/dist/src/controls/wrapWithFireEvent.d.ts +0 -0
  394. package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  395. package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -0
  396. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -0
  397. package/dist/src/controls/wrapWithFireEvent.mjs +0 -0
  398. package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -0
  399. package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  400. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  401. package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -0
  402. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -0
  403. package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -0
  404. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -0
  405. package/dist/src/env/browser.d.ts +0 -0
  406. package/dist/src/env/browser.d.ts.map +0 -0
  407. package/dist/src/env/browser.min.mjs +0 -0
  408. package/dist/src/env/browser.min.mjs.map +0 -0
  409. package/dist/src/env/browser.mjs +0 -0
  410. package/dist/src/env/browser.mjs.map +0 -0
  411. package/dist/src/env/index.d.ts +0 -0
  412. package/dist/src/env/index.d.ts.map +0 -0
  413. package/dist/src/env/index.min.mjs +0 -0
  414. package/dist/src/env/index.min.mjs.map +0 -0
  415. package/dist/src/env/index.mjs +0 -0
  416. package/dist/src/env/index.mjs.map +0 -0
  417. package/dist/src/env/node.d.ts +0 -0
  418. package/dist/src/env/node.d.ts.map +0 -0
  419. package/dist/src/env/types.d.ts +0 -0
  420. package/dist/src/env/types.d.ts.map +0 -0
  421. package/dist/src/filters/BaseFilter.d.ts +0 -0
  422. package/dist/src/filters/BaseFilter.d.ts.map +0 -0
  423. package/dist/src/filters/BaseFilter.min.mjs +0 -0
  424. package/dist/src/filters/BaseFilter.min.mjs.map +0 -0
  425. package/dist/src/filters/BaseFilter.mjs +0 -0
  426. package/dist/src/filters/BaseFilter.mjs.map +0 -0
  427. package/dist/src/filters/BlendColor.d.ts +0 -0
  428. package/dist/src/filters/BlendColor.d.ts.map +0 -0
  429. package/dist/src/filters/BlendColor.min.mjs +0 -0
  430. package/dist/src/filters/BlendColor.min.mjs.map +0 -0
  431. package/dist/src/filters/BlendColor.mjs +0 -0
  432. package/dist/src/filters/BlendColor.mjs.map +0 -0
  433. package/dist/src/filters/BlendImage.d.ts +0 -0
  434. package/dist/src/filters/BlendImage.d.ts.map +0 -0
  435. package/dist/src/filters/BlendImage.min.mjs +0 -0
  436. package/dist/src/filters/BlendImage.min.mjs.map +0 -0
  437. package/dist/src/filters/BlendImage.mjs +0 -0
  438. package/dist/src/filters/BlendImage.mjs.map +0 -0
  439. package/dist/src/filters/Blur.d.ts +0 -0
  440. package/dist/src/filters/Blur.d.ts.map +0 -0
  441. package/dist/src/filters/Blur.min.mjs +0 -0
  442. package/dist/src/filters/Blur.min.mjs.map +0 -0
  443. package/dist/src/filters/Blur.mjs +0 -0
  444. package/dist/src/filters/Blur.mjs.map +0 -0
  445. package/dist/src/filters/Boilerplate.d.ts +0 -0
  446. package/dist/src/filters/Boilerplate.d.ts.map +0 -0
  447. package/dist/src/filters/Brightness.d.ts +0 -0
  448. package/dist/src/filters/Brightness.d.ts.map +0 -0
  449. package/dist/src/filters/Brightness.min.mjs +0 -0
  450. package/dist/src/filters/Brightness.min.mjs.map +0 -0
  451. package/dist/src/filters/Brightness.mjs +0 -0
  452. package/dist/src/filters/Brightness.mjs.map +0 -0
  453. package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  454. package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  455. package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -0
  456. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -0
  457. package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -0
  458. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -0
  459. package/dist/src/filters/ColorMatrix.d.ts +0 -0
  460. package/dist/src/filters/ColorMatrix.d.ts.map +0 -0
  461. package/dist/src/filters/ColorMatrix.min.mjs +0 -0
  462. package/dist/src/filters/ColorMatrix.min.mjs.map +0 -0
  463. package/dist/src/filters/ColorMatrix.mjs +0 -0
  464. package/dist/src/filters/ColorMatrix.mjs.map +0 -0
  465. package/dist/src/filters/ColorMatrixFilters.d.ts +0 -0
  466. package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  467. package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -0
  468. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -0
  469. package/dist/src/filters/ColorMatrixFilters.mjs +0 -0
  470. package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -0
  471. package/dist/src/filters/Composed.d.ts +0 -0
  472. package/dist/src/filters/Composed.d.ts.map +0 -0
  473. package/dist/src/filters/Composed.min.mjs +0 -0
  474. package/dist/src/filters/Composed.min.mjs.map +0 -0
  475. package/dist/src/filters/Composed.mjs +0 -0
  476. package/dist/src/filters/Composed.mjs.map +0 -0
  477. package/dist/src/filters/Contrast.d.ts +0 -0
  478. package/dist/src/filters/Contrast.d.ts.map +0 -0
  479. package/dist/src/filters/Contrast.min.mjs +0 -0
  480. package/dist/src/filters/Contrast.min.mjs.map +0 -0
  481. package/dist/src/filters/Contrast.mjs +0 -0
  482. package/dist/src/filters/Contrast.mjs.map +0 -0
  483. package/dist/src/filters/Convolute.d.ts +0 -0
  484. package/dist/src/filters/Convolute.d.ts.map +0 -0
  485. package/dist/src/filters/Convolute.min.mjs +0 -0
  486. package/dist/src/filters/Convolute.min.mjs.map +0 -0
  487. package/dist/src/filters/Convolute.mjs +0 -0
  488. package/dist/src/filters/Convolute.mjs.map +0 -0
  489. package/dist/src/filters/FilterBackend.d.ts +0 -0
  490. package/dist/src/filters/FilterBackend.d.ts.map +0 -0
  491. package/dist/src/filters/FilterBackend.min.mjs +0 -0
  492. package/dist/src/filters/FilterBackend.min.mjs.map +0 -0
  493. package/dist/src/filters/FilterBackend.mjs +0 -0
  494. package/dist/src/filters/FilterBackend.mjs.map +0 -0
  495. package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -0
  496. package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  497. package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -0
  498. package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -0
  499. package/dist/src/filters/GLProbes/GLProbe.mjs +0 -0
  500. package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -0
  501. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -0
  502. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -0
  503. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  504. package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  505. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -0
  506. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -0
  507. package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -0
  508. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -0
  509. package/dist/src/filters/Gamma.d.ts +0 -0
  510. package/dist/src/filters/Gamma.d.ts.map +0 -0
  511. package/dist/src/filters/Gamma.min.mjs +0 -0
  512. package/dist/src/filters/Gamma.min.mjs.map +0 -0
  513. package/dist/src/filters/Gamma.mjs +0 -0
  514. package/dist/src/filters/Gamma.mjs.map +0 -0
  515. package/dist/src/filters/Grayscale.d.ts +0 -0
  516. package/dist/src/filters/Grayscale.d.ts.map +0 -0
  517. package/dist/src/filters/Grayscale.min.mjs +0 -0
  518. package/dist/src/filters/Grayscale.min.mjs.map +0 -0
  519. package/dist/src/filters/Grayscale.mjs +0 -0
  520. package/dist/src/filters/Grayscale.mjs.map +0 -0
  521. package/dist/src/filters/HueRotation.d.ts +0 -0
  522. package/dist/src/filters/HueRotation.d.ts.map +0 -0
  523. package/dist/src/filters/HueRotation.min.mjs +0 -0
  524. package/dist/src/filters/HueRotation.min.mjs.map +0 -0
  525. package/dist/src/filters/HueRotation.mjs +0 -0
  526. package/dist/src/filters/HueRotation.mjs.map +0 -0
  527. package/dist/src/filters/Invert.d.ts +0 -0
  528. package/dist/src/filters/Invert.d.ts.map +0 -0
  529. package/dist/src/filters/Invert.min.mjs +0 -0
  530. package/dist/src/filters/Invert.min.mjs.map +0 -0
  531. package/dist/src/filters/Invert.mjs +0 -0
  532. package/dist/src/filters/Invert.mjs.map +0 -0
  533. package/dist/src/filters/Noise.d.ts +0 -0
  534. package/dist/src/filters/Noise.d.ts.map +0 -0
  535. package/dist/src/filters/Noise.min.mjs +0 -0
  536. package/dist/src/filters/Noise.min.mjs.map +0 -0
  537. package/dist/src/filters/Noise.mjs +0 -0
  538. package/dist/src/filters/Noise.mjs.map +0 -0
  539. package/dist/src/filters/Pixelate.d.ts +0 -0
  540. package/dist/src/filters/Pixelate.d.ts.map +0 -0
  541. package/dist/src/filters/Pixelate.min.mjs +0 -0
  542. package/dist/src/filters/Pixelate.min.mjs.map +0 -0
  543. package/dist/src/filters/Pixelate.mjs +0 -0
  544. package/dist/src/filters/Pixelate.mjs.map +0 -0
  545. package/dist/src/filters/RemoveColor.d.ts +0 -0
  546. package/dist/src/filters/RemoveColor.d.ts.map +0 -0
  547. package/dist/src/filters/RemoveColor.min.mjs +0 -0
  548. package/dist/src/filters/RemoveColor.min.mjs.map +0 -0
  549. package/dist/src/filters/RemoveColor.mjs +0 -0
  550. package/dist/src/filters/RemoveColor.mjs.map +0 -0
  551. package/dist/src/filters/Resize.d.ts +0 -0
  552. package/dist/src/filters/Resize.d.ts.map +0 -0
  553. package/dist/src/filters/Resize.min.mjs +0 -0
  554. package/dist/src/filters/Resize.min.mjs.map +0 -0
  555. package/dist/src/filters/Resize.mjs +0 -0
  556. package/dist/src/filters/Resize.mjs.map +0 -0
  557. package/dist/src/filters/Saturation.d.ts +0 -0
  558. package/dist/src/filters/Saturation.d.ts.map +0 -0
  559. package/dist/src/filters/Saturation.min.mjs +0 -0
  560. package/dist/src/filters/Saturation.min.mjs.map +0 -0
  561. package/dist/src/filters/Saturation.mjs +0 -0
  562. package/dist/src/filters/Saturation.mjs.map +0 -0
  563. package/dist/src/filters/Vibrance.d.ts +0 -0
  564. package/dist/src/filters/Vibrance.d.ts.map +0 -0
  565. package/dist/src/filters/Vibrance.min.mjs +0 -0
  566. package/dist/src/filters/Vibrance.min.mjs.map +0 -0
  567. package/dist/src/filters/Vibrance.mjs +0 -0
  568. package/dist/src/filters/Vibrance.mjs.map +0 -0
  569. package/dist/src/filters/WebGLFilterBackend.d.ts +0 -0
  570. package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  571. package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -0
  572. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -0
  573. package/dist/src/filters/WebGLFilterBackend.mjs +0 -0
  574. package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -0
  575. package/dist/src/filters/filters.d.ts +0 -0
  576. package/dist/src/filters/filters.d.ts.map +0 -0
  577. package/dist/src/filters/filters.min.mjs +0 -0
  578. package/dist/src/filters/filters.min.mjs.map +0 -0
  579. package/dist/src/filters/filters.mjs +0 -0
  580. package/dist/src/filters/filters.mjs.map +0 -0
  581. package/dist/src/filters/index.d.ts +0 -0
  582. package/dist/src/filters/index.d.ts.map +0 -0
  583. package/dist/src/filters/shaders/baseFilter.d.ts +0 -0
  584. package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -0
  585. package/dist/src/filters/shaders/baseFilter.min.mjs +0 -0
  586. package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -0
  587. package/dist/src/filters/shaders/baseFilter.mjs +0 -0
  588. package/dist/src/filters/shaders/baseFilter.mjs.map +0 -0
  589. package/dist/src/filters/shaders/blendColor.d.ts +0 -0
  590. package/dist/src/filters/shaders/blendColor.d.ts.map +0 -0
  591. package/dist/src/filters/shaders/blendColor.min.mjs +0 -0
  592. package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -0
  593. package/dist/src/filters/shaders/blendColor.mjs +0 -0
  594. package/dist/src/filters/shaders/blendColor.mjs.map +0 -0
  595. package/dist/src/filters/shaders/blendImage.d.ts +0 -0
  596. package/dist/src/filters/shaders/blendImage.d.ts.map +0 -0
  597. package/dist/src/filters/shaders/blendImage.min.mjs +0 -0
  598. package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -0
  599. package/dist/src/filters/shaders/blendImage.mjs +0 -0
  600. package/dist/src/filters/shaders/blendImage.mjs.map +0 -0
  601. package/dist/src/filters/shaders/blur.d.ts +0 -0
  602. package/dist/src/filters/shaders/blur.d.ts.map +0 -0
  603. package/dist/src/filters/shaders/blur.min.mjs +0 -0
  604. package/dist/src/filters/shaders/blur.min.mjs.map +0 -0
  605. package/dist/src/filters/shaders/blur.mjs +0 -0
  606. package/dist/src/filters/shaders/blur.mjs.map +0 -0
  607. package/dist/src/filters/shaders/brightness.d.ts +0 -0
  608. package/dist/src/filters/shaders/brightness.d.ts.map +0 -0
  609. package/dist/src/filters/shaders/brightness.min.mjs +0 -0
  610. package/dist/src/filters/shaders/brightness.min.mjs.map +0 -0
  611. package/dist/src/filters/shaders/brightness.mjs +0 -0
  612. package/dist/src/filters/shaders/brightness.mjs.map +0 -0
  613. package/dist/src/filters/shaders/colorMatrix.d.ts +0 -0
  614. package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  615. package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -0
  616. package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -0
  617. package/dist/src/filters/shaders/colorMatrix.mjs +0 -0
  618. package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -0
  619. package/dist/src/filters/shaders/constrast.d.ts +0 -0
  620. package/dist/src/filters/shaders/constrast.d.ts.map +0 -0
  621. package/dist/src/filters/shaders/constrast.min.mjs +0 -0
  622. package/dist/src/filters/shaders/constrast.min.mjs.map +0 -0
  623. package/dist/src/filters/shaders/constrast.mjs +0 -0
  624. package/dist/src/filters/shaders/constrast.mjs.map +0 -0
  625. package/dist/src/filters/shaders/convolute.d.ts +0 -0
  626. package/dist/src/filters/shaders/convolute.d.ts.map +0 -0
  627. package/dist/src/filters/shaders/convolute.min.mjs +0 -0
  628. package/dist/src/filters/shaders/convolute.min.mjs.map +0 -0
  629. package/dist/src/filters/shaders/convolute.mjs +0 -0
  630. package/dist/src/filters/shaders/convolute.mjs.map +0 -0
  631. package/dist/src/filters/shaders/gamma.d.ts +0 -0
  632. package/dist/src/filters/shaders/gamma.d.ts.map +0 -0
  633. package/dist/src/filters/shaders/gamma.min.mjs +0 -0
  634. package/dist/src/filters/shaders/gamma.min.mjs.map +0 -0
  635. package/dist/src/filters/shaders/gamma.mjs +0 -0
  636. package/dist/src/filters/shaders/gamma.mjs.map +0 -0
  637. package/dist/src/filters/shaders/grayscale.d.ts +0 -0
  638. package/dist/src/filters/shaders/grayscale.d.ts.map +0 -0
  639. package/dist/src/filters/shaders/grayscale.min.mjs +0 -0
  640. package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -0
  641. package/dist/src/filters/shaders/grayscale.mjs +0 -0
  642. package/dist/src/filters/shaders/grayscale.mjs.map +0 -0
  643. package/dist/src/filters/shaders/invert.d.ts +0 -0
  644. package/dist/src/filters/shaders/invert.d.ts.map +0 -0
  645. package/dist/src/filters/shaders/invert.min.mjs +0 -0
  646. package/dist/src/filters/shaders/invert.min.mjs.map +0 -0
  647. package/dist/src/filters/shaders/invert.mjs +0 -0
  648. package/dist/src/filters/shaders/invert.mjs.map +0 -0
  649. package/dist/src/filters/shaders/noise.d.ts +0 -0
  650. package/dist/src/filters/shaders/noise.d.ts.map +0 -0
  651. package/dist/src/filters/shaders/noise.min.mjs +0 -0
  652. package/dist/src/filters/shaders/noise.min.mjs.map +0 -0
  653. package/dist/src/filters/shaders/noise.mjs +0 -0
  654. package/dist/src/filters/shaders/noise.mjs.map +0 -0
  655. package/dist/src/filters/shaders/pixelate.d.ts +0 -0
  656. package/dist/src/filters/shaders/pixelate.d.ts.map +0 -0
  657. package/dist/src/filters/shaders/pixelate.min.mjs +0 -0
  658. package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -0
  659. package/dist/src/filters/shaders/pixelate.mjs +0 -0
  660. package/dist/src/filters/shaders/pixelate.mjs.map +0 -0
  661. package/dist/src/filters/shaders/removeColor.d.ts +0 -0
  662. package/dist/src/filters/shaders/removeColor.d.ts.map +0 -0
  663. package/dist/src/filters/shaders/removeColor.min.mjs +0 -0
  664. package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -0
  665. package/dist/src/filters/shaders/removeColor.mjs +0 -0
  666. package/dist/src/filters/shaders/removeColor.mjs.map +0 -0
  667. package/dist/src/filters/shaders/saturation.d.ts +0 -0
  668. package/dist/src/filters/shaders/saturation.d.ts.map +0 -0
  669. package/dist/src/filters/shaders/saturation.min.mjs +0 -0
  670. package/dist/src/filters/shaders/saturation.min.mjs.map +0 -0
  671. package/dist/src/filters/shaders/saturation.mjs +0 -0
  672. package/dist/src/filters/shaders/saturation.mjs.map +0 -0
  673. package/dist/src/filters/shaders/vibrance.d.ts +0 -0
  674. package/dist/src/filters/shaders/vibrance.d.ts.map +0 -0
  675. package/dist/src/filters/shaders/vibrance.min.mjs +0 -0
  676. package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -0
  677. package/dist/src/filters/shaders/vibrance.mjs +0 -0
  678. package/dist/src/filters/shaders/vibrance.mjs.map +0 -0
  679. package/dist/src/filters/typedefs.d.ts +0 -0
  680. package/dist/src/filters/typedefs.d.ts.map +0 -0
  681. package/dist/src/filters/utils.d.ts +0 -0
  682. package/dist/src/filters/utils.d.ts.map +0 -0
  683. package/dist/src/filters/utils.min.mjs +0 -0
  684. package/dist/src/filters/utils.min.mjs.map +0 -0
  685. package/dist/src/filters/utils.mjs +0 -0
  686. package/dist/src/filters/utils.mjs.map +0 -0
  687. package/dist/src/gradient/Gradient.d.ts +0 -0
  688. package/dist/src/gradient/Gradient.d.ts.map +0 -0
  689. package/dist/src/gradient/Gradient.min.mjs +0 -0
  690. package/dist/src/gradient/Gradient.min.mjs.map +0 -0
  691. package/dist/src/gradient/Gradient.mjs +0 -0
  692. package/dist/src/gradient/Gradient.mjs.map +0 -0
  693. package/dist/src/gradient/constants.d.ts +0 -0
  694. package/dist/src/gradient/constants.d.ts.map +0 -0
  695. package/dist/src/gradient/constants.min.mjs +0 -0
  696. package/dist/src/gradient/constants.min.mjs.map +0 -0
  697. package/dist/src/gradient/constants.mjs +0 -0
  698. package/dist/src/gradient/constants.mjs.map +0 -0
  699. package/dist/src/gradient/index.d.ts +0 -0
  700. package/dist/src/gradient/index.d.ts.map +0 -0
  701. package/dist/src/gradient/parser/misc.d.ts +0 -0
  702. package/dist/src/gradient/parser/misc.d.ts.map +0 -0
  703. package/dist/src/gradient/parser/misc.min.mjs +0 -0
  704. package/dist/src/gradient/parser/misc.min.mjs.map +0 -0
  705. package/dist/src/gradient/parser/misc.mjs +0 -0
  706. package/dist/src/gradient/parser/misc.mjs.map +0 -0
  707. package/dist/src/gradient/parser/parseColorStops.d.ts +0 -0
  708. package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  709. package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -0
  710. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -0
  711. package/dist/src/gradient/parser/parseColorStops.mjs +0 -0
  712. package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -0
  713. package/dist/src/gradient/parser/parseCoords.d.ts +0 -0
  714. package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -0
  715. package/dist/src/gradient/parser/parseCoords.min.mjs +0 -0
  716. package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -0
  717. package/dist/src/gradient/parser/parseCoords.mjs +0 -0
  718. package/dist/src/gradient/parser/parseCoords.mjs.map +0 -0
  719. package/dist/src/gradient/typedefs.d.ts +0 -0
  720. package/dist/src/gradient/typedefs.d.ts.map +0 -0
  721. package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -0
  722. package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -0
  723. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -0
  724. package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -0
  725. package/dist/src/parkinglot/straighten.d.ts +0 -0
  726. package/dist/src/parkinglot/straighten.d.ts.map +0 -0
  727. package/dist/src/parser/applyViewboxTransform.d.ts +0 -0
  728. package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -0
  729. package/dist/src/parser/applyViewboxTransform.min.mjs +0 -0
  730. package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -0
  731. package/dist/src/parser/applyViewboxTransform.mjs +0 -0
  732. package/dist/src/parser/applyViewboxTransform.mjs.map +0 -0
  733. package/dist/src/parser/attributes.d.ts +0 -0
  734. package/dist/src/parser/attributes.d.ts.map +0 -0
  735. package/dist/src/parser/attributes.min.mjs +0 -0
  736. package/dist/src/parser/attributes.min.mjs.map +0 -0
  737. package/dist/src/parser/attributes.mjs +0 -0
  738. package/dist/src/parser/attributes.mjs.map +0 -0
  739. package/dist/src/parser/constants.d.ts +0 -0
  740. package/dist/src/parser/constants.d.ts.map +0 -0
  741. package/dist/src/parser/constants.min.mjs +0 -0
  742. package/dist/src/parser/constants.min.mjs.map +0 -0
  743. package/dist/src/parser/constants.mjs +0 -0
  744. package/dist/src/parser/constants.mjs.map +0 -0
  745. package/dist/src/parser/doesSomeParentMatch.d.ts +0 -0
  746. package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  747. package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -0
  748. package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -0
  749. package/dist/src/parser/doesSomeParentMatch.mjs +0 -0
  750. package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -0
  751. package/dist/src/parser/elementMatchesRule.d.ts +0 -0
  752. package/dist/src/parser/elementMatchesRule.d.ts.map +0 -0
  753. package/dist/src/parser/elementMatchesRule.min.mjs +0 -0
  754. package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -0
  755. package/dist/src/parser/elementMatchesRule.mjs +0 -0
  756. package/dist/src/parser/elementMatchesRule.mjs.map +0 -0
  757. package/dist/src/parser/elements_parser.d.ts +0 -0
  758. package/dist/src/parser/elements_parser.d.ts.map +0 -0
  759. package/dist/src/parser/elements_parser.min.mjs +0 -0
  760. package/dist/src/parser/elements_parser.min.mjs.map +0 -0
  761. package/dist/src/parser/elements_parser.mjs +0 -0
  762. package/dist/src/parser/elements_parser.mjs.map +0 -0
  763. package/dist/src/parser/getCSSRules.d.ts +0 -0
  764. package/dist/src/parser/getCSSRules.d.ts.map +0 -0
  765. package/dist/src/parser/getCSSRules.min.mjs +0 -0
  766. package/dist/src/parser/getCSSRules.min.mjs.map +0 -0
  767. package/dist/src/parser/getCSSRules.mjs +0 -0
  768. package/dist/src/parser/getCSSRules.mjs.map +0 -0
  769. package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -0
  770. package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  771. package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -0
  772. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -0
  773. package/dist/src/parser/getGlobalStylesForElement.mjs +0 -0
  774. package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -0
  775. package/dist/src/parser/getGradientDefs.d.ts +0 -0
  776. package/dist/src/parser/getGradientDefs.d.ts.map +0 -0
  777. package/dist/src/parser/getGradientDefs.min.mjs +0 -0
  778. package/dist/src/parser/getGradientDefs.min.mjs.map +0 -0
  779. package/dist/src/parser/getGradientDefs.mjs +0 -0
  780. package/dist/src/parser/getGradientDefs.mjs.map +0 -0
  781. package/dist/src/parser/getMultipleNodes.d.ts +0 -0
  782. package/dist/src/parser/getMultipleNodes.d.ts.map +0 -0
  783. package/dist/src/parser/getMultipleNodes.min.mjs +0 -0
  784. package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -0
  785. package/dist/src/parser/getMultipleNodes.mjs +0 -0
  786. package/dist/src/parser/getMultipleNodes.mjs.map +0 -0
  787. package/dist/src/parser/getSvgRegex.d.ts +0 -0
  788. package/dist/src/parser/getSvgRegex.d.ts.map +0 -0
  789. package/dist/src/parser/getSvgRegex.min.mjs +0 -0
  790. package/dist/src/parser/getSvgRegex.min.mjs.map +0 -0
  791. package/dist/src/parser/getSvgRegex.mjs +0 -0
  792. package/dist/src/parser/getSvgRegex.mjs.map +0 -0
  793. package/dist/src/parser/getTagName.d.ts +0 -0
  794. package/dist/src/parser/getTagName.d.ts.map +0 -0
  795. package/dist/src/parser/getTagName.min.mjs +0 -0
  796. package/dist/src/parser/getTagName.min.mjs.map +0 -0
  797. package/dist/src/parser/getTagName.mjs +0 -0
  798. package/dist/src/parser/getTagName.mjs.map +0 -0
  799. package/dist/src/parser/hasInvalidAncestor.d.ts +0 -0
  800. package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  801. package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -0
  802. package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -0
  803. package/dist/src/parser/hasInvalidAncestor.mjs +0 -0
  804. package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -0
  805. package/dist/src/parser/loadSVGFromString.d.ts +0 -0
  806. package/dist/src/parser/loadSVGFromString.d.ts.map +0 -0
  807. package/dist/src/parser/loadSVGFromString.min.mjs +0 -0
  808. package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -0
  809. package/dist/src/parser/loadSVGFromString.mjs +0 -0
  810. package/dist/src/parser/loadSVGFromString.mjs.map +0 -0
  811. package/dist/src/parser/loadSVGFromURL.d.ts +0 -0
  812. package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -0
  813. package/dist/src/parser/loadSVGFromURL.min.mjs +0 -0
  814. package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -0
  815. package/dist/src/parser/loadSVGFromURL.mjs +0 -0
  816. package/dist/src/parser/loadSVGFromURL.mjs.map +0 -0
  817. package/dist/src/parser/normalizeAttr.d.ts +0 -0
  818. package/dist/src/parser/normalizeAttr.d.ts.map +0 -0
  819. package/dist/src/parser/normalizeAttr.min.mjs +0 -0
  820. package/dist/src/parser/normalizeAttr.min.mjs.map +0 -0
  821. package/dist/src/parser/normalizeAttr.mjs +0 -0
  822. package/dist/src/parser/normalizeAttr.mjs.map +0 -0
  823. package/dist/src/parser/normalizeValue.d.ts +0 -0
  824. package/dist/src/parser/normalizeValue.d.ts.map +0 -0
  825. package/dist/src/parser/normalizeValue.min.mjs +0 -0
  826. package/dist/src/parser/normalizeValue.min.mjs.map +0 -0
  827. package/dist/src/parser/normalizeValue.mjs +0 -0
  828. package/dist/src/parser/normalizeValue.mjs.map +0 -0
  829. package/dist/src/parser/parseAttributes.d.ts +0 -0
  830. package/dist/src/parser/parseAttributes.d.ts.map +0 -0
  831. package/dist/src/parser/parseAttributes.min.mjs +0 -0
  832. package/dist/src/parser/parseAttributes.min.mjs.map +0 -0
  833. package/dist/src/parser/parseAttributes.mjs +0 -0
  834. package/dist/src/parser/parseAttributes.mjs.map +0 -0
  835. package/dist/src/parser/parseFontDeclaration.d.ts +0 -0
  836. package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -0
  837. package/dist/src/parser/parseFontDeclaration.min.mjs +0 -0
  838. package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -0
  839. package/dist/src/parser/parseFontDeclaration.mjs +0 -0
  840. package/dist/src/parser/parseFontDeclaration.mjs.map +0 -0
  841. package/dist/src/parser/parsePointsAttribute.d.ts +0 -0
  842. package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -0
  843. package/dist/src/parser/parsePointsAttribute.min.mjs +0 -0
  844. package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -0
  845. package/dist/src/parser/parsePointsAttribute.mjs +0 -0
  846. package/dist/src/parser/parsePointsAttribute.mjs.map +0 -0
  847. package/dist/src/parser/parseSVGDocument.d.ts +0 -0
  848. package/dist/src/parser/parseSVGDocument.d.ts.map +0 -0
  849. package/dist/src/parser/parseSVGDocument.min.mjs +0 -0
  850. package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -0
  851. package/dist/src/parser/parseSVGDocument.mjs +0 -0
  852. package/dist/src/parser/parseSVGDocument.mjs.map +0 -0
  853. package/dist/src/parser/parseStyleAttribute.d.ts +0 -0
  854. package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -0
  855. package/dist/src/parser/parseStyleAttribute.min.mjs +0 -0
  856. package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -0
  857. package/dist/src/parser/parseStyleAttribute.mjs +0 -0
  858. package/dist/src/parser/parseStyleAttribute.mjs.map +0 -0
  859. package/dist/src/parser/parseStyleObject.d.ts +0 -0
  860. package/dist/src/parser/parseStyleObject.d.ts.map +0 -0
  861. package/dist/src/parser/parseStyleObject.min.mjs +0 -0
  862. package/dist/src/parser/parseStyleObject.min.mjs.map +0 -0
  863. package/dist/src/parser/parseStyleObject.mjs +0 -0
  864. package/dist/src/parser/parseStyleObject.mjs.map +0 -0
  865. package/dist/src/parser/parseStyleString.d.ts +0 -0
  866. package/dist/src/parser/parseStyleString.d.ts.map +0 -0
  867. package/dist/src/parser/parseStyleString.min.mjs +0 -0
  868. package/dist/src/parser/parseStyleString.min.mjs.map +0 -0
  869. package/dist/src/parser/parseStyleString.mjs +0 -0
  870. package/dist/src/parser/parseStyleString.mjs.map +0 -0
  871. package/dist/src/parser/parseTransformAttribute.d.ts +0 -0
  872. package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -0
  873. package/dist/src/parser/parseTransformAttribute.min.mjs +0 -0
  874. package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -0
  875. package/dist/src/parser/parseTransformAttribute.mjs +0 -0
  876. package/dist/src/parser/parseTransformAttribute.mjs.map +0 -0
  877. package/dist/src/parser/parseUseDirectives.d.ts +0 -0
  878. package/dist/src/parser/parseUseDirectives.d.ts.map +0 -0
  879. package/dist/src/parser/parseUseDirectives.min.mjs +0 -0
  880. package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -0
  881. package/dist/src/parser/parseUseDirectives.mjs +0 -0
  882. package/dist/src/parser/parseUseDirectives.mjs.map +0 -0
  883. package/dist/src/parser/percent.d.ts +0 -0
  884. package/dist/src/parser/percent.d.ts.map +0 -0
  885. package/dist/src/parser/percent.min.mjs +0 -0
  886. package/dist/src/parser/percent.min.mjs.map +0 -0
  887. package/dist/src/parser/percent.mjs +0 -0
  888. package/dist/src/parser/percent.mjs.map +0 -0
  889. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  890. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  891. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -0
  892. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -0
  893. package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -0
  894. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -0
  895. package/dist/src/parser/selectorMatches.d.ts +0 -0
  896. package/dist/src/parser/selectorMatches.d.ts.map +0 -0
  897. package/dist/src/parser/selectorMatches.min.mjs +0 -0
  898. package/dist/src/parser/selectorMatches.min.mjs.map +0 -0
  899. package/dist/src/parser/selectorMatches.mjs +0 -0
  900. package/dist/src/parser/selectorMatches.mjs.map +0 -0
  901. package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -0
  902. package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  903. package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -0
  904. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -0
  905. package/dist/src/parser/setStrokeFillOpacity.mjs +0 -0
  906. package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -0
  907. package/dist/src/parser/typedefs.d.ts +0 -0
  908. package/dist/src/parser/typedefs.d.ts.map +0 -0
  909. package/dist/src/shapes/ActiveSelection.d.ts +0 -0
  910. package/dist/src/shapes/ActiveSelection.d.ts.map +0 -0
  911. package/dist/src/shapes/ActiveSelection.min.mjs +0 -0
  912. package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -0
  913. package/dist/src/shapes/ActiveSelection.mjs +0 -0
  914. package/dist/src/shapes/ActiveSelection.mjs.map +0 -0
  915. package/dist/src/shapes/Circle.d.ts +0 -0
  916. package/dist/src/shapes/Circle.d.ts.map +0 -0
  917. package/dist/src/shapes/Circle.min.mjs +0 -0
  918. package/dist/src/shapes/Circle.min.mjs.map +0 -0
  919. package/dist/src/shapes/Circle.mjs +0 -0
  920. package/dist/src/shapes/Circle.mjs.map +0 -0
  921. package/dist/src/shapes/Ellipse.d.ts +0 -0
  922. package/dist/src/shapes/Ellipse.d.ts.map +0 -0
  923. package/dist/src/shapes/Ellipse.min.mjs +0 -0
  924. package/dist/src/shapes/Ellipse.min.mjs.map +0 -0
  925. package/dist/src/shapes/Ellipse.mjs +0 -0
  926. package/dist/src/shapes/Ellipse.mjs.map +0 -0
  927. package/dist/src/shapes/Group.d.ts +0 -0
  928. package/dist/src/shapes/Group.d.ts.map +0 -0
  929. package/dist/src/shapes/Group.min.mjs +0 -0
  930. package/dist/src/shapes/Group.min.mjs.map +0 -0
  931. package/dist/src/shapes/Group.mjs +0 -0
  932. package/dist/src/shapes/Group.mjs.map +0 -0
  933. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  934. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  935. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -0
  936. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -0
  937. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -0
  938. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -0
  939. package/dist/src/shapes/IText/IText.d.ts +0 -0
  940. package/dist/src/shapes/IText/IText.d.ts.map +0 -0
  941. package/dist/src/shapes/IText/IText.min.mjs +0 -0
  942. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  943. package/dist/src/shapes/IText/IText.mjs +206 -206
  944. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  945. package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -0
  946. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
  947. package/dist/src/shapes/IText/ITextBehavior.min.mjs +0 -0
  948. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  949. package/dist/src/shapes/IText/ITextBehavior.mjs +152 -152
  950. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  951. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  952. package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  953. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -0
  954. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  955. package/dist/src/shapes/IText/ITextClickBehavior.mjs +36 -36
  956. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  957. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  958. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  959. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -0
  960. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +0 -0
  961. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +0 -0
  962. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +0 -0
  963. package/dist/src/shapes/IText/constants.d.ts +0 -0
  964. package/dist/src/shapes/IText/constants.d.ts.map +0 -0
  965. package/dist/src/shapes/IText/constants.min.mjs +0 -0
  966. package/dist/src/shapes/IText/constants.min.mjs.map +0 -0
  967. package/dist/src/shapes/IText/constants.mjs +0 -0
  968. package/dist/src/shapes/IText/constants.mjs.map +0 -0
  969. package/dist/src/shapes/Image.d.ts +0 -0
  970. package/dist/src/shapes/Image.d.ts.map +0 -0
  971. package/dist/src/shapes/Image.min.mjs +0 -0
  972. package/dist/src/shapes/Image.min.mjs.map +0 -0
  973. package/dist/src/shapes/Image.mjs +0 -0
  974. package/dist/src/shapes/Image.mjs.map +0 -0
  975. package/dist/src/shapes/Line.d.ts +31 -86
  976. package/dist/src/shapes/Line.d.ts.map +1 -1
  977. package/dist/src/shapes/Line.min.mjs +1 -1
  978. package/dist/src/shapes/Line.min.mjs.map +1 -1
  979. package/dist/src/shapes/Line.mjs +323 -154
  980. package/dist/src/shapes/Line.mjs.map +1 -1
  981. package/dist/src/shapes/Object/FabricObject.d.ts +0 -0
  982. package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -0
  983. package/dist/src/shapes/Object/FabricObject.min.mjs +0 -0
  984. package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -0
  985. package/dist/src/shapes/Object/FabricObject.mjs +0 -0
  986. package/dist/src/shapes/Object/FabricObject.mjs.map +0 -0
  987. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  988. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  989. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -0
  990. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -0
  991. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -0
  992. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -0
  993. package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -0
  994. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  995. package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -0
  996. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -0
  997. package/dist/src/shapes/Object/InteractiveObject.mjs +0 -0
  998. package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -0
  999. package/dist/src/shapes/Object/Object.d.ts +0 -0
  1000. package/dist/src/shapes/Object/Object.d.ts.map +0 -0
  1001. package/dist/src/shapes/Object/Object.min.mjs +0 -0
  1002. package/dist/src/shapes/Object/Object.min.mjs.map +0 -0
  1003. package/dist/src/shapes/Object/Object.mjs +0 -0
  1004. package/dist/src/shapes/Object/Object.mjs.map +0 -0
  1005. package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1006. package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1007. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -0
  1008. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -0
  1009. package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -0
  1010. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -0
  1011. package/dist/src/shapes/Object/defaultValues.d.ts +0 -0
  1012. package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1013. package/dist/src/shapes/Object/defaultValues.min.mjs +0 -0
  1014. package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -0
  1015. package/dist/src/shapes/Object/defaultValues.mjs +0 -0
  1016. package/dist/src/shapes/Object/defaultValues.mjs.map +0 -0
  1017. package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1018. package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1019. package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1020. package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1021. package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1022. package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1023. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1024. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1025. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1026. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1027. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1028. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1029. package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1030. package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1031. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1032. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1033. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1034. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1035. package/dist/src/shapes/Object/types/index.d.ts +0 -0
  1036. package/dist/src/shapes/Object/types/index.d.ts.map +0 -0
  1037. package/dist/src/shapes/Path.d.ts +0 -0
  1038. package/dist/src/shapes/Path.d.ts.map +0 -0
  1039. package/dist/src/shapes/Path.min.mjs +0 -0
  1040. package/dist/src/shapes/Path.min.mjs.map +0 -0
  1041. package/dist/src/shapes/Path.mjs +0 -0
  1042. package/dist/src/shapes/Path.mjs.map +0 -0
  1043. package/dist/src/shapes/Polygon.d.ts +0 -0
  1044. package/dist/src/shapes/Polygon.d.ts.map +0 -0
  1045. package/dist/src/shapes/Polygon.min.mjs +0 -0
  1046. package/dist/src/shapes/Polygon.min.mjs.map +0 -0
  1047. package/dist/src/shapes/Polygon.mjs +0 -0
  1048. package/dist/src/shapes/Polygon.mjs.map +0 -0
  1049. package/dist/src/shapes/Polyline.d.ts +7 -0
  1050. package/dist/src/shapes/Polyline.d.ts.map +1 -1
  1051. package/dist/src/shapes/Polyline.min.mjs +1 -1
  1052. package/dist/src/shapes/Polyline.min.mjs.map +1 -1
  1053. package/dist/src/shapes/Polyline.mjs +48 -16
  1054. package/dist/src/shapes/Polyline.mjs.map +1 -1
  1055. package/dist/src/shapes/Rect.d.ts +0 -0
  1056. package/dist/src/shapes/Rect.d.ts.map +0 -0
  1057. package/dist/src/shapes/Rect.min.mjs +0 -0
  1058. package/dist/src/shapes/Rect.min.mjs.map +0 -0
  1059. package/dist/src/shapes/Rect.mjs +0 -0
  1060. package/dist/src/shapes/Rect.mjs.map +0 -0
  1061. package/dist/src/shapes/Text/StyledText.d.ts +0 -0
  1062. package/dist/src/shapes/Text/StyledText.d.ts.map +0 -0
  1063. package/dist/src/shapes/Text/StyledText.min.mjs +0 -0
  1064. package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -0
  1065. package/dist/src/shapes/Text/StyledText.mjs +0 -0
  1066. package/dist/src/shapes/Text/StyledText.mjs.map +0 -0
  1067. package/dist/src/shapes/Text/Text.d.ts +0 -0
  1068. package/dist/src/shapes/Text/Text.d.ts.map +0 -0
  1069. package/dist/src/shapes/Text/Text.min.mjs +0 -0
  1070. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  1071. package/dist/src/shapes/Text/Text.mjs +283 -283
  1072. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  1073. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1074. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1075. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -0
  1076. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -0
  1077. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -0
  1078. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -0
  1079. package/dist/src/shapes/Text/constants.d.ts +0 -0
  1080. package/dist/src/shapes/Text/constants.d.ts.map +0 -0
  1081. package/dist/src/shapes/Text/constants.min.mjs +0 -0
  1082. package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
  1083. package/dist/src/shapes/Text/constants.mjs +0 -0
  1084. package/dist/src/shapes/Text/constants.mjs.map +1 -1
  1085. package/dist/src/shapes/Textbox.d.ts +0 -0
  1086. package/dist/src/shapes/Textbox.d.ts.map +0 -0
  1087. package/dist/src/shapes/Textbox.min.mjs +0 -0
  1088. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  1089. package/dist/src/shapes/Textbox.mjs +147 -147
  1090. package/dist/src/shapes/Textbox.mjs.map +1 -1
  1091. package/dist/src/shapes/Triangle.d.ts +27 -2
  1092. package/dist/src/shapes/Triangle.d.ts.map +1 -1
  1093. package/dist/src/shapes/Triangle.min.mjs +1 -1
  1094. package/dist/src/shapes/Triangle.min.mjs.map +1 -1
  1095. package/dist/src/shapes/Triangle.mjs +72 -12
  1096. package/dist/src/shapes/Triangle.mjs.map +1 -1
  1097. package/dist/src/text/browserLines.d.ts +0 -0
  1098. package/dist/src/text/browserLines.d.ts.map +0 -0
  1099. package/dist/src/text/browserLines.min.mjs +0 -0
  1100. package/dist/src/text/browserLines.min.mjs.map +1 -1
  1101. package/dist/src/text/browserLines.mjs +20 -20
  1102. package/dist/src/text/browserLines.mjs.map +1 -1
  1103. package/dist/src/text/ellipsis.d.ts +0 -0
  1104. package/dist/src/text/ellipsis.d.ts.map +0 -0
  1105. package/dist/src/text/ellipsis.min.mjs +0 -0
  1106. package/dist/src/text/ellipsis.min.mjs.map +1 -1
  1107. package/dist/src/text/ellipsis.mjs +11 -11
  1108. package/dist/src/text/ellipsis.mjs.map +1 -1
  1109. package/dist/src/text/hitTest.d.ts +0 -0
  1110. package/dist/src/text/hitTest.d.ts.map +0 -0
  1111. package/dist/src/text/hitTest.min.mjs +0 -0
  1112. package/dist/src/text/hitTest.min.mjs.map +1 -1
  1113. package/dist/src/text/hitTest.mjs +19 -19
  1114. package/dist/src/text/hitTest.mjs.map +1 -1
  1115. package/dist/src/text/layout.d.ts +0 -0
  1116. package/dist/src/text/layout.d.ts.map +0 -0
  1117. package/dist/src/text/layout.min.mjs +0 -0
  1118. package/dist/src/text/layout.min.mjs.map +1 -1
  1119. package/dist/src/text/layout.mjs +33 -33
  1120. package/dist/src/text/layout.mjs.map +1 -1
  1121. package/dist/src/text/measure.d.ts +0 -0
  1122. package/dist/src/text/measure.d.ts.map +0 -0
  1123. package/dist/src/text/measure.min.mjs +0 -0
  1124. package/dist/src/text/measure.min.mjs.map +1 -1
  1125. package/dist/src/text/measure.mjs +20 -20
  1126. package/dist/src/text/measure.mjs.map +1 -1
  1127. package/dist/src/text/overlayEditor.d.ts +0 -0
  1128. package/dist/src/text/overlayEditor.d.ts.map +0 -0
  1129. package/dist/src/text/overlayEditor.min.mjs +0 -0
  1130. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  1131. package/dist/src/text/overlayEditor.mjs +33 -33
  1132. package/dist/src/text/overlayEditor.mjs.map +1 -1
  1133. package/dist/src/text/unicode.d.ts +0 -0
  1134. package/dist/src/text/unicode.d.ts.map +0 -0
  1135. package/dist/src/text/unicode.min.mjs +0 -0
  1136. package/dist/src/text/unicode.min.mjs.map +1 -1
  1137. package/dist/src/text/unicode.mjs +8 -8
  1138. package/dist/src/text/unicode.mjs.map +1 -1
  1139. package/dist/src/typedefs.d.ts +0 -0
  1140. package/dist/src/typedefs.d.ts.map +0 -0
  1141. package/dist/src/util/animation/AnimationBase.d.ts +0 -0
  1142. package/dist/src/util/animation/AnimationBase.d.ts.map +0 -0
  1143. package/dist/src/util/animation/AnimationBase.min.mjs +0 -0
  1144. package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -0
  1145. package/dist/src/util/animation/AnimationBase.mjs +0 -0
  1146. package/dist/src/util/animation/AnimationBase.mjs.map +0 -0
  1147. package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1148. package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1149. package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -0
  1150. package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -0
  1151. package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -0
  1152. package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -0
  1153. package/dist/src/util/animation/AnimationRegistry.d.ts +0 -0
  1154. package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1155. package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -0
  1156. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -0
  1157. package/dist/src/util/animation/AnimationRegistry.mjs +0 -0
  1158. package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -0
  1159. package/dist/src/util/animation/ArrayAnimation.d.ts +0 -0
  1160. package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1161. package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -0
  1162. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -0
  1163. package/dist/src/util/animation/ArrayAnimation.mjs +0 -0
  1164. package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -0
  1165. package/dist/src/util/animation/ColorAnimation.d.ts +0 -0
  1166. package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1167. package/dist/src/util/animation/ColorAnimation.min.mjs +0 -0
  1168. package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -0
  1169. package/dist/src/util/animation/ColorAnimation.mjs +0 -0
  1170. package/dist/src/util/animation/ColorAnimation.mjs.map +0 -0
  1171. package/dist/src/util/animation/ValueAnimation.d.ts +0 -0
  1172. package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1173. package/dist/src/util/animation/ValueAnimation.min.mjs +0 -0
  1174. package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -0
  1175. package/dist/src/util/animation/ValueAnimation.mjs +0 -0
  1176. package/dist/src/util/animation/ValueAnimation.mjs.map +0 -0
  1177. package/dist/src/util/animation/animate.d.ts +0 -0
  1178. package/dist/src/util/animation/animate.d.ts.map +0 -0
  1179. package/dist/src/util/animation/animate.min.mjs +0 -0
  1180. package/dist/src/util/animation/animate.min.mjs.map +0 -0
  1181. package/dist/src/util/animation/animate.mjs +0 -0
  1182. package/dist/src/util/animation/animate.mjs.map +0 -0
  1183. package/dist/src/util/animation/easing.d.ts +0 -0
  1184. package/dist/src/util/animation/easing.d.ts.map +0 -0
  1185. package/dist/src/util/animation/easing.min.mjs +0 -0
  1186. package/dist/src/util/animation/easing.min.mjs.map +0 -0
  1187. package/dist/src/util/animation/easing.mjs +0 -0
  1188. package/dist/src/util/animation/easing.mjs.map +0 -0
  1189. package/dist/src/util/animation/index.d.ts +0 -0
  1190. package/dist/src/util/animation/index.d.ts.map +0 -0
  1191. package/dist/src/util/animation/types.d.ts +0 -0
  1192. package/dist/src/util/animation/types.d.ts.map +0 -0
  1193. package/dist/src/util/applyMixins.d.ts +0 -0
  1194. package/dist/src/util/applyMixins.d.ts.map +0 -0
  1195. package/dist/src/util/applyMixins.min.mjs +0 -0
  1196. package/dist/src/util/applyMixins.min.mjs.map +0 -0
  1197. package/dist/src/util/applyMixins.mjs +0 -0
  1198. package/dist/src/util/applyMixins.mjs.map +0 -0
  1199. package/dist/src/util/dom_event.d.ts +0 -0
  1200. package/dist/src/util/dom_event.d.ts.map +0 -0
  1201. package/dist/src/util/dom_event.min.mjs +0 -0
  1202. package/dist/src/util/dom_event.min.mjs.map +0 -0
  1203. package/dist/src/util/dom_event.mjs +0 -0
  1204. package/dist/src/util/dom_event.mjs.map +0 -0
  1205. package/dist/src/util/dom_misc.d.ts +0 -0
  1206. package/dist/src/util/dom_misc.d.ts.map +0 -0
  1207. package/dist/src/util/dom_misc.min.mjs +0 -0
  1208. package/dist/src/util/dom_misc.min.mjs.map +0 -0
  1209. package/dist/src/util/dom_misc.mjs +0 -0
  1210. package/dist/src/util/dom_misc.mjs.map +0 -0
  1211. package/dist/src/util/index.d.ts +0 -0
  1212. package/dist/src/util/index.d.ts.map +0 -0
  1213. package/dist/src/util/index.min.mjs +0 -0
  1214. package/dist/src/util/index.min.mjs.map +0 -0
  1215. package/dist/src/util/index.mjs +0 -0
  1216. package/dist/src/util/index.mjs.map +0 -0
  1217. package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -0
  1218. package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  1219. package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -0
  1220. package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -0
  1221. package/dist/src/util/internals/applyCanvasTransform.mjs +0 -0
  1222. package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -0
  1223. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  1224. package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  1225. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -0
  1226. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -0
  1227. package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -0
  1228. package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -0
  1229. package/dist/src/util/internals/cloneStyles.d.ts +0 -0
  1230. package/dist/src/util/internals/cloneStyles.d.ts.map +0 -0
  1231. package/dist/src/util/internals/cloneStyles.min.mjs +0 -0
  1232. package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -0
  1233. package/dist/src/util/internals/cloneStyles.mjs +0 -0
  1234. package/dist/src/util/internals/cloneStyles.mjs.map +0 -0
  1235. package/dist/src/util/internals/console.d.ts +0 -0
  1236. package/dist/src/util/internals/console.d.ts.map +0 -0
  1237. package/dist/src/util/internals/console.min.mjs +0 -0
  1238. package/dist/src/util/internals/console.min.mjs.map +0 -0
  1239. package/dist/src/util/internals/console.mjs +0 -0
  1240. package/dist/src/util/internals/console.mjs.map +0 -0
  1241. package/dist/src/util/internals/dom_style.d.ts +0 -0
  1242. package/dist/src/util/internals/dom_style.d.ts.map +0 -0
  1243. package/dist/src/util/internals/dom_style.min.mjs +0 -0
  1244. package/dist/src/util/internals/dom_style.min.mjs.map +0 -0
  1245. package/dist/src/util/internals/dom_style.mjs +0 -0
  1246. package/dist/src/util/internals/dom_style.mjs.map +0 -0
  1247. package/dist/src/util/internals/findRight.d.ts +0 -0
  1248. package/dist/src/util/internals/findRight.d.ts.map +0 -0
  1249. package/dist/src/util/internals/findRight.min.mjs +0 -0
  1250. package/dist/src/util/internals/findRight.min.mjs.map +0 -0
  1251. package/dist/src/util/internals/findRight.mjs +0 -0
  1252. package/dist/src/util/internals/findRight.mjs.map +0 -0
  1253. package/dist/src/util/internals/getRandomInt.d.ts +0 -0
  1254. package/dist/src/util/internals/getRandomInt.d.ts.map +0 -0
  1255. package/dist/src/util/internals/getRandomInt.min.mjs +0 -0
  1256. package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -0
  1257. package/dist/src/util/internals/getRandomInt.mjs +0 -0
  1258. package/dist/src/util/internals/getRandomInt.mjs.map +0 -0
  1259. package/dist/src/util/internals/ifNaN.d.ts +0 -0
  1260. package/dist/src/util/internals/ifNaN.d.ts.map +0 -0
  1261. package/dist/src/util/internals/ifNaN.min.mjs +0 -0
  1262. package/dist/src/util/internals/ifNaN.min.mjs.map +0 -0
  1263. package/dist/src/util/internals/ifNaN.mjs +0 -0
  1264. package/dist/src/util/internals/ifNaN.mjs.map +0 -0
  1265. package/dist/src/util/internals/removeFromArray.d.ts +0 -0
  1266. package/dist/src/util/internals/removeFromArray.d.ts.map +0 -0
  1267. package/dist/src/util/internals/removeFromArray.min.mjs +0 -0
  1268. package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -0
  1269. package/dist/src/util/internals/removeFromArray.mjs +0 -0
  1270. package/dist/src/util/internals/removeFromArray.mjs.map +0 -0
  1271. package/dist/src/util/internals/uid.d.ts +0 -0
  1272. package/dist/src/util/internals/uid.d.ts.map +0 -0
  1273. package/dist/src/util/internals/uid.min.mjs +0 -0
  1274. package/dist/src/util/internals/uid.min.mjs.map +0 -0
  1275. package/dist/src/util/internals/uid.mjs +0 -0
  1276. package/dist/src/util/internals/uid.mjs.map +0 -0
  1277. package/dist/src/util/lang_string.d.ts +0 -0
  1278. package/dist/src/util/lang_string.d.ts.map +0 -0
  1279. package/dist/src/util/lang_string.min.mjs +0 -0
  1280. package/dist/src/util/lang_string.min.mjs.map +0 -0
  1281. package/dist/src/util/lang_string.mjs +0 -0
  1282. package/dist/src/util/lang_string.mjs.map +0 -0
  1283. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  1284. package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  1285. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -0
  1286. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -0
  1287. package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -0
  1288. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -0
  1289. package/dist/src/util/misc/capValue.d.ts +0 -0
  1290. package/dist/src/util/misc/capValue.d.ts.map +0 -0
  1291. package/dist/src/util/misc/capValue.min.mjs +0 -0
  1292. package/dist/src/util/misc/capValue.min.mjs.map +0 -0
  1293. package/dist/src/util/misc/capValue.mjs +0 -0
  1294. package/dist/src/util/misc/capValue.mjs.map +0 -0
  1295. package/dist/src/util/misc/cornerRadius.d.ts +70 -0
  1296. package/dist/src/util/misc/cornerRadius.d.ts.map +1 -0
  1297. package/dist/src/util/misc/cornerRadius.min.mjs +2 -0
  1298. package/dist/src/util/misc/cornerRadius.min.mjs.map +1 -0
  1299. package/dist/src/util/misc/cornerRadius.mjs +181 -0
  1300. package/dist/src/util/misc/cornerRadius.mjs.map +1 -0
  1301. package/dist/src/util/misc/cos.d.ts +0 -0
  1302. package/dist/src/util/misc/cos.d.ts.map +0 -0
  1303. package/dist/src/util/misc/cos.min.mjs +0 -0
  1304. package/dist/src/util/misc/cos.min.mjs.map +0 -0
  1305. package/dist/src/util/misc/cos.mjs +0 -0
  1306. package/dist/src/util/misc/cos.mjs.map +0 -0
  1307. package/dist/src/util/misc/dom.d.ts +0 -0
  1308. package/dist/src/util/misc/dom.d.ts.map +0 -0
  1309. package/dist/src/util/misc/dom.min.mjs +0 -0
  1310. package/dist/src/util/misc/dom.min.mjs.map +0 -0
  1311. package/dist/src/util/misc/dom.mjs +0 -0
  1312. package/dist/src/util/misc/dom.mjs.map +0 -0
  1313. package/dist/src/util/misc/findScaleTo.d.ts +0 -0
  1314. package/dist/src/util/misc/findScaleTo.d.ts.map +0 -0
  1315. package/dist/src/util/misc/findScaleTo.min.mjs +0 -0
  1316. package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -0
  1317. package/dist/src/util/misc/findScaleTo.mjs +0 -0
  1318. package/dist/src/util/misc/findScaleTo.mjs.map +0 -0
  1319. package/dist/src/util/misc/groupSVGElements.d.ts +0 -0
  1320. package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -0
  1321. package/dist/src/util/misc/groupSVGElements.min.mjs +0 -0
  1322. package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -0
  1323. package/dist/src/util/misc/groupSVGElements.mjs +0 -0
  1324. package/dist/src/util/misc/groupSVGElements.mjs.map +0 -0
  1325. package/dist/src/util/misc/isTransparent.d.ts +0 -0
  1326. package/dist/src/util/misc/isTransparent.d.ts.map +0 -0
  1327. package/dist/src/util/misc/isTransparent.min.mjs +0 -0
  1328. package/dist/src/util/misc/isTransparent.min.mjs.map +0 -0
  1329. package/dist/src/util/misc/isTransparent.mjs +0 -0
  1330. package/dist/src/util/misc/isTransparent.mjs.map +0 -0
  1331. package/dist/src/util/misc/matrix.d.ts +0 -0
  1332. package/dist/src/util/misc/matrix.d.ts.map +0 -0
  1333. package/dist/src/util/misc/matrix.min.mjs +0 -0
  1334. package/dist/src/util/misc/matrix.min.mjs.map +0 -0
  1335. package/dist/src/util/misc/matrix.mjs +0 -0
  1336. package/dist/src/util/misc/matrix.mjs.map +0 -0
  1337. package/dist/src/util/misc/mergeClipPaths.d.ts +0 -0
  1338. package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  1339. package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -0
  1340. package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -0
  1341. package/dist/src/util/misc/mergeClipPaths.mjs +0 -0
  1342. package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -0
  1343. package/dist/src/util/misc/objectEnlive.d.ts +0 -0
  1344. package/dist/src/util/misc/objectEnlive.d.ts.map +0 -0
  1345. package/dist/src/util/misc/objectEnlive.min.mjs +0 -0
  1346. package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -0
  1347. package/dist/src/util/misc/objectEnlive.mjs +0 -0
  1348. package/dist/src/util/misc/objectEnlive.mjs.map +0 -0
  1349. package/dist/src/util/misc/objectTransforms.d.ts +0 -0
  1350. package/dist/src/util/misc/objectTransforms.d.ts.map +0 -0
  1351. package/dist/src/util/misc/objectTransforms.min.mjs +0 -0
  1352. package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -0
  1353. package/dist/src/util/misc/objectTransforms.mjs +0 -0
  1354. package/dist/src/util/misc/objectTransforms.mjs.map +0 -0
  1355. package/dist/src/util/misc/pick.d.ts +0 -0
  1356. package/dist/src/util/misc/pick.d.ts.map +0 -0
  1357. package/dist/src/util/misc/pick.min.mjs +0 -0
  1358. package/dist/src/util/misc/pick.min.mjs.map +0 -0
  1359. package/dist/src/util/misc/pick.mjs +0 -0
  1360. package/dist/src/util/misc/pick.mjs.map +0 -0
  1361. package/dist/src/util/misc/planeChange.d.ts +0 -0
  1362. package/dist/src/util/misc/planeChange.d.ts.map +0 -0
  1363. package/dist/src/util/misc/planeChange.min.mjs +0 -0
  1364. package/dist/src/util/misc/planeChange.min.mjs.map +0 -0
  1365. package/dist/src/util/misc/planeChange.mjs +0 -0
  1366. package/dist/src/util/misc/planeChange.mjs.map +0 -0
  1367. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  1368. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  1369. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -0
  1370. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -0
  1371. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -0
  1372. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -0
  1373. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  1374. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  1375. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -0
  1376. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -0
  1377. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -0
  1378. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -0
  1379. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  1380. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  1381. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -0
  1382. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -0
  1383. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -0
  1384. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -0
  1385. package/dist/src/util/misc/projectStroke/index.d.ts +0 -0
  1386. package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -0
  1387. package/dist/src/util/misc/projectStroke/index.min.mjs +0 -0
  1388. package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -0
  1389. package/dist/src/util/misc/projectStroke/index.mjs +0 -0
  1390. package/dist/src/util/misc/projectStroke/index.mjs.map +0 -0
  1391. package/dist/src/util/misc/projectStroke/types.d.ts +0 -0
  1392. package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -0
  1393. package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  1394. package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  1395. package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -0
  1396. package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -0
  1397. package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -0
  1398. package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -0
  1399. package/dist/src/util/misc/resolveOrigin.d.ts +0 -0
  1400. package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -0
  1401. package/dist/src/util/misc/resolveOrigin.min.mjs +0 -0
  1402. package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -0
  1403. package/dist/src/util/misc/resolveOrigin.mjs +0 -0
  1404. package/dist/src/util/misc/resolveOrigin.mjs.map +0 -0
  1405. package/dist/src/util/misc/sin.d.ts +0 -0
  1406. package/dist/src/util/misc/sin.d.ts.map +0 -0
  1407. package/dist/src/util/misc/sin.min.mjs +0 -0
  1408. package/dist/src/util/misc/sin.min.mjs.map +0 -0
  1409. package/dist/src/util/misc/sin.mjs +0 -0
  1410. package/dist/src/util/misc/sin.mjs.map +0 -0
  1411. package/dist/src/util/misc/svgExport.d.ts +0 -0
  1412. package/dist/src/util/misc/svgExport.d.ts.map +0 -0
  1413. package/dist/src/util/misc/svgExport.min.mjs +0 -0
  1414. package/dist/src/util/misc/svgExport.min.mjs.map +0 -0
  1415. package/dist/src/util/misc/svgExport.mjs +0 -0
  1416. package/dist/src/util/misc/svgExport.mjs.map +0 -0
  1417. package/dist/src/util/misc/svgParsing.d.ts +0 -0
  1418. package/dist/src/util/misc/svgParsing.d.ts.map +0 -0
  1419. package/dist/src/util/misc/svgParsing.min.mjs +0 -0
  1420. package/dist/src/util/misc/svgParsing.min.mjs.map +0 -0
  1421. package/dist/src/util/misc/svgParsing.mjs +0 -0
  1422. package/dist/src/util/misc/svgParsing.mjs.map +0 -0
  1423. package/dist/src/util/misc/textStyles.d.ts +0 -0
  1424. package/dist/src/util/misc/textStyles.d.ts.map +0 -0
  1425. package/dist/src/util/misc/textStyles.min.mjs +0 -0
  1426. package/dist/src/util/misc/textStyles.min.mjs.map +0 -0
  1427. package/dist/src/util/misc/textStyles.mjs +0 -0
  1428. package/dist/src/util/misc/textStyles.mjs.map +0 -0
  1429. package/dist/src/util/misc/toFixed.d.ts +0 -0
  1430. package/dist/src/util/misc/toFixed.d.ts.map +0 -0
  1431. package/dist/src/util/misc/toFixed.min.mjs +0 -0
  1432. package/dist/src/util/misc/toFixed.min.mjs.map +0 -0
  1433. package/dist/src/util/misc/toFixed.mjs +0 -0
  1434. package/dist/src/util/misc/toFixed.mjs.map +0 -0
  1435. package/dist/src/util/misc/vectors.d.ts +0 -0
  1436. package/dist/src/util/misc/vectors.d.ts.map +0 -0
  1437. package/dist/src/util/misc/vectors.min.mjs +0 -0
  1438. package/dist/src/util/misc/vectors.min.mjs.map +0 -0
  1439. package/dist/src/util/misc/vectors.mjs +0 -0
  1440. package/dist/src/util/misc/vectors.mjs.map +0 -0
  1441. package/dist/src/util/path/index.d.ts +0 -0
  1442. package/dist/src/util/path/index.d.ts.map +0 -0
  1443. package/dist/src/util/path/index.min.mjs +0 -0
  1444. package/dist/src/util/path/index.min.mjs.map +0 -0
  1445. package/dist/src/util/path/index.mjs +0 -0
  1446. package/dist/src/util/path/index.mjs.map +0 -0
  1447. package/dist/src/util/path/regex.d.ts +0 -0
  1448. package/dist/src/util/path/regex.d.ts.map +0 -0
  1449. package/dist/src/util/path/regex.min.mjs +0 -0
  1450. package/dist/src/util/path/regex.min.mjs.map +0 -0
  1451. package/dist/src/util/path/regex.mjs +0 -0
  1452. package/dist/src/util/path/regex.mjs.map +0 -0
  1453. package/dist/src/util/path/typechecks.d.ts +0 -0
  1454. package/dist/src/util/path/typechecks.d.ts.map +0 -0
  1455. package/dist/src/util/path/typedefs.d.ts +0 -0
  1456. package/dist/src/util/path/typedefs.d.ts.map +0 -0
  1457. package/dist/src/util/transform_matrix_removal.d.ts +0 -0
  1458. package/dist/src/util/transform_matrix_removal.d.ts.map +0 -0
  1459. package/dist/src/util/transform_matrix_removal.min.mjs +0 -0
  1460. package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -0
  1461. package/dist/src/util/transform_matrix_removal.mjs +0 -0
  1462. package/dist/src/util/transform_matrix_removal.mjs.map +0 -0
  1463. package/dist/src/util/typeAssertions.d.ts +0 -0
  1464. package/dist/src/util/typeAssertions.d.ts.map +0 -0
  1465. package/dist/src/util/typeAssertions.min.mjs +0 -0
  1466. package/dist/src/util/typeAssertions.min.mjs.map +0 -0
  1467. package/dist/src/util/typeAssertions.mjs +0 -0
  1468. package/dist/src/util/typeAssertions.mjs.map +0 -0
  1469. package/dist-extensions/aligning_guidelines/constant.mjs +0 -0
  1470. package/dist-extensions/aligning_guidelines/constant.mjs.map +0 -0
  1471. package/dist-extensions/aligning_guidelines/index.mjs +0 -0
  1472. package/dist-extensions/aligning_guidelines/index.mjs.map +0 -0
  1473. package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -0
  1474. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -0
  1475. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -0
  1476. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -0
  1477. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -0
  1478. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -0
  1479. package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -0
  1480. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -0
  1481. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -0
  1482. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -0
  1483. package/dist-extensions/data_updaters/gradient/index.mjs +0 -0
  1484. package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -0
  1485. package/dist-extensions/data_updaters/origins/index.mjs +0 -0
  1486. package/dist-extensions/data_updaters/origins/index.mjs.map +0 -0
  1487. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +0 -0
  1488. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  1489. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -0
  1490. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -0
  1491. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  1492. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  1493. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  1494. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  1495. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  1496. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  1497. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  1498. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  1499. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  1500. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  1501. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  1502. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  1503. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -0
  1504. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  1505. package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -0
  1506. package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -0
  1507. package/dist-extensions/extensions/index.d.ts +0 -0
  1508. package/dist-extensions/extensions/index.d.ts.map +0 -0
  1509. package/dist-extensions/fabric-extensions.min.js +0 -0
  1510. package/dist-extensions/fabric-extensions.min.js.map +0 -0
  1511. package/dist-extensions/fabric.d.ts +0 -0
  1512. package/dist-extensions/fabric.d.ts.map +0 -0
  1513. package/dist-extensions/index.d.ts +0 -0
  1514. package/dist-extensions/index.d.ts.map +0 -0
  1515. package/dist-extensions/index.mjs +0 -0
  1516. package/dist-extensions/index.mjs.map +0 -0
  1517. package/dist-extensions/src/ClassRegistry.d.ts +0 -0
  1518. package/dist-extensions/src/ClassRegistry.d.ts.map +0 -0
  1519. package/dist-extensions/src/Collection.d.ts +0 -0
  1520. package/dist-extensions/src/Collection.d.ts.map +0 -0
  1521. package/dist-extensions/src/CommonMethods.d.ts +0 -0
  1522. package/dist-extensions/src/CommonMethods.d.ts.map +0 -0
  1523. package/dist-extensions/src/EventTypeDefs.d.ts +0 -0
  1524. package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -0
  1525. package/dist-extensions/src/Intersection.d.ts +0 -0
  1526. package/dist-extensions/src/Intersection.d.ts.map +0 -0
  1527. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  1528. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  1529. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -0
  1530. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  1531. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  1532. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  1533. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  1534. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  1535. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  1536. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  1537. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  1538. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  1539. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  1540. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  1541. package/dist-extensions/src/LayoutManager/constants.d.ts +0 -0
  1542. package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -0
  1543. package/dist-extensions/src/LayoutManager/index.d.ts +0 -0
  1544. package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -0
  1545. package/dist-extensions/src/LayoutManager/types.d.ts +0 -0
  1546. package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -0
  1547. package/dist-extensions/src/Observable.d.ts +0 -0
  1548. package/dist-extensions/src/Observable.d.ts.map +0 -0
  1549. package/dist-extensions/src/Pattern/Pattern.d.ts +0 -0
  1550. package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -0
  1551. package/dist-extensions/src/Pattern/index.d.ts +0 -0
  1552. package/dist-extensions/src/Pattern/index.d.ts.map +0 -0
  1553. package/dist-extensions/src/Pattern/types.d.ts +0 -0
  1554. package/dist-extensions/src/Pattern/types.d.ts.map +0 -0
  1555. package/dist-extensions/src/Point.d.ts +0 -0
  1556. package/dist-extensions/src/Point.d.ts.map +0 -0
  1557. package/dist-extensions/src/Shadow.d.ts +0 -0
  1558. package/dist-extensions/src/Shadow.d.ts.map +0 -0
  1559. package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -0
  1560. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -0
  1561. package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -0
  1562. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -0
  1563. package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -0
  1564. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -0
  1565. package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -0
  1566. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -0
  1567. package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -0
  1568. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -0
  1569. package/dist-extensions/src/brushes/typedefs.d.ts +0 -0
  1570. package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -0
  1571. package/dist-extensions/src/cache.d.ts +0 -0
  1572. package/dist-extensions/src/cache.d.ts.map +0 -0
  1573. package/dist-extensions/src/canvas/Canvas.d.ts +0 -0
  1574. package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -0
  1575. package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -0
  1576. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -0
  1577. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  1578. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  1579. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  1580. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  1581. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -0
  1582. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -0
  1583. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -0
  1584. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -0
  1585. package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -0
  1586. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -0
  1587. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -0
  1588. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  1589. package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -0
  1590. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -0
  1591. package/dist-extensions/src/color/Color.d.ts +0 -0
  1592. package/dist-extensions/src/color/Color.d.ts.map +0 -0
  1593. package/dist-extensions/src/color/color_map.d.ts +0 -0
  1594. package/dist-extensions/src/color/color_map.d.ts.map +0 -0
  1595. package/dist-extensions/src/color/constants.d.ts +0 -0
  1596. package/dist-extensions/src/color/constants.d.ts.map +0 -0
  1597. package/dist-extensions/src/color/typedefs.d.ts +0 -0
  1598. package/dist-extensions/src/color/typedefs.d.ts.map +0 -0
  1599. package/dist-extensions/src/color/util.d.ts +0 -0
  1600. package/dist-extensions/src/color/util.d.ts.map +0 -0
  1601. package/dist-extensions/src/config.d.ts +0 -0
  1602. package/dist-extensions/src/config.d.ts.map +0 -0
  1603. package/dist-extensions/src/constants.d.ts +0 -0
  1604. package/dist-extensions/src/constants.d.ts.map +0 -0
  1605. package/dist-extensions/src/controls/Control.d.ts +0 -0
  1606. package/dist-extensions/src/controls/Control.d.ts.map +0 -0
  1607. package/dist-extensions/src/controls/changeHeight.d.ts +0 -0
  1608. package/dist-extensions/src/controls/changeHeight.d.ts.map +0 -0
  1609. package/dist-extensions/src/controls/changeWidth.d.ts +0 -0
  1610. package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -0
  1611. package/dist-extensions/src/controls/commonControls.d.ts +0 -0
  1612. package/dist-extensions/src/controls/commonControls.d.ts.map +0 -0
  1613. package/dist-extensions/src/controls/controlRendering.d.ts +0 -0
  1614. package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -0
  1615. package/dist-extensions/src/controls/drag.d.ts +0 -0
  1616. package/dist-extensions/src/controls/drag.d.ts.map +0 -0
  1617. package/dist-extensions/src/controls/fireEvent.d.ts +0 -0
  1618. package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -0
  1619. package/dist-extensions/src/controls/index.d.ts +0 -0
  1620. package/dist-extensions/src/controls/index.d.ts.map +0 -0
  1621. package/dist-extensions/src/controls/pathControl.d.ts +0 -0
  1622. package/dist-extensions/src/controls/pathControl.d.ts.map +0 -0
  1623. package/dist-extensions/src/controls/polyControl.d.ts +0 -0
  1624. package/dist-extensions/src/controls/polyControl.d.ts.map +0 -0
  1625. package/dist-extensions/src/controls/rotate.d.ts +0 -0
  1626. package/dist-extensions/src/controls/rotate.d.ts.map +0 -0
  1627. package/dist-extensions/src/controls/scale.d.ts +0 -0
  1628. package/dist-extensions/src/controls/scale.d.ts.map +0 -0
  1629. package/dist-extensions/src/controls/scaleSkew.d.ts +0 -0
  1630. package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -0
  1631. package/dist-extensions/src/controls/skew.d.ts +0 -0
  1632. package/dist-extensions/src/controls/skew.d.ts.map +0 -0
  1633. package/dist-extensions/src/controls/util.d.ts +0 -0
  1634. package/dist-extensions/src/controls/util.d.ts.map +0 -0
  1635. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -0
  1636. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  1637. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  1638. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  1639. package/dist-extensions/src/env/browser.d.ts +0 -0
  1640. package/dist-extensions/src/env/browser.d.ts.map +0 -0
  1641. package/dist-extensions/src/env/index.d.ts +0 -0
  1642. package/dist-extensions/src/env/index.d.ts.map +0 -0
  1643. package/dist-extensions/src/env/types.d.ts +0 -0
  1644. package/dist-extensions/src/env/types.d.ts.map +0 -0
  1645. package/dist-extensions/src/filters/BaseFilter.d.ts +0 -0
  1646. package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -0
  1647. package/dist-extensions/src/filters/BlendColor.d.ts +0 -0
  1648. package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -0
  1649. package/dist-extensions/src/filters/BlendImage.d.ts +0 -0
  1650. package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -0
  1651. package/dist-extensions/src/filters/Blur.d.ts +0 -0
  1652. package/dist-extensions/src/filters/Blur.d.ts.map +0 -0
  1653. package/dist-extensions/src/filters/Brightness.d.ts +0 -0
  1654. package/dist-extensions/src/filters/Brightness.d.ts.map +0 -0
  1655. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  1656. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  1657. package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -0
  1658. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -0
  1659. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -0
  1660. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  1661. package/dist-extensions/src/filters/Composed.d.ts +0 -0
  1662. package/dist-extensions/src/filters/Composed.d.ts.map +0 -0
  1663. package/dist-extensions/src/filters/Contrast.d.ts +0 -0
  1664. package/dist-extensions/src/filters/Contrast.d.ts.map +0 -0
  1665. package/dist-extensions/src/filters/Convolute.d.ts +0 -0
  1666. package/dist-extensions/src/filters/Convolute.d.ts.map +0 -0
  1667. package/dist-extensions/src/filters/FilterBackend.d.ts +0 -0
  1668. package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -0
  1669. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -0
  1670. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  1671. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  1672. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  1673. package/dist-extensions/src/filters/Gamma.d.ts +0 -0
  1674. package/dist-extensions/src/filters/Gamma.d.ts.map +0 -0
  1675. package/dist-extensions/src/filters/Grayscale.d.ts +0 -0
  1676. package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -0
  1677. package/dist-extensions/src/filters/HueRotation.d.ts +0 -0
  1678. package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -0
  1679. package/dist-extensions/src/filters/Invert.d.ts +0 -0
  1680. package/dist-extensions/src/filters/Invert.d.ts.map +0 -0
  1681. package/dist-extensions/src/filters/Noise.d.ts +0 -0
  1682. package/dist-extensions/src/filters/Noise.d.ts.map +0 -0
  1683. package/dist-extensions/src/filters/Pixelate.d.ts +0 -0
  1684. package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -0
  1685. package/dist-extensions/src/filters/RemoveColor.d.ts +0 -0
  1686. package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -0
  1687. package/dist-extensions/src/filters/Resize.d.ts +0 -0
  1688. package/dist-extensions/src/filters/Resize.d.ts.map +0 -0
  1689. package/dist-extensions/src/filters/Saturation.d.ts +0 -0
  1690. package/dist-extensions/src/filters/Saturation.d.ts.map +0 -0
  1691. package/dist-extensions/src/filters/Vibrance.d.ts +0 -0
  1692. package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -0
  1693. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -0
  1694. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  1695. package/dist-extensions/src/filters/filters.d.ts +0 -0
  1696. package/dist-extensions/src/filters/filters.d.ts.map +0 -0
  1697. package/dist-extensions/src/filters/index.d.ts +0 -0
  1698. package/dist-extensions/src/filters/index.d.ts.map +0 -0
  1699. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -0
  1700. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -0
  1701. package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -0
  1702. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -0
  1703. package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -0
  1704. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -0
  1705. package/dist-extensions/src/filters/shaders/blur.d.ts +0 -0
  1706. package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -0
  1707. package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -0
  1708. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -0
  1709. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -0
  1710. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  1711. package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -0
  1712. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -0
  1713. package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -0
  1714. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -0
  1715. package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -0
  1716. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -0
  1717. package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -0
  1718. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -0
  1719. package/dist-extensions/src/filters/shaders/invert.d.ts +0 -0
  1720. package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -0
  1721. package/dist-extensions/src/filters/shaders/noise.d.ts +0 -0
  1722. package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -0
  1723. package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -0
  1724. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -0
  1725. package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -0
  1726. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -0
  1727. package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -0
  1728. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -0
  1729. package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -0
  1730. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -0
  1731. package/dist-extensions/src/filters/typedefs.d.ts +0 -0
  1732. package/dist-extensions/src/filters/typedefs.d.ts.map +0 -0
  1733. package/dist-extensions/src/filters/utils.d.ts +0 -0
  1734. package/dist-extensions/src/filters/utils.d.ts.map +0 -0
  1735. package/dist-extensions/src/gradient/Gradient.d.ts +0 -0
  1736. package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -0
  1737. package/dist-extensions/src/gradient/constants.d.ts +0 -0
  1738. package/dist-extensions/src/gradient/constants.d.ts.map +0 -0
  1739. package/dist-extensions/src/gradient/index.d.ts +0 -0
  1740. package/dist-extensions/src/gradient/index.d.ts.map +0 -0
  1741. package/dist-extensions/src/gradient/parser/misc.d.ts +0 -0
  1742. package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -0
  1743. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -0
  1744. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  1745. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -0
  1746. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -0
  1747. package/dist-extensions/src/gradient/typedefs.d.ts +0 -0
  1748. package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -0
  1749. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -0
  1750. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -0
  1751. package/dist-extensions/src/parser/attributes.d.ts +0 -0
  1752. package/dist-extensions/src/parser/attributes.d.ts.map +0 -0
  1753. package/dist-extensions/src/parser/constants.d.ts +0 -0
  1754. package/dist-extensions/src/parser/constants.d.ts.map +0 -0
  1755. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -0
  1756. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  1757. package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -0
  1758. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -0
  1759. package/dist-extensions/src/parser/elements_parser.d.ts +0 -0
  1760. package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -0
  1761. package/dist-extensions/src/parser/getCSSRules.d.ts +0 -0
  1762. package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -0
  1763. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -0
  1764. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  1765. package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -0
  1766. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -0
  1767. package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -0
  1768. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -0
  1769. package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -0
  1770. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -0
  1771. package/dist-extensions/src/parser/getTagName.d.ts +0 -0
  1772. package/dist-extensions/src/parser/getTagName.d.ts.map +0 -0
  1773. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -0
  1774. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  1775. package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -0
  1776. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -0
  1777. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -0
  1778. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -0
  1779. package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -0
  1780. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -0
  1781. package/dist-extensions/src/parser/normalizeValue.d.ts +0 -0
  1782. package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -0
  1783. package/dist-extensions/src/parser/parseAttributes.d.ts +0 -0
  1784. package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -0
  1785. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -0
  1786. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -0
  1787. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -0
  1788. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -0
  1789. package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -0
  1790. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -0
  1791. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -0
  1792. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -0
  1793. package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -0
  1794. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -0
  1795. package/dist-extensions/src/parser/parseStyleString.d.ts +0 -0
  1796. package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -0
  1797. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -0
  1798. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -0
  1799. package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -0
  1800. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -0
  1801. package/dist-extensions/src/parser/percent.d.ts +0 -0
  1802. package/dist-extensions/src/parser/percent.d.ts.map +0 -0
  1803. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  1804. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  1805. package/dist-extensions/src/parser/selectorMatches.d.ts +0 -0
  1806. package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -0
  1807. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -0
  1808. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  1809. package/dist-extensions/src/parser/typedefs.d.ts +0 -0
  1810. package/dist-extensions/src/parser/typedefs.d.ts.map +0 -0
  1811. package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -0
  1812. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -0
  1813. package/dist-extensions/src/shapes/Circle.d.ts +0 -0
  1814. package/dist-extensions/src/shapes/Circle.d.ts.map +0 -0
  1815. package/dist-extensions/src/shapes/CustomLine.d.ts +10 -0
  1816. package/dist-extensions/src/shapes/CustomLine.d.ts.map +1 -0
  1817. package/dist-extensions/src/shapes/Ellipse.d.ts +0 -0
  1818. package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -0
  1819. package/dist-extensions/src/shapes/Group.d.ts +0 -0
  1820. package/dist-extensions/src/shapes/Group.d.ts.map +0 -0
  1821. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1822. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1823. package/dist-extensions/src/shapes/IText/IText.d.ts +0 -0
  1824. package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -0
  1825. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1826. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
  1827. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1828. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1829. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1830. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1831. package/dist-extensions/src/shapes/IText/constants.d.ts +0 -0
  1832. package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -0
  1833. package/dist-extensions/src/shapes/Image.d.ts +0 -0
  1834. package/dist-extensions/src/shapes/Image.d.ts.map +0 -0
  1835. package/dist-extensions/src/shapes/Line.d.ts +31 -86
  1836. package/dist-extensions/src/shapes/Line.d.ts.map +1 -1
  1837. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -0
  1838. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1839. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1840. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1841. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1842. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1843. package/dist-extensions/src/shapes/Object/Object.d.ts +0 -0
  1844. package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -0
  1845. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1846. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1847. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -0
  1848. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1849. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1850. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1851. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1852. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1853. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1854. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1855. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1856. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1857. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1858. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1859. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1860. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1861. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1862. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1863. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1864. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1865. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1866. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1867. package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -0
  1868. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -0
  1869. package/dist-extensions/src/shapes/Path.d.ts +0 -0
  1870. package/dist-extensions/src/shapes/Path.d.ts.map +0 -0
  1871. package/dist-extensions/src/shapes/Polygon.d.ts +0 -0
  1872. package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -0
  1873. package/dist-extensions/src/shapes/Polyline.d.ts +7 -0
  1874. package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -1
  1875. package/dist-extensions/src/shapes/Rect.d.ts +0 -0
  1876. package/dist-extensions/src/shapes/Rect.d.ts.map +0 -0
  1877. package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -0
  1878. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -0
  1879. package/dist-extensions/src/shapes/Text/Text.d.ts +0 -0
  1880. package/dist-extensions/src/shapes/Text/Text.d.ts.map +0 -0
  1881. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1882. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1883. package/dist-extensions/src/shapes/Text/constants.d.ts +0 -0
  1884. package/dist-extensions/src/shapes/Text/constants.d.ts.map +0 -0
  1885. package/dist-extensions/src/shapes/Textbox.d.ts +0 -0
  1886. package/dist-extensions/src/shapes/Textbox.d.ts.map +0 -0
  1887. package/dist-extensions/src/shapes/Triangle.d.ts +27 -2
  1888. package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -1
  1889. package/dist-extensions/src/text/browserLines.d.ts +0 -0
  1890. package/dist-extensions/src/text/browserLines.d.ts.map +0 -0
  1891. package/dist-extensions/src/text/ellipsis.d.ts +0 -0
  1892. package/dist-extensions/src/text/ellipsis.d.ts.map +0 -0
  1893. package/dist-extensions/src/text/hitTest.d.ts +0 -0
  1894. package/dist-extensions/src/text/hitTest.d.ts.map +0 -0
  1895. package/dist-extensions/src/text/layout.d.ts +0 -0
  1896. package/dist-extensions/src/text/layout.d.ts.map +0 -0
  1897. package/dist-extensions/src/text/measure.d.ts +0 -0
  1898. package/dist-extensions/src/text/measure.d.ts.map +0 -0
  1899. package/dist-extensions/src/text/overlayEditor.d.ts +0 -0
  1900. package/dist-extensions/src/text/overlayEditor.d.ts.map +0 -0
  1901. package/dist-extensions/src/text/unicode.d.ts +0 -0
  1902. package/dist-extensions/src/text/unicode.d.ts.map +0 -0
  1903. package/dist-extensions/src/typedefs.d.ts +0 -0
  1904. package/dist-extensions/src/typedefs.d.ts.map +0 -0
  1905. package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -0
  1906. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -0
  1907. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1908. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1909. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -0
  1910. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1911. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -0
  1912. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1913. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -0
  1914. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1915. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -0
  1916. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1917. package/dist-extensions/src/util/animation/animate.d.ts +0 -0
  1918. package/dist-extensions/src/util/animation/animate.d.ts.map +0 -0
  1919. package/dist-extensions/src/util/animation/easing.d.ts +0 -0
  1920. package/dist-extensions/src/util/animation/easing.d.ts.map +0 -0
  1921. package/dist-extensions/src/util/animation/index.d.ts +0 -0
  1922. package/dist-extensions/src/util/animation/index.d.ts.map +0 -0
  1923. package/dist-extensions/src/util/animation/types.d.ts +0 -0
  1924. package/dist-extensions/src/util/animation/types.d.ts.map +0 -0
  1925. package/dist-extensions/src/util/applyMixins.d.ts +0 -0
  1926. package/dist-extensions/src/util/applyMixins.d.ts.map +0 -0
  1927. package/dist-extensions/src/util/dom_event.d.ts +0 -0
  1928. package/dist-extensions/src/util/dom_event.d.ts.map +0 -0
  1929. package/dist-extensions/src/util/dom_misc.d.ts +0 -0
  1930. package/dist-extensions/src/util/dom_misc.d.ts.map +0 -0
  1931. package/dist-extensions/src/util/index.d.ts +0 -0
  1932. package/dist-extensions/src/util/index.d.ts.map +0 -0
  1933. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -0
  1934. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  1935. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  1936. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  1937. package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -0
  1938. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -0
  1939. package/dist-extensions/src/util/internals/console.d.ts +0 -0
  1940. package/dist-extensions/src/util/internals/console.d.ts.map +0 -0
  1941. package/dist-extensions/src/util/internals/dom_style.d.ts +0 -0
  1942. package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -0
  1943. package/dist-extensions/src/util/internals/findRight.d.ts +0 -0
  1944. package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -0
  1945. package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -0
  1946. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -0
  1947. package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -0
  1948. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -0
  1949. package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -0
  1950. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -0
  1951. package/dist-extensions/src/util/internals/uid.d.ts +0 -0
  1952. package/dist-extensions/src/util/internals/uid.d.ts.map +0 -0
  1953. package/dist-extensions/src/util/lang_string.d.ts +0 -0
  1954. package/dist-extensions/src/util/lang_string.d.ts.map +0 -0
  1955. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  1956. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  1957. package/dist-extensions/src/util/misc/capValue.d.ts +0 -0
  1958. package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -0
  1959. package/dist-extensions/src/util/misc/cornerRadius.d.ts +70 -0
  1960. package/dist-extensions/src/util/misc/cornerRadius.d.ts.map +1 -0
  1961. package/dist-extensions/src/util/misc/cos.d.ts +0 -0
  1962. package/dist-extensions/src/util/misc/cos.d.ts.map +0 -0
  1963. package/dist-extensions/src/util/misc/dom.d.ts +0 -0
  1964. package/dist-extensions/src/util/misc/dom.d.ts.map +0 -0
  1965. package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -0
  1966. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -0
  1967. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -0
  1968. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -0
  1969. package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -0
  1970. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -0
  1971. package/dist-extensions/src/util/misc/matrix.d.ts +0 -0
  1972. package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -0
  1973. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -0
  1974. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  1975. package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -0
  1976. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -0
  1977. package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -0
  1978. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -0
  1979. package/dist-extensions/src/util/misc/pick.d.ts +0 -0
  1980. package/dist-extensions/src/util/misc/pick.d.ts.map +0 -0
  1981. package/dist-extensions/src/util/misc/planeChange.d.ts +0 -0
  1982. package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -0
  1983. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  1984. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  1985. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  1986. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  1987. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  1988. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  1989. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -0
  1990. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -0
  1991. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -0
  1992. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -0
  1993. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  1994. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  1995. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -0
  1996. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -0
  1997. package/dist-extensions/src/util/misc/sin.d.ts +0 -0
  1998. package/dist-extensions/src/util/misc/sin.d.ts.map +0 -0
  1999. package/dist-extensions/src/util/misc/svgExport.d.ts +0 -0
  2000. package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -0
  2001. package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -0
  2002. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -0
  2003. package/dist-extensions/src/util/misc/textStyles.d.ts +0 -0
  2004. package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -0
  2005. package/dist-extensions/src/util/misc/toFixed.d.ts +0 -0
  2006. package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -0
  2007. package/dist-extensions/src/util/misc/vectors.d.ts +0 -0
  2008. package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -0
  2009. package/dist-extensions/src/util/path/index.d.ts +0 -0
  2010. package/dist-extensions/src/util/path/index.d.ts.map +0 -0
  2011. package/dist-extensions/src/util/path/regex.d.ts +0 -0
  2012. package/dist-extensions/src/util/path/regex.d.ts.map +0 -0
  2013. package/dist-extensions/src/util/path/typedefs.d.ts +0 -0
  2014. package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -0
  2015. package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -0
  2016. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -0
  2017. package/dist-extensions/src/util/typeAssertions.d.ts +0 -0
  2018. package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -0
  2019. package/docs/fabric-konva-gap-analysis.md +274 -0
  2020. package/docs/konva-text-behavior-spec.md +265 -0
  2021. package/docs/text-engine-design.md +698 -0
  2022. package/eslint.config.mjs +0 -0
  2023. package/examples/overlay-edit.html +416 -416
  2024. package/extensions/README.MD +0 -0
  2025. package/extensions/aligning_guidelines/README.MD +0 -0
  2026. package/extensions/aligning_guidelines/constant.ts +0 -0
  2027. package/extensions/aligning_guidelines/index.ts +0 -0
  2028. package/extensions/aligning_guidelines/typedefs.ts +0 -0
  2029. package/extensions/aligning_guidelines/util/basic.spec.ts +0 -0
  2030. package/extensions/aligning_guidelines/util/basic.ts +0 -0
  2031. package/extensions/aligning_guidelines/util/collect-line.ts +0 -0
  2032. package/extensions/aligning_guidelines/util/collect-point.ts +0 -0
  2033. package/extensions/aligning_guidelines/util/draw.ts +0 -0
  2034. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -0
  2035. package/extensions/data_updaters/README.md +0 -0
  2036. package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -0
  2037. package/extensions/data_updaters/gradient/index.spec.ts +0 -0
  2038. package/extensions/data_updaters/gradient/index.ts +0 -0
  2039. package/extensions/data_updaters/origins/README.md +0 -0
  2040. package/extensions/data_updaters/origins/index.spec.ts +0 -0
  2041. package/extensions/data_updaters/origins/index.ts +0 -0
  2042. package/extensions/index.ts +0 -0
  2043. package/fabric-test-editor.html +1111 -505
  2044. package/fabric-test2.html +513 -0
  2045. package/fabric.ts +182 -182
  2046. package/index.node.ts +0 -0
  2047. package/index.ts +0 -0
  2048. package/lib/aligning_guidelines.js +0 -0
  2049. package/lib/centering_guidelines.js +0 -0
  2050. package/lib/event.js +0 -0
  2051. package/package.json +164 -164
  2052. package/playwright.config.ts +0 -0
  2053. package/playwright.setup.ts +0 -0
  2054. package/publish-next.js +0 -0
  2055. package/publish.js +0 -0
  2056. package/rollup.config.mjs +0 -0
  2057. package/scripts/bench-text.js +591 -591
  2058. package/scripts/build.mjs +0 -0
  2059. package/scripts/buildLock.mjs +0 -0
  2060. package/scripts/buildReporter.mjs +0 -0
  2061. package/scripts/buildStats.mjs +0 -0
  2062. package/scripts/dirname.mjs +0 -0
  2063. package/scripts/git.mjs +0 -0
  2064. package/scripts/index.mjs +0 -0
  2065. package/scripts/sandbox.mjs +0 -0
  2066. package/src/ClassRegistry.spec.ts +0 -0
  2067. package/src/ClassRegistry.ts +0 -0
  2068. package/src/Collection.spec.ts +0 -0
  2069. package/src/Collection.ts +0 -0
  2070. package/src/CommonMethods.ts +0 -0
  2071. package/src/EventTypeDefs.ts +0 -0
  2072. package/src/Intersection.spec.ts +0 -0
  2073. package/src/Intersection.ts +0 -0
  2074. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
  2075. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
  2076. package/src/LayoutManager/LayoutManager.spec.ts +0 -0
  2077. package/src/LayoutManager/LayoutManager.ts +0 -0
  2078. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
  2079. package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
  2080. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
  2081. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
  2082. package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
  2083. package/src/LayoutManager/README.md +0 -0
  2084. package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
  2085. package/src/LayoutManager/constants.ts +0 -0
  2086. package/src/LayoutManager/index.ts +0 -0
  2087. package/src/LayoutManager/types.ts +0 -0
  2088. package/src/Observable.spec.ts +0 -0
  2089. package/src/Observable.ts +0 -0
  2090. package/src/Pattern/Pattern.spec.ts +0 -0
  2091. package/src/Pattern/Pattern.ts +0 -0
  2092. package/src/Pattern/index.ts +0 -0
  2093. package/src/Pattern/types.ts +0 -0
  2094. package/src/Point.spec.ts +0 -0
  2095. package/src/Point.ts +0 -0
  2096. package/src/Shadow.spec.ts +0 -0
  2097. package/src/Shadow.ts +0 -0
  2098. package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
  2099. package/src/brushes/BaseBrush.spec.ts +0 -0
  2100. package/src/brushes/BaseBrush.ts +0 -0
  2101. package/src/brushes/CircleBrush.test.ts +0 -0
  2102. package/src/brushes/CircleBrush.ts +0 -0
  2103. package/src/brushes/PatternBrush.ts +0 -0
  2104. package/src/brushes/PencilBrush.spec.ts +0 -0
  2105. package/src/brushes/PencilBrush.ts +0 -0
  2106. package/src/brushes/SprayBrush.ts +0 -0
  2107. package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
  2108. package/src/brushes/typedefs.ts +0 -0
  2109. package/src/cache.spec.ts +0 -0
  2110. package/src/cache.ts +0 -0
  2111. package/src/canvas/Canvas-dispose.spec.ts +0 -0
  2112. package/src/canvas/Canvas-events.spec.ts +0 -0
  2113. package/src/canvas/Canvas.spec.ts +0 -0
  2114. package/src/canvas/Canvas.ts +0 -0
  2115. package/src/canvas/CanvasOptions.ts +0 -0
  2116. package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
  2117. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
  2118. package/src/canvas/DOMManagers/util.spec.ts +0 -0
  2119. package/src/canvas/DOMManagers/util.ts +0 -0
  2120. package/src/canvas/SelectableCanvas.spec.ts +0 -0
  2121. package/src/canvas/SelectableCanvas.ts +0 -0
  2122. package/src/canvas/StaticCanvas.spec.ts +0 -0
  2123. package/src/canvas/StaticCanvas.ts +0 -0
  2124. package/src/canvas/StaticCanvasOptions.ts +0 -0
  2125. package/src/canvas/TextEditingManager.ts +0 -0
  2126. package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
  2127. package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
  2128. package/src/canvas/__tests__/eventData.test.ts +0 -0
  2129. package/src/canvas/canvas_gestures.mixin.ts +0 -0
  2130. package/src/color/Color.ts +0 -0
  2131. package/src/color/color.test.ts +0 -0
  2132. package/src/color/color_map.ts +0 -0
  2133. package/src/color/constants.ts +0 -0
  2134. package/src/color/typedefs.ts +0 -0
  2135. package/src/color/util.ts +0 -0
  2136. package/src/config.ts +0 -0
  2137. package/src/constants.ts +0 -0
  2138. package/src/controls/Control-cursor.spec.ts +0 -0
  2139. package/src/controls/Control-handlers.spec.ts +0 -0
  2140. package/src/controls/Control.spec.ts +0 -0
  2141. package/src/controls/Control.ts +0 -0
  2142. package/src/controls/changeHeight.ts +0 -0
  2143. package/src/controls/changeWidth.test.ts +0 -0
  2144. package/src/controls/changeWidth.ts +0 -0
  2145. package/src/controls/commonControls.ts +0 -0
  2146. package/src/controls/controlRendering.ts +0 -0
  2147. package/src/controls/drag.ts +0 -0
  2148. package/src/controls/fireEvent.ts +0 -0
  2149. package/src/controls/index.ts +0 -0
  2150. package/src/controls/pathControl.spec.ts +0 -0
  2151. package/src/controls/pathControl.ts +0 -0
  2152. package/src/controls/polyControl.spec.ts +0 -0
  2153. package/src/controls/polyControl.ts +0 -0
  2154. package/src/controls/rotate.ts +0 -0
  2155. package/src/controls/scale.test.ts +0 -0
  2156. package/src/controls/scale.ts +0 -0
  2157. package/src/controls/scaleSkew.ts +0 -0
  2158. package/src/controls/skew.ts +0 -0
  2159. package/src/controls/util.ts +0 -0
  2160. package/src/controls/wrapWithFireEvent.ts +0 -0
  2161. package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
  2162. package/src/controls/wrapWithFixedAnchor.ts +0 -0
  2163. package/src/env/browser.ts +0 -0
  2164. package/src/env/env.spec.ts +0 -0
  2165. package/src/env/index.ts +0 -0
  2166. package/src/env/node.ts +0 -0
  2167. package/src/env/types.ts +0 -0
  2168. package/src/filters/BaseFilter.spec.ts +0 -0
  2169. package/src/filters/BaseFilter.ts +0 -0
  2170. package/src/filters/BlendColor.ts +0 -0
  2171. package/src/filters/BlendImage.ts +0 -0
  2172. package/src/filters/Blur.ts +0 -0
  2173. package/src/filters/Boilerplate.ts +0 -0
  2174. package/src/filters/Brightness.ts +0 -0
  2175. package/src/filters/Canvas2dFilterBackend.ts +0 -0
  2176. package/src/filters/ColorMatrix.spec.ts +0 -0
  2177. package/src/filters/ColorMatrix.ts +0 -0
  2178. package/src/filters/ColorMatrixFilters.ts +0 -0
  2179. package/src/filters/Composed.ts +0 -0
  2180. package/src/filters/Contrast.ts +0 -0
  2181. package/src/filters/Convolute.ts +0 -0
  2182. package/src/filters/FilterBackend.ts +0 -0
  2183. package/src/filters/GLProbes/GLProbe.ts +0 -0
  2184. package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
  2185. package/src/filters/GLProbes/WebGLProbe.ts +0 -0
  2186. package/src/filters/Gamma.ts +0 -0
  2187. package/src/filters/Grayscale.ts +0 -0
  2188. package/src/filters/HueRotation.ts +0 -0
  2189. package/src/filters/Invert.ts +0 -0
  2190. package/src/filters/Noise.ts +0 -0
  2191. package/src/filters/Pixelate.ts +0 -0
  2192. package/src/filters/RemoveColor.ts +0 -0
  2193. package/src/filters/Resize.ts +0 -0
  2194. package/src/filters/Saturation.ts +0 -0
  2195. package/src/filters/Vibrance.ts +0 -0
  2196. package/src/filters/WebGLFilterBackend.spec.ts +0 -0
  2197. package/src/filters/WebGLFilterBackend.ts +0 -0
  2198. package/src/filters/filters.ts +0 -0
  2199. package/src/filters/index.ts +0 -0
  2200. package/src/filters/shaders/baseFilter.ts +0 -0
  2201. package/src/filters/shaders/blendColor.ts +0 -0
  2202. package/src/filters/shaders/blendImage.ts +0 -0
  2203. package/src/filters/shaders/blur.ts +0 -0
  2204. package/src/filters/shaders/brightness.ts +0 -0
  2205. package/src/filters/shaders/colorMatrix.ts +0 -0
  2206. package/src/filters/shaders/constrast.ts +0 -0
  2207. package/src/filters/shaders/convolute.ts +0 -0
  2208. package/src/filters/shaders/gamma.ts +0 -0
  2209. package/src/filters/shaders/grayscale.ts +0 -0
  2210. package/src/filters/shaders/invert.ts +0 -0
  2211. package/src/filters/shaders/noise.ts +0 -0
  2212. package/src/filters/shaders/pixelate.ts +0 -0
  2213. package/src/filters/shaders/removeColor.ts +0 -0
  2214. package/src/filters/shaders/saturation.ts +0 -0
  2215. package/src/filters/shaders/vibrance.ts +0 -0
  2216. package/src/filters/typedefs.ts +0 -0
  2217. package/src/filters/utils.ts +0 -0
  2218. package/src/gradient/Gradient.spec.ts +0 -0
  2219. package/src/gradient/Gradient.ts +0 -0
  2220. package/src/gradient/constants.ts +0 -0
  2221. package/src/gradient/index.ts +0 -0
  2222. package/src/gradient/parser/misc.ts +0 -0
  2223. package/src/gradient/parser/parseColorStops.ts +0 -0
  2224. package/src/gradient/parser/parseCoords.ts +0 -0
  2225. package/src/gradient/typedefs.ts +0 -0
  2226. package/src/mixins/eraser_brush.mixin.ts +0 -0
  2227. package/src/parkinglot/canvas_animation.mixin.ts +0 -0
  2228. package/src/parkinglot/straighten.ts +0 -0
  2229. package/src/parser/applyViewboxTransform.spec.ts +0 -0
  2230. package/src/parser/applyViewboxTransform.ts +0 -0
  2231. package/src/parser/attributes.ts +0 -0
  2232. package/src/parser/constants.spec.ts +0 -0
  2233. package/src/parser/constants.ts +0 -0
  2234. package/src/parser/doesSomeParentMatch.ts +0 -0
  2235. package/src/parser/elementMatchesRule.ts +0 -0
  2236. package/src/parser/elements_parser.ts +0 -0
  2237. package/src/parser/getCSSRules.spec.ts +0 -0
  2238. package/src/parser/getCSSRules.ts +0 -0
  2239. package/src/parser/getGlobalStylesForElement.ts +0 -0
  2240. package/src/parser/getGradientDefs.ts +0 -0
  2241. package/src/parser/getMultipleNodes.ts +0 -0
  2242. package/src/parser/getSvgRegex.ts +0 -0
  2243. package/src/parser/getTagName.ts +0 -0
  2244. package/src/parser/hasInvalidAncestor.ts +0 -0
  2245. package/src/parser/loadSVGFromString.test.ts +0 -0
  2246. package/src/parser/loadSVGFromString.ts +0 -0
  2247. package/src/parser/loadSVGFromURL.ts +0 -0
  2248. package/src/parser/normalizeAttr.ts +0 -0
  2249. package/src/parser/normalizeValue.ts +0 -0
  2250. package/src/parser/parseAttributes.ts +0 -0
  2251. package/src/parser/parseFontDeclaration.ts +0 -0
  2252. package/src/parser/parsePointsAttribute.ts +0 -0
  2253. package/src/parser/parseSVGDocument.ts +0 -0
  2254. package/src/parser/parseStyleAttribute.ts +0 -0
  2255. package/src/parser/parseStyleObject.ts +0 -0
  2256. package/src/parser/parseStyleString.ts +0 -0
  2257. package/src/parser/parseTransformAttribute.ts +0 -0
  2258. package/src/parser/parseUseDirectives.test.ts +0 -0
  2259. package/src/parser/parseUseDirectives.ts +0 -0
  2260. package/src/parser/parser.spec.ts +0 -0
  2261. package/src/parser/percent.ts +0 -0
  2262. package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
  2263. package/src/parser/selectorMatches.ts +0 -0
  2264. package/src/parser/setStrokeFillOpacity.ts +0 -0
  2265. package/src/parser/typedefs.ts +0 -0
  2266. package/src/shapes/ActiveSelection.spec.ts +0 -0
  2267. package/src/shapes/ActiveSelection.ts +0 -0
  2268. package/src/shapes/Circle.spec.ts +0 -0
  2269. package/src/shapes/Circle.ts +0 -0
  2270. package/src/shapes/Ellipse.spec.ts +0 -0
  2271. package/src/shapes/Ellipse.ts +0 -0
  2272. package/src/shapes/Group.spec.ts +0 -0
  2273. package/src/shapes/Group.ts +0 -0
  2274. package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
  2275. package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
  2276. package/src/shapes/IText/IText.test.ts +0 -0
  2277. package/src/shapes/IText/IText.ts +846 -846
  2278. package/src/shapes/IText/ITextBehavior.test.ts +0 -0
  2279. package/src/shapes/IText/ITextBehavior.ts +1176 -1176
  2280. package/src/shapes/IText/ITextClickBehavior.ts +254 -254
  2281. package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
  2282. package/src/shapes/IText/ITextKeyBehavior.ts +0 -0
  2283. package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
  2284. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
  2285. package/src/shapes/IText/constants.ts +0 -0
  2286. package/src/shapes/Image-filters.spec.ts +0 -0
  2287. package/src/shapes/Image.spec.ts +0 -0
  2288. package/src/shapes/Image.ts +0 -0
  2289. package/src/shapes/Line.spec.ts +0 -0
  2290. package/src/shapes/Line.ts +372 -158
  2291. package/src/shapes/Object/FabricObject.spec.ts +0 -0
  2292. package/src/shapes/Object/FabricObject.ts +0 -0
  2293. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
  2294. package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
  2295. package/src/shapes/Object/InteractiveObject.ts +0 -0
  2296. package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
  2297. package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
  2298. package/src/shapes/Object/Object.spec.ts +0 -0
  2299. package/src/shapes/Object/Object.ts +0 -0
  2300. package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
  2301. package/src/shapes/Object/ObjectGeometry.ts +0 -0
  2302. package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
  2303. package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
  2304. package/src/shapes/Object/StackedObject.spec.ts +0 -0
  2305. package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
  2306. package/src/shapes/Object/defaultValues.ts +0 -0
  2307. package/src/shapes/Object/types/BaseProps.ts +0 -0
  2308. package/src/shapes/Object/types/BorderProps.ts +0 -0
  2309. package/src/shapes/Object/types/ControlProps.ts +0 -0
  2310. package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
  2311. package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
  2312. package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
  2313. package/src/shapes/Object/types/ObjectProps.ts +0 -0
  2314. package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
  2315. package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
  2316. package/src/shapes/Object/types/index.ts +0 -0
  2317. package/src/shapes/Path.spec.ts +0 -0
  2318. package/src/shapes/Path.ts +0 -0
  2319. package/src/shapes/Polygon.spec.ts +0 -0
  2320. package/src/shapes/Polygon.ts +0 -0
  2321. package/src/shapes/Polyline.spec.ts +0 -0
  2322. package/src/shapes/Polyline.ts +70 -29
  2323. package/src/shapes/Rect.spec.ts +0 -0
  2324. package/src/shapes/Rect.ts +0 -0
  2325. package/src/shapes/Text/StyledText.spec.ts +0 -0
  2326. package/src/shapes/Text/StyledText.ts +0 -0
  2327. package/src/shapes/Text/Text.spec.ts +0 -0
  2328. package/src/shapes/Text/Text.ts +2226 -2226
  2329. package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
  2330. package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
  2331. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
  2332. package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
  2333. package/src/shapes/Text/constants.ts +134 -134
  2334. package/src/shapes/Textbox.spec.ts +0 -0
  2335. package/src/shapes/Textbox.ts +788 -788
  2336. package/src/shapes/Triangle.spec.ts +76 -0
  2337. package/src/shapes/Triangle.ts +85 -15
  2338. package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
  2339. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
  2340. package/src/text/browserLines.ts +233 -233
  2341. package/src/text/ellipsis.ts +516 -516
  2342. package/src/text/hitTest.ts +623 -623
  2343. package/src/text/layout.ts +586 -586
  2344. package/src/text/measure.ts +475 -475
  2345. package/src/text/overlayEditor.ts +1035 -1035
  2346. package/src/text/unicode.ts +454 -454
  2347. package/src/typedefs.ts +0 -0
  2348. package/src/util/__snapshots__/index.spec.ts.snap +0 -0
  2349. package/src/util/animation/AnimationBase.ts +0 -0
  2350. package/src/util/animation/AnimationFrameProvider.ts +0 -0
  2351. package/src/util/animation/AnimationRegistry.ts +0 -0
  2352. package/src/util/animation/ArrayAnimation.ts +0 -0
  2353. package/src/util/animation/ColorAnimation.ts +0 -0
  2354. package/src/util/animation/ValueAnimation.ts +0 -0
  2355. package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
  2356. package/src/util/animation/animate.ts +0 -0
  2357. package/src/util/animation/animations.spec.ts +0 -0
  2358. package/src/util/animation/easing.ts +0 -0
  2359. package/src/util/animation/index.ts +0 -0
  2360. package/src/util/animation/types.ts +0 -0
  2361. package/src/util/applyMixins.ts +0 -0
  2362. package/src/util/dom_event.spec.ts +0 -0
  2363. package/src/util/dom_event.ts +0 -0
  2364. package/src/util/dom_misc.ts +0 -0
  2365. package/src/util/index.spec.ts +0 -0
  2366. package/src/util/index.ts +0 -0
  2367. package/src/util/internals/applyCanvasTransform.ts +0 -0
  2368. package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
  2369. package/src/util/internals/cleanupSvgAttribute.ts +0 -0
  2370. package/src/util/internals/cloneStyles.spec.ts +0 -0
  2371. package/src/util/internals/cloneStyles.ts +0 -0
  2372. package/src/util/internals/console.ts +0 -0
  2373. package/src/util/internals/dom_style.spec.ts +0 -0
  2374. package/src/util/internals/dom_style.ts +0 -0
  2375. package/src/util/internals/findRight.ts +0 -0
  2376. package/src/util/internals/getRandomInt.test.ts +0 -0
  2377. package/src/util/internals/getRandomInt.ts +0 -0
  2378. package/src/util/internals/ifNaN.ts +0 -0
  2379. package/src/util/internals/removeFromArray.spec.ts +0 -0
  2380. package/src/util/internals/removeFromArray.ts +0 -0
  2381. package/src/util/internals/uid.ts +0 -0
  2382. package/src/util/lang_string.spec.ts +0 -0
  2383. package/src/util/lang_string.ts +0 -0
  2384. package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
  2385. package/src/util/misc/boundingBoxFromPoints.ts +0 -0
  2386. package/src/util/misc/capValue.spec.ts +0 -0
  2387. package/src/util/misc/capValue.ts +0 -0
  2388. package/src/util/misc/cornerRadius.spec.ts +141 -0
  2389. package/src/util/misc/cornerRadius.ts +269 -0
  2390. package/src/util/misc/cos.spec.ts +0 -0
  2391. package/src/util/misc/cos.ts +0 -0
  2392. package/src/util/misc/dom.spec.ts +0 -0
  2393. package/src/util/misc/dom.ts +0 -0
  2394. package/src/util/misc/findScaleTo.spec.ts +0 -0
  2395. package/src/util/misc/findScaleTo.ts +0 -0
  2396. package/src/util/misc/groupSVGElements.spec.ts +0 -0
  2397. package/src/util/misc/groupSVGElements.ts +0 -0
  2398. package/src/util/misc/isTransparent.ts +0 -0
  2399. package/src/util/misc/matrix.spec.ts +0 -0
  2400. package/src/util/misc/matrix.ts +0 -0
  2401. package/src/util/misc/mergeClipPaths.spec.ts +0 -0
  2402. package/src/util/misc/mergeClipPaths.ts +0 -0
  2403. package/src/util/misc/objectEnlive.spec.ts +0 -0
  2404. package/src/util/misc/objectEnlive.ts +0 -0
  2405. package/src/util/misc/objectTransforms.spec.ts +0 -0
  2406. package/src/util/misc/objectTransforms.ts +0 -0
  2407. package/src/util/misc/pick.spec.ts +0 -0
  2408. package/src/util/misc/pick.ts +0 -0
  2409. package/src/util/misc/planeChange.spec.ts +0 -0
  2410. package/src/util/misc/planeChange.ts +0 -0
  2411. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
  2412. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
  2413. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
  2414. package/src/util/misc/projectStroke/index.ts +0 -0
  2415. package/src/util/misc/projectStroke/types.ts +0 -0
  2416. package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
  2417. package/src/util/misc/radiansDegreesConversion.ts +0 -0
  2418. package/src/util/misc/resolveOrigin.ts +0 -0
  2419. package/src/util/misc/sin.ts +0 -0
  2420. package/src/util/misc/svgExport.ts +0 -0
  2421. package/src/util/misc/svgParsing.spec.ts +0 -0
  2422. package/src/util/misc/svgParsing.ts +0 -0
  2423. package/src/util/misc/textStyles.ts +0 -0
  2424. package/src/util/misc/toFixed.spec.ts +0 -0
  2425. package/src/util/misc/toFixed.ts +0 -0
  2426. package/src/util/misc/vectors.spec.ts +0 -0
  2427. package/src/util/misc/vectors.ts +0 -0
  2428. package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
  2429. package/src/util/path/index.spec.ts +0 -0
  2430. package/src/util/path/index.ts +0 -0
  2431. package/src/util/path/regex.ts +0 -0
  2432. package/src/util/path/typechecks.ts +0 -0
  2433. package/src/util/path/typedefs.ts +0 -0
  2434. package/src/util/transform_matrix_removal.ts +0 -0
  2435. package/src/util/typeAssertions.spec.ts +0 -0
  2436. package/src/util/typeAssertions.ts +0 -0
  2437. package/tsconfig-extensions.json +0 -0
  2438. package/tsconfig.json +0 -0
  2439. package/tsconfig.spec.json +0 -0
  2440. package/typedoc.config.json +0 -0
  2441. package/vitest.config.ts +0 -0
  2442. package/vitest.d.ts +0 -0
  2443. package/vitest.env.d.ts +0 -0
  2444. package/vitest.extend.ts +0 -0
  2445. package/vitest.setup.ts +0 -0
  2446. package/debug/konva/CHANGELOG.md +0 -1474
  2447. package/debug/konva/LICENSE +0 -22
  2448. package/debug/konva/README.md +0 -205
  2449. package/debug/konva/gulpfile.mjs +0 -110
  2450. package/debug/konva/package.json +0 -139
  2451. package/debug/konva/release.sh +0 -65
  2452. package/debug/konva/resources/doc-includes/ContainerParams.txt +0 -6
  2453. package/debug/konva/resources/doc-includes/NodeParams.txt +0 -20
  2454. package/debug/konva/resources/doc-includes/ShapeParams.txt +0 -53
  2455. package/debug/konva/resources/jsdoc.conf.json +0 -28
  2456. package/debug/konva/rollup.config.mjs +0 -32
  2457. package/debug/konva/src/Animation.ts +0 -237
  2458. package/debug/konva/src/BezierFunctions.ts +0 -826
  2459. package/debug/konva/src/Canvas.ts +0 -193
  2460. package/debug/konva/src/Container.ts +0 -649
  2461. package/debug/konva/src/Context.ts +0 -1017
  2462. package/debug/konva/src/Core.ts +0 -5
  2463. package/debug/konva/src/DragAndDrop.ts +0 -173
  2464. package/debug/konva/src/Factory.ts +0 -246
  2465. package/debug/konva/src/FastLayer.ts +0 -29
  2466. package/debug/konva/src/Global.ts +0 -210
  2467. package/debug/konva/src/Group.ts +0 -31
  2468. package/debug/konva/src/Layer.ts +0 -546
  2469. package/debug/konva/src/Node.ts +0 -3477
  2470. package/debug/konva/src/PointerEvents.ts +0 -67
  2471. package/debug/konva/src/Shape.ts +0 -2081
  2472. package/debug/konva/src/Stage.ts +0 -1000
  2473. package/debug/konva/src/Tween.ts +0 -811
  2474. package/debug/konva/src/Util.ts +0 -1123
  2475. package/debug/konva/src/Validators.ts +0 -210
  2476. package/debug/konva/src/_CoreInternals.ts +0 -85
  2477. package/debug/konva/src/_FullInternals.ts +0 -171
  2478. package/debug/konva/src/canvas-backend.ts +0 -36
  2479. package/debug/konva/src/filters/Blur.ts +0 -388
  2480. package/debug/konva/src/filters/Brighten.ts +0 -48
  2481. package/debug/konva/src/filters/Brightness.ts +0 -30
  2482. package/debug/konva/src/filters/Contrast.ts +0 -75
  2483. package/debug/konva/src/filters/Emboss.ts +0 -207
  2484. package/debug/konva/src/filters/Enhance.ts +0 -154
  2485. package/debug/konva/src/filters/Grayscale.ts +0 -25
  2486. package/debug/konva/src/filters/HSL.ts +0 -108
  2487. package/debug/konva/src/filters/HSV.ts +0 -106
  2488. package/debug/konva/src/filters/Invert.ts +0 -23
  2489. package/debug/konva/src/filters/Kaleidoscope.ts +0 -274
  2490. package/debug/konva/src/filters/Mask.ts +0 -220
  2491. package/debug/konva/src/filters/Noise.ts +0 -44
  2492. package/debug/konva/src/filters/Pixelate.ts +0 -107
  2493. package/debug/konva/src/filters/Posterize.ts +0 -46
  2494. package/debug/konva/src/filters/RGB.ts +0 -82
  2495. package/debug/konva/src/filters/RGBA.ts +0 -103
  2496. package/debug/konva/src/filters/Sepia.ts +0 -27
  2497. package/debug/konva/src/filters/Solarize.ts +0 -29
  2498. package/debug/konva/src/filters/Threshold.ts +0 -44
  2499. package/debug/konva/src/index.ts +0 -3
  2500. package/debug/konva/src/shapes/Arc.ts +0 -176
  2501. package/debug/konva/src/shapes/Arrow.ts +0 -231
  2502. package/debug/konva/src/shapes/Circle.ts +0 -76
  2503. package/debug/konva/src/shapes/Ellipse.ts +0 -121
  2504. package/debug/konva/src/shapes/Image.ts +0 -319
  2505. package/debug/konva/src/shapes/Label.ts +0 -386
  2506. package/debug/konva/src/shapes/Line.ts +0 -364
  2507. package/debug/konva/src/shapes/Path.ts +0 -1013
  2508. package/debug/konva/src/shapes/Rect.ts +0 -79
  2509. package/debug/konva/src/shapes/RegularPolygon.ts +0 -167
  2510. package/debug/konva/src/shapes/Ring.ts +0 -94
  2511. package/debug/konva/src/shapes/Sprite.ts +0 -370
  2512. package/debug/konva/src/shapes/Star.ts +0 -125
  2513. package/debug/konva/src/shapes/Text.ts +0 -1065
  2514. package/debug/konva/src/shapes/TextPath.ts +0 -583
  2515. package/debug/konva/src/shapes/Transformer.ts +0 -1889
  2516. package/debug/konva/src/shapes/Wedge.ts +0 -129
  2517. package/debug/konva/src/skia-backend.ts +0 -35
  2518. package/debug/konva/src/types.ts +0 -84
  2519. package/debug/konva/tsconfig.json +0 -31
  2520. package/debug/konva/tsconfig.test.json +0 -7
  2521. package/dist/src/controls/changeHeight.min.mjs +0 -2
  2522. package/dist/src/controls/changeHeight.min.mjs.map +0 -1
  2523. package/dist/src/controls/changeHeight.mjs +0 -36
  2524. package/dist/src/controls/changeHeight.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"IText.mjs","sources":["../../../../src/shapes/IText/IText.ts"],"sourcesContent":["import { Canvas } from '../../canvas/Canvas';\nimport type { ITextEvents } from './ITextBehavior';\nimport { ITextClickBehavior } from './ITextClickBehavior';\nimport { hitTest, getCursorRect, getSelectionRects } from '../../text/hitTest';\nimport type { HitTestResult, CursorRect } from '../../text/hitTest';\nimport {\n ctrlKeysMapDown,\n ctrlKeysMapUp,\n keysMap,\n keysMapRtl,\n} from './constants';\nimport type { TClassProperties, TFiller, TOptions } from '../../typedefs';\nimport type { TPointerEvent } from '../../EventTypeDefs';\nimport { classRegistry } from '../../ClassRegistry';\nimport type { SerializedTextProps, TextProps } from '../Text/Text';\nimport {\n JUSTIFY,\n JUSTIFY_CENTER,\n JUSTIFY_LEFT,\n JUSTIFY_RIGHT,\n} from '../Text/constants';\nimport { CENTER, FILL, LEFT, RIGHT } from '../../constants';\nimport type { ObjectToCanvasElementOptions } from '../Object/Object';\nimport type { FabricObject } from '../Object/FabricObject';\nimport { createCanvasElementFor } from '../../util/misc/dom';\nimport { applyCanvasTransform } from '../../util/internals/applyCanvasTransform';\nimport { Point } from '../../Point';\nimport { invertTransform } from '../../util/misc/matrix';\n\nexport type CursorBoundaries = {\n left: number;\n top: number;\n leftOffset: number;\n topOffset: number;\n};\n\nexport type CursorRenderingData = {\n color: string;\n opacity: number;\n left: number;\n top: number;\n width: number;\n height: number;\n};\n\n// Declare IText protected properties to workaround TS\nconst protectedDefaultValues = {\n _selectionDirection: null,\n _reSpace: /\\s|\\r?\\n/,\n inCompositionMode: false,\n};\n\nexport const iTextDefaultValues: Partial<TClassProperties<IText>> = {\n selectionStart: 0,\n selectionEnd: 0,\n selectionColor: 'rgba(17,119,255,0.3)',\n isEditing: false,\n editable: true,\n editingBorderColor: 'rgba(102,153,255,0.25)',\n cursorWidth: 2,\n cursorColor: '',\n cursorDelay: 1000,\n cursorDuration: 600,\n caching: true,\n hiddenTextareaContainer: null,\n keysMap,\n keysMapRtl,\n ctrlKeysMapDown,\n ctrlKeysMapUp,\n ...protectedDefaultValues,\n};\n\n// @TODO this is not complete\ninterface UniqueITextProps {\n selectionStart: number;\n selectionEnd: number;\n}\n\nexport interface SerializedITextProps\n extends SerializedTextProps,\n UniqueITextProps {}\n\nexport interface ITextProps extends TextProps, UniqueITextProps {}\n\n/**\n * @fires changed\n * @fires selection:changed\n * @fires editing:entered\n * @fires editing:exited\n * @fires dragstart\n * @fires drag drag event firing on the drag source\n * @fires dragend\n * @fires copy\n * @fires cut\n * @fires paste\n *\n * #### Supported key combinations\n * ```\n * Move cursor: left, right, up, down\n * Select character: shift + left, shift + right\n * Select text vertically: shift + up, shift + down\n * Move cursor by word: alt + left, alt + right\n * Select words: shift + alt + left, shift + alt + right\n * Move cursor to line start/end: cmd + left, cmd + right or home, end\n * Select till start/end of line: cmd + shift + left, cmd + shift + right or shift + home, shift + end\n * Jump to start/end of text: cmd + up, cmd + down\n * Select till start/end of text: cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n * Delete character: backspace\n * Delete word: alt + backspace\n * Delete line: cmd + backspace\n * Forward delete: delete\n * Copy text: ctrl/cmd + c\n * Paste text: ctrl/cmd + v\n * Cut text: ctrl/cmd + x\n * Select entire text: ctrl/cmd + a\n * Quit editing tab or esc\n * ```\n *\n * #### Supported mouse/touch combination\n * ```\n * Position cursor: click/touch\n * Create selection: click/touch & drag\n * Create selection: click & shift + click\n * Select word: double click\n * Select line: triple click\n * ```\n */\nexport class IText<\n Props extends TOptions<ITextProps> = Partial<ITextProps>,\n SProps extends SerializedITextProps = SerializedITextProps,\n EventSpec extends ITextEvents = ITextEvents,\n >\n extends ITextClickBehavior<Props, SProps, EventSpec>\n implements UniqueITextProps\n{\n /**\n * Index where text selection starts (or where cursor is when there is no selection)\n * @type Number\n */\n declare selectionStart: number;\n\n /**\n * Index where text selection ends\n * @type Number\n */\n declare selectionEnd: number;\n\n declare compositionStart: number;\n\n declare compositionEnd: number;\n\n /**\n * Color of text selection\n * @type String\n */\n declare selectionColor: string;\n\n /**\n * Indicates whether text is in editing mode\n * @type Boolean\n */\n declare isEditing: boolean;\n\n /**\n * Indicates whether a text can be edited\n * @type Boolean\n */\n declare editable: boolean;\n\n /**\n * Border color of text object while it's in editing mode\n * @type String\n */\n declare editingBorderColor: string;\n\n /**\n * Width of cursor (in px)\n * @type Number\n */\n declare cursorWidth: number;\n\n /**\n * Color of text cursor color in editing mode.\n * if not set (default) will take color from the text.\n * if set to a color value that fabric can understand, it will\n * be used instead of the color of the text at the current position.\n * @type String\n */\n declare cursorColor: string;\n\n /**\n * Delay between cursor blink (in ms)\n * @type Number\n */\n declare cursorDelay: number;\n\n /**\n * Duration of cursor fade in (in ms)\n * @type Number\n */\n declare cursorDuration: number;\n\n declare compositionColor: string;\n\n /**\n * Indicates whether internal text char widths can be cached\n * @type Boolean\n */\n declare caching: boolean;\n\n static ownDefaults = iTextDefaultValues;\n\n static getDefaults(): Record<string, any> {\n return { ...super.getDefaults(), ...IText.ownDefaults };\n }\n\n static type = 'IText';\n\n get type() {\n const type = super.type;\n // backward compatibility\n return type === 'itext' ? 'i-text' : type;\n }\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n */\n constructor(text: string, options?: Props) {\n super(text, { ...IText.ownDefaults, ...options } as Props);\n this.initBehavior();\n }\n\n /**\n * While editing handle differently\n * @private\n * @param {string} key\n * @param {*} value\n */\n _set(key: string, value: any) {\n if (this.isEditing && this._savedProps && key in this._savedProps) {\n // @ts-expect-error irritating TS\n this._savedProps[key] = value;\n return this;\n }\n if (key === 'canvas') {\n this.canvas instanceof Canvas &&\n this.canvas.textEditingManager.remove(this);\n value instanceof Canvas && value.textEditingManager.add(this);\n }\n return super._set(key, value);\n }\n\n /**\n * Sets selection start (left boundary of a selection)\n * @param {Number} index Index to set selection start to\n */\n setSelectionStart(index: number) {\n index = Math.max(index, 0);\n this._updateAndFire('selectionStart', index);\n }\n\n /**\n * Sets selection end (right boundary of a selection)\n * @param {Number} index Index to set selection end to\n */\n setSelectionEnd(index: number) {\n index = Math.min(index, this.text.length);\n this._updateAndFire('selectionEnd', index);\n }\n\n /**\n * @private\n * @param {String} property 'selectionStart' or 'selectionEnd'\n * @param {Number} index new position of property\n */\n protected _updateAndFire(\n property: 'selectionStart' | 'selectionEnd',\n index: number,\n ) {\n if (this[property] !== index) {\n this._fireSelectionChanged();\n this[property] = index;\n }\n this._updateTextarea();\n }\n\n /**\n * Fires the even of selection changed\n * @private\n */\n _fireSelectionChanged() {\n this.fire('selection:changed');\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n }\n\n /**\n * Initialize text dimensions. Render all text on given context\n * or on a offscreen canvas to get the text width with measureText.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n * @private\n */\n initDimensions() {\n this.isEditing && this.initDelayedCursor();\n super.initDimensions();\n }\n\n /**\n * Gets style of a current selection/cursor (at the start position)\n * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used.\n * @param {Number} startIndex Start index to get styles at\n * @param {Number} endIndex End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @param {Boolean} [complete] get full style or not\n * @return {Array} styles an array with one, zero or more Style objects\n */\n getSelectionStyles(\n startIndex: number = this.selectionStart || 0,\n endIndex: number = this.selectionEnd,\n complete?: boolean,\n ) {\n return super.getSelectionStyles(startIndex, endIndex, complete);\n }\n\n /**\n * Sets style of a current selection, if no selection exist, do not set anything.\n * @param {Object} [styles] Styles object\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n */\n setSelectionStyles(\n styles: object,\n startIndex: number = this.selectionStart || 0,\n endIndex: number = this.selectionEnd,\n ) {\n return super.setSelectionStyles(styles, startIndex, endIndex);\n }\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\n */\n get2DCursorLocation(\n selectionStart = this.selectionStart,\n skipWrapping?: boolean,\n ) {\n return super.get2DCursorLocation(selectionStart, skipWrapping);\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render(ctx: CanvasRenderingContext2D) {\n super.render(ctx);\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n // the correct position but not at every cursor animation.\n this.cursorOffsetCache = {};\n this.renderCursorOrSelection();\n }\n\n /**\n * @override block cursor/selection logic while rendering the exported canvas\n * @todo this workaround should be replaced with a more robust solution\n */\n toCanvasElement(options?: ObjectToCanvasElementOptions): HTMLCanvasElement {\n const isEditing = this.isEditing;\n this.isEditing = false;\n const canvas = super.toCanvasElement(options);\n this.isEditing = isEditing;\n return canvas;\n }\n\n /**\n * Renders cursor or selection (depending on what exists)\n * it does on the contextTop. If contextTop is not available, do nothing.\n */\n renderCursorOrSelection() {\n if (!this.isEditing || !this.canvas) {\n return;\n }\n const ctx = this.clearContextTop(true);\n if (!ctx) {\n return;\n }\n const boundaries = this._getCursorBoundaries();\n\n const ancestors = this.findAncestorsWithClipPath();\n const hasAncestorsWithClipping = ancestors.length > 0;\n let drawingCtx: CanvasRenderingContext2D = ctx;\n let drawingCanvas: HTMLCanvasElement | undefined = undefined;\n if (hasAncestorsWithClipping) {\n // we have some clipPath, we need to draw the selection on an intermediate layer.\n drawingCanvas = createCanvasElementFor(ctx.canvas);\n drawingCtx = drawingCanvas.getContext('2d')!;\n applyCanvasTransform(drawingCtx, this.canvas);\n const m = this.calcTransformMatrix();\n drawingCtx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n\n if (this.selectionStart === this.selectionEnd && !this.inCompositionMode) {\n this.renderCursor(drawingCtx, boundaries);\n } else {\n this.renderSelection(drawingCtx, boundaries);\n }\n\n if (hasAncestorsWithClipping) {\n // we need a neutral context.\n // this won't work for nested clippaths in which a clippath\n // has its own clippath\n for (const ancestor of ancestors) {\n const clipPath = ancestor.clipPath!;\n const clippingCanvas = createCanvasElementFor(ctx.canvas);\n const clippingCtx = clippingCanvas.getContext('2d')!;\n applyCanvasTransform(clippingCtx, this.canvas);\n // position the ctx in the center of the outer ancestor\n if (!clipPath.absolutePositioned) {\n const m = ancestor.calcTransformMatrix();\n clippingCtx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n clipPath.transform(clippingCtx);\n // we assign an empty drawing context, we don't plan to have this working for nested clippaths for now\n clipPath.drawObject(clippingCtx, true, {});\n this.drawClipPathOnCache(drawingCtx, clipPath, clippingCanvas);\n }\n }\n\n if (hasAncestorsWithClipping) {\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(drawingCanvas!, 0, 0);\n }\n\n this.canvas.contextTopDirty = true;\n ctx.restore();\n }\n\n /**\n * Finds and returns an array of clip paths that are applied to the parent\n * group(s) of the current FabricObject instance. The object's hierarchy is\n * traversed upwards (from the current object towards the root of the canvas),\n * checking each parent object for the presence of a `clipPath` that is not\n * absolutely positioned.\n */\n findAncestorsWithClipPath(): FabricObject[] {\n const clipPathAncestors: FabricObject[] = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let obj: FabricObject | undefined = this;\n while (obj) {\n if (obj.clipPath) {\n clipPathAncestors.push(obj);\n }\n obj = obj.parent;\n }\n\n return clipPathAncestors;\n }\n\n /**\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\n * left/top are left/top of entire text box\n * leftOffset/topOffset are offset from that left/top point of a text box\n * @private\n * @param {number} [index] index from start\n * @param {boolean} [skipCaching]\n */\n _getCursorBoundaries(\n index: number = this.selectionStart,\n skipCaching?: boolean,\n ): CursorBoundaries {\n // Use advanced cursor positioning if available\n if (this.enableAdvancedLayout) {\n return this._getCursorBoundariesAdvanced(index);\n }\n \n // Fall back to original method\n return this._getCursorBoundariesOriginal(index, skipCaching);\n }\n\n\n /**\n * Caches and returns cursor left/top offset relative to instance's center point\n * @private\n * @param {number} index index from start\n * @param {boolean} [skipCaching]\n */\n _getCursorBoundariesOffsets(\n index: number,\n skipCaching?: boolean,\n ): { left: number; top: number } {\n if (skipCaching) {\n return this.__getCursorBoundariesOffsets(index);\n }\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n return this.cursorOffsetCache as { left: number; top: number };\n }\n return (this.cursorOffsetCache = this.__getCursorBoundariesOffsets(index));\n }\n\n /**\n * Enhanced cursor boundaries using advanced hit testing when available\n * @private\n */\n _getCursorBoundariesAdvanced(index: number): CursorBoundaries {\n if (!this.enableAdvancedLayout || !(this as any)._layoutTextAdvanced) {\n return this._getCursorBoundariesOriginal(index);\n }\n\n const layout = (this as any)._layoutTextAdvanced();\n const cursorRect = getCursorRect(index, layout, (this as any)._getAdvancedLayoutOptions());\n \n return {\n left: this._getLeftOffset(),\n top: this._getTopOffset(),\n leftOffset: cursorRect.x,\n topOffset: cursorRect.y,\n };\n }\n\n /**\n * Enhanced selection start from pointer using BiDi-aware hit testing\n * @override\n */\n getSelectionStartFromPointer(e: TPointerEvent): number {\n if (!this.enableAdvancedLayout || !(this as any)._layoutTextAdvanced) {\n return super.getSelectionStartFromPointer(e);\n }\n\n const mouseOffset = this.canvas!.getScenePoint(e)\n .transform(invertTransform(this.calcTransformMatrix()))\n .add(new Point(-this._getLeftOffset(), -this._getTopOffset()));\n\n // Use BiDi-aware hit testing instead of naive RTL coordinate flipping\n const layout = (this as any)._layoutTextAdvanced();\n const hitResult = hitTest(mouseOffset.x, mouseOffset.y, layout, (this as any)._getAdvancedLayoutOptions());\n \n return Math.min(hitResult.charIndex, this._text.length);\n }\n\n /**\n * Original cursor boundaries implementation\n * @private\n */\n _getCursorBoundariesOriginal(index: number, skipCaching?: boolean): CursorBoundaries {\n const left = this._getLeftOffset(),\n top = this._getTopOffset(),\n offsets = this._getCursorBoundariesOffsets(index, skipCaching);\n return {\n left: left,\n top: top,\n leftOffset: offsets.left,\n topOffset: offsets.top,\n };\n }\n\n /**\n * Calculates cursor left/top offset relative to instance's center point\n * @private\n * @param {number} index index from start\n */\n __getCursorBoundariesOffsets(index: number) {\n let topOffset = 0,\n leftOffset = 0;\n const { charIndex, lineIndex } = this.get2DCursorLocation(index);\n\n for (let i = 0; i < lineIndex; i++) {\n topOffset += this.getHeightOfLine(i);\n }\n const lineLeftOffset = this._getLineLeftOffset(lineIndex);\n const bound = this.__charBounds[lineIndex][charIndex];\n bound && (leftOffset = bound.left);\n if (\n this.charSpacing !== 0 &&\n charIndex === this._textLines[lineIndex].length\n ) {\n leftOffset -= this._getWidthOfCharSpacing();\n }\n const boundaries = {\n top: topOffset,\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n };\n if (this.direction === 'rtl') {\n if (\n this.textAlign === RIGHT ||\n this.textAlign === JUSTIFY ||\n this.textAlign === JUSTIFY_RIGHT\n ) {\n boundaries.left *= -1;\n } else if (this.textAlign === LEFT || this.textAlign === JUSTIFY_LEFT) {\n boundaries.left = lineLeftOffset - (leftOffset > 0 ? leftOffset : 0);\n } else if (\n this.textAlign === CENTER ||\n this.textAlign === JUSTIFY_CENTER\n ) {\n boundaries.left = lineLeftOffset - (leftOffset > 0 ? leftOffset : 0);\n }\n }\n return boundaries;\n }\n\n /**\n * Renders cursor on context Top, outside the animation cycle, on request\n * Used for the drag/drop effect.\n * If contextTop is not available, do nothing.\n */\n renderCursorAt(selectionStart: number) {\n this._renderCursor(\n this.canvas!.contextTop,\n this._getCursorBoundaries(selectionStart, true),\n selectionStart,\n );\n }\n\n /**\n * Renders cursor\n * @param {Object} boundaries\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderCursor(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries) {\n this._renderCursor(ctx, boundaries, this.selectionStart);\n }\n\n /**\n * Return the data needed to render the cursor for given selection start\n * The left,top are relative to the object, while width and height are prescaled\n * to look think with canvas zoom and object scaling,\n * so they depend on canvas and object scaling\n */\n getCursorRenderingData(\n selectionStart: number = this.selectionStart,\n boundaries: CursorBoundaries = this._getCursorBoundaries(selectionStart),\n ): CursorRenderingData {\n const cursorLocation = this.get2DCursorLocation(selectionStart),\n lineIndex = cursorLocation.lineIndex,\n charIndex =\n cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n multiplier = this.getObjectScaling().x * this.canvas!.getZoom(),\n cursorWidth = this.cursorWidth / multiplier,\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY'),\n topOffset =\n boundaries.topOffset +\n ((1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex)) /\n this.lineHeight -\n charHeight * (1 - this._fontSizeFraction);\n\n return {\n color:\n this.cursorColor ||\n (this.getValueOfPropertyAt(lineIndex, charIndex, 'fill') as string),\n opacity: this._currentCursorOpacity,\n left: boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n top: topOffset + boundaries.top + dy,\n width: cursorWidth,\n height: charHeight,\n };\n }\n\n /**\n * Render the cursor at the given selectionStart.\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n _renderCursor(\n ctx: CanvasRenderingContext2D,\n boundaries: CursorBoundaries,\n selectionStart: number,\n ) {\n const { color, opacity, left, top, width, height } =\n this.getCursorRenderingData(selectionStart, boundaries);\n ctx.fillStyle = color;\n ctx.globalAlpha = opacity;\n ctx.fillRect(left, top, width, height);\n }\n\n /**\n * Renders text selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderSelection(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries) {\n const selection = {\n selectionStart: this.inCompositionMode\n ? this.hiddenTextarea!.selectionStart\n : this.selectionStart,\n selectionEnd: this.inCompositionMode\n ? this.hiddenTextarea!.selectionEnd\n : this.selectionEnd,\n };\n this._renderSelection(ctx, selection, boundaries);\n }\n\n /**\n * Renders drag start text selection\n */\n renderDragSourceEffect() {\n const dragStartSelection =\n this.draggableTextDelegate.getDragStartSelection()!;\n this._renderSelection(\n this.canvas!.contextTop,\n dragStartSelection,\n this._getCursorBoundaries(dragStartSelection.selectionStart, true),\n );\n }\n\n renderDropTargetEffect(e: DragEvent) {\n const dragSelection = this.getSelectionStartFromPointer(e);\n this.renderCursorAt(dragSelection);\n }\n\n /**\n * Renders text selection\n * @private\n * @param {{ selectionStart: number, selectionEnd: number }} selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n _renderSelection(\n ctx: CanvasRenderingContext2D,\n selection: { selectionStart: number; selectionEnd: number },\n boundaries: CursorBoundaries,\n ) {\n const selectionStart = selection.selectionStart,\n selectionEnd = selection.selectionEnd,\n isJustify = this.textAlign.includes(JUSTIFY),\n start = this.get2DCursorLocation(selectionStart),\n end = this.get2DCursorLocation(selectionEnd),\n startLine = start.lineIndex,\n endLine = end.lineIndex,\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n for (let i = startLine; i <= endLine; i++) {\n const lineOffset = this._getLineLeftOffset(i) || 0;\n let lineHeight = this.getHeightOfLine(i),\n realLineHeight = 0,\n boxStart = 0,\n boxEnd = 0;\n \n // Simplified selection rendering that works for both LTR and RTL\n if (i === startLine) {\n boxStart = this.__charBounds[startLine][startChar].left;\n }\n if (i >= startLine && i < endLine) {\n boxEnd =\n isJustify && !this.isEndOfWrapping(i)\n ? this.width\n : this.getLineWidth(i) || 5;\n } else if (i === endLine) {\n if (endChar === 0) {\n boxEnd = this.__charBounds[endLine][endChar].left;\n } else {\n const charSpacing = this._getWidthOfCharSpacing();\n boxEnd =\n this.__charBounds[endLine][endChar - 1].left +\n this.__charBounds[endLine][endChar - 1].width -\n charSpacing;\n }\n }\n realLineHeight = lineHeight;\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n lineHeight /= this.lineHeight;\n }\n let drawStart = boundaries.left + lineOffset + boxStart,\n drawHeight = lineHeight,\n extraTop = 0;\n const drawWidth = boxEnd - boxStart;\n if (this.inCompositionMode) {\n ctx.fillStyle = this.compositionColor || 'black';\n drawHeight = 1;\n extraTop = lineHeight;\n } else {\n ctx.fillStyle = this.selectionColor;\n }\n if (this.direction === 'rtl') {\n if (\n this.textAlign === RIGHT ||\n this.textAlign === JUSTIFY ||\n this.textAlign === JUSTIFY_RIGHT\n ) {\n drawStart = this.width - drawStart - drawWidth;\n } else if (this.textAlign === LEFT || this.textAlign === JUSTIFY_LEFT) {\n drawStart = boundaries.left + lineOffset - boxEnd;\n } else if (\n this.textAlign === CENTER ||\n this.textAlign === JUSTIFY_CENTER\n ) {\n drawStart = boundaries.left + lineOffset - boxEnd;\n }\n }\n ctx.fillRect(\n drawStart,\n boundaries.top + boundaries.topOffset + extraTop,\n drawWidth,\n drawHeight,\n );\n boundaries.topOffset += realLineHeight;\n }\n }\n\n /**\n * High level function to know the height of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns fontSize of char at the current cursor\n * Unused from the library, is for the end user\n * @return {Number} Character font size\n */\n getCurrentCharFontSize(): number {\n const cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n }\n\n /**\n * High level function to know the color of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns color (fill) of char at the current cursor\n * if the text object has a pattern or gradient for filler, it will return that.\n * Unused by the library, is for the end user\n * @return {String | TFiller} Character color (fill)\n */\n getCurrentCharColor(): string | TFiller | null {\n const cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, FILL);\n }\n\n /**\n * Returns the cursor position for the getCurrent.. functions\n * @private\n */\n _getCurrentCharIndex() {\n const cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n charIndex =\n cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n return { l: cursorPosition.lineIndex, c: charIndex };\n }\n\n dispose() {\n this.exitEditingImpl();\n this.draggableTextDelegate.dispose();\n super.dispose();\n }\n}\n\nclassRegistry.setClass(IText);\n// legacy\nclassRegistry.setClass(IText, 'i-text');\n"],"names":["protectedDefaultValues","_selectionDirection","_reSpace","inCompositionMode","iTextDefaultValues","selectionStart","selectionEnd","selectionColor","isEditing","editable","editingBorderColor","cursorWidth","cursorColor","cursorDelay","cursorDuration","caching","hiddenTextareaContainer","keysMap","keysMapRtl","ctrlKeysMapDown","ctrlKeysMapUp","IText","ITextClickBehavior","getDefaults","ownDefaults","type","constructor","text","options","initBehavior","_set","key","value","_savedProps","canvas","Canvas","textEditingManager","remove","add","setSelectionStart","index","Math","max","_updateAndFire","setSelectionEnd","min","length","property","_fireSelectionChanged","_updateTextarea","fire","target","initDimensions","initDelayedCursor","getSelectionStyles","startIndex","arguments","undefined","endIndex","complete","setSelectionStyles","styles","get2DCursorLocation","skipWrapping","render","ctx","cursorOffsetCache","renderCursorOrSelection","toCanvasElement","clearContextTop","boundaries","_getCursorBoundaries","ancestors","findAncestorsWithClipPath","hasAncestorsWithClipping","drawingCtx","drawingCanvas","createCanvasElementFor","getContext","applyCanvasTransform","m","calcTransformMatrix","transform","renderCursor","renderSelection","ancestor","clipPath","clippingCanvas","clippingCtx","absolutePositioned","drawObject","drawClipPathOnCache","setTransform","drawImage","contextTopDirty","restore","clipPathAncestors","obj","push","parent","skipCaching","enableAdvancedLayout","_getCursorBoundariesAdvanced","_getCursorBoundariesOriginal","_getCursorBoundariesOffsets","__getCursorBoundariesOffsets","_layoutTextAdvanced","layout","cursorRect","getCursorRect","_getAdvancedLayoutOptions","left","_getLeftOffset","top","_getTopOffset","leftOffset","x","topOffset","y","getSelectionStartFromPointer","e","mouseOffset","getScenePoint","invertTransform","Point","hitResult","hitTest","charIndex","_text","offsets","lineIndex","i","getHeightOfLine","lineLeftOffset","_getLineLeftOffset","bound","__charBounds","charSpacing","_textLines","_getWidthOfCharSpacing","direction","textAlign","RIGHT","JUSTIFY","JUSTIFY_RIGHT","LEFT","JUSTIFY_LEFT","CENTER","JUSTIFY_CENTER","renderCursorAt","_renderCursor","contextTop","getCursorRenderingData","cursorLocation","charHeight","getValueOfPropertyAt","multiplier","getObjectScaling","getZoom","dy","_fontSizeFraction","lineHeight","color","opacity","_currentCursorOpacity","width","height","fillStyle","globalAlpha","fillRect","selection","hiddenTextarea","_renderSelection","renderDragSourceEffect","dragStartSelection","draggableTextDelegate","getDragStartSelection","renderDropTargetEffect","dragSelection","isJustify","includes","start","end","startLine","endLine","startChar","endChar","lineOffset","realLineHeight","boxStart","boxEnd","isEndOfWrapping","getLineWidth","drawStart","drawHeight","extraTop","drawWidth","compositionColor","getCurrentCharFontSize","cp","_getCurrentCharIndex","l","c","getCurrentCharColor","FILL","cursorPosition","dispose","exitEditingImpl","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;;;;;;;;AA6CA;AACA,MAAMA,sBAAsB,GAAG;AAC7BC,EAAAA,mBAAmB,EAAE,IAAI;AACzBC,EAAAA,QAAQ,EAAE,UAAU;AACpBC,EAAAA,iBAAiB,EAAE;AACrB,CAAC;AAEM,MAAMC,kBAAoD,GAAG;AAClEC,EAAAA,cAAc,EAAE,CAAC;AACjBC,EAAAA,YAAY,EAAE,CAAC;AACfC,EAAAA,cAAc,EAAE,sBAAsB;AACtCC,EAAAA,SAAS,EAAE,KAAK;AAChBC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,kBAAkB,EAAE,wBAAwB;AAC5CC,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,WAAW,EAAE,EAAE;AACfC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,cAAc,EAAE,GAAG;AACnBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,uBAAuB,EAAE,IAAI;EAC7BC,OAAO;EACPC,UAAU;EACVC,eAAe;EACfC,aAAa;EACb,GAAGpB;AACL;;AAEA;;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMqB,KAAK,SAKRC,kBAAkB,CAE5B;EA8EE,OAAOC,WAAWA,GAAwB;IACxC,OAAO;AAAE,MAAA,GAAG,KAAK,CAACA,WAAW,EAAE;AAAE,MAAA,GAAGF,KAAK,CAACG;KAAa;AACzD,EAAA;EAIA,IAAIC,IAAIA,GAAG;AACT,IAAA,MAAMA,IAAI,GAAG,KAAK,CAACA,IAAI;AACvB;AACA,IAAA,OAAOA,IAAI,KAAK,OAAO,GAAG,QAAQ,GAAGA,IAAI;AAC3C,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,WAAWA,CAACC,IAAY,EAAEC,OAAe,EAAE;IACzC,KAAK,CAACD,IAAI,EAAE;MAAE,GAAGN,KAAK,CAACG,WAAW;MAAE,GAAGI;AAAQ,KAAU,CAAC;IAC1D,IAAI,CAACC,YAAY,EAAE;AACrB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,IAAIA,CAACC,GAAW,EAAEC,KAAU,EAAE;AAC5B,IAAA,IAAI,IAAI,CAACxB,SAAS,IAAI,IAAI,CAACyB,WAAW,IAAIF,GAAG,IAAI,IAAI,CAACE,WAAW,EAAE;AACjE;AACA,MAAA,IAAI,CAACA,WAAW,CAACF,GAAG,CAAC,GAAGC,KAAK;AAC7B,MAAA,OAAO,IAAI;AACb,IAAA;IACA,IAAID,GAAG,KAAK,QAAQ,EAAE;AACpB,MAAA,IAAI,CAACG,MAAM,YAAYC,MAAM,IAC3B,IAAI,CAACD,MAAM,CAACE,kBAAkB,CAACC,MAAM,CAAC,IAAI,CAAC;MAC7CL,KAAK,YAAYG,MAAM,IAAIH,KAAK,CAACI,kBAAkB,CAACE,GAAG,CAAC,IAAI,CAAC;AAC/D,IAAA;AACA,IAAA,OAAO,KAAK,CAACR,IAAI,CAACC,GAAG,EAAEC,KAAK,CAAC;AAC/B,EAAA;;AAEA;AACF;AACA;AACA;EACEO,iBAAiBA,CAACC,KAAa,EAAE;IAC/BA,KAAK,GAAGC,IAAI,CAACC,GAAG,CAACF,KAAK,EAAE,CAAC,CAAC;AAC1B,IAAA,IAAI,CAACG,cAAc,CAAC,gBAAgB,EAAEH,KAAK,CAAC;AAC9C,EAAA;;AAEA;AACF;AACA;AACA;EACEI,eAAeA,CAACJ,KAAa,EAAE;AAC7BA,IAAAA,KAAK,GAAGC,IAAI,CAACI,GAAG,CAACL,KAAK,EAAE,IAAI,CAACb,IAAI,CAACmB,MAAM,CAAC;AACzC,IAAA,IAAI,CAACH,cAAc,CAAC,cAAc,EAAEH,KAAK,CAAC;AAC5C,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACYG,EAAAA,cAAcA,CACtBI,QAA2C,EAC3CP,KAAa,EACb;AACA,IAAA,IAAI,IAAI,CAACO,QAAQ,CAAC,KAAKP,KAAK,EAAE;MAC5B,IAAI,CAACQ,qBAAqB,EAAE;AAC5B,MAAA,IAAI,CAACD,QAAQ,CAAC,GAAGP,KAAK;AACxB,IAAA;IACA,IAAI,CAACS,eAAe,EAAE;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACED,EAAAA,qBAAqBA,GAAG;AACtB,IAAA,IAAI,CAACE,IAAI,CAAC,mBAAmB,CAAC;IAC9B,IAAI,CAAChB,MAAM,IAAI,IAAI,CAACA,MAAM,CAACgB,IAAI,CAAC,wBAAwB,EAAE;AAAEC,MAAAA,MAAM,EAAE;AAAK,KAAC,CAAC;AAC7E,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,CAAC5C,SAAS,IAAI,IAAI,CAAC6C,iBAAiB,EAAE;IAC1C,KAAK,CAACD,cAAc,EAAE;AACxB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,kBAAkBA,GAIhB;AAAA,IAAA,IAHAC,UAAkB,GAAAC,SAAA,CAAAV,MAAA,QAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAACnD,cAAc,IAAI,CAAC;AAAA,IAAA,IAC7CqD,QAAgB,GAAAF,SAAA,CAAAV,MAAA,GAAA,CAAA,IAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAClD,YAAY;IAAA,IACpCqD,QAAkB,GAAAH,SAAA,CAAAV,MAAA,GAAA,CAAA,GAAAU,SAAA,MAAAC,SAAA;IAElB,OAAO,KAAK,CAACH,kBAAkB,CAACC,UAAU,EAAEG,QAAQ,EAAEC,QAAQ,CAAC;AACjE,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEC,kBAAkBA,CAChBC,MAAc,EAGd;AAAA,IAAA,IAFAN,UAAkB,GAAAC,SAAA,CAAAV,MAAA,QAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAACnD,cAAc,IAAI,CAAC;AAAA,IAAA,IAC7CqD,QAAgB,GAAAF,SAAA,CAAAV,MAAA,GAAA,CAAA,IAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAAClD,YAAY;IAEpC,OAAO,KAAK,CAACsD,kBAAkB,CAACC,MAAM,EAAEN,UAAU,EAAEG,QAAQ,CAAC;AAC/D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEI,EAAAA,mBAAmBA,GAGjB;AAAA,IAAA,IAFAzD,cAAc,GAAAmD,SAAA,CAAAV,MAAA,GAAA,CAAA,IAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAACnD,cAAc;IAAA,IACpC0D,YAAsB,GAAAP,SAAA,CAAAV,MAAA,GAAA,CAAA,GAAAU,SAAA,MAAAC,SAAA;AAEtB,IAAA,OAAO,KAAK,CAACK,mBAAmB,CAACzD,cAAc,EAAE0D,YAAY,CAAC;AAChE,EAAA;;AAEA;AACF;AACA;AACA;EACEC,MAAMA,CAACC,GAA6B,EAAE;AACpC,IAAA,KAAK,CAACD,MAAM,CAACC,GAAG,CAAC;AACjB;AACA;AACA,IAAA,IAAI,CAACC,iBAAiB,GAAG,EAAE;IAC3B,IAAI,CAACC,uBAAuB,EAAE;AAChC,EAAA;;AAEA;AACF;AACA;AACA;EACEC,eAAeA,CAACxC,OAAsC,EAAqB;AACzE,IAAA,MAAMpB,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,IAAI,CAACA,SAAS,GAAG,KAAK;AACtB,IAAA,MAAM0B,MAAM,GAAG,KAAK,CAACkC,eAAe,CAACxC,OAAO,CAAC;IAC7C,IAAI,CAACpB,SAAS,GAAGA,SAAS;AAC1B,IAAA,OAAO0B,MAAM;AACf,EAAA;;AAEA;AACF;AACA;AACA;AACEiC,EAAAA,uBAAuBA,GAAG;IACxB,IAAI,CAAC,IAAI,CAAC3D,SAAS,IAAI,CAAC,IAAI,CAAC0B,MAAM,EAAE;AACnC,MAAA;AACF,IAAA;AACA,IAAA,MAAM+B,GAAG,GAAG,IAAI,CAACI,eAAe,CAAC,IAAI,CAAC;IACtC,IAAI,CAACJ,GAAG,EAAE;AACR,MAAA;AACF,IAAA;AACA,IAAA,MAAMK,UAAU,GAAG,IAAI,CAACC,oBAAoB,EAAE;AAE9C,IAAA,MAAMC,SAAS,GAAG,IAAI,CAACC,yBAAyB,EAAE;AAClD,IAAA,MAAMC,wBAAwB,GAAGF,SAAS,CAAC1B,MAAM,GAAG,CAAC;IACrD,IAAI6B,UAAoC,GAAGV,GAAG;IAC9C,IAAIW,aAA4C,GAAGnB,SAAS;AAC5D,IAAA,IAAIiB,wBAAwB,EAAE;AAC5B;AACAE,MAAAA,aAAa,GAAGC,sBAAsB,CAACZ,GAAG,CAAC/B,MAAM,CAAC;AAClDyC,MAAAA,UAAU,GAAGC,aAAa,CAACE,UAAU,CAAC,IAAI,CAAE;AAC5CC,MAAAA,oBAAoB,CAACJ,UAAU,EAAE,IAAI,CAACzC,MAAM,CAAC;AAC7C,MAAA,MAAM8C,CAAC,GAAG,IAAI,CAACC,mBAAmB,EAAE;AACpCN,MAAAA,UAAU,CAACO,SAAS,CAACF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,IAAA;AAEA,IAAA,IAAI,IAAI,CAAC3E,cAAc,KAAK,IAAI,CAACC,YAAY,IAAI,CAAC,IAAI,CAACH,iBAAiB,EAAE;AACxE,MAAA,IAAI,CAACgF,YAAY,CAACR,UAAU,EAAEL,UAAU,CAAC;AAC3C,IAAA,CAAC,MAAM;AACL,MAAA,IAAI,CAACc,eAAe,CAACT,UAAU,EAAEL,UAAU,CAAC;AAC9C,IAAA;AAEA,IAAA,IAAII,wBAAwB,EAAE;AAC5B;AACA;AACA;AACA,MAAA,KAAK,MAAMW,QAAQ,IAAIb,SAAS,EAAE;AAChC,QAAA,MAAMc,QAAQ,GAAGD,QAAQ,CAACC,QAAS;AACnC,QAAA,MAAMC,cAAc,GAAGV,sBAAsB,CAACZ,GAAG,CAAC/B,MAAM,CAAC;AACzD,QAAA,MAAMsD,WAAW,GAAGD,cAAc,CAACT,UAAU,CAAC,IAAI,CAAE;AACpDC,QAAAA,oBAAoB,CAACS,WAAW,EAAE,IAAI,CAACtD,MAAM,CAAC;AAC9C;AACA,QAAA,IAAI,CAACoD,QAAQ,CAACG,kBAAkB,EAAE;AAChC,UAAA,MAAMT,CAAC,GAAGK,QAAQ,CAACJ,mBAAmB,EAAE;AACxCO,UAAAA,WAAW,CAACN,SAAS,CAACF,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAA;AACAM,QAAAA,QAAQ,CAACJ,SAAS,CAACM,WAAW,CAAC;AAC/B;QACAF,QAAQ,CAACI,UAAU,CAACF,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,CAACG,mBAAmB,CAAChB,UAAU,EAAEW,QAAQ,EAAEC,cAAc,CAAC;AAChE,MAAA;AACF,IAAA;AAEA,IAAA,IAAIb,wBAAwB,EAAE;AAC5BT,MAAAA,GAAG,CAAC2B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;MAClC3B,GAAG,CAAC4B,SAAS,CAACjB,aAAa,EAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAA;AAEA,IAAA,IAAI,CAAC1C,MAAM,CAAC4D,eAAe,GAAG,IAAI;IAClC7B,GAAG,CAAC8B,OAAO,EAAE;AACf,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEtB,EAAAA,yBAAyBA,GAAmB;IAC1C,MAAMuB,iBAAiC,GAAG,EAAE;AAC5C;IACA,IAAIC,GAA6B,GAAG,IAAI;AACxC,IAAA,OAAOA,GAAG,EAAE;MACV,IAAIA,GAAG,CAACX,QAAQ,EAAE;AAChBU,QAAAA,iBAAiB,CAACE,IAAI,CAACD,GAAG,CAAC;AAC7B,MAAA;MACAA,GAAG,GAAGA,GAAG,CAACE,MAAM;AAClB,IAAA;AAEA,IAAA,OAAOH,iBAAiB;AAC1B,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEzB,EAAAA,oBAAoBA,GAGA;AAAA,IAAA,IAFlB/B,KAAa,GAAAgB,SAAA,CAAAV,MAAA,GAAA,CAAA,IAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAACnD,cAAc;IAAA,IACnC+F,WAAqB,GAAA5C,SAAA,CAAAV,MAAA,GAAA,CAAA,GAAAU,SAAA,MAAAC,SAAA;AAErB;IACA,IAAI,IAAI,CAAC4C,oBAAoB,EAAE;AAC7B,MAAA,OAAO,IAAI,CAACC,4BAA4B,CAAC9D,KAAK,CAAC;AACjD,IAAA;;AAEA;AACA,IAAA,OAAO,IAAI,CAAC+D,4BAA4B,CAAC/D,KAAK,EAAE4D,WAAW,CAAC;AAC9D,EAAA;;AAGA;AACF;AACA;AACA;AACA;AACA;AACEI,EAAAA,2BAA2BA,CACzBhE,KAAa,EACb4D,WAAqB,EACU;AAC/B,IAAA,IAAIA,WAAW,EAAE;AACf,MAAA,OAAO,IAAI,CAACK,4BAA4B,CAACjE,KAAK,CAAC;AACjD,IAAA;IACA,IAAI,IAAI,CAAC0B,iBAAiB,IAAI,KAAK,IAAI,IAAI,CAACA,iBAAiB,EAAE;MAC7D,OAAO,IAAI,CAACA,iBAAiB;AAC/B,IAAA;IACA,OAAQ,IAAI,CAACA,iBAAiB,GAAG,IAAI,CAACuC,4BAA4B,CAACjE,KAAK,CAAC;AAC3E,EAAA;;AAEA;AACF;AACA;AACA;EACE8D,4BAA4BA,CAAC9D,KAAa,EAAoB;IAC5D,IAAI,CAAC,IAAI,CAAC6D,oBAAoB,IAAI,CAAE,IAAI,CAASK,mBAAmB,EAAE;AACpE,MAAA,OAAO,IAAI,CAACH,4BAA4B,CAAC/D,KAAK,CAAC;AACjD,IAAA;AAEA,IAAA,MAAMmE,MAAM,GAAI,IAAI,CAASD,mBAAmB,EAAE;AAClD,IAAA,MAAME,UAAU,GAAGC,aAAa,CAACrE,KAAK,EAAEmE,MAAM,EAAG,IAAI,CAASG,yBAAyB,EAAE,CAAC;IAE1F,OAAO;AACLC,MAAAA,IAAI,EAAE,IAAI,CAACC,cAAc,EAAE;AAC3BC,MAAAA,GAAG,EAAE,IAAI,CAACC,aAAa,EAAE;MACzBC,UAAU,EAAEP,UAAU,CAACQ,CAAC;MACxBC,SAAS,EAAET,UAAU,CAACU;KACvB;AACH,EAAA;;AAEA;AACF;AACA;AACA;EACEC,4BAA4BA,CAACC,CAAgB,EAAU;IACrD,IAAI,CAAC,IAAI,CAACnB,oBAAoB,IAAI,CAAE,IAAI,CAASK,mBAAmB,EAAE;AACpE,MAAA,OAAO,KAAK,CAACa,4BAA4B,CAACC,CAAC,CAAC;AAC9C,IAAA;AAEA,IAAA,MAAMC,WAAW,GAAG,IAAI,CAACvF,MAAM,CAAEwF,aAAa,CAACF,CAAC,CAAC,CAC9CtC,SAAS,CAACyC,eAAe,CAAC,IAAI,CAAC1C,mBAAmB,EAAE,CAAC,CAAC,CACtD3C,GAAG,CAAC,IAAIsF,KAAK,CAAC,CAAC,IAAI,CAACZ,cAAc,EAAE,EAAE,CAAC,IAAI,CAACE,aAAa,EAAE,CAAC,CAAC;;AAEhE;AACA,IAAA,MAAMP,MAAM,GAAI,IAAI,CAASD,mBAAmB,EAAE;AAClD,IAAA,MAAMmB,SAAS,GAAGC,OAAO,CAACL,WAAW,CAACL,CAAC,EAAEK,WAAW,CAACH,CAAC,EAAEX,MAAM,EAAG,IAAI,CAASG,yBAAyB,EAAE,CAAC;AAE1G,IAAA,OAAOrE,IAAI,CAACI,GAAG,CAACgF,SAAS,CAACE,SAAS,EAAE,IAAI,CAACC,KAAK,CAAClF,MAAM,CAAC;AACzD,EAAA;;AAEA;AACF;AACA;AACA;AACEyD,EAAAA,4BAA4BA,CAAC/D,KAAa,EAAE4D,WAAqB,EAAoB;AACnF,IAAA,MAAMW,IAAI,GAAG,IAAI,CAACC,cAAc,EAAE;AAChCC,MAAAA,GAAG,GAAG,IAAI,CAACC,aAAa,EAAE;MAC1Be,OAAO,GAAG,IAAI,CAACzB,2BAA2B,CAAChE,KAAK,EAAE4D,WAAW,CAAC;IAChE,OAAO;AACLW,MAAAA,IAAI,EAAEA,IAAI;AACVE,MAAAA,GAAG,EAAEA,GAAG;MACRE,UAAU,EAAEc,OAAO,CAAClB,IAAI;MACxBM,SAAS,EAAEY,OAAO,CAAChB;KACpB;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACER,4BAA4BA,CAACjE,KAAa,EAAE;IAC1C,IAAI6E,SAAS,GAAG,CAAC;AACfF,MAAAA,UAAU,GAAG,CAAC;IAChB,MAAM;MAAEY,SAAS;AAAEG,MAAAA;AAAU,KAAC,GAAG,IAAI,CAACpE,mBAAmB,CAACtB,KAAK,CAAC;IAEhE,KAAK,IAAI2F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,SAAS,EAAEC,CAAC,EAAE,EAAE;AAClCd,MAAAA,SAAS,IAAI,IAAI,CAACe,eAAe,CAACD,CAAC,CAAC;AACtC,IAAA;AACA,IAAA,MAAME,cAAc,GAAG,IAAI,CAACC,kBAAkB,CAACJ,SAAS,CAAC;IACzD,MAAMK,KAAK,GAAG,IAAI,CAACC,YAAY,CAACN,SAAS,CAAC,CAACH,SAAS,CAAC;AACrDQ,IAAAA,KAAK,KAAKpB,UAAU,GAAGoB,KAAK,CAACxB,IAAI,CAAC;AAClC,IAAA,IACE,IAAI,CAAC0B,WAAW,KAAK,CAAC,IACtBV,SAAS,KAAK,IAAI,CAACW,UAAU,CAACR,SAAS,CAAC,CAACpF,MAAM,EAC/C;AACAqE,MAAAA,UAAU,IAAI,IAAI,CAACwB,sBAAsB,EAAE;AAC7C,IAAA;AACA,IAAA,MAAMrE,UAAU,GAAG;AACjB2C,MAAAA,GAAG,EAAEI,SAAS;MACdN,IAAI,EAAEsB,cAAc,IAAIlB,UAAU,GAAG,CAAC,GAAGA,UAAU,GAAG,CAAC;KACxD;AACD,IAAA,IAAI,IAAI,CAACyB,SAAS,KAAK,KAAK,EAAE;AAC5B,MAAA,IACE,IAAI,CAACC,SAAS,KAAKC,KAAK,IACxB,IAAI,CAACD,SAAS,KAAKE,OAAO,IAC1B,IAAI,CAACF,SAAS,KAAKG,aAAa,EAChC;AACA1E,QAAAA,UAAU,CAACyC,IAAI,IAAI,EAAE;AACvB,MAAA,CAAC,MAAM,IAAI,IAAI,CAAC8B,SAAS,KAAKI,IAAI,IAAI,IAAI,CAACJ,SAAS,KAAKK,YAAY,EAAE;AACrE5E,QAAAA,UAAU,CAACyC,IAAI,GAAGsB,cAAc,IAAIlB,UAAU,GAAG,CAAC,GAAGA,UAAU,GAAG,CAAC,CAAC;AACtE,MAAA,CAAC,MAAM,IACL,IAAI,CAAC0B,SAAS,KAAKM,MAAM,IACzB,IAAI,CAACN,SAAS,KAAKO,cAAc,EACjC;AACA9E,QAAAA,UAAU,CAACyC,IAAI,GAAGsB,cAAc,IAAIlB,UAAU,GAAG,CAAC,GAAGA,UAAU,GAAG,CAAC,CAAC;AACtE,MAAA;AACF,IAAA;AACA,IAAA,OAAO7C,UAAU;AACnB,EAAA;;AAEA;AACF;AACA;AACA;AACA;EACE+E,cAAcA,CAAChJ,cAAsB,EAAE;AACrC,IAAA,IAAI,CAACiJ,aAAa,CAChB,IAAI,CAACpH,MAAM,CAAEqH,UAAU,EACvB,IAAI,CAAChF,oBAAoB,CAAClE,cAAc,EAAE,IAAI,CAAC,EAC/CA,cACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACE8E,EAAAA,YAAYA,CAAClB,GAA6B,EAAEK,UAA4B,EAAE;IACxE,IAAI,CAACgF,aAAa,CAACrF,GAAG,EAAEK,UAAU,EAAE,IAAI,CAACjE,cAAc,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEmJ,EAAAA,sBAAsBA,GAGC;AAAA,IAAA,IAFrBnJ,cAAsB,GAAAmD,SAAA,CAAAV,MAAA,GAAA,CAAA,IAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAACnD,cAAc;AAAA,IAAA,IAC5CiE,UAA4B,GAAAd,SAAA,CAAAV,MAAA,QAAAU,SAAA,CAAA,CAAA,CAAA,KAAAC,SAAA,GAAAD,SAAA,CAAA,CAAA,CAAA,GAAG,IAAI,CAACe,oBAAoB,CAAClE,cAAc,CAAC;AAExE,IAAA,MAAMoJ,cAAc,GAAG,IAAI,CAAC3F,mBAAmB,CAACzD,cAAc,CAAC;MAC7D6H,SAAS,GAAGuB,cAAc,CAACvB,SAAS;AACpCH,MAAAA,SAAS,GACP0B,cAAc,CAAC1B,SAAS,GAAG,CAAC,GAAG0B,cAAc,CAAC1B,SAAS,GAAG,CAAC,GAAG,CAAC;MACjE2B,UAAU,GAAG,IAAI,CAACC,oBAAoB,CAACzB,SAAS,EAAEH,SAAS,EAAE,UAAU,CAAC;AACxE6B,MAAAA,UAAU,GAAG,IAAI,CAACC,gBAAgB,EAAE,CAACzC,CAAC,GAAG,IAAI,CAAClF,MAAM,CAAE4H,OAAO,EAAE;AAC/DnJ,MAAAA,WAAW,GAAG,IAAI,CAACA,WAAW,GAAGiJ,UAAU;MAC3CG,EAAE,GAAG,IAAI,CAACJ,oBAAoB,CAACzB,SAAS,EAAEH,SAAS,EAAE,QAAQ,CAAC;AAC9DV,MAAAA,SAAS,GACP/C,UAAU,CAAC+C,SAAS,GACnB,CAAC,CAAC,GAAG,IAAI,CAAC2C,iBAAiB,IAAI,IAAI,CAAC5B,eAAe,CAACF,SAAS,CAAC,GAC7D,IAAI,CAAC+B,UAAU,GACjBP,UAAU,IAAI,CAAC,GAAG,IAAI,CAACM,iBAAiB,CAAC;IAE7C,OAAO;AACLE,MAAAA,KAAK,EACH,IAAI,CAACtJ,WAAW,IACf,IAAI,CAAC+I,oBAAoB,CAACzB,SAAS,EAAEH,SAAS,EAAE,MAAM,CAAY;MACrEoC,OAAO,EAAE,IAAI,CAACC,qBAAqB;MACnCrD,IAAI,EAAEzC,UAAU,CAACyC,IAAI,GAAGzC,UAAU,CAAC6C,UAAU,GAAGxG,WAAW,GAAG,CAAC;AAC/DsG,MAAAA,GAAG,EAAEI,SAAS,GAAG/C,UAAU,CAAC2C,GAAG,GAAG8C,EAAE;AACpCM,MAAAA,KAAK,EAAE1J,WAAW;AAClB2J,MAAAA,MAAM,EAAEZ;KACT;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACEJ,EAAAA,aAAaA,CACXrF,GAA6B,EAC7BK,UAA4B,EAC5BjE,cAAsB,EACtB;IACA,MAAM;MAAE6J,KAAK;MAAEC,OAAO;MAAEpD,IAAI;MAAEE,GAAG;MAAEoD,KAAK;AAAEC,MAAAA;KAAQ,GAChD,IAAI,CAACd,sBAAsB,CAACnJ,cAAc,EAAEiE,UAAU,CAAC;IACzDL,GAAG,CAACsG,SAAS,GAAGL,KAAK;IACrBjG,GAAG,CAACuG,WAAW,GAAGL,OAAO;IACzBlG,GAAG,CAACwG,QAAQ,CAAC1D,IAAI,EAAEE,GAAG,EAAEoD,KAAK,EAAEC,MAAM,CAAC;AACxC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACElF,EAAAA,eAAeA,CAACnB,GAA6B,EAAEK,UAA4B,EAAE;AAC3E,IAAA,MAAMoG,SAAS,GAAG;AAChBrK,MAAAA,cAAc,EAAE,IAAI,CAACF,iBAAiB,GAClC,IAAI,CAACwK,cAAc,CAAEtK,cAAc,GACnC,IAAI,CAACA,cAAc;AACvBC,MAAAA,YAAY,EAAE,IAAI,CAACH,iBAAiB,GAChC,IAAI,CAACwK,cAAc,CAAErK,YAAY,GACjC,IAAI,CAACA;KACV;IACD,IAAI,CAACsK,gBAAgB,CAAC3G,GAAG,EAAEyG,SAAS,EAAEpG,UAAU,CAAC;AACnD,EAAA;;AAEA;AACF;AACA;AACEuG,EAAAA,sBAAsBA,GAAG;IACvB,MAAMC,kBAAkB,GACtB,IAAI,CAACC,qBAAqB,CAACC,qBAAqB,EAAG;IACrD,IAAI,CAACJ,gBAAgB,CACnB,IAAI,CAAC1I,MAAM,CAAEqH,UAAU,EACvBuB,kBAAkB,EAClB,IAAI,CAACvG,oBAAoB,CAACuG,kBAAkB,CAACzK,cAAc,EAAE,IAAI,CACnE,CAAC;AACH,EAAA;EAEA4K,sBAAsBA,CAACzD,CAAY,EAAE;AACnC,IAAA,MAAM0D,aAAa,GAAG,IAAI,CAAC3D,4BAA4B,CAACC,CAAC,CAAC;AAC1D,IAAA,IAAI,CAAC6B,cAAc,CAAC6B,aAAa,CAAC;AACpC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEN,EAAAA,gBAAgBA,CACd3G,GAA6B,EAC7ByG,SAA2D,EAC3DpG,UAA4B,EAC5B;AACA,IAAA,MAAMjE,cAAc,GAAGqK,SAAS,CAACrK,cAAc;MAC7CC,YAAY,GAAGoK,SAAS,CAACpK,YAAY;MACrC6K,SAAS,GAAG,IAAI,CAACtC,SAAS,CAACuC,QAAQ,CAACrC,OAAO,CAAC;AAC5CsC,MAAAA,KAAK,GAAG,IAAI,CAACvH,mBAAmB,CAACzD,cAAc,CAAC;AAChDiL,MAAAA,GAAG,GAAG,IAAI,CAACxH,mBAAmB,CAACxD,YAAY,CAAC;MAC5CiL,SAAS,GAAGF,KAAK,CAACnD,SAAS;MAC3BsD,OAAO,GAAGF,GAAG,CAACpD,SAAS;MACvBuD,SAAS,GAAGJ,KAAK,CAACtD,SAAS,GAAG,CAAC,GAAG,CAAC,GAAGsD,KAAK,CAACtD,SAAS;MACrD2D,OAAO,GAAGJ,GAAG,CAACvD,SAAS,GAAG,CAAC,GAAG,CAAC,GAAGuD,GAAG,CAACvD,SAAS;IAEjD,KAAK,IAAII,CAAC,GAAGoD,SAAS,EAAEpD,CAAC,IAAIqD,OAAO,EAAErD,CAAC,EAAE,EAAE;MACzC,MAAMwD,UAAU,GAAG,IAAI,CAACrD,kBAAkB,CAACH,CAAC,CAAC,IAAI,CAAC;AAClD,MAAA,IAAI8B,UAAU,GAAG,IAAI,CAAC7B,eAAe,CAACD,CAAC,CAAC;AACtCyD,QAAAA,cAAc,GAAG,CAAC;AAClBC,QAAAA,QAAQ,GAAG,CAAC;AACZC,QAAAA,MAAM,GAAG,CAAC;;AAEZ;MACA,IAAI3D,CAAC,KAAKoD,SAAS,EAAE;QACnBM,QAAQ,GAAG,IAAI,CAACrD,YAAY,CAAC+C,SAAS,CAAC,CAACE,SAAS,CAAC,CAAC1E,IAAI;AACzD,MAAA;AACA,MAAA,IAAIoB,CAAC,IAAIoD,SAAS,IAAIpD,CAAC,GAAGqD,OAAO,EAAE;QACjCM,MAAM,GACJX,SAAS,IAAI,CAAC,IAAI,CAACY,eAAe,CAAC5D,CAAC,CAAC,GACjC,IAAI,CAACkC,KAAK,GACV,IAAI,CAAC2B,YAAY,CAAC7D,CAAC,CAAC,IAAI,CAAC;AACjC,MAAA,CAAC,MAAM,IAAIA,CAAC,KAAKqD,OAAO,EAAE;QACxB,IAAIE,OAAO,KAAK,CAAC,EAAE;UACjBI,MAAM,GAAG,IAAI,CAACtD,YAAY,CAACgD,OAAO,CAAC,CAACE,OAAO,CAAC,CAAC3E,IAAI;AACnD,QAAA,CAAC,MAAM;AACL,UAAA,MAAM0B,WAAW,GAAG,IAAI,CAACE,sBAAsB,EAAE;AACjDmD,UAAAA,MAAM,GACJ,IAAI,CAACtD,YAAY,CAACgD,OAAO,CAAC,CAACE,OAAO,GAAG,CAAC,CAAC,CAAC3E,IAAI,GAC5C,IAAI,CAACyB,YAAY,CAACgD,OAAO,CAAC,CAACE,OAAO,GAAG,CAAC,CAAC,CAACrB,KAAK,GAC7C5B,WAAW;AACf,QAAA;AACF,MAAA;AACAmD,MAAAA,cAAc,GAAG3B,UAAU;AAC3B,MAAA,IAAI,IAAI,CAACA,UAAU,GAAG,CAAC,IAAK9B,CAAC,KAAKqD,OAAO,IAAI,IAAI,CAACvB,UAAU,GAAG,CAAE,EAAE;QACjEA,UAAU,IAAI,IAAI,CAACA,UAAU;AAC/B,MAAA;MACA,IAAIgC,SAAS,GAAG3H,UAAU,CAACyC,IAAI,GAAG4E,UAAU,GAAGE,QAAQ;AACrDK,QAAAA,UAAU,GAAGjC,UAAU;AACvBkC,QAAAA,QAAQ,GAAG,CAAC;AACd,MAAA,MAAMC,SAAS,GAAGN,MAAM,GAAGD,QAAQ;MACnC,IAAI,IAAI,CAAC1L,iBAAiB,EAAE;AAC1B8D,QAAAA,GAAG,CAACsG,SAAS,GAAG,IAAI,CAAC8B,gBAAgB,IAAI,OAAO;AAChDH,QAAAA,UAAU,GAAG,CAAC;AACdC,QAAAA,QAAQ,GAAGlC,UAAU;AACvB,MAAA,CAAC,MAAM;AACLhG,QAAAA,GAAG,CAACsG,SAAS,GAAG,IAAI,CAAChK,cAAc;AACrC,MAAA;AACA,MAAA,IAAI,IAAI,CAACqI,SAAS,KAAK,KAAK,EAAE;AAC5B,QAAA,IACE,IAAI,CAACC,SAAS,KAAKC,KAAK,IACxB,IAAI,CAACD,SAAS,KAAKE,OAAO,IAC1B,IAAI,CAACF,SAAS,KAAKG,aAAa,EAChC;AACAiD,UAAAA,SAAS,GAAG,IAAI,CAAC5B,KAAK,GAAG4B,SAAS,GAAGG,SAAS;AAChD,QAAA,CAAC,MAAM,IAAI,IAAI,CAACvD,SAAS,KAAKI,IAAI,IAAI,IAAI,CAACJ,SAAS,KAAKK,YAAY,EAAE;AACrE+C,UAAAA,SAAS,GAAG3H,UAAU,CAACyC,IAAI,GAAG4E,UAAU,GAAGG,MAAM;AACnD,QAAA,CAAC,MAAM,IACL,IAAI,CAACjD,SAAS,KAAKM,MAAM,IACzB,IAAI,CAACN,SAAS,KAAKO,cAAc,EACjC;AACA6C,UAAAA,SAAS,GAAG3H,UAAU,CAACyC,IAAI,GAAG4E,UAAU,GAAGG,MAAM;AACnD,QAAA;AACF,MAAA;AACA7H,MAAAA,GAAG,CAACwG,QAAQ,CACVwB,SAAS,EACT3H,UAAU,CAAC2C,GAAG,GAAG3C,UAAU,CAAC+C,SAAS,GAAG8E,QAAQ,EAChDC,SAAS,EACTF,UACF,CAAC;MACD5H,UAAU,CAAC+C,SAAS,IAAIuE,cAAc;AACxC,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEU,EAAAA,sBAAsBA,GAAW;AAC/B,IAAA,MAAMC,EAAE,GAAG,IAAI,CAACC,oBAAoB,EAAE;AACtC,IAAA,OAAO,IAAI,CAAC7C,oBAAoB,CAAC4C,EAAE,CAACE,CAAC,EAAEF,EAAE,CAACG,CAAC,EAAE,UAAU,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,mBAAmBA,GAA4B;AAC7C,IAAA,MAAMJ,EAAE,GAAG,IAAI,CAACC,oBAAoB,EAAE;AACtC,IAAA,OAAO,IAAI,CAAC7C,oBAAoB,CAAC4C,EAAE,CAACE,CAAC,EAAEF,EAAE,CAACG,CAAC,EAAEE,IAAI,CAAC;AACpD,EAAA;;AAEA;AACF;AACA;AACA;AACEJ,EAAAA,oBAAoBA,GAAG;IACrB,MAAMK,cAAc,GAAG,IAAI,CAAC/I,mBAAmB,CAAC,IAAI,CAACzD,cAAc,EAAE,IAAI,CAAC;AACxE0H,MAAAA,SAAS,GACP8E,cAAc,CAAC9E,SAAS,GAAG,CAAC,GAAG8E,cAAc,CAAC9E,SAAS,GAAG,CAAC,GAAG,CAAC;IACnE,OAAO;MAAE0E,CAAC,EAAEI,cAAc,CAAC3E,SAAS;AAAEwE,MAAAA,CAAC,EAAE3E;KAAW;AACtD,EAAA;AAEA+E,EAAAA,OAAOA,GAAG;IACR,IAAI,CAACC,eAAe,EAAE;AACtB,IAAA,IAAI,CAAChC,qBAAqB,CAAC+B,OAAO,EAAE;IACpC,KAAK,CAACA,OAAO,EAAE;AACjB,EAAA;AACF;AAlsBE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAOE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAKE;AACF;AACA;AACA;AAHEE,eAAA,CA7EW3L,KAAK,EAAA,aAAA,EAmFKjB,kBAAkB,CAAA;AAAA4M,eAAA,CAnF5B3L,KAAK,EAAA,MAAA,EAyFF,OAAO,CAAA;AAmnBvB4L,aAAa,CAACC,QAAQ,CAAC7L,KAAK,CAAC;AAC7B;AACA4L,aAAa,CAACC,QAAQ,CAAC7L,KAAK,EAAE,QAAQ,CAAC;;;;"}
1
+ {"version":3,"file":"IText.mjs","sources":["../../../../src/shapes/IText/IText.ts"],"sourcesContent":["import { Canvas } from '../../canvas/Canvas';\r\nimport type { ITextEvents } from './ITextBehavior';\r\nimport { ITextClickBehavior } from './ITextClickBehavior';\r\nimport { hitTest, getCursorRect, getSelectionRects } from '../../text/hitTest';\r\nimport type { HitTestResult, CursorRect } from '../../text/hitTest';\r\nimport {\r\n ctrlKeysMapDown,\r\n ctrlKeysMapUp,\r\n keysMap,\r\n keysMapRtl,\r\n} from './constants';\r\nimport type { TClassProperties, TFiller, TOptions } from '../../typedefs';\r\nimport type { TPointerEvent } from '../../EventTypeDefs';\r\nimport { classRegistry } from '../../ClassRegistry';\r\nimport type { SerializedTextProps, TextProps } from '../Text/Text';\r\nimport {\r\n JUSTIFY,\r\n JUSTIFY_CENTER,\r\n JUSTIFY_LEFT,\r\n JUSTIFY_RIGHT,\r\n} from '../Text/constants';\r\nimport { CENTER, FILL, LEFT, RIGHT } from '../../constants';\r\nimport type { ObjectToCanvasElementOptions } from '../Object/Object';\r\nimport type { FabricObject } from '../Object/FabricObject';\r\nimport { createCanvasElementFor } from '../../util/misc/dom';\r\nimport { applyCanvasTransform } from '../../util/internals/applyCanvasTransform';\r\nimport { Point } from '../../Point';\r\nimport { invertTransform } from '../../util/misc/matrix';\r\n\r\nexport type CursorBoundaries = {\r\n left: number;\r\n top: number;\r\n leftOffset: number;\r\n topOffset: number;\r\n};\r\n\r\nexport type CursorRenderingData = {\r\n color: string;\r\n opacity: number;\r\n left: number;\r\n top: number;\r\n width: number;\r\n height: number;\r\n};\r\n\r\n// Declare IText protected properties to workaround TS\r\nconst protectedDefaultValues = {\r\n _selectionDirection: null,\r\n _reSpace: /\\s|\\r?\\n/,\r\n inCompositionMode: false,\r\n};\r\n\r\nexport const iTextDefaultValues: Partial<TClassProperties<IText>> = {\r\n selectionStart: 0,\r\n selectionEnd: 0,\r\n selectionColor: 'rgba(17,119,255,0.3)',\r\n isEditing: false,\r\n editable: true,\r\n editingBorderColor: 'rgba(102,153,255,0.25)',\r\n cursorWidth: 2,\r\n cursorColor: '',\r\n cursorDelay: 1000,\r\n cursorDuration: 600,\r\n caching: true,\r\n hiddenTextareaContainer: null,\r\n keysMap,\r\n keysMapRtl,\r\n ctrlKeysMapDown,\r\n ctrlKeysMapUp,\r\n ...protectedDefaultValues,\r\n};\r\n\r\n// @TODO this is not complete\r\ninterface UniqueITextProps {\r\n selectionStart: number;\r\n selectionEnd: number;\r\n}\r\n\r\nexport interface SerializedITextProps\r\n extends SerializedTextProps,\r\n UniqueITextProps {}\r\n\r\nexport interface ITextProps extends TextProps, UniqueITextProps {}\r\n\r\n/**\r\n * @fires changed\r\n * @fires selection:changed\r\n * @fires editing:entered\r\n * @fires editing:exited\r\n * @fires dragstart\r\n * @fires drag drag event firing on the drag source\r\n * @fires dragend\r\n * @fires copy\r\n * @fires cut\r\n * @fires paste\r\n *\r\n * #### Supported key combinations\r\n * ```\r\n * Move cursor: left, right, up, down\r\n * Select character: shift + left, shift + right\r\n * Select text vertically: shift + up, shift + down\r\n * Move cursor by word: alt + left, alt + right\r\n * Select words: shift + alt + left, shift + alt + right\r\n * Move cursor to line start/end: cmd + left, cmd + right or home, end\r\n * Select till start/end of line: cmd + shift + left, cmd + shift + right or shift + home, shift + end\r\n * Jump to start/end of text: cmd + up, cmd + down\r\n * Select till start/end of text: cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\r\n * Delete character: backspace\r\n * Delete word: alt + backspace\r\n * Delete line: cmd + backspace\r\n * Forward delete: delete\r\n * Copy text: ctrl/cmd + c\r\n * Paste text: ctrl/cmd + v\r\n * Cut text: ctrl/cmd + x\r\n * Select entire text: ctrl/cmd + a\r\n * Quit editing tab or esc\r\n * ```\r\n *\r\n * #### Supported mouse/touch combination\r\n * ```\r\n * Position cursor: click/touch\r\n * Create selection: click/touch & drag\r\n * Create selection: click & shift + click\r\n * Select word: double click\r\n * Select line: triple click\r\n * ```\r\n */\r\nexport class IText<\r\n Props extends TOptions<ITextProps> = Partial<ITextProps>,\r\n SProps extends SerializedITextProps = SerializedITextProps,\r\n EventSpec extends ITextEvents = ITextEvents,\r\n >\r\n extends ITextClickBehavior<Props, SProps, EventSpec>\r\n implements UniqueITextProps\r\n{\r\n /**\r\n * Index where text selection starts (or where cursor is when there is no selection)\r\n * @type Number\r\n */\r\n declare selectionStart: number;\r\n\r\n /**\r\n * Index where text selection ends\r\n * @type Number\r\n */\r\n declare selectionEnd: number;\r\n\r\n declare compositionStart: number;\r\n\r\n declare compositionEnd: number;\r\n\r\n /**\r\n * Color of text selection\r\n * @type String\r\n */\r\n declare selectionColor: string;\r\n\r\n /**\r\n * Indicates whether text is in editing mode\r\n * @type Boolean\r\n */\r\n declare isEditing: boolean;\r\n\r\n /**\r\n * Indicates whether a text can be edited\r\n * @type Boolean\r\n */\r\n declare editable: boolean;\r\n\r\n /**\r\n * Border color of text object while it's in editing mode\r\n * @type String\r\n */\r\n declare editingBorderColor: string;\r\n\r\n /**\r\n * Width of cursor (in px)\r\n * @type Number\r\n */\r\n declare cursorWidth: number;\r\n\r\n /**\r\n * Color of text cursor color in editing mode.\r\n * if not set (default) will take color from the text.\r\n * if set to a color value that fabric can understand, it will\r\n * be used instead of the color of the text at the current position.\r\n * @type String\r\n */\r\n declare cursorColor: string;\r\n\r\n /**\r\n * Delay between cursor blink (in ms)\r\n * @type Number\r\n */\r\n declare cursorDelay: number;\r\n\r\n /**\r\n * Duration of cursor fade in (in ms)\r\n * @type Number\r\n */\r\n declare cursorDuration: number;\r\n\r\n declare compositionColor: string;\r\n\r\n /**\r\n * Indicates whether internal text char widths can be cached\r\n * @type Boolean\r\n */\r\n declare caching: boolean;\r\n\r\n static ownDefaults = iTextDefaultValues;\r\n\r\n static getDefaults(): Record<string, any> {\r\n return { ...super.getDefaults(), ...IText.ownDefaults };\r\n }\r\n\r\n static type = 'IText';\r\n\r\n get type() {\r\n const type = super.type;\r\n // backward compatibility\r\n return type === 'itext' ? 'i-text' : type;\r\n }\r\n\r\n /**\r\n * Constructor\r\n * @param {String} text Text string\r\n * @param {Object} [options] Options object\r\n */\r\n constructor(text: string, options?: Props) {\r\n super(text, { ...IText.ownDefaults, ...options } as Props);\r\n this.initBehavior();\r\n }\r\n\r\n /**\r\n * While editing handle differently\r\n * @private\r\n * @param {string} key\r\n * @param {*} value\r\n */\r\n _set(key: string, value: any) {\r\n if (this.isEditing && this._savedProps && key in this._savedProps) {\r\n // @ts-expect-error irritating TS\r\n this._savedProps[key] = value;\r\n return this;\r\n }\r\n if (key === 'canvas') {\r\n this.canvas instanceof Canvas &&\r\n this.canvas.textEditingManager.remove(this);\r\n value instanceof Canvas && value.textEditingManager.add(this);\r\n }\r\n return super._set(key, value);\r\n }\r\n\r\n /**\r\n * Sets selection start (left boundary of a selection)\r\n * @param {Number} index Index to set selection start to\r\n */\r\n setSelectionStart(index: number) {\r\n index = Math.max(index, 0);\r\n this._updateAndFire('selectionStart', index);\r\n }\r\n\r\n /**\r\n * Sets selection end (right boundary of a selection)\r\n * @param {Number} index Index to set selection end to\r\n */\r\n setSelectionEnd(index: number) {\r\n index = Math.min(index, this.text.length);\r\n this._updateAndFire('selectionEnd', index);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} property 'selectionStart' or 'selectionEnd'\r\n * @param {Number} index new position of property\r\n */\r\n protected _updateAndFire(\r\n property: 'selectionStart' | 'selectionEnd',\r\n index: number,\r\n ) {\r\n if (this[property] !== index) {\r\n this._fireSelectionChanged();\r\n this[property] = index;\r\n }\r\n this._updateTextarea();\r\n }\r\n\r\n /**\r\n * Fires the even of selection changed\r\n * @private\r\n */\r\n _fireSelectionChanged() {\r\n this.fire('selection:changed');\r\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\r\n }\r\n\r\n /**\r\n * Initialize text dimensions. Render all text on given context\r\n * or on a offscreen canvas to get the text width with measureText.\r\n * Updates this.width and this.height with the proper values.\r\n * Does not return dimensions.\r\n * @private\r\n */\r\n initDimensions() {\r\n this.isEditing && this.initDelayedCursor();\r\n super.initDimensions();\r\n }\r\n\r\n /**\r\n * Gets style of a current selection/cursor (at the start position)\r\n * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used.\r\n * @param {Number} startIndex Start index to get styles at\r\n * @param {Number} endIndex End index to get styles at, if not specified selectionEnd or startIndex + 1\r\n * @param {Boolean} [complete] get full style or not\r\n * @return {Array} styles an array with one, zero or more Style objects\r\n */\r\n getSelectionStyles(\r\n startIndex: number = this.selectionStart || 0,\r\n endIndex: number = this.selectionEnd,\r\n complete?: boolean,\r\n ) {\r\n return super.getSelectionStyles(startIndex, endIndex, complete);\r\n }\r\n\r\n /**\r\n * Sets style of a current selection, if no selection exist, do not set anything.\r\n * @param {Object} [styles] Styles object\r\n * @param {Number} [startIndex] Start index to get styles at\r\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\r\n */\r\n setSelectionStyles(\r\n styles: object,\r\n startIndex: number = this.selectionStart || 0,\r\n endIndex: number = this.selectionEnd,\r\n ) {\r\n return super.setSelectionStyles(styles, startIndex, endIndex);\r\n }\r\n\r\n /**\r\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\r\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\r\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\r\n */\r\n get2DCursorLocation(\r\n selectionStart = this.selectionStart,\r\n skipWrapping?: boolean,\r\n ) {\r\n return super.get2DCursorLocation(selectionStart, skipWrapping);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n render(ctx: CanvasRenderingContext2D) {\r\n super.render(ctx);\r\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\r\n // the correct position but not at every cursor animation.\r\n this.cursorOffsetCache = {};\r\n this.renderCursorOrSelection();\r\n }\r\n\r\n /**\r\n * @override block cursor/selection logic while rendering the exported canvas\r\n * @todo this workaround should be replaced with a more robust solution\r\n */\r\n toCanvasElement(options?: ObjectToCanvasElementOptions): HTMLCanvasElement {\r\n const isEditing = this.isEditing;\r\n this.isEditing = false;\r\n const canvas = super.toCanvasElement(options);\r\n this.isEditing = isEditing;\r\n return canvas;\r\n }\r\n\r\n /**\r\n * Renders cursor or selection (depending on what exists)\r\n * it does on the contextTop. If contextTop is not available, do nothing.\r\n */\r\n renderCursorOrSelection() {\r\n if (!this.isEditing || !this.canvas) {\r\n return;\r\n }\r\n const ctx = this.clearContextTop(true);\r\n if (!ctx) {\r\n return;\r\n }\r\n const boundaries = this._getCursorBoundaries();\r\n\r\n const ancestors = this.findAncestorsWithClipPath();\r\n const hasAncestorsWithClipping = ancestors.length > 0;\r\n let drawingCtx: CanvasRenderingContext2D = ctx;\r\n let drawingCanvas: HTMLCanvasElement | undefined = undefined;\r\n if (hasAncestorsWithClipping) {\r\n // we have some clipPath, we need to draw the selection on an intermediate layer.\r\n drawingCanvas = createCanvasElementFor(ctx.canvas);\r\n drawingCtx = drawingCanvas.getContext('2d')!;\r\n applyCanvasTransform(drawingCtx, this.canvas);\r\n const m = this.calcTransformMatrix();\r\n drawingCtx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n }\r\n\r\n if (this.selectionStart === this.selectionEnd && !this.inCompositionMode) {\r\n this.renderCursor(drawingCtx, boundaries);\r\n } else {\r\n this.renderSelection(drawingCtx, boundaries);\r\n }\r\n\r\n if (hasAncestorsWithClipping) {\r\n // we need a neutral context.\r\n // this won't work for nested clippaths in which a clippath\r\n // has its own clippath\r\n for (const ancestor of ancestors) {\r\n const clipPath = ancestor.clipPath!;\r\n const clippingCanvas = createCanvasElementFor(ctx.canvas);\r\n const clippingCtx = clippingCanvas.getContext('2d')!;\r\n applyCanvasTransform(clippingCtx, this.canvas);\r\n // position the ctx in the center of the outer ancestor\r\n if (!clipPath.absolutePositioned) {\r\n const m = ancestor.calcTransformMatrix();\r\n clippingCtx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\r\n }\r\n clipPath.transform(clippingCtx);\r\n // we assign an empty drawing context, we don't plan to have this working for nested clippaths for now\r\n clipPath.drawObject(clippingCtx, true, {});\r\n this.drawClipPathOnCache(drawingCtx, clipPath, clippingCanvas);\r\n }\r\n }\r\n\r\n if (hasAncestorsWithClipping) {\r\n ctx.setTransform(1, 0, 0, 1, 0, 0);\r\n ctx.drawImage(drawingCanvas!, 0, 0);\r\n }\r\n\r\n this.canvas.contextTopDirty = true;\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * Finds and returns an array of clip paths that are applied to the parent\r\n * group(s) of the current FabricObject instance. The object's hierarchy is\r\n * traversed upwards (from the current object towards the root of the canvas),\r\n * checking each parent object for the presence of a `clipPath` that is not\r\n * absolutely positioned.\r\n */\r\n findAncestorsWithClipPath(): FabricObject[] {\r\n const clipPathAncestors: FabricObject[] = [];\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n let obj: FabricObject | undefined = this;\r\n while (obj) {\r\n if (obj.clipPath) {\r\n clipPathAncestors.push(obj);\r\n }\r\n obj = obj.parent;\r\n }\r\n\r\n return clipPathAncestors;\r\n }\r\n\r\n /**\r\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\r\n * left/top are left/top of entire text box\r\n * leftOffset/topOffset are offset from that left/top point of a text box\r\n * @private\r\n * @param {number} [index] index from start\r\n * @param {boolean} [skipCaching]\r\n */\r\n _getCursorBoundaries(\r\n index: number = this.selectionStart,\r\n skipCaching?: boolean,\r\n ): CursorBoundaries {\r\n // Use advanced cursor positioning if available\r\n if (this.enableAdvancedLayout) {\r\n return this._getCursorBoundariesAdvanced(index);\r\n }\r\n \r\n // Fall back to original method\r\n return this._getCursorBoundariesOriginal(index, skipCaching);\r\n }\r\n\r\n\r\n /**\r\n * Caches and returns cursor left/top offset relative to instance's center point\r\n * @private\r\n * @param {number} index index from start\r\n * @param {boolean} [skipCaching]\r\n */\r\n _getCursorBoundariesOffsets(\r\n index: number,\r\n skipCaching?: boolean,\r\n ): { left: number; top: number } {\r\n if (skipCaching) {\r\n return this.__getCursorBoundariesOffsets(index);\r\n }\r\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\r\n return this.cursorOffsetCache as { left: number; top: number };\r\n }\r\n return (this.cursorOffsetCache = this.__getCursorBoundariesOffsets(index));\r\n }\r\n\r\n /**\r\n * Enhanced cursor boundaries using advanced hit testing when available\r\n * @private\r\n */\r\n _getCursorBoundariesAdvanced(index: number): CursorBoundaries {\r\n if (!this.enableAdvancedLayout || !(this as any)._layoutTextAdvanced) {\r\n return this._getCursorBoundariesOriginal(index);\r\n }\r\n\r\n const layout = (this as any)._layoutTextAdvanced();\r\n const cursorRect = getCursorRect(index, layout, (this as any)._getAdvancedLayoutOptions());\r\n \r\n return {\r\n left: this._getLeftOffset(),\r\n top: this._getTopOffset(),\r\n leftOffset: cursorRect.x,\r\n topOffset: cursorRect.y,\r\n };\r\n }\r\n\r\n /**\r\n * Enhanced selection start from pointer using BiDi-aware hit testing\r\n * @override\r\n */\r\n getSelectionStartFromPointer(e: TPointerEvent): number {\r\n if (!this.enableAdvancedLayout || !(this as any)._layoutTextAdvanced) {\r\n return super.getSelectionStartFromPointer(e);\r\n }\r\n\r\n const mouseOffset = this.canvas!.getScenePoint(e)\r\n .transform(invertTransform(this.calcTransformMatrix()))\r\n .add(new Point(-this._getLeftOffset(), -this._getTopOffset()));\r\n\r\n // Use BiDi-aware hit testing instead of naive RTL coordinate flipping\r\n const layout = (this as any)._layoutTextAdvanced();\r\n const hitResult = hitTest(mouseOffset.x, mouseOffset.y, layout, (this as any)._getAdvancedLayoutOptions());\r\n \r\n return Math.min(hitResult.charIndex, this._text.length);\r\n }\r\n\r\n /**\r\n * Original cursor boundaries implementation\r\n * @private\r\n */\r\n _getCursorBoundariesOriginal(index: number, skipCaching?: boolean): CursorBoundaries {\r\n const left = this._getLeftOffset(),\r\n top = this._getTopOffset(),\r\n offsets = this._getCursorBoundariesOffsets(index, skipCaching);\r\n return {\r\n left: left,\r\n top: top,\r\n leftOffset: offsets.left,\r\n topOffset: offsets.top,\r\n };\r\n }\r\n\r\n /**\r\n * Calculates cursor left/top offset relative to instance's center point\r\n * @private\r\n * @param {number} index index from start\r\n */\r\n __getCursorBoundariesOffsets(index: number) {\r\n let topOffset = 0,\r\n leftOffset = 0;\r\n const { charIndex, lineIndex } = this.get2DCursorLocation(index);\r\n\r\n for (let i = 0; i < lineIndex; i++) {\r\n topOffset += this.getHeightOfLine(i);\r\n }\r\n const lineLeftOffset = this._getLineLeftOffset(lineIndex);\r\n const bound = this.__charBounds[lineIndex][charIndex];\r\n bound && (leftOffset = bound.left);\r\n if (\r\n this.charSpacing !== 0 &&\r\n charIndex === this._textLines[lineIndex].length\r\n ) {\r\n leftOffset -= this._getWidthOfCharSpacing();\r\n }\r\n const boundaries = {\r\n top: topOffset,\r\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\r\n };\r\n if (this.direction === 'rtl') {\r\n if (\r\n this.textAlign === RIGHT ||\r\n this.textAlign === JUSTIFY ||\r\n this.textAlign === JUSTIFY_RIGHT\r\n ) {\r\n boundaries.left *= -1;\r\n } else if (this.textAlign === LEFT || this.textAlign === JUSTIFY_LEFT) {\r\n boundaries.left = lineLeftOffset - (leftOffset > 0 ? leftOffset : 0);\r\n } else if (\r\n this.textAlign === CENTER ||\r\n this.textAlign === JUSTIFY_CENTER\r\n ) {\r\n boundaries.left = lineLeftOffset - (leftOffset > 0 ? leftOffset : 0);\r\n }\r\n }\r\n return boundaries;\r\n }\r\n\r\n /**\r\n * Renders cursor on context Top, outside the animation cycle, on request\r\n * Used for the drag/drop effect.\r\n * If contextTop is not available, do nothing.\r\n */\r\n renderCursorAt(selectionStart: number) {\r\n this._renderCursor(\r\n this.canvas!.contextTop,\r\n this._getCursorBoundaries(selectionStart, true),\r\n selectionStart,\r\n );\r\n }\r\n\r\n /**\r\n * Renders cursor\r\n * @param {Object} boundaries\r\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\r\n */\r\n renderCursor(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries) {\r\n this._renderCursor(ctx, boundaries, this.selectionStart);\r\n }\r\n\r\n /**\r\n * Return the data needed to render the cursor for given selection start\r\n * The left,top are relative to the object, while width and height are prescaled\r\n * to look think with canvas zoom and object scaling,\r\n * so they depend on canvas and object scaling\r\n */\r\n getCursorRenderingData(\r\n selectionStart: number = this.selectionStart,\r\n boundaries: CursorBoundaries = this._getCursorBoundaries(selectionStart),\r\n ): CursorRenderingData {\r\n const cursorLocation = this.get2DCursorLocation(selectionStart),\r\n lineIndex = cursorLocation.lineIndex,\r\n charIndex =\r\n cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\r\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\r\n multiplier = this.getObjectScaling().x * this.canvas!.getZoom(),\r\n cursorWidth = this.cursorWidth / multiplier,\r\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY'),\r\n topOffset =\r\n boundaries.topOffset +\r\n ((1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex)) /\r\n this.lineHeight -\r\n charHeight * (1 - this._fontSizeFraction);\r\n\r\n return {\r\n color:\r\n this.cursorColor ||\r\n (this.getValueOfPropertyAt(lineIndex, charIndex, 'fill') as string),\r\n opacity: this._currentCursorOpacity,\r\n left: boundaries.left + boundaries.leftOffset - cursorWidth / 2,\r\n top: topOffset + boundaries.top + dy,\r\n width: cursorWidth,\r\n height: charHeight,\r\n };\r\n }\r\n\r\n /**\r\n * Render the cursor at the given selectionStart.\r\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\r\n */\r\n _renderCursor(\r\n ctx: CanvasRenderingContext2D,\r\n boundaries: CursorBoundaries,\r\n selectionStart: number,\r\n ) {\r\n const { color, opacity, left, top, width, height } =\r\n this.getCursorRenderingData(selectionStart, boundaries);\r\n ctx.fillStyle = color;\r\n ctx.globalAlpha = opacity;\r\n ctx.fillRect(left, top, width, height);\r\n }\r\n\r\n /**\r\n * Renders text selection\r\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\r\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\r\n */\r\n renderSelection(ctx: CanvasRenderingContext2D, boundaries: CursorBoundaries) {\r\n const selection = {\r\n selectionStart: this.inCompositionMode\r\n ? this.hiddenTextarea!.selectionStart\r\n : this.selectionStart,\r\n selectionEnd: this.inCompositionMode\r\n ? this.hiddenTextarea!.selectionEnd\r\n : this.selectionEnd,\r\n };\r\n this._renderSelection(ctx, selection, boundaries);\r\n }\r\n\r\n /**\r\n * Renders drag start text selection\r\n */\r\n renderDragSourceEffect() {\r\n const dragStartSelection =\r\n this.draggableTextDelegate.getDragStartSelection()!;\r\n this._renderSelection(\r\n this.canvas!.contextTop,\r\n dragStartSelection,\r\n this._getCursorBoundaries(dragStartSelection.selectionStart, true),\r\n );\r\n }\r\n\r\n renderDropTargetEffect(e: DragEvent) {\r\n const dragSelection = this.getSelectionStartFromPointer(e);\r\n this.renderCursorAt(dragSelection);\r\n }\r\n\r\n /**\r\n * Renders text selection\r\n * @private\r\n * @param {{ selectionStart: number, selectionEnd: number }} selection\r\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\r\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\r\n */\r\n _renderSelection(\r\n ctx: CanvasRenderingContext2D,\r\n selection: { selectionStart: number; selectionEnd: number },\r\n boundaries: CursorBoundaries,\r\n ) {\r\n const selectionStart = selection.selectionStart,\r\n selectionEnd = selection.selectionEnd,\r\n isJustify = this.textAlign.includes(JUSTIFY),\r\n start = this.get2DCursorLocation(selectionStart),\r\n end = this.get2DCursorLocation(selectionEnd),\r\n startLine = start.lineIndex,\r\n endLine = end.lineIndex,\r\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\r\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\r\n\r\n for (let i = startLine; i <= endLine; i++) {\r\n const lineOffset = this._getLineLeftOffset(i) || 0;\r\n let lineHeight = this.getHeightOfLine(i),\r\n realLineHeight = 0,\r\n boxStart = 0,\r\n boxEnd = 0;\r\n \r\n // Simplified selection rendering that works for both LTR and RTL\r\n if (i === startLine) {\r\n boxStart = this.__charBounds[startLine][startChar].left;\r\n }\r\n if (i >= startLine && i < endLine) {\r\n boxEnd =\r\n isJustify && !this.isEndOfWrapping(i)\r\n ? this.width\r\n : this.getLineWidth(i) || 5;\r\n } else if (i === endLine) {\r\n if (endChar === 0) {\r\n boxEnd = this.__charBounds[endLine][endChar].left;\r\n } else {\r\n const charSpacing = this._getWidthOfCharSpacing();\r\n boxEnd =\r\n this.__charBounds[endLine][endChar - 1].left +\r\n this.__charBounds[endLine][endChar - 1].width -\r\n charSpacing;\r\n }\r\n }\r\n realLineHeight = lineHeight;\r\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\r\n lineHeight /= this.lineHeight;\r\n }\r\n let drawStart = boundaries.left + lineOffset + boxStart,\r\n drawHeight = lineHeight,\r\n extraTop = 0;\r\n const drawWidth = boxEnd - boxStart;\r\n if (this.inCompositionMode) {\r\n ctx.fillStyle = this.compositionColor || 'black';\r\n drawHeight = 1;\r\n extraTop = lineHeight;\r\n } else {\r\n ctx.fillStyle = this.selectionColor;\r\n }\r\n if (this.direction === 'rtl') {\r\n if (\r\n this.textAlign === RIGHT ||\r\n this.textAlign === JUSTIFY ||\r\n this.textAlign === JUSTIFY_RIGHT\r\n ) {\r\n drawStart = this.width - drawStart - drawWidth;\r\n } else if (this.textAlign === LEFT || this.textAlign === JUSTIFY_LEFT) {\r\n drawStart = boundaries.left + lineOffset - boxEnd;\r\n } else if (\r\n this.textAlign === CENTER ||\r\n this.textAlign === JUSTIFY_CENTER\r\n ) {\r\n drawStart = boundaries.left + lineOffset - boxEnd;\r\n }\r\n }\r\n ctx.fillRect(\r\n drawStart,\r\n boundaries.top + boundaries.topOffset + extraTop,\r\n drawWidth,\r\n drawHeight,\r\n );\r\n boundaries.topOffset += realLineHeight;\r\n }\r\n }\r\n\r\n /**\r\n * High level function to know the height of the cursor.\r\n * the currentChar is the one that precedes the cursor\r\n * Returns fontSize of char at the current cursor\r\n * Unused from the library, is for the end user\r\n * @return {Number} Character font size\r\n */\r\n getCurrentCharFontSize(): number {\r\n const cp = this._getCurrentCharIndex();\r\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\r\n }\r\n\r\n /**\r\n * High level function to know the color of the cursor.\r\n * the currentChar is the one that precedes the cursor\r\n * Returns color (fill) of char at the current cursor\r\n * if the text object has a pattern or gradient for filler, it will return that.\r\n * Unused by the library, is for the end user\r\n * @return {String | TFiller} Character color (fill)\r\n */\r\n getCurrentCharColor(): string | TFiller | null {\r\n const cp = this._getCurrentCharIndex();\r\n return this.getValueOfPropertyAt(cp.l, cp.c, FILL);\r\n }\r\n\r\n /**\r\n * Returns the cursor position for the getCurrent.. functions\r\n * @private\r\n */\r\n _getCurrentCharIndex() {\r\n const cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\r\n charIndex =\r\n cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\r\n return { l: cursorPosition.lineIndex, c: charIndex };\r\n }\r\n\r\n dispose() {\r\n this.exitEditingImpl();\r\n this.draggableTextDelegate.dispose();\r\n super.dispose();\r\n }\r\n}\r\n\r\nclassRegistry.setClass(IText);\r\n// legacy\r\nclassRegistry.setClass(IText, 'i-text');\r\n"],"names":["protectedDefaultValues","_selectionDirection","_reSpace","inCompositionMode","iTextDefaultValues","selectionStart","selectionEnd","selectionColor","isEditing","editable","editingBorderColor","cursorWidth","cursorColor","cursorDelay","cursorDuration","caching","hiddenTextareaContainer","keysMap","keysMapRtl","ctrlKeysMapDown","ctrlKeysMapUp","IText","ITextClickBehavior","getDefaults","ownDefaults","type","constructor","text","options","initBehavior","_set","key","value","_savedProps","canvas","Canvas","textEditingManager","remove","add","setSelectionStart","index","Math","max","_updateAndFire","setSelectionEnd","min","length","property","_fireSelectionChanged","_updateTextarea","fire","target","initDimensions","initDelayedCursor","getSelectionStyles","startIndex","arguments","undefined","endIndex","complete","setSelectionStyles","styles","get2DCursorLocation","skipWrapping","render","ctx","cursorOffsetCache","renderCursorOrSelection","toCanvasElement","clearContextTop","boundaries","_getCursorBoundaries","ancestors","findAncestorsWithClipPath","hasAncestorsWithClipping","drawingCtx","drawingCanvas","createCanvasElementFor","getContext","applyCanvasTransform","m","calcTransformMatrix","transform","renderCursor","renderSelection","ancestor","clipPath","clippingCanvas","clippingCtx","absolutePositioned","drawObject","drawClipPathOnCache","setTransform","drawImage","contextTopDirty","restore","clipPathAncestors","obj","push","parent","skipCaching","enableAdvancedLayout","_getCursorBoundariesAdvanced","_getCursorBoundariesOriginal","_getCursorBoundariesOffsets","__getCursorBoundariesOffsets","_layoutTextAdvanced","layout","cursorRect","getCursorRect","_getAdvancedLayoutOptions","left","_getLeftOffset","top","_getTopOffset","leftOffset","x","topOffset","y","getSelectionStartFromPointer","e","mouseOffset","getScenePoint","invertTransform","Point","hitResult","hitTest","charIndex","_text","offsets","lineIndex","i","getHeightOfLine","lineLeftOffset","_getLineLeftOffset","bound","__charBounds","charSpacing","_textLines","_getWidthOfCharSpacing","direction","textAlign","RIGHT","JUSTIFY","JUSTIFY_RIGHT","LEFT","JUSTIFY_LEFT","CENTER","JUSTIFY_CENTER","renderCursorAt","_renderCursor","contextTop","getCursorRenderingData","cursorLocation","charHeight","getValueOfPropertyAt","multiplier","getObjectScaling","getZoom","dy","_fontSizeFraction","lineHeight","color","opacity","_currentCursorOpacity","width","height","fillStyle","globalAlpha","fillRect","selection","hiddenTextarea","_renderSelection","renderDragSourceEffect","dragStartSelection","draggableTextDelegate","getDragStartSelection","renderDropTargetEffect","dragSelection","isJustify","includes","start","end","startLine","endLine","startChar","endChar","lineOffset","realLineHeight","boxStart","boxEnd","isEndOfWrapping","getLineWidth","drawStart","drawHeight","extraTop","drawWidth","compositionColor","getCurrentCharFontSize","cp","_getCurrentCharIndex","l","c","getCurrentCharColor","FILL","cursorPosition","dispose","exitEditingImpl","_defineProperty","classRegistry","setClass"],"mappings":"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"}
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"ITextBehavior.min.mjs","sources":["../../../../src/shapes/IText/ITextBehavior.ts"],"sourcesContent":["import type { ObjectEvents, TPointerEvent } from '../../EventTypeDefs';\nimport { Point } from '../../Point';\nimport type { FabricObject } from '../Object/FabricObject';\nimport { FabricText } from '../Text/Text';\nimport { animate } from '../../util/animation/animate';\nimport type { TOnAnimationChangeCallback } from '../../util/animation/types';\nimport type { ValueAnimation } from '../../util/animation/ValueAnimation';\nimport type { TextStyleDeclaration } from '../Text/StyledText';\nimport type { SerializedTextProps, TextProps } from '../Text/Text';\nimport type { TOptions } from '../../typedefs';\nimport { getDocumentFromElement } from '../../util/dom_misc';\nimport { LEFT, MODIFIED, RIGHT, reNewline } from '../../constants';\nimport type { IText } from './IText';\nimport { enterTextOverlayEdit } from '../../text/overlayEditor';\nimport { extractLinesFromDOM, storeBrowserLines } from '../../text/browserLines';\n\n/**\n * extend this regex to support non english languages\n *\n * - ` ` Matches a SPACE character (char code 32).\n * - `\\n` Matches a LINE FEED character (char code 10).\n * - `.` Matches a \".\" character (char code 46).\n * - `,` Matches a \",\" character (char code 44).\n * - `;` Matches a \";\" character (char code 59).\n * - `!` Matches a \"!\" character (char code 33).\n * - `\\?` Matches a \"?\" character (char code 63).\n * - `\\-` Matches a \"-\" character (char code 45).\n */\n// eslint-disable-next-line no-useless-escape\nconst reNonWord = /[ \\n\\.,;!\\?\\-]/;\n\nexport type ITextEvents = ObjectEvents & {\n 'selection:changed': never;\n changed: never | { index: number; action: string };\n 'editing:entered': never | { e: TPointerEvent };\n 'editing:exited': never;\n};\n\nexport abstract class ITextBehavior<\n Props extends TOptions<TextProps> = Partial<TextProps>,\n SProps extends SerializedTextProps = SerializedTextProps,\n EventSpec extends ITextEvents = ITextEvents,\n> extends FabricText<Props, SProps, EventSpec> {\n declare abstract isEditing: boolean;\n declare abstract cursorDelay: number;\n declare abstract selectionStart: number;\n declare abstract selectionEnd: number;\n declare abstract cursorDuration: number;\n declare abstract editable: boolean;\n declare abstract editingBorderColor: string;\n\n declare abstract compositionStart: number;\n declare abstract compositionEnd: number;\n\n declare abstract hiddenTextarea: HTMLTextAreaElement | null;\n\n /**\n * Helps determining when the text is in composition, so that the cursor\n * rendering is altered.\n */\n declare protected inCompositionMode: boolean;\n\n declare protected _reSpace: RegExp;\n declare private _currentTickState?: ValueAnimation;\n declare private _currentTickCompleteState?: ValueAnimation;\n protected _currentCursorOpacity = 1;\n declare private _textBeforeEdit: string;\n declare protected __selectionStartOnMouseDown: number;\n\n /**\n * Keeps track if the IText object was selected before the actual click.\n * This because we want to delay enter editing by a click.\n */\n declare protected selected: boolean;\n declare protected cursorOffsetCache: { left?: number; top?: number };\n declare protected _savedProps?: {\n hasControls: boolean;\n borderColor: string;\n lockMovementX: boolean;\n lockMovementY: boolean;\n selectable: boolean;\n hoverCursor: CSSStyleDeclaration['cursor'] | null;\n defaultCursor?: CSSStyleDeclaration['cursor'];\n moveCursor?: CSSStyleDeclaration['cursor'];\n };\n declare protected _selectionDirection: 'left' | 'right' | null;\n\n abstract initHiddenTextarea(): void;\n abstract _fireSelectionChanged(): void;\n abstract renderCursorOrSelection(): void;\n abstract getSelectionStartFromPointer(e: TPointerEvent): number;\n abstract _getCursorBoundaries(\n index: number,\n skipCaching?: boolean,\n ): {\n left: number;\n top: number;\n leftOffset: number;\n topOffset: number;\n };\n\n /**\n * Initializes all the interactive behavior of IText\n */\n initBehavior() {\n this._tick = this._tick.bind(this);\n this._onTickComplete = this._onTickComplete.bind(this);\n this.updateSelectionOnMouseMove =\n this.updateSelectionOnMouseMove.bind(this);\n }\n\n onDeselect(options?: { e?: TPointerEvent; object?: FabricObject }) {\n this.isEditing && this.exitEditing();\n this.selected = false;\n return super.onDeselect(options);\n }\n\n /**\n * @private\n */\n _animateCursor({\n toValue,\n duration,\n delay,\n onComplete,\n }: {\n toValue: number;\n duration: number;\n delay?: number;\n onComplete?: TOnAnimationChangeCallback<number>;\n }) {\n return animate({\n startValue: this._currentCursorOpacity,\n endValue: toValue,\n duration,\n delay,\n onComplete,\n abort: () =>\n !this.canvas ||\n // we do not want to animate a selection, only cursor\n this.selectionStart !== this.selectionEnd,\n onChange: (value) => {\n this._currentCursorOpacity = value;\n this.renderCursorOrSelection();\n },\n });\n }\n\n /**\n * changes the cursor from visible to invisible\n */\n private _tick(delay?: number) {\n this._currentTickState = this._animateCursor({\n toValue: 0,\n duration: this.cursorDuration / 2,\n delay: Math.max(delay || 0, 100),\n onComplete: this._onTickComplete,\n });\n }\n\n /**\n * Changes the cursor from invisible to visible\n */\n private _onTickComplete() {\n this._currentTickCompleteState?.abort();\n this._currentTickCompleteState = this._animateCursor({\n toValue: 1,\n duration: this.cursorDuration,\n onComplete: this._tick,\n });\n }\n\n /**\n * Initializes delayed cursor\n */\n initDelayedCursor(restart?: boolean) {\n this.abortCursorAnimation();\n this._tick(restart ? 0 : this.cursorDelay);\n }\n\n /**\n * Aborts cursor animation, clears all timeouts and clear textarea context if necessary\n */\n abortCursorAnimation() {\n let shouldClear = false;\n [this._currentTickState, this._currentTickCompleteState].forEach(\n (cursorAnimation) => {\n if (cursorAnimation && !cursorAnimation.isDone()) {\n shouldClear = true;\n cursorAnimation.abort();\n }\n },\n );\n\n this._currentCursorOpacity = 1;\n\n // make sure we clear context even if instance is not editing\n if (shouldClear) {\n this.clearContextTop();\n }\n }\n\n /**\n * Restart tue cursor animation if either is in complete state ( between animations )\n * or if it never started before\n */\n restartCursorIfNeeded() {\n if (\n [this._currentTickState, this._currentTickCompleteState].some(\n (cursorAnimation) => !cursorAnimation || cursorAnimation.isDone(),\n )\n ) {\n this.initDelayedCursor();\n }\n }\n\n /**\n * Selects entire text\n */\n selectAll() {\n this.selectionStart = 0;\n this.selectionEnd = this._text.length;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n }\n\n /**\n * Selects entire text and updates the visual state\n */\n cmdAll() {\n this.selectAll();\n this.renderCursorOrSelection();\n }\n\n /**\n * Returns selected text\n * @return {String}\n */\n getSelectedText(): string {\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n }\n\n /**\n * Find new selection index representing start of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryLeft(startFrom: number): number {\n let offset = 0,\n index = startFrom - 1;\n\n // remove space before cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index--;\n }\n }\n while (/S/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n }\n\n /**\n * Find new selection index representing end of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryRight(startFrom: number): number {\n let offset = 0,\n index = startFrom;\n\n // remove space after cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index++;\n }\n }\n while (/S/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n }\n\n /**\n * Find new selection index representing start of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryLeft(startFrom: number): number {\n let offset = 0,\n index = startFrom - 1;\n\n while (!/\\n/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n }\n\n /**\n * Find new selection index representing end of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryRight(startFrom: number): number {\n let offset = 0,\n index = startFrom;\n\n while (!/\\n/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n }\n\n /**\n * Finds index corresponding to beginning or end of a word\n * @param {Number} selectionStart Index of a character\n * @param {Number} direction 1 or -1\n * @return {Number} Index of the beginning or end of a word\n */\n searchWordBoundary(selectionStart: number, direction: 1 | -1): number {\n const text = this._text;\n // if we land on a space we move the cursor backwards\n // if we are searching boundary end we move the cursor backwards ONLY if we don't land on a line break\n let index =\n selectionStart > 0 &&\n this._reSpace.test(text[selectionStart]) &&\n (direction === -1 || !reNewline.test(text[selectionStart - 1]))\n ? selectionStart - 1\n : selectionStart,\n _char = text[index];\n while (index > 0 && index < text.length && !reNonWord.test(_char)) {\n index += direction;\n _char = text[index];\n }\n if (direction === -1 && reNonWord.test(_char)) {\n index++;\n }\n return index;\n }\n\n /**\n * Selects the word that contains the char at index selectionStart\n * @param {Number} selectionStart Index of a character\n */\n selectWord(selectionStart?: number) {\n selectionStart = selectionStart ?? this.selectionStart;\n // search backwards\n const newSelectionStart = this.searchWordBoundary(selectionStart, -1),\n // search forward\n newSelectionEnd = Math.max(\n newSelectionStart,\n this.searchWordBoundary(selectionStart, 1),\n );\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n // remove next major, for now it renders twice :(\n this.renderCursorOrSelection();\n }\n\n /**\n * Selects the line that contains selectionStart\n * @param {Number} selectionStart Index of a character\n */\n selectLine(selectionStart?: number) {\n selectionStart = selectionStart ?? this.selectionStart;\n const newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n\n /**\n * Enters editing state\n */\n enterEditing(e?: TPointerEvent) {\n if (this.isEditing || !this.editable) {\n return;\n }\n this.enterEditingImpl();\n this.fire('editing:entered', e ? { e } : undefined);\n this._fireSelectionChanged();\n if (this.canvas) {\n this.canvas.fire('text:editing:entered', {\n target: this as unknown as IText,\n e,\n });\n this.canvas.requestRenderAll();\n }\n }\n\n /**\n * runs the actual logic that enter from editing state, see {@link enterEditing}\n */\n enterEditingImpl() {\n if (this.canvas) {\n this.canvas.calcOffset();\n this.canvas.textEditingManager.exitTextEditing();\n }\n\n this.isEditing = true;\n\n // Check if using overlay editing\n if ((this as any).useOverlayEditing) {\n this.enterOverlayEditing();\n } else {\n this.initHiddenTextarea();\n this.hiddenTextarea!.focus();\n this.hiddenTextarea!.value = this.text;\n this._updateTextarea();\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n this._tick();\n }\n }\n\n /**\n * Enter overlay editing mode using DOM textarea overlay\n */\n private enterOverlayEditing() {\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n\n if (!this.canvas) {\n return;\n }\n\n // Create overlay editor\n enterTextOverlayEdit(this.canvas, this as any, {\n onCommit: (text: string) => {\n this.commitOverlayEdit(text);\n },\n onCancel: () => {\n this.cancelOverlayEdit();\n }\n });\n }\n\n /**\n * Commit overlay editing changes\n */\n private commitOverlayEdit(text: string) {\n \n const overlayEditor = (this as any).__overlayEditor;\n \n if (overlayEditor) {\n // Extract browser lines for pixel-perfect rendering\n try {\n const result = extractLinesFromDOM(overlayEditor.textareaElement);\n storeBrowserLines(this, result.lines);\n } catch (error) {\n console.warn('Failed to extract browser lines:', error);\n }\n }\n\n // Update text content and trigger layout recalculation\n this.text = text;\n this.dirty = true;\n this.initDimensions();\n this.setCoords();\n this.exitEditing();\n this.fire('changed');\n this.canvas && this.canvas.requestRenderAll();\n }\n\n /**\n * Cancel overlay editing without changes\n */\n private cancelOverlayEdit() {\n // Restore original text\n this.text = this._textBeforeEdit || this.text;\n this.exitEditing();\n }\n\n /**\n * called by {@link Canvas#textEditingManager}\n */\n updateSelectionOnMouseMove(e: TPointerEvent) {\n if (this.getActiveControl()) {\n return;\n }\n\n const el = this.hiddenTextarea!;\n // regain focus\n getDocumentFromElement(el).activeElement !== el && el.focus();\n\n const newSelectionStart = this.getSelectionStartFromPointer(e),\n currentStart = this.selectionStart,\n currentEnd = this.selectionEnd;\n if (\n (newSelectionStart !== this.__selectionStartOnMouseDown ||\n currentStart === currentEnd) &&\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n ) {\n return;\n }\n\n // Always ensure selectionStart <= selectionEnd for proper text selection\n const startIndex = Math.min(\n newSelectionStart,\n this.__selectionStartOnMouseDown,\n );\n const endIndex = Math.max(\n newSelectionStart,\n this.__selectionStartOnMouseDown,\n );\n\n this.selectionStart = startIndex;\n this.selectionEnd = endIndex;\n\n if (\n this.selectionStart !== currentStart ||\n this.selectionEnd !== currentEnd\n ) {\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n }\n }\n\n /**\n * @private\n */\n _setEditingProps() {\n this.hoverCursor = 'text';\n\n if (this.canvas) {\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n }\n\n this.borderColor = this.editingBorderColor;\n this.hasControls = this.selectable = false;\n this.lockMovementX = this.lockMovementY = true;\n }\n\n /**\n * convert from textarea to grapheme indexes\n */\n fromStringToGraphemeSelection(start: number, end: number, text: string) {\n const smallerTextStart = text.slice(0, start),\n graphemeStart = this.graphemeSplit(smallerTextStart).length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n const smallerTextEnd = text.slice(start, end),\n graphemeEnd = this.graphemeSplit(smallerTextEnd).length;\n return {\n selectionStart: graphemeStart,\n selectionEnd: graphemeStart + graphemeEnd,\n };\n }\n\n /**\n * convert from fabric to textarea values\n */\n fromGraphemeToStringSelection(\n start: number,\n end: number,\n graphemes: string[],\n ) {\n const smallerTextStart = graphemes.slice(0, start),\n graphemeStart = smallerTextStart.join('').length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n const smallerTextEnd = graphemes.slice(start, end),\n graphemeEnd = smallerTextEnd.join('').length;\n return {\n selectionStart: graphemeStart,\n selectionEnd: graphemeStart + graphemeEnd,\n };\n }\n\n /**\n * @private\n */\n _updateTextarea() {\n this.cursorOffsetCache = {};\n if (!this.hiddenTextarea) {\n return;\n }\n if (!this.inCompositionMode) {\n const newSelection = this.fromGraphemeToStringSelection(\n this.selectionStart,\n this.selectionEnd,\n this._text,\n );\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n }\n this.updateTextareaPosition();\n }\n\n /**\n * @private\n */\n updateFromTextArea() {\n if (!this.hiddenTextarea) {\n return;\n }\n this.cursorOffsetCache = {};\n const textarea = this.hiddenTextarea;\n this.text = textarea.value;\n this.set('dirty', true);\n this.initDimensions();\n this.setCoords();\n const newSelection = this.fromStringToGraphemeSelection(\n textarea.selectionStart,\n textarea.selectionEnd,\n textarea.value,\n );\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n if (!this.inCompositionMode) {\n this.selectionStart = newSelection.selectionStart;\n }\n this.updateTextareaPosition();\n }\n\n /**\n * @private\n */\n updateTextareaPosition() {\n if (this.selectionStart === this.selectionEnd) {\n const style = this._calcTextareaPosition();\n this.hiddenTextarea!.style.left = style.left;\n this.hiddenTextarea!.style.top = style.top;\n }\n }\n\n /**\n * @private\n * @return {Object} style contains style for hiddenTextarea\n */\n _calcTextareaPosition() {\n if (!this.canvas) {\n return { left: '1px', top: '1px' };\n }\n const desiredPosition = this.inCompositionMode\n ? this.compositionStart\n : this.selectionStart,\n boundaries = this._getCursorBoundaries(desiredPosition),\n cursorLocation = this.get2DCursorLocation(desiredPosition),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex,\n charHeight =\n this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') *\n this.lineHeight,\n leftOffset = boundaries.leftOffset,\n retinaScaling = this.getCanvasRetinaScaling(),\n upperCanvas = this.canvas.upperCanvasEl,\n upperCanvasWidth = upperCanvas.width / retinaScaling,\n upperCanvasHeight = upperCanvas.height / retinaScaling,\n maxWidth = upperCanvasWidth - charHeight,\n maxHeight = upperCanvasHeight - charHeight;\n\n const p = new Point(\n boundaries.left + leftOffset,\n boundaries.top + boundaries.topOffset + charHeight,\n )\n .transform(this.calcTransformMatrix())\n .transform(this.canvas.viewportTransform)\n .multiply(\n new Point(\n upperCanvas.clientWidth / upperCanvasWidth,\n upperCanvas.clientHeight / upperCanvasHeight,\n ),\n );\n\n if (p.x < 0) {\n p.x = 0;\n }\n if (p.x > maxWidth) {\n p.x = maxWidth;\n }\n if (p.y < 0) {\n p.y = 0;\n }\n if (p.y > maxHeight) {\n p.y = maxHeight;\n }\n\n // add canvas offset on document\n p.x += this.canvas._offset.left;\n p.y += this.canvas._offset.top;\n\n return {\n left: `${p.x}px`,\n top: `${p.y}px`,\n fontSize: `${charHeight}px`,\n charHeight: charHeight,\n };\n }\n\n /**\n * @private\n */\n _saveEditingProps() {\n this._savedProps = {\n hasControls: this.hasControls,\n borderColor: this.borderColor,\n lockMovementX: this.lockMovementX,\n lockMovementY: this.lockMovementY,\n // For textboxes, hoverCursor should be null when not editing (falls back to canvas hoverCursor = 'move')\n hoverCursor: null,\n selectable: this.selectable,\n // Always save known good defaults for canvas cursors instead of potentially corrupted current values\n defaultCursor: 'default',\n moveCursor: 'move',\n };\n }\n\n /**\n * @private\n */\n _restoreEditingProps() {\n if (!this._savedProps) {\n return;\n }\n\n this.hoverCursor = this._savedProps.hoverCursor;\n this.hasControls = this._savedProps.hasControls;\n this.borderColor = this._savedProps.borderColor;\n this.selectable = this._savedProps.selectable;\n this.lockMovementX = this._savedProps.lockMovementX;\n this.lockMovementY = this._savedProps.lockMovementY;\n\n if (this.canvas) {\n this.canvas.defaultCursor =\n this._savedProps.defaultCursor ?? 'default';\n this.canvas.moveCursor =\n this._savedProps.moveCursor ?? 'move';\n }\n\n delete this._savedProps;\n }\n\n /**\n * runs the actual logic that exits from editing state, see {@link exitEditing}\n * But it does not fire events\n */\n exitEditingImpl() {\n const hiddenTextarea = this.hiddenTextarea;\n this.selected = false;\n this.isEditing = false;\n\n if (hiddenTextarea) {\n hiddenTextarea.blur && hiddenTextarea.blur();\n hiddenTextarea.parentNode &&\n hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n }\n this.hiddenTextarea = null;\n this.abortCursorAnimation();\n this.selectionStart !== this.selectionEnd && this.clearContextTop();\n this.selectionEnd = this.selectionStart;\n this._restoreEditingProps();\n if (this._forceClearCache) {\n this.initDimensions();\n this.setCoords();\n }\n }\n\n /**\n * Exits from editing state and fires relevant events\n */\n exitEditing() {\n const isTextChanged = this._textBeforeEdit !== this.text;\n this.exitEditingImpl();\n\n this.fire('editing:exited');\n isTextChanged && this.fire(MODIFIED);\n if (this.canvas) {\n this.canvas.fire('text:editing:exited', {\n target: this as unknown as IText,\n });\n // todo: evaluate add an action to this event\n isTextChanged && this.canvas.fire('object:modified', { target: this });\n }\n return this;\n }\n\n /**\n * @private\n */\n _removeExtraneousStyles() {\n for (const prop in this.styles) {\n if (!this._textLines[prop as unknown as number]) {\n delete this.styles[prop];\n }\n }\n }\n\n /**\n * remove and reflow a style block from start to end.\n * @param {Number} start linear start position for removal (included in removal)\n * @param {Number} end linear end position for removal ( excluded from removal )\n */\n removeStyleFromTo(start: number, end: number) {\n const { lineIndex: lineStart, charIndex: charStart } =\n this.get2DCursorLocation(start, true),\n { lineIndex: lineEnd, charIndex: charEnd } = this.get2DCursorLocation(\n end,\n true,\n );\n if (lineStart !== lineEnd) {\n // step1 remove the trailing of lineStart\n if (this.styles[lineStart]) {\n for (\n let i = charStart;\n i < this._unwrappedTextLines[lineStart].length;\n i++\n ) {\n delete this.styles[lineStart][i];\n }\n }\n // step2 move the trailing of lineEnd to lineStart if needed\n if (this.styles[lineEnd]) {\n for (\n let i = charEnd;\n i < this._unwrappedTextLines[lineEnd].length;\n i++\n ) {\n const styleObj = this.styles[lineEnd][i];\n if (styleObj) {\n this.styles[lineStart] || (this.styles[lineStart] = {});\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\n }\n }\n }\n // step3 detects lines will be completely removed.\n for (let i = lineStart + 1; i <= lineEnd; i++) {\n delete this.styles[i];\n }\n // step4 shift remaining lines.\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n } else {\n // remove and shift left on the same line\n if (this.styles[lineStart]) {\n const styleObj = this.styles[lineStart];\n const diff = charEnd - charStart;\n for (let i = charStart; i < charEnd; i++) {\n delete styleObj[i];\n }\n for (const char in this.styles[lineStart]) {\n const numericChar = parseInt(char, 10);\n if (numericChar >= charEnd) {\n styleObj[numericChar - diff] = styleObj[char];\n delete styleObj[char];\n }\n }\n }\n }\n }\n\n /**\n * Shifts line styles up or down\n * @param {Number} lineIndex Index of a line\n * @param {Number} offset Can any number?\n */\n shiftLineStyles(lineIndex: number, offset: number) {\n const clonedStyles = Object.assign({}, this.styles);\n for (const line in this.styles) {\n const numericLine = parseInt(line, 10);\n if (numericLine > lineIndex) {\n this.styles[numericLine + offset] = clonedStyles[numericLine];\n if (!clonedStyles[numericLine - offset]) {\n delete this.styles[numericLine];\n }\n }\n }\n }\n\n /**\n * Handle insertion of more consecutive style lines for when one or more\n * newlines gets added to the text. Since current style needs to be shifted\n * first we shift the current style of the number lines needed, then we add\n * new lines from the last to the first.\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} qty number of lines to add\n * @param {Array} copiedStyle Array of objects styles\n */\n insertNewlineStyleObject(\n lineIndex: number,\n charIndex: number,\n qty: number,\n copiedStyle?: { [index: number]: TextStyleDeclaration },\n ) {\n const newLineStyles: { [index: number]: TextStyleDeclaration } = {};\n const originalLineLength = this._unwrappedTextLines[lineIndex].length;\n const isEndOfLine = originalLineLength === charIndex;\n\n let someStyleIsCarryingOver = false;\n qty || (qty = 1);\n this.shiftLineStyles(lineIndex, qty);\n const currentCharStyle = this.styles[lineIndex]\n ? this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1]\n : undefined;\n\n // we clone styles of all chars\n // after cursor onto the current line\n for (const index in this.styles[lineIndex]) {\n const numIndex = parseInt(index, 10);\n if (numIndex >= charIndex) {\n someStyleIsCarryingOver = true;\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n // remove lines from the previous line since they're on a new line now\n if (!(isEndOfLine && charIndex === 0)) {\n delete this.styles[lineIndex][index];\n }\n }\n }\n let styleCarriedOver = false;\n if (someStyleIsCarryingOver && !isEndOfLine) {\n // if is end of line, the extra style we copied\n // is probably not something we want\n this.styles[lineIndex + qty] = newLineStyles;\n styleCarriedOver = true;\n }\n if (styleCarriedOver || originalLineLength > charIndex) {\n // skip the last line of since we already prepared it.\n // or contains text without style that we don't want to style\n // just because it changed lines\n qty--;\n }\n // for the all the lines or all the other lines\n // we clone current char style onto the next (otherwise empty) line\n while (qty > 0) {\n if (copiedStyle && copiedStyle[qty - 1]) {\n this.styles[lineIndex + qty] = {\n 0: { ...copiedStyle[qty - 1] },\n };\n } else if (currentCharStyle) {\n this.styles[lineIndex + qty] = {\n 0: { ...currentCharStyle },\n };\n } else {\n delete this.styles[lineIndex + qty];\n }\n qty--;\n }\n this._forceClearCache = true;\n }\n\n /**\n * Inserts style object for a given line/char index\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} quantity number Style object to insert, if given\n * @param {Array} copiedStyle array of style objects\n */\n insertCharStyleObject(\n lineIndex: number,\n charIndex: number,\n quantity: number,\n copiedStyle?: TextStyleDeclaration[],\n ) {\n if (!this.styles) {\n this.styles = {};\n }\n const currentLineStyles = this.styles[lineIndex],\n currentLineStylesCloned = currentLineStyles\n ? { ...currentLineStyles }\n : {};\n\n quantity || (quantity = 1);\n // shift all char styles by quantity forward\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n for (const index in currentLineStylesCloned) {\n const numericIndex = parseInt(index, 10);\n if (numericIndex >= charIndex) {\n currentLineStyles[numericIndex + quantity] =\n currentLineStylesCloned[numericIndex];\n // only delete the style if there was nothing moved there\n if (!currentLineStylesCloned[numericIndex - quantity]) {\n delete currentLineStyles[numericIndex];\n }\n }\n }\n this._forceClearCache = true;\n if (copiedStyle) {\n while (quantity--) {\n if (!Object.keys(copiedStyle[quantity]).length) {\n continue;\n }\n if (!this.styles[lineIndex]) {\n this.styles[lineIndex] = {};\n }\n this.styles[lineIndex][charIndex + quantity] = {\n ...copiedStyle[quantity],\n };\n }\n return;\n }\n if (!currentLineStyles) {\n return;\n }\n const newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n while (newStyle && quantity--) {\n this.styles[lineIndex][charIndex + quantity] = { ...newStyle };\n }\n }\n\n /**\n * Inserts style object(s)\n * @param {Array} insertedText Characters at the location where style is inserted\n * @param {Number} start cursor index for inserting style\n * @param {Array} [copiedStyle] array of style objects to insert.\n */\n insertNewStyleBlock(\n insertedText: string[],\n start: number,\n copiedStyle?: TextStyleDeclaration[],\n ) {\n const cursorLoc = this.get2DCursorLocation(start, true),\n addedLines = [0];\n let linesLength = 0;\n // get an array of how many char per lines are being added.\n for (let i = 0; i < insertedText.length; i++) {\n if (insertedText[i] === '\\n') {\n linesLength++;\n addedLines[linesLength] = 0;\n } else {\n addedLines[linesLength]++;\n }\n }\n // for the first line copy the style from the current char position.\n if (addedLines[0] > 0) {\n this.insertCharStyleObject(\n cursorLoc.lineIndex,\n cursorLoc.charIndex,\n addedLines[0],\n copiedStyle,\n );\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n }\n linesLength &&\n this.insertNewlineStyleObject(\n cursorLoc.lineIndex,\n cursorLoc.charIndex + addedLines[0],\n linesLength,\n );\n let i;\n for (i = 1; i < linesLength; i++) {\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(\n cursorLoc.lineIndex + i,\n 0,\n addedLines[i],\n copiedStyle,\n );\n } else if (copiedStyle) {\n // this test is required in order to close #6841\n // when a pasted buffer begins with a newline then\n // this.styles[cursorLoc.lineIndex + i] and copiedStyle[0]\n // may be undefined for some reason\n if (this.styles[cursorLoc.lineIndex + i] && copiedStyle[0]) {\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n }\n }\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n }\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(\n cursorLoc.lineIndex + i,\n 0,\n addedLines[i],\n copiedStyle,\n );\n }\n }\n\n /**\n * Removes characters from start/end\n * start/end ar per grapheme position in _text array.\n *\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n removeChars(start: number, end: number = start + 1) {\n this.removeStyleFromTo(start, end);\n this._text.splice(start, end - start);\n this.text = this._text.join('');\n this.set('dirty', true);\n this.initDimensions();\n this.setCoords();\n this._removeExtraneousStyles();\n }\n\n /**\n * insert characters at start position, before start position.\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\n * if style array is provided, it must be as the same length of text in graphemes\n * if end is provided and is bigger than start, old text is replaced.\n * start/end ar per grapheme position in _text array.\n *\n * @param {String} text text to insert\n * @param {Array} style array of style objects\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n insertChars(\n text: string,\n style: TextStyleDeclaration[] | undefined,\n start: number,\n end: number = start,\n ) {\n if (end > start) {\n this.removeStyleFromTo(start, end);\n }\n const graphemes = this.graphemeSplit(text);\n this.insertNewStyleBlock(graphemes, start, style);\n this._text = [\n ...this._text.slice(0, start),\n ...graphemes,\n ...this._text.slice(end),\n ];\n this.text = this._text.join('');\n this.set('dirty', true);\n this.initDimensions();\n this.setCoords();\n this._removeExtraneousStyles();\n }\n\n /**\n * Set the selectionStart and selectionEnd according to the new position of cursor\n * mimic the key - mouse navigation when shift is pressed.\n */\n setSelectionStartEndWithShift(\n start: number,\n end: number,\n newSelection: number,\n ) {\n if (newSelection <= start) {\n if (end === start) {\n this._selectionDirection = LEFT;\n } else if (this._selectionDirection === RIGHT) {\n this._selectionDirection = LEFT;\n this.selectionEnd = start;\n }\n this.selectionStart = newSelection;\n } else if (newSelection > start && newSelection < end) {\n if (this._selectionDirection === RIGHT) {\n this.selectionEnd = newSelection;\n } else {\n this.selectionStart = newSelection;\n }\n } else {\n // newSelection is > selection start and end\n if (end === start) {\n this._selectionDirection = RIGHT;\n } else if (this._selectionDirection === LEFT) {\n this._selectionDirection = RIGHT;\n this.selectionStart = end;\n }\n this.selectionEnd = newSelection;\n }\n }\n}"],"names":["reNonWord","ITextBehavior","FabricText","constructor","super","arguments","_defineProperty","initBehavior","this","_tick","bind","_onTickComplete","updateSelectionOnMouseMove","onDeselect","options","isEditing","exitEditing","selected","_animateCursor","_ref","toValue","duration","delay","onComplete","animate","startValue","_currentCursorOpacity","endValue","abort","canvas","selectionStart","selectionEnd","onChange","value","renderCursorOrSelection","_currentTickState","cursorDuration","Math","max","_this$_currentTickCom","_currentTickCompleteState","initDelayedCursor","restart","abortCursorAnimation","cursorDelay","shouldClear","forEach","cursorAnimation","isDone","clearContextTop","restartCursorIfNeeded","some","selectAll","_text","length","_fireSelectionChanged","_updateTextarea","cmdAll","getSelectedText","slice","join","findWordBoundaryLeft","startFrom","offset","index","_reSpace","test","findWordBoundaryRight","findLineBoundaryLeft","findLineBoundaryRight","searchWordBoundary","direction","text","reNewline","_char","selectWord","newSelectionStart","newSelectionEnd","selectLine","enterEditing","e","editable","enterEditingImpl","fire","undefined","target","requestRenderAll","calcOffset","textEditingManager","exitTextEditing","useOverlayEditing","enterOverlayEditing","initHiddenTextarea","hiddenTextarea","focus","_saveEditingProps","_setEditingProps","_textBeforeEdit","enterTextOverlayEdit","onCommit","commitOverlayEdit","onCancel","cancelOverlayEdit","overlayEditor","__overlayEditor","result","extractLinesFromDOM","textareaElement","storeBrowserLines","lines","error","console","warn","dirty","initDimensions","setCoords","getActiveControl","el","getDocumentFromElement","activeElement","getSelectionStartFromPointer","currentStart","currentEnd","__selectionStartOnMouseDown","startIndex","min","endIndex","hoverCursor","defaultCursor","moveCursor","borderColor","editingBorderColor","hasControls","selectable","lockMovementX","lockMovementY","fromStringToGraphemeSelection","start","end","smallerTextStart","graphemeStart","graphemeSplit","smallerTextEnd","fromGraphemeToStringSelection","graphemes","cursorOffsetCache","inCompositionMode","newSelection","updateTextareaPosition","updateFromTextArea","textarea","set","style","_calcTextareaPosition","left","top","desiredPosition","compositionStart","boundaries","_getCursorBoundaries","cursorLocation","get2DCursorLocation","lineIndex","charIndex","charHeight","getValueOfPropertyAt","lineHeight","leftOffset","retinaScaling","getCanvasRetinaScaling","upperCanvas","upperCanvasEl","upperCanvasWidth","width","upperCanvasHeight","height","maxWidth","maxHeight","p","Point","topOffset","transform","calcTransformMatrix","viewportTransform","multiply","clientWidth","clientHeight","x","y","_offset","fontSize","_savedProps","_restoreEditingProps","_this$_savedProps$def","_this$_savedProps$mov","exitEditingImpl","blur","parentNode","removeChild","_forceClearCache","isTextChanged","MODIFIED","_removeExtraneousStyles","prop","styles","_textLines","removeStyleFromTo","lineStart","charStart","lineEnd","charEnd","i","_unwrappedTextLines","styleObj","shiftLineStyles","diff","char","numericChar","parseInt","clonedStyles","Object","assign","line","numericLine","insertNewlineStyleObject","qty","copiedStyle","newLineStyles","originalLineLength","isEndOfLine","someStyleIsCarryingOver","currentCharStyle","numIndex","styleCarriedOver","insertCharStyleObject","quantity","currentLineStyles","currentLineStylesCloned","numericIndex","keys","newStyle","insertNewStyleBlock","insertedText","cursorLoc","addedLines","linesLength","removeChars","splice","insertChars","setSelectionStartEndWithShift","_selectionDirection","LEFT","RIGHT"],"mappings":"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"}
1
+ {"version":3,"file":"ITextBehavior.min.mjs","sources":["../../../../src/shapes/IText/ITextBehavior.ts"],"sourcesContent":["import type { ObjectEvents, TPointerEvent } from '../../EventTypeDefs';\r\nimport { Point } from '../../Point';\r\nimport type { FabricObject } from '../Object/FabricObject';\r\nimport { FabricText } from '../Text/Text';\r\nimport { animate } from '../../util/animation/animate';\r\nimport type { TOnAnimationChangeCallback } from '../../util/animation/types';\r\nimport type { ValueAnimation } from '../../util/animation/ValueAnimation';\r\nimport type { TextStyleDeclaration } from '../Text/StyledText';\r\nimport type { SerializedTextProps, TextProps } from '../Text/Text';\r\nimport type { TOptions } from '../../typedefs';\r\nimport { getDocumentFromElement } from '../../util/dom_misc';\r\nimport { LEFT, MODIFIED, RIGHT, reNewline } from '../../constants';\r\nimport type { IText } from './IText';\r\nimport { enterTextOverlayEdit } from '../../text/overlayEditor';\r\nimport { extractLinesFromDOM, storeBrowserLines } from '../../text/browserLines';\r\n\r\n/**\r\n * extend this regex to support non english languages\r\n *\r\n * - ` ` Matches a SPACE character (char code 32).\r\n * - `\\n` Matches a LINE FEED character (char code 10).\r\n * - `.` Matches a \".\" character (char code 46).\r\n * - `,` Matches a \",\" character (char code 44).\r\n * - `;` Matches a \";\" character (char code 59).\r\n * - `!` Matches a \"!\" character (char code 33).\r\n * - `\\?` Matches a \"?\" character (char code 63).\r\n * - `\\-` Matches a \"-\" character (char code 45).\r\n */\r\n// eslint-disable-next-line no-useless-escape\r\nconst reNonWord = /[ \\n\\.,;!\\?\\-]/;\r\n\r\nexport type ITextEvents = ObjectEvents & {\r\n 'selection:changed': never;\r\n changed: never | { index: number; action: string };\r\n 'editing:entered': never | { e: TPointerEvent };\r\n 'editing:exited': never;\r\n};\r\n\r\nexport abstract class ITextBehavior<\r\n Props extends TOptions<TextProps> = Partial<TextProps>,\r\n SProps extends SerializedTextProps = SerializedTextProps,\r\n EventSpec extends ITextEvents = ITextEvents,\r\n> extends FabricText<Props, SProps, EventSpec> {\r\n declare abstract isEditing: boolean;\r\n declare abstract cursorDelay: number;\r\n declare abstract selectionStart: number;\r\n declare abstract selectionEnd: number;\r\n declare abstract cursorDuration: number;\r\n declare abstract editable: boolean;\r\n declare abstract editingBorderColor: string;\r\n\r\n declare abstract compositionStart: number;\r\n declare abstract compositionEnd: number;\r\n\r\n declare abstract hiddenTextarea: HTMLTextAreaElement | null;\r\n\r\n /**\r\n * Helps determining when the text is in composition, so that the cursor\r\n * rendering is altered.\r\n */\r\n declare protected inCompositionMode: boolean;\r\n\r\n declare protected _reSpace: RegExp;\r\n declare private _currentTickState?: ValueAnimation;\r\n declare private _currentTickCompleteState?: ValueAnimation;\r\n protected _currentCursorOpacity = 1;\r\n declare private _textBeforeEdit: string;\r\n declare protected __selectionStartOnMouseDown: number;\r\n\r\n /**\r\n * Keeps track if the IText object was selected before the actual click.\r\n * This because we want to delay enter editing by a click.\r\n */\r\n declare protected selected: boolean;\r\n declare protected cursorOffsetCache: { left?: number; top?: number };\r\n declare protected _savedProps?: {\r\n hasControls: boolean;\r\n borderColor: string;\r\n lockMovementX: boolean;\r\n lockMovementY: boolean;\r\n selectable: boolean;\r\n hoverCursor: CSSStyleDeclaration['cursor'] | null;\r\n defaultCursor?: CSSStyleDeclaration['cursor'];\r\n moveCursor?: CSSStyleDeclaration['cursor'];\r\n };\r\n declare protected _selectionDirection: 'left' | 'right' | null;\r\n\r\n abstract initHiddenTextarea(): void;\r\n abstract _fireSelectionChanged(): void;\r\n abstract renderCursorOrSelection(): void;\r\n abstract getSelectionStartFromPointer(e: TPointerEvent): number;\r\n abstract _getCursorBoundaries(\r\n index: number,\r\n skipCaching?: boolean,\r\n ): {\r\n left: number;\r\n top: number;\r\n leftOffset: number;\r\n topOffset: number;\r\n };\r\n\r\n /**\r\n * Initializes all the interactive behavior of IText\r\n */\r\n initBehavior() {\r\n this._tick = this._tick.bind(this);\r\n this._onTickComplete = this._onTickComplete.bind(this);\r\n this.updateSelectionOnMouseMove =\r\n this.updateSelectionOnMouseMove.bind(this);\r\n }\r\n\r\n onDeselect(options?: { e?: TPointerEvent; object?: FabricObject }) {\r\n this.isEditing && this.exitEditing();\r\n this.selected = false;\r\n return super.onDeselect(options);\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _animateCursor({\r\n toValue,\r\n duration,\r\n delay,\r\n onComplete,\r\n }: {\r\n toValue: number;\r\n duration: number;\r\n delay?: number;\r\n onComplete?: TOnAnimationChangeCallback<number>;\r\n }) {\r\n return animate({\r\n startValue: this._currentCursorOpacity,\r\n endValue: toValue,\r\n duration,\r\n delay,\r\n onComplete,\r\n abort: () =>\r\n !this.canvas ||\r\n // we do not want to animate a selection, only cursor\r\n this.selectionStart !== this.selectionEnd,\r\n onChange: (value) => {\r\n this._currentCursorOpacity = value;\r\n this.renderCursorOrSelection();\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * changes the cursor from visible to invisible\r\n */\r\n private _tick(delay?: number) {\r\n this._currentTickState = this._animateCursor({\r\n toValue: 0,\r\n duration: this.cursorDuration / 2,\r\n delay: Math.max(delay || 0, 100),\r\n onComplete: this._onTickComplete,\r\n });\r\n }\r\n\r\n /**\r\n * Changes the cursor from invisible to visible\r\n */\r\n private _onTickComplete() {\r\n this._currentTickCompleteState?.abort();\r\n this._currentTickCompleteState = this._animateCursor({\r\n toValue: 1,\r\n duration: this.cursorDuration,\r\n onComplete: this._tick,\r\n });\r\n }\r\n\r\n /**\r\n * Initializes delayed cursor\r\n */\r\n initDelayedCursor(restart?: boolean) {\r\n this.abortCursorAnimation();\r\n this._tick(restart ? 0 : this.cursorDelay);\r\n }\r\n\r\n /**\r\n * Aborts cursor animation, clears all timeouts and clear textarea context if necessary\r\n */\r\n abortCursorAnimation() {\r\n let shouldClear = false;\r\n [this._currentTickState, this._currentTickCompleteState].forEach(\r\n (cursorAnimation) => {\r\n if (cursorAnimation && !cursorAnimation.isDone()) {\r\n shouldClear = true;\r\n cursorAnimation.abort();\r\n }\r\n },\r\n );\r\n\r\n this._currentCursorOpacity = 1;\r\n\r\n // make sure we clear context even if instance is not editing\r\n if (shouldClear) {\r\n this.clearContextTop();\r\n }\r\n }\r\n\r\n /**\r\n * Restart tue cursor animation if either is in complete state ( between animations )\r\n * or if it never started before\r\n */\r\n restartCursorIfNeeded() {\r\n if (\r\n [this._currentTickState, this._currentTickCompleteState].some(\r\n (cursorAnimation) => !cursorAnimation || cursorAnimation.isDone(),\r\n )\r\n ) {\r\n this.initDelayedCursor();\r\n }\r\n }\r\n\r\n /**\r\n * Selects entire text\r\n */\r\n selectAll() {\r\n this.selectionStart = 0;\r\n this.selectionEnd = this._text.length;\r\n this._fireSelectionChanged();\r\n this._updateTextarea();\r\n return this;\r\n }\r\n\r\n /**\r\n * Selects entire text and updates the visual state\r\n */\r\n cmdAll() {\r\n this.selectAll();\r\n this.renderCursorOrSelection();\r\n }\r\n\r\n /**\r\n * Returns selected text\r\n * @return {String}\r\n */\r\n getSelectedText(): string {\r\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\r\n }\r\n\r\n /**\r\n * Find new selection index representing start of current word according to current selection index\r\n * @param {Number} startFrom Current selection index\r\n * @return {Number} New selection index\r\n */\r\n findWordBoundaryLeft(startFrom: number): number {\r\n let offset = 0,\r\n index = startFrom - 1;\r\n\r\n // remove space before cursor first\r\n if (this._reSpace.test(this._text[index])) {\r\n while (this._reSpace.test(this._text[index])) {\r\n offset++;\r\n index--;\r\n }\r\n }\r\n while (/S/.test(this._text[index]) && index > -1) {\r\n offset++;\r\n index--;\r\n }\r\n\r\n return startFrom - offset;\r\n }\r\n\r\n /**\r\n * Find new selection index representing end of current word according to current selection index\r\n * @param {Number} startFrom Current selection index\r\n * @return {Number} New selection index\r\n */\r\n findWordBoundaryRight(startFrom: number): number {\r\n let offset = 0,\r\n index = startFrom;\r\n\r\n // remove space after cursor first\r\n if (this._reSpace.test(this._text[index])) {\r\n while (this._reSpace.test(this._text[index])) {\r\n offset++;\r\n index++;\r\n }\r\n }\r\n while (/S/.test(this._text[index]) && index < this._text.length) {\r\n offset++;\r\n index++;\r\n }\r\n\r\n return startFrom + offset;\r\n }\r\n\r\n /**\r\n * Find new selection index representing start of current line according to current selection index\r\n * @param {Number} startFrom Current selection index\r\n * @return {Number} New selection index\r\n */\r\n findLineBoundaryLeft(startFrom: number): number {\r\n let offset = 0,\r\n index = startFrom - 1;\r\n\r\n while (!/\\n/.test(this._text[index]) && index > -1) {\r\n offset++;\r\n index--;\r\n }\r\n\r\n return startFrom - offset;\r\n }\r\n\r\n /**\r\n * Find new selection index representing end of current line according to current selection index\r\n * @param {Number} startFrom Current selection index\r\n * @return {Number} New selection index\r\n */\r\n findLineBoundaryRight(startFrom: number): number {\r\n let offset = 0,\r\n index = startFrom;\r\n\r\n while (!/\\n/.test(this._text[index]) && index < this._text.length) {\r\n offset++;\r\n index++;\r\n }\r\n\r\n return startFrom + offset;\r\n }\r\n\r\n /**\r\n * Finds index corresponding to beginning or end of a word\r\n * @param {Number} selectionStart Index of a character\r\n * @param {Number} direction 1 or -1\r\n * @return {Number} Index of the beginning or end of a word\r\n */\r\n searchWordBoundary(selectionStart: number, direction: 1 | -1): number {\r\n const text = this._text;\r\n // if we land on a space we move the cursor backwards\r\n // if we are searching boundary end we move the cursor backwards ONLY if we don't land on a line break\r\n let index =\r\n selectionStart > 0 &&\r\n this._reSpace.test(text[selectionStart]) &&\r\n (direction === -1 || !reNewline.test(text[selectionStart - 1]))\r\n ? selectionStart - 1\r\n : selectionStart,\r\n _char = text[index];\r\n while (index > 0 && index < text.length && !reNonWord.test(_char)) {\r\n index += direction;\r\n _char = text[index];\r\n }\r\n if (direction === -1 && reNonWord.test(_char)) {\r\n index++;\r\n }\r\n return index;\r\n }\r\n\r\n /**\r\n * Selects the word that contains the char at index selectionStart\r\n * @param {Number} selectionStart Index of a character\r\n */\r\n selectWord(selectionStart?: number) {\r\n selectionStart = selectionStart ?? this.selectionStart;\r\n // search backwards\r\n const newSelectionStart = this.searchWordBoundary(selectionStart, -1),\r\n // search forward\r\n newSelectionEnd = Math.max(\r\n newSelectionStart,\r\n this.searchWordBoundary(selectionStart, 1),\r\n );\r\n\r\n this.selectionStart = newSelectionStart;\r\n this.selectionEnd = newSelectionEnd;\r\n this._fireSelectionChanged();\r\n this._updateTextarea();\r\n // remove next major, for now it renders twice :(\r\n this.renderCursorOrSelection();\r\n }\r\n\r\n /**\r\n * Selects the line that contains selectionStart\r\n * @param {Number} selectionStart Index of a character\r\n */\r\n selectLine(selectionStart?: number) {\r\n selectionStart = selectionStart ?? this.selectionStart;\r\n const newSelectionStart = this.findLineBoundaryLeft(selectionStart),\r\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\r\n\r\n this.selectionStart = newSelectionStart;\r\n this.selectionEnd = newSelectionEnd;\r\n this._fireSelectionChanged();\r\n this._updateTextarea();\r\n }\r\n\r\n /**\r\n * Enters editing state\r\n */\r\n enterEditing(e?: TPointerEvent) {\r\n if (this.isEditing || !this.editable) {\r\n return;\r\n }\r\n this.enterEditingImpl();\r\n this.fire('editing:entered', e ? { e } : undefined);\r\n this._fireSelectionChanged();\r\n if (this.canvas) {\r\n this.canvas.fire('text:editing:entered', {\r\n target: this as unknown as IText,\r\n e,\r\n });\r\n this.canvas.requestRenderAll();\r\n }\r\n }\r\n\r\n /**\r\n * runs the actual logic that enter from editing state, see {@link enterEditing}\r\n */\r\n enterEditingImpl() {\r\n if (this.canvas) {\r\n this.canvas.calcOffset();\r\n this.canvas.textEditingManager.exitTextEditing();\r\n }\r\n\r\n this.isEditing = true;\r\n\r\n // Check if using overlay editing\r\n if ((this as any).useOverlayEditing) {\r\n this.enterOverlayEditing();\r\n } else {\r\n this.initHiddenTextarea();\r\n this.hiddenTextarea!.focus();\r\n this.hiddenTextarea!.value = this.text;\r\n this._updateTextarea();\r\n this._saveEditingProps();\r\n this._setEditingProps();\r\n this._textBeforeEdit = this.text;\r\n this._tick();\r\n }\r\n }\r\n\r\n /**\r\n * Enter overlay editing mode using DOM textarea overlay\r\n */\r\n private enterOverlayEditing() {\r\n this._saveEditingProps();\r\n this._setEditingProps();\r\n this._textBeforeEdit = this.text;\r\n\r\n if (!this.canvas) {\r\n return;\r\n }\r\n\r\n // Create overlay editor\r\n enterTextOverlayEdit(this.canvas, this as any, {\r\n onCommit: (text: string) => {\r\n this.commitOverlayEdit(text);\r\n },\r\n onCancel: () => {\r\n this.cancelOverlayEdit();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Commit overlay editing changes\r\n */\r\n private commitOverlayEdit(text: string) {\r\n \r\n const overlayEditor = (this as any).__overlayEditor;\r\n \r\n if (overlayEditor) {\r\n // Extract browser lines for pixel-perfect rendering\r\n try {\r\n const result = extractLinesFromDOM(overlayEditor.textareaElement);\r\n storeBrowserLines(this, result.lines);\r\n } catch (error) {\r\n console.warn('Failed to extract browser lines:', error);\r\n }\r\n }\r\n\r\n // Update text content and trigger layout recalculation\r\n this.text = text;\r\n this.dirty = true;\r\n this.initDimensions();\r\n this.setCoords();\r\n this.exitEditing();\r\n this.fire('changed');\r\n this.canvas && this.canvas.requestRenderAll();\r\n }\r\n\r\n /**\r\n * Cancel overlay editing without changes\r\n */\r\n private cancelOverlayEdit() {\r\n // Restore original text\r\n this.text = this._textBeforeEdit || this.text;\r\n this.exitEditing();\r\n }\r\n\r\n /**\r\n * called by {@link Canvas#textEditingManager}\r\n */\r\n updateSelectionOnMouseMove(e: TPointerEvent) {\r\n if (this.getActiveControl()) {\r\n return;\r\n }\r\n\r\n const el = this.hiddenTextarea!;\r\n // regain focus\r\n getDocumentFromElement(el).activeElement !== el && el.focus();\r\n\r\n const newSelectionStart = this.getSelectionStartFromPointer(e),\r\n currentStart = this.selectionStart,\r\n currentEnd = this.selectionEnd;\r\n if (\r\n (newSelectionStart !== this.__selectionStartOnMouseDown ||\r\n currentStart === currentEnd) &&\r\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\r\n ) {\r\n return;\r\n }\r\n\r\n // Always ensure selectionStart <= selectionEnd for proper text selection\r\n const startIndex = Math.min(\r\n newSelectionStart,\r\n this.__selectionStartOnMouseDown,\r\n );\r\n const endIndex = Math.max(\r\n newSelectionStart,\r\n this.__selectionStartOnMouseDown,\r\n );\r\n\r\n this.selectionStart = startIndex;\r\n this.selectionEnd = endIndex;\r\n\r\n if (\r\n this.selectionStart !== currentStart ||\r\n this.selectionEnd !== currentEnd\r\n ) {\r\n this._fireSelectionChanged();\r\n this._updateTextarea();\r\n this.renderCursorOrSelection();\r\n }\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _setEditingProps() {\r\n this.hoverCursor = 'text';\r\n\r\n if (this.canvas) {\r\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\r\n }\r\n\r\n this.borderColor = this.editingBorderColor;\r\n this.hasControls = this.selectable = false;\r\n this.lockMovementX = this.lockMovementY = true;\r\n }\r\n\r\n /**\r\n * convert from textarea to grapheme indexes\r\n */\r\n fromStringToGraphemeSelection(start: number, end: number, text: string) {\r\n const smallerTextStart = text.slice(0, start),\r\n graphemeStart = this.graphemeSplit(smallerTextStart).length;\r\n if (start === end) {\r\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\r\n }\r\n const smallerTextEnd = text.slice(start, end),\r\n graphemeEnd = this.graphemeSplit(smallerTextEnd).length;\r\n return {\r\n selectionStart: graphemeStart,\r\n selectionEnd: graphemeStart + graphemeEnd,\r\n };\r\n }\r\n\r\n /**\r\n * convert from fabric to textarea values\r\n */\r\n fromGraphemeToStringSelection(\r\n start: number,\r\n end: number,\r\n graphemes: string[],\r\n ) {\r\n const smallerTextStart = graphemes.slice(0, start),\r\n graphemeStart = smallerTextStart.join('').length;\r\n if (start === end) {\r\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\r\n }\r\n const smallerTextEnd = graphemes.slice(start, end),\r\n graphemeEnd = smallerTextEnd.join('').length;\r\n return {\r\n selectionStart: graphemeStart,\r\n selectionEnd: graphemeStart + graphemeEnd,\r\n };\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _updateTextarea() {\r\n this.cursorOffsetCache = {};\r\n if (!this.hiddenTextarea) {\r\n return;\r\n }\r\n if (!this.inCompositionMode) {\r\n const newSelection = this.fromGraphemeToStringSelection(\r\n this.selectionStart,\r\n this.selectionEnd,\r\n this._text,\r\n );\r\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\r\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\r\n }\r\n this.updateTextareaPosition();\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n updateFromTextArea() {\r\n if (!this.hiddenTextarea) {\r\n return;\r\n }\r\n this.cursorOffsetCache = {};\r\n const textarea = this.hiddenTextarea;\r\n this.text = textarea.value;\r\n this.set('dirty', true);\r\n this.initDimensions();\r\n this.setCoords();\r\n const newSelection = this.fromStringToGraphemeSelection(\r\n textarea.selectionStart,\r\n textarea.selectionEnd,\r\n textarea.value,\r\n );\r\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\r\n if (!this.inCompositionMode) {\r\n this.selectionStart = newSelection.selectionStart;\r\n }\r\n this.updateTextareaPosition();\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n updateTextareaPosition() {\r\n if (this.selectionStart === this.selectionEnd) {\r\n const style = this._calcTextareaPosition();\r\n this.hiddenTextarea!.style.left = style.left;\r\n this.hiddenTextarea!.style.top = style.top;\r\n }\r\n }\r\n\r\n /**\r\n * @private\r\n * @return {Object} style contains style for hiddenTextarea\r\n */\r\n _calcTextareaPosition() {\r\n if (!this.canvas) {\r\n return { left: '1px', top: '1px' };\r\n }\r\n const desiredPosition = this.inCompositionMode\r\n ? this.compositionStart\r\n : this.selectionStart,\r\n boundaries = this._getCursorBoundaries(desiredPosition),\r\n cursorLocation = this.get2DCursorLocation(desiredPosition),\r\n lineIndex = cursorLocation.lineIndex,\r\n charIndex = cursorLocation.charIndex,\r\n charHeight =\r\n this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') *\r\n this.lineHeight,\r\n leftOffset = boundaries.leftOffset,\r\n retinaScaling = this.getCanvasRetinaScaling(),\r\n upperCanvas = this.canvas.upperCanvasEl,\r\n upperCanvasWidth = upperCanvas.width / retinaScaling,\r\n upperCanvasHeight = upperCanvas.height / retinaScaling,\r\n maxWidth = upperCanvasWidth - charHeight,\r\n maxHeight = upperCanvasHeight - charHeight;\r\n\r\n const p = new Point(\r\n boundaries.left + leftOffset,\r\n boundaries.top + boundaries.topOffset + charHeight,\r\n )\r\n .transform(this.calcTransformMatrix())\r\n .transform(this.canvas.viewportTransform)\r\n .multiply(\r\n new Point(\r\n upperCanvas.clientWidth / upperCanvasWidth,\r\n upperCanvas.clientHeight / upperCanvasHeight,\r\n ),\r\n );\r\n\r\n if (p.x < 0) {\r\n p.x = 0;\r\n }\r\n if (p.x > maxWidth) {\r\n p.x = maxWidth;\r\n }\r\n if (p.y < 0) {\r\n p.y = 0;\r\n }\r\n if (p.y > maxHeight) {\r\n p.y = maxHeight;\r\n }\r\n\r\n // add canvas offset on document\r\n p.x += this.canvas._offset.left;\r\n p.y += this.canvas._offset.top;\r\n\r\n return {\r\n left: `${p.x}px`,\r\n top: `${p.y}px`,\r\n fontSize: `${charHeight}px`,\r\n charHeight: charHeight,\r\n };\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _saveEditingProps() {\r\n this._savedProps = {\r\n hasControls: this.hasControls,\r\n borderColor: this.borderColor,\r\n lockMovementX: this.lockMovementX,\r\n lockMovementY: this.lockMovementY,\r\n // For textboxes, hoverCursor should be null when not editing (falls back to canvas hoverCursor = 'move')\r\n hoverCursor: null,\r\n selectable: this.selectable,\r\n // Always save known good defaults for canvas cursors instead of potentially corrupted current values\r\n defaultCursor: 'default',\r\n moveCursor: 'move',\r\n };\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _restoreEditingProps() {\r\n if (!this._savedProps) {\r\n return;\r\n }\r\n\r\n this.hoverCursor = this._savedProps.hoverCursor;\r\n this.hasControls = this._savedProps.hasControls;\r\n this.borderColor = this._savedProps.borderColor;\r\n this.selectable = this._savedProps.selectable;\r\n this.lockMovementX = this._savedProps.lockMovementX;\r\n this.lockMovementY = this._savedProps.lockMovementY;\r\n\r\n if (this.canvas) {\r\n this.canvas.defaultCursor =\r\n this._savedProps.defaultCursor ?? 'default';\r\n this.canvas.moveCursor =\r\n this._savedProps.moveCursor ?? 'move';\r\n }\r\n\r\n delete this._savedProps;\r\n }\r\n\r\n /**\r\n * runs the actual logic that exits from editing state, see {@link exitEditing}\r\n * But it does not fire events\r\n */\r\n exitEditingImpl() {\r\n const hiddenTextarea = this.hiddenTextarea;\r\n this.selected = false;\r\n this.isEditing = false;\r\n\r\n if (hiddenTextarea) {\r\n hiddenTextarea.blur && hiddenTextarea.blur();\r\n hiddenTextarea.parentNode &&\r\n hiddenTextarea.parentNode.removeChild(hiddenTextarea);\r\n }\r\n this.hiddenTextarea = null;\r\n this.abortCursorAnimation();\r\n this.selectionStart !== this.selectionEnd && this.clearContextTop();\r\n this.selectionEnd = this.selectionStart;\r\n this._restoreEditingProps();\r\n if (this._forceClearCache) {\r\n this.initDimensions();\r\n this.setCoords();\r\n }\r\n }\r\n\r\n /**\r\n * Exits from editing state and fires relevant events\r\n */\r\n exitEditing() {\r\n const isTextChanged = this._textBeforeEdit !== this.text;\r\n this.exitEditingImpl();\r\n\r\n this.fire('editing:exited');\r\n isTextChanged && this.fire(MODIFIED);\r\n if (this.canvas) {\r\n this.canvas.fire('text:editing:exited', {\r\n target: this as unknown as IText,\r\n });\r\n // todo: evaluate add an action to this event\r\n isTextChanged && this.canvas.fire('object:modified', { target: this });\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _removeExtraneousStyles() {\r\n for (const prop in this.styles) {\r\n if (!this._textLines[prop as unknown as number]) {\r\n delete this.styles[prop];\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * remove and reflow a style block from start to end.\r\n * @param {Number} start linear start position for removal (included in removal)\r\n * @param {Number} end linear end position for removal ( excluded from removal )\r\n */\r\n removeStyleFromTo(start: number, end: number) {\r\n const { lineIndex: lineStart, charIndex: charStart } =\r\n this.get2DCursorLocation(start, true),\r\n { lineIndex: lineEnd, charIndex: charEnd } = this.get2DCursorLocation(\r\n end,\r\n true,\r\n );\r\n if (lineStart !== lineEnd) {\r\n // step1 remove the trailing of lineStart\r\n if (this.styles[lineStart]) {\r\n for (\r\n let i = charStart;\r\n i < this._unwrappedTextLines[lineStart].length;\r\n i++\r\n ) {\r\n delete this.styles[lineStart][i];\r\n }\r\n }\r\n // step2 move the trailing of lineEnd to lineStart if needed\r\n if (this.styles[lineEnd]) {\r\n for (\r\n let i = charEnd;\r\n i < this._unwrappedTextLines[lineEnd].length;\r\n i++\r\n ) {\r\n const styleObj = this.styles[lineEnd][i];\r\n if (styleObj) {\r\n this.styles[lineStart] || (this.styles[lineStart] = {});\r\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\r\n }\r\n }\r\n }\r\n // step3 detects lines will be completely removed.\r\n for (let i = lineStart + 1; i <= lineEnd; i++) {\r\n delete this.styles[i];\r\n }\r\n // step4 shift remaining lines.\r\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\r\n } else {\r\n // remove and shift left on the same line\r\n if (this.styles[lineStart]) {\r\n const styleObj = this.styles[lineStart];\r\n const diff = charEnd - charStart;\r\n for (let i = charStart; i < charEnd; i++) {\r\n delete styleObj[i];\r\n }\r\n for (const char in this.styles[lineStart]) {\r\n const numericChar = parseInt(char, 10);\r\n if (numericChar >= charEnd) {\r\n styleObj[numericChar - diff] = styleObj[char];\r\n delete styleObj[char];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Shifts line styles up or down\r\n * @param {Number} lineIndex Index of a line\r\n * @param {Number} offset Can any number?\r\n */\r\n shiftLineStyles(lineIndex: number, offset: number) {\r\n const clonedStyles = Object.assign({}, this.styles);\r\n for (const line in this.styles) {\r\n const numericLine = parseInt(line, 10);\r\n if (numericLine > lineIndex) {\r\n this.styles[numericLine + offset] = clonedStyles[numericLine];\r\n if (!clonedStyles[numericLine - offset]) {\r\n delete this.styles[numericLine];\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Handle insertion of more consecutive style lines for when one or more\r\n * newlines gets added to the text. Since current style needs to be shifted\r\n * first we shift the current style of the number lines needed, then we add\r\n * new lines from the last to the first.\r\n * @param {Number} lineIndex Index of a line\r\n * @param {Number} charIndex Index of a char\r\n * @param {Number} qty number of lines to add\r\n * @param {Array} copiedStyle Array of objects styles\r\n */\r\n insertNewlineStyleObject(\r\n lineIndex: number,\r\n charIndex: number,\r\n qty: number,\r\n copiedStyle?: { [index: number]: TextStyleDeclaration },\r\n ) {\r\n const newLineStyles: { [index: number]: TextStyleDeclaration } = {};\r\n const originalLineLength = this._unwrappedTextLines[lineIndex].length;\r\n const isEndOfLine = originalLineLength === charIndex;\r\n\r\n let someStyleIsCarryingOver = false;\r\n qty || (qty = 1);\r\n this.shiftLineStyles(lineIndex, qty);\r\n const currentCharStyle = this.styles[lineIndex]\r\n ? this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1]\r\n : undefined;\r\n\r\n // we clone styles of all chars\r\n // after cursor onto the current line\r\n for (const index in this.styles[lineIndex]) {\r\n const numIndex = parseInt(index, 10);\r\n if (numIndex >= charIndex) {\r\n someStyleIsCarryingOver = true;\r\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\r\n // remove lines from the previous line since they're on a new line now\r\n if (!(isEndOfLine && charIndex === 0)) {\r\n delete this.styles[lineIndex][index];\r\n }\r\n }\r\n }\r\n let styleCarriedOver = false;\r\n if (someStyleIsCarryingOver && !isEndOfLine) {\r\n // if is end of line, the extra style we copied\r\n // is probably not something we want\r\n this.styles[lineIndex + qty] = newLineStyles;\r\n styleCarriedOver = true;\r\n }\r\n if (styleCarriedOver || originalLineLength > charIndex) {\r\n // skip the last line of since we already prepared it.\r\n // or contains text without style that we don't want to style\r\n // just because it changed lines\r\n qty--;\r\n }\r\n // for the all the lines or all the other lines\r\n // we clone current char style onto the next (otherwise empty) line\r\n while (qty > 0) {\r\n if (copiedStyle && copiedStyle[qty - 1]) {\r\n this.styles[lineIndex + qty] = {\r\n 0: { ...copiedStyle[qty - 1] },\r\n };\r\n } else if (currentCharStyle) {\r\n this.styles[lineIndex + qty] = {\r\n 0: { ...currentCharStyle },\r\n };\r\n } else {\r\n delete this.styles[lineIndex + qty];\r\n }\r\n qty--;\r\n }\r\n this._forceClearCache = true;\r\n }\r\n\r\n /**\r\n * Inserts style object for a given line/char index\r\n * @param {Number} lineIndex Index of a line\r\n * @param {Number} charIndex Index of a char\r\n * @param {Number} quantity number Style object to insert, if given\r\n * @param {Array} copiedStyle array of style objects\r\n */\r\n insertCharStyleObject(\r\n lineIndex: number,\r\n charIndex: number,\r\n quantity: number,\r\n copiedStyle?: TextStyleDeclaration[],\r\n ) {\r\n if (!this.styles) {\r\n this.styles = {};\r\n }\r\n const currentLineStyles = this.styles[lineIndex],\r\n currentLineStylesCloned = currentLineStyles\r\n ? { ...currentLineStyles }\r\n : {};\r\n\r\n quantity || (quantity = 1);\r\n // shift all char styles by quantity forward\r\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\r\n for (const index in currentLineStylesCloned) {\r\n const numericIndex = parseInt(index, 10);\r\n if (numericIndex >= charIndex) {\r\n currentLineStyles[numericIndex + quantity] =\r\n currentLineStylesCloned[numericIndex];\r\n // only delete the style if there was nothing moved there\r\n if (!currentLineStylesCloned[numericIndex - quantity]) {\r\n delete currentLineStyles[numericIndex];\r\n }\r\n }\r\n }\r\n this._forceClearCache = true;\r\n if (copiedStyle) {\r\n while (quantity--) {\r\n if (!Object.keys(copiedStyle[quantity]).length) {\r\n continue;\r\n }\r\n if (!this.styles[lineIndex]) {\r\n this.styles[lineIndex] = {};\r\n }\r\n this.styles[lineIndex][charIndex + quantity] = {\r\n ...copiedStyle[quantity],\r\n };\r\n }\r\n return;\r\n }\r\n if (!currentLineStyles) {\r\n return;\r\n }\r\n const newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\r\n while (newStyle && quantity--) {\r\n this.styles[lineIndex][charIndex + quantity] = { ...newStyle };\r\n }\r\n }\r\n\r\n /**\r\n * Inserts style object(s)\r\n * @param {Array} insertedText Characters at the location where style is inserted\r\n * @param {Number} start cursor index for inserting style\r\n * @param {Array} [copiedStyle] array of style objects to insert.\r\n */\r\n insertNewStyleBlock(\r\n insertedText: string[],\r\n start: number,\r\n copiedStyle?: TextStyleDeclaration[],\r\n ) {\r\n const cursorLoc = this.get2DCursorLocation(start, true),\r\n addedLines = [0];\r\n let linesLength = 0;\r\n // get an array of how many char per lines are being added.\r\n for (let i = 0; i < insertedText.length; i++) {\r\n if (insertedText[i] === '\\n') {\r\n linesLength++;\r\n addedLines[linesLength] = 0;\r\n } else {\r\n addedLines[linesLength]++;\r\n }\r\n }\r\n // for the first line copy the style from the current char position.\r\n if (addedLines[0] > 0) {\r\n this.insertCharStyleObject(\r\n cursorLoc.lineIndex,\r\n cursorLoc.charIndex,\r\n addedLines[0],\r\n copiedStyle,\r\n );\r\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\r\n }\r\n linesLength &&\r\n this.insertNewlineStyleObject(\r\n cursorLoc.lineIndex,\r\n cursorLoc.charIndex + addedLines[0],\r\n linesLength,\r\n );\r\n let i;\r\n for (i = 1; i < linesLength; i++) {\r\n if (addedLines[i] > 0) {\r\n this.insertCharStyleObject(\r\n cursorLoc.lineIndex + i,\r\n 0,\r\n addedLines[i],\r\n copiedStyle,\r\n );\r\n } else if (copiedStyle) {\r\n // this test is required in order to close #6841\r\n // when a pasted buffer begins with a newline then\r\n // this.styles[cursorLoc.lineIndex + i] and copiedStyle[0]\r\n // may be undefined for some reason\r\n if (this.styles[cursorLoc.lineIndex + i] && copiedStyle[0]) {\r\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\r\n }\r\n }\r\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\r\n }\r\n if (addedLines[i] > 0) {\r\n this.insertCharStyleObject(\r\n cursorLoc.lineIndex + i,\r\n 0,\r\n addedLines[i],\r\n copiedStyle,\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Removes characters from start/end\r\n * start/end ar per grapheme position in _text array.\r\n *\r\n * @param {Number} start\r\n * @param {Number} end default to start + 1\r\n */\r\n removeChars(start: number, end: number = start + 1) {\r\n this.removeStyleFromTo(start, end);\r\n this._text.splice(start, end - start);\r\n this.text = this._text.join('');\r\n this.set('dirty', true);\r\n this.initDimensions();\r\n this.setCoords();\r\n this._removeExtraneousStyles();\r\n }\r\n\r\n /**\r\n * insert characters at start position, before start position.\r\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\r\n * if style array is provided, it must be as the same length of text in graphemes\r\n * if end is provided and is bigger than start, old text is replaced.\r\n * start/end ar per grapheme position in _text array.\r\n *\r\n * @param {String} text text to insert\r\n * @param {Array} style array of style objects\r\n * @param {Number} start\r\n * @param {Number} end default to start + 1\r\n */\r\n insertChars(\r\n text: string,\r\n style: TextStyleDeclaration[] | undefined,\r\n start: number,\r\n end: number = start,\r\n ) {\r\n if (end > start) {\r\n this.removeStyleFromTo(start, end);\r\n }\r\n const graphemes = this.graphemeSplit(text);\r\n this.insertNewStyleBlock(graphemes, start, style);\r\n this._text = [\r\n ...this._text.slice(0, start),\r\n ...graphemes,\r\n ...this._text.slice(end),\r\n ];\r\n this.text = this._text.join('');\r\n this.set('dirty', true);\r\n this.initDimensions();\r\n this.setCoords();\r\n this._removeExtraneousStyles();\r\n }\r\n\r\n /**\r\n * Set the selectionStart and selectionEnd according to the new position of cursor\r\n * mimic the key - mouse navigation when shift is pressed.\r\n */\r\n setSelectionStartEndWithShift(\r\n start: number,\r\n end: number,\r\n newSelection: number,\r\n ) {\r\n if (newSelection <= start) {\r\n if (end === start) {\r\n this._selectionDirection = LEFT;\r\n } else if (this._selectionDirection === RIGHT) {\r\n this._selectionDirection = LEFT;\r\n this.selectionEnd = start;\r\n }\r\n this.selectionStart = newSelection;\r\n } else if (newSelection > start && newSelection < end) {\r\n if (this._selectionDirection === RIGHT) {\r\n this.selectionEnd = newSelection;\r\n } else {\r\n this.selectionStart = newSelection;\r\n }\r\n } else {\r\n // newSelection is > selection start and end\r\n if (end === start) {\r\n this._selectionDirection = RIGHT;\r\n } else if (this._selectionDirection === LEFT) {\r\n this._selectionDirection = RIGHT;\r\n this.selectionStart = end;\r\n }\r\n this.selectionEnd = newSelection;\r\n }\r\n }\r\n}"],"names":["reNonWord","ITextBehavior","FabricText","constructor","super","arguments","_defineProperty","initBehavior","this","_tick","bind","_onTickComplete","updateSelectionOnMouseMove","onDeselect","options","isEditing","exitEditing","selected","_animateCursor","_ref","toValue","duration","delay","onComplete","animate","startValue","_currentCursorOpacity","endValue","abort","canvas","selectionStart","selectionEnd","onChange","value","renderCursorOrSelection","_currentTickState","cursorDuration","Math","max","_this$_currentTickCom","_currentTickCompleteState","initDelayedCursor","restart","abortCursorAnimation","cursorDelay","shouldClear","forEach","cursorAnimation","isDone","clearContextTop","restartCursorIfNeeded","some","selectAll","_text","length","_fireSelectionChanged","_updateTextarea","cmdAll","getSelectedText","slice","join","findWordBoundaryLeft","startFrom","offset","index","_reSpace","test","findWordBoundaryRight","findLineBoundaryLeft","findLineBoundaryRight","searchWordBoundary","direction","text","reNewline","_char","selectWord","newSelectionStart","newSelectionEnd","selectLine","enterEditing","e","editable","enterEditingImpl","fire","undefined","target","requestRenderAll","calcOffset","textEditingManager","exitTextEditing","useOverlayEditing","enterOverlayEditing","initHiddenTextarea","hiddenTextarea","focus","_saveEditingProps","_setEditingProps","_textBeforeEdit","enterTextOverlayEdit","onCommit","commitOverlayEdit","onCancel","cancelOverlayEdit","overlayEditor","__overlayEditor","result","extractLinesFromDOM","textareaElement","storeBrowserLines","lines","error","console","warn","dirty","initDimensions","setCoords","getActiveControl","el","getDocumentFromElement","activeElement","getSelectionStartFromPointer","currentStart","currentEnd","__selectionStartOnMouseDown","startIndex","min","endIndex","hoverCursor","defaultCursor","moveCursor","borderColor","editingBorderColor","hasControls","selectable","lockMovementX","lockMovementY","fromStringToGraphemeSelection","start","end","smallerTextStart","graphemeStart","graphemeSplit","smallerTextEnd","fromGraphemeToStringSelection","graphemes","cursorOffsetCache","inCompositionMode","newSelection","updateTextareaPosition","updateFromTextArea","textarea","set","style","_calcTextareaPosition","left","top","desiredPosition","compositionStart","boundaries","_getCursorBoundaries","cursorLocation","get2DCursorLocation","lineIndex","charIndex","charHeight","getValueOfPropertyAt","lineHeight","leftOffset","retinaScaling","getCanvasRetinaScaling","upperCanvas","upperCanvasEl","upperCanvasWidth","width","upperCanvasHeight","height","maxWidth","maxHeight","p","Point","topOffset","transform","calcTransformMatrix","viewportTransform","multiply","clientWidth","clientHeight","x","y","_offset","fontSize","_savedProps","_restoreEditingProps","_this$_savedProps$def","_this$_savedProps$mov","exitEditingImpl","blur","parentNode","removeChild","_forceClearCache","isTextChanged","MODIFIED","_removeExtraneousStyles","prop","styles","_textLines","removeStyleFromTo","lineStart","charStart","lineEnd","charEnd","i","_unwrappedTextLines","styleObj","shiftLineStyles","diff","char","numericChar","parseInt","clonedStyles","Object","assign","line","numericLine","insertNewlineStyleObject","qty","copiedStyle","newLineStyles","originalLineLength","isEndOfLine","someStyleIsCarryingOver","currentCharStyle","numIndex","styleCarriedOver","insertCharStyleObject","quantity","currentLineStyles","currentLineStylesCloned","numericIndex","keys","newStyle","insertNewStyleBlock","insertedText","cursorLoc","addedLines","linesLength","removeChars","splice","insertChars","setSelectionStartEndWithShift","_selectionDirection","LEFT","RIGHT"],"mappings":"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"}