@nasser-sw/fabric 7.0.1-beta13 → 7.0.1-beta14

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 (2543) 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/debug/{konva-master → konva}/CHANGELOG.md +1 -2
  18. package/debug/{konva-master → konva}/LICENSE +0 -0
  19. package/debug/{konva-master → konva}/README.md +3 -7
  20. package/debug/{konva-master → konva}/gulpfile.mjs +0 -0
  21. package/debug/{konva-master → konva}/package.json +1 -1
  22. package/debug/{konva-master → konva}/release.sh +4 -1
  23. package/debug/{konva-master → konva}/resources/doc-includes/ContainerParams.txt +0 -0
  24. package/debug/{konva-master → konva}/resources/doc-includes/NodeParams.txt +0 -0
  25. package/debug/{konva-master → konva}/resources/doc-includes/ShapeParams.txt +0 -0
  26. package/debug/{konva-master → konva}/resources/jsdoc.conf.json +0 -0
  27. package/debug/{konva-master → konva}/rollup.config.mjs +0 -0
  28. package/debug/{konva-master → konva}/src/Animation.ts +0 -0
  29. package/debug/{konva-master → konva}/src/BezierFunctions.ts +0 -0
  30. package/debug/{konva-master → konva}/src/Canvas.ts +0 -37
  31. package/debug/{konva-master → konva}/src/Container.ts +0 -0
  32. package/debug/{konva-master → konva}/src/Context.ts +0 -0
  33. package/debug/{konva-master → konva}/src/Core.ts +0 -0
  34. package/debug/{konva-master → konva}/src/DragAndDrop.ts +0 -0
  35. package/debug/{konva-master → konva}/src/Factory.ts +0 -0
  36. package/debug/{konva-master → konva}/src/FastLayer.ts +0 -0
  37. package/debug/{konva-master → konva}/src/Global.ts +0 -0
  38. package/debug/{konva-master → konva}/src/Group.ts +0 -0
  39. package/debug/{konva-master → konva}/src/Layer.ts +0 -0
  40. package/debug/{konva-master → konva}/src/Node.ts +0 -0
  41. package/debug/{konva-master → konva}/src/PointerEvents.ts +0 -0
  42. package/debug/{konva-master → konva}/src/Shape.ts +0 -0
  43. package/debug/{konva-master → konva}/src/Stage.ts +0 -0
  44. package/debug/{konva-master → konva}/src/Tween.ts +0 -0
  45. package/debug/{konva-master → konva}/src/Util.ts +0 -0
  46. package/debug/{konva-master → konva}/src/Validators.ts +0 -0
  47. package/debug/{konva-master → konva}/src/_CoreInternals.ts +0 -0
  48. package/debug/{konva-master → konva}/src/_FullInternals.ts +0 -0
  49. package/debug/{konva-master → konva}/src/canvas-backend.ts +0 -0
  50. package/debug/{konva-master → konva}/src/filters/Blur.ts +0 -0
  51. package/debug/{konva-master → konva}/src/filters/Brighten.ts +0 -0
  52. package/debug/{konva-master → konva}/src/filters/Brightness.ts +0 -0
  53. package/debug/{konva-master → konva}/src/filters/Contrast.ts +0 -0
  54. package/debug/{konva-master → konva}/src/filters/Emboss.ts +0 -0
  55. package/debug/{konva-master → konva}/src/filters/Enhance.ts +0 -0
  56. package/debug/{konva-master → konva}/src/filters/Grayscale.ts +0 -0
  57. package/debug/{konva-master → konva}/src/filters/HSL.ts +0 -0
  58. package/debug/{konva-master → konva}/src/filters/HSV.ts +0 -0
  59. package/debug/{konva-master → konva}/src/filters/Invert.ts +0 -0
  60. package/debug/{konva-master → konva}/src/filters/Kaleidoscope.ts +0 -0
  61. package/debug/{konva-master → konva}/src/filters/Mask.ts +0 -0
  62. package/debug/{konva-master → konva}/src/filters/Noise.ts +0 -0
  63. package/debug/{konva-master → konva}/src/filters/Pixelate.ts +0 -0
  64. package/debug/{konva-master → konva}/src/filters/Posterize.ts +0 -0
  65. package/debug/{konva-master → konva}/src/filters/RGB.ts +0 -0
  66. package/debug/{konva-master → konva}/src/filters/RGBA.ts +0 -0
  67. package/debug/{konva-master → konva}/src/filters/Sepia.ts +0 -0
  68. package/debug/{konva-master → konva}/src/filters/Solarize.ts +0 -0
  69. package/debug/{konva-master → konva}/src/filters/Threshold.ts +0 -0
  70. package/debug/{konva-master → konva}/src/index.ts +0 -0
  71. package/debug/{konva-master → konva}/src/shapes/Arc.ts +0 -0
  72. package/debug/{konva-master → konva}/src/shapes/Arrow.ts +0 -0
  73. package/debug/{konva-master → konva}/src/shapes/Circle.ts +0 -0
  74. package/debug/{konva-master → konva}/src/shapes/Ellipse.ts +0 -0
  75. package/debug/{konva-master → konva}/src/shapes/Image.ts +0 -0
  76. package/debug/{konva-master → konva}/src/shapes/Label.ts +0 -0
  77. package/debug/{konva-master → konva}/src/shapes/Line.ts +0 -0
  78. package/debug/{konva-master → konva}/src/shapes/Path.ts +0 -0
  79. package/debug/{konva-master → konva}/src/shapes/Rect.ts +0 -0
  80. package/debug/{konva-master → konva}/src/shapes/RegularPolygon.ts +0 -0
  81. package/debug/{konva-master → konva}/src/shapes/Ring.ts +0 -0
  82. package/debug/{konva-master → konva}/src/shapes/Sprite.ts +0 -0
  83. package/debug/{konva-master → konva}/src/shapes/Star.ts +0 -0
  84. package/debug/{konva-master → konva}/src/shapes/Text.ts +2 -2
  85. package/debug/{konva-master → konva}/src/shapes/TextPath.ts +0 -0
  86. package/debug/{konva-master → konva}/src/shapes/Transformer.ts +0 -0
  87. package/debug/{konva-master → konva}/src/shapes/Wedge.ts +0 -0
  88. package/debug/{konva-master → konva}/src/skia-backend.ts +0 -0
  89. package/debug/{konva-master → konva}/src/types.ts +0 -0
  90. package/debug/{konva-master → konva}/tsconfig.json +0 -0
  91. package/debug/{konva-master → konva}/tsconfig.test.json +0 -0
  92. package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs +0 -0
  93. package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs.map +0 -0
  94. package/dist/_virtual/_rollupPluginBabelHelpers.mjs +0 -0
  95. package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -0
  96. package/dist/extensions/aligning_guidelines/constant.d.ts +0 -0
  97. package/dist/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  98. package/dist/extensions/aligning_guidelines/index.d.ts +0 -0
  99. package/dist/extensions/aligning_guidelines/index.d.ts.map +0 -0
  100. package/dist/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  101. package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  102. package/dist/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  103. package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  104. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  105. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  106. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  107. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  108. package/dist/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  109. package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  110. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  111. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  112. package/dist/extensions/data_updaters/gradient/index.d.ts +0 -0
  113. package/dist/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  114. package/dist/extensions/data_updaters/origins/index.d.ts +0 -0
  115. package/dist/extensions/data_updaters/origins/index.d.ts.map +0 -0
  116. package/dist/extensions/index.d.ts +0 -0
  117. package/dist/extensions/index.d.ts.map +0 -0
  118. package/dist/fabric.d.ts +0 -0
  119. package/dist/fabric.d.ts.map +0 -0
  120. package/dist/fabric.min.mjs +0 -0
  121. package/dist/fabric.min.mjs.map +0 -0
  122. package/dist/fabric.mjs +0 -0
  123. package/dist/fabric.mjs.map +0 -0
  124. package/dist/index.d.ts +0 -0
  125. package/dist/index.d.ts.map +0 -0
  126. package/dist/index.js +1046 -721
  127. package/dist/index.js.map +1 -1
  128. package/dist/index.min.js +1 -1
  129. package/dist/index.min.js.map +1 -1
  130. package/dist/index.min.mjs +1 -1
  131. package/dist/index.min.mjs.map +1 -1
  132. package/dist/index.mjs +1046 -721
  133. package/dist/index.mjs.map +1 -1
  134. package/dist/index.node.cjs +1046 -721
  135. package/dist/index.node.cjs.map +1 -1
  136. package/dist/index.node.d.ts +0 -0
  137. package/dist/index.node.d.ts.map +0 -0
  138. package/dist/index.node.mjs +1046 -721
  139. package/dist/index.node.mjs.map +1 -1
  140. package/dist/package.json.min.mjs +1 -1
  141. package/dist/package.json.min.mjs.map +0 -0
  142. package/dist/package.json.mjs +1 -1
  143. package/dist/package.json.mjs.map +0 -0
  144. package/dist/src/ClassRegistry.d.ts +0 -0
  145. package/dist/src/ClassRegistry.d.ts.map +0 -0
  146. package/dist/src/ClassRegistry.min.mjs +0 -0
  147. package/dist/src/ClassRegistry.min.mjs.map +0 -0
  148. package/dist/src/ClassRegistry.mjs +0 -0
  149. package/dist/src/ClassRegistry.mjs.map +0 -0
  150. package/dist/src/Collection.d.ts +0 -0
  151. package/dist/src/Collection.d.ts.map +0 -0
  152. package/dist/src/Collection.min.mjs +0 -0
  153. package/dist/src/Collection.min.mjs.map +0 -0
  154. package/dist/src/Collection.mjs +0 -0
  155. package/dist/src/Collection.mjs.map +0 -0
  156. package/dist/src/CommonMethods.d.ts +0 -0
  157. package/dist/src/CommonMethods.d.ts.map +0 -0
  158. package/dist/src/CommonMethods.min.mjs +0 -0
  159. package/dist/src/CommonMethods.min.mjs.map +0 -0
  160. package/dist/src/CommonMethods.mjs +0 -0
  161. package/dist/src/CommonMethods.mjs.map +0 -0
  162. package/dist/src/EventTypeDefs.d.ts +0 -0
  163. package/dist/src/EventTypeDefs.d.ts.map +0 -0
  164. package/dist/src/Intersection.d.ts +0 -0
  165. package/dist/src/Intersection.d.ts.map +0 -0
  166. package/dist/src/Intersection.min.mjs +0 -0
  167. package/dist/src/Intersection.min.mjs.map +0 -0
  168. package/dist/src/Intersection.mjs +0 -0
  169. package/dist/src/Intersection.mjs.map +0 -0
  170. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  171. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  172. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs +0 -0
  173. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +0 -0
  174. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs +0 -0
  175. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +0 -0
  176. package/dist/src/LayoutManager/LayoutManager.d.ts +0 -0
  177. package/dist/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  178. package/dist/src/LayoutManager/LayoutManager.min.mjs +0 -0
  179. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +0 -0
  180. package/dist/src/LayoutManager/LayoutManager.mjs +0 -0
  181. package/dist/src/LayoutManager/LayoutManager.mjs.map +0 -0
  182. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  183. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  184. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +0 -0
  185. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +0 -0
  186. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +0 -0
  187. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +0 -0
  188. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  189. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  190. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +0 -0
  191. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs.map +0 -0
  192. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +0 -0
  193. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs.map +0 -0
  194. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  195. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  196. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +0 -0
  197. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +0 -0
  198. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +0 -0
  199. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +0 -0
  200. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  201. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  202. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +0 -0
  203. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +0 -0
  204. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +0 -0
  205. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +0 -0
  206. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  207. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  208. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs +0 -0
  209. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +0 -0
  210. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs +0 -0
  211. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +0 -0
  212. package/dist/src/LayoutManager/constants.d.ts +0 -0
  213. package/dist/src/LayoutManager/constants.d.ts.map +0 -0
  214. package/dist/src/LayoutManager/constants.min.mjs +0 -0
  215. package/dist/src/LayoutManager/constants.min.mjs.map +0 -0
  216. package/dist/src/LayoutManager/constants.mjs +0 -0
  217. package/dist/src/LayoutManager/constants.mjs.map +0 -0
  218. package/dist/src/LayoutManager/index.d.ts +0 -0
  219. package/dist/src/LayoutManager/index.d.ts.map +0 -0
  220. package/dist/src/LayoutManager/types.d.ts +0 -0
  221. package/dist/src/LayoutManager/types.d.ts.map +0 -0
  222. package/dist/src/Observable.d.ts +0 -0
  223. package/dist/src/Observable.d.ts.map +0 -0
  224. package/dist/src/Observable.min.mjs +0 -0
  225. package/dist/src/Observable.min.mjs.map +0 -0
  226. package/dist/src/Observable.mjs +0 -0
  227. package/dist/src/Observable.mjs.map +0 -0
  228. package/dist/src/Pattern/Pattern.d.ts +0 -0
  229. package/dist/src/Pattern/Pattern.d.ts.map +0 -0
  230. package/dist/src/Pattern/Pattern.min.mjs +0 -0
  231. package/dist/src/Pattern/Pattern.min.mjs.map +0 -0
  232. package/dist/src/Pattern/Pattern.mjs +0 -0
  233. package/dist/src/Pattern/Pattern.mjs.map +0 -0
  234. package/dist/src/Pattern/index.d.ts +0 -0
  235. package/dist/src/Pattern/index.d.ts.map +0 -0
  236. package/dist/src/Pattern/types.d.ts +0 -0
  237. package/dist/src/Pattern/types.d.ts.map +0 -0
  238. package/dist/src/Point.d.ts +0 -0
  239. package/dist/src/Point.d.ts.map +0 -0
  240. package/dist/src/Point.min.mjs +0 -0
  241. package/dist/src/Point.min.mjs.map +0 -0
  242. package/dist/src/Point.mjs +0 -0
  243. package/dist/src/Point.mjs.map +0 -0
  244. package/dist/src/Shadow.d.ts +0 -0
  245. package/dist/src/Shadow.d.ts.map +0 -0
  246. package/dist/src/Shadow.min.mjs +0 -0
  247. package/dist/src/Shadow.min.mjs.map +0 -0
  248. package/dist/src/Shadow.mjs +0 -0
  249. package/dist/src/Shadow.mjs.map +0 -0
  250. package/dist/src/brushes/BaseBrush.d.ts +0 -0
  251. package/dist/src/brushes/BaseBrush.d.ts.map +0 -0
  252. package/dist/src/brushes/BaseBrush.min.mjs +0 -0
  253. package/dist/src/brushes/BaseBrush.min.mjs.map +0 -0
  254. package/dist/src/brushes/BaseBrush.mjs +0 -0
  255. package/dist/src/brushes/BaseBrush.mjs.map +0 -0
  256. package/dist/src/brushes/CircleBrush.d.ts +0 -0
  257. package/dist/src/brushes/CircleBrush.d.ts.map +0 -0
  258. package/dist/src/brushes/CircleBrush.min.mjs +0 -0
  259. package/dist/src/brushes/CircleBrush.min.mjs.map +0 -0
  260. package/dist/src/brushes/CircleBrush.mjs +0 -0
  261. package/dist/src/brushes/CircleBrush.mjs.map +0 -0
  262. package/dist/src/brushes/PatternBrush.d.ts +0 -0
  263. package/dist/src/brushes/PatternBrush.d.ts.map +0 -0
  264. package/dist/src/brushes/PatternBrush.min.mjs +0 -0
  265. package/dist/src/brushes/PatternBrush.min.mjs.map +0 -0
  266. package/dist/src/brushes/PatternBrush.mjs +0 -0
  267. package/dist/src/brushes/PatternBrush.mjs.map +0 -0
  268. package/dist/src/brushes/PencilBrush.d.ts +0 -0
  269. package/dist/src/brushes/PencilBrush.d.ts.map +0 -0
  270. package/dist/src/brushes/PencilBrush.min.mjs +0 -0
  271. package/dist/src/brushes/PencilBrush.min.mjs.map +0 -0
  272. package/dist/src/brushes/PencilBrush.mjs +0 -0
  273. package/dist/src/brushes/PencilBrush.mjs.map +0 -0
  274. package/dist/src/brushes/SprayBrush.d.ts +0 -0
  275. package/dist/src/brushes/SprayBrush.d.ts.map +0 -0
  276. package/dist/src/brushes/SprayBrush.min.mjs +0 -0
  277. package/dist/src/brushes/SprayBrush.min.mjs.map +0 -0
  278. package/dist/src/brushes/SprayBrush.mjs +0 -0
  279. package/dist/src/brushes/SprayBrush.mjs.map +0 -0
  280. package/dist/src/brushes/typedefs.d.ts +0 -0
  281. package/dist/src/brushes/typedefs.d.ts.map +0 -0
  282. package/dist/src/cache.d.ts +0 -0
  283. package/dist/src/cache.d.ts.map +0 -0
  284. package/dist/src/cache.min.mjs +0 -0
  285. package/dist/src/cache.min.mjs.map +0 -0
  286. package/dist/src/cache.mjs +0 -0
  287. package/dist/src/cache.mjs.map +0 -0
  288. package/dist/src/canvas/Canvas.d.ts +0 -0
  289. package/dist/src/canvas/Canvas.d.ts.map +0 -0
  290. package/dist/src/canvas/Canvas.min.mjs +0 -0
  291. package/dist/src/canvas/Canvas.min.mjs.map +0 -0
  292. package/dist/src/canvas/Canvas.mjs +0 -0
  293. package/dist/src/canvas/Canvas.mjs.map +0 -0
  294. package/dist/src/canvas/CanvasOptions.d.ts +0 -0
  295. package/dist/src/canvas/CanvasOptions.d.ts.map +0 -0
  296. package/dist/src/canvas/CanvasOptions.min.mjs +0 -0
  297. package/dist/src/canvas/CanvasOptions.min.mjs.map +0 -0
  298. package/dist/src/canvas/CanvasOptions.mjs +0 -0
  299. package/dist/src/canvas/CanvasOptions.mjs.map +0 -0
  300. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  301. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  302. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +0 -0
  303. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +0 -0
  304. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +0 -0
  305. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +0 -0
  306. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  307. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  308. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +0 -0
  309. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +0 -0
  310. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +0 -0
  311. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +0 -0
  312. package/dist/src/canvas/DOMManagers/util.d.ts +0 -0
  313. package/dist/src/canvas/DOMManagers/util.d.ts.map +0 -0
  314. package/dist/src/canvas/DOMManagers/util.min.mjs +0 -0
  315. package/dist/src/canvas/DOMManagers/util.min.mjs.map +0 -0
  316. package/dist/src/canvas/DOMManagers/util.mjs +0 -0
  317. package/dist/src/canvas/DOMManagers/util.mjs.map +0 -0
  318. package/dist/src/canvas/SelectableCanvas.d.ts +0 -0
  319. package/dist/src/canvas/SelectableCanvas.d.ts.map +0 -0
  320. package/dist/src/canvas/SelectableCanvas.min.mjs +0 -0
  321. package/dist/src/canvas/SelectableCanvas.min.mjs.map +0 -0
  322. package/dist/src/canvas/SelectableCanvas.mjs +0 -0
  323. package/dist/src/canvas/SelectableCanvas.mjs.map +0 -0
  324. package/dist/src/canvas/StaticCanvas.d.ts +0 -0
  325. package/dist/src/canvas/StaticCanvas.d.ts.map +0 -0
  326. package/dist/src/canvas/StaticCanvas.min.mjs +0 -0
  327. package/dist/src/canvas/StaticCanvas.min.mjs.map +0 -0
  328. package/dist/src/canvas/StaticCanvas.mjs +0 -0
  329. package/dist/src/canvas/StaticCanvas.mjs.map +0 -0
  330. package/dist/src/canvas/StaticCanvasOptions.d.ts +0 -0
  331. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  332. package/dist/src/canvas/StaticCanvasOptions.min.mjs +0 -0
  333. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +0 -0
  334. package/dist/src/canvas/StaticCanvasOptions.mjs +0 -0
  335. package/dist/src/canvas/StaticCanvasOptions.mjs.map +0 -0
  336. package/dist/src/canvas/TextEditingManager.d.ts +0 -0
  337. package/dist/src/canvas/TextEditingManager.d.ts.map +0 -0
  338. package/dist/src/canvas/TextEditingManager.min.mjs +0 -0
  339. package/dist/src/canvas/TextEditingManager.min.mjs.map +0 -0
  340. package/dist/src/canvas/TextEditingManager.mjs +0 -0
  341. package/dist/src/canvas/TextEditingManager.mjs.map +0 -0
  342. package/dist/src/canvas/canvas_gestures.mixin.d.ts +0 -0
  343. package/dist/src/canvas/canvas_gestures.mixin.d.ts.map +0 -0
  344. package/dist/src/color/Color.d.ts +0 -0
  345. package/dist/src/color/Color.d.ts.map +0 -0
  346. package/dist/src/color/Color.min.mjs +0 -0
  347. package/dist/src/color/Color.min.mjs.map +0 -0
  348. package/dist/src/color/Color.mjs +0 -0
  349. package/dist/src/color/Color.mjs.map +0 -0
  350. package/dist/src/color/color_map.d.ts +0 -0
  351. package/dist/src/color/color_map.d.ts.map +0 -0
  352. package/dist/src/color/color_map.min.mjs +0 -0
  353. package/dist/src/color/color_map.min.mjs.map +0 -0
  354. package/dist/src/color/color_map.mjs +0 -0
  355. package/dist/src/color/color_map.mjs.map +0 -0
  356. package/dist/src/color/constants.d.ts +0 -0
  357. package/dist/src/color/constants.d.ts.map +0 -0
  358. package/dist/src/color/constants.min.mjs +0 -0
  359. package/dist/src/color/constants.min.mjs.map +0 -0
  360. package/dist/src/color/constants.mjs +0 -0
  361. package/dist/src/color/constants.mjs.map +0 -0
  362. package/dist/src/color/typedefs.d.ts +0 -0
  363. package/dist/src/color/typedefs.d.ts.map +0 -0
  364. package/dist/src/color/util.d.ts +0 -0
  365. package/dist/src/color/util.d.ts.map +0 -0
  366. package/dist/src/color/util.min.mjs +0 -0
  367. package/dist/src/color/util.min.mjs.map +0 -0
  368. package/dist/src/color/util.mjs +0 -0
  369. package/dist/src/color/util.mjs.map +0 -0
  370. package/dist/src/config.d.ts +0 -0
  371. package/dist/src/config.d.ts.map +0 -0
  372. package/dist/src/config.min.mjs +0 -0
  373. package/dist/src/config.min.mjs.map +0 -0
  374. package/dist/src/config.mjs +0 -0
  375. package/dist/src/config.mjs.map +0 -0
  376. package/dist/src/constants.d.ts +0 -0
  377. package/dist/src/constants.d.ts.map +0 -0
  378. package/dist/src/constants.min.mjs +0 -0
  379. package/dist/src/constants.min.mjs.map +0 -0
  380. package/dist/src/constants.mjs +0 -0
  381. package/dist/src/constants.mjs.map +0 -0
  382. package/dist/src/controls/Control.d.ts +0 -0
  383. package/dist/src/controls/Control.d.ts.map +0 -0
  384. package/dist/src/controls/Control.min.mjs +0 -0
  385. package/dist/src/controls/Control.min.mjs.map +0 -0
  386. package/dist/src/controls/Control.mjs +0 -0
  387. package/dist/src/controls/Control.mjs.map +0 -0
  388. package/dist/src/controls/changeHeight.d.ts +0 -0
  389. package/dist/src/controls/changeHeight.d.ts.map +0 -0
  390. package/dist/src/controls/changeHeight.min.mjs +2 -0
  391. package/dist/src/controls/changeHeight.min.mjs.map +1 -0
  392. package/dist/src/controls/changeHeight.mjs +36 -0
  393. package/dist/src/controls/changeHeight.mjs.map +1 -0
  394. package/dist/src/controls/changeWidth.d.ts +0 -0
  395. package/dist/src/controls/changeWidth.d.ts.map +0 -0
  396. package/dist/src/controls/changeWidth.min.mjs +0 -0
  397. package/dist/src/controls/changeWidth.min.mjs.map +0 -0
  398. package/dist/src/controls/changeWidth.mjs +0 -0
  399. package/dist/src/controls/changeWidth.mjs.map +0 -0
  400. package/dist/src/controls/commonControls.d.ts +0 -0
  401. package/dist/src/controls/commonControls.d.ts.map +0 -0
  402. package/dist/src/controls/commonControls.min.mjs +0 -0
  403. package/dist/src/controls/commonControls.min.mjs.map +0 -0
  404. package/dist/src/controls/commonControls.mjs +0 -0
  405. package/dist/src/controls/commonControls.mjs.map +0 -0
  406. package/dist/src/controls/controlRendering.d.ts +0 -0
  407. package/dist/src/controls/controlRendering.d.ts.map +0 -0
  408. package/dist/src/controls/controlRendering.min.mjs +0 -0
  409. package/dist/src/controls/controlRendering.min.mjs.map +0 -0
  410. package/dist/src/controls/controlRendering.mjs +0 -0
  411. package/dist/src/controls/controlRendering.mjs.map +0 -0
  412. package/dist/src/controls/drag.d.ts +0 -0
  413. package/dist/src/controls/drag.d.ts.map +0 -0
  414. package/dist/src/controls/drag.min.mjs +0 -0
  415. package/dist/src/controls/drag.min.mjs.map +0 -0
  416. package/dist/src/controls/drag.mjs +0 -0
  417. package/dist/src/controls/drag.mjs.map +0 -0
  418. package/dist/src/controls/fireEvent.d.ts +0 -0
  419. package/dist/src/controls/fireEvent.d.ts.map +0 -0
  420. package/dist/src/controls/fireEvent.min.mjs +0 -0
  421. package/dist/src/controls/fireEvent.min.mjs.map +0 -0
  422. package/dist/src/controls/fireEvent.mjs +0 -0
  423. package/dist/src/controls/fireEvent.mjs.map +0 -0
  424. package/dist/src/controls/index.d.ts +0 -0
  425. package/dist/src/controls/index.d.ts.map +0 -0
  426. package/dist/src/controls/index.min.mjs +0 -0
  427. package/dist/src/controls/index.min.mjs.map +0 -0
  428. package/dist/src/controls/index.mjs +0 -0
  429. package/dist/src/controls/index.mjs.map +0 -0
  430. package/dist/src/controls/pathControl.d.ts +0 -0
  431. package/dist/src/controls/pathControl.d.ts.map +0 -0
  432. package/dist/src/controls/pathControl.min.mjs +0 -0
  433. package/dist/src/controls/pathControl.min.mjs.map +0 -0
  434. package/dist/src/controls/pathControl.mjs +0 -0
  435. package/dist/src/controls/pathControl.mjs.map +0 -0
  436. package/dist/src/controls/polyControl.d.ts +0 -0
  437. package/dist/src/controls/polyControl.d.ts.map +0 -0
  438. package/dist/src/controls/polyControl.min.mjs +0 -0
  439. package/dist/src/controls/polyControl.min.mjs.map +0 -0
  440. package/dist/src/controls/polyControl.mjs +0 -0
  441. package/dist/src/controls/polyControl.mjs.map +0 -0
  442. package/dist/src/controls/rotate.d.ts +0 -0
  443. package/dist/src/controls/rotate.d.ts.map +0 -0
  444. package/dist/src/controls/rotate.min.mjs +0 -0
  445. package/dist/src/controls/rotate.min.mjs.map +0 -0
  446. package/dist/src/controls/rotate.mjs +0 -0
  447. package/dist/src/controls/rotate.mjs.map +0 -0
  448. package/dist/src/controls/scale.d.ts +0 -0
  449. package/dist/src/controls/scale.d.ts.map +0 -0
  450. package/dist/src/controls/scale.min.mjs +0 -0
  451. package/dist/src/controls/scale.min.mjs.map +0 -0
  452. package/dist/src/controls/scale.mjs +0 -0
  453. package/dist/src/controls/scale.mjs.map +0 -0
  454. package/dist/src/controls/scaleSkew.d.ts +0 -0
  455. package/dist/src/controls/scaleSkew.d.ts.map +0 -0
  456. package/dist/src/controls/scaleSkew.min.mjs +0 -0
  457. package/dist/src/controls/scaleSkew.min.mjs.map +0 -0
  458. package/dist/src/controls/scaleSkew.mjs +0 -0
  459. package/dist/src/controls/scaleSkew.mjs.map +0 -0
  460. package/dist/src/controls/skew.d.ts +0 -0
  461. package/dist/src/controls/skew.d.ts.map +0 -0
  462. package/dist/src/controls/skew.min.mjs +0 -0
  463. package/dist/src/controls/skew.min.mjs.map +0 -0
  464. package/dist/src/controls/skew.mjs +0 -0
  465. package/dist/src/controls/skew.mjs.map +0 -0
  466. package/dist/src/controls/util.d.ts +0 -0
  467. package/dist/src/controls/util.d.ts.map +0 -0
  468. package/dist/src/controls/util.min.mjs +0 -0
  469. package/dist/src/controls/util.min.mjs.map +0 -0
  470. package/dist/src/controls/util.mjs +0 -0
  471. package/dist/src/controls/util.mjs.map +0 -0
  472. package/dist/src/controls/wrapWithFireEvent.d.ts +0 -0
  473. package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  474. package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -0
  475. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -0
  476. package/dist/src/controls/wrapWithFireEvent.mjs +0 -0
  477. package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -0
  478. package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  479. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  480. package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -0
  481. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -0
  482. package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -0
  483. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -0
  484. package/dist/src/env/browser.d.ts +0 -0
  485. package/dist/src/env/browser.d.ts.map +0 -0
  486. package/dist/src/env/browser.min.mjs +0 -0
  487. package/dist/src/env/browser.min.mjs.map +0 -0
  488. package/dist/src/env/browser.mjs +0 -0
  489. package/dist/src/env/browser.mjs.map +0 -0
  490. package/dist/src/env/index.d.ts +0 -0
  491. package/dist/src/env/index.d.ts.map +0 -0
  492. package/dist/src/env/index.min.mjs +0 -0
  493. package/dist/src/env/index.min.mjs.map +0 -0
  494. package/dist/src/env/index.mjs +0 -0
  495. package/dist/src/env/index.mjs.map +0 -0
  496. package/dist/src/env/node.d.ts +0 -0
  497. package/dist/src/env/node.d.ts.map +0 -0
  498. package/dist/src/env/types.d.ts +0 -0
  499. package/dist/src/env/types.d.ts.map +0 -0
  500. package/dist/src/filters/BaseFilter.d.ts +0 -0
  501. package/dist/src/filters/BaseFilter.d.ts.map +0 -0
  502. package/dist/src/filters/BaseFilter.min.mjs +0 -0
  503. package/dist/src/filters/BaseFilter.min.mjs.map +0 -0
  504. package/dist/src/filters/BaseFilter.mjs +0 -0
  505. package/dist/src/filters/BaseFilter.mjs.map +0 -0
  506. package/dist/src/filters/BlendColor.d.ts +0 -0
  507. package/dist/src/filters/BlendColor.d.ts.map +0 -0
  508. package/dist/src/filters/BlendColor.min.mjs +0 -0
  509. package/dist/src/filters/BlendColor.min.mjs.map +0 -0
  510. package/dist/src/filters/BlendColor.mjs +0 -0
  511. package/dist/src/filters/BlendColor.mjs.map +0 -0
  512. package/dist/src/filters/BlendImage.d.ts +0 -0
  513. package/dist/src/filters/BlendImage.d.ts.map +0 -0
  514. package/dist/src/filters/BlendImage.min.mjs +0 -0
  515. package/dist/src/filters/BlendImage.min.mjs.map +0 -0
  516. package/dist/src/filters/BlendImage.mjs +0 -0
  517. package/dist/src/filters/BlendImage.mjs.map +0 -0
  518. package/dist/src/filters/Blur.d.ts +0 -0
  519. package/dist/src/filters/Blur.d.ts.map +0 -0
  520. package/dist/src/filters/Blur.min.mjs +0 -0
  521. package/dist/src/filters/Blur.min.mjs.map +0 -0
  522. package/dist/src/filters/Blur.mjs +0 -0
  523. package/dist/src/filters/Blur.mjs.map +0 -0
  524. package/dist/src/filters/Boilerplate.d.ts +0 -0
  525. package/dist/src/filters/Boilerplate.d.ts.map +0 -0
  526. package/dist/src/filters/Brightness.d.ts +0 -0
  527. package/dist/src/filters/Brightness.d.ts.map +0 -0
  528. package/dist/src/filters/Brightness.min.mjs +0 -0
  529. package/dist/src/filters/Brightness.min.mjs.map +0 -0
  530. package/dist/src/filters/Brightness.mjs +0 -0
  531. package/dist/src/filters/Brightness.mjs.map +0 -0
  532. package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  533. package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  534. package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -0
  535. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -0
  536. package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -0
  537. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -0
  538. package/dist/src/filters/ColorMatrix.d.ts +0 -0
  539. package/dist/src/filters/ColorMatrix.d.ts.map +0 -0
  540. package/dist/src/filters/ColorMatrix.min.mjs +0 -0
  541. package/dist/src/filters/ColorMatrix.min.mjs.map +0 -0
  542. package/dist/src/filters/ColorMatrix.mjs +0 -0
  543. package/dist/src/filters/ColorMatrix.mjs.map +0 -0
  544. package/dist/src/filters/ColorMatrixFilters.d.ts +0 -0
  545. package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  546. package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -0
  547. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -0
  548. package/dist/src/filters/ColorMatrixFilters.mjs +0 -0
  549. package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -0
  550. package/dist/src/filters/Composed.d.ts +0 -0
  551. package/dist/src/filters/Composed.d.ts.map +0 -0
  552. package/dist/src/filters/Composed.min.mjs +0 -0
  553. package/dist/src/filters/Composed.min.mjs.map +0 -0
  554. package/dist/src/filters/Composed.mjs +0 -0
  555. package/dist/src/filters/Composed.mjs.map +0 -0
  556. package/dist/src/filters/Contrast.d.ts +0 -0
  557. package/dist/src/filters/Contrast.d.ts.map +0 -0
  558. package/dist/src/filters/Contrast.min.mjs +0 -0
  559. package/dist/src/filters/Contrast.min.mjs.map +0 -0
  560. package/dist/src/filters/Contrast.mjs +0 -0
  561. package/dist/src/filters/Contrast.mjs.map +0 -0
  562. package/dist/src/filters/Convolute.d.ts +0 -0
  563. package/dist/src/filters/Convolute.d.ts.map +0 -0
  564. package/dist/src/filters/Convolute.min.mjs +0 -0
  565. package/dist/src/filters/Convolute.min.mjs.map +0 -0
  566. package/dist/src/filters/Convolute.mjs +0 -0
  567. package/dist/src/filters/Convolute.mjs.map +0 -0
  568. package/dist/src/filters/FilterBackend.d.ts +0 -0
  569. package/dist/src/filters/FilterBackend.d.ts.map +0 -0
  570. package/dist/src/filters/FilterBackend.min.mjs +0 -0
  571. package/dist/src/filters/FilterBackend.min.mjs.map +0 -0
  572. package/dist/src/filters/FilterBackend.mjs +0 -0
  573. package/dist/src/filters/FilterBackend.mjs.map +0 -0
  574. package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -0
  575. package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  576. package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -0
  577. package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -0
  578. package/dist/src/filters/GLProbes/GLProbe.mjs +0 -0
  579. package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -0
  580. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -0
  581. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -0
  582. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  583. package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  584. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -0
  585. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -0
  586. package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -0
  587. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -0
  588. package/dist/src/filters/Gamma.d.ts +0 -0
  589. package/dist/src/filters/Gamma.d.ts.map +0 -0
  590. package/dist/src/filters/Gamma.min.mjs +0 -0
  591. package/dist/src/filters/Gamma.min.mjs.map +0 -0
  592. package/dist/src/filters/Gamma.mjs +0 -0
  593. package/dist/src/filters/Gamma.mjs.map +0 -0
  594. package/dist/src/filters/Grayscale.d.ts +0 -0
  595. package/dist/src/filters/Grayscale.d.ts.map +0 -0
  596. package/dist/src/filters/Grayscale.min.mjs +0 -0
  597. package/dist/src/filters/Grayscale.min.mjs.map +0 -0
  598. package/dist/src/filters/Grayscale.mjs +0 -0
  599. package/dist/src/filters/Grayscale.mjs.map +0 -0
  600. package/dist/src/filters/HueRotation.d.ts +0 -0
  601. package/dist/src/filters/HueRotation.d.ts.map +0 -0
  602. package/dist/src/filters/HueRotation.min.mjs +0 -0
  603. package/dist/src/filters/HueRotation.min.mjs.map +0 -0
  604. package/dist/src/filters/HueRotation.mjs +0 -0
  605. package/dist/src/filters/HueRotation.mjs.map +0 -0
  606. package/dist/src/filters/Invert.d.ts +0 -0
  607. package/dist/src/filters/Invert.d.ts.map +0 -0
  608. package/dist/src/filters/Invert.min.mjs +0 -0
  609. package/dist/src/filters/Invert.min.mjs.map +0 -0
  610. package/dist/src/filters/Invert.mjs +0 -0
  611. package/dist/src/filters/Invert.mjs.map +0 -0
  612. package/dist/src/filters/Noise.d.ts +0 -0
  613. package/dist/src/filters/Noise.d.ts.map +0 -0
  614. package/dist/src/filters/Noise.min.mjs +0 -0
  615. package/dist/src/filters/Noise.min.mjs.map +0 -0
  616. package/dist/src/filters/Noise.mjs +0 -0
  617. package/dist/src/filters/Noise.mjs.map +0 -0
  618. package/dist/src/filters/Pixelate.d.ts +0 -0
  619. package/dist/src/filters/Pixelate.d.ts.map +0 -0
  620. package/dist/src/filters/Pixelate.min.mjs +0 -0
  621. package/dist/src/filters/Pixelate.min.mjs.map +0 -0
  622. package/dist/src/filters/Pixelate.mjs +0 -0
  623. package/dist/src/filters/Pixelate.mjs.map +0 -0
  624. package/dist/src/filters/RemoveColor.d.ts +0 -0
  625. package/dist/src/filters/RemoveColor.d.ts.map +0 -0
  626. package/dist/src/filters/RemoveColor.min.mjs +0 -0
  627. package/dist/src/filters/RemoveColor.min.mjs.map +0 -0
  628. package/dist/src/filters/RemoveColor.mjs +0 -0
  629. package/dist/src/filters/RemoveColor.mjs.map +0 -0
  630. package/dist/src/filters/Resize.d.ts +0 -0
  631. package/dist/src/filters/Resize.d.ts.map +0 -0
  632. package/dist/src/filters/Resize.min.mjs +0 -0
  633. package/dist/src/filters/Resize.min.mjs.map +0 -0
  634. package/dist/src/filters/Resize.mjs +0 -0
  635. package/dist/src/filters/Resize.mjs.map +0 -0
  636. package/dist/src/filters/Saturation.d.ts +0 -0
  637. package/dist/src/filters/Saturation.d.ts.map +0 -0
  638. package/dist/src/filters/Saturation.min.mjs +0 -0
  639. package/dist/src/filters/Saturation.min.mjs.map +0 -0
  640. package/dist/src/filters/Saturation.mjs +0 -0
  641. package/dist/src/filters/Saturation.mjs.map +0 -0
  642. package/dist/src/filters/Vibrance.d.ts +0 -0
  643. package/dist/src/filters/Vibrance.d.ts.map +0 -0
  644. package/dist/src/filters/Vibrance.min.mjs +0 -0
  645. package/dist/src/filters/Vibrance.min.mjs.map +0 -0
  646. package/dist/src/filters/Vibrance.mjs +0 -0
  647. package/dist/src/filters/Vibrance.mjs.map +0 -0
  648. package/dist/src/filters/WebGLFilterBackend.d.ts +0 -0
  649. package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  650. package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -0
  651. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -0
  652. package/dist/src/filters/WebGLFilterBackend.mjs +0 -0
  653. package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -0
  654. package/dist/src/filters/filters.d.ts +0 -0
  655. package/dist/src/filters/filters.d.ts.map +0 -0
  656. package/dist/src/filters/filters.min.mjs +0 -0
  657. package/dist/src/filters/filters.min.mjs.map +0 -0
  658. package/dist/src/filters/filters.mjs +0 -0
  659. package/dist/src/filters/filters.mjs.map +0 -0
  660. package/dist/src/filters/index.d.ts +0 -0
  661. package/dist/src/filters/index.d.ts.map +0 -0
  662. package/dist/src/filters/shaders/baseFilter.d.ts +0 -0
  663. package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -0
  664. package/dist/src/filters/shaders/baseFilter.min.mjs +0 -0
  665. package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -0
  666. package/dist/src/filters/shaders/baseFilter.mjs +0 -0
  667. package/dist/src/filters/shaders/baseFilter.mjs.map +0 -0
  668. package/dist/src/filters/shaders/blendColor.d.ts +0 -0
  669. package/dist/src/filters/shaders/blendColor.d.ts.map +0 -0
  670. package/dist/src/filters/shaders/blendColor.min.mjs +0 -0
  671. package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -0
  672. package/dist/src/filters/shaders/blendColor.mjs +0 -0
  673. package/dist/src/filters/shaders/blendColor.mjs.map +0 -0
  674. package/dist/src/filters/shaders/blendImage.d.ts +0 -0
  675. package/dist/src/filters/shaders/blendImage.d.ts.map +0 -0
  676. package/dist/src/filters/shaders/blendImage.min.mjs +0 -0
  677. package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -0
  678. package/dist/src/filters/shaders/blendImage.mjs +0 -0
  679. package/dist/src/filters/shaders/blendImage.mjs.map +0 -0
  680. package/dist/src/filters/shaders/blur.d.ts +0 -0
  681. package/dist/src/filters/shaders/blur.d.ts.map +0 -0
  682. package/dist/src/filters/shaders/blur.min.mjs +0 -0
  683. package/dist/src/filters/shaders/blur.min.mjs.map +0 -0
  684. package/dist/src/filters/shaders/blur.mjs +0 -0
  685. package/dist/src/filters/shaders/blur.mjs.map +0 -0
  686. package/dist/src/filters/shaders/brightness.d.ts +0 -0
  687. package/dist/src/filters/shaders/brightness.d.ts.map +0 -0
  688. package/dist/src/filters/shaders/brightness.min.mjs +0 -0
  689. package/dist/src/filters/shaders/brightness.min.mjs.map +0 -0
  690. package/dist/src/filters/shaders/brightness.mjs +0 -0
  691. package/dist/src/filters/shaders/brightness.mjs.map +0 -0
  692. package/dist/src/filters/shaders/colorMatrix.d.ts +0 -0
  693. package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  694. package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -0
  695. package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -0
  696. package/dist/src/filters/shaders/colorMatrix.mjs +0 -0
  697. package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -0
  698. package/dist/src/filters/shaders/constrast.d.ts +0 -0
  699. package/dist/src/filters/shaders/constrast.d.ts.map +0 -0
  700. package/dist/src/filters/shaders/constrast.min.mjs +0 -0
  701. package/dist/src/filters/shaders/constrast.min.mjs.map +0 -0
  702. package/dist/src/filters/shaders/constrast.mjs +0 -0
  703. package/dist/src/filters/shaders/constrast.mjs.map +0 -0
  704. package/dist/src/filters/shaders/convolute.d.ts +0 -0
  705. package/dist/src/filters/shaders/convolute.d.ts.map +0 -0
  706. package/dist/src/filters/shaders/convolute.min.mjs +0 -0
  707. package/dist/src/filters/shaders/convolute.min.mjs.map +0 -0
  708. package/dist/src/filters/shaders/convolute.mjs +0 -0
  709. package/dist/src/filters/shaders/convolute.mjs.map +0 -0
  710. package/dist/src/filters/shaders/gamma.d.ts +0 -0
  711. package/dist/src/filters/shaders/gamma.d.ts.map +0 -0
  712. package/dist/src/filters/shaders/gamma.min.mjs +0 -0
  713. package/dist/src/filters/shaders/gamma.min.mjs.map +0 -0
  714. package/dist/src/filters/shaders/gamma.mjs +0 -0
  715. package/dist/src/filters/shaders/gamma.mjs.map +0 -0
  716. package/dist/src/filters/shaders/grayscale.d.ts +0 -0
  717. package/dist/src/filters/shaders/grayscale.d.ts.map +0 -0
  718. package/dist/src/filters/shaders/grayscale.min.mjs +0 -0
  719. package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -0
  720. package/dist/src/filters/shaders/grayscale.mjs +0 -0
  721. package/dist/src/filters/shaders/grayscale.mjs.map +0 -0
  722. package/dist/src/filters/shaders/invert.d.ts +0 -0
  723. package/dist/src/filters/shaders/invert.d.ts.map +0 -0
  724. package/dist/src/filters/shaders/invert.min.mjs +0 -0
  725. package/dist/src/filters/shaders/invert.min.mjs.map +0 -0
  726. package/dist/src/filters/shaders/invert.mjs +0 -0
  727. package/dist/src/filters/shaders/invert.mjs.map +0 -0
  728. package/dist/src/filters/shaders/noise.d.ts +0 -0
  729. package/dist/src/filters/shaders/noise.d.ts.map +0 -0
  730. package/dist/src/filters/shaders/noise.min.mjs +0 -0
  731. package/dist/src/filters/shaders/noise.min.mjs.map +0 -0
  732. package/dist/src/filters/shaders/noise.mjs +0 -0
  733. package/dist/src/filters/shaders/noise.mjs.map +0 -0
  734. package/dist/src/filters/shaders/pixelate.d.ts +0 -0
  735. package/dist/src/filters/shaders/pixelate.d.ts.map +0 -0
  736. package/dist/src/filters/shaders/pixelate.min.mjs +0 -0
  737. package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -0
  738. package/dist/src/filters/shaders/pixelate.mjs +0 -0
  739. package/dist/src/filters/shaders/pixelate.mjs.map +0 -0
  740. package/dist/src/filters/shaders/removeColor.d.ts +0 -0
  741. package/dist/src/filters/shaders/removeColor.d.ts.map +0 -0
  742. package/dist/src/filters/shaders/removeColor.min.mjs +0 -0
  743. package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -0
  744. package/dist/src/filters/shaders/removeColor.mjs +0 -0
  745. package/dist/src/filters/shaders/removeColor.mjs.map +0 -0
  746. package/dist/src/filters/shaders/saturation.d.ts +0 -0
  747. package/dist/src/filters/shaders/saturation.d.ts.map +0 -0
  748. package/dist/src/filters/shaders/saturation.min.mjs +0 -0
  749. package/dist/src/filters/shaders/saturation.min.mjs.map +0 -0
  750. package/dist/src/filters/shaders/saturation.mjs +0 -0
  751. package/dist/src/filters/shaders/saturation.mjs.map +0 -0
  752. package/dist/src/filters/shaders/vibrance.d.ts +0 -0
  753. package/dist/src/filters/shaders/vibrance.d.ts.map +0 -0
  754. package/dist/src/filters/shaders/vibrance.min.mjs +0 -0
  755. package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -0
  756. package/dist/src/filters/shaders/vibrance.mjs +0 -0
  757. package/dist/src/filters/shaders/vibrance.mjs.map +0 -0
  758. package/dist/src/filters/typedefs.d.ts +0 -0
  759. package/dist/src/filters/typedefs.d.ts.map +0 -0
  760. package/dist/src/filters/utils.d.ts +0 -0
  761. package/dist/src/filters/utils.d.ts.map +0 -0
  762. package/dist/src/filters/utils.min.mjs +0 -0
  763. package/dist/src/filters/utils.min.mjs.map +0 -0
  764. package/dist/src/filters/utils.mjs +0 -0
  765. package/dist/src/filters/utils.mjs.map +0 -0
  766. package/dist/src/gradient/Gradient.d.ts +0 -0
  767. package/dist/src/gradient/Gradient.d.ts.map +0 -0
  768. package/dist/src/gradient/Gradient.min.mjs +0 -0
  769. package/dist/src/gradient/Gradient.min.mjs.map +0 -0
  770. package/dist/src/gradient/Gradient.mjs +0 -0
  771. package/dist/src/gradient/Gradient.mjs.map +0 -0
  772. package/dist/src/gradient/constants.d.ts +0 -0
  773. package/dist/src/gradient/constants.d.ts.map +0 -0
  774. package/dist/src/gradient/constants.min.mjs +0 -0
  775. package/dist/src/gradient/constants.min.mjs.map +0 -0
  776. package/dist/src/gradient/constants.mjs +0 -0
  777. package/dist/src/gradient/constants.mjs.map +0 -0
  778. package/dist/src/gradient/index.d.ts +0 -0
  779. package/dist/src/gradient/index.d.ts.map +0 -0
  780. package/dist/src/gradient/parser/misc.d.ts +0 -0
  781. package/dist/src/gradient/parser/misc.d.ts.map +0 -0
  782. package/dist/src/gradient/parser/misc.min.mjs +0 -0
  783. package/dist/src/gradient/parser/misc.min.mjs.map +0 -0
  784. package/dist/src/gradient/parser/misc.mjs +0 -0
  785. package/dist/src/gradient/parser/misc.mjs.map +0 -0
  786. package/dist/src/gradient/parser/parseColorStops.d.ts +0 -0
  787. package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  788. package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -0
  789. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -0
  790. package/dist/src/gradient/parser/parseColorStops.mjs +0 -0
  791. package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -0
  792. package/dist/src/gradient/parser/parseCoords.d.ts +0 -0
  793. package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -0
  794. package/dist/src/gradient/parser/parseCoords.min.mjs +0 -0
  795. package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -0
  796. package/dist/src/gradient/parser/parseCoords.mjs +0 -0
  797. package/dist/src/gradient/parser/parseCoords.mjs.map +0 -0
  798. package/dist/src/gradient/typedefs.d.ts +0 -0
  799. package/dist/src/gradient/typedefs.d.ts.map +0 -0
  800. package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -0
  801. package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -0
  802. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -0
  803. package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -0
  804. package/dist/src/parkinglot/straighten.d.ts +0 -0
  805. package/dist/src/parkinglot/straighten.d.ts.map +0 -0
  806. package/dist/src/parser/applyViewboxTransform.d.ts +0 -0
  807. package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -0
  808. package/dist/src/parser/applyViewboxTransform.min.mjs +0 -0
  809. package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -0
  810. package/dist/src/parser/applyViewboxTransform.mjs +0 -0
  811. package/dist/src/parser/applyViewboxTransform.mjs.map +0 -0
  812. package/dist/src/parser/attributes.d.ts +0 -0
  813. package/dist/src/parser/attributes.d.ts.map +0 -0
  814. package/dist/src/parser/attributes.min.mjs +0 -0
  815. package/dist/src/parser/attributes.min.mjs.map +0 -0
  816. package/dist/src/parser/attributes.mjs +0 -0
  817. package/dist/src/parser/attributes.mjs.map +0 -0
  818. package/dist/src/parser/constants.d.ts +0 -0
  819. package/dist/src/parser/constants.d.ts.map +0 -0
  820. package/dist/src/parser/constants.min.mjs +0 -0
  821. package/dist/src/parser/constants.min.mjs.map +0 -0
  822. package/dist/src/parser/constants.mjs +0 -0
  823. package/dist/src/parser/constants.mjs.map +0 -0
  824. package/dist/src/parser/doesSomeParentMatch.d.ts +0 -0
  825. package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  826. package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -0
  827. package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -0
  828. package/dist/src/parser/doesSomeParentMatch.mjs +0 -0
  829. package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -0
  830. package/dist/src/parser/elementMatchesRule.d.ts +0 -0
  831. package/dist/src/parser/elementMatchesRule.d.ts.map +0 -0
  832. package/dist/src/parser/elementMatchesRule.min.mjs +0 -0
  833. package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -0
  834. package/dist/src/parser/elementMatchesRule.mjs +0 -0
  835. package/dist/src/parser/elementMatchesRule.mjs.map +0 -0
  836. package/dist/src/parser/elements_parser.d.ts +0 -0
  837. package/dist/src/parser/elements_parser.d.ts.map +0 -0
  838. package/dist/src/parser/elements_parser.min.mjs +0 -0
  839. package/dist/src/parser/elements_parser.min.mjs.map +0 -0
  840. package/dist/src/parser/elements_parser.mjs +0 -0
  841. package/dist/src/parser/elements_parser.mjs.map +0 -0
  842. package/dist/src/parser/getCSSRules.d.ts +0 -0
  843. package/dist/src/parser/getCSSRules.d.ts.map +0 -0
  844. package/dist/src/parser/getCSSRules.min.mjs +0 -0
  845. package/dist/src/parser/getCSSRules.min.mjs.map +0 -0
  846. package/dist/src/parser/getCSSRules.mjs +0 -0
  847. package/dist/src/parser/getCSSRules.mjs.map +0 -0
  848. package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -0
  849. package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  850. package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -0
  851. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -0
  852. package/dist/src/parser/getGlobalStylesForElement.mjs +0 -0
  853. package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -0
  854. package/dist/src/parser/getGradientDefs.d.ts +0 -0
  855. package/dist/src/parser/getGradientDefs.d.ts.map +0 -0
  856. package/dist/src/parser/getGradientDefs.min.mjs +0 -0
  857. package/dist/src/parser/getGradientDefs.min.mjs.map +0 -0
  858. package/dist/src/parser/getGradientDefs.mjs +0 -0
  859. package/dist/src/parser/getGradientDefs.mjs.map +0 -0
  860. package/dist/src/parser/getMultipleNodes.d.ts +0 -0
  861. package/dist/src/parser/getMultipleNodes.d.ts.map +0 -0
  862. package/dist/src/parser/getMultipleNodes.min.mjs +0 -0
  863. package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -0
  864. package/dist/src/parser/getMultipleNodes.mjs +0 -0
  865. package/dist/src/parser/getMultipleNodes.mjs.map +0 -0
  866. package/dist/src/parser/getSvgRegex.d.ts +0 -0
  867. package/dist/src/parser/getSvgRegex.d.ts.map +0 -0
  868. package/dist/src/parser/getSvgRegex.min.mjs +0 -0
  869. package/dist/src/parser/getSvgRegex.min.mjs.map +0 -0
  870. package/dist/src/parser/getSvgRegex.mjs +0 -0
  871. package/dist/src/parser/getSvgRegex.mjs.map +0 -0
  872. package/dist/src/parser/getTagName.d.ts +0 -0
  873. package/dist/src/parser/getTagName.d.ts.map +0 -0
  874. package/dist/src/parser/getTagName.min.mjs +0 -0
  875. package/dist/src/parser/getTagName.min.mjs.map +0 -0
  876. package/dist/src/parser/getTagName.mjs +0 -0
  877. package/dist/src/parser/getTagName.mjs.map +0 -0
  878. package/dist/src/parser/hasInvalidAncestor.d.ts +0 -0
  879. package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  880. package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -0
  881. package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -0
  882. package/dist/src/parser/hasInvalidAncestor.mjs +0 -0
  883. package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -0
  884. package/dist/src/parser/loadSVGFromString.d.ts +0 -0
  885. package/dist/src/parser/loadSVGFromString.d.ts.map +0 -0
  886. package/dist/src/parser/loadSVGFromString.min.mjs +0 -0
  887. package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -0
  888. package/dist/src/parser/loadSVGFromString.mjs +0 -0
  889. package/dist/src/parser/loadSVGFromString.mjs.map +0 -0
  890. package/dist/src/parser/loadSVGFromURL.d.ts +0 -0
  891. package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -0
  892. package/dist/src/parser/loadSVGFromURL.min.mjs +0 -0
  893. package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -0
  894. package/dist/src/parser/loadSVGFromURL.mjs +0 -0
  895. package/dist/src/parser/loadSVGFromURL.mjs.map +0 -0
  896. package/dist/src/parser/normalizeAttr.d.ts +0 -0
  897. package/dist/src/parser/normalizeAttr.d.ts.map +0 -0
  898. package/dist/src/parser/normalizeAttr.min.mjs +0 -0
  899. package/dist/src/parser/normalizeAttr.min.mjs.map +0 -0
  900. package/dist/src/parser/normalizeAttr.mjs +0 -0
  901. package/dist/src/parser/normalizeAttr.mjs.map +0 -0
  902. package/dist/src/parser/normalizeValue.d.ts +0 -0
  903. package/dist/src/parser/normalizeValue.d.ts.map +0 -0
  904. package/dist/src/parser/normalizeValue.min.mjs +0 -0
  905. package/dist/src/parser/normalizeValue.min.mjs.map +0 -0
  906. package/dist/src/parser/normalizeValue.mjs +0 -0
  907. package/dist/src/parser/normalizeValue.mjs.map +0 -0
  908. package/dist/src/parser/parseAttributes.d.ts +0 -0
  909. package/dist/src/parser/parseAttributes.d.ts.map +0 -0
  910. package/dist/src/parser/parseAttributes.min.mjs +0 -0
  911. package/dist/src/parser/parseAttributes.min.mjs.map +0 -0
  912. package/dist/src/parser/parseAttributes.mjs +0 -0
  913. package/dist/src/parser/parseAttributes.mjs.map +0 -0
  914. package/dist/src/parser/parseFontDeclaration.d.ts +0 -0
  915. package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -0
  916. package/dist/src/parser/parseFontDeclaration.min.mjs +0 -0
  917. package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -0
  918. package/dist/src/parser/parseFontDeclaration.mjs +0 -0
  919. package/dist/src/parser/parseFontDeclaration.mjs.map +0 -0
  920. package/dist/src/parser/parsePointsAttribute.d.ts +0 -0
  921. package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -0
  922. package/dist/src/parser/parsePointsAttribute.min.mjs +0 -0
  923. package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -0
  924. package/dist/src/parser/parsePointsAttribute.mjs +0 -0
  925. package/dist/src/parser/parsePointsAttribute.mjs.map +0 -0
  926. package/dist/src/parser/parseSVGDocument.d.ts +0 -0
  927. package/dist/src/parser/parseSVGDocument.d.ts.map +0 -0
  928. package/dist/src/parser/parseSVGDocument.min.mjs +0 -0
  929. package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -0
  930. package/dist/src/parser/parseSVGDocument.mjs +0 -0
  931. package/dist/src/parser/parseSVGDocument.mjs.map +0 -0
  932. package/dist/src/parser/parseStyleAttribute.d.ts +0 -0
  933. package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -0
  934. package/dist/src/parser/parseStyleAttribute.min.mjs +0 -0
  935. package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -0
  936. package/dist/src/parser/parseStyleAttribute.mjs +0 -0
  937. package/dist/src/parser/parseStyleAttribute.mjs.map +0 -0
  938. package/dist/src/parser/parseStyleObject.d.ts +0 -0
  939. package/dist/src/parser/parseStyleObject.d.ts.map +0 -0
  940. package/dist/src/parser/parseStyleObject.min.mjs +0 -0
  941. package/dist/src/parser/parseStyleObject.min.mjs.map +0 -0
  942. package/dist/src/parser/parseStyleObject.mjs +0 -0
  943. package/dist/src/parser/parseStyleObject.mjs.map +0 -0
  944. package/dist/src/parser/parseStyleString.d.ts +0 -0
  945. package/dist/src/parser/parseStyleString.d.ts.map +0 -0
  946. package/dist/src/parser/parseStyleString.min.mjs +0 -0
  947. package/dist/src/parser/parseStyleString.min.mjs.map +0 -0
  948. package/dist/src/parser/parseStyleString.mjs +0 -0
  949. package/dist/src/parser/parseStyleString.mjs.map +0 -0
  950. package/dist/src/parser/parseTransformAttribute.d.ts +0 -0
  951. package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -0
  952. package/dist/src/parser/parseTransformAttribute.min.mjs +0 -0
  953. package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -0
  954. package/dist/src/parser/parseTransformAttribute.mjs +0 -0
  955. package/dist/src/parser/parseTransformAttribute.mjs.map +0 -0
  956. package/dist/src/parser/parseUseDirectives.d.ts +0 -0
  957. package/dist/src/parser/parseUseDirectives.d.ts.map +0 -0
  958. package/dist/src/parser/parseUseDirectives.min.mjs +0 -0
  959. package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -0
  960. package/dist/src/parser/parseUseDirectives.mjs +0 -0
  961. package/dist/src/parser/parseUseDirectives.mjs.map +0 -0
  962. package/dist/src/parser/percent.d.ts +0 -0
  963. package/dist/src/parser/percent.d.ts.map +0 -0
  964. package/dist/src/parser/percent.min.mjs +0 -0
  965. package/dist/src/parser/percent.min.mjs.map +0 -0
  966. package/dist/src/parser/percent.mjs +0 -0
  967. package/dist/src/parser/percent.mjs.map +0 -0
  968. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  969. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  970. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -0
  971. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -0
  972. package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -0
  973. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -0
  974. package/dist/src/parser/selectorMatches.d.ts +0 -0
  975. package/dist/src/parser/selectorMatches.d.ts.map +0 -0
  976. package/dist/src/parser/selectorMatches.min.mjs +0 -0
  977. package/dist/src/parser/selectorMatches.min.mjs.map +0 -0
  978. package/dist/src/parser/selectorMatches.mjs +0 -0
  979. package/dist/src/parser/selectorMatches.mjs.map +0 -0
  980. package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -0
  981. package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  982. package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -0
  983. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -0
  984. package/dist/src/parser/setStrokeFillOpacity.mjs +0 -0
  985. package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -0
  986. package/dist/src/parser/typedefs.d.ts +0 -0
  987. package/dist/src/parser/typedefs.d.ts.map +0 -0
  988. package/dist/src/shapes/ActiveSelection.d.ts +0 -0
  989. package/dist/src/shapes/ActiveSelection.d.ts.map +0 -0
  990. package/dist/src/shapes/ActiveSelection.min.mjs +0 -0
  991. package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -0
  992. package/dist/src/shapes/ActiveSelection.mjs +0 -0
  993. package/dist/src/shapes/ActiveSelection.mjs.map +0 -0
  994. package/dist/src/shapes/Circle.d.ts +0 -0
  995. package/dist/src/shapes/Circle.d.ts.map +0 -0
  996. package/dist/src/shapes/Circle.min.mjs +0 -0
  997. package/dist/src/shapes/Circle.min.mjs.map +0 -0
  998. package/dist/src/shapes/Circle.mjs +0 -0
  999. package/dist/src/shapes/Circle.mjs.map +0 -0
  1000. package/dist/src/shapes/Ellipse.d.ts +0 -0
  1001. package/dist/src/shapes/Ellipse.d.ts.map +0 -0
  1002. package/dist/src/shapes/Ellipse.min.mjs +0 -0
  1003. package/dist/src/shapes/Ellipse.min.mjs.map +0 -0
  1004. package/dist/src/shapes/Ellipse.mjs +0 -0
  1005. package/dist/src/shapes/Ellipse.mjs.map +0 -0
  1006. package/dist/src/shapes/Group.d.ts +0 -0
  1007. package/dist/src/shapes/Group.d.ts.map +0 -0
  1008. package/dist/src/shapes/Group.min.mjs +0 -0
  1009. package/dist/src/shapes/Group.min.mjs.map +0 -0
  1010. package/dist/src/shapes/Group.mjs +0 -0
  1011. package/dist/src/shapes/Group.mjs.map +0 -0
  1012. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1013. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1014. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -0
  1015. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -0
  1016. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -0
  1017. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -0
  1018. package/dist/src/shapes/IText/IText.d.ts +0 -0
  1019. package/dist/src/shapes/IText/IText.d.ts.map +0 -0
  1020. package/dist/src/shapes/IText/IText.min.mjs +0 -0
  1021. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  1022. package/dist/src/shapes/IText/IText.mjs +206 -206
  1023. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  1024. package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1025. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
  1026. package/dist/src/shapes/IText/ITextBehavior.min.mjs +1 -1
  1027. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  1028. package/dist/src/shapes/IText/ITextBehavior.mjs +221 -157
  1029. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  1030. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1031. package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1032. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -0
  1033. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  1034. package/dist/src/shapes/IText/ITextClickBehavior.mjs +36 -36
  1035. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  1036. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1037. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1038. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -0
  1039. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  1040. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +115 -115
  1041. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
  1042. package/dist/src/shapes/IText/constants.d.ts +0 -0
  1043. package/dist/src/shapes/IText/constants.d.ts.map +0 -0
  1044. package/dist/src/shapes/IText/constants.min.mjs +0 -0
  1045. package/dist/src/shapes/IText/constants.min.mjs.map +0 -0
  1046. package/dist/src/shapes/IText/constants.mjs +0 -0
  1047. package/dist/src/shapes/IText/constants.mjs.map +0 -0
  1048. package/dist/src/shapes/Image.d.ts +0 -0
  1049. package/dist/src/shapes/Image.d.ts.map +0 -0
  1050. package/dist/src/shapes/Image.min.mjs +0 -0
  1051. package/dist/src/shapes/Image.min.mjs.map +0 -0
  1052. package/dist/src/shapes/Image.mjs +0 -0
  1053. package/dist/src/shapes/Image.mjs.map +0 -0
  1054. package/dist/src/shapes/Line.d.ts +0 -0
  1055. package/dist/src/shapes/Line.d.ts.map +0 -0
  1056. package/dist/src/shapes/Line.min.mjs +0 -0
  1057. package/dist/src/shapes/Line.min.mjs.map +0 -0
  1058. package/dist/src/shapes/Line.mjs +0 -0
  1059. package/dist/src/shapes/Line.mjs.map +0 -0
  1060. package/dist/src/shapes/Object/FabricObject.d.ts +0 -0
  1061. package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1062. package/dist/src/shapes/Object/FabricObject.min.mjs +0 -0
  1063. package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -0
  1064. package/dist/src/shapes/Object/FabricObject.mjs +0 -0
  1065. package/dist/src/shapes/Object/FabricObject.mjs.map +0 -0
  1066. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1067. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1068. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -0
  1069. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -0
  1070. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -0
  1071. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -0
  1072. package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1073. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1074. package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -0
  1075. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -0
  1076. package/dist/src/shapes/Object/InteractiveObject.mjs +0 -0
  1077. package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -0
  1078. package/dist/src/shapes/Object/Object.d.ts +0 -0
  1079. package/dist/src/shapes/Object/Object.d.ts.map +0 -0
  1080. package/dist/src/shapes/Object/Object.min.mjs +0 -0
  1081. package/dist/src/shapes/Object/Object.min.mjs.map +0 -0
  1082. package/dist/src/shapes/Object/Object.mjs +0 -0
  1083. package/dist/src/shapes/Object/Object.mjs.map +0 -0
  1084. package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1085. package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1086. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -0
  1087. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -0
  1088. package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -0
  1089. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -0
  1090. package/dist/src/shapes/Object/defaultValues.d.ts +0 -0
  1091. package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1092. package/dist/src/shapes/Object/defaultValues.min.mjs +0 -0
  1093. package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -0
  1094. package/dist/src/shapes/Object/defaultValues.mjs +0 -0
  1095. package/dist/src/shapes/Object/defaultValues.mjs.map +0 -0
  1096. package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1097. package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1098. package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1099. package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1100. package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1101. package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1102. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1103. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1104. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1105. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1106. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1107. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1108. package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1109. package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1110. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1111. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1112. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1113. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1114. package/dist/src/shapes/Object/types/index.d.ts +0 -0
  1115. package/dist/src/shapes/Object/types/index.d.ts.map +0 -0
  1116. package/dist/src/shapes/Path.d.ts +0 -0
  1117. package/dist/src/shapes/Path.d.ts.map +0 -0
  1118. package/dist/src/shapes/Path.min.mjs +0 -0
  1119. package/dist/src/shapes/Path.min.mjs.map +0 -0
  1120. package/dist/src/shapes/Path.mjs +0 -0
  1121. package/dist/src/shapes/Path.mjs.map +0 -0
  1122. package/dist/src/shapes/Polygon.d.ts +0 -0
  1123. package/dist/src/shapes/Polygon.d.ts.map +0 -0
  1124. package/dist/src/shapes/Polygon.min.mjs +0 -0
  1125. package/dist/src/shapes/Polygon.min.mjs.map +0 -0
  1126. package/dist/src/shapes/Polygon.mjs +0 -0
  1127. package/dist/src/shapes/Polygon.mjs.map +0 -0
  1128. package/dist/src/shapes/Polyline.d.ts +0 -0
  1129. package/dist/src/shapes/Polyline.d.ts.map +0 -0
  1130. package/dist/src/shapes/Polyline.min.mjs +0 -0
  1131. package/dist/src/shapes/Polyline.min.mjs.map +0 -0
  1132. package/dist/src/shapes/Polyline.mjs +0 -0
  1133. package/dist/src/shapes/Polyline.mjs.map +0 -0
  1134. package/dist/src/shapes/Rect.d.ts +0 -0
  1135. package/dist/src/shapes/Rect.d.ts.map +0 -0
  1136. package/dist/src/shapes/Rect.min.mjs +0 -0
  1137. package/dist/src/shapes/Rect.min.mjs.map +0 -0
  1138. package/dist/src/shapes/Rect.mjs +0 -0
  1139. package/dist/src/shapes/Rect.mjs.map +0 -0
  1140. package/dist/src/shapes/Text/StyledText.d.ts +0 -0
  1141. package/dist/src/shapes/Text/StyledText.d.ts.map +0 -0
  1142. package/dist/src/shapes/Text/StyledText.min.mjs +0 -0
  1143. package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -0
  1144. package/dist/src/shapes/Text/StyledText.mjs +0 -0
  1145. package/dist/src/shapes/Text/StyledText.mjs.map +0 -0
  1146. package/dist/src/shapes/Text/Text.d.ts +1 -0
  1147. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  1148. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  1149. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  1150. package/dist/src/shapes/Text/Text.mjs +20 -7
  1151. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  1152. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1153. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1154. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -0
  1155. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -0
  1156. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -0
  1157. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -0
  1158. package/dist/src/shapes/Text/constants.d.ts +0 -0
  1159. package/dist/src/shapes/Text/constants.d.ts.map +0 -0
  1160. package/dist/src/shapes/Text/constants.min.mjs +0 -0
  1161. package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
  1162. package/dist/src/shapes/Text/constants.mjs +0 -0
  1163. package/dist/src/shapes/Text/constants.mjs.map +1 -1
  1164. package/dist/src/shapes/Textbox.d.ts +20 -0
  1165. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  1166. package/dist/src/shapes/Textbox.min.mjs +1 -1
  1167. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  1168. package/dist/src/shapes/Textbox.mjs +242 -22
  1169. package/dist/src/shapes/Textbox.mjs.map +1 -1
  1170. package/dist/src/shapes/Triangle.d.ts +0 -0
  1171. package/dist/src/shapes/Triangle.d.ts.map +0 -0
  1172. package/dist/src/shapes/Triangle.min.mjs +0 -0
  1173. package/dist/src/shapes/Triangle.min.mjs.map +0 -0
  1174. package/dist/src/shapes/Triangle.mjs +0 -0
  1175. package/dist/src/shapes/Triangle.mjs.map +0 -0
  1176. package/dist/src/text/browserLines.d.ts +7 -2
  1177. package/dist/src/text/browserLines.d.ts.map +1 -1
  1178. package/dist/src/text/browserLines.min.mjs +1 -1
  1179. package/dist/src/text/browserLines.min.mjs.map +1 -1
  1180. package/dist/src/text/browserLines.mjs +35 -25
  1181. package/dist/src/text/browserLines.mjs.map +1 -1
  1182. package/dist/src/text/ellipsis.d.ts +0 -0
  1183. package/dist/src/text/ellipsis.d.ts.map +0 -0
  1184. package/dist/src/text/ellipsis.min.mjs +0 -0
  1185. package/dist/src/text/ellipsis.min.mjs.map +1 -1
  1186. package/dist/src/text/ellipsis.mjs +11 -11
  1187. package/dist/src/text/ellipsis.mjs.map +1 -1
  1188. package/dist/src/text/hitTest.d.ts +0 -0
  1189. package/dist/src/text/hitTest.d.ts.map +0 -0
  1190. package/dist/src/text/hitTest.min.mjs +0 -0
  1191. package/dist/src/text/hitTest.min.mjs.map +1 -1
  1192. package/dist/src/text/hitTest.mjs +19 -19
  1193. package/dist/src/text/hitTest.mjs.map +1 -1
  1194. package/dist/src/text/layout.d.ts +0 -0
  1195. package/dist/src/text/layout.d.ts.map +0 -0
  1196. package/dist/src/text/layout.min.mjs +0 -0
  1197. package/dist/src/text/layout.min.mjs.map +1 -1
  1198. package/dist/src/text/layout.mjs +33 -33
  1199. package/dist/src/text/layout.mjs.map +1 -1
  1200. package/dist/src/text/measure.d.ts +0 -0
  1201. package/dist/src/text/measure.d.ts.map +0 -0
  1202. package/dist/src/text/measure.min.mjs +0 -0
  1203. package/dist/src/text/measure.min.mjs.map +1 -1
  1204. package/dist/src/text/measure.mjs +30 -30
  1205. package/dist/src/text/measure.mjs.map +1 -1
  1206. package/dist/src/text/overlayEditor.d.ts +1 -0
  1207. package/dist/src/text/overlayEditor.d.ts.map +1 -1
  1208. package/dist/src/text/overlayEditor.min.mjs +1 -1
  1209. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  1210. package/dist/src/text/overlayEditor.mjs +70 -51
  1211. package/dist/src/text/overlayEditor.mjs.map +1 -1
  1212. package/dist/src/text/unicode.d.ts +0 -0
  1213. package/dist/src/text/unicode.d.ts.map +0 -0
  1214. package/dist/src/text/unicode.min.mjs +0 -0
  1215. package/dist/src/text/unicode.min.mjs.map +1 -1
  1216. package/dist/src/text/unicode.mjs +8 -8
  1217. package/dist/src/text/unicode.mjs.map +1 -1
  1218. package/dist/src/typedefs.d.ts +0 -0
  1219. package/dist/src/typedefs.d.ts.map +0 -0
  1220. package/dist/src/util/animation/AnimationBase.d.ts +0 -0
  1221. package/dist/src/util/animation/AnimationBase.d.ts.map +0 -0
  1222. package/dist/src/util/animation/AnimationBase.min.mjs +0 -0
  1223. package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -0
  1224. package/dist/src/util/animation/AnimationBase.mjs +0 -0
  1225. package/dist/src/util/animation/AnimationBase.mjs.map +0 -0
  1226. package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1227. package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1228. package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -0
  1229. package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -0
  1230. package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -0
  1231. package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -0
  1232. package/dist/src/util/animation/AnimationRegistry.d.ts +0 -0
  1233. package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1234. package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -0
  1235. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -0
  1236. package/dist/src/util/animation/AnimationRegistry.mjs +0 -0
  1237. package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -0
  1238. package/dist/src/util/animation/ArrayAnimation.d.ts +0 -0
  1239. package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1240. package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -0
  1241. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -0
  1242. package/dist/src/util/animation/ArrayAnimation.mjs +0 -0
  1243. package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -0
  1244. package/dist/src/util/animation/ColorAnimation.d.ts +0 -0
  1245. package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1246. package/dist/src/util/animation/ColorAnimation.min.mjs +0 -0
  1247. package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -0
  1248. package/dist/src/util/animation/ColorAnimation.mjs +0 -0
  1249. package/dist/src/util/animation/ColorAnimation.mjs.map +0 -0
  1250. package/dist/src/util/animation/ValueAnimation.d.ts +0 -0
  1251. package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1252. package/dist/src/util/animation/ValueAnimation.min.mjs +0 -0
  1253. package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -0
  1254. package/dist/src/util/animation/ValueAnimation.mjs +0 -0
  1255. package/dist/src/util/animation/ValueAnimation.mjs.map +0 -0
  1256. package/dist/src/util/animation/animate.d.ts +0 -0
  1257. package/dist/src/util/animation/animate.d.ts.map +0 -0
  1258. package/dist/src/util/animation/animate.min.mjs +0 -0
  1259. package/dist/src/util/animation/animate.min.mjs.map +0 -0
  1260. package/dist/src/util/animation/animate.mjs +0 -0
  1261. package/dist/src/util/animation/animate.mjs.map +0 -0
  1262. package/dist/src/util/animation/easing.d.ts +0 -0
  1263. package/dist/src/util/animation/easing.d.ts.map +0 -0
  1264. package/dist/src/util/animation/easing.min.mjs +0 -0
  1265. package/dist/src/util/animation/easing.min.mjs.map +0 -0
  1266. package/dist/src/util/animation/easing.mjs +0 -0
  1267. package/dist/src/util/animation/easing.mjs.map +0 -0
  1268. package/dist/src/util/animation/index.d.ts +0 -0
  1269. package/dist/src/util/animation/index.d.ts.map +0 -0
  1270. package/dist/src/util/animation/types.d.ts +0 -0
  1271. package/dist/src/util/animation/types.d.ts.map +0 -0
  1272. package/dist/src/util/applyMixins.d.ts +0 -0
  1273. package/dist/src/util/applyMixins.d.ts.map +0 -0
  1274. package/dist/src/util/applyMixins.min.mjs +0 -0
  1275. package/dist/src/util/applyMixins.min.mjs.map +0 -0
  1276. package/dist/src/util/applyMixins.mjs +0 -0
  1277. package/dist/src/util/applyMixins.mjs.map +0 -0
  1278. package/dist/src/util/dom_event.d.ts +0 -0
  1279. package/dist/src/util/dom_event.d.ts.map +0 -0
  1280. package/dist/src/util/dom_event.min.mjs +0 -0
  1281. package/dist/src/util/dom_event.min.mjs.map +0 -0
  1282. package/dist/src/util/dom_event.mjs +0 -0
  1283. package/dist/src/util/dom_event.mjs.map +0 -0
  1284. package/dist/src/util/dom_misc.d.ts +0 -0
  1285. package/dist/src/util/dom_misc.d.ts.map +0 -0
  1286. package/dist/src/util/dom_misc.min.mjs +0 -0
  1287. package/dist/src/util/dom_misc.min.mjs.map +0 -0
  1288. package/dist/src/util/dom_misc.mjs +0 -0
  1289. package/dist/src/util/dom_misc.mjs.map +0 -0
  1290. package/dist/src/util/index.d.ts +0 -0
  1291. package/dist/src/util/index.d.ts.map +0 -0
  1292. package/dist/src/util/index.min.mjs +0 -0
  1293. package/dist/src/util/index.min.mjs.map +0 -0
  1294. package/dist/src/util/index.mjs +0 -0
  1295. package/dist/src/util/index.mjs.map +0 -0
  1296. package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -0
  1297. package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  1298. package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -0
  1299. package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -0
  1300. package/dist/src/util/internals/applyCanvasTransform.mjs +0 -0
  1301. package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -0
  1302. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  1303. package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  1304. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -0
  1305. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -0
  1306. package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -0
  1307. package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -0
  1308. package/dist/src/util/internals/cloneStyles.d.ts +0 -0
  1309. package/dist/src/util/internals/cloneStyles.d.ts.map +0 -0
  1310. package/dist/src/util/internals/cloneStyles.min.mjs +0 -0
  1311. package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -0
  1312. package/dist/src/util/internals/cloneStyles.mjs +0 -0
  1313. package/dist/src/util/internals/cloneStyles.mjs.map +0 -0
  1314. package/dist/src/util/internals/console.d.ts +0 -0
  1315. package/dist/src/util/internals/console.d.ts.map +0 -0
  1316. package/dist/src/util/internals/console.min.mjs +0 -0
  1317. package/dist/src/util/internals/console.min.mjs.map +0 -0
  1318. package/dist/src/util/internals/console.mjs +0 -0
  1319. package/dist/src/util/internals/console.mjs.map +0 -0
  1320. package/dist/src/util/internals/dom_style.d.ts +0 -0
  1321. package/dist/src/util/internals/dom_style.d.ts.map +0 -0
  1322. package/dist/src/util/internals/dom_style.min.mjs +0 -0
  1323. package/dist/src/util/internals/dom_style.min.mjs.map +0 -0
  1324. package/dist/src/util/internals/dom_style.mjs +0 -0
  1325. package/dist/src/util/internals/dom_style.mjs.map +0 -0
  1326. package/dist/src/util/internals/findRight.d.ts +0 -0
  1327. package/dist/src/util/internals/findRight.d.ts.map +0 -0
  1328. package/dist/src/util/internals/findRight.min.mjs +0 -0
  1329. package/dist/src/util/internals/findRight.min.mjs.map +0 -0
  1330. package/dist/src/util/internals/findRight.mjs +0 -0
  1331. package/dist/src/util/internals/findRight.mjs.map +0 -0
  1332. package/dist/src/util/internals/getRandomInt.d.ts +0 -0
  1333. package/dist/src/util/internals/getRandomInt.d.ts.map +0 -0
  1334. package/dist/src/util/internals/getRandomInt.min.mjs +0 -0
  1335. package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -0
  1336. package/dist/src/util/internals/getRandomInt.mjs +0 -0
  1337. package/dist/src/util/internals/getRandomInt.mjs.map +0 -0
  1338. package/dist/src/util/internals/ifNaN.d.ts +0 -0
  1339. package/dist/src/util/internals/ifNaN.d.ts.map +0 -0
  1340. package/dist/src/util/internals/ifNaN.min.mjs +0 -0
  1341. package/dist/src/util/internals/ifNaN.min.mjs.map +0 -0
  1342. package/dist/src/util/internals/ifNaN.mjs +0 -0
  1343. package/dist/src/util/internals/ifNaN.mjs.map +0 -0
  1344. package/dist/src/util/internals/removeFromArray.d.ts +0 -0
  1345. package/dist/src/util/internals/removeFromArray.d.ts.map +0 -0
  1346. package/dist/src/util/internals/removeFromArray.min.mjs +0 -0
  1347. package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -0
  1348. package/dist/src/util/internals/removeFromArray.mjs +0 -0
  1349. package/dist/src/util/internals/removeFromArray.mjs.map +0 -0
  1350. package/dist/src/util/internals/uid.d.ts +0 -0
  1351. package/dist/src/util/internals/uid.d.ts.map +0 -0
  1352. package/dist/src/util/internals/uid.min.mjs +0 -0
  1353. package/dist/src/util/internals/uid.min.mjs.map +0 -0
  1354. package/dist/src/util/internals/uid.mjs +0 -0
  1355. package/dist/src/util/internals/uid.mjs.map +0 -0
  1356. package/dist/src/util/lang_string.d.ts +0 -0
  1357. package/dist/src/util/lang_string.d.ts.map +0 -0
  1358. package/dist/src/util/lang_string.min.mjs +0 -0
  1359. package/dist/src/util/lang_string.min.mjs.map +0 -0
  1360. package/dist/src/util/lang_string.mjs +0 -0
  1361. package/dist/src/util/lang_string.mjs.map +0 -0
  1362. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  1363. package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  1364. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -0
  1365. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -0
  1366. package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -0
  1367. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -0
  1368. package/dist/src/util/misc/capValue.d.ts +0 -0
  1369. package/dist/src/util/misc/capValue.d.ts.map +0 -0
  1370. package/dist/src/util/misc/capValue.min.mjs +0 -0
  1371. package/dist/src/util/misc/capValue.min.mjs.map +0 -0
  1372. package/dist/src/util/misc/capValue.mjs +0 -0
  1373. package/dist/src/util/misc/capValue.mjs.map +0 -0
  1374. package/dist/src/util/misc/cornerRadius.d.ts +0 -0
  1375. package/dist/src/util/misc/cornerRadius.d.ts.map +0 -0
  1376. package/dist/src/util/misc/cornerRadius.min.mjs +0 -0
  1377. package/dist/src/util/misc/cornerRadius.min.mjs.map +0 -0
  1378. package/dist/src/util/misc/cornerRadius.mjs +0 -0
  1379. package/dist/src/util/misc/cornerRadius.mjs.map +0 -0
  1380. package/dist/src/util/misc/cos.d.ts +0 -0
  1381. package/dist/src/util/misc/cos.d.ts.map +0 -0
  1382. package/dist/src/util/misc/cos.min.mjs +0 -0
  1383. package/dist/src/util/misc/cos.min.mjs.map +0 -0
  1384. package/dist/src/util/misc/cos.mjs +0 -0
  1385. package/dist/src/util/misc/cos.mjs.map +0 -0
  1386. package/dist/src/util/misc/dom.d.ts +0 -0
  1387. package/dist/src/util/misc/dom.d.ts.map +0 -0
  1388. package/dist/src/util/misc/dom.min.mjs +0 -0
  1389. package/dist/src/util/misc/dom.min.mjs.map +0 -0
  1390. package/dist/src/util/misc/dom.mjs +0 -0
  1391. package/dist/src/util/misc/dom.mjs.map +0 -0
  1392. package/dist/src/util/misc/findScaleTo.d.ts +0 -0
  1393. package/dist/src/util/misc/findScaleTo.d.ts.map +0 -0
  1394. package/dist/src/util/misc/findScaleTo.min.mjs +0 -0
  1395. package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -0
  1396. package/dist/src/util/misc/findScaleTo.mjs +0 -0
  1397. package/dist/src/util/misc/findScaleTo.mjs.map +0 -0
  1398. package/dist/src/util/misc/groupSVGElements.d.ts +0 -0
  1399. package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -0
  1400. package/dist/src/util/misc/groupSVGElements.min.mjs +0 -0
  1401. package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -0
  1402. package/dist/src/util/misc/groupSVGElements.mjs +0 -0
  1403. package/dist/src/util/misc/groupSVGElements.mjs.map +0 -0
  1404. package/dist/src/util/misc/isTransparent.d.ts +0 -0
  1405. package/dist/src/util/misc/isTransparent.d.ts.map +0 -0
  1406. package/dist/src/util/misc/isTransparent.min.mjs +0 -0
  1407. package/dist/src/util/misc/isTransparent.min.mjs.map +0 -0
  1408. package/dist/src/util/misc/isTransparent.mjs +0 -0
  1409. package/dist/src/util/misc/isTransparent.mjs.map +0 -0
  1410. package/dist/src/util/misc/matrix.d.ts +0 -0
  1411. package/dist/src/util/misc/matrix.d.ts.map +0 -0
  1412. package/dist/src/util/misc/matrix.min.mjs +0 -0
  1413. package/dist/src/util/misc/matrix.min.mjs.map +0 -0
  1414. package/dist/src/util/misc/matrix.mjs +0 -0
  1415. package/dist/src/util/misc/matrix.mjs.map +0 -0
  1416. package/dist/src/util/misc/mergeClipPaths.d.ts +0 -0
  1417. package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  1418. package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -0
  1419. package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -0
  1420. package/dist/src/util/misc/mergeClipPaths.mjs +0 -0
  1421. package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -0
  1422. package/dist/src/util/misc/objectEnlive.d.ts +0 -0
  1423. package/dist/src/util/misc/objectEnlive.d.ts.map +0 -0
  1424. package/dist/src/util/misc/objectEnlive.min.mjs +0 -0
  1425. package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -0
  1426. package/dist/src/util/misc/objectEnlive.mjs +0 -0
  1427. package/dist/src/util/misc/objectEnlive.mjs.map +0 -0
  1428. package/dist/src/util/misc/objectTransforms.d.ts +0 -0
  1429. package/dist/src/util/misc/objectTransforms.d.ts.map +0 -0
  1430. package/dist/src/util/misc/objectTransforms.min.mjs +0 -0
  1431. package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -0
  1432. package/dist/src/util/misc/objectTransforms.mjs +0 -0
  1433. package/dist/src/util/misc/objectTransforms.mjs.map +0 -0
  1434. package/dist/src/util/misc/pick.d.ts +0 -0
  1435. package/dist/src/util/misc/pick.d.ts.map +0 -0
  1436. package/dist/src/util/misc/pick.min.mjs +0 -0
  1437. package/dist/src/util/misc/pick.min.mjs.map +0 -0
  1438. package/dist/src/util/misc/pick.mjs +0 -0
  1439. package/dist/src/util/misc/pick.mjs.map +0 -0
  1440. package/dist/src/util/misc/planeChange.d.ts +0 -0
  1441. package/dist/src/util/misc/planeChange.d.ts.map +0 -0
  1442. package/dist/src/util/misc/planeChange.min.mjs +0 -0
  1443. package/dist/src/util/misc/planeChange.min.mjs.map +0 -0
  1444. package/dist/src/util/misc/planeChange.mjs +0 -0
  1445. package/dist/src/util/misc/planeChange.mjs.map +0 -0
  1446. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  1447. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  1448. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -0
  1449. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -0
  1450. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -0
  1451. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -0
  1452. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  1453. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  1454. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -0
  1455. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -0
  1456. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -0
  1457. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -0
  1458. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  1459. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  1460. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -0
  1461. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -0
  1462. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -0
  1463. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -0
  1464. package/dist/src/util/misc/projectStroke/index.d.ts +0 -0
  1465. package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -0
  1466. package/dist/src/util/misc/projectStroke/index.min.mjs +0 -0
  1467. package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -0
  1468. package/dist/src/util/misc/projectStroke/index.mjs +0 -0
  1469. package/dist/src/util/misc/projectStroke/index.mjs.map +0 -0
  1470. package/dist/src/util/misc/projectStroke/types.d.ts +0 -0
  1471. package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -0
  1472. package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  1473. package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  1474. package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -0
  1475. package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -0
  1476. package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -0
  1477. package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -0
  1478. package/dist/src/util/misc/resolveOrigin.d.ts +0 -0
  1479. package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -0
  1480. package/dist/src/util/misc/resolveOrigin.min.mjs +0 -0
  1481. package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -0
  1482. package/dist/src/util/misc/resolveOrigin.mjs +0 -0
  1483. package/dist/src/util/misc/resolveOrigin.mjs.map +0 -0
  1484. package/dist/src/util/misc/sin.d.ts +0 -0
  1485. package/dist/src/util/misc/sin.d.ts.map +0 -0
  1486. package/dist/src/util/misc/sin.min.mjs +0 -0
  1487. package/dist/src/util/misc/sin.min.mjs.map +0 -0
  1488. package/dist/src/util/misc/sin.mjs +0 -0
  1489. package/dist/src/util/misc/sin.mjs.map +0 -0
  1490. package/dist/src/util/misc/svgExport.d.ts +0 -0
  1491. package/dist/src/util/misc/svgExport.d.ts.map +0 -0
  1492. package/dist/src/util/misc/svgExport.min.mjs +0 -0
  1493. package/dist/src/util/misc/svgExport.min.mjs.map +0 -0
  1494. package/dist/src/util/misc/svgExport.mjs +0 -0
  1495. package/dist/src/util/misc/svgExport.mjs.map +0 -0
  1496. package/dist/src/util/misc/svgParsing.d.ts +0 -0
  1497. package/dist/src/util/misc/svgParsing.d.ts.map +0 -0
  1498. package/dist/src/util/misc/svgParsing.min.mjs +0 -0
  1499. package/dist/src/util/misc/svgParsing.min.mjs.map +0 -0
  1500. package/dist/src/util/misc/svgParsing.mjs +0 -0
  1501. package/dist/src/util/misc/svgParsing.mjs.map +0 -0
  1502. package/dist/src/util/misc/textStyles.d.ts +0 -0
  1503. package/dist/src/util/misc/textStyles.d.ts.map +0 -0
  1504. package/dist/src/util/misc/textStyles.min.mjs +0 -0
  1505. package/dist/src/util/misc/textStyles.min.mjs.map +0 -0
  1506. package/dist/src/util/misc/textStyles.mjs +0 -0
  1507. package/dist/src/util/misc/textStyles.mjs.map +0 -0
  1508. package/dist/src/util/misc/toFixed.d.ts +0 -0
  1509. package/dist/src/util/misc/toFixed.d.ts.map +0 -0
  1510. package/dist/src/util/misc/toFixed.min.mjs +0 -0
  1511. package/dist/src/util/misc/toFixed.min.mjs.map +0 -0
  1512. package/dist/src/util/misc/toFixed.mjs +0 -0
  1513. package/dist/src/util/misc/toFixed.mjs.map +0 -0
  1514. package/dist/src/util/misc/vectors.d.ts +0 -0
  1515. package/dist/src/util/misc/vectors.d.ts.map +0 -0
  1516. package/dist/src/util/misc/vectors.min.mjs +0 -0
  1517. package/dist/src/util/misc/vectors.min.mjs.map +0 -0
  1518. package/dist/src/util/misc/vectors.mjs +0 -0
  1519. package/dist/src/util/misc/vectors.mjs.map +0 -0
  1520. package/dist/src/util/path/index.d.ts +0 -0
  1521. package/dist/src/util/path/index.d.ts.map +0 -0
  1522. package/dist/src/util/path/index.min.mjs +0 -0
  1523. package/dist/src/util/path/index.min.mjs.map +0 -0
  1524. package/dist/src/util/path/index.mjs +0 -0
  1525. package/dist/src/util/path/index.mjs.map +0 -0
  1526. package/dist/src/util/path/regex.d.ts +0 -0
  1527. package/dist/src/util/path/regex.d.ts.map +0 -0
  1528. package/dist/src/util/path/regex.min.mjs +0 -0
  1529. package/dist/src/util/path/regex.min.mjs.map +0 -0
  1530. package/dist/src/util/path/regex.mjs +0 -0
  1531. package/dist/src/util/path/regex.mjs.map +0 -0
  1532. package/dist/src/util/path/typechecks.d.ts +0 -0
  1533. package/dist/src/util/path/typechecks.d.ts.map +0 -0
  1534. package/dist/src/util/path/typedefs.d.ts +0 -0
  1535. package/dist/src/util/path/typedefs.d.ts.map +0 -0
  1536. package/dist/src/util/transform_matrix_removal.d.ts +0 -0
  1537. package/dist/src/util/transform_matrix_removal.d.ts.map +0 -0
  1538. package/dist/src/util/transform_matrix_removal.min.mjs +0 -0
  1539. package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -0
  1540. package/dist/src/util/transform_matrix_removal.mjs +0 -0
  1541. package/dist/src/util/transform_matrix_removal.mjs.map +0 -0
  1542. package/dist/src/util/typeAssertions.d.ts +0 -0
  1543. package/dist/src/util/typeAssertions.d.ts.map +0 -0
  1544. package/dist/src/util/typeAssertions.min.mjs +0 -0
  1545. package/dist/src/util/typeAssertions.min.mjs.map +0 -0
  1546. package/dist/src/util/typeAssertions.mjs +0 -0
  1547. package/dist/src/util/typeAssertions.mjs.map +0 -0
  1548. package/dist-extensions/aligning_guidelines/constant.mjs +0 -0
  1549. package/dist-extensions/aligning_guidelines/constant.mjs.map +0 -0
  1550. package/dist-extensions/aligning_guidelines/index.mjs +0 -0
  1551. package/dist-extensions/aligning_guidelines/index.mjs.map +0 -0
  1552. package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -0
  1553. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -0
  1554. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -0
  1555. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -0
  1556. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -0
  1557. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -0
  1558. package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -0
  1559. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -0
  1560. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -0
  1561. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -0
  1562. package/dist-extensions/data_updaters/gradient/index.mjs +0 -0
  1563. package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -0
  1564. package/dist-extensions/data_updaters/origins/index.mjs +0 -0
  1565. package/dist-extensions/data_updaters/origins/index.mjs.map +0 -0
  1566. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +0 -0
  1567. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  1568. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -0
  1569. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -0
  1570. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  1571. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  1572. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  1573. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  1574. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  1575. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  1576. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  1577. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  1578. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  1579. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  1580. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  1581. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  1582. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -0
  1583. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  1584. package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -0
  1585. package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -0
  1586. package/dist-extensions/extensions/index.d.ts +0 -0
  1587. package/dist-extensions/extensions/index.d.ts.map +0 -0
  1588. package/dist-extensions/fabric-extensions.min.js +0 -0
  1589. package/dist-extensions/fabric-extensions.min.js.map +0 -0
  1590. package/dist-extensions/fabric.d.ts +0 -0
  1591. package/dist-extensions/fabric.d.ts.map +0 -0
  1592. package/dist-extensions/index.d.ts +0 -0
  1593. package/dist-extensions/index.d.ts.map +0 -0
  1594. package/dist-extensions/index.mjs +0 -0
  1595. package/dist-extensions/index.mjs.map +0 -0
  1596. package/dist-extensions/src/ClassRegistry.d.ts +0 -0
  1597. package/dist-extensions/src/ClassRegistry.d.ts.map +0 -0
  1598. package/dist-extensions/src/Collection.d.ts +0 -0
  1599. package/dist-extensions/src/Collection.d.ts.map +0 -0
  1600. package/dist-extensions/src/CommonMethods.d.ts +0 -0
  1601. package/dist-extensions/src/CommonMethods.d.ts.map +0 -0
  1602. package/dist-extensions/src/EventTypeDefs.d.ts +0 -0
  1603. package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -0
  1604. package/dist-extensions/src/Intersection.d.ts +0 -0
  1605. package/dist-extensions/src/Intersection.d.ts.map +0 -0
  1606. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  1607. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  1608. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -0
  1609. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  1610. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  1611. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  1612. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  1613. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  1614. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  1615. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  1616. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  1617. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  1618. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  1619. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  1620. package/dist-extensions/src/LayoutManager/constants.d.ts +0 -0
  1621. package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -0
  1622. package/dist-extensions/src/LayoutManager/index.d.ts +0 -0
  1623. package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -0
  1624. package/dist-extensions/src/LayoutManager/types.d.ts +0 -0
  1625. package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -0
  1626. package/dist-extensions/src/Observable.d.ts +0 -0
  1627. package/dist-extensions/src/Observable.d.ts.map +0 -0
  1628. package/dist-extensions/src/Pattern/Pattern.d.ts +0 -0
  1629. package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -0
  1630. package/dist-extensions/src/Pattern/index.d.ts +0 -0
  1631. package/dist-extensions/src/Pattern/index.d.ts.map +0 -0
  1632. package/dist-extensions/src/Pattern/types.d.ts +0 -0
  1633. package/dist-extensions/src/Pattern/types.d.ts.map +0 -0
  1634. package/dist-extensions/src/Point.d.ts +0 -0
  1635. package/dist-extensions/src/Point.d.ts.map +0 -0
  1636. package/dist-extensions/src/Shadow.d.ts +0 -0
  1637. package/dist-extensions/src/Shadow.d.ts.map +0 -0
  1638. package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -0
  1639. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -0
  1640. package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -0
  1641. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -0
  1642. package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -0
  1643. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -0
  1644. package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -0
  1645. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -0
  1646. package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -0
  1647. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -0
  1648. package/dist-extensions/src/brushes/typedefs.d.ts +0 -0
  1649. package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -0
  1650. package/dist-extensions/src/cache.d.ts +0 -0
  1651. package/dist-extensions/src/cache.d.ts.map +0 -0
  1652. package/dist-extensions/src/canvas/Canvas.d.ts +0 -0
  1653. package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -0
  1654. package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -0
  1655. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -0
  1656. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  1657. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  1658. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  1659. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  1660. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -0
  1661. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -0
  1662. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -0
  1663. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -0
  1664. package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -0
  1665. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -0
  1666. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -0
  1667. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  1668. package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -0
  1669. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -0
  1670. package/dist-extensions/src/color/Color.d.ts +0 -0
  1671. package/dist-extensions/src/color/Color.d.ts.map +0 -0
  1672. package/dist-extensions/src/color/color_map.d.ts +0 -0
  1673. package/dist-extensions/src/color/color_map.d.ts.map +0 -0
  1674. package/dist-extensions/src/color/constants.d.ts +0 -0
  1675. package/dist-extensions/src/color/constants.d.ts.map +0 -0
  1676. package/dist-extensions/src/color/typedefs.d.ts +0 -0
  1677. package/dist-extensions/src/color/typedefs.d.ts.map +0 -0
  1678. package/dist-extensions/src/color/util.d.ts +0 -0
  1679. package/dist-extensions/src/color/util.d.ts.map +0 -0
  1680. package/dist-extensions/src/config.d.ts +0 -0
  1681. package/dist-extensions/src/config.d.ts.map +0 -0
  1682. package/dist-extensions/src/constants.d.ts +0 -0
  1683. package/dist-extensions/src/constants.d.ts.map +0 -0
  1684. package/dist-extensions/src/controls/Control.d.ts +0 -0
  1685. package/dist-extensions/src/controls/Control.d.ts.map +0 -0
  1686. package/dist-extensions/src/controls/changeHeight.d.ts +0 -0
  1687. package/dist-extensions/src/controls/changeHeight.d.ts.map +0 -0
  1688. package/dist-extensions/src/controls/changeWidth.d.ts +0 -0
  1689. package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -0
  1690. package/dist-extensions/src/controls/commonControls.d.ts +0 -0
  1691. package/dist-extensions/src/controls/commonControls.d.ts.map +0 -0
  1692. package/dist-extensions/src/controls/controlRendering.d.ts +0 -0
  1693. package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -0
  1694. package/dist-extensions/src/controls/drag.d.ts +0 -0
  1695. package/dist-extensions/src/controls/drag.d.ts.map +0 -0
  1696. package/dist-extensions/src/controls/fireEvent.d.ts +0 -0
  1697. package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -0
  1698. package/dist-extensions/src/controls/index.d.ts +0 -0
  1699. package/dist-extensions/src/controls/index.d.ts.map +0 -0
  1700. package/dist-extensions/src/controls/pathControl.d.ts +0 -0
  1701. package/dist-extensions/src/controls/pathControl.d.ts.map +0 -0
  1702. package/dist-extensions/src/controls/polyControl.d.ts +0 -0
  1703. package/dist-extensions/src/controls/polyControl.d.ts.map +0 -0
  1704. package/dist-extensions/src/controls/rotate.d.ts +0 -0
  1705. package/dist-extensions/src/controls/rotate.d.ts.map +0 -0
  1706. package/dist-extensions/src/controls/scale.d.ts +0 -0
  1707. package/dist-extensions/src/controls/scale.d.ts.map +0 -0
  1708. package/dist-extensions/src/controls/scaleSkew.d.ts +0 -0
  1709. package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -0
  1710. package/dist-extensions/src/controls/skew.d.ts +0 -0
  1711. package/dist-extensions/src/controls/skew.d.ts.map +0 -0
  1712. package/dist-extensions/src/controls/util.d.ts +0 -0
  1713. package/dist-extensions/src/controls/util.d.ts.map +0 -0
  1714. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -0
  1715. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  1716. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  1717. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  1718. package/dist-extensions/src/env/browser.d.ts +0 -0
  1719. package/dist-extensions/src/env/browser.d.ts.map +0 -0
  1720. package/dist-extensions/src/env/index.d.ts +0 -0
  1721. package/dist-extensions/src/env/index.d.ts.map +0 -0
  1722. package/dist-extensions/src/env/types.d.ts +0 -0
  1723. package/dist-extensions/src/env/types.d.ts.map +0 -0
  1724. package/dist-extensions/src/filters/BaseFilter.d.ts +0 -0
  1725. package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -0
  1726. package/dist-extensions/src/filters/BlendColor.d.ts +0 -0
  1727. package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -0
  1728. package/dist-extensions/src/filters/BlendImage.d.ts +0 -0
  1729. package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -0
  1730. package/dist-extensions/src/filters/Blur.d.ts +0 -0
  1731. package/dist-extensions/src/filters/Blur.d.ts.map +0 -0
  1732. package/dist-extensions/src/filters/Brightness.d.ts +0 -0
  1733. package/dist-extensions/src/filters/Brightness.d.ts.map +0 -0
  1734. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  1735. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  1736. package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -0
  1737. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -0
  1738. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -0
  1739. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  1740. package/dist-extensions/src/filters/Composed.d.ts +0 -0
  1741. package/dist-extensions/src/filters/Composed.d.ts.map +0 -0
  1742. package/dist-extensions/src/filters/Contrast.d.ts +0 -0
  1743. package/dist-extensions/src/filters/Contrast.d.ts.map +0 -0
  1744. package/dist-extensions/src/filters/Convolute.d.ts +0 -0
  1745. package/dist-extensions/src/filters/Convolute.d.ts.map +0 -0
  1746. package/dist-extensions/src/filters/FilterBackend.d.ts +0 -0
  1747. package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -0
  1748. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -0
  1749. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  1750. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  1751. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  1752. package/dist-extensions/src/filters/Gamma.d.ts +0 -0
  1753. package/dist-extensions/src/filters/Gamma.d.ts.map +0 -0
  1754. package/dist-extensions/src/filters/Grayscale.d.ts +0 -0
  1755. package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -0
  1756. package/dist-extensions/src/filters/HueRotation.d.ts +0 -0
  1757. package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -0
  1758. package/dist-extensions/src/filters/Invert.d.ts +0 -0
  1759. package/dist-extensions/src/filters/Invert.d.ts.map +0 -0
  1760. package/dist-extensions/src/filters/Noise.d.ts +0 -0
  1761. package/dist-extensions/src/filters/Noise.d.ts.map +0 -0
  1762. package/dist-extensions/src/filters/Pixelate.d.ts +0 -0
  1763. package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -0
  1764. package/dist-extensions/src/filters/RemoveColor.d.ts +0 -0
  1765. package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -0
  1766. package/dist-extensions/src/filters/Resize.d.ts +0 -0
  1767. package/dist-extensions/src/filters/Resize.d.ts.map +0 -0
  1768. package/dist-extensions/src/filters/Saturation.d.ts +0 -0
  1769. package/dist-extensions/src/filters/Saturation.d.ts.map +0 -0
  1770. package/dist-extensions/src/filters/Vibrance.d.ts +0 -0
  1771. package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -0
  1772. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -0
  1773. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  1774. package/dist-extensions/src/filters/filters.d.ts +0 -0
  1775. package/dist-extensions/src/filters/filters.d.ts.map +0 -0
  1776. package/dist-extensions/src/filters/index.d.ts +0 -0
  1777. package/dist-extensions/src/filters/index.d.ts.map +0 -0
  1778. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -0
  1779. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -0
  1780. package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -0
  1781. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -0
  1782. package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -0
  1783. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -0
  1784. package/dist-extensions/src/filters/shaders/blur.d.ts +0 -0
  1785. package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -0
  1786. package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -0
  1787. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -0
  1788. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -0
  1789. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  1790. package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -0
  1791. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -0
  1792. package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -0
  1793. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -0
  1794. package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -0
  1795. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -0
  1796. package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -0
  1797. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -0
  1798. package/dist-extensions/src/filters/shaders/invert.d.ts +0 -0
  1799. package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -0
  1800. package/dist-extensions/src/filters/shaders/noise.d.ts +0 -0
  1801. package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -0
  1802. package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -0
  1803. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -0
  1804. package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -0
  1805. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -0
  1806. package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -0
  1807. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -0
  1808. package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -0
  1809. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -0
  1810. package/dist-extensions/src/filters/typedefs.d.ts +0 -0
  1811. package/dist-extensions/src/filters/typedefs.d.ts.map +0 -0
  1812. package/dist-extensions/src/filters/utils.d.ts +0 -0
  1813. package/dist-extensions/src/filters/utils.d.ts.map +0 -0
  1814. package/dist-extensions/src/gradient/Gradient.d.ts +0 -0
  1815. package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -0
  1816. package/dist-extensions/src/gradient/constants.d.ts +0 -0
  1817. package/dist-extensions/src/gradient/constants.d.ts.map +0 -0
  1818. package/dist-extensions/src/gradient/index.d.ts +0 -0
  1819. package/dist-extensions/src/gradient/index.d.ts.map +0 -0
  1820. package/dist-extensions/src/gradient/parser/misc.d.ts +0 -0
  1821. package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -0
  1822. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -0
  1823. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  1824. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -0
  1825. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -0
  1826. package/dist-extensions/src/gradient/typedefs.d.ts +0 -0
  1827. package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -0
  1828. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -0
  1829. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -0
  1830. package/dist-extensions/src/parser/attributes.d.ts +0 -0
  1831. package/dist-extensions/src/parser/attributes.d.ts.map +0 -0
  1832. package/dist-extensions/src/parser/constants.d.ts +0 -0
  1833. package/dist-extensions/src/parser/constants.d.ts.map +0 -0
  1834. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -0
  1835. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  1836. package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -0
  1837. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -0
  1838. package/dist-extensions/src/parser/elements_parser.d.ts +0 -0
  1839. package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -0
  1840. package/dist-extensions/src/parser/getCSSRules.d.ts +0 -0
  1841. package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -0
  1842. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -0
  1843. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  1844. package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -0
  1845. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -0
  1846. package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -0
  1847. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -0
  1848. package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -0
  1849. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -0
  1850. package/dist-extensions/src/parser/getTagName.d.ts +0 -0
  1851. package/dist-extensions/src/parser/getTagName.d.ts.map +0 -0
  1852. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -0
  1853. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  1854. package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -0
  1855. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -0
  1856. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -0
  1857. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -0
  1858. package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -0
  1859. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -0
  1860. package/dist-extensions/src/parser/normalizeValue.d.ts +0 -0
  1861. package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -0
  1862. package/dist-extensions/src/parser/parseAttributes.d.ts +0 -0
  1863. package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -0
  1864. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -0
  1865. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -0
  1866. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -0
  1867. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -0
  1868. package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -0
  1869. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -0
  1870. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -0
  1871. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -0
  1872. package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -0
  1873. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -0
  1874. package/dist-extensions/src/parser/parseStyleString.d.ts +0 -0
  1875. package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -0
  1876. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -0
  1877. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -0
  1878. package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -0
  1879. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -0
  1880. package/dist-extensions/src/parser/percent.d.ts +0 -0
  1881. package/dist-extensions/src/parser/percent.d.ts.map +0 -0
  1882. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  1883. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  1884. package/dist-extensions/src/parser/selectorMatches.d.ts +0 -0
  1885. package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -0
  1886. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -0
  1887. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  1888. package/dist-extensions/src/parser/typedefs.d.ts +0 -0
  1889. package/dist-extensions/src/parser/typedefs.d.ts.map +0 -0
  1890. package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -0
  1891. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -0
  1892. package/dist-extensions/src/shapes/Circle.d.ts +0 -0
  1893. package/dist-extensions/src/shapes/Circle.d.ts.map +0 -0
  1894. package/dist-extensions/src/shapes/Ellipse.d.ts +0 -0
  1895. package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -0
  1896. package/dist-extensions/src/shapes/Group.d.ts +0 -0
  1897. package/dist-extensions/src/shapes/Group.d.ts.map +0 -0
  1898. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1899. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1900. package/dist-extensions/src/shapes/IText/IText.d.ts +0 -0
  1901. package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -0
  1902. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1903. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
  1904. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1905. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1906. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1907. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1908. package/dist-extensions/src/shapes/IText/constants.d.ts +0 -0
  1909. package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -0
  1910. package/dist-extensions/src/shapes/Image.d.ts +0 -0
  1911. package/dist-extensions/src/shapes/Image.d.ts.map +0 -0
  1912. package/dist-extensions/src/shapes/Line.d.ts +0 -0
  1913. package/dist-extensions/src/shapes/Line.d.ts.map +0 -0
  1914. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -0
  1915. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1916. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1917. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1918. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1919. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1920. package/dist-extensions/src/shapes/Object/Object.d.ts +0 -0
  1921. package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -0
  1922. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1923. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1924. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -0
  1925. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1926. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1927. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1928. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1929. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1930. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1931. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1932. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1933. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1934. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1935. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1936. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1937. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1938. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1939. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1940. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1941. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1942. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1943. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1944. package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -0
  1945. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -0
  1946. package/dist-extensions/src/shapes/Path.d.ts +0 -0
  1947. package/dist-extensions/src/shapes/Path.d.ts.map +0 -0
  1948. package/dist-extensions/src/shapes/Polygon.d.ts +0 -0
  1949. package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -0
  1950. package/dist-extensions/src/shapes/Polyline.d.ts +0 -0
  1951. package/dist-extensions/src/shapes/Polyline.d.ts.map +0 -0
  1952. package/dist-extensions/src/shapes/Rect.d.ts +0 -0
  1953. package/dist-extensions/src/shapes/Rect.d.ts.map +0 -0
  1954. package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -0
  1955. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -0
  1956. package/dist-extensions/src/shapes/Text/Text.d.ts +1 -0
  1957. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  1958. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1959. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1960. package/dist-extensions/src/shapes/Text/constants.d.ts +0 -0
  1961. package/dist-extensions/src/shapes/Text/constants.d.ts.map +0 -0
  1962. package/dist-extensions/src/shapes/Textbox.d.ts +20 -0
  1963. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  1964. package/dist-extensions/src/shapes/Triangle.d.ts +0 -0
  1965. package/dist-extensions/src/shapes/Triangle.d.ts.map +0 -0
  1966. package/dist-extensions/src/text/browserLines.d.ts +7 -2
  1967. package/dist-extensions/src/text/browserLines.d.ts.map +1 -1
  1968. package/dist-extensions/src/text/ellipsis.d.ts +0 -0
  1969. package/dist-extensions/src/text/ellipsis.d.ts.map +0 -0
  1970. package/dist-extensions/src/text/hitTest.d.ts +0 -0
  1971. package/dist-extensions/src/text/hitTest.d.ts.map +0 -0
  1972. package/dist-extensions/src/text/layout.d.ts +0 -0
  1973. package/dist-extensions/src/text/layout.d.ts.map +0 -0
  1974. package/dist-extensions/src/text/measure.d.ts +0 -0
  1975. package/dist-extensions/src/text/measure.d.ts.map +0 -0
  1976. package/dist-extensions/src/text/overlayEditor.d.ts +1 -0
  1977. package/dist-extensions/src/text/overlayEditor.d.ts.map +1 -1
  1978. package/dist-extensions/src/text/unicode.d.ts +0 -0
  1979. package/dist-extensions/src/text/unicode.d.ts.map +0 -0
  1980. package/dist-extensions/src/typedefs.d.ts +0 -0
  1981. package/dist-extensions/src/typedefs.d.ts.map +0 -0
  1982. package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -0
  1983. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -0
  1984. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1985. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1986. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -0
  1987. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1988. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -0
  1989. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1990. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -0
  1991. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1992. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -0
  1993. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1994. package/dist-extensions/src/util/animation/animate.d.ts +0 -0
  1995. package/dist-extensions/src/util/animation/animate.d.ts.map +0 -0
  1996. package/dist-extensions/src/util/animation/easing.d.ts +0 -0
  1997. package/dist-extensions/src/util/animation/easing.d.ts.map +0 -0
  1998. package/dist-extensions/src/util/animation/index.d.ts +0 -0
  1999. package/dist-extensions/src/util/animation/index.d.ts.map +0 -0
  2000. package/dist-extensions/src/util/animation/types.d.ts +0 -0
  2001. package/dist-extensions/src/util/animation/types.d.ts.map +0 -0
  2002. package/dist-extensions/src/util/applyMixins.d.ts +0 -0
  2003. package/dist-extensions/src/util/applyMixins.d.ts.map +0 -0
  2004. package/dist-extensions/src/util/dom_event.d.ts +0 -0
  2005. package/dist-extensions/src/util/dom_event.d.ts.map +0 -0
  2006. package/dist-extensions/src/util/dom_misc.d.ts +0 -0
  2007. package/dist-extensions/src/util/dom_misc.d.ts.map +0 -0
  2008. package/dist-extensions/src/util/index.d.ts +0 -0
  2009. package/dist-extensions/src/util/index.d.ts.map +0 -0
  2010. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -0
  2011. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  2012. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  2013. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  2014. package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -0
  2015. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -0
  2016. package/dist-extensions/src/util/internals/console.d.ts +0 -0
  2017. package/dist-extensions/src/util/internals/console.d.ts.map +0 -0
  2018. package/dist-extensions/src/util/internals/dom_style.d.ts +0 -0
  2019. package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -0
  2020. package/dist-extensions/src/util/internals/findRight.d.ts +0 -0
  2021. package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -0
  2022. package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -0
  2023. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -0
  2024. package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -0
  2025. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -0
  2026. package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -0
  2027. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -0
  2028. package/dist-extensions/src/util/internals/uid.d.ts +0 -0
  2029. package/dist-extensions/src/util/internals/uid.d.ts.map +0 -0
  2030. package/dist-extensions/src/util/lang_string.d.ts +0 -0
  2031. package/dist-extensions/src/util/lang_string.d.ts.map +0 -0
  2032. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  2033. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  2034. package/dist-extensions/src/util/misc/capValue.d.ts +0 -0
  2035. package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -0
  2036. package/dist-extensions/src/util/misc/cornerRadius.d.ts +0 -0
  2037. package/dist-extensions/src/util/misc/cornerRadius.d.ts.map +0 -0
  2038. package/dist-extensions/src/util/misc/cos.d.ts +0 -0
  2039. package/dist-extensions/src/util/misc/cos.d.ts.map +0 -0
  2040. package/dist-extensions/src/util/misc/dom.d.ts +0 -0
  2041. package/dist-extensions/src/util/misc/dom.d.ts.map +0 -0
  2042. package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -0
  2043. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -0
  2044. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -0
  2045. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -0
  2046. package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -0
  2047. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -0
  2048. package/dist-extensions/src/util/misc/matrix.d.ts +0 -0
  2049. package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -0
  2050. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -0
  2051. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  2052. package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -0
  2053. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -0
  2054. package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -0
  2055. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -0
  2056. package/dist-extensions/src/util/misc/pick.d.ts +0 -0
  2057. package/dist-extensions/src/util/misc/pick.d.ts.map +0 -0
  2058. package/dist-extensions/src/util/misc/planeChange.d.ts +0 -0
  2059. package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -0
  2060. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  2061. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  2062. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  2063. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  2064. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  2065. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  2066. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -0
  2067. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -0
  2068. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -0
  2069. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -0
  2070. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  2071. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  2072. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -0
  2073. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -0
  2074. package/dist-extensions/src/util/misc/sin.d.ts +0 -0
  2075. package/dist-extensions/src/util/misc/sin.d.ts.map +0 -0
  2076. package/dist-extensions/src/util/misc/svgExport.d.ts +0 -0
  2077. package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -0
  2078. package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -0
  2079. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -0
  2080. package/dist-extensions/src/util/misc/textStyles.d.ts +0 -0
  2081. package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -0
  2082. package/dist-extensions/src/util/misc/toFixed.d.ts +0 -0
  2083. package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -0
  2084. package/dist-extensions/src/util/misc/vectors.d.ts +0 -0
  2085. package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -0
  2086. package/dist-extensions/src/util/path/index.d.ts +0 -0
  2087. package/dist-extensions/src/util/path/index.d.ts.map +0 -0
  2088. package/dist-extensions/src/util/path/regex.d.ts +0 -0
  2089. package/dist-extensions/src/util/path/regex.d.ts.map +0 -0
  2090. package/dist-extensions/src/util/path/typedefs.d.ts +0 -0
  2091. package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -0
  2092. package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -0
  2093. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -0
  2094. package/dist-extensions/src/util/typeAssertions.d.ts +0 -0
  2095. package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -0
  2096. package/docs/fabric-konva-gap-analysis.md +0 -0
  2097. package/docs/konva-text-behavior-spec.md +0 -0
  2098. package/docs/text-engine-design.md +0 -0
  2099. package/eslint.config.mjs +0 -0
  2100. package/examples/overlay-edit.html +416 -416
  2101. package/extensions/README.MD +0 -0
  2102. package/extensions/aligning_guidelines/README.MD +0 -0
  2103. package/extensions/aligning_guidelines/constant.ts +0 -0
  2104. package/extensions/aligning_guidelines/index.ts +0 -0
  2105. package/extensions/aligning_guidelines/typedefs.ts +0 -0
  2106. package/extensions/aligning_guidelines/util/basic.spec.ts +0 -0
  2107. package/extensions/aligning_guidelines/util/basic.ts +0 -0
  2108. package/extensions/aligning_guidelines/util/collect-line.ts +0 -0
  2109. package/extensions/aligning_guidelines/util/collect-point.ts +0 -0
  2110. package/extensions/aligning_guidelines/util/draw.ts +0 -0
  2111. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -0
  2112. package/extensions/data_updaters/README.md +0 -0
  2113. package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -0
  2114. package/extensions/data_updaters/gradient/index.spec.ts +0 -0
  2115. package/extensions/data_updaters/gradient/index.ts +0 -0
  2116. package/extensions/data_updaters/origins/README.md +0 -0
  2117. package/extensions/data_updaters/origins/index.spec.ts +0 -0
  2118. package/extensions/data_updaters/origins/index.ts +0 -0
  2119. package/extensions/index.ts +0 -0
  2120. package/fabric.ts +182 -182
  2121. package/index.node.ts +0 -0
  2122. package/index.ts +0 -0
  2123. package/lib/aligning_guidelines.js +0 -0
  2124. package/lib/centering_guidelines.js +0 -0
  2125. package/lib/event.js +0 -0
  2126. package/package.json +164 -164
  2127. package/playwright.config.ts +0 -0
  2128. package/playwright.setup.ts +0 -0
  2129. package/{fonts → public/fonts}/STV Bold.ttf +0 -0
  2130. package/{fonts → public/fonts}/STV Light.ttf +0 -0
  2131. package/{fonts → public/fonts}/STV Regular.ttf +0 -0
  2132. package/publish-next.js +0 -0
  2133. package/publish.js +0 -0
  2134. package/rollup.config.mjs +0 -0
  2135. package/rtl-debug.html +744 -744
  2136. package/scripts/bench-text.js +591 -591
  2137. package/scripts/build.mjs +0 -0
  2138. package/scripts/buildLock.mjs +0 -0
  2139. package/scripts/buildReporter.mjs +0 -0
  2140. package/scripts/buildStats.mjs +0 -0
  2141. package/scripts/dirname.mjs +0 -0
  2142. package/scripts/git.mjs +0 -0
  2143. package/scripts/index.mjs +0 -0
  2144. package/scripts/sandbox.mjs +0 -0
  2145. package/src/ClassRegistry.spec.ts +0 -0
  2146. package/src/ClassRegistry.ts +0 -0
  2147. package/src/Collection.spec.ts +0 -0
  2148. package/src/Collection.ts +0 -0
  2149. package/src/CommonMethods.ts +0 -0
  2150. package/src/EventTypeDefs.ts +0 -0
  2151. package/src/Intersection.spec.ts +0 -0
  2152. package/src/Intersection.ts +0 -0
  2153. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
  2154. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
  2155. package/src/LayoutManager/LayoutManager.spec.ts +0 -0
  2156. package/src/LayoutManager/LayoutManager.ts +0 -0
  2157. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
  2158. package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
  2159. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
  2160. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
  2161. package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
  2162. package/src/LayoutManager/README.md +0 -0
  2163. package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
  2164. package/src/LayoutManager/constants.ts +0 -0
  2165. package/src/LayoutManager/index.ts +0 -0
  2166. package/src/LayoutManager/types.ts +0 -0
  2167. package/src/Observable.spec.ts +0 -0
  2168. package/src/Observable.ts +0 -0
  2169. package/src/Pattern/Pattern.spec.ts +0 -0
  2170. package/src/Pattern/Pattern.ts +0 -0
  2171. package/src/Pattern/index.ts +0 -0
  2172. package/src/Pattern/types.ts +0 -0
  2173. package/src/Point.spec.ts +0 -0
  2174. package/src/Point.ts +0 -0
  2175. package/src/Shadow.spec.ts +0 -0
  2176. package/src/Shadow.ts +0 -0
  2177. package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
  2178. package/src/brushes/BaseBrush.spec.ts +0 -0
  2179. package/src/brushes/BaseBrush.ts +0 -0
  2180. package/src/brushes/CircleBrush.test.ts +0 -0
  2181. package/src/brushes/CircleBrush.ts +0 -0
  2182. package/src/brushes/PatternBrush.ts +0 -0
  2183. package/src/brushes/PencilBrush.spec.ts +0 -0
  2184. package/src/brushes/PencilBrush.ts +0 -0
  2185. package/src/brushes/SprayBrush.ts +0 -0
  2186. package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
  2187. package/src/brushes/typedefs.ts +0 -0
  2188. package/src/cache.spec.ts +0 -0
  2189. package/src/cache.ts +0 -0
  2190. package/src/canvas/Canvas-dispose.spec.ts +0 -0
  2191. package/src/canvas/Canvas-events.spec.ts +0 -0
  2192. package/src/canvas/Canvas.spec.ts +0 -0
  2193. package/src/canvas/Canvas.ts +0 -0
  2194. package/src/canvas/CanvasOptions.ts +0 -0
  2195. package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
  2196. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
  2197. package/src/canvas/DOMManagers/util.spec.ts +0 -0
  2198. package/src/canvas/DOMManagers/util.ts +0 -0
  2199. package/src/canvas/SelectableCanvas.spec.ts +0 -0
  2200. package/src/canvas/SelectableCanvas.ts +0 -0
  2201. package/src/canvas/StaticCanvas.spec.ts +0 -0
  2202. package/src/canvas/StaticCanvas.ts +0 -0
  2203. package/src/canvas/StaticCanvasOptions.ts +0 -0
  2204. package/src/canvas/TextEditingManager.ts +0 -0
  2205. package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
  2206. package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
  2207. package/src/canvas/__tests__/eventData.test.ts +0 -0
  2208. package/src/canvas/canvas_gestures.mixin.ts +0 -0
  2209. package/src/color/Color.ts +0 -0
  2210. package/src/color/color.test.ts +0 -0
  2211. package/src/color/color_map.ts +0 -0
  2212. package/src/color/constants.ts +0 -0
  2213. package/src/color/typedefs.ts +0 -0
  2214. package/src/color/util.ts +0 -0
  2215. package/src/config.ts +0 -0
  2216. package/src/constants.ts +0 -0
  2217. package/src/controls/Control-cursor.spec.ts +0 -0
  2218. package/src/controls/Control-handlers.spec.ts +0 -0
  2219. package/src/controls/Control.spec.ts +0 -0
  2220. package/src/controls/Control.ts +0 -0
  2221. package/src/controls/changeHeight.ts +0 -0
  2222. package/src/controls/changeWidth.test.ts +0 -0
  2223. package/src/controls/changeWidth.ts +0 -0
  2224. package/src/controls/commonControls.ts +0 -0
  2225. package/src/controls/controlRendering.ts +0 -0
  2226. package/src/controls/drag.ts +0 -0
  2227. package/src/controls/fireEvent.ts +0 -0
  2228. package/src/controls/index.ts +0 -0
  2229. package/src/controls/pathControl.spec.ts +0 -0
  2230. package/src/controls/pathControl.ts +0 -0
  2231. package/src/controls/polyControl.spec.ts +0 -0
  2232. package/src/controls/polyControl.ts +0 -0
  2233. package/src/controls/rotate.ts +0 -0
  2234. package/src/controls/scale.test.ts +0 -0
  2235. package/src/controls/scale.ts +0 -0
  2236. package/src/controls/scaleSkew.ts +0 -0
  2237. package/src/controls/skew.ts +0 -0
  2238. package/src/controls/util.ts +0 -0
  2239. package/src/controls/wrapWithFireEvent.ts +0 -0
  2240. package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
  2241. package/src/controls/wrapWithFixedAnchor.ts +0 -0
  2242. package/src/env/browser.ts +0 -0
  2243. package/src/env/env.spec.ts +0 -0
  2244. package/src/env/index.ts +0 -0
  2245. package/src/env/node.ts +0 -0
  2246. package/src/env/types.ts +0 -0
  2247. package/src/filters/BaseFilter.spec.ts +0 -0
  2248. package/src/filters/BaseFilter.ts +0 -0
  2249. package/src/filters/BlendColor.ts +0 -0
  2250. package/src/filters/BlendImage.ts +0 -0
  2251. package/src/filters/Blur.ts +0 -0
  2252. package/src/filters/Boilerplate.ts +0 -0
  2253. package/src/filters/Brightness.ts +0 -0
  2254. package/src/filters/Canvas2dFilterBackend.ts +0 -0
  2255. package/src/filters/ColorMatrix.spec.ts +0 -0
  2256. package/src/filters/ColorMatrix.ts +0 -0
  2257. package/src/filters/ColorMatrixFilters.ts +0 -0
  2258. package/src/filters/Composed.ts +0 -0
  2259. package/src/filters/Contrast.ts +0 -0
  2260. package/src/filters/Convolute.ts +0 -0
  2261. package/src/filters/FilterBackend.ts +0 -0
  2262. package/src/filters/GLProbes/GLProbe.ts +0 -0
  2263. package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
  2264. package/src/filters/GLProbes/WebGLProbe.ts +0 -0
  2265. package/src/filters/Gamma.ts +0 -0
  2266. package/src/filters/Grayscale.ts +0 -0
  2267. package/src/filters/HueRotation.ts +0 -0
  2268. package/src/filters/Invert.ts +0 -0
  2269. package/src/filters/Noise.ts +0 -0
  2270. package/src/filters/Pixelate.ts +0 -0
  2271. package/src/filters/RemoveColor.ts +0 -0
  2272. package/src/filters/Resize.ts +0 -0
  2273. package/src/filters/Saturation.ts +0 -0
  2274. package/src/filters/Vibrance.ts +0 -0
  2275. package/src/filters/WebGLFilterBackend.spec.ts +0 -0
  2276. package/src/filters/WebGLFilterBackend.ts +0 -0
  2277. package/src/filters/filters.ts +0 -0
  2278. package/src/filters/index.ts +0 -0
  2279. package/src/filters/shaders/baseFilter.ts +0 -0
  2280. package/src/filters/shaders/blendColor.ts +0 -0
  2281. package/src/filters/shaders/blendImage.ts +0 -0
  2282. package/src/filters/shaders/blur.ts +0 -0
  2283. package/src/filters/shaders/brightness.ts +0 -0
  2284. package/src/filters/shaders/colorMatrix.ts +0 -0
  2285. package/src/filters/shaders/constrast.ts +0 -0
  2286. package/src/filters/shaders/convolute.ts +0 -0
  2287. package/src/filters/shaders/gamma.ts +0 -0
  2288. package/src/filters/shaders/grayscale.ts +0 -0
  2289. package/src/filters/shaders/invert.ts +0 -0
  2290. package/src/filters/shaders/noise.ts +0 -0
  2291. package/src/filters/shaders/pixelate.ts +0 -0
  2292. package/src/filters/shaders/removeColor.ts +0 -0
  2293. package/src/filters/shaders/saturation.ts +0 -0
  2294. package/src/filters/shaders/vibrance.ts +0 -0
  2295. package/src/filters/typedefs.ts +0 -0
  2296. package/src/filters/utils.ts +0 -0
  2297. package/src/gradient/Gradient.spec.ts +0 -0
  2298. package/src/gradient/Gradient.ts +0 -0
  2299. package/src/gradient/constants.ts +0 -0
  2300. package/src/gradient/index.ts +0 -0
  2301. package/src/gradient/parser/misc.ts +0 -0
  2302. package/src/gradient/parser/parseColorStops.ts +0 -0
  2303. package/src/gradient/parser/parseCoords.ts +0 -0
  2304. package/src/gradient/typedefs.ts +0 -0
  2305. package/src/mixins/eraser_brush.mixin.ts +0 -0
  2306. package/src/parkinglot/canvas_animation.mixin.ts +0 -0
  2307. package/src/parkinglot/straighten.ts +0 -0
  2308. package/src/parser/applyViewboxTransform.spec.ts +0 -0
  2309. package/src/parser/applyViewboxTransform.ts +0 -0
  2310. package/src/parser/attributes.ts +0 -0
  2311. package/src/parser/constants.spec.ts +0 -0
  2312. package/src/parser/constants.ts +0 -0
  2313. package/src/parser/doesSomeParentMatch.ts +0 -0
  2314. package/src/parser/elementMatchesRule.ts +0 -0
  2315. package/src/parser/elements_parser.ts +0 -0
  2316. package/src/parser/getCSSRules.spec.ts +0 -0
  2317. package/src/parser/getCSSRules.ts +0 -0
  2318. package/src/parser/getGlobalStylesForElement.ts +0 -0
  2319. package/src/parser/getGradientDefs.ts +0 -0
  2320. package/src/parser/getMultipleNodes.ts +0 -0
  2321. package/src/parser/getSvgRegex.ts +0 -0
  2322. package/src/parser/getTagName.ts +0 -0
  2323. package/src/parser/hasInvalidAncestor.ts +0 -0
  2324. package/src/parser/loadSVGFromString.test.ts +0 -0
  2325. package/src/parser/loadSVGFromString.ts +0 -0
  2326. package/src/parser/loadSVGFromURL.ts +0 -0
  2327. package/src/parser/normalizeAttr.ts +0 -0
  2328. package/src/parser/normalizeValue.ts +0 -0
  2329. package/src/parser/parseAttributes.ts +0 -0
  2330. package/src/parser/parseFontDeclaration.ts +0 -0
  2331. package/src/parser/parsePointsAttribute.ts +0 -0
  2332. package/src/parser/parseSVGDocument.ts +0 -0
  2333. package/src/parser/parseStyleAttribute.ts +0 -0
  2334. package/src/parser/parseStyleObject.ts +0 -0
  2335. package/src/parser/parseStyleString.ts +0 -0
  2336. package/src/parser/parseTransformAttribute.ts +0 -0
  2337. package/src/parser/parseUseDirectives.test.ts +0 -0
  2338. package/src/parser/parseUseDirectives.ts +0 -0
  2339. package/src/parser/parser.spec.ts +0 -0
  2340. package/src/parser/percent.ts +0 -0
  2341. package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
  2342. package/src/parser/selectorMatches.ts +0 -0
  2343. package/src/parser/setStrokeFillOpacity.ts +0 -0
  2344. package/src/parser/typedefs.ts +0 -0
  2345. package/src/shapes/ActiveSelection.spec.ts +0 -0
  2346. package/src/shapes/ActiveSelection.ts +0 -0
  2347. package/src/shapes/Circle.spec.ts +0 -0
  2348. package/src/shapes/Circle.ts +0 -0
  2349. package/src/shapes/Ellipse.spec.ts +0 -0
  2350. package/src/shapes/Ellipse.ts +0 -0
  2351. package/src/shapes/Group.spec.ts +0 -0
  2352. package/src/shapes/Group.ts +0 -0
  2353. package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
  2354. package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
  2355. package/src/shapes/IText/IText.test.ts +0 -0
  2356. package/src/shapes/IText/IText.ts +846 -846
  2357. package/src/shapes/IText/ITextBehavior.test.ts +0 -0
  2358. package/src/shapes/IText/ITextBehavior.ts +1263 -1188
  2359. package/src/shapes/IText/ITextClickBehavior.ts +254 -254
  2360. package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
  2361. package/src/shapes/IText/ITextKeyBehavior.ts +732 -732
  2362. package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
  2363. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
  2364. package/src/shapes/IText/constants.ts +0 -0
  2365. package/src/shapes/Image-filters.spec.ts +0 -0
  2366. package/src/shapes/Image.spec.ts +0 -0
  2367. package/src/shapes/Image.ts +0 -0
  2368. package/src/shapes/Line.spec.ts +0 -0
  2369. package/src/shapes/Line.ts +0 -0
  2370. package/src/shapes/Object/FabricObject.spec.ts +0 -0
  2371. package/src/shapes/Object/FabricObject.ts +0 -0
  2372. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
  2373. package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
  2374. package/src/shapes/Object/InteractiveObject.ts +0 -0
  2375. package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
  2376. package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
  2377. package/src/shapes/Object/Object.spec.ts +0 -0
  2378. package/src/shapes/Object/Object.ts +0 -0
  2379. package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
  2380. package/src/shapes/Object/ObjectGeometry.ts +0 -0
  2381. package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
  2382. package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
  2383. package/src/shapes/Object/StackedObject.spec.ts +0 -0
  2384. package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
  2385. package/src/shapes/Object/defaultValues.ts +0 -0
  2386. package/src/shapes/Object/types/BaseProps.ts +0 -0
  2387. package/src/shapes/Object/types/BorderProps.ts +0 -0
  2388. package/src/shapes/Object/types/ControlProps.ts +0 -0
  2389. package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
  2390. package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
  2391. package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
  2392. package/src/shapes/Object/types/ObjectProps.ts +0 -0
  2393. package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
  2394. package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
  2395. package/src/shapes/Object/types/index.ts +0 -0
  2396. package/src/shapes/Path.spec.ts +0 -0
  2397. package/src/shapes/Path.ts +0 -0
  2398. package/src/shapes/Polygon.spec.ts +0 -0
  2399. package/src/shapes/Polygon.ts +0 -0
  2400. package/src/shapes/Polyline.spec.ts +0 -0
  2401. package/src/shapes/Polyline.ts +0 -0
  2402. package/src/shapes/Rect.spec.ts +0 -0
  2403. package/src/shapes/Rect.ts +0 -0
  2404. package/src/shapes/Text/StyledText.spec.ts +0 -0
  2405. package/src/shapes/Text/StyledText.ts +0 -0
  2406. package/src/shapes/Text/Text.spec.ts +0 -0
  2407. package/src/shapes/Text/Text.ts +206 -139
  2408. package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
  2409. package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
  2410. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
  2411. package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
  2412. package/src/shapes/Text/constants.ts +135 -135
  2413. package/src/shapes/Textbox.spec.ts +0 -0
  2414. package/src/shapes/Textbox.ts +581 -182
  2415. package/src/shapes/Triangle.spec.ts +0 -0
  2416. package/src/shapes/Triangle.ts +0 -0
  2417. package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
  2418. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
  2419. package/src/text/browserLines.ts +266 -234
  2420. package/src/text/ellipsis.ts +516 -516
  2421. package/src/text/hitTest.ts +623 -623
  2422. package/src/text/layout.ts +586 -586
  2423. package/src/text/measure.ts +626 -626
  2424. package/src/text/overlayEditor.ts +1108 -1047
  2425. package/src/text/unicode.ts +454 -454
  2426. package/src/typedefs.ts +0 -0
  2427. package/src/util/__snapshots__/index.spec.ts.snap +0 -0
  2428. package/src/util/animation/AnimationBase.ts +0 -0
  2429. package/src/util/animation/AnimationFrameProvider.ts +0 -0
  2430. package/src/util/animation/AnimationRegistry.ts +0 -0
  2431. package/src/util/animation/ArrayAnimation.ts +0 -0
  2432. package/src/util/animation/ColorAnimation.ts +0 -0
  2433. package/src/util/animation/ValueAnimation.ts +0 -0
  2434. package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
  2435. package/src/util/animation/animate.ts +0 -0
  2436. package/src/util/animation/animations.spec.ts +0 -0
  2437. package/src/util/animation/easing.ts +0 -0
  2438. package/src/util/animation/index.ts +0 -0
  2439. package/src/util/animation/types.ts +0 -0
  2440. package/src/util/applyMixins.ts +0 -0
  2441. package/src/util/dom_event.spec.ts +0 -0
  2442. package/src/util/dom_event.ts +0 -0
  2443. package/src/util/dom_misc.ts +0 -0
  2444. package/src/util/index.spec.ts +0 -0
  2445. package/src/util/index.ts +0 -0
  2446. package/src/util/internals/applyCanvasTransform.ts +0 -0
  2447. package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
  2448. package/src/util/internals/cleanupSvgAttribute.ts +0 -0
  2449. package/src/util/internals/cloneStyles.spec.ts +0 -0
  2450. package/src/util/internals/cloneStyles.ts +0 -0
  2451. package/src/util/internals/console.ts +0 -0
  2452. package/src/util/internals/dom_style.spec.ts +0 -0
  2453. package/src/util/internals/dom_style.ts +0 -0
  2454. package/src/util/internals/findRight.ts +0 -0
  2455. package/src/util/internals/getRandomInt.test.ts +0 -0
  2456. package/src/util/internals/getRandomInt.ts +0 -0
  2457. package/src/util/internals/ifNaN.ts +0 -0
  2458. package/src/util/internals/removeFromArray.spec.ts +0 -0
  2459. package/src/util/internals/removeFromArray.ts +0 -0
  2460. package/src/util/internals/uid.ts +0 -0
  2461. package/src/util/lang_string.spec.ts +0 -0
  2462. package/src/util/lang_string.ts +0 -0
  2463. package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
  2464. package/src/util/misc/boundingBoxFromPoints.ts +0 -0
  2465. package/src/util/misc/capValue.spec.ts +0 -0
  2466. package/src/util/misc/capValue.ts +0 -0
  2467. package/src/util/misc/cornerRadius.spec.ts +0 -0
  2468. package/src/util/misc/cornerRadius.ts +0 -0
  2469. package/src/util/misc/cos.spec.ts +0 -0
  2470. package/src/util/misc/cos.ts +0 -0
  2471. package/src/util/misc/dom.spec.ts +0 -0
  2472. package/src/util/misc/dom.ts +0 -0
  2473. package/src/util/misc/findScaleTo.spec.ts +0 -0
  2474. package/src/util/misc/findScaleTo.ts +0 -0
  2475. package/src/util/misc/groupSVGElements.spec.ts +0 -0
  2476. package/src/util/misc/groupSVGElements.ts +0 -0
  2477. package/src/util/misc/isTransparent.ts +0 -0
  2478. package/src/util/misc/matrix.spec.ts +0 -0
  2479. package/src/util/misc/matrix.ts +0 -0
  2480. package/src/util/misc/mergeClipPaths.spec.ts +0 -0
  2481. package/src/util/misc/mergeClipPaths.ts +0 -0
  2482. package/src/util/misc/objectEnlive.spec.ts +0 -0
  2483. package/src/util/misc/objectEnlive.ts +0 -0
  2484. package/src/util/misc/objectTransforms.spec.ts +0 -0
  2485. package/src/util/misc/objectTransforms.ts +0 -0
  2486. package/src/util/misc/pick.spec.ts +0 -0
  2487. package/src/util/misc/pick.ts +0 -0
  2488. package/src/util/misc/planeChange.spec.ts +0 -0
  2489. package/src/util/misc/planeChange.ts +0 -0
  2490. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
  2491. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
  2492. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
  2493. package/src/util/misc/projectStroke/index.ts +0 -0
  2494. package/src/util/misc/projectStroke/types.ts +0 -0
  2495. package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
  2496. package/src/util/misc/radiansDegreesConversion.ts +0 -0
  2497. package/src/util/misc/resolveOrigin.ts +0 -0
  2498. package/src/util/misc/sin.ts +0 -0
  2499. package/src/util/misc/svgExport.ts +0 -0
  2500. package/src/util/misc/svgParsing.spec.ts +0 -0
  2501. package/src/util/misc/svgParsing.ts +0 -0
  2502. package/src/util/misc/textStyles.ts +0 -0
  2503. package/src/util/misc/toFixed.spec.ts +0 -0
  2504. package/src/util/misc/toFixed.ts +0 -0
  2505. package/src/util/misc/vectors.spec.ts +0 -0
  2506. package/src/util/misc/vectors.ts +0 -0
  2507. package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
  2508. package/src/util/path/index.spec.ts +0 -0
  2509. package/src/util/path/index.ts +0 -0
  2510. package/src/util/path/regex.ts +0 -0
  2511. package/src/util/path/typechecks.ts +0 -0
  2512. package/src/util/path/typedefs.ts +0 -0
  2513. package/src/util/transform_matrix_removal.ts +0 -0
  2514. package/src/util/typeAssertions.spec.ts +0 -0
  2515. package/src/util/typeAssertions.ts +0 -0
  2516. package/tsconfig-extensions.json +0 -0
  2517. package/tsconfig.json +0 -0
  2518. package/tsconfig.spec.json +0 -0
  2519. package/typedoc.config.json +0 -0
  2520. package/vitest.config.ts +0 -0
  2521. package/vitest.d.ts +0 -0
  2522. package/vitest.env.d.ts +0 -0
  2523. package/vitest.extend.ts +0 -0
  2524. package/vitest.setup.ts +0 -0
  2525. package/.playwright-mcp/after-justify-applied.png +0 -0
  2526. package/.playwright-mcp/after-justify-click.png +0 -0
  2527. package/.playwright-mcp/initial-state.png +0 -0
  2528. package/.playwright-mcp/justify-fixed-final.png +0 -0
  2529. package/45.6875Textbox.ts +0 -0
  2530. package/dist/src/text/examples/arabicTextExample.d.ts +0 -60
  2531. package/dist/src/text/examples/arabicTextExample.d.ts.map +0 -1
  2532. package/dist/src/text/scriptUtils.d.ts +0 -142
  2533. package/dist/src/text/scriptUtils.d.ts.map +0 -1
  2534. package/dist/src/text/scriptUtils.min.mjs +0 -2
  2535. package/dist/src/text/scriptUtils.min.mjs.map +0 -1
  2536. package/dist/src/text/scriptUtils.mjs +0 -212
  2537. package/dist/src/text/scriptUtils.mjs.map +0 -1
  2538. package/dist-extensions/src/shapes/CustomLine.d.ts +0 -10
  2539. package/dist-extensions/src/shapes/CustomLine.d.ts.map +0 -1
  2540. package/dist-extensions/src/text/scriptUtils.d.ts +0 -142
  2541. package/dist-extensions/src/text/scriptUtils.d.ts.map +0 -1
  2542. package/fabric-test-editor.html +0 -3552
  2543. package/fabric-test2.html +0 -647
@@ -1 +1 @@
1
- {"version":3,"file":"overlayEditor.mjs","sources":["../../../src/text/overlayEditor.ts"],"sourcesContent":["/**\r\n * Canva/Polotno-style Overlay Text Editor\r\n *\r\n * Provides seamless inline text editing using an HTML textarea overlay\r\n * that matches canvas text positioning, styling, and transformations.\r\n */\r\n\r\nimport type { Canvas } from '../canvas/Canvas';\r\nimport type { FabricText } from '../shapes/Text/Text';\r\nimport type { IText } from '../shapes/IText/IText';\r\nimport type { Textbox } from '../shapes/Textbox';\r\nimport type { TPointerEventInfo } from '../EventTypeDefs';\r\nimport type { TMat2D } from '../typedefs';\r\nimport { transformPoint } from '../util/misc/matrix';\r\n\r\nexport interface OverlayEditorOptions {\r\n canvas: Canvas;\r\n target: FabricText | IText | Textbox;\r\n onCommit?: (text: string) => void;\r\n onCancel?: () => void;\r\n}\r\n\r\nexport interface ScreenTransform {\r\n translateX: number;\r\n translateY: number;\r\n scaleX: number;\r\n scaleY: number;\r\n angle: number; // in radians\r\n}\r\n\r\nexport class OverlayEditor {\r\n private canvas: Canvas;\r\n private target: FabricText | IText | Textbox;\r\n private container: HTMLElement;\r\n private textarea: HTMLTextAreaElement;\r\n private hostDiv: HTMLDivElement;\r\n private isDestroyed = false;\r\n private isComposing = false;\r\n private lastText: string;\r\n private onCommit?: (text: string) => void;\r\n private onCancel?: () => void;\r\n\r\n // Bound event handlers for cleanup\r\n private boundHandlers = {\r\n onInput: this.handleInput.bind(this),\r\n onKeyDown: this.handleKeyDown.bind(this),\r\n onBlur: this.handleBlur.bind(this),\r\n onCompositionStart: this.handleCompositionStart.bind(this),\r\n onCompositionEnd: this.handleCompositionEnd.bind(this),\r\n onAfterRender: this.handleAfterRender.bind(this),\r\n onMouseWheel: this.handleMouseWheel.bind(this),\r\n onFocus: this.handleFocus.bind(this),\r\n onMouseDown: this.handleMouseDown.bind(this),\r\n };\r\n\r\n constructor(options: OverlayEditorOptions) {\r\n this.canvas = options.canvas;\r\n this.target = options.target;\r\n this.onCommit = options.onCommit;\r\n this.onCancel = options.onCancel;\r\n this.lastText = this.target.text || '';\r\n\r\n this.container = this.getCanvasContainer();\r\n this.createOverlayDOM();\r\n this.attachEventListeners();\r\n this.refresh();\r\n this.focusTextarea();\r\n\r\n // Note: Don't manage object cursors since IText manages all cursors in _saveEditingProps/_restoreEditingProps\r\n // The IText editing system handles hoverCursor, moveCursor, and canvas cursors properly\r\n\r\n // Note: Canvas cursors are handled by IText's _saveEditingProps/_restoreEditingProps\r\n // We don't need to save/restore them here as it would conflict with IText's restoration\r\n }\r\n\r\n /**\r\n * Get the container element for the overlay (parent of upperCanvasEl)\r\n */\r\n private getCanvasContainer(): HTMLElement {\r\n const upperCanvas = this.canvas.upperCanvasEl;\r\n const container = upperCanvas.parentElement;\r\n if (!container) {\r\n throw new Error('Canvas must be mounted in DOM to use overlay editing');\r\n }\r\n\r\n // Ensure the container is positioned for absolute overlay positioning\r\n container.style.position = 'relative';\r\n\r\n return container;\r\n }\r\n\r\n /**\r\n * Create the overlay DOM structure\r\n */\r\n private createOverlayDOM(): void {\r\n // Host div for positioning and overflow control\r\n this.hostDiv = document.createElement('div');\r\n this.hostDiv.style.position = 'absolute';\r\n this.hostDiv.style.pointerEvents = 'none';\r\n this.hostDiv.style.zIndex = '1000';\r\n this.hostDiv.style.transformOrigin = 'left top';\r\n\r\n // Textarea for actual text input\r\n this.textarea = document.createElement('textarea');\r\n this.textarea.style.position = 'absolute';\r\n this.textarea.style.left = '0';\r\n this.textarea.style.top = '0';\r\n this.textarea.style.margin = '0';\r\n this.textarea.style.resize = 'none';\r\n this.textarea.style.pointerEvents = 'auto';\r\n // Set appropriate unicodeBidi based on content and direction\r\n const hasArabicText =\r\n /[\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/.test(\r\n this.target.text || '',\r\n );\r\n const hasLatinText = /[a-zA-Z]/.test(this.target.text || '');\r\n const isLTRDirection = (this.target as any).direction === 'ltr';\r\n\r\n if (hasArabicText && hasLatinText && isLTRDirection) {\r\n // For mixed Arabic/Latin text in LTR mode, use embed for consistent line wrapping\r\n this.textarea.style.unicodeBidi = 'embed';\r\n } else if (hasArabicText && isLTRDirection) {\r\n // For Arabic text in LTR mode, use embed to preserve shaping while respecting direction\r\n this.textarea.style.unicodeBidi = 'embed';\r\n } else {\r\n // Default to plaintext for natural text flow\r\n this.textarea.style.unicodeBidi = 'plaintext';\r\n }\r\n this.textarea.style.caretColor = 'auto';\r\n\r\n // Polotno-like base\r\n this.textarea.style.border = 'none';\r\n this.textarea.style.padding = '0';\r\n this.textarea.style.background = 'transparent'; // Transparent so Fabric text shows through\r\n this.textarea.style.outline = 'none';\r\n this.textarea.style.overflow = 'hidden'; // Prevent scrollbars\r\n this.textarea.style.whiteSpace = 'pre-wrap';\r\n this.textarea.style.wordBreak = 'normal';\r\n this.textarea.style.overflowWrap = 'break-word';\r\n this.textarea.style.userSelect = 'text';\r\n this.textarea.style.textTransform = 'none';\r\n\r\n // Start visible - we'll handle transitions differently\r\n this.textarea.style.opacity = '1';\r\n\r\n // Set initial text\r\n this.textarea.value = this.target.text || '';\r\n\r\n this.hostDiv.appendChild(this.textarea);\r\n document.body.appendChild(this.hostDiv);\r\n }\r\n\r\n /**\r\n * Attach all event listeners\r\n */\r\n private attachEventListeners(): void {\r\n // Textarea events\r\n this.textarea.addEventListener('input', this.boundHandlers.onInput);\r\n this.textarea.addEventListener('keydown', this.boundHandlers.onKeyDown);\r\n this.textarea.addEventListener('blur', this.boundHandlers.onBlur);\r\n this.textarea.addEventListener(\r\n 'compositionstart',\r\n this.boundHandlers.onCompositionStart,\r\n );\r\n this.textarea.addEventListener(\r\n 'compositionend',\r\n this.boundHandlers.onCompositionEnd,\r\n );\r\n this.textarea.addEventListener('focus', this.boundHandlers.onFocus);\r\n\r\n // Canvas events for synchronization\r\n this.canvas.on('after:render', this.boundHandlers.onAfterRender);\r\n this.canvas.on('mouse:wheel', this.boundHandlers.onMouseWheel);\r\n this.canvas.on('mouse:down', this.boundHandlers.onMouseDown);\r\n\r\n // Store original methods to detect viewport changes\r\n this.setupViewportChangeDetection();\r\n }\r\n\r\n /**\r\n * Remove all event listeners\r\n */\r\n private removeEventListeners(): void {\r\n this.textarea.removeEventListener('input', this.boundHandlers.onInput);\r\n this.textarea.removeEventListener('keydown', this.boundHandlers.onKeyDown);\r\n this.textarea.removeEventListener('blur', this.boundHandlers.onBlur);\r\n this.textarea.removeEventListener(\r\n 'compositionstart',\r\n this.boundHandlers.onCompositionStart,\r\n );\r\n this.textarea.removeEventListener(\r\n 'compositionend',\r\n this.boundHandlers.onCompositionEnd,\r\n );\r\n this.textarea.removeEventListener('focus', this.boundHandlers.onFocus);\r\n\r\n this.canvas.off('after:render', this.boundHandlers.onAfterRender);\r\n this.canvas.off('mouse:wheel', this.boundHandlers.onMouseWheel);\r\n this.canvas.off('mouse:down', this.boundHandlers.onMouseDown);\r\n\r\n // Restore original methods\r\n this.restoreViewportChangeDetection();\r\n }\r\n\r\n /**\r\n * Simple method to refresh positioning when canvas changes\r\n */\r\n private updatePosition(): void {\r\n this.applyOverlayStyle();\r\n }\r\n\r\n /**\r\n * Update the Fabric object bounds to match current textarea size\r\n * This ensures Fabric.js selection controls follow the growing textbox\r\n */\r\n private updateObjectBounds(): void {\r\n if (this.isDestroyed) return;\r\n\r\n const target = this.target;\r\n const zoom = this.canvas.getZoom();\r\n\r\n // Get current textbox dimensions from the host div (in canvas coordinates)\r\n const currentWidth = parseFloat(this.hostDiv.style.width) / zoom;\r\n const currentHeight = parseFloat(this.hostDiv.style.height) / zoom;\r\n\r\n // Always update height for responsive controls (especially important for line deletion)\r\n const heightDiff = Math.abs(currentHeight - target.height);\r\n const threshold = 0.5; // Lower threshold for better responsiveness to line changes\r\n\r\n if (heightDiff > threshold) {\r\n const oldHeight = target.height;\r\n target.height = currentHeight;\r\n target.setCoords(); // Update control positions\r\n\r\n // Force dirty to ensure proper re-rendering\r\n target.dirty = true;\r\n this.canvas.requestRenderAll(); // Re-render to show updated selection\r\n\r\n // IMPORTANT: Reposition overlay after height change\r\n requestAnimationFrame(() => {\r\n if (!this.isDestroyed) {\r\n this.applyOverlayStyle();\r\n console.log(\r\n '📐 Height changed - rechecking alignment after repositioning:',\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Convert Fabric charSpacing (1/1000 em) to CSS letter-spacing (px)\r\n */\r\n private letterSpacingPx(charSpacing: number, fontSize: number): number {\r\n return (charSpacing / 1000) * fontSize;\r\n }\r\n\r\n /**\r\n * Detect text direction using first strong directional character\r\n */\r\n private firstStrongDir(text: string): 'ltr' | 'rtl' {\r\n // Hebrew: \\u0590-\\u05FF, Arabic: \\u0600-\\u06FF, \\u0750-\\u077F, \\uFB50-\\uFDFF, \\uFE70-\\uFEFF\r\n const rtlRegex =\r\n /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/;\r\n return rtlRegex.test(text) ? 'rtl' : 'ltr';\r\n }\r\n\r\n private applyOverlayStyle(): void {\r\n const target = this.target;\r\n const canvas = this.canvas;\r\n\r\n // 1. Freshen object's transformations - use aCoords like rtl-test.html\r\n target.setCoords();\r\n const aCoords = target.aCoords;\r\n\r\n // 2. Get canvas position and scroll offsets (like rtl-test.html)\r\n const canvasEl = canvas.upperCanvasEl;\r\n const canvasRect = canvasEl.getBoundingClientRect();\r\n const scrollX = window.scrollX || window.pageXOffset;\r\n const scrollY = window.scrollY || window.pageYOffset;\r\n\r\n // 3. Position and dimensions accounting for Fabric Textbox padding and viewport transform\r\n const zoom = canvas.getZoom();\r\n const vpt = canvas.viewportTransform;\r\n const padding = (target as any).padding || 0;\r\n const paddingX = padding * (target.scaleX || 1) * zoom;\r\n const paddingY = padding * (target.scaleY || 1) * zoom;\r\n\r\n // Transform object's top-left corner coordinates to screen coordinates using viewport transform\r\n // aCoords.tl already accounts for object positioning and scaling, just need viewport transform\r\n const screenPoint = transformPoint(\r\n { x: aCoords.tl.x, y: aCoords.tl.y },\r\n vpt,\r\n );\r\n\r\n const left = canvasRect.left + scrollX + screenPoint.x;\r\n const top = canvasRect.top + scrollY + screenPoint.y;\r\n\r\n // 4. Calculate the precise width and height for the container\r\n // **THE FIX:** Use getBoundingRect() for BOTH width and height.\r\n // This is the most reliable measure of the object's final rendered dimensions.\r\n const objectBounds = target.getBoundingRect();\r\n const width = Math.round(objectBounds.width * zoom);\r\n const height = Math.round(objectBounds.height * zoom);\r\n\r\n // 5. Apply styles to host DIV - absolute positioning like rtl-test.html\r\n this.hostDiv.style.position = 'absolute';\r\n this.hostDiv.style.left = `${left}px`;\r\n this.hostDiv.style.top = `${top}px`;\r\n this.hostDiv.style.width = `${width}px`;\r\n this.hostDiv.style.height = `${height}px`;\r\n this.hostDiv.style.overflow = 'hidden'; // Prevent scrollbars in host div\r\n // Apply rotation matching Fabric.js object transformation\r\n if (target.angle) {\r\n this.hostDiv.style.transform = `rotate(${target.angle}deg)`;\r\n this.hostDiv.style.transformOrigin = 'top left'; // Match Fabric Textbox behavior\r\n } else {\r\n this.hostDiv.style.transform = '';\r\n this.hostDiv.style.transformOrigin = '';\r\n }\r\n\r\n // 6. Style the textarea - match Fabric's exact rendering with padding\r\n const baseFontSize = target.fontSize ?? 16;\r\n // Use scaleX for font scaling to match Fabric text scaling exactly\r\n const scaleX = target.scaleX || 1;\r\n const finalFontSize = baseFontSize * scaleX * zoom;\r\n const fabricLineHeight = target.lineHeight || 1.16;\r\n // **THE FIX:** Use 'border-box' so the width property includes padding.\r\n // This makes alignment much easier and more reliable.\r\n this.textarea.style.boxSizing = 'border-box';\r\n\r\n // **THE FIX:** Set the textarea width to be IDENTICAL to the host div's width.\r\n // The padding will now be correctly contained *inside* this width.\r\n this.textarea.style.width = `${width}px`;\r\n this.textarea.style.height = '100%'; // Let hostDiv control height\r\n this.textarea.style.padding = `${paddingY}px ${paddingX}px`;\r\n\r\n // Apply all other font and text styles to match Fabric\r\n const letterSpacingPx = ((target.charSpacing || 0) / 1000) * finalFontSize;\r\n \r\n // Special handling for text objects loaded from JSON - ensure they're properly initialized\r\n if (target.dirty !== false && target.initDimensions) {\r\n console.log('🔧 Ensuring text object is properly initialized before overlay editing');\r\n // Force re-initialization if the text object seems to be in a dirty state\r\n target.initDimensions();\r\n }\r\n\r\n this.textarea.style.fontSize = `${finalFontSize}px`;\r\n this.textarea.style.lineHeight = String(fabricLineHeight);\r\n this.textarea.style.fontFamily = target.fontFamily || 'Arial';\r\n this.textarea.style.fontWeight = String(target.fontWeight || 'normal');\r\n this.textarea.style.fontStyle = target.fontStyle || 'normal';\r\n // Handle text alignment and justification\r\n const textAlign = (target as any).textAlign || 'left';\r\n let cssTextAlign = textAlign;\r\n \r\n // Detect text direction from content for proper justify handling\r\n const autoDetectedDirection = this.firstStrongDir(this.textarea.value || '');\r\n \r\n // DEBUG: Log alignment details\r\n console.log('🔍 ALIGNMENT DEBUG:');\r\n console.log(' Fabric textAlign:', textAlign);\r\n console.log(' Fabric direction:', (target as any).direction);\r\n console.log(' Text content:', JSON.stringify(target.text));\r\n console.log(' Detected direction:', autoDetectedDirection);\r\n \r\n // Map fabric.js justify to CSS\r\n if (textAlign.includes('justify')) {\r\n // Try to match fabric.js justify behavior more precisely\r\n try {\r\n // For justify, we need to replicate fabric.js space expansion\r\n // Use CSS justify but with specific settings to match fabric.js better\r\n cssTextAlign = 'justify';\r\n \r\n // Set text-align-last based on justify type and detected direction\r\n // Smart justify: respect detected direction even when fabric alignment doesn't match\r\n if (textAlign === 'justify') {\r\n this.textarea.style.textAlignLast = autoDetectedDirection === 'rtl' ? 'right' : 'left';\r\n } else if (textAlign === 'justify-left') {\r\n // If text is RTL but fabric says justify-left, override to justify-right for better UX\r\n if (autoDetectedDirection === 'rtl') {\r\n this.textarea.style.textAlignLast = 'right';\r\n console.log(' → Overrode justify-left to justify-right for RTL text');\r\n } else {\r\n this.textarea.style.textAlignLast = 'left';\r\n }\r\n } else if (textAlign === 'justify-right') {\r\n // If text is LTR but fabric says justify-right, override to justify-left for better UX \r\n if (autoDetectedDirection === 'ltr') {\r\n this.textarea.style.textAlignLast = 'left';\r\n console.log(' → Overrode justify-right to justify-left for LTR text');\r\n } else {\r\n this.textarea.style.textAlignLast = 'right';\r\n }\r\n } else if (textAlign === 'justify-center') {\r\n this.textarea.style.textAlignLast = 'center';\r\n }\r\n \r\n // Enhanced justify settings for better fabric.js matching\r\n (this.textarea.style as any).textJustify = 'inter-word';\r\n (this.textarea.style as any).wordSpacing = 'normal';\r\n \r\n // Additional CSS properties for better justify matching\r\n this.textarea.style.textAlign = 'justify';\r\n this.textarea.style.textAlignLast = this.textarea.style.textAlignLast;\r\n \r\n // Try to force better justify behavior\r\n (this.textarea.style as any).textJustifyTrim = 'none';\r\n (this.textarea.style as any).textAutospace = 'none';\r\n \r\n console.log(' → Applied justify alignment:', textAlign, 'with last-line:', this.textarea.style.textAlignLast);\r\n } catch (error) {\r\n console.warn(' → Justify setup failed, falling back to standard alignment:', error);\r\n cssTextAlign = textAlign.replace('justify-', '').replace('justify', 'left');\r\n }\r\n } else {\r\n this.textarea.style.textAlignLast = 'auto';\r\n (this.textarea.style as any).textJustify = 'auto';\r\n (this.textarea.style as any).wordSpacing = 'normal';\r\n console.log(' → Applied standard alignment:', cssTextAlign);\r\n }\r\n \r\n this.textarea.style.textAlign = cssTextAlign;\r\n this.textarea.style.color = target.fill?.toString() || '#000';\r\n this.textarea.style.letterSpacing = `${letterSpacingPx}px`;\r\n \r\n // Use the already detected direction from above\r\n const fabricDirection = (target as any).direction;\r\n \r\n // Use auto-detected direction for better BiDi support, but respect fabric direction if it makes sense\r\n this.textarea.style.direction = autoDetectedDirection || fabricDirection || 'ltr';\r\n this.textarea.style.fontVariant = 'normal';\r\n this.textarea.style.fontStretch = 'normal';\r\n this.textarea.style.textRendering = 'auto'; // Changed from 'optimizeLegibility' to match canvas\r\n this.textarea.style.fontKerning = 'normal';\r\n this.textarea.style.fontFeatureSettings = 'normal';\r\n this.textarea.style.fontVariationSettings = 'normal';\r\n this.textarea.style.margin = '0';\r\n this.textarea.style.border = 'none';\r\n this.textarea.style.outline = 'none';\r\n this.textarea.style.background = 'transparent';\r\n this.textarea.style.overflowWrap = 'break-word';\r\n this.textarea.style.whiteSpace = 'pre-wrap';\r\n this.textarea.style.hyphens = 'none';\r\n \r\n // DEBUG: Log final CSS properties\r\n console.log('🎨 FINAL TEXTAREA CSS:');\r\n console.log(' textAlign:', this.textarea.style.textAlign);\r\n console.log(' textAlignLast:', this.textarea.style.textAlignLast);\r\n console.log(' direction:', this.textarea.style.direction);\r\n console.log(' unicodeBidi:', this.textarea.style.unicodeBidi);\r\n console.log(' width:', this.textarea.style.width);\r\n console.log(' textJustify:', (this.textarea.style as any).textJustify);\r\n console.log(' wordSpacing:', (this.textarea.style as any).wordSpacing);\r\n console.log(' whiteSpace:', this.textarea.style.whiteSpace);\r\n \r\n // If justify, log Fabric object dimensions for comparison\r\n if (textAlign.includes('justify')) {\r\n console.log('🔧 FABRIC OBJECT JUSTIFY INFO:');\r\n console.log(' Fabric width:', (target as any).width);\r\n console.log(' Fabric calcTextWidth:', (target as any).calcTextWidth?.());\r\n console.log(' Fabric textAlign:', (target as any).textAlign);\r\n console.log(' Text lines:', (target as any).textLines);\r\n }\r\n \r\n // Debug font properties matching\r\n console.log('🔤 FONT PROPERTIES COMPARISON:');\r\n console.log(' Fabric fontFamily:', target.fontFamily);\r\n console.log(' Fabric fontWeight:', target.fontWeight);\r\n console.log(' Fabric fontStyle:', target.fontStyle);\r\n console.log(' Fabric fontSize:', target.fontSize);\r\n console.log(' → Textarea fontFamily:', this.textarea.style.fontFamily);\r\n console.log(' → Textarea fontWeight:', this.textarea.style.fontWeight);\r\n console.log(' → Textarea fontStyle:', this.textarea.style.fontStyle);\r\n console.log(' → Textarea fontSize:', this.textarea.style.fontSize);\r\n \r\n console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\r\n \r\n // Enhanced font rendering to better match fabric.js canvas rendering\r\n // Default to auto for more natural rendering\r\n (this.textarea.style as any).webkitFontSmoothing = 'auto';\r\n (this.textarea.style as any).mozOsxFontSmoothing = 'auto';\r\n (this.textarea.style as any).fontSmooth = 'auto';\r\n (this.textarea.style as any).textSizeAdjust = 'none';\r\n \r\n // For bold fonts, use subpixel rendering to match canvas thickness better\r\n const fontWeight = String(target.fontWeight || 'normal');\r\n const isBold = fontWeight === 'bold' || fontWeight === '700' || \r\n (parseInt(fontWeight) >= 600);\r\n \r\n if (isBold) {\r\n (this.textarea.style as any).webkitFontSmoothing = 'subpixel-antialiased';\r\n (this.textarea.style as any).mozOsxFontSmoothing = 'unset';\r\n console.log('🔤 Applied enhanced bold rendering for better thickness matching');\r\n }\r\n \r\n console.log('🎨 FONT SMOOTHING APPLIED:');\r\n console.log(' webkitFontSmoothing:', (this.textarea.style as any).webkitFontSmoothing);\r\n console.log(' mozOsxFontSmoothing:', (this.textarea.style as any).mozOsxFontSmoothing);\r\n\r\n\r\n // Initial bounds are set correctly by Fabric.js - don't force update here\r\n }\r\n\r\n /**\r\n * Debug method to compare textarea and canvas object bounding boxes\r\n */\r\n private debugBoundingBoxComparison(): void {\r\n const target = this.target;\r\n const canvas = this.canvas;\r\n const zoom = canvas.getZoom();\r\n\r\n // Get textarea bounding box (in screen coordinates)\r\n const textareaRect = this.textarea.getBoundingClientRect();\r\n const hostRect = this.hostDiv.getBoundingClientRect();\r\n\r\n // Get canvas object bounding box (in screen coordinates)\r\n const canvasBounds = target.getBoundingRect();\r\n const canvasRect = canvas.upperCanvasEl.getBoundingClientRect();\r\n\r\n // Convert canvas object bounds to screen coordinates\r\n const vpt = canvas.viewportTransform;\r\n const screenObjectBounds = {\r\n left: canvasRect.left + canvasBounds.left * zoom + vpt[4],\r\n top: canvasRect.top + canvasBounds.top * zoom + vpt[5],\r\n width: canvasBounds.width * zoom,\r\n height: canvasBounds.height * zoom,\r\n };\r\n\r\n console.log('🔍 BOUNDING BOX COMPARISON:');\r\n console.log('📦 Textarea Rect:', {\r\n left: Math.round(textareaRect.left * 100) / 100,\r\n top: Math.round(textareaRect.top * 100) / 100,\r\n width: Math.round(textareaRect.width * 100) / 100,\r\n height: Math.round(textareaRect.height * 100) / 100,\r\n });\r\n console.log('📦 Host Div Rect:', {\r\n left: Math.round(hostRect.left * 100) / 100,\r\n top: Math.round(hostRect.top * 100) / 100,\r\n width: Math.round(hostRect.width * 100) / 100,\r\n height: Math.round(hostRect.height * 100) / 100,\r\n });\r\n console.log('📦 Canvas Object Bounds (screen):', {\r\n left: Math.round(screenObjectBounds.left * 100) / 100,\r\n top: Math.round(screenObjectBounds.top * 100) / 100,\r\n width: Math.round(screenObjectBounds.width * 100) / 100,\r\n height: Math.round(screenObjectBounds.height * 100) / 100,\r\n });\r\n console.log('📦 Canvas Object Bounds (canvas):', canvasBounds);\r\n\r\n // Calculate differences\r\n const hostVsObject = {\r\n leftDiff:\r\n Math.round((hostRect.left - screenObjectBounds.left) * 100) / 100,\r\n topDiff: Math.round((hostRect.top - screenObjectBounds.top) * 100) / 100,\r\n widthDiff:\r\n Math.round((hostRect.width - screenObjectBounds.width) * 100) / 100,\r\n heightDiff:\r\n Math.round((hostRect.height - screenObjectBounds.height) * 100) / 100,\r\n };\r\n\r\n const textareaVsObject = {\r\n leftDiff:\r\n Math.round((textareaRect.left - screenObjectBounds.left) * 100) / 100,\r\n topDiff:\r\n Math.round((textareaRect.top - screenObjectBounds.top) * 100) / 100,\r\n widthDiff:\r\n Math.round((textareaRect.width - screenObjectBounds.width) * 100) / 100,\r\n heightDiff:\r\n Math.round((textareaRect.height - screenObjectBounds.height) * 100) /\r\n 100,\r\n };\r\n\r\n console.log('📏 Host Div vs Canvas Object Diff:', hostVsObject);\r\n console.log('📏 Textarea vs Canvas Object Diff:', textareaVsObject);\r\n\r\n // Check if they're aligned (within 2px tolerance)\r\n const tolerance = 2;\r\n const hostAligned =\r\n Math.abs(hostVsObject.leftDiff) < tolerance &&\r\n Math.abs(hostVsObject.topDiff) < tolerance &&\r\n Math.abs(hostVsObject.widthDiff) < tolerance &&\r\n Math.abs(hostVsObject.heightDiff) < tolerance;\r\n\r\n const textareaAligned =\r\n Math.abs(textareaVsObject.leftDiff) < tolerance &&\r\n Math.abs(textareaVsObject.topDiff) < tolerance &&\r\n Math.abs(textareaVsObject.widthDiff) < tolerance &&\r\n Math.abs(textareaVsObject.heightDiff) < tolerance;\r\n\r\n console.log(\r\n hostAligned\r\n ? '✅ Host Div ALIGNED with canvas object'\r\n : '❌ Host Div MISALIGNED with canvas object',\r\n );\r\n console.log(\r\n textareaAligned\r\n ? '✅ Textarea ALIGNED with canvas object'\r\n : '❌ Textarea MISALIGNED with canvas object',\r\n );\r\n console.log('🔍 Zoom:', zoom, 'Viewport Transform:', vpt);\r\n console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\r\n }\r\n\r\n /**\r\n * Debug method to compare text wrapping between textarea and Fabric text object\r\n */\r\n private debugTextWrapping(): void {\r\n const target = this.target;\r\n const text = this.textarea.value;\r\n\r\n console.log('📝 TEXT WRAPPING COMPARISON:');\r\n console.log('📄 Text Content:', `\"${text}\"`);\r\n console.log('📄 Text Length:', text.length);\r\n\r\n // Analyze line breaks\r\n const explicitLines = text.split('\\n');\r\n console.log('📄 Explicit Lines (\\\\n):', explicitLines.length);\r\n explicitLines.forEach((line, i) => {\r\n console.log(` Line ${i + 1}: \"${line}\" (${line.length} chars)`);\r\n });\r\n\r\n // Get textarea computed styles for wrapping analysis\r\n const textareaStyles = window.getComputedStyle(this.textarea);\r\n console.log('📐 Textarea Wrapping Styles:');\r\n console.log(' width:', textareaStyles.width);\r\n console.log(' fontSize:', textareaStyles.fontSize);\r\n console.log(' fontFamily:', textareaStyles.fontFamily);\r\n console.log(' fontWeight:', textareaStyles.fontWeight);\r\n console.log(' letterSpacing:', textareaStyles.letterSpacing);\r\n console.log(' lineHeight:', textareaStyles.lineHeight);\r\n console.log(' whiteSpace:', textareaStyles.whiteSpace);\r\n console.log(' wordWrap:', textareaStyles.wordWrap);\r\n console.log(' overflowWrap:', textareaStyles.overflowWrap);\r\n console.log(' direction:', textareaStyles.direction);\r\n console.log(' textAlign:', textareaStyles.textAlign);\r\n\r\n // Get Fabric text object properties for comparison\r\n console.log('📐 Fabric Text Object Properties:');\r\n console.log(' width:', (target as any).width);\r\n console.log(' fontSize:', target.fontSize);\r\n console.log(' fontFamily:', target.fontFamily);\r\n console.log(' fontWeight:', target.fontWeight);\r\n console.log(' charSpacing:', target.charSpacing);\r\n console.log(' lineHeight:', target.lineHeight);\r\n console.log(' direction:', (target as any).direction);\r\n console.log(' textAlign:', (target as any).textAlign);\r\n console.log(' scaleX:', target.scaleX);\r\n console.log(' scaleY:', target.scaleY);\r\n\r\n // Calculate effective dimensions for comparison - use actual rendered width\r\n // **THE FIX:** Use getBoundingRect to get the *actual rendered width* of the Fabric object.\r\n const fabricEffectiveWidth = this.target.getBoundingRect().width;\r\n // Use the exact width set on textarea for comparison\r\n const textareaComputedWidth = parseFloat(\r\n window.getComputedStyle(this.textarea).width,\r\n );\r\n const textareaEffectiveWidth =\r\n textareaComputedWidth / this.canvas.getZoom();\r\n const widthDiff = Math.abs(textareaEffectiveWidth - fabricEffectiveWidth);\r\n\r\n console.log('📏 Effective Width Comparison:');\r\n console.log(' Textarea Effective Width:', textareaEffectiveWidth);\r\n console.log(' Fabric Effective Width:', fabricEffectiveWidth);\r\n console.log(' Width Difference:', widthDiff.toFixed(2) + 'px');\r\n console.log(\r\n widthDiff < 1\r\n ? '✅ Widths MATCH for wrapping'\r\n : '❌ Width MISMATCH may cause different wrapping',\r\n );\r\n\r\n // Check text direction and bidi handling\r\n const hasRTLText =\r\n /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/.test(\r\n text,\r\n );\r\n const hasBidiText = /[\\u0590-\\u06FF]/.test(text) && /[a-zA-Z]/.test(text);\r\n\r\n console.log('🌍 Text Direction Analysis:');\r\n console.log(' Has RTL characters:', hasRTLText);\r\n console.log(' Has mixed Bidi text:', hasBidiText);\r\n console.log(' Textarea direction:', textareaStyles.direction);\r\n console.log(' Fabric direction:', (target as any).direction || 'auto');\r\n console.log(' Textarea unicodeBidi:', textareaStyles.unicodeBidi);\r\n\r\n // Measure actual rendered line count\r\n const textareaScrollHeight = this.textarea.scrollHeight;\r\n const textareaLineHeight =\r\n parseFloat(textareaStyles.lineHeight) ||\r\n parseFloat(textareaStyles.fontSize) * 1.2;\r\n const estimatedTextareaLines = Math.round(\r\n textareaScrollHeight / textareaLineHeight,\r\n );\r\n\r\n console.log('📊 Line Count Analysis:');\r\n console.log(' Textarea scrollHeight:', textareaScrollHeight);\r\n console.log(' Textarea lineHeight:', textareaLineHeight);\r\n console.log(' Estimated rendered lines:', estimatedTextareaLines);\r\n console.log(' Explicit line breaks:', explicitLines.length);\r\n\r\n if (estimatedTextareaLines > explicitLines.length) {\r\n console.log('🔄 Text wrapping detected in textarea');\r\n console.log(\r\n ' Wrapped lines:',\r\n estimatedTextareaLines - explicitLines.length,\r\n );\r\n } else {\r\n console.log('📏 No text wrapping in textarea');\r\n }\r\n\r\n console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\r\n }\r\n\r\n\r\n /**\r\n * Focus the textarea and position cursor at end\r\n */\r\n private focusTextarea(): void {\r\n // For overlay editing, we want to keep the object in \"selection mode\" not \"editing mode\"\r\n // This means keeping selected=true and isEditing=false to show boundaries\r\n\r\n // Hide the text content only (not the entire object)\r\n this.target.opacity = 0.01; // Nearly transparent but not fully hidden\r\n\r\n // Ensure object stays selected to show boundaries\r\n (this.target as any).selected = true;\r\n (this.target as any).isEditing = false; // Override any editing state\r\n\r\n // Make sure controls are enabled and movement is allowed during overlay editing\r\n this.target.set({\r\n hasControls: true,\r\n hasBorders: true,\r\n selectable: true,\r\n lockMovementX: false,\r\n lockMovementY: false,\r\n });\r\n\r\n // Keep as active object\r\n this.canvas.setActiveObject(this.target);\r\n\r\n this.canvas.requestRenderAll();\r\n this.target.setCoords();\r\n this.applyOverlayStyle();\r\n\r\n // Fix character mapping issues after JSON loading for browser-wrapped fonts\r\n if ((this.target as any)._fixCharacterMappingAfterJsonLoad) {\r\n (this.target as any)._fixCharacterMappingAfterJsonLoad();\r\n }\r\n\r\n this.textarea.focus();\r\n\r\n this.textarea.setSelectionRange(\r\n this.textarea.value.length,\r\n this.textarea.value.length,\r\n );\r\n\r\n // Ensure the object stays selected even after textarea focus\r\n this.canvas.setActiveObject(this.target);\r\n this.canvas.requestRenderAll();\r\n }\r\n\r\n /**\r\n * Refresh overlay positioning and styling\r\n */\r\n public refresh(): void {\r\n if (this.isDestroyed) return;\r\n this.updatePosition();\r\n // Don't update object bounds on every refresh - only when textarea actually resizes\r\n }\r\n\r\n /**\r\n * Destroy the overlay editor\r\n */\r\n public destroy(commit: boolean = true): void {\r\n if (this.isDestroyed) return;\r\n this.isDestroyed = true;\r\n\r\n this.removeEventListeners();\r\n\r\n // Restore target visibility before handling commit/cancel\r\n if ((this.target as any).__overlayEditor === this) {\r\n (this.target as any).__overlayEditor = undefined;\r\n\r\n // Restore original opacity\r\n if ((this.target as any).__overlayOriginalOpacity !== undefined) {\r\n this.target.opacity = (this.target as any).__overlayOriginalOpacity;\r\n delete (this.target as any).__overlayOriginalOpacity;\r\n }\r\n }\r\n\r\n // Remove DOM first\r\n if (this.hostDiv.parentNode) {\r\n this.hostDiv.parentNode.removeChild(this.hostDiv);\r\n }\r\n\r\n // Handle commit/cancel after restoring visibility\r\n if (commit && !this.isComposing) {\r\n const finalText = this.textarea.value;\r\n \r\n // Auto-detect text direction and update fabric object if needed\r\n const detectedDirection = this.firstStrongDir(finalText);\r\n const currentDirection = (this.target as any).direction || 'ltr';\r\n \r\n if (detectedDirection && detectedDirection !== currentDirection) {\r\n console.log(`🔄 Overlay Exit: Auto-detected direction change from \"${currentDirection}\" to \"${detectedDirection}\"`);\r\n console.log(` Text content: \"${finalText.substring(0, 50)}...\"`);\r\n \r\n // Update the fabric object's direction\r\n (this.target as any).set('direction', detectedDirection);\r\n \r\n // Force a re-render to apply the direction change\r\n this.canvas.requestRenderAll();\r\n \r\n console.log(`✅ Fabric object direction updated to: ${detectedDirection}`);\r\n } else {\r\n console.log(`📝 Overlay Exit: Direction unchanged (${currentDirection}), text: \"${finalText.substring(0, 30)}...\"`);\r\n }\r\n \r\n if (this.onCommit) {\r\n this.onCommit(finalText);\r\n }\r\n } else if (!commit && this.onCancel) {\r\n this.onCancel();\r\n }\r\n\r\n // Note: Don't restore object cursors since IText manages all cursors in _restoreEditingProps\r\n // Let the IText editing system handle proper restoration of all cursor properties\r\n\r\n // Note: Canvas cursors are restored by IText's _restoreEditingProps method\r\n // Force a cursor refresh by triggering _setCursorFromEvent\r\n setTimeout(() => {\r\n this.canvas.upperCanvasEl.style.cursor = '';\r\n // Trigger cursor refresh on next mouse move\r\n this.canvas.setCursor(this.canvas.defaultCursor);\r\n }, 0);\r\n\r\n // Request canvas re-render\r\n this.canvas.requestRenderAll();\r\n }\r\n\r\n // Event handlers\r\n private handleInput(): void {\r\n if (!this.isComposing && this.target.text !== this.textarea.value) {\r\n // Live update target text\r\n this.target.text = this.textarea.value;\r\n\r\n\r\n // Auto-resize textarea to match new content\r\n this.autoResizeTextarea();\r\n\r\n // Ensure object stays in selection mode (not editing mode) to show controls\r\n (this.target as any).selected = true;\r\n (this.target as any).isEditing = false;\r\n this.canvas.setActiveObject(this.target);\r\n this.canvas.requestRenderAll();\r\n }\r\n }\r\n\r\n private autoResizeTextarea(): void {\r\n // Store the scroll position and the container's old height for comparison.\r\n const scrollTop = this.textarea.scrollTop;\r\n const oldHeight = parseFloat(this.hostDiv.style.height || '0');\r\n\r\n // 1. **Force a reliable reflow.**\r\n // First, reset the textarea's height to a minimal value. This is the crucial step\r\n // that forces the browser to recalculate the content's height from scratch,\r\n // ignoring the hostDiv's larger, stale height.\r\n this.textarea.style.height = '1px';\r\n\r\n // 2. Read the now-accurate scrollHeight. This value reflects the minimum\r\n // height required for the content, whether it's single or multi-line.\r\n const scrollHeight = this.textarea.scrollHeight;\r\n\r\n // A small buffer for rendering consistency across browsers.\r\n const buffer = 2;\r\n const newHeight = scrollHeight + buffer;\r\n\r\n // Check if the height has changed significantly.\r\n const heightChanged = Math.abs(newHeight - oldHeight) > 1;\r\n\r\n // 4. Only update heights and object bounds if there was a change.\r\n if (heightChanged) {\r\n this.textarea.style.height = `${newHeight}px`;\r\n this.hostDiv.style.height = `${newHeight}px`;\r\n this.updateObjectBounds();\r\n } else {\r\n // If no significant change, ensure the textarea's height matches the container\r\n // to prevent any minor visual misalignment.\r\n this.textarea.style.height = this.hostDiv.style.height;\r\n }\r\n\r\n // 5. Restore the original scroll position.\r\n this.textarea.scrollTop = scrollTop;\r\n }\r\n\r\n private handleKeyDown(e: KeyboardEvent): void {\r\n if (e.key === 'Escape') {\r\n e.preventDefault();\r\n this.destroy(false); // Cancel\r\n } else if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\r\n e.preventDefault();\r\n this.destroy(true); // Commit\r\n } else if (\r\n e.key === 'Enter' ||\r\n e.key === 'Backspace' ||\r\n e.key === 'Delete'\r\n ) {\r\n // For keys that might change the height, schedule a resize check\r\n // Use both immediate and delayed checks to catch all scenarios\r\n requestAnimationFrame(() => {\r\n if (!this.isDestroyed) {\r\n this.autoResizeTextarea();\r\n }\r\n });\r\n setTimeout(() => {\r\n if (!this.isDestroyed) {\r\n this.autoResizeTextarea();\r\n }\r\n }, 10); // Small delay to ensure DOM is updated\r\n }\r\n }\r\n\r\n private handleFocus(): void {\r\n // Focus handler - could be used for future enhancements\r\n }\r\n\r\n private handleBlur(): void {\r\n // Commit on blur unless we're in composition mode\r\n if (!this.isComposing) {\r\n this.destroy(true);\r\n }\r\n }\r\n\r\n private handleCompositionStart(): void {\r\n this.isComposing = true;\r\n }\r\n\r\n private handleCompositionEnd(): void {\r\n this.isComposing = false;\r\n this.handleInput(); // Update text after composition\r\n }\r\n\r\n private handleAfterRender(): void {\r\n this.refresh();\r\n }\r\n\r\n private handleMouseWheel(): void {\r\n this.refresh();\r\n }\r\n\r\n private handleMouseDown(e: TPointerEventInfo): void {\r\n if (e.target !== this.target) {\r\n this.destroy(true);\r\n }\r\n }\r\n\r\n /**\r\n * Setup detection for viewport changes (zoom/pan)\r\n */\r\n private setupViewportChangeDetection(): void {\r\n // Store original methods\r\n (this.canvas as any).__originalSetZoom = this.canvas.setZoom;\r\n (this.canvas as any).__originalSetViewportTransform =\r\n this.canvas.setViewportTransform;\r\n (this.canvas as any).__overlayEditor = this;\r\n\r\n // Override setZoom to detect zoom changes\r\n const originalSetZoom = this.canvas.setZoom.bind(this.canvas);\r\n this.canvas.setZoom = (value: number) => {\r\n const result = originalSetZoom(value);\r\n if ((this.canvas as any).__overlayEditor && !this.isDestroyed) {\r\n this.refresh();\r\n }\r\n return result;\r\n };\r\n\r\n // Override setViewportTransform to detect pan changes\r\n const originalSetViewportTransform = this.canvas.setViewportTransform.bind(\r\n this.canvas,\r\n );\r\n this.canvas.setViewportTransform = (vpt: TMat2D) => {\r\n const result = originalSetViewportTransform(vpt);\r\n if ((this.canvas as any).__overlayEditor && !this.isDestroyed) {\r\n this.refresh();\r\n }\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * Restore original viewport methods\r\n */\r\n private restoreViewportChangeDetection(): void {\r\n if ((this.canvas as any).__originalSetZoom) {\r\n this.canvas.setZoom = (this.canvas as any).__originalSetZoom;\r\n delete (this.canvas as any).__originalSetZoom;\r\n }\r\n if ((this.canvas as any).__originalSetViewportTransform) {\r\n this.canvas.setViewportTransform = (\r\n this.canvas as any\r\n ).__originalSetViewportTransform;\r\n delete (this.canvas as any).__originalSetViewportTransform;\r\n }\r\n delete (this.canvas as any).__overlayEditor;\r\n }\r\n}\r\n\r\n/**\r\n * Enter overlay text editing mode for a text object\r\n */\r\nexport function enterTextOverlayEdit(\r\n canvas: Canvas,\r\n target: FabricText | IText | Textbox,\r\n options?: {\r\n onCommit?: (text: string) => void;\r\n onCancel?: () => void;\r\n },\r\n): OverlayEditor {\r\n // If already in overlay editing, destroy existing editor first\r\n if ((target as any).__overlayEditor) {\r\n (target as any).__overlayEditor.destroy(false);\r\n }\r\n\r\n // Store original opacity so we can restore it later\r\n (target as any).__overlayOriginalOpacity = target.opacity;\r\n\r\n const editor = new OverlayEditor({\r\n canvas,\r\n target,\r\n onCommit: options?.onCommit,\r\n onCancel: options?.onCancel,\r\n });\r\n\r\n // We no longer change fill, so no need to store it\r\n\r\n // Store reference on target for cleanup\r\n (target as any).__overlayEditor = editor;\r\n\r\n return editor;\r\n}\r\n\r\n/**\r\n * Check if a text object is currently being edited with overlay editor\r\n */\r\nexport function isInOverlayEdit(target: FabricText | IText | Textbox): boolean {\r\n return !!(target as any).__overlayEditor?.isActive;\r\n}\r\n"],"names":["OverlayEditor","constructor","options","_defineProperty","onInput","handleInput","bind","onKeyDown","handleKeyDown","onBlur","handleBlur","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","onAfterRender","handleAfterRender","onMouseWheel","handleMouseWheel","onFocus","handleFocus","onMouseDown","handleMouseDown","canvas","target","onCommit","onCancel","lastText","text","container","getCanvasContainer","createOverlayDOM","attachEventListeners","refresh","focusTextarea","upperCanvas","upperCanvasEl","parentElement","Error","style","position","hostDiv","document","createElement","pointerEvents","zIndex","transformOrigin","textarea","left","top","margin","resize","hasArabicText","test","hasLatinText","isLTRDirection","direction","unicodeBidi","caretColor","border","padding","background","outline","overflow","whiteSpace","wordBreak","overflowWrap","userSelect","textTransform","opacity","value","appendChild","body","addEventListener","boundHandlers","on","setupViewportChangeDetection","removeEventListeners","removeEventListener","off","restoreViewportChangeDetection","updatePosition","applyOverlayStyle","updateObjectBounds","isDestroyed","zoom","getZoom","parseFloat","width","currentHeight","height","heightDiff","Math","abs","threshold","setCoords","dirty","requestRenderAll","requestAnimationFrame","console","log","letterSpacingPx","charSpacing","fontSize","firstStrongDir","rtlRegex","_target$fontSize","_target$fill","aCoords","canvasEl","canvasRect","getBoundingClientRect","scrollX","window","pageXOffset","scrollY","pageYOffset","vpt","viewportTransform","paddingX","scaleX","paddingY","scaleY","screenPoint","transformPoint","x","tl","y","objectBounds","getBoundingRect","round","angle","transform","baseFontSize","finalFontSize","fabricLineHeight","lineHeight","boxSizing","initDimensions","String","fontFamily","fontWeight","fontStyle","textAlign","cssTextAlign","autoDetectedDirection","JSON","stringify","includes","textAlignLast","textJustify","wordSpacing","textJustifyTrim","textAutospace","error","warn","replace","color","fill","toString","letterSpacing","fabricDirection","fontVariant","fontStretch","textRendering","fontKerning","fontFeatureSettings","fontVariationSettings","hyphens","_calcTextWidth","_ref","calcTextWidth","call","textLines","webkitFontSmoothing","mozOsxFontSmoothing","fontSmooth","textSizeAdjust","isBold","parseInt","debugBoundingBoxComparison","textareaRect","hostRect","canvasBounds","screenObjectBounds","hostVsObject","leftDiff","topDiff","widthDiff","textareaVsObject","tolerance","hostAligned","textareaAligned","debugTextWrapping","length","explicitLines","split","forEach","line","i","textareaStyles","getComputedStyle","wordWrap","fabricEffectiveWidth","textareaComputedWidth","textareaEffectiveWidth","toFixed","hasRTLText","hasBidiText","textareaScrollHeight","scrollHeight","textareaLineHeight","estimatedTextareaLines","selected","isEditing","set","hasControls","hasBorders","selectable","lockMovementX","lockMovementY","setActiveObject","_fixCharacterMappingAfterJsonLoad","focus","setSelectionRange","destroy","commit","arguments","undefined","__overlayEditor","__overlayOriginalOpacity","parentNode","removeChild","isComposing","finalText","detectedDirection","currentDirection","substring","setTimeout","cursor","setCursor","defaultCursor","autoResizeTextarea","scrollTop","oldHeight","buffer","newHeight","heightChanged","e","key","preventDefault","ctrlKey","metaKey","__originalSetZoom","setZoom","__originalSetViewportTransform","setViewportTransform","originalSetZoom","result","originalSetViewportTransform","enterTextOverlayEdit","editor"],"mappings":"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"}
1
+ {"version":3,"file":"overlayEditor.mjs","sources":["../../../src/text/overlayEditor.ts"],"sourcesContent":["/**\n * Canva/Polotno-style Overlay Text Editor\n *\n * Provides seamless inline text editing using an HTML textarea overlay\n * that matches canvas text positioning, styling, and transformations.\n */\n\nimport type { Canvas } from '../canvas/Canvas';\nimport type { FabricText } from '../shapes/Text/Text';\nimport type { IText } from '../shapes/IText/IText';\nimport type { Textbox } from '../shapes/Textbox';\nimport type { TPointerEventInfo } from '../EventTypeDefs';\nimport type { TMat2D } from '../typedefs';\nimport { transformPoint } from '../util/misc/matrix';\nimport { extractLinesFromDOM } from './browserLines';\n\nexport interface OverlayEditorOptions {\n canvas: Canvas;\n target: FabricText | IText | Textbox;\n onCommit?: (text: string) => void;\n onCancel?: () => void;\n}\n\nexport interface ScreenTransform {\n translateX: number;\n translateY: number;\n scaleX: number;\n scaleY: number;\n angle: number; // in radians\n}\n\nexport class OverlayEditor {\n private canvas: Canvas;\n private target: FabricText | IText | Textbox;\n private container: HTMLElement;\n private textarea: HTMLTextAreaElement;\n private hostDiv: HTMLDivElement;\n private isDestroyed = false;\n private isComposing = false;\n private lastText: string;\n private onCommit?: (text: string) => void;\n private onCancel?: () => void;\n\n // Bound event handlers for cleanup\n private boundHandlers = {\n onInput: this.handleInput.bind(this),\n onKeyDown: this.handleKeyDown.bind(this),\n onBlur: this.handleBlur.bind(this),\n onCompositionStart: this.handleCompositionStart.bind(this),\n onCompositionEnd: this.handleCompositionEnd.bind(this),\n onAfterRender: this.handleAfterRender.bind(this),\n onMouseWheel: this.handleMouseWheel.bind(this),\n onFocus: this.handleFocus.bind(this),\n onMouseDown: this.handleMouseDown.bind(this),\n };\n\n constructor(options: OverlayEditorOptions) {\n this.canvas = options.canvas;\n this.target = options.target;\n this.onCommit = options.onCommit;\n this.onCancel = options.onCancel;\n this.lastText = this.target.text || '';\n\n this.container = this.getCanvasContainer();\n this.createOverlayDOM();\n this.attachEventListeners();\n this.refresh();\n this.focusTextarea();\n\n // Note: Don't manage object cursors since IText manages all cursors in _saveEditingProps/_restoreEditingProps\n // The IText editing system handles hoverCursor, moveCursor, and canvas cursors properly\n\n // Note: Canvas cursors are handled by IText's _saveEditingProps/_restoreEditingProps\n // We don't need to save/restore them here as it would conflict with IText's restoration\n }\n\n /**\n * Get the container element for the overlay (parent of upperCanvasEl)\n */\n private getCanvasContainer(): HTMLElement {\n const upperCanvas = this.canvas.upperCanvasEl;\n const container = upperCanvas.parentElement;\n if (!container) {\n throw new Error('Canvas must be mounted in DOM to use overlay editing');\n }\n\n // Ensure the container is positioned for absolute overlay positioning\n container.style.position = 'relative';\n\n return container;\n }\n\n /**\n * Create the overlay DOM structure\n */\n private createOverlayDOM(): void {\n // Host div for positioning and overflow control\n this.hostDiv = document.createElement('div');\n this.hostDiv.style.position = 'absolute';\n this.hostDiv.style.pointerEvents = 'none';\n this.hostDiv.style.zIndex = '1000';\n this.hostDiv.style.transformOrigin = 'left top';\n\n // Textarea for actual text input\n this.textarea = document.createElement('textarea');\n this.textarea.style.position = 'absolute';\n this.textarea.style.left = '0';\n this.textarea.style.top = '0';\n this.textarea.style.margin = '0';\n this.textarea.style.resize = 'none';\n this.textarea.style.pointerEvents = 'auto';\n // Set appropriate unicodeBidi based on content and direction\n const hasArabicText =\n /[\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/.test(\n this.target.text || '',\n );\n const hasLatinText = /[a-zA-Z]/.test(this.target.text || '');\n const isLTRDirection = (this.target as any).direction === 'ltr';\n\n if (hasArabicText && hasLatinText && isLTRDirection) {\n // For mixed Arabic/Latin text in LTR mode, use embed for consistent line wrapping\n this.textarea.style.unicodeBidi = 'embed';\n } else if (hasArabicText && isLTRDirection) {\n // For Arabic text in LTR mode, use embed to preserve shaping while respecting direction\n this.textarea.style.unicodeBidi = 'embed';\n } else {\n // Default to plaintext for natural text flow\n this.textarea.style.unicodeBidi = 'plaintext';\n }\n this.textarea.style.caretColor = 'auto';\n\n // Polotno-like base\n this.textarea.style.border = 'none';\n this.textarea.style.padding = '0';\n this.textarea.style.background = 'transparent'; // Transparent so Fabric text shows through\n this.textarea.style.outline = 'none';\n this.textarea.style.overflow = 'hidden'; // Prevent scrollbars\n this.textarea.style.whiteSpace = 'pre-wrap';\n this.textarea.style.wordBreak = 'normal';\n this.textarea.style.overflowWrap = 'break-word';\n this.textarea.style.userSelect = 'text';\n this.textarea.style.textTransform = 'none';\n\n // Start visible - we'll handle transitions differently\n this.textarea.style.opacity = '1';\n\n // Set initial text\n this.textarea.value = this.target.text || '';\n\n this.hostDiv.appendChild(this.textarea);\n document.body.appendChild(this.hostDiv);\n }\n\n /**\n * Attach all event listeners\n */\n private attachEventListeners(): void {\n // Textarea events\n this.textarea.addEventListener('input', this.boundHandlers.onInput);\n this.textarea.addEventListener('keydown', this.boundHandlers.onKeyDown);\n this.textarea.addEventListener('blur', this.boundHandlers.onBlur);\n this.textarea.addEventListener(\n 'compositionstart',\n this.boundHandlers.onCompositionStart,\n );\n this.textarea.addEventListener(\n 'compositionend',\n this.boundHandlers.onCompositionEnd,\n );\n this.textarea.addEventListener('focus', this.boundHandlers.onFocus);\n\n // Canvas events for synchronization\n this.canvas.on('after:render', this.boundHandlers.onAfterRender);\n this.canvas.on('mouse:wheel', this.boundHandlers.onMouseWheel);\n this.canvas.on('mouse:down', this.boundHandlers.onMouseDown);\n\n // Store original methods to detect viewport changes\n this.setupViewportChangeDetection();\n }\n\n /**\n * Remove all event listeners\n */\n private removeEventListeners(): void {\n this.textarea.removeEventListener('input', this.boundHandlers.onInput);\n this.textarea.removeEventListener('keydown', this.boundHandlers.onKeyDown);\n this.textarea.removeEventListener('blur', this.boundHandlers.onBlur);\n this.textarea.removeEventListener(\n 'compositionstart',\n this.boundHandlers.onCompositionStart,\n );\n this.textarea.removeEventListener(\n 'compositionend',\n this.boundHandlers.onCompositionEnd,\n );\n this.textarea.removeEventListener('focus', this.boundHandlers.onFocus);\n\n this.canvas.off('after:render', this.boundHandlers.onAfterRender);\n this.canvas.off('mouse:wheel', this.boundHandlers.onMouseWheel);\n this.canvas.off('mouse:down', this.boundHandlers.onMouseDown);\n\n // Restore original methods\n this.restoreViewportChangeDetection();\n }\n\n /**\n * Simple method to refresh positioning when canvas changes\n */\n private updatePosition(): void {\n this.applyOverlayStyle();\n }\n\n /**\n * Update the Fabric object bounds to match current textarea size\n * This ensures Fabric.js selection controls follow the growing textbox\n */\n private updateObjectBounds(): void {\n if (this.isDestroyed) return;\n\n const target = this.target;\n const zoom = this.canvas.getZoom();\n\n // Get current textbox dimensions from the host div (in canvas coordinates)\n const currentWidth = parseFloat(this.hostDiv.style.width) / zoom;\n const currentHeight = parseFloat(this.hostDiv.style.height) / zoom;\n\n // Always update height for responsive controls (especially important for line deletion)\n const heightDiff = Math.abs(currentHeight - target.height);\n const threshold = 0.5; // Lower threshold for better responsiveness to line changes\n\n if (heightDiff > threshold) {\n const oldHeight = target.height;\n target.height = currentHeight;\n target.setCoords(); // Update control positions\n\n // Force dirty to ensure proper re-rendering\n target.dirty = true;\n this.canvas.requestRenderAll(); // Re-render to show updated selection\n\n // IMPORTANT: Reposition overlay after height change\n requestAnimationFrame(() => {\n if (!this.isDestroyed) {\n this.applyOverlayStyle();\n console.log(\n '📐 Height changed - rechecking alignment after repositioning:',\n );\n }\n });\n }\n }\n\n /**\n * Convert Fabric charSpacing (1/1000 em) to CSS letter-spacing (px)\n */\n private letterSpacingPx(charSpacing: number, fontSize: number): number {\n return (charSpacing / 1000) * fontSize;\n }\n\n /**\n * Detect text direction using first strong directional character\n */\n private firstStrongDir(text: string): 'ltr' | 'rtl' {\n // Hebrew: \\u0590-\\u05FF, Arabic: \\u0600-\\u06FF, \\u0750-\\u077F, \\uFB50-\\uFDFF, \\uFE70-\\uFEFF\n const rtlRegex =\n /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/;\n return rtlRegex.test(text) ? 'rtl' : 'ltr';\n }\n\n private applyOverlayStyle(): void {\n const target = this.target;\n const canvas = this.canvas;\n\n // 1. Freshen object's transformations - use aCoords like rtl-test.html\n target.setCoords();\n const aCoords = target.aCoords;\n\n // 2. Get canvas position and scroll offsets (like rtl-test.html)\n const canvasEl = canvas.upperCanvasEl;\n const canvasRect = canvasEl.getBoundingClientRect();\n const scrollX = window.scrollX || window.pageXOffset;\n const scrollY = window.scrollY || window.pageYOffset;\n\n // 3. Position and dimensions accounting for Fabric Textbox padding and viewport transform\n const zoom = canvas.getZoom();\n const vpt = canvas.viewportTransform;\n const padding = (target as any).padding || 0;\n const paddingX = padding * (target.scaleX || 1) * zoom;\n const paddingY = padding * (target.scaleY || 1) * zoom;\n\n // Transform object's top-left corner coordinates to screen coordinates using viewport transform\n // aCoords.tl already accounts for object positioning and scaling, just need viewport transform\n const screenPoint = transformPoint(\n { x: aCoords.tl.x, y: aCoords.tl.y },\n vpt,\n );\n\n const left = canvasRect.left + scrollX + screenPoint.x;\n const top = canvasRect.top + scrollY + screenPoint.y;\n\n // 4. Calculate the precise width and height for the container\n // **THE FIX:** Use the same width calculation as measureLinesWithBrowser for consistency\n const objectBounds = target.getBoundingRect();\n const scaleX = target.scaleX || 1;\n const width = Math.round(\n ((target as any).width * scaleX + padding * 2) * zoom,\n );\n const height = Math.round(objectBounds.height * zoom);\n\n // 5. Apply styles to host DIV - absolute positioning like rtl-test.html\n this.hostDiv.style.position = 'absolute';\n this.hostDiv.style.left = `${left}px`;\n this.hostDiv.style.top = `${top}px`;\n this.hostDiv.style.width = `${width}px`;\n this.hostDiv.style.height = `${height}px`;\n this.hostDiv.style.overflow = 'hidden'; // Prevent scrollbars in host div\n // Apply rotation matching Fabric.js object transformation\n if (target.angle) {\n this.hostDiv.style.transform = `rotate(${target.angle}deg)`;\n this.hostDiv.style.transformOrigin = 'top left'; // Match Fabric Textbox behavior\n } else {\n this.hostDiv.style.transform = '';\n this.hostDiv.style.transformOrigin = '';\n }\n\n // 6. Style the textarea - match Fabric's exact rendering with padding\n const baseFontSize = target.fontSize ?? 16;\n // Use scaleX for font scaling to match Fabric text scaling exactly\n const finalFontSize = baseFontSize * scaleX * zoom;\n const fabricLineHeight = target.lineHeight || 1.16;\n // **THE FIX:** Use 'border-box' so the width property includes padding.\n // This makes alignment much easier and more reliable.\n this.textarea.style.boxSizing = 'border-box';\n\n // **THE FIX:** Set the textarea width to be IDENTICAL to the host div's width.\n // The padding will now be correctly contained *inside* this width.\n this.textarea.style.width = `${width}px`;\n this.textarea.style.height = '100%'; // Let hostDiv control height\n this.textarea.style.padding = `${paddingY}px ${paddingX}px`;\n\n // Apply all other font and text styles to match Fabric\n const letterSpacingPx = ((target.charSpacing || 0) / 1000) * finalFontSize;\n\n // Special handling for text objects loaded from JSON - ensure they're properly initialized\n if (target.dirty !== false && target.initDimensions) {\n console.log(\n '🔧 Ensuring text object is properly initialized before overlay editing',\n );\n // Force re-initialization if the text object seems to be in a dirty state\n target.initDimensions();\n }\n\n this.textarea.style.fontSize = `${finalFontSize}px`;\n this.textarea.style.lineHeight = String(fabricLineHeight);\n this.textarea.style.fontFamily = target.fontFamily || 'Arial';\n this.textarea.style.fontWeight = String(target.fontWeight || 'normal');\n this.textarea.style.fontStyle = target.fontStyle || 'normal';\n // Handle text alignment and justification\n const textAlign = (target as any).textAlign || 'left';\n let cssTextAlign = textAlign;\n\n // Detect text direction from content for proper justify handling\n const autoDetectedDirection = this.firstStrongDir(\n this.textarea.value || '',\n );\n\n // DEBUG: Log alignment details\n console.log('🔍 ALIGNMENT DEBUG:');\n console.log(' Fabric textAlign:', textAlign);\n console.log(' Fabric direction:', (target as any).direction);\n console.log(' Text content:', JSON.stringify(target.text));\n console.log(' Detected direction:', autoDetectedDirection);\n\n // Map fabric.js justify to CSS\n if (textAlign.includes('justify')) {\n // Try to match fabric.js justify behavior more precisely\n try {\n // For justify, we need to replicate fabric.js space expansion\n // Use CSS justify but with specific settings to match fabric.js better\n cssTextAlign = 'justify';\n\n // Set text-align-last based on justify type and detected direction\n // Smart justify: respect detected direction even when fabric alignment doesn't match\n if (textAlign === 'justify') {\n this.textarea.style.textAlignLast =\n autoDetectedDirection === 'rtl' ? 'right' : 'left';\n } else if (textAlign === 'justify-left') {\n // If text is RTL but fabric says justify-left, override to justify-right for better UX\n if (autoDetectedDirection === 'rtl') {\n this.textarea.style.textAlignLast = 'right';\n console.log(\n ' → Overrode justify-left to justify-right for RTL text',\n );\n } else {\n this.textarea.style.textAlignLast = 'left';\n }\n } else if (textAlign === 'justify-right') {\n // If text is LTR but fabric says justify-right, override to justify-left for better UX\n if (autoDetectedDirection === 'ltr') {\n this.textarea.style.textAlignLast = 'left';\n console.log(\n ' → Overrode justify-right to justify-left for LTR text',\n );\n } else {\n this.textarea.style.textAlignLast = 'right';\n }\n } else if (textAlign === 'justify-center') {\n this.textarea.style.textAlignLast = 'center';\n }\n\n // Enhanced justify settings for better fabric.js matching\n (this.textarea.style as any).textJustify = 'inter-word';\n (this.textarea.style as any).wordSpacing = 'normal';\n\n // Additional CSS properties for better justify matching\n this.textarea.style.textAlign = 'justify';\n this.textarea.style.textAlignLast = this.textarea.style.textAlignLast;\n\n // Try to force better justify behavior\n (this.textarea.style as any).textJustifyTrim = 'none';\n (this.textarea.style as any).textAutospace = 'none';\n\n console.log(\n ' → Applied justify alignment:',\n textAlign,\n 'with last-line:',\n this.textarea.style.textAlignLast,\n );\n } catch (error) {\n console.warn(\n ' → Justify setup failed, falling back to standard alignment:',\n error,\n );\n cssTextAlign = textAlign\n .replace('justify-', '')\n .replace('justify', 'left');\n }\n } else {\n this.textarea.style.textAlignLast = 'auto';\n (this.textarea.style as any).textJustify = 'auto';\n (this.textarea.style as any).wordSpacing = 'normal';\n console.log(' → Applied standard alignment:', cssTextAlign);\n }\n\n this.textarea.style.textAlign = cssTextAlign;\n this.textarea.style.color = target.fill?.toString() || '#000';\n this.textarea.style.letterSpacing = `${letterSpacingPx}px`;\n\n // Use the already detected direction from above\n const fabricDirection = (target as any).direction;\n\n // Use auto-detected direction for better BiDi support, but respect fabric direction if it makes sense\n this.textarea.style.direction =\n autoDetectedDirection || fabricDirection || 'ltr';\n this.textarea.style.fontVariant = 'normal';\n this.textarea.style.fontStretch = 'normal';\n this.textarea.style.textRendering = 'auto'; // Changed from 'optimizeLegibility' to match canvas\n this.textarea.style.fontKerning = 'normal';\n this.textarea.style.fontFeatureSettings = 'normal';\n this.textarea.style.fontVariationSettings = 'normal';\n this.textarea.style.margin = '0';\n this.textarea.style.border = 'none';\n this.textarea.style.outline = 'none';\n this.textarea.style.background = 'transparent';\n this.textarea.style.overflowWrap = 'break-word';\n this.textarea.style.whiteSpace = 'pre-wrap';\n this.textarea.style.hyphens = 'none';\n\n // DEBUG: Log final CSS properties\n console.log('🎨 FINAL TEXTAREA CSS:');\n console.log(' textAlign:', this.textarea.style.textAlign);\n console.log(' textAlignLast:', this.textarea.style.textAlignLast);\n console.log(' direction:', this.textarea.style.direction);\n console.log(' unicodeBidi:', this.textarea.style.unicodeBidi);\n console.log(' width:', this.textarea.style.width);\n console.log(' textJustify:', (this.textarea.style as any).textJustify);\n console.log(' wordSpacing:', (this.textarea.style as any).wordSpacing);\n console.log(' whiteSpace:', this.textarea.style.whiteSpace);\n\n // If justify, log Fabric object dimensions for comparison\n if (textAlign.includes('justify')) {\n console.log('🔧 FABRIC OBJECT JUSTIFY INFO:');\n console.log(' Fabric width:', (target as any).width);\n console.log(\n ' Fabric calcTextWidth:',\n (target as any).calcTextWidth?.(),\n );\n console.log(' Fabric textAlign:', (target as any).textAlign);\n console.log(' Text lines:', (target as any).textLines);\n }\n\n // Debug font properties matching\n console.log('🔤 FONT PROPERTIES COMPARISON:');\n console.log(' Fabric fontFamily:', target.fontFamily);\n console.log(' Fabric fontWeight:', target.fontWeight);\n console.log(' Fabric fontStyle:', target.fontStyle);\n console.log(' Fabric fontSize:', target.fontSize);\n console.log(' → Textarea fontFamily:', this.textarea.style.fontFamily);\n console.log(' → Textarea fontWeight:', this.textarea.style.fontWeight);\n console.log(' → Textarea fontStyle:', this.textarea.style.fontStyle);\n console.log(' → Textarea fontSize:', this.textarea.style.fontSize);\n\n console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n\n // Enhanced font rendering to better match fabric.js canvas rendering\n // Default to auto for more natural rendering\n (this.textarea.style as any).webkitFontSmoothing = 'auto';\n (this.textarea.style as any).mozOsxFontSmoothing = 'auto';\n (this.textarea.style as any).fontSmooth = 'auto';\n (this.textarea.style as any).textSizeAdjust = 'none';\n\n // For bold fonts, use subpixel rendering to match canvas thickness better\n const fontWeight = String(target.fontWeight || 'normal');\n const isBold =\n fontWeight === 'bold' ||\n fontWeight === '700' ||\n parseInt(fontWeight) >= 600;\n\n if (isBold) {\n (this.textarea.style as any).webkitFontSmoothing = 'subpixel-antialiased';\n (this.textarea.style as any).mozOsxFontSmoothing = 'unset';\n console.log(\n '🔤 Applied enhanced bold rendering for better thickness matching',\n );\n }\n\n console.log('🎨 FONT SMOOTHING APPLIED:');\n console.log(\n ' webkitFontSmoothing:',\n (this.textarea.style as any).webkitFontSmoothing,\n );\n console.log(\n ' mozOsxFontSmoothing:',\n (this.textarea.style as any).mozOsxFontSmoothing,\n );\n\n // Initial bounds are set correctly by Fabric.js - don't force update here\n }\n\n /**\n * Debug method to compare textarea and canvas object bounding boxes\n */\n private debugBoundingBoxComparison(): void {\n const target = this.target;\n const canvas = this.canvas;\n const zoom = canvas.getZoom();\n\n // Get textarea bounding box (in screen coordinates)\n const textareaRect = this.textarea.getBoundingClientRect();\n const hostRect = this.hostDiv.getBoundingClientRect();\n\n // Get canvas object bounding box (in screen coordinates)\n const canvasBounds = target.getBoundingRect();\n const canvasRect = canvas.upperCanvasEl.getBoundingClientRect();\n\n // Convert canvas object bounds to screen coordinates\n const vpt = canvas.viewportTransform;\n const screenObjectBounds = {\n left: canvasRect.left + canvasBounds.left * zoom + vpt[4],\n top: canvasRect.top + canvasBounds.top * zoom + vpt[5],\n width: canvasBounds.width * zoom,\n height: canvasBounds.height * zoom,\n };\n\n console.log('🔍 BOUNDING BOX COMPARISON:');\n console.log('📦 Textarea Rect:', {\n left: Math.round(textareaRect.left * 100) / 100,\n top: Math.round(textareaRect.top * 100) / 100,\n width: Math.round(textareaRect.width * 100) / 100,\n height: Math.round(textareaRect.height * 100) / 100,\n });\n console.log('📦 Host Div Rect:', {\n left: Math.round(hostRect.left * 100) / 100,\n top: Math.round(hostRect.top * 100) / 100,\n width: Math.round(hostRect.width * 100) / 100,\n height: Math.round(hostRect.height * 100) / 100,\n });\n console.log('📦 Canvas Object Bounds (screen):', {\n left: Math.round(screenObjectBounds.left * 100) / 100,\n top: Math.round(screenObjectBounds.top * 100) / 100,\n width: Math.round(screenObjectBounds.width * 100) / 100,\n height: Math.round(screenObjectBounds.height * 100) / 100,\n });\n console.log('📦 Canvas Object Bounds (canvas):', canvasBounds);\n\n // Calculate differences\n const hostVsObject = {\n leftDiff:\n Math.round((hostRect.left - screenObjectBounds.left) * 100) / 100,\n topDiff: Math.round((hostRect.top - screenObjectBounds.top) * 100) / 100,\n widthDiff:\n Math.round((hostRect.width - screenObjectBounds.width) * 100) / 100,\n heightDiff:\n Math.round((hostRect.height - screenObjectBounds.height) * 100) / 100,\n };\n\n const textareaVsObject = {\n leftDiff:\n Math.round((textareaRect.left - screenObjectBounds.left) * 100) / 100,\n topDiff:\n Math.round((textareaRect.top - screenObjectBounds.top) * 100) / 100,\n widthDiff:\n Math.round((textareaRect.width - screenObjectBounds.width) * 100) / 100,\n heightDiff:\n Math.round((textareaRect.height - screenObjectBounds.height) * 100) /\n 100,\n };\n\n console.log('📏 Host Div vs Canvas Object Diff:', hostVsObject);\n console.log('📏 Textarea vs Canvas Object Diff:', textareaVsObject);\n\n // Check if they're aligned (within 2px tolerance)\n const tolerance = 2;\n const hostAligned =\n Math.abs(hostVsObject.leftDiff) < tolerance &&\n Math.abs(hostVsObject.topDiff) < tolerance &&\n Math.abs(hostVsObject.widthDiff) < tolerance &&\n Math.abs(hostVsObject.heightDiff) < tolerance;\n\n const textareaAligned =\n Math.abs(textareaVsObject.leftDiff) < tolerance &&\n Math.abs(textareaVsObject.topDiff) < tolerance &&\n Math.abs(textareaVsObject.widthDiff) < tolerance &&\n Math.abs(textareaVsObject.heightDiff) < tolerance;\n\n console.log(\n hostAligned\n ? '✅ Host Div ALIGNED with canvas object'\n : '❌ Host Div MISALIGNED with canvas object',\n );\n console.log(\n textareaAligned\n ? '✅ Textarea ALIGNED with canvas object'\n : '❌ Textarea MISALIGNED with canvas object',\n );\n console.log('🔍 Zoom:', zoom, 'Viewport Transform:', vpt);\n console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n }\n\n /**\n * Debug method to compare text wrapping between textarea and Fabric text object\n */\n private debugTextWrapping(): void {\n const target = this.target;\n const text = this.textarea.value;\n\n console.log('📝 TEXT WRAPPING COMPARISON:');\n console.log('📄 Text Content:', `\"${text}\"`);\n console.log('📄 Text Length:', text.length);\n\n // Analyze line breaks\n const explicitLines = text.split('\\n');\n console.log('📄 Explicit Lines (\\\\n):', explicitLines.length);\n explicitLines.forEach((line, i) => {\n console.log(` Line ${i + 1}: \"${line}\" (${line.length} chars)`);\n });\n\n // Get textarea computed styles for wrapping analysis\n const textareaStyles = window.getComputedStyle(this.textarea);\n console.log('📐 Textarea Wrapping Styles:');\n console.log(' width:', textareaStyles.width);\n console.log(' fontSize:', textareaStyles.fontSize);\n console.log(' fontFamily:', textareaStyles.fontFamily);\n console.log(' fontWeight:', textareaStyles.fontWeight);\n console.log(' letterSpacing:', textareaStyles.letterSpacing);\n console.log(' lineHeight:', textareaStyles.lineHeight);\n console.log(' whiteSpace:', textareaStyles.whiteSpace);\n console.log(' wordWrap:', textareaStyles.wordWrap);\n console.log(' overflowWrap:', textareaStyles.overflowWrap);\n console.log(' direction:', textareaStyles.direction);\n console.log(' textAlign:', textareaStyles.textAlign);\n\n // Get Fabric text object properties for comparison\n console.log('📐 Fabric Text Object Properties:');\n console.log(' width:', (target as any).width);\n console.log(' fontSize:', target.fontSize);\n console.log(' fontFamily:', target.fontFamily);\n console.log(' fontWeight:', target.fontWeight);\n console.log(' charSpacing:', target.charSpacing);\n console.log(' lineHeight:', target.lineHeight);\n console.log(' direction:', (target as any).direction);\n console.log(' textAlign:', (target as any).textAlign);\n console.log(' scaleX:', target.scaleX);\n console.log(' scaleY:', target.scaleY);\n\n // Calculate effective dimensions for comparison - use actual rendered width\n // **THE FIX:** Use getBoundingRect to get the *actual rendered width* of the Fabric object.\n const fabricEffectiveWidth = this.target.getBoundingRect().width;\n // Use the exact width set on textarea for comparison\n const textareaComputedWidth = parseFloat(\n window.getComputedStyle(this.textarea).width,\n );\n const textareaEffectiveWidth =\n textareaComputedWidth / this.canvas.getZoom();\n const widthDiff = Math.abs(textareaEffectiveWidth - fabricEffectiveWidth);\n\n console.log('📏 Effective Width Comparison:');\n console.log(' Textarea Effective Width:', textareaEffectiveWidth);\n console.log(' Fabric Effective Width:', fabricEffectiveWidth);\n console.log(' Width Difference:', widthDiff.toFixed(2) + 'px');\n console.log(\n widthDiff < 1\n ? '✅ Widths MATCH for wrapping'\n : '❌ Width MISMATCH may cause different wrapping',\n );\n\n // Check text direction and bidi handling\n const hasRTLText =\n /[\\u0590-\\u05FF\\u0600-\\u06FF\\u0750-\\u077F\\uFB50-\\uFDFF\\uFE70-\\uFEFF]/.test(\n text,\n );\n const hasBidiText = /[\\u0590-\\u06FF]/.test(text) && /[a-zA-Z]/.test(text);\n\n console.log('🌍 Text Direction Analysis:');\n console.log(' Has RTL characters:', hasRTLText);\n console.log(' Has mixed Bidi text:', hasBidiText);\n console.log(' Textarea direction:', textareaStyles.direction);\n console.log(' Fabric direction:', (target as any).direction || 'auto');\n console.log(' Textarea unicodeBidi:', textareaStyles.unicodeBidi);\n\n // Measure actual rendered line count\n const textareaScrollHeight = this.textarea.scrollHeight;\n const textareaLineHeight =\n parseFloat(textareaStyles.lineHeight) ||\n parseFloat(textareaStyles.fontSize) * 1.2;\n const estimatedTextareaLines = Math.round(\n textareaScrollHeight / textareaLineHeight,\n );\n\n console.log('📊 Line Count Analysis:');\n console.log(' Textarea scrollHeight:', textareaScrollHeight);\n console.log(' Textarea lineHeight:', textareaLineHeight);\n console.log(' Estimated rendered lines:', estimatedTextareaLines);\n console.log(' Explicit line breaks:', explicitLines.length);\n\n if (estimatedTextareaLines > explicitLines.length) {\n console.log('🔄 Text wrapping detected in textarea');\n console.log(\n ' Wrapped lines:',\n estimatedTextareaLines - explicitLines.length,\n );\n } else {\n console.log('📏 No text wrapping in textarea');\n }\n\n console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');\n }\n\n /**\n * Focus the textarea and position cursor at end\n */\n private focusTextarea(): void {\n // For overlay editing, we want to keep the object in \"selection mode\" not \"editing mode\"\n // This means keeping selected=true and isEditing=false to show boundaries\n\n // Hide the text content only (not the entire object)\n this.target.opacity = 0.01; // Nearly transparent but not fully hidden\n\n // Ensure object stays selected to show boundaries\n (this.target as any).selected = true;\n (this.target as any).isEditing = false; // Override any editing state\n\n // Make sure controls are enabled and movement is allowed during overlay editing\n this.target.set({\n hasControls: true,\n hasBorders: true,\n selectable: true,\n lockMovementX: false,\n lockMovementY: false,\n });\n\n // Keep as active object\n this.canvas.setActiveObject(this.target);\n\n this.canvas.requestRenderAll();\n this.target.setCoords();\n this.applyOverlayStyle();\n\n // Fix character mapping issues after JSON loading for browser-wrapped fonts\n if ((this.target as any)._fixCharacterMappingAfterJsonLoad) {\n (this.target as any)._fixCharacterMappingAfterJsonLoad();\n }\n\n this.textarea.focus();\n\n this.textarea.setSelectionRange(\n this.textarea.value.length,\n this.textarea.value.length,\n );\n\n // Ensure the object stays selected even after textarea focus\n this.canvas.setActiveObject(this.target);\n this.canvas.requestRenderAll();\n }\n\n /**\n * Refresh overlay positioning and styling\n */\n public refresh(): void {\n if (this.isDestroyed) return;\n this.updatePosition();\n // Don't update object bounds on every refresh - only when textarea actually resizes\n }\n\n /**\n * Destroy the overlay editor\n */\n public destroy(commit: boolean = true): void {\n if (this.isDestroyed) return;\n this.isDestroyed = true;\n\n this.removeEventListeners();\n\n // EXTRACT DOM DATA BEFORE REMOVING DOM for justify text preservation\n let extractedOverlayData = null;\n if (commit && this.target.textAlign?.includes('justify')) {\n try {\n // Store the DOM structure before destruction\n const result = extractLinesFromDOM(this.textarea);\n extractedOverlayData = result.lines;\n console.log('🔧 DESTROY: Extracted overlay lines before DOM removal');\n } catch (error) {\n console.warn(\n 'Failed to extract overlay lines before destruction:',\n error,\n );\n }\n }\n\n // Restore original opacity but keep overlayEditor reference for commit\n if ((this.target as any).__overlayOriginalOpacity !== undefined) {\n this.target.opacity = (this.target as any).__overlayOriginalOpacity;\n delete (this.target as any).__overlayOriginalOpacity;\n }\n\n if (commit && !this.isComposing) {\n const finalText = this.textarea.value;\n\n // Auto-detect text direction and update fabric object if needed\n const detectedDirection = this.firstStrongDir(finalText);\n const currentDirection = (this.target as any).direction || 'ltr';\n\n if (detectedDirection && detectedDirection !== currentDirection) {\n console.log(\n `🔄 Overlay Exit: Auto-detected direction change from \"${currentDirection}\" to \"${detectedDirection}\"`,\n );\n console.log(` Text content: \"${finalText.substring(0, 50)}...\"`);\n\n // Update the fabric object's direction\n (this.target as any).set('direction', detectedDirection);\n\n // Force a re-render to apply the direction change\n this.canvas.requestRenderAll();\n\n console.log(\n `✅ Fabric object direction updated to: ${detectedDirection}`,\n );\n } else {\n console.log(\n `📝 Overlay Exit: Direction unchanged (${currentDirection}), text: \"${finalText.substring(0, 30)}...\"`,\n );\n }\n\n if (this.onCommit) {\n // Store extracted overlay data on target for commitOverlayEdit to use\n if (extractedOverlayData) {\n (this.target as any)._extractedOverlayLines = extractedOverlayData;\n }\n this.onCommit(finalText);\n }\n } else if (!commit && this.onCancel) {\n this.onCancel();\n }\n\n // Clear overlay editor reference AFTER commit/cancel handlers\n if ((this.target as any).__overlayEditor === this) {\n (this.target as any).__overlayEditor = undefined;\n }\n\n // Remove DOM after commit/cancel handlers\n if (this.hostDiv.parentNode) {\n this.hostDiv.parentNode.removeChild(this.hostDiv);\n }\n\n // Note: Don't restore object cursors since IText manages all cursors in _restoreEditingProps\n // Let the IText editing system handle proper restoration of all cursor properties\n\n // Note: Canvas cursors are restored by IText's _restoreEditingProps method\n // Force a cursor refresh by triggering _setCursorFromEvent\n setTimeout(() => {\n this.canvas.upperCanvasEl.style.cursor = '';\n // Trigger cursor refresh on next mouse move\n this.canvas.setCursor(this.canvas.defaultCursor);\n }, 0);\n\n // Request canvas re-render\n this.canvas.requestRenderAll();\n }\n\n public get textareaElement() {\n return this.textarea;\n }\n\n // Event handlers\n private handleInput(): void {\n if (!this.isComposing && this.target.text !== this.textarea.value) {\n // Live update target text\n this.target.text = this.textarea.value;\n\n // Auto-resize textarea to match new content\n this.autoResizeTextarea();\n\n // Ensure object stays in selection mode (not editing mode) to show controls\n (this.target as any).selected = true;\n (this.target as any).isEditing = false;\n this.canvas.setActiveObject(this.target);\n this.canvas.requestRenderAll();\n }\n }\n\n private autoResizeTextarea(): void {\n // Store the scroll position and the container's old height for comparison.\n const scrollTop = this.textarea.scrollTop;\n const oldHeight = parseFloat(this.hostDiv.style.height || '0');\n\n // 1. **Force a reliable reflow.**\n // First, reset the textarea's height to a minimal value. This is the crucial step\n // that forces the browser to recalculate the content's height from scratch,\n // ignoring the hostDiv's larger, stale height.\n this.textarea.style.height = '1px';\n\n // 2. Read the now-accurate scrollHeight. This value reflects the minimum\n // height required for the content, whether it's single or multi-line.\n const scrollHeight = this.textarea.scrollHeight;\n\n // A small buffer for rendering consistency across browsers.\n const buffer = 2;\n const newHeight = scrollHeight + buffer;\n\n // Check if the height has changed significantly.\n const heightChanged = Math.abs(newHeight - oldHeight) > 1;\n\n // 4. Only update heights and object bounds if there was a change.\n if (heightChanged) {\n this.textarea.style.height = `${newHeight}px`;\n this.hostDiv.style.height = `${newHeight}px`;\n this.updateObjectBounds();\n } else {\n // If no significant change, ensure the textarea's height matches the container\n // to prevent any minor visual misalignment.\n this.textarea.style.height = this.hostDiv.style.height;\n }\n\n // 5. Restore the original scroll position.\n this.textarea.scrollTop = scrollTop;\n }\n\n private handleKeyDown(e: KeyboardEvent): void {\n if (e.key === 'Escape') {\n e.preventDefault();\n this.destroy(false); // Cancel\n } else if ((e.ctrlKey || e.metaKey) && e.key === 'Enter') {\n e.preventDefault();\n this.destroy(true); // Commit\n } else if (\n e.key === 'Enter' ||\n e.key === 'Backspace' ||\n e.key === 'Delete'\n ) {\n // For keys that might change the height, schedule a resize check\n // Use both immediate and delayed checks to catch all scenarios\n requestAnimationFrame(() => {\n if (!this.isDestroyed) {\n this.autoResizeTextarea();\n }\n });\n setTimeout(() => {\n if (!this.isDestroyed) {\n this.autoResizeTextarea();\n }\n }, 10); // Small delay to ensure DOM is updated\n }\n }\n\n private handleFocus(): void {\n // Focus handler - could be used for future enhancements\n }\n\n private handleBlur(): void {\n // Commit on blur unless we're in composition mode\n if (!this.isComposing) {\n this.destroy(true);\n }\n }\n\n private handleCompositionStart(): void {\n this.isComposing = true;\n }\n\n private handleCompositionEnd(): void {\n this.isComposing = false;\n this.handleInput(); // Update text after composition\n }\n\n private handleAfterRender(): void {\n this.refresh();\n }\n\n private handleMouseWheel(): void {\n this.refresh();\n }\n\n private handleMouseDown(e: TPointerEventInfo): void {\n if (e.target !== this.target) {\n this.destroy(true);\n }\n }\n\n /**\n * Setup detection for viewport changes (zoom/pan)\n */\n private setupViewportChangeDetection(): void {\n // Store original methods\n (this.canvas as any).__originalSetZoom = this.canvas.setZoom;\n (this.canvas as any).__originalSetViewportTransform =\n this.canvas.setViewportTransform;\n (this.canvas as any).__overlayEditor = this;\n\n // Override setZoom to detect zoom changes\n const originalSetZoom = this.canvas.setZoom.bind(this.canvas);\n this.canvas.setZoom = (value: number) => {\n const result = originalSetZoom(value);\n if ((this.canvas as any).__overlayEditor && !this.isDestroyed) {\n this.refresh();\n }\n return result;\n };\n\n // Override setViewportTransform to detect pan changes\n const originalSetViewportTransform = this.canvas.setViewportTransform.bind(\n this.canvas,\n );\n this.canvas.setViewportTransform = (vpt: TMat2D) => {\n const result = originalSetViewportTransform(vpt);\n if ((this.canvas as any).__overlayEditor && !this.isDestroyed) {\n this.refresh();\n }\n return result;\n };\n }\n\n /**\n * Restore original viewport methods\n */\n private restoreViewportChangeDetection(): void {\n if ((this.canvas as any).__originalSetZoom) {\n this.canvas.setZoom = (this.canvas as any).__originalSetZoom;\n delete (this.canvas as any).__originalSetZoom;\n }\n if ((this.canvas as any).__originalSetViewportTransform) {\n this.canvas.setViewportTransform = (\n this.canvas as any\n ).__originalSetViewportTransform;\n delete (this.canvas as any).__originalSetViewportTransform;\n }\n delete (this.canvas as any).__overlayEditor;\n }\n}\n\n/**\n * Enter overlay text editing mode for a text object\n */\nexport function enterTextOverlayEdit(\n canvas: Canvas,\n target: FabricText | IText | Textbox,\n options?: {\n onCommit?: (text: string) => void;\n onCancel?: () => void;\n },\n): OverlayEditor {\n // If already in overlay editing, destroy existing editor first\n if ((target as any).__overlayEditor) {\n (target as any).__overlayEditor.destroy(false);\n }\n\n // Store original opacity so we can restore it later\n (target as any).__overlayOriginalOpacity = target.opacity;\n\n const editor = new OverlayEditor({\n canvas,\n target,\n onCommit: options?.onCommit,\n onCancel: options?.onCancel,\n });\n\n // We no longer change fill, so no need to store it\n\n // Store reference on target for cleanup\n (target as any).__overlayEditor = editor;\n\n return editor;\n}\n\n/**\n * Check if a text object is currently being edited with overlay editor\n */\nexport function isInOverlayEdit(target: FabricText | IText | Textbox): boolean {\n return !!(target as any).__overlayEditor?.isActive;\n}\n"],"names":["OverlayEditor","constructor","options","_defineProperty","onInput","handleInput","bind","onKeyDown","handleKeyDown","onBlur","handleBlur","onCompositionStart","handleCompositionStart","onCompositionEnd","handleCompositionEnd","onAfterRender","handleAfterRender","onMouseWheel","handleMouseWheel","onFocus","handleFocus","onMouseDown","handleMouseDown","canvas","target","onCommit","onCancel","lastText","text","container","getCanvasContainer","createOverlayDOM","attachEventListeners","refresh","focusTextarea","upperCanvas","upperCanvasEl","parentElement","Error","style","position","hostDiv","document","createElement","pointerEvents","zIndex","transformOrigin","textarea","left","top","margin","resize","hasArabicText","test","hasLatinText","isLTRDirection","direction","unicodeBidi","caretColor","border","padding","background","outline","overflow","whiteSpace","wordBreak","overflowWrap","userSelect","textTransform","opacity","value","appendChild","body","addEventListener","boundHandlers","on","setupViewportChangeDetection","removeEventListeners","removeEventListener","off","restoreViewportChangeDetection","updatePosition","applyOverlayStyle","updateObjectBounds","isDestroyed","zoom","getZoom","parseFloat","width","currentHeight","height","heightDiff","Math","abs","threshold","setCoords","dirty","requestRenderAll","requestAnimationFrame","console","log","letterSpacingPx","charSpacing","fontSize","firstStrongDir","rtlRegex","_target$fontSize","_target$fill","aCoords","canvasEl","canvasRect","getBoundingClientRect","scrollX","window","pageXOffset","scrollY","pageYOffset","vpt","viewportTransform","paddingX","scaleX","paddingY","scaleY","screenPoint","transformPoint","x","tl","y","objectBounds","getBoundingRect","round","angle","transform","baseFontSize","finalFontSize","fabricLineHeight","lineHeight","boxSizing","initDimensions","String","fontFamily","fontWeight","fontStyle","textAlign","cssTextAlign","autoDetectedDirection","JSON","stringify","includes","textAlignLast","textJustify","wordSpacing","textJustifyTrim","textAutospace","error","warn","replace","color","fill","toString","letterSpacing","fabricDirection","fontVariant","fontStretch","textRendering","fontKerning","fontFeatureSettings","fontVariationSettings","hyphens","_calcTextWidth","_ref","calcTextWidth","call","textLines","webkitFontSmoothing","mozOsxFontSmoothing","fontSmooth","textSizeAdjust","isBold","parseInt","debugBoundingBoxComparison","textareaRect","hostRect","canvasBounds","screenObjectBounds","hostVsObject","leftDiff","topDiff","widthDiff","textareaVsObject","tolerance","hostAligned","textareaAligned","debugTextWrapping","length","explicitLines","split","forEach","line","i","textareaStyles","getComputedStyle","wordWrap","fabricEffectiveWidth","textareaComputedWidth","textareaEffectiveWidth","toFixed","hasRTLText","hasBidiText","textareaScrollHeight","scrollHeight","textareaLineHeight","estimatedTextareaLines","selected","isEditing","set","hasControls","hasBorders","selectable","lockMovementX","lockMovementY","setActiveObject","_fixCharacterMappingAfterJsonLoad","focus","setSelectionRange","destroy","_this$target$textAlig","commit","arguments","undefined","extractedOverlayData","result","extractLinesFromDOM","lines","__overlayOriginalOpacity","isComposing","finalText","detectedDirection","currentDirection","substring","_extractedOverlayLines","__overlayEditor","parentNode","removeChild","setTimeout","cursor","setCursor","defaultCursor","textareaElement","autoResizeTextarea","scrollTop","oldHeight","buffer","newHeight","heightChanged","e","key","preventDefault","ctrlKey","metaKey","__originalSetZoom","setZoom","__originalSetViewportTransform","setViewportTransform","originalSetZoom","originalSetViewportTransform","enterTextOverlayEdit","editor"],"mappings":"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"}
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"unicode.min.mjs","sources":["../../../src/text/unicode.ts"],"sourcesContent":["/**\r\n * Unicode and Internationalization Support\r\n * \r\n * Enhanced Unicode handling for complex scripts, RTL/LTR text,\r\n * and grapheme cluster boundary detection.\r\n */\r\n\r\nimport { graphemeSplit } from '../util/lang_string';\r\n\r\nexport interface BiDiRun {\r\n text: string;\r\n direction: 'ltr' | 'rtl';\r\n level: number;\r\n start: number;\r\n end: number;\r\n}\r\n\r\nexport interface ScriptInfo {\r\n script: string;\r\n direction: 'ltr' | 'rtl';\r\n needsShaping: boolean;\r\n complexLayout: boolean;\r\n}\r\n\r\n// Unicode character categories for text processing\r\nconst UNICODE_CATEGORIES = {\r\n // Bidirectional types\r\n L: /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]/,\r\n R: /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05F0-\\u05F4\\u0608\\u060B\\u060D]/,\r\n AL: /[\\u0627\\u0629-\\u063A\\u0641-\\u064A\\u066D-\\u066F\\u0671-\\u06D3\\u06D5]/,\r\n EN: /[\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u06F0-\\u06F9]/,\r\n ES: /[\\u002B\\u002D]/,\r\n ET: /[\\u0023\\u0024\\u0025\\u00A2\\u00A3\\u00A4\\u00A5]/,\r\n AN: /[\\u0660-\\u0669\\u066B\\u066C]/,\r\n CS: /[\\u002C\\u002E\\u002F\\u003A\\u00A0]/,\r\n NSM: /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2]/,\r\n BN: /[\\u0000-\\u0008\\u000E-\\u001B\\u007F-\\u0084\\u0086-\\u009F]/,\r\n B: /[\\u000A\\u000D\\u001C-\\u001E\\u0085\\u2029]/,\r\n S: /[\\u0009\\u000B\\u001F]/,\r\n WS: /[\\u000C\\u0020\\u1680\\u2000-\\u200A\\u2028\\u205F\\u3000]/,\r\n ON: /[\\u0021\\u0022\\u0026-\\u002A\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u007E]/,\r\n};\r\n\r\n// Script detection patterns\r\nconst SCRIPT_PATTERNS = {\r\n latin: /[\\u0041-\\u005A\\u0061-\\u007A\\u00C0-\\u024F]/,\r\n arabic: /[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF]/,\r\n hebrew: /[\\u0590-\\u05FF]/,\r\n cyrillic: /[\\u0400-\\u04FF\\u0500-\\u052F]/,\r\n greek: /[\\u0370-\\u03FF\\u1F00-\\u1FFF]/,\r\n cjk: /[\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF]/,\r\n hiragana: /[\\u3040-\\u309F]/,\r\n katakana: /[\\u30A0-\\u30FF]/,\r\n hangul: /[\\uAC00-\\uD7AF\\u1100-\\u11FF\\u3130-\\u318F]/,\r\n thai: /[\\u0E00-\\u0E7F]/,\r\n devanagari: /[\\u0900-\\u097F]/,\r\n bengali: /[\\u0980-\\u09FF]/,\r\n emoji: /[\\u1F600-\\u1F64F\\u1F300-\\u1F5FF\\u1F680-\\u1F6FF\\u1F700-\\u1F77F]/,\r\n};\r\n\r\n/**\r\n * Enhanced grapheme segmentation using Intl.Segmenter when available\r\n * with fallback to existing graphemeSplit implementation\r\n */\r\nexport function segmentGraphemes(text: string): string[] {\r\n // Use native Intl.Segmenter if available\r\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\r\n try {\r\n const segmenter = new Intl.Segmenter(undefined, {\r\n granularity: 'grapheme',\r\n });\r\n \r\n const segments = segmenter.segment(text);\r\n return Array.from(segments, segment => segment.segment);\r\n } catch (e) {\r\n // Fallback if Intl.Segmenter fails\r\n }\r\n }\r\n \r\n // Use existing Fabric.js implementation as fallback\r\n return graphemeSplit(text);\r\n}\r\n\r\n/**\r\n * Analyze text for bidirectional runs using Unicode BiDi algorithm (simplified)\r\n */\r\nexport function analyzeBiDi(text: string, baseDirection: 'ltr' | 'rtl' = 'ltr'): BiDiRun[] {\r\n if (!text) return [];\r\n\r\n const runs: BiDiRun[] = [];\r\n const chars = Array.from(text);\r\n let currentRun: BiDiRun | null = null;\r\n\r\n for (let i = 0; i < chars.length; i++) {\r\n const char = chars[i];\r\n const charDirection = getBidiDirection(char, baseDirection);\r\n \r\n // Start new run if direction changes\r\n if (!currentRun || currentRun.direction !== charDirection) {\r\n if (currentRun) {\r\n runs.push(currentRun);\r\n }\r\n \r\n currentRun = {\r\n text: char,\r\n direction: charDirection,\r\n level: charDirection === 'rtl' ? 1 : 0,\r\n start: i,\r\n end: i + 1,\r\n };\r\n } else {\r\n // Continue current run\r\n currentRun.text += char;\r\n currentRun.end = i + 1;\r\n }\r\n }\r\n\r\n // Add final run\r\n if (currentRun) {\r\n runs.push(currentRun);\r\n }\r\n\r\n return runs.length > 0 ? runs : [{\r\n text,\r\n direction: baseDirection,\r\n level: baseDirection === 'rtl' ? 1 : 0,\r\n start: 0,\r\n end: text.length,\r\n }];\r\n}\r\n\r\n/**\r\n * Detect the primary script of text for font fallback and shaping\r\n */\r\nexport function detectScript(text: string): string {\r\n const charCounts: Record<string, number> = {};\r\n const chars = Array.from(text);\r\n\r\n // Count characters by script\r\n for (const char of chars) {\r\n for (const [script, pattern] of Object.entries(SCRIPT_PATTERNS)) {\r\n if (pattern.test(char)) {\r\n charCounts[script] = (charCounts[script] || 0) + 1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Find dominant script\r\n let maxCount = 0;\r\n let dominantScript = 'latin';\r\n\r\n for (const [script, count] of Object.entries(charCounts)) {\r\n if (count > maxCount) {\r\n maxCount = count;\r\n dominantScript = script;\r\n }\r\n }\r\n\r\n return dominantScript;\r\n}\r\n\r\n/**\r\n * Get script information for layout decisions\r\n */\r\nexport function getScriptInfo(script: string): ScriptInfo {\r\n const scriptMap: Record<string, ScriptInfo> = {\r\n latin: {\r\n script: 'latin',\r\n direction: 'ltr',\r\n needsShaping: false,\r\n complexLayout: false,\r\n },\r\n arabic: {\r\n script: 'arabic',\r\n direction: 'rtl',\r\n needsShaping: true,\r\n complexLayout: true,\r\n },\r\n hebrew: {\r\n script: 'hebrew',\r\n direction: 'rtl',\r\n needsShaping: false,\r\n complexLayout: false,\r\n },\r\n thai: {\r\n script: 'thai',\r\n direction: 'ltr',\r\n needsShaping: true,\r\n complexLayout: true,\r\n },\r\n devanagari: {\r\n script: 'devanagari',\r\n direction: 'ltr',\r\n needsShaping: true,\r\n complexLayout: true,\r\n },\r\n cjk: {\r\n script: 'cjk',\r\n direction: 'ltr',\r\n needsShaping: false,\r\n complexLayout: false,\r\n },\r\n };\r\n\r\n return scriptMap[script] || scriptMap.latin;\r\n}\r\n\r\n/**\r\n * Break words according to language-specific rules\r\n */\r\nexport function breakWords(text: string, locale?: string): string[] {\r\n // Use native word segmentation if available\r\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\r\n try {\r\n const segmenter = new Intl.Segmenter(locale, {\r\n granularity: 'word',\r\n });\r\n \r\n const segments = segmenter.segment(text);\r\n return Array.from(segments)\r\n .filter(segment => segment.isWordLike)\r\n .map(segment => segment.segment);\r\n } catch (e) {\r\n // Fallback if Intl.Segmenter fails\r\n }\r\n }\r\n\r\n // Simple fallback word breaking\r\n return text.split(/\\s+/).filter(word => word.length > 0);\r\n}\r\n\r\n/**\r\n * Character classification functions\r\n */\r\nexport function isWhitespace(grapheme: string): boolean {\r\n return /\\s/.test(grapheme);\r\n}\r\n\r\nexport function isLineBreak(grapheme: string): boolean {\r\n return grapheme === '\\n' || grapheme === '\\r' || grapheme === '\\r\\n';\r\n}\r\n\r\nexport function isWordSeparator(grapheme: string): boolean {\r\n return /[\\s\\-\\u2010-\\u2015]/.test(grapheme);\r\n}\r\n\r\nexport function isPunctuation(grapheme: string): boolean {\r\n return /[\\p{P}]/u.test(grapheme);\r\n}\r\n\r\nexport function isEmoji(grapheme: string): boolean {\r\n return /[\\p{Emoji}]/u.test(grapheme);\r\n}\r\n\r\nexport function isRTLCharacter(char: string): boolean {\r\n return UNICODE_CATEGORIES.R.test(char) || UNICODE_CATEGORIES.AL.test(char);\r\n}\r\n\r\n/**\r\n * Advanced grapheme cluster handling for complex scripts\r\n */\r\nexport function findGraphemeClusterBoundaries(text: string): number[] {\r\n const boundaries: number[] = [0];\r\n const graphemes = segmentGraphemes(text);\r\n let position = 0;\r\n\r\n for (const grapheme of graphemes) {\r\n position += grapheme.length;\r\n boundaries.push(position);\r\n }\r\n\r\n return boundaries;\r\n}\r\n\r\n/**\r\n * Check if a position is at a grapheme cluster boundary\r\n */\r\nexport function isGraphemeClusterBoundary(text: string, position: number): boolean {\r\n const boundaries = findGraphemeClusterBoundaries(text);\r\n return boundaries.includes(position);\r\n}\r\n\r\n/**\r\n * Find the next grapheme cluster boundary from a given position\r\n */\r\nexport function findNextGraphemeClusterBoundary(text: string, position: number): number {\r\n const boundaries = findGraphemeClusterBoundaries(text);\r\n return boundaries.find(boundary => boundary > position) || text.length;\r\n}\r\n\r\n/**\r\n * Find the previous grapheme cluster boundary from a given position \r\n */\r\nexport function findPreviousGraphemeClusterBoundary(text: string, position: number): number {\r\n const boundaries = findGraphemeClusterBoundaries(text);\r\n const reversedBoundaries = [...boundaries].reverse();\r\n return reversedBoundaries.find(boundary => boundary < position) || 0;\r\n}\r\n\r\n/**\r\n * Normalize text for consistent processing\r\n */\r\nexport function normalizeText(text: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD' = 'NFC'): string {\r\n if (typeof text.normalize === 'function') {\r\n return text.normalize(form);\r\n }\r\n return text;\r\n}\r\n\r\n/**\r\n * Detect if text contains complex script characters that need special handling\r\n */\r\nexport function needsComplexLayout(text: string): boolean {\r\n const complexScripts = ['arabic', 'hebrew', 'thai', 'devanagari', 'bengali'];\r\n const detectedScript = detectScript(text);\r\n return complexScripts.includes(detectedScript);\r\n}\r\n\r\n/**\r\n * Get text direction based on content analysis\r\n */\r\nexport function getTextDirection(text: string, fallback: 'ltr' | 'rtl' = 'ltr'): 'ltr' | 'rtl' {\r\n let rtlChars = 0;\r\n let ltrChars = 0;\r\n\r\n for (const char of text) {\r\n if (UNICODE_CATEGORIES.R.test(char) || UNICODE_CATEGORIES.AL.test(char)) {\r\n rtlChars++;\r\n } else if (UNICODE_CATEGORIES.L.test(char)) {\r\n ltrChars++;\r\n }\r\n }\r\n\r\n if (rtlChars > ltrChars) return 'rtl';\r\n if (ltrChars > rtlChars) return 'ltr';\r\n return fallback;\r\n}\r\n\r\n/**\r\n * Split text into lines respecting complex script rules\r\n */\r\nexport function splitTextLines(text: string): string[] {\r\n // Handle different line break types\r\n return text.split(/\\r\\n|\\r|\\n/);\r\n}\r\n\r\n/**\r\n * Check if combining marks or modifiers should be kept with base character\r\n */\r\nexport function isCombiningMark(char: string): boolean {\r\n return UNICODE_CATEGORIES.NSM.test(char);\r\n}\r\n\r\n/**\r\n * Get bidirectional character type\r\n */\r\nfunction getBidiDirection(char: string, baseDirection: 'ltr' | 'rtl'): 'ltr' | 'rtl' {\r\n // Strong RTL characters\r\n if (UNICODE_CATEGORIES.R.test(char) || UNICODE_CATEGORIES.AL.test(char)) {\r\n return 'rtl';\r\n }\r\n \r\n // Strong LTR characters \r\n if (UNICODE_CATEGORIES.L.test(char)) {\r\n return 'ltr';\r\n }\r\n \r\n // Numbers follow base direction in simplified algorithm\r\n if (UNICODE_CATEGORIES.EN.test(char) || UNICODE_CATEGORIES.AN.test(char)) {\r\n return baseDirection;\r\n }\r\n \r\n // Neutral characters follow context\r\n return baseDirection;\r\n}\r\n\r\n/**\r\n * Advanced word breaking for different scripts\r\n */\r\nexport function breakWordsAdvanced(text: string): string[] {\r\n const script = detectScript(text);\r\n \r\n switch (script) {\r\n case 'cjk':\r\n // CJK can break at most characters\r\n return Array.from(text);\r\n \r\n case 'thai':\r\n // Thai doesn't use spaces - would need dictionary-based breaking\r\n // For now, fall back to character-based breaking\r\n return Array.from(text);\r\n \r\n case 'arabic':\r\n case 'hebrew':\r\n // Handle RTL scripts\r\n return text.split(/\\s+/).filter(word => word.length > 0);\r\n \r\n default:\r\n // Standard space-based word breaking\r\n return text.split(/\\s+/).filter(word => word.length > 0);\r\n }\r\n}\r\n\r\n/**\r\n * Check if text needs right-to-left processing\r\n */\r\nexport function needsRTLProcessing(text: string): boolean {\r\n for (const char of text) {\r\n if (isRTLCharacter(char)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\n/**\r\n * Reverse text for RTL display (simplified - real RTL is more complex)\r\n */\r\nexport function reverseForRTL(text: string): string {\r\n // This is a simplified implementation\r\n // Real RTL processing requires full BiDi algorithm\r\n const graphemes = segmentGraphemes(text);\r\n return graphemes.reverse().join('');\r\n}\r\n\r\n/**\r\n * Get appropriate line breaking class for character\r\n */\r\nexport function getLineBreakClass(char: string): string {\r\n // Simplified line breaking classes\r\n if (/\\s/.test(char)) return 'SP';\r\n if (/[!-\\/:-@\\[-`{-~]/.test(char)) return 'BA'; // Break after\r\n if (/[(\\[{]/.test(char)) return 'OP'; // Open punctuation\r\n if (/[)\\]}]/.test(char)) return 'CL'; // Close punctuation\r\n if (/\\d/.test(char)) return 'NU'; // Numeric\r\n if (/[A-Za-z]/.test(char)) return 'AL'; // Alphabetic\r\n \r\n return 'AL'; // Default to alphabetic\r\n}\r\n\r\n/**\r\n * Check if line break is allowed between two characters\r\n */\r\nexport function isLineBreakAllowed(before: string, after: string): boolean {\r\n const beforeClass = getLineBreakClass(before);\r\n const afterClass = getLineBreakClass(after);\r\n \r\n // Simplified line breaking rules\r\n if (beforeClass === 'OP') return false; // Don't break after opening\r\n if (afterClass === 'CL') return false; // Don't break before closing\r\n if (beforeClass === 'SP') return true; // Always allow break after space\r\n \r\n return true; // Default allow\r\n}"],"names":["segmentGraphemes","text","Intl","segments","Segmenter","undefined","granularity","segment","Array","from","e","graphemeSplit"],"mappings":"4DAgEO,SAASA,EAAiBC,GAE/B,GAAoB,oBAATC,MAAwB,cAAeA,KAChD,IACE,MAIMC,EAJY,IAAID,KAAKE,eAAUC,EAAW,CAC9CC,YAAa,aAGYC,QAAQN,GACnC,OAAOO,MAAMC,KAAKN,EAAUI,GAAWA,EAAQA,QACjD,CAAE,MAAOG,GACP,CAKJ,OAAOC,EAAcV,EACvB"}
1
+ {"version":3,"file":"unicode.min.mjs","sources":["../../../src/text/unicode.ts"],"sourcesContent":["/**\n * Unicode and Internationalization Support\n * \n * Enhanced Unicode handling for complex scripts, RTL/LTR text,\n * and grapheme cluster boundary detection.\n */\n\nimport { graphemeSplit } from '../util/lang_string';\n\nexport interface BiDiRun {\n text: string;\n direction: 'ltr' | 'rtl';\n level: number;\n start: number;\n end: number;\n}\n\nexport interface ScriptInfo {\n script: string;\n direction: 'ltr' | 'rtl';\n needsShaping: boolean;\n complexLayout: boolean;\n}\n\n// Unicode character categories for text processing\nconst UNICODE_CATEGORIES = {\n // Bidirectional types\n L: /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6]/,\n R: /[\\u05BE\\u05C0\\u05C3\\u05C6\\u05D0-\\u05EA\\u05F0-\\u05F4\\u0608\\u060B\\u060D]/,\n AL: /[\\u0627\\u0629-\\u063A\\u0641-\\u064A\\u066D-\\u066F\\u0671-\\u06D3\\u06D5]/,\n EN: /[\\u0030-\\u0039\\u00B2\\u00B3\\u00B9\\u06F0-\\u06F9]/,\n ES: /[\\u002B\\u002D]/,\n ET: /[\\u0023\\u0024\\u0025\\u00A2\\u00A3\\u00A4\\u00A5]/,\n AN: /[\\u0660-\\u0669\\u066B\\u066C]/,\n CS: /[\\u002C\\u002E\\u002F\\u003A\\u00A0]/,\n NSM: /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2]/,\n BN: /[\\u0000-\\u0008\\u000E-\\u001B\\u007F-\\u0084\\u0086-\\u009F]/,\n B: /[\\u000A\\u000D\\u001C-\\u001E\\u0085\\u2029]/,\n S: /[\\u0009\\u000B\\u001F]/,\n WS: /[\\u000C\\u0020\\u1680\\u2000-\\u200A\\u2028\\u205F\\u3000]/,\n ON: /[\\u0021\\u0022\\u0026-\\u002A\\u003B-\\u0040\\u005B-\\u0060\\u007B-\\u007E]/,\n};\n\n// Script detection patterns\nconst SCRIPT_PATTERNS = {\n latin: /[\\u0041-\\u005A\\u0061-\\u007A\\u00C0-\\u024F]/,\n arabic: /[\\u0600-\\u06FF\\u0750-\\u077F\\u08A0-\\u08FF]/,\n hebrew: /[\\u0590-\\u05FF]/,\n cyrillic: /[\\u0400-\\u04FF\\u0500-\\u052F]/,\n greek: /[\\u0370-\\u03FF\\u1F00-\\u1FFF]/,\n cjk: /[\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF]/,\n hiragana: /[\\u3040-\\u309F]/,\n katakana: /[\\u30A0-\\u30FF]/,\n hangul: /[\\uAC00-\\uD7AF\\u1100-\\u11FF\\u3130-\\u318F]/,\n thai: /[\\u0E00-\\u0E7F]/,\n devanagari: /[\\u0900-\\u097F]/,\n bengali: /[\\u0980-\\u09FF]/,\n emoji: /[\\u1F600-\\u1F64F\\u1F300-\\u1F5FF\\u1F680-\\u1F6FF\\u1F700-\\u1F77F]/,\n};\n\n/**\n * Enhanced grapheme segmentation using Intl.Segmenter when available\n * with fallback to existing graphemeSplit implementation\n */\nexport function segmentGraphemes(text: string): string[] {\n // Use native Intl.Segmenter if available\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\n try {\n const segmenter = new Intl.Segmenter(undefined, {\n granularity: 'grapheme',\n });\n \n const segments = segmenter.segment(text);\n return Array.from(segments, segment => segment.segment);\n } catch (e) {\n // Fallback if Intl.Segmenter fails\n }\n }\n \n // Use existing Fabric.js implementation as fallback\n return graphemeSplit(text);\n}\n\n/**\n * Analyze text for bidirectional runs using Unicode BiDi algorithm (simplified)\n */\nexport function analyzeBiDi(text: string, baseDirection: 'ltr' | 'rtl' = 'ltr'): BiDiRun[] {\n if (!text) return [];\n\n const runs: BiDiRun[] = [];\n const chars = Array.from(text);\n let currentRun: BiDiRun | null = null;\n\n for (let i = 0; i < chars.length; i++) {\n const char = chars[i];\n const charDirection = getBidiDirection(char, baseDirection);\n \n // Start new run if direction changes\n if (!currentRun || currentRun.direction !== charDirection) {\n if (currentRun) {\n runs.push(currentRun);\n }\n \n currentRun = {\n text: char,\n direction: charDirection,\n level: charDirection === 'rtl' ? 1 : 0,\n start: i,\n end: i + 1,\n };\n } else {\n // Continue current run\n currentRun.text += char;\n currentRun.end = i + 1;\n }\n }\n\n // Add final run\n if (currentRun) {\n runs.push(currentRun);\n }\n\n return runs.length > 0 ? runs : [{\n text,\n direction: baseDirection,\n level: baseDirection === 'rtl' ? 1 : 0,\n start: 0,\n end: text.length,\n }];\n}\n\n/**\n * Detect the primary script of text for font fallback and shaping\n */\nexport function detectScript(text: string): string {\n const charCounts: Record<string, number> = {};\n const chars = Array.from(text);\n\n // Count characters by script\n for (const char of chars) {\n for (const [script, pattern] of Object.entries(SCRIPT_PATTERNS)) {\n if (pattern.test(char)) {\n charCounts[script] = (charCounts[script] || 0) + 1;\n break;\n }\n }\n }\n\n // Find dominant script\n let maxCount = 0;\n let dominantScript = 'latin';\n\n for (const [script, count] of Object.entries(charCounts)) {\n if (count > maxCount) {\n maxCount = count;\n dominantScript = script;\n }\n }\n\n return dominantScript;\n}\n\n/**\n * Get script information for layout decisions\n */\nexport function getScriptInfo(script: string): ScriptInfo {\n const scriptMap: Record<string, ScriptInfo> = {\n latin: {\n script: 'latin',\n direction: 'ltr',\n needsShaping: false,\n complexLayout: false,\n },\n arabic: {\n script: 'arabic',\n direction: 'rtl',\n needsShaping: true,\n complexLayout: true,\n },\n hebrew: {\n script: 'hebrew',\n direction: 'rtl',\n needsShaping: false,\n complexLayout: false,\n },\n thai: {\n script: 'thai',\n direction: 'ltr',\n needsShaping: true,\n complexLayout: true,\n },\n devanagari: {\n script: 'devanagari',\n direction: 'ltr',\n needsShaping: true,\n complexLayout: true,\n },\n cjk: {\n script: 'cjk',\n direction: 'ltr',\n needsShaping: false,\n complexLayout: false,\n },\n };\n\n return scriptMap[script] || scriptMap.latin;\n}\n\n/**\n * Break words according to language-specific rules\n */\nexport function breakWords(text: string, locale?: string): string[] {\n // Use native word segmentation if available\n if (typeof Intl !== 'undefined' && 'Segmenter' in Intl) {\n try {\n const segmenter = new Intl.Segmenter(locale, {\n granularity: 'word',\n });\n \n const segments = segmenter.segment(text);\n return Array.from(segments)\n .filter(segment => segment.isWordLike)\n .map(segment => segment.segment);\n } catch (e) {\n // Fallback if Intl.Segmenter fails\n }\n }\n\n // Simple fallback word breaking\n return text.split(/\\s+/).filter(word => word.length > 0);\n}\n\n/**\n * Character classification functions\n */\nexport function isWhitespace(grapheme: string): boolean {\n return /\\s/.test(grapheme);\n}\n\nexport function isLineBreak(grapheme: string): boolean {\n return grapheme === '\\n' || grapheme === '\\r' || grapheme === '\\r\\n';\n}\n\nexport function isWordSeparator(grapheme: string): boolean {\n return /[\\s\\-\\u2010-\\u2015]/.test(grapheme);\n}\n\nexport function isPunctuation(grapheme: string): boolean {\n return /[\\p{P}]/u.test(grapheme);\n}\n\nexport function isEmoji(grapheme: string): boolean {\n return /[\\p{Emoji}]/u.test(grapheme);\n}\n\nexport function isRTLCharacter(char: string): boolean {\n return UNICODE_CATEGORIES.R.test(char) || UNICODE_CATEGORIES.AL.test(char);\n}\n\n/**\n * Advanced grapheme cluster handling for complex scripts\n */\nexport function findGraphemeClusterBoundaries(text: string): number[] {\n const boundaries: number[] = [0];\n const graphemes = segmentGraphemes(text);\n let position = 0;\n\n for (const grapheme of graphemes) {\n position += grapheme.length;\n boundaries.push(position);\n }\n\n return boundaries;\n}\n\n/**\n * Check if a position is at a grapheme cluster boundary\n */\nexport function isGraphemeClusterBoundary(text: string, position: number): boolean {\n const boundaries = findGraphemeClusterBoundaries(text);\n return boundaries.includes(position);\n}\n\n/**\n * Find the next grapheme cluster boundary from a given position\n */\nexport function findNextGraphemeClusterBoundary(text: string, position: number): number {\n const boundaries = findGraphemeClusterBoundaries(text);\n return boundaries.find(boundary => boundary > position) || text.length;\n}\n\n/**\n * Find the previous grapheme cluster boundary from a given position \n */\nexport function findPreviousGraphemeClusterBoundary(text: string, position: number): number {\n const boundaries = findGraphemeClusterBoundaries(text);\n const reversedBoundaries = [...boundaries].reverse();\n return reversedBoundaries.find(boundary => boundary < position) || 0;\n}\n\n/**\n * Normalize text for consistent processing\n */\nexport function normalizeText(text: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD' = 'NFC'): string {\n if (typeof text.normalize === 'function') {\n return text.normalize(form);\n }\n return text;\n}\n\n/**\n * Detect if text contains complex script characters that need special handling\n */\nexport function needsComplexLayout(text: string): boolean {\n const complexScripts = ['arabic', 'hebrew', 'thai', 'devanagari', 'bengali'];\n const detectedScript = detectScript(text);\n return complexScripts.includes(detectedScript);\n}\n\n/**\n * Get text direction based on content analysis\n */\nexport function getTextDirection(text: string, fallback: 'ltr' | 'rtl' = 'ltr'): 'ltr' | 'rtl' {\n let rtlChars = 0;\n let ltrChars = 0;\n\n for (const char of text) {\n if (UNICODE_CATEGORIES.R.test(char) || UNICODE_CATEGORIES.AL.test(char)) {\n rtlChars++;\n } else if (UNICODE_CATEGORIES.L.test(char)) {\n ltrChars++;\n }\n }\n\n if (rtlChars > ltrChars) return 'rtl';\n if (ltrChars > rtlChars) return 'ltr';\n return fallback;\n}\n\n/**\n * Split text into lines respecting complex script rules\n */\nexport function splitTextLines(text: string): string[] {\n // Handle different line break types\n return text.split(/\\r\\n|\\r|\\n/);\n}\n\n/**\n * Check if combining marks or modifiers should be kept with base character\n */\nexport function isCombiningMark(char: string): boolean {\n return UNICODE_CATEGORIES.NSM.test(char);\n}\n\n/**\n * Get bidirectional character type\n */\nfunction getBidiDirection(char: string, baseDirection: 'ltr' | 'rtl'): 'ltr' | 'rtl' {\n // Strong RTL characters\n if (UNICODE_CATEGORIES.R.test(char) || UNICODE_CATEGORIES.AL.test(char)) {\n return 'rtl';\n }\n \n // Strong LTR characters \n if (UNICODE_CATEGORIES.L.test(char)) {\n return 'ltr';\n }\n \n // Numbers follow base direction in simplified algorithm\n if (UNICODE_CATEGORIES.EN.test(char) || UNICODE_CATEGORIES.AN.test(char)) {\n return baseDirection;\n }\n \n // Neutral characters follow context\n return baseDirection;\n}\n\n/**\n * Advanced word breaking for different scripts\n */\nexport function breakWordsAdvanced(text: string): string[] {\n const script = detectScript(text);\n \n switch (script) {\n case 'cjk':\n // CJK can break at most characters\n return Array.from(text);\n \n case 'thai':\n // Thai doesn't use spaces - would need dictionary-based breaking\n // For now, fall back to character-based breaking\n return Array.from(text);\n \n case 'arabic':\n case 'hebrew':\n // Handle RTL scripts\n return text.split(/\\s+/).filter(word => word.length > 0);\n \n default:\n // Standard space-based word breaking\n return text.split(/\\s+/).filter(word => word.length > 0);\n }\n}\n\n/**\n * Check if text needs right-to-left processing\n */\nexport function needsRTLProcessing(text: string): boolean {\n for (const char of text) {\n if (isRTLCharacter(char)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Reverse text for RTL display (simplified - real RTL is more complex)\n */\nexport function reverseForRTL(text: string): string {\n // This is a simplified implementation\n // Real RTL processing requires full BiDi algorithm\n const graphemes = segmentGraphemes(text);\n return graphemes.reverse().join('');\n}\n\n/**\n * Get appropriate line breaking class for character\n */\nexport function getLineBreakClass(char: string): string {\n // Simplified line breaking classes\n if (/\\s/.test(char)) return 'SP';\n if (/[!-\\/:-@\\[-`{-~]/.test(char)) return 'BA'; // Break after\n if (/[(\\[{]/.test(char)) return 'OP'; // Open punctuation\n if (/[)\\]}]/.test(char)) return 'CL'; // Close punctuation\n if (/\\d/.test(char)) return 'NU'; // Numeric\n if (/[A-Za-z]/.test(char)) return 'AL'; // Alphabetic\n \n return 'AL'; // Default to alphabetic\n}\n\n/**\n * Check if line break is allowed between two characters\n */\nexport function isLineBreakAllowed(before: string, after: string): boolean {\n const beforeClass = getLineBreakClass(before);\n const afterClass = getLineBreakClass(after);\n \n // Simplified line breaking rules\n if (beforeClass === 'OP') return false; // Don't break after opening\n if (afterClass === 'CL') return false; // Don't break before closing\n if (beforeClass === 'SP') return true; // Always allow break after space\n \n return true; // Default allow\n}"],"names":["segmentGraphemes","text","Intl","segments","Segmenter","undefined","granularity","segment","Array","from","e","graphemeSplit"],"mappings":"4DAgEO,SAASA,EAAiBC,GAE/B,GAAoB,oBAATC,MAAwB,cAAeA,KAChD,IACE,MAIMC,EAJY,IAAID,KAAKE,eAAUC,EAAW,CAC9CC,YAAa,aAGYC,QAAQN,GACnC,OAAOO,MAAMC,KAAKN,EAAUI,GAAWA,EAAQA,QACjD,CAAE,MAAOG,GACP,CAKJ,OAAOC,EAAcV,EACvB"}
@@ -1,16 +1,16 @@
1
1
  import { graphemeSplit } from '../util/lang_string.mjs';
2
2
 
3
- /**
4
- * Unicode and Internationalization Support
5
- *
6
- * Enhanced Unicode handling for complex scripts, RTL/LTR text,
7
- * and grapheme cluster boundary detection.
3
+ /**
4
+ * Unicode and Internationalization Support
5
+ *
6
+ * Enhanced Unicode handling for complex scripts, RTL/LTR text,
7
+ * and grapheme cluster boundary detection.
8
8
  */
9
9
 
10
10
 
11
- /**
12
- * Enhanced grapheme segmentation using Intl.Segmenter when available
13
- * with fallback to existing graphemeSplit implementation
11
+ /**
12
+ * Enhanced grapheme segmentation using Intl.Segmenter when available
13
+ * with fallback to existing graphemeSplit implementation
14
14
  */
15
15
  function segmentGraphemes(text) {
16
16
  // Use native Intl.Segmenter if available