@nasser-sw/fabric 7.0.1-beta10 → 7.0.1-beta11

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 (2537) 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 +1069 -1013
  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 +1069 -1013
  133. package/dist/index.mjs.map +1 -1
  134. package/dist/index.node.cjs +1069 -1013
  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 +1069 -1013
  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 +162 -152
  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 +1 -1
  1038. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +1 -1
  1039. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  1040. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +47 -1
  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 +0 -0
  1147. package/dist/src/shapes/Text/Text.d.ts.map +0 -0
  1148. package/dist/src/shapes/Text/Text.min.mjs +0 -0
  1149. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  1150. package/dist/src/shapes/Text/Text.mjs +294 -294
  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 +0 -0
  1165. package/dist/src/shapes/Textbox.d.ts.map +0 -0
  1166. package/dist/src/shapes/Textbox.min.mjs +0 -0
  1167. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  1168. package/dist/src/shapes/Textbox.mjs +168 -168
  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 +0 -0
  1177. package/dist/src/text/browserLines.d.ts.map +0 -0
  1178. package/dist/src/text/browserLines.min.mjs +0 -0
  1179. package/dist/src/text/browserLines.min.mjs.map +1 -1
  1180. package/dist/src/text/browserLines.mjs +20 -20
  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 +0 -0
  1207. package/dist/src/text/overlayEditor.d.ts.map +0 -0
  1208. package/dist/src/text/overlayEditor.min.mjs +0 -0
  1209. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  1210. package/dist/src/text/overlayEditor.mjs +33 -33
  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 +1 -1
  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 +0 -0
  1957. package/dist-extensions/src/shapes/Text/Text.d.ts.map +0 -0
  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 +0 -0
  1963. package/dist-extensions/src/shapes/Textbox.d.ts.map +0 -0
  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 +0 -0
  1967. package/dist-extensions/src/text/browserLines.d.ts.map +0 -0
  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 +0 -0
  1977. package/dist-extensions/src/text/overlayEditor.d.ts.map +0 -0
  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/publish-next.js +0 -0
  2130. package/publish.js +0 -0
  2131. package/rollup.config.mjs +0 -0
  2132. package/scripts/bench-text.js +591 -591
  2133. package/scripts/build.mjs +0 -0
  2134. package/scripts/buildLock.mjs +0 -0
  2135. package/scripts/buildReporter.mjs +0 -0
  2136. package/scripts/buildStats.mjs +0 -0
  2137. package/scripts/dirname.mjs +0 -0
  2138. package/scripts/git.mjs +0 -0
  2139. package/scripts/index.mjs +0 -0
  2140. package/scripts/sandbox.mjs +0 -0
  2141. package/src/ClassRegistry.spec.ts +0 -0
  2142. package/src/ClassRegistry.ts +0 -0
  2143. package/src/Collection.spec.ts +0 -0
  2144. package/src/Collection.ts +0 -0
  2145. package/src/CommonMethods.ts +0 -0
  2146. package/src/EventTypeDefs.ts +0 -0
  2147. package/src/Intersection.spec.ts +0 -0
  2148. package/src/Intersection.ts +0 -0
  2149. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
  2150. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
  2151. package/src/LayoutManager/LayoutManager.spec.ts +0 -0
  2152. package/src/LayoutManager/LayoutManager.ts +0 -0
  2153. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
  2154. package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
  2155. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
  2156. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
  2157. package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
  2158. package/src/LayoutManager/README.md +0 -0
  2159. package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
  2160. package/src/LayoutManager/constants.ts +0 -0
  2161. package/src/LayoutManager/index.ts +0 -0
  2162. package/src/LayoutManager/types.ts +0 -0
  2163. package/src/Observable.spec.ts +0 -0
  2164. package/src/Observable.ts +0 -0
  2165. package/src/Pattern/Pattern.spec.ts +0 -0
  2166. package/src/Pattern/Pattern.ts +0 -0
  2167. package/src/Pattern/index.ts +0 -0
  2168. package/src/Pattern/types.ts +0 -0
  2169. package/src/Point.spec.ts +0 -0
  2170. package/src/Point.ts +0 -0
  2171. package/src/Shadow.spec.ts +0 -0
  2172. package/src/Shadow.ts +0 -0
  2173. package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
  2174. package/src/brushes/BaseBrush.spec.ts +0 -0
  2175. package/src/brushes/BaseBrush.ts +0 -0
  2176. package/src/brushes/CircleBrush.test.ts +0 -0
  2177. package/src/brushes/CircleBrush.ts +0 -0
  2178. package/src/brushes/PatternBrush.ts +0 -0
  2179. package/src/brushes/PencilBrush.spec.ts +0 -0
  2180. package/src/brushes/PencilBrush.ts +0 -0
  2181. package/src/brushes/SprayBrush.ts +0 -0
  2182. package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
  2183. package/src/brushes/typedefs.ts +0 -0
  2184. package/src/cache.spec.ts +0 -0
  2185. package/src/cache.ts +0 -0
  2186. package/src/canvas/Canvas-dispose.spec.ts +0 -0
  2187. package/src/canvas/Canvas-events.spec.ts +0 -0
  2188. package/src/canvas/Canvas.spec.ts +0 -0
  2189. package/src/canvas/Canvas.ts +0 -0
  2190. package/src/canvas/CanvasOptions.ts +0 -0
  2191. package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
  2192. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
  2193. package/src/canvas/DOMManagers/util.spec.ts +0 -0
  2194. package/src/canvas/DOMManagers/util.ts +0 -0
  2195. package/src/canvas/SelectableCanvas.spec.ts +0 -0
  2196. package/src/canvas/SelectableCanvas.ts +0 -0
  2197. package/src/canvas/StaticCanvas.spec.ts +0 -0
  2198. package/src/canvas/StaticCanvas.ts +0 -0
  2199. package/src/canvas/StaticCanvasOptions.ts +0 -0
  2200. package/src/canvas/TextEditingManager.ts +0 -0
  2201. package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
  2202. package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
  2203. package/src/canvas/__tests__/eventData.test.ts +0 -0
  2204. package/src/canvas/canvas_gestures.mixin.ts +0 -0
  2205. package/src/color/Color.ts +0 -0
  2206. package/src/color/color.test.ts +0 -0
  2207. package/src/color/color_map.ts +0 -0
  2208. package/src/color/constants.ts +0 -0
  2209. package/src/color/typedefs.ts +0 -0
  2210. package/src/color/util.ts +0 -0
  2211. package/src/config.ts +0 -0
  2212. package/src/constants.ts +0 -0
  2213. package/src/controls/Control-cursor.spec.ts +0 -0
  2214. package/src/controls/Control-handlers.spec.ts +0 -0
  2215. package/src/controls/Control.spec.ts +0 -0
  2216. package/src/controls/Control.ts +0 -0
  2217. package/src/controls/changeHeight.ts +0 -0
  2218. package/src/controls/changeWidth.test.ts +0 -0
  2219. package/src/controls/changeWidth.ts +0 -0
  2220. package/src/controls/commonControls.ts +0 -0
  2221. package/src/controls/controlRendering.ts +0 -0
  2222. package/src/controls/drag.ts +0 -0
  2223. package/src/controls/fireEvent.ts +0 -0
  2224. package/src/controls/index.ts +0 -0
  2225. package/src/controls/pathControl.spec.ts +0 -0
  2226. package/src/controls/pathControl.ts +0 -0
  2227. package/src/controls/polyControl.spec.ts +0 -0
  2228. package/src/controls/polyControl.ts +0 -0
  2229. package/src/controls/rotate.ts +0 -0
  2230. package/src/controls/scale.test.ts +0 -0
  2231. package/src/controls/scale.ts +0 -0
  2232. package/src/controls/scaleSkew.ts +0 -0
  2233. package/src/controls/skew.ts +0 -0
  2234. package/src/controls/util.ts +0 -0
  2235. package/src/controls/wrapWithFireEvent.ts +0 -0
  2236. package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
  2237. package/src/controls/wrapWithFixedAnchor.ts +0 -0
  2238. package/src/env/browser.ts +0 -0
  2239. package/src/env/env.spec.ts +0 -0
  2240. package/src/env/index.ts +0 -0
  2241. package/src/env/node.ts +0 -0
  2242. package/src/env/types.ts +0 -0
  2243. package/src/filters/BaseFilter.spec.ts +0 -0
  2244. package/src/filters/BaseFilter.ts +0 -0
  2245. package/src/filters/BlendColor.ts +0 -0
  2246. package/src/filters/BlendImage.ts +0 -0
  2247. package/src/filters/Blur.ts +0 -0
  2248. package/src/filters/Boilerplate.ts +0 -0
  2249. package/src/filters/Brightness.ts +0 -0
  2250. package/src/filters/Canvas2dFilterBackend.ts +0 -0
  2251. package/src/filters/ColorMatrix.spec.ts +0 -0
  2252. package/src/filters/ColorMatrix.ts +0 -0
  2253. package/src/filters/ColorMatrixFilters.ts +0 -0
  2254. package/src/filters/Composed.ts +0 -0
  2255. package/src/filters/Contrast.ts +0 -0
  2256. package/src/filters/Convolute.ts +0 -0
  2257. package/src/filters/FilterBackend.ts +0 -0
  2258. package/src/filters/GLProbes/GLProbe.ts +0 -0
  2259. package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
  2260. package/src/filters/GLProbes/WebGLProbe.ts +0 -0
  2261. package/src/filters/Gamma.ts +0 -0
  2262. package/src/filters/Grayscale.ts +0 -0
  2263. package/src/filters/HueRotation.ts +0 -0
  2264. package/src/filters/Invert.ts +0 -0
  2265. package/src/filters/Noise.ts +0 -0
  2266. package/src/filters/Pixelate.ts +0 -0
  2267. package/src/filters/RemoveColor.ts +0 -0
  2268. package/src/filters/Resize.ts +0 -0
  2269. package/src/filters/Saturation.ts +0 -0
  2270. package/src/filters/Vibrance.ts +0 -0
  2271. package/src/filters/WebGLFilterBackend.spec.ts +0 -0
  2272. package/src/filters/WebGLFilterBackend.ts +0 -0
  2273. package/src/filters/filters.ts +0 -0
  2274. package/src/filters/index.ts +0 -0
  2275. package/src/filters/shaders/baseFilter.ts +0 -0
  2276. package/src/filters/shaders/blendColor.ts +0 -0
  2277. package/src/filters/shaders/blendImage.ts +0 -0
  2278. package/src/filters/shaders/blur.ts +0 -0
  2279. package/src/filters/shaders/brightness.ts +0 -0
  2280. package/src/filters/shaders/colorMatrix.ts +0 -0
  2281. package/src/filters/shaders/constrast.ts +0 -0
  2282. package/src/filters/shaders/convolute.ts +0 -0
  2283. package/src/filters/shaders/gamma.ts +0 -0
  2284. package/src/filters/shaders/grayscale.ts +0 -0
  2285. package/src/filters/shaders/invert.ts +0 -0
  2286. package/src/filters/shaders/noise.ts +0 -0
  2287. package/src/filters/shaders/pixelate.ts +0 -0
  2288. package/src/filters/shaders/removeColor.ts +0 -0
  2289. package/src/filters/shaders/saturation.ts +0 -0
  2290. package/src/filters/shaders/vibrance.ts +0 -0
  2291. package/src/filters/typedefs.ts +0 -0
  2292. package/src/filters/utils.ts +0 -0
  2293. package/src/gradient/Gradient.spec.ts +0 -0
  2294. package/src/gradient/Gradient.ts +0 -0
  2295. package/src/gradient/constants.ts +0 -0
  2296. package/src/gradient/index.ts +0 -0
  2297. package/src/gradient/parser/misc.ts +0 -0
  2298. package/src/gradient/parser/parseColorStops.ts +0 -0
  2299. package/src/gradient/parser/parseCoords.ts +0 -0
  2300. package/src/gradient/typedefs.ts +0 -0
  2301. package/src/mixins/eraser_brush.mixin.ts +0 -0
  2302. package/src/parkinglot/canvas_animation.mixin.ts +0 -0
  2303. package/src/parkinglot/straighten.ts +0 -0
  2304. package/src/parser/applyViewboxTransform.spec.ts +0 -0
  2305. package/src/parser/applyViewboxTransform.ts +0 -0
  2306. package/src/parser/attributes.ts +0 -0
  2307. package/src/parser/constants.spec.ts +0 -0
  2308. package/src/parser/constants.ts +0 -0
  2309. package/src/parser/doesSomeParentMatch.ts +0 -0
  2310. package/src/parser/elementMatchesRule.ts +0 -0
  2311. package/src/parser/elements_parser.ts +0 -0
  2312. package/src/parser/getCSSRules.spec.ts +0 -0
  2313. package/src/parser/getCSSRules.ts +0 -0
  2314. package/src/parser/getGlobalStylesForElement.ts +0 -0
  2315. package/src/parser/getGradientDefs.ts +0 -0
  2316. package/src/parser/getMultipleNodes.ts +0 -0
  2317. package/src/parser/getSvgRegex.ts +0 -0
  2318. package/src/parser/getTagName.ts +0 -0
  2319. package/src/parser/hasInvalidAncestor.ts +0 -0
  2320. package/src/parser/loadSVGFromString.test.ts +0 -0
  2321. package/src/parser/loadSVGFromString.ts +0 -0
  2322. package/src/parser/loadSVGFromURL.ts +0 -0
  2323. package/src/parser/normalizeAttr.ts +0 -0
  2324. package/src/parser/normalizeValue.ts +0 -0
  2325. package/src/parser/parseAttributes.ts +0 -0
  2326. package/src/parser/parseFontDeclaration.ts +0 -0
  2327. package/src/parser/parsePointsAttribute.ts +0 -0
  2328. package/src/parser/parseSVGDocument.ts +0 -0
  2329. package/src/parser/parseStyleAttribute.ts +0 -0
  2330. package/src/parser/parseStyleObject.ts +0 -0
  2331. package/src/parser/parseStyleString.ts +0 -0
  2332. package/src/parser/parseTransformAttribute.ts +0 -0
  2333. package/src/parser/parseUseDirectives.test.ts +0 -0
  2334. package/src/parser/parseUseDirectives.ts +0 -0
  2335. package/src/parser/parser.spec.ts +0 -0
  2336. package/src/parser/percent.ts +0 -0
  2337. package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
  2338. package/src/parser/selectorMatches.ts +0 -0
  2339. package/src/parser/setStrokeFillOpacity.ts +0 -0
  2340. package/src/parser/typedefs.ts +0 -0
  2341. package/src/shapes/ActiveSelection.spec.ts +0 -0
  2342. package/src/shapes/ActiveSelection.ts +0 -0
  2343. package/src/shapes/Circle.spec.ts +0 -0
  2344. package/src/shapes/Circle.ts +0 -0
  2345. package/src/shapes/Ellipse.spec.ts +0 -0
  2346. package/src/shapes/Ellipse.ts +0 -0
  2347. package/src/shapes/Group.spec.ts +0 -0
  2348. package/src/shapes/Group.ts +0 -0
  2349. package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
  2350. package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
  2351. package/src/shapes/IText/IText.test.ts +0 -0
  2352. package/src/shapes/IText/IText.ts +846 -846
  2353. package/src/shapes/IText/ITextBehavior.test.ts +0 -0
  2354. package/src/shapes/IText/ITextBehavior.ts +1187 -1176
  2355. package/src/shapes/IText/ITextClickBehavior.ts +254 -254
  2356. package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
  2357. package/src/shapes/IText/ITextKeyBehavior.ts +41 -0
  2358. package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
  2359. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
  2360. package/src/shapes/IText/constants.ts +0 -0
  2361. package/src/shapes/Image-filters.spec.ts +0 -0
  2362. package/src/shapes/Image.spec.ts +0 -0
  2363. package/src/shapes/Image.ts +0 -0
  2364. package/src/shapes/Line.spec.ts +0 -0
  2365. package/src/shapes/Line.ts +0 -0
  2366. package/src/shapes/Object/FabricObject.spec.ts +0 -0
  2367. package/src/shapes/Object/FabricObject.ts +0 -0
  2368. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
  2369. package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
  2370. package/src/shapes/Object/InteractiveObject.ts +0 -0
  2371. package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
  2372. package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
  2373. package/src/shapes/Object/Object.spec.ts +0 -0
  2374. package/src/shapes/Object/Object.ts +0 -0
  2375. package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
  2376. package/src/shapes/Object/ObjectGeometry.ts +0 -0
  2377. package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
  2378. package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
  2379. package/src/shapes/Object/StackedObject.spec.ts +0 -0
  2380. package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
  2381. package/src/shapes/Object/defaultValues.ts +0 -0
  2382. package/src/shapes/Object/types/BaseProps.ts +0 -0
  2383. package/src/shapes/Object/types/BorderProps.ts +0 -0
  2384. package/src/shapes/Object/types/ControlProps.ts +0 -0
  2385. package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
  2386. package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
  2387. package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
  2388. package/src/shapes/Object/types/ObjectProps.ts +0 -0
  2389. package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
  2390. package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
  2391. package/src/shapes/Object/types/index.ts +0 -0
  2392. package/src/shapes/Path.spec.ts +0 -0
  2393. package/src/shapes/Path.ts +0 -0
  2394. package/src/shapes/Polygon.spec.ts +0 -0
  2395. package/src/shapes/Polygon.ts +0 -0
  2396. package/src/shapes/Polyline.spec.ts +0 -0
  2397. package/src/shapes/Polyline.ts +0 -0
  2398. package/src/shapes/Rect.spec.ts +0 -0
  2399. package/src/shapes/Rect.ts +0 -0
  2400. package/src/shapes/Text/StyledText.spec.ts +0 -0
  2401. package/src/shapes/Text/StyledText.ts +0 -0
  2402. package/src/shapes/Text/Text.spec.ts +0 -0
  2403. package/src/shapes/Text/Text.ts +2459 -2459
  2404. package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
  2405. package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
  2406. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
  2407. package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
  2408. package/src/shapes/Text/constants.ts +134 -134
  2409. package/src/shapes/Textbox.spec.ts +0 -0
  2410. package/src/shapes/Textbox.ts +1320 -1320
  2411. package/src/shapes/Triangle.spec.ts +0 -0
  2412. package/src/shapes/Triangle.ts +0 -0
  2413. package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
  2414. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
  2415. package/src/text/browserLines.ts +233 -233
  2416. package/src/text/ellipsis.ts +516 -516
  2417. package/src/text/hitTest.ts +623 -623
  2418. package/src/text/layout.ts +586 -586
  2419. package/src/text/measure.ts +626 -626
  2420. package/src/text/overlayEditor.ts +1047 -1047
  2421. package/src/text/unicode.ts +454 -454
  2422. package/src/typedefs.ts +0 -0
  2423. package/src/util/__snapshots__/index.spec.ts.snap +0 -0
  2424. package/src/util/animation/AnimationBase.ts +0 -0
  2425. package/src/util/animation/AnimationFrameProvider.ts +0 -0
  2426. package/src/util/animation/AnimationRegistry.ts +0 -0
  2427. package/src/util/animation/ArrayAnimation.ts +0 -0
  2428. package/src/util/animation/ColorAnimation.ts +0 -0
  2429. package/src/util/animation/ValueAnimation.ts +0 -0
  2430. package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
  2431. package/src/util/animation/animate.ts +0 -0
  2432. package/src/util/animation/animations.spec.ts +0 -0
  2433. package/src/util/animation/easing.ts +0 -0
  2434. package/src/util/animation/index.ts +0 -0
  2435. package/src/util/animation/types.ts +0 -0
  2436. package/src/util/applyMixins.ts +0 -0
  2437. package/src/util/dom_event.spec.ts +0 -0
  2438. package/src/util/dom_event.ts +0 -0
  2439. package/src/util/dom_misc.ts +0 -0
  2440. package/src/util/index.spec.ts +0 -0
  2441. package/src/util/index.ts +0 -0
  2442. package/src/util/internals/applyCanvasTransform.ts +0 -0
  2443. package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
  2444. package/src/util/internals/cleanupSvgAttribute.ts +0 -0
  2445. package/src/util/internals/cloneStyles.spec.ts +0 -0
  2446. package/src/util/internals/cloneStyles.ts +0 -0
  2447. package/src/util/internals/console.ts +0 -0
  2448. package/src/util/internals/dom_style.spec.ts +0 -0
  2449. package/src/util/internals/dom_style.ts +0 -0
  2450. package/src/util/internals/findRight.ts +0 -0
  2451. package/src/util/internals/getRandomInt.test.ts +0 -0
  2452. package/src/util/internals/getRandomInt.ts +0 -0
  2453. package/src/util/internals/ifNaN.ts +0 -0
  2454. package/src/util/internals/removeFromArray.spec.ts +0 -0
  2455. package/src/util/internals/removeFromArray.ts +0 -0
  2456. package/src/util/internals/uid.ts +0 -0
  2457. package/src/util/lang_string.spec.ts +0 -0
  2458. package/src/util/lang_string.ts +0 -0
  2459. package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
  2460. package/src/util/misc/boundingBoxFromPoints.ts +0 -0
  2461. package/src/util/misc/capValue.spec.ts +0 -0
  2462. package/src/util/misc/capValue.ts +0 -0
  2463. package/src/util/misc/cornerRadius.spec.ts +0 -0
  2464. package/src/util/misc/cornerRadius.ts +0 -0
  2465. package/src/util/misc/cos.spec.ts +0 -0
  2466. package/src/util/misc/cos.ts +0 -0
  2467. package/src/util/misc/dom.spec.ts +0 -0
  2468. package/src/util/misc/dom.ts +0 -0
  2469. package/src/util/misc/findScaleTo.spec.ts +0 -0
  2470. package/src/util/misc/findScaleTo.ts +0 -0
  2471. package/src/util/misc/groupSVGElements.spec.ts +0 -0
  2472. package/src/util/misc/groupSVGElements.ts +0 -0
  2473. package/src/util/misc/isTransparent.ts +0 -0
  2474. package/src/util/misc/matrix.spec.ts +0 -0
  2475. package/src/util/misc/matrix.ts +0 -0
  2476. package/src/util/misc/mergeClipPaths.spec.ts +0 -0
  2477. package/src/util/misc/mergeClipPaths.ts +0 -0
  2478. package/src/util/misc/objectEnlive.spec.ts +0 -0
  2479. package/src/util/misc/objectEnlive.ts +0 -0
  2480. package/src/util/misc/objectTransforms.spec.ts +0 -0
  2481. package/src/util/misc/objectTransforms.ts +0 -0
  2482. package/src/util/misc/pick.spec.ts +0 -0
  2483. package/src/util/misc/pick.ts +0 -0
  2484. package/src/util/misc/planeChange.spec.ts +0 -0
  2485. package/src/util/misc/planeChange.ts +0 -0
  2486. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
  2487. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
  2488. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
  2489. package/src/util/misc/projectStroke/index.ts +0 -0
  2490. package/src/util/misc/projectStroke/types.ts +0 -0
  2491. package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
  2492. package/src/util/misc/radiansDegreesConversion.ts +0 -0
  2493. package/src/util/misc/resolveOrigin.ts +0 -0
  2494. package/src/util/misc/sin.ts +0 -0
  2495. package/src/util/misc/svgExport.ts +0 -0
  2496. package/src/util/misc/svgParsing.spec.ts +0 -0
  2497. package/src/util/misc/svgParsing.ts +0 -0
  2498. package/src/util/misc/textStyles.ts +0 -0
  2499. package/src/util/misc/toFixed.spec.ts +0 -0
  2500. package/src/util/misc/toFixed.ts +0 -0
  2501. package/src/util/misc/vectors.spec.ts +0 -0
  2502. package/src/util/misc/vectors.ts +0 -0
  2503. package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
  2504. package/src/util/path/index.spec.ts +0 -0
  2505. package/src/util/path/index.ts +0 -0
  2506. package/src/util/path/regex.ts +0 -0
  2507. package/src/util/path/typechecks.ts +0 -0
  2508. package/src/util/path/typedefs.ts +0 -0
  2509. package/src/util/transform_matrix_removal.ts +0 -0
  2510. package/src/util/typeAssertions.spec.ts +0 -0
  2511. package/src/util/typeAssertions.ts +0 -0
  2512. package/tsconfig-extensions.json +0 -0
  2513. package/tsconfig.json +0 -0
  2514. package/tsconfig.spec.json +0 -0
  2515. package/typedoc.config.json +0 -0
  2516. package/vitest.config.ts +0 -0
  2517. package/vitest.d.ts +0 -0
  2518. package/vitest.env.d.ts +0 -0
  2519. package/vitest.extend.ts +0 -0
  2520. package/vitest.setup.ts +0 -0
  2521. package/dist/src/text/examples/arabicTextExample.d.ts +0 -60
  2522. package/dist/src/text/examples/arabicTextExample.d.ts.map +0 -1
  2523. package/dist/src/text/scriptUtils.d.ts +0 -142
  2524. package/dist/src/text/scriptUtils.d.ts.map +0 -1
  2525. package/dist/src/text/scriptUtils.min.mjs +0 -2
  2526. package/dist/src/text/scriptUtils.min.mjs.map +0 -1
  2527. package/dist/src/text/scriptUtils.mjs +0 -212
  2528. package/dist/src/text/scriptUtils.mjs.map +0 -1
  2529. package/dist-extensions/src/shapes/CustomLine.d.ts +0 -10
  2530. package/dist-extensions/src/shapes/CustomLine.d.ts.map +0 -1
  2531. package/dist-extensions/src/text/scriptUtils.d.ts +0 -142
  2532. package/dist-extensions/src/text/scriptUtils.d.ts.map +0 -1
  2533. package/fabric-test-editor.html +0 -3552
  2534. package/fabric-test2.html +0 -647
  2535. package/fonts/STV Bold.ttf +0 -0
  2536. package/fonts/STV Light.ttf +0 -0
  2537. package/fonts/STV Regular.ttf +0 -0
@@ -1,1320 +1,1320 @@
1
- import type { TClassProperties, TOptions } from '../typedefs';
2
- import { IText } from './IText/IText';
3
- import { classRegistry } from '../ClassRegistry';
4
- import { createTextboxDefaultControls } from '../controls/commonControls';
5
- import { JUSTIFY, JUSTIFY_CENTER } from './Text/constants';
6
- import type { TextStyleDeclaration } from './Text/StyledText';
7
- import type { SerializedITextProps, ITextProps } from './IText/IText';
8
- import type { ITextEvents } from './IText/ITextBehavior';
9
- import type { TextLinesInfo } from './Text/Text';
10
- import type { Control } from '../controls/Control';
11
- import { fontLacksEnglishGlyphsCached } from '../text/measure';
12
- import { layoutText } from '../text/layout';
13
-
14
- // @TODO: Many things here are configuration related and shouldn't be on the class nor prototype
15
- // regexes, list of properties that are not suppose to change by instances, magic consts.
16
- // this will be a separated effort
17
- export const textboxDefaultValues: Partial<TClassProperties<Textbox>> = {
18
- minWidth: 20,
19
- dynamicMinWidth: 2,
20
- lockScalingFlip: true,
21
- noScaleCache: false,
22
- _wordJoiners: /[ \t\r]/,
23
- splitByGrapheme: false,
24
- };
25
-
26
- export type GraphemeData = {
27
- wordsData: {
28
- word: string[];
29
- width: number;
30
- }[][];
31
- largestWordWidth: number;
32
- };
33
-
34
- export type StyleMap = Record<string, { line: number; offset: number }>;
35
-
36
- // @TODO this is not complete
37
- interface UniqueTextboxProps {
38
- minWidth: number;
39
- splitByGrapheme: boolean;
40
- dynamicMinWidth: number;
41
- _wordJoiners: RegExp;
42
- }
43
-
44
- export interface SerializedTextboxProps
45
- extends SerializedITextProps,
46
- Pick<UniqueTextboxProps, 'minWidth' | 'splitByGrapheme'> {}
47
-
48
- export interface TextboxProps extends ITextProps, UniqueTextboxProps {}
49
-
50
- /**
51
- * Textbox class, based on IText, allows the user to resize the text rectangle
52
- * and wraps lines automatically. Textboxes have their Y scaling locked, the
53
- * user can only change width. Height is adjusted automatically based on the
54
- * wrapping of lines.
55
- */
56
- export class Textbox<
57
- Props extends TOptions<TextboxProps> = Partial<TextboxProps>,
58
- SProps extends SerializedTextboxProps = SerializedTextboxProps,
59
- EventSpec extends ITextEvents = ITextEvents,
60
- >
61
- extends IText<Props, SProps, EventSpec>
62
- implements UniqueTextboxProps
63
- {
64
- /**
65
- * Minimum width of textbox, in pixels.
66
- * @type Number
67
- */
68
- declare minWidth: number;
69
-
70
- /**
71
- * Minimum calculated width of a textbox, in pixels.
72
- * fixed to 2 so that an empty textbox cannot go to 0
73
- * and is still selectable without text.
74
- * @type Number
75
- */
76
- declare dynamicMinWidth: number;
77
-
78
- /**
79
- * Use this boolean property in order to split strings that have no white space concept.
80
- * this is a cheap way to help with chinese/japanese
81
- * @type Boolean
82
- * @since 2.6.0
83
- */
84
- declare splitByGrapheme: boolean;
85
-
86
- declare _wordJoiners: RegExp;
87
-
88
- declare _styleMap: StyleMap;
89
-
90
- declare isWrapping: boolean;
91
-
92
- static type = 'Textbox';
93
-
94
- static textLayoutProperties = [...IText.textLayoutProperties, 'width'];
95
-
96
- static ownDefaults = textboxDefaultValues;
97
-
98
- static getDefaults(): Record<string, any> {
99
- return {
100
- ...super.getDefaults(),
101
- ...Textbox.ownDefaults,
102
- };
103
- }
104
-
105
- /**
106
- * Constructor
107
- * @param {String} text Text string
108
- * @param {Object} [options] Options object
109
- */
110
- constructor(text: string, options?: Props) {
111
- super(text, { ...Textbox.ownDefaults, ...options } as Props);
112
- this.initializeEventListeners();
113
- }
114
-
115
- /**
116
- * Creates the default control object.
117
- * If you prefer to have on instance of controls shared among all objects
118
- * make this function return an empty object and add controls to the ownDefaults object
119
- */
120
- static createControls(): { controls: Record<string, Control> } {
121
- return { controls: createTextboxDefaultControls() };
122
- }
123
-
124
- /**
125
- * Unlike superclass's version of this function, Textbox does not update
126
- * its width.
127
- * @private
128
- * @override
129
- */
130
- initDimensions() {
131
- if (!this.initialized) {
132
- this.initialized = true;
133
- }
134
-
135
- // Prevent rapid recalculations during moves
136
- if ((this as any)._usingBrowserWrapping) {
137
- const now = Date.now();
138
- const lastCall = (this as any)._lastInitDimensionsTime || 0;
139
- const isRapidCall = now - lastCall < 100;
140
- const isDuringLoading = (this as any)._jsonLoading || !(this as any)._browserWrapInitialized;
141
-
142
- if (isRapidCall && !isDuringLoading) {
143
- return;
144
- }
145
- (this as any)._lastInitDimensionsTime = now;
146
- }
147
-
148
- // Skip if nothing changed
149
- const currentState = `${this.text}|${this.width}|${this.fontSize}|${this.fontFamily}|${this.textAlign}`;
150
- if ((this as any)._lastDimensionState === currentState && this._textLines && this._textLines.length > 0) {
151
- return;
152
- }
153
- (this as any)._lastDimensionState = currentState;
154
-
155
- // Use advanced layout if enabled
156
- if (this.enableAdvancedLayout) {
157
- return this.initDimensionsAdvanced();
158
- }
159
-
160
- this.isEditing && this.initDelayedCursor();
161
- this._clearCache();
162
- // clear dynamicMinWidth as it will be different after we re-wrap line
163
- this.dynamicMinWidth = 0;
164
- // wrap lines
165
- const splitTextResult = this._splitText();
166
- this._styleMap = this._generateStyleMap(splitTextResult);
167
-
168
- // For browser wrapping, ensure _textLines is set from browser results
169
- if ((this as any)._usingBrowserWrapping && splitTextResult && splitTextResult.lines) {
170
- this._textLines = splitTextResult.lines.map(line => line.split(''));
171
-
172
- // Store justify measurements and browser height
173
- const justifyMeasurements = (splitTextResult as any).justifySpaceMeasurements;
174
- if (justifyMeasurements) {
175
- (this._styleMap as any).justifySpaceMeasurements = justifyMeasurements;
176
- }
177
-
178
- const actualHeight = (splitTextResult as any).actualBrowserHeight;
179
- if (actualHeight) {
180
- (this as any)._actualBrowserHeight = actualHeight;
181
- }
182
- }
183
- // Don't auto-resize width when using browser wrapping to prevent width increases during moves
184
- if (!((this as any)._usingBrowserWrapping) && this.dynamicMinWidth > this.width) {
185
- this._set('width', this.dynamicMinWidth);
186
- }
187
-
188
- // For browser wrapping fonts (like STV), ensure minimum width for new textboxes
189
- // since these fonts can't measure English characters properly
190
- if ((this as any)._usingBrowserWrapping && this.width < 50) {
191
- console.log(`🔤 BROWSER WRAP: Font ${this.fontFamily} has width ${this.width}px, setting to 300px for usability`);
192
- this.width = 300;
193
- }
194
-
195
- // Mark browser wrapping as initialized when complete
196
- if ((this as any)._usingBrowserWrapping) {
197
- (this as any)._browserWrapInitialized = true;
198
- }
199
-
200
- if (this.textAlign.includes(JUSTIFY)) {
201
- // For browser wrapping fonts, apply browser-calculated justify spaces
202
- if ((this as any)._usingBrowserWrapping) {
203
- console.log('🔤 BROWSER WRAP: Applying browser-calculated justify spaces');
204
- this._applyBrowserJustifySpaces();
205
- return;
206
- }
207
-
208
- // Don't apply justify alignment during drag operations to prevent snapping
209
- const now = Date.now();
210
- const lastDragTime = (this as any)._lastInitDimensionsTime || 0;
211
- const isDuringDrag = now - lastDragTime < 200; // 200ms window for drag detection
212
-
213
- if (isDuringDrag) {
214
- console.log('🔤 Skipping justify during drag operation to prevent snapping');
215
- return;
216
- }
217
-
218
- // For non-browser-wrapping fonts, use Fabric's justify system
219
- // once text is measured we need to make space fatter to make justified text.
220
- // Ensure __charBounds exists and fonts are ready before applying justify
221
- if (this.__charBounds && this.__charBounds.length > 0) {
222
- // Check if font is ready for accurate justify calculations
223
- const fontReady = this._isFontReady ? this._isFontReady() : true;
224
- if (fontReady) {
225
- this.enlargeSpaces();
226
- } else {
227
- console.warn('⚠️ Textbox: Font not ready for justify, deferring enlargeSpaces');
228
- // Defer justify calculation until font is ready
229
- this._scheduleJustifyAfterFontLoad();
230
- }
231
- } else {
232
- console.warn('⚠️ Textbox: __charBounds not ready for justify alignment, deferring enlargeSpaces');
233
- // Defer the justify calculation until the next frame
234
- setTimeout(() => {
235
- if (this.__charBounds && this.__charBounds.length > 0 && this.enlargeSpaces) {
236
- console.log('🔧 Applying deferred Textbox justify alignment');
237
- this.enlargeSpaces();
238
- this.canvas?.requestRenderAll();
239
- }
240
- }, 0);
241
- }
242
- }
243
- // Calculate height - use Fabric's calculation for proper text rendering space
244
- if ((this as any)._usingBrowserWrapping && this._textLines && this._textLines.length > 0) {
245
- const actualBrowserHeight = (this as any)._actualBrowserHeight;
246
- const oldHeight = this.height;
247
- // Use Fabric's height calculation since it knows how much space text rendering needs
248
- this.height = this.calcTextHeight();
249
-
250
- // Force canvas refresh and control update if height changed significantly
251
- if (Math.abs(this.height - oldHeight) > 1) {
252
- this.setCoords();
253
- this.canvas?.requestRenderAll();
254
-
255
- // DEBUG: Log exact positioning details
256
- console.log(`🎯 POSITIONING DEBUG:`);
257
- console.log(` Textbox height: ${this.height}px`);
258
- console.log(` Textbox top: ${this.top}px`);
259
- console.log(` Textbox left: ${this.left}px`);
260
- console.log(` Text lines: ${this._textLines?.length || 0}`);
261
- console.log(` Font size: ${this.fontSize}px`);
262
- console.log(` Line height: ${this.lineHeight || 1.16}`);
263
- console.log(` Calculated line height: ${this.fontSize * (this.lineHeight || 1.16)}px`);
264
- console.log(` _getTopOffset(): ${this._getTopOffset()}px`);
265
- console.log(` calcTextHeight(): ${this.calcTextHeight()}px`);
266
- console.log(` Browser height: ${actualBrowserHeight}px`);
267
- console.log(` Height difference: ${this.height - this.calcTextHeight()}px`);
268
- }
269
- } else {
270
- this.height = this.calcTextHeight();
271
- }
272
- }
273
-
274
- /**
275
- * Schedule justify calculation after font loads (Textbox-specific)
276
- * @private
277
- */
278
- _scheduleJustifyAfterFontLoad(): void {
279
- if (typeof document === 'undefined' || !('fonts' in document)) {
280
- return;
281
- }
282
-
283
- // Only schedule if not already waiting
284
- if ((this as any)._fontJustifyScheduled) {
285
- return;
286
- }
287
- (this as any)._fontJustifyScheduled = true;
288
-
289
- const fontSpec = `${this.fontSize}px ${this.fontFamily}`;
290
- document.fonts.load(fontSpec).then(() => {
291
- (this as any)._fontJustifyScheduled = false;
292
- console.log('🔧 Textbox: Font loaded, applying justify alignment');
293
-
294
- // Re-run initDimensions to ensure proper justify calculation
295
- this.initDimensions();
296
- this.canvas?.requestRenderAll();
297
- }).catch(() => {
298
- (this as any)._fontJustifyScheduled = false;
299
- console.warn('⚠️ Textbox: Font loading failed, justify may be incorrect');
300
- });
301
- }
302
-
303
- /**
304
- * Advanced dimensions calculation using new layout engine
305
- * @private
306
- */
307
- initDimensionsAdvanced() {
308
- if (!this.initialized) {
309
- return;
310
- }
311
-
312
- this.isEditing && this.initDelayedCursor();
313
- this._clearCache();
314
- this.dynamicMinWidth = 0;
315
-
316
- // Use new layout engine
317
- const layout = layoutText({
318
- text: this.text,
319
- width: this.width,
320
- height: this.height,
321
- wrap: this.wrap || 'word',
322
- align: (this as any)._mapTextAlignToAlign(this.textAlign),
323
- ellipsis: this.ellipsis || false,
324
- fontSize: this.fontSize,
325
- lineHeight: this.lineHeight,
326
- letterSpacing: this.letterSpacing || 0,
327
- charSpacing: this.charSpacing,
328
- direction: this.direction === 'inherit' ? 'ltr' : this.direction,
329
- fontFamily: this.fontFamily,
330
- fontStyle: this.fontStyle,
331
- fontWeight: this.fontWeight,
332
- verticalAlign: this.verticalAlign || 'top',
333
- });
334
-
335
- // Update dynamic minimum width based on layout
336
- if (layout.lines.length > 0) {
337
- const maxLineWidth = Math.max(...layout.lines.map(line => line.width));
338
- this.dynamicMinWidth = Math.max(this.minWidth, maxLineWidth);
339
- }
340
-
341
- // Adjust width if needed (preserving Textbox behavior)
342
- if (this.dynamicMinWidth > this.width) {
343
- this._set('width', this.dynamicMinWidth);
344
- // Re-layout with new width
345
- const newLayout = layoutText({
346
- ...(this as any)._getAdvancedLayoutOptions(),
347
- width: this.width,
348
- });
349
- this.height = newLayout.totalHeight;
350
- (this as any)._convertLayoutToLegacyFormat(newLayout);
351
- } else {
352
- this.height = layout.totalHeight;
353
- (this as any)._convertLayoutToLegacyFormat(layout);
354
- }
355
-
356
- // Generate style map for compatibility
357
- this._styleMap = this._generateStyleMapFromLayout(layout);
358
- this.dirty = true;
359
- }
360
-
361
- /**
362
- * Generate style map from new layout format
363
- * @private
364
- */
365
- _generateStyleMapFromLayout(layout: any): StyleMap {
366
- const map: StyleMap = {};
367
- let realLineCount = 0;
368
- let charCount = 0;
369
-
370
- layout.lines.forEach((line: any, i: number) => {
371
- if (line.text.includes('\n') && i > 0) {
372
- realLineCount++;
373
- }
374
-
375
- map[i] = { line: realLineCount, offset: 0 };
376
- charCount += line.graphemes.length;
377
-
378
- if (i < layout.lines.length - 1) {
379
- charCount += 1; // newline character
380
- }
381
- });
382
-
383
- return map;
384
- }
385
-
386
- /**
387
- * Generate an object that translates the style object so that it is
388
- * broken up by visual lines (new lines and automatic wrapping).
389
- * The original text styles object is broken up by actual lines (new lines only),
390
- * which is only sufficient for Text / IText
391
- * @private
392
- */
393
- _generateStyleMap(textInfo: TextLinesInfo): StyleMap {
394
- let realLineCount = 0,
395
- realLineCharCount = 0,
396
- charCount = 0;
397
- const map: StyleMap = {};
398
-
399
- for (let i = 0; i < textInfo.graphemeLines.length; i++) {
400
- if (textInfo.graphemeText[charCount] === '\n' && i > 0) {
401
- realLineCharCount = 0;
402
- charCount++;
403
- realLineCount++;
404
- } else if (
405
- !this.splitByGrapheme &&
406
- this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) &&
407
- i > 0
408
- ) {
409
- // this case deals with space's that are removed from end of lines when wrapping
410
- realLineCharCount++;
411
- charCount++;
412
- }
413
-
414
- map[i] = { line: realLineCount, offset: realLineCharCount };
415
-
416
- charCount += textInfo.graphemeLines[i].length;
417
- realLineCharCount += textInfo.graphemeLines[i].length;
418
- }
419
-
420
- return map;
421
- }
422
-
423
- /**
424
- * Returns true if object has a style property or has it on a specified line
425
- * @param {Number} lineIndex
426
- * @return {Boolean}
427
- */
428
- styleHas(property: keyof TextStyleDeclaration, lineIndex: number): boolean {
429
- if (this._styleMap && !this.isWrapping) {
430
- const map = this._styleMap[lineIndex];
431
- if (map) {
432
- lineIndex = map.line;
433
- }
434
- }
435
- return super.styleHas(property, lineIndex);
436
- }
437
-
438
- /**
439
- * Returns true if object has no styling or no styling in a line
440
- * @param {Number} lineIndex , lineIndex is on wrapped lines.
441
- * @return {Boolean}
442
- */
443
- isEmptyStyles(lineIndex: number): boolean {
444
- if (!this.styles) {
445
- return true;
446
- }
447
- let offset = 0,
448
- nextLineIndex = lineIndex + 1,
449
- nextOffset: number,
450
- shouldLimit = false;
451
- const map = this._styleMap[lineIndex],
452
- mapNextLine = this._styleMap[lineIndex + 1];
453
- if (map) {
454
- lineIndex = map.line;
455
- offset = map.offset;
456
- }
457
- if (mapNextLine) {
458
- nextLineIndex = mapNextLine.line;
459
- shouldLimit = nextLineIndex === lineIndex;
460
- nextOffset = mapNextLine.offset;
461
- }
462
- const obj =
463
- typeof lineIndex === 'undefined'
464
- ? this.styles
465
- : { line: this.styles[lineIndex] };
466
- for (const p1 in obj) {
467
- for (const p2 in obj[p1]) {
468
- const p2Number = parseInt(p2, 10);
469
- if (p2Number >= offset && (!shouldLimit || p2Number < nextOffset!)) {
470
- for (const p3 in obj[p1][p2]) {
471
- return false;
472
- }
473
- }
474
- }
475
- }
476
- return true;
477
- }
478
-
479
- /**
480
- * @protected
481
- * @param {Number} lineIndex
482
- * @param {Number} charIndex
483
- * @return {TextStyleDeclaration} a style object reference to the existing one or a new empty object when undefined
484
- */
485
- _getStyleDeclaration(
486
- lineIndex: number,
487
- charIndex: number,
488
- ): TextStyleDeclaration {
489
- if (this._styleMap && !this.isWrapping) {
490
- const map = this._styleMap[lineIndex];
491
- if (!map) {
492
- return {};
493
- }
494
- lineIndex = map.line;
495
- charIndex = map.offset + charIndex;
496
- }
497
- return super._getStyleDeclaration(lineIndex, charIndex);
498
- }
499
-
500
- /**
501
- * @param {Number} lineIndex
502
- * @param {Number} charIndex
503
- * @param {Object} style
504
- * @private
505
- */
506
- protected _setStyleDeclaration(
507
- lineIndex: number,
508
- charIndex: number,
509
- style: object,
510
- ) {
511
- const map = this._styleMap[lineIndex];
512
- super._setStyleDeclaration(map.line, map.offset + charIndex, style);
513
- }
514
-
515
- /**
516
- * @param {Number} lineIndex
517
- * @param {Number} charIndex
518
- * @private
519
- */
520
- protected _deleteStyleDeclaration(lineIndex: number, charIndex: number) {
521
- const map = this._styleMap[lineIndex];
522
- super._deleteStyleDeclaration(map.line, map.offset + charIndex);
523
- }
524
-
525
- /**
526
- * probably broken need a fix
527
- * Returns the real style line that correspond to the wrapped lineIndex line
528
- * Used just to verify if the line does exist or not.
529
- * @param {Number} lineIndex
530
- * @returns {Boolean} if the line exists or not
531
- * @private
532
- */
533
- protected _getLineStyle(lineIndex: number): boolean {
534
- const map = this._styleMap[lineIndex];
535
- return !!this.styles[map.line];
536
- }
537
-
538
- /**
539
- * Set the line style to an empty object so that is initialized
540
- * @param {Number} lineIndex
541
- * @param {Object} style
542
- * @private
543
- */
544
- protected _setLineStyle(lineIndex: number) {
545
- const map = this._styleMap[lineIndex];
546
- super._setLineStyle(map.line);
547
- }
548
-
549
- /**
550
- * Wraps text using the 'width' property of Textbox. First this function
551
- * splits text on newlines, so we preserve newlines entered by the user.
552
- * Then it wraps each line using the width of the Textbox by calling
553
- * _wrapLine().
554
- * @param {Array} lines The string array of text that is split into lines
555
- * @param {Number} desiredWidth width you want to wrap to
556
- * @returns {Array} Array of lines
557
- */
558
- _wrapText(lines: string[], desiredWidth: number): string[][] {
559
- this.isWrapping = true;
560
- // extract all thewords and the widths to optimally wrap lines.
561
- const data = this.getGraphemeDataForRender(lines);
562
- const wrapped: string[][] = [];
563
- for (let i = 0; i < data.wordsData.length; i++) {
564
- wrapped.push(...this._wrapLine(i, desiredWidth, data));
565
- }
566
- this.isWrapping = false;
567
- return wrapped;
568
- }
569
-
570
- /**
571
- * For each line of text terminated by an hard line stop,
572
- * measure each word width and extract the largest word from all.
573
- * The returned words here are the one that at the end will be rendered.
574
- * @param {string[]} lines the lines we need to measure
575
- *
576
- */
577
- getGraphemeDataForRender(lines: string[]): GraphemeData {
578
- const splitByGrapheme = this.splitByGrapheme,
579
- infix = splitByGrapheme ? '' : ' ';
580
-
581
- let largestWordWidth = 0;
582
-
583
- const data = lines.map((line, lineIndex) => {
584
- let offset = 0;
585
- const wordsOrGraphemes = splitByGrapheme
586
- ? this.graphemeSplit(line)
587
- : this.wordSplit(line);
588
-
589
- if (wordsOrGraphemes.length === 0) {
590
- return [{ word: [], width: 0 }];
591
- }
592
-
593
- return wordsOrGraphemes.map((word: string) => {
594
- // if using splitByGrapheme words are already in graphemes.
595
- const graphemeArray = splitByGrapheme
596
- ? [word]
597
- : this.graphemeSplit(word);
598
- const width = this._measureWord(graphemeArray, lineIndex, offset);
599
- largestWordWidth = Math.max(width, largestWordWidth);
600
- offset += graphemeArray.length + infix.length;
601
- return { word: graphemeArray, width };
602
- });
603
- });
604
-
605
- return {
606
- wordsData: data,
607
- largestWordWidth,
608
- };
609
- }
610
-
611
- /**
612
- * Helper function to measure a string of text, given its lineIndex and charIndex offset
613
- * It gets called when charBounds are not available yet.
614
- * Override if necessary
615
- * Use with {@link Textbox#wordSplit}
616
- *
617
- * @param {CanvasRenderingContext2D} ctx
618
- * @param {String} text
619
- * @param {number} lineIndex
620
- * @param {number} charOffset
621
- * @returns {number}
622
- */
623
- _measureWord(word: string[], lineIndex: number, charOffset = 0): number {
624
- let width = 0,
625
- prevGrapheme;
626
- const skipLeft = true;
627
- for (let i = 0, len = word.length; i < len; i++) {
628
- const box = this._getGraphemeBox(
629
- word[i],
630
- lineIndex,
631
- i + charOffset,
632
- prevGrapheme,
633
- skipLeft,
634
- );
635
- width += box.kernedWidth;
636
- prevGrapheme = word[i];
637
- }
638
- return width;
639
- }
640
-
641
- /**
642
- * Override this method to customize word splitting
643
- * Use with {@link Textbox#_measureWord}
644
- * @param {string} value
645
- * @returns {string[]} array of words
646
- */
647
- wordSplit(value: string): string[] {
648
- return value.split(this._wordJoiners);
649
- }
650
-
651
- /**
652
- * Wraps a line of text using the width of the Textbox as desiredWidth
653
- * and leveraging the known width o words from GraphemeData
654
- * @private
655
- * @param {Number} lineIndex
656
- * @param {Number} desiredWidth width you want to wrap the line to
657
- * @param {GraphemeData} graphemeData an object containing all the lines' words width.
658
- * @param {Number} reservedSpace space to remove from wrapping for custom functionalities
659
- * @returns {Array} Array of line(s) into which the given text is wrapped
660
- * to.
661
- */
662
- _wrapLine(
663
- lineIndex: number,
664
- desiredWidth: number,
665
- { largestWordWidth, wordsData }: GraphemeData,
666
- reservedSpace = 0,
667
- ): string[][] {
668
- const additionalSpace = this._getWidthOfCharSpacing(),
669
- splitByGrapheme = this.splitByGrapheme,
670
- graphemeLines = [],
671
- infix = splitByGrapheme ? '' : ' ';
672
-
673
- let lineWidth = 0,
674
- line: string[] = [],
675
- // spaces in different languages?
676
- offset = 0,
677
- infixWidth = 0,
678
- lineJustStarted = true;
679
-
680
- desiredWidth -= reservedSpace;
681
-
682
- const maxWidth = Math.max(
683
- desiredWidth,
684
- largestWordWidth,
685
- this.dynamicMinWidth,
686
- );
687
- // layout words
688
- const data = wordsData[lineIndex];
689
- offset = 0;
690
- let i;
691
- for (i = 0; i < data.length; i++) {
692
- const { word, width: wordWidth } = data[i];
693
- offset += word.length;
694
-
695
- // Predictive wrapping: check if adding this word would exceed the width
696
- const potentialLineWidth = lineWidth + infixWidth + wordWidth - additionalSpace;
697
- // Use exact width to match overlay editor behavior
698
- const conservativeMaxWidth = maxWidth; // No artificial buffer
699
-
700
- // Debug logging for wrapping decisions
701
- const currentLineText = line.join('');
702
- console.log(`🔧 FABRIC WRAP CHECK: "${data[i].word}" -> potential: ${potentialLineWidth.toFixed(1)}px vs limit: ${conservativeMaxWidth.toFixed(1)}px`);
703
-
704
- if (potentialLineWidth > conservativeMaxWidth && !lineJustStarted) {
705
- // This word would exceed the width, wrap before adding it
706
- console.log(`🔧 FABRIC WRAP! Line: "${currentLineText}" (${lineWidth.toFixed(1)}px)`);
707
- graphemeLines.push(line);
708
- line = [];
709
- lineWidth = wordWidth; // Start new line with just this word
710
- lineJustStarted = true;
711
- } else {
712
- // Word fits, add it to current line
713
- lineWidth = potentialLineWidth + additionalSpace;
714
- }
715
-
716
- if (!lineJustStarted && !splitByGrapheme) {
717
- line.push(infix);
718
- }
719
- line = line.concat(word);
720
-
721
- // Debug: show current line after adding word
722
- console.log(`🔧 FABRIC AFTER ADD: Line now: "${line.join('')}" (${line.length} chars)`);
723
-
724
-
725
- infixWidth = splitByGrapheme
726
- ? 0
727
- : this._measureWord([infix], lineIndex, offset);
728
- offset++;
729
- lineJustStarted = false;
730
- }
731
-
732
- i && graphemeLines.push(line);
733
-
734
- // TODO: this code is probably not necessary anymore.
735
- // it can be moved out of this function since largestWordWidth is now
736
- // known in advance
737
- // Don't modify dynamicMinWidth when using browser wrapping to prevent width increases
738
- if (!((this as any)._usingBrowserWrapping) && largestWordWidth + reservedSpace > this.dynamicMinWidth) {
739
- console.log(`🔧 FABRIC updating dynamicMinWidth: ${this.dynamicMinWidth} -> ${largestWordWidth - additionalSpace + reservedSpace}`);
740
- this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;
741
- } else if ((this as any)._usingBrowserWrapping) {
742
- console.log(`🔤 BROWSER WRAP: Skipping dynamicMinWidth update to prevent width increase`);
743
- }
744
-
745
- // Debug: show final wrapped lines
746
- console.log(`🔧 FABRIC FINAL LINES: ${graphemeLines.length} lines`);
747
- graphemeLines.forEach((line, i) => {
748
- console.log(` Line ${i + 1}: "${line.join('')}" (${line.length} chars)`);
749
- });
750
-
751
- return graphemeLines;
752
- }
753
-
754
- /**
755
- * Detect if the text line is ended with an hard break
756
- * text and itext do not have wrapping, return false
757
- * @param {Number} lineIndex text to split
758
- * @return {Boolean}
759
- */
760
- isEndOfWrapping(lineIndex: number): boolean {
761
- if (!this._styleMap[lineIndex + 1]) {
762
- // is last line, return true;
763
- return true;
764
- }
765
- if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {
766
- // this is last line before a line break, return true;
767
- return true;
768
- }
769
- return false;
770
- }
771
-
772
- /**
773
- * Detect if a line has a linebreak and so we need to account for it when moving
774
- * and counting style.
775
- * This is important only for splitByGrapheme at the end of wrapping.
776
- * If we are not wrapping the offset is always 1
777
- * @return Number
778
- */
779
- missingNewlineOffset(lineIndex: number, skipWrapping?: boolean): 0 | 1 {
780
- if (this.splitByGrapheme && !skipWrapping) {
781
- return this.isEndOfWrapping(lineIndex) ? 1 : 0;
782
- }
783
- return 1;
784
- }
785
-
786
- /**
787
- * Gets lines of text to render in the Textbox. This function calculates
788
- * text wrapping on the fly every time it is called.
789
- * @param {String} text text to split
790
- * @returns {Array} Array of lines in the Textbox.
791
- * @override
792
- */
793
- _splitTextIntoLines(text: string) {
794
- // Check if we need browser wrapping using smart font detection
795
- const needsBrowserWrapping = this.fontFamily && fontLacksEnglishGlyphsCached(this.fontFamily);
796
-
797
- if (needsBrowserWrapping) {
798
- // Cache key based on text content, width, font properties, AND text alignment
799
- const textHash = text.length + text.slice(0, 50); // Include text content in cache key
800
- const cacheKey = `${textHash}|${this.width}|${this.fontSize}|${this.fontFamily}|${this.textAlign}`;
801
-
802
- // Check if we have a cached result and nothing has changed
803
- if ((this as any)._browserWrapCache && (this as any)._browserWrapCache.key === cacheKey) {
804
- const cachedResult = (this as any)._browserWrapCache.result;
805
-
806
- // For justify alignment, ensure we have the measurements
807
- if (this.textAlign.includes('justify') && !(cachedResult as any).justifySpaceMeasurements) {
808
- // Fall through to recalculate
809
- } else {
810
- return cachedResult;
811
- }
812
- }
813
-
814
- const result = this._splitTextIntoLinesWithBrowser(text);
815
-
816
- // Cache the result
817
- (this as any)._browserWrapCache = { key: cacheKey, result };
818
-
819
- // Mark that we used browser wrapping to prevent dynamicMinWidth modifications
820
- (this as any)._usingBrowserWrapping = true;
821
-
822
- return result;
823
- }
824
-
825
- // Clear the browser wrapping flag when using regular wrapping
826
- (this as any)._usingBrowserWrapping = false;
827
-
828
- // Default Fabric wrapping for other fonts
829
- const newText = super._splitTextIntoLines(text),
830
- graphemeLines = this._wrapText(newText.lines, this.width),
831
- lines = new Array(graphemeLines.length);
832
- for (let i = 0; i < graphemeLines.length; i++) {
833
- lines[i] = graphemeLines[i].join('');
834
- }
835
- newText.lines = lines;
836
- newText.graphemeLines = graphemeLines;
837
- return newText;
838
- }
839
-
840
- /**
841
- * Use browser's native text wrapping for accurate handling of fonts without English glyphs
842
- * @private
843
- */
844
- _splitTextIntoLinesWithBrowser(text: string) {
845
- if (typeof document === 'undefined') {
846
- // Fallback to regular wrapping in Node.js
847
- return this._splitTextIntoLinesDefault(text);
848
- }
849
-
850
- // Create a hidden element that mimics the overlay editor
851
- const testElement = document.createElement('div');
852
- testElement.style.position = 'absolute';
853
- testElement.style.left = '-9999px';
854
- testElement.style.visibility = 'hidden';
855
- testElement.style.fontSize = `${this.fontSize}px`;
856
- testElement.style.fontFamily = `"${this.fontFamily}"`;
857
- testElement.style.fontWeight = String(this.fontWeight || 'normal');
858
- testElement.style.fontStyle = String(this.fontStyle || 'normal');
859
- testElement.style.lineHeight = String(this.lineHeight || 1.16);
860
-
861
- testElement.style.width = `${this.width}px`;
862
-
863
- testElement.style.direction = this.direction || 'ltr';
864
- testElement.style.whiteSpace = 'pre-wrap';
865
- testElement.style.wordBreak = 'normal';
866
- testElement.style.overflowWrap = 'break-word';
867
-
868
- // Set browser-native text alignment (including justify)
869
- if (this.textAlign.includes('justify')) {
870
- testElement.style.textAlign = 'justify';
871
- testElement.style.textAlignLast = 'auto'; // Let browser decide last line alignment
872
- } else {
873
- testElement.style.textAlign = this.textAlign;
874
- }
875
-
876
- testElement.textContent = text;
877
-
878
- document.body.appendChild(testElement);
879
-
880
- // Get the browser's natural line breaks
881
- const range = document.createRange();
882
- const lines: string[] = [];
883
- const graphemeLines: string[][] = [];
884
-
885
- try {
886
- // Simple approach: split by measuring character positions
887
- const textNode = testElement.firstChild;
888
- if (textNode && textNode.nodeType === Node.TEXT_NODE) {
889
- let currentLineStart = 0;
890
- const textLength = text.length;
891
- let previousBottom = 0;
892
-
893
- for (let i = 0; i <= textLength; i++) {
894
- range.setStart(textNode, currentLineStart);
895
- range.setEnd(textNode, i);
896
- const rect = range.getBoundingClientRect();
897
-
898
- if (i > currentLineStart && (rect.bottom > previousBottom + 5 || i === textLength)) {
899
- // New line detected or end of text
900
- const lineEnd = i === textLength ? i : i - 1;
901
- const lineText = text.substring(currentLineStart, lineEnd).trim();
902
- if (lineText) {
903
- lines.push(lineText);
904
- // Convert to graphemes for compatibility
905
- const graphemeLine = lineText.split('');
906
- graphemeLines.push(graphemeLine);
907
- }
908
- currentLineStart = lineEnd;
909
- previousBottom = rect.bottom;
910
- }
911
- }
912
- }
913
- } catch (error) {
914
- console.warn('Browser wrapping failed, using fallback:', error);
915
- document.body.removeChild(testElement);
916
- return this._splitTextIntoLinesDefault(text);
917
- }
918
-
919
- // Extract actual browser height BEFORE removing element
920
- const actualBrowserHeight = testElement.scrollHeight;
921
- const offsetHeight = testElement.offsetHeight;
922
- const clientHeight = testElement.clientHeight;
923
- const boundingRect = testElement.getBoundingClientRect();
924
-
925
- console.log(`🔤 Browser element measurements:`);
926
- console.log(` scrollHeight: ${actualBrowserHeight}px (content + padding + hidden overflow)`);
927
- console.log(` offsetHeight: ${offsetHeight}px (content + padding + border)`);
928
- console.log(` clientHeight: ${clientHeight}px (content + padding, no border/scrollbar)`);
929
- console.log(` boundingRect.height: ${boundingRect.height}px (actual rendered height)`);
930
- console.log(` Font size: ${this.fontSize}px, Line height: ${this.lineHeight || 1.16}, Lines: ${lines.length}`);
931
-
932
- // For justify alignment, extract space measurements from browser BEFORE removing element
933
- let justifySpaceMeasurements = null;
934
- if (this.textAlign.includes('justify')) {
935
- justifySpaceMeasurements = this._extractJustifySpaceMeasurements(testElement, lines);
936
- }
937
-
938
- document.body.removeChild(testElement);
939
-
940
- console.log(`🔤 Browser wrapping result: ${lines.length} lines`);
941
-
942
- // Try different height measurements to find the most accurate
943
- let bestHeight = actualBrowserHeight;
944
-
945
- // If scrollHeight and offsetHeight differ significantly, investigate
946
- if (Math.abs(actualBrowserHeight - offsetHeight) > 2) {
947
- console.log(`🔤 Height discrepancy detected: scrollHeight=${actualBrowserHeight}px vs offsetHeight=${offsetHeight}px`);
948
- }
949
-
950
- // Consider using boundingRect height if it's larger (sometimes more accurate for visible content)
951
- if (boundingRect.height > bestHeight) {
952
- console.log(`🔤 Using boundingRect height (${boundingRect.height}px) instead of scrollHeight (${bestHeight}px)`);
953
- bestHeight = boundingRect.height;
954
- }
955
-
956
- // Font-specific height adjustments for accurate bounding box
957
- let adjustedHeight = bestHeight;
958
-
959
- // Fonts without English glyphs need additional height buffer due to different font metrics
960
- const lacksEnglishGlyphs = fontLacksEnglishGlyphsCached(this.fontFamily);
961
- if (lacksEnglishGlyphs) {
962
- const glyphBuffer = this.fontSize * 0.25; // 25% of font size for non-English fonts
963
- adjustedHeight = bestHeight + glyphBuffer;
964
- console.log(`🔤 Non-English font detected (${this.fontFamily}): Adding ${glyphBuffer}px buffer (${bestHeight}px + ${glyphBuffer}px = ${adjustedHeight}px)`);
965
- } else {
966
- console.log(`🔤 Standard font (${this.fontFamily}): Using browser height directly (${bestHeight}px)`);
967
- }
968
-
969
- return {
970
- _unwrappedLines: [text.split('')],
971
- lines: lines,
972
- graphemeText: text.split(''),
973
- graphemeLines: graphemeLines,
974
- justifySpaceMeasurements: justifySpaceMeasurements,
975
- actualBrowserHeight: adjustedHeight,
976
- };
977
- }
978
-
979
-
980
-
981
-
982
- /**
983
- * Extract justify space measurements from browser
984
- * @private
985
- */
986
- _extractJustifySpaceMeasurements(element: HTMLElement, lines: string[]) {
987
- console.log(`🔤 Extracting browser justify space measurements for ${lines.length} lines`);
988
-
989
- // For now, we'll use a simplified approach:
990
- // Apply uniform space expansion to match the line width
991
- const spaceWidths: number[][] = [];
992
-
993
- lines.forEach((line, lineIndex) => {
994
- const lineSpaces: number[] = [];
995
- const spaceCount = (line.match(/\s/g) || []).length;
996
-
997
- if (spaceCount > 0 && lineIndex < lines.length - 1) { // Don't justify last line
998
- // Calculate how much space expansion is needed
999
- const normalSpaceWidth = 6.4; // Default space width for STV font
1000
- const lineWidth = this.width;
1001
-
1002
- // Estimate natural line width
1003
- const charCount = line.length - spaceCount;
1004
- const avgCharWidth = 12; // Approximate for STV font
1005
- const naturalWidth = charCount * avgCharWidth + spaceCount * normalSpaceWidth;
1006
-
1007
- // Calculate expanded space width
1008
- const remainingSpace = lineWidth - (charCount * avgCharWidth);
1009
- const expandedSpaceWidth = remainingSpace / spaceCount;
1010
-
1011
- console.log(`🔤 Line ${lineIndex}: ${spaceCount} spaces, natural: ${normalSpaceWidth}px -> justified: ${expandedSpaceWidth.toFixed(1)}px`);
1012
-
1013
- // Fill array with expanded space widths for this line
1014
- for (let i = 0; i < spaceCount; i++) {
1015
- lineSpaces.push(expandedSpaceWidth);
1016
- }
1017
- }
1018
-
1019
- spaceWidths.push(lineSpaces);
1020
- });
1021
-
1022
- return spaceWidths;
1023
- }
1024
-
1025
- /**
1026
- * Apply browser-calculated justify space measurements
1027
- * @private
1028
- */
1029
- _applyBrowserJustifySpaces() {
1030
- if (!this._textLines || !this.__charBounds) {
1031
- console.warn('🔤 BROWSER JUSTIFY: _textLines or __charBounds not ready');
1032
- return;
1033
- }
1034
-
1035
- // Get space measurements from browser wrapping result
1036
- const styleMap = this._styleMap as any;
1037
- if (!styleMap || !styleMap.justifySpaceMeasurements) {
1038
- console.warn('🔤 BROWSER JUSTIFY: No justify space measurements available');
1039
- return;
1040
- }
1041
-
1042
- const spaceWidths = styleMap.justifySpaceMeasurements as number[][];
1043
- console.log('🔤 BROWSER JUSTIFY: Applying space measurements to __charBounds');
1044
-
1045
- // Apply space widths to character bounds
1046
- this._textLines.forEach((line, lineIndex) => {
1047
- if (!this.__charBounds || !this.__charBounds[lineIndex] || !spaceWidths[lineIndex]) return;
1048
-
1049
- const lineBounds = this.__charBounds[lineIndex];
1050
- const lineSpaceWidths = spaceWidths[lineIndex];
1051
- let spaceIndex = 0;
1052
-
1053
- for (let charIndex = 0; charIndex < line.length; charIndex++) {
1054
- if (/\s/.test(line[charIndex]) && spaceIndex < lineSpaceWidths.length) {
1055
- const expandedWidth = lineSpaceWidths[spaceIndex];
1056
- if (lineBounds[charIndex]) {
1057
- const oldWidth = lineBounds[charIndex].width;
1058
- lineBounds[charIndex].width = expandedWidth;
1059
- console.log(`🔤 Line ${lineIndex} space ${spaceIndex}: ${oldWidth.toFixed(1)}px -> ${expandedWidth.toFixed(1)}px`);
1060
- }
1061
- spaceIndex++;
1062
- }
1063
- }
1064
- });
1065
- }
1066
-
1067
- /**
1068
- * Fallback to default Fabric wrapping
1069
- * @private
1070
- */
1071
- _splitTextIntoLinesDefault(text: string) {
1072
- const newText = super._splitTextIntoLines(text),
1073
- graphemeLines = this._wrapText(newText.lines, this.width),
1074
- lines = new Array(graphemeLines.length);
1075
- for (let i = 0; i < graphemeLines.length; i++) {
1076
- lines[i] = graphemeLines[i].join('');
1077
- }
1078
- newText.lines = lines;
1079
- newText.graphemeLines = graphemeLines;
1080
- return newText;
1081
- }
1082
-
1083
- getMinWidth() {
1084
- return Math.max(this.minWidth, this.dynamicMinWidth);
1085
- }
1086
-
1087
- _removeExtraneousStyles() {
1088
- const linesToKeep = new Map();
1089
- for (const prop in this._styleMap) {
1090
- const propNumber = parseInt(prop, 10);
1091
- if (this._textLines[propNumber]) {
1092
- const lineIndex = this._styleMap[prop].line;
1093
- linesToKeep.set(`${lineIndex}`, true);
1094
- }
1095
- }
1096
- for (const prop in this.styles) {
1097
- if (!linesToKeep.has(prop)) {
1098
- delete this.styles[prop];
1099
- }
1100
- }
1101
- }
1102
-
1103
- /**
1104
- * Initialize event listeners for safety snap functionality
1105
- * @private
1106
- */
1107
- private initializeEventListeners(): void {
1108
- // Track which side is being used for resize to handle position compensation
1109
- let resizeOrigin: 'left' | 'right' | null = null;
1110
-
1111
- // Detect resize origin during resizing
1112
- this.on('resizing', (e: any) => {
1113
- // Check transform origin to determine which side is being resized
1114
- if (e.transform) {
1115
- const { originX } = e.transform;
1116
- // originX tells us which side is the anchor - opposite side is being dragged
1117
- resizeOrigin = originX === 'right' ? 'left' : originX === 'left' ? 'right' : null;
1118
- } else if (e.originX) {
1119
- const { originX } = e;
1120
- resizeOrigin = originX === 'right' ? 'left' : originX === 'left' ? 'right' : null;
1121
- }
1122
- });
1123
-
1124
- // Only trigger safety snap after resize is complete (not during)
1125
- // Use 'modified' event which fires after user releases the mouse
1126
- this.on('modified', () => {
1127
- const currentResizeOrigin = resizeOrigin; // Capture the value before reset
1128
- // Small delay to ensure text layout is updated
1129
- setTimeout(() => this.safetySnapWidth(currentResizeOrigin), 10);
1130
- resizeOrigin = null; // Reset after capturing
1131
- });
1132
-
1133
- // Also listen to canvas-level modified event as backup
1134
- this.canvas?.on('object:modified', (e) => {
1135
- if (e.target === this) {
1136
- const currentResizeOrigin = resizeOrigin; // Capture the value before reset
1137
- setTimeout(() => this.safetySnapWidth(currentResizeOrigin), 10);
1138
- resizeOrigin = null; // Reset after capturing
1139
- }
1140
- });
1141
- }
1142
-
1143
- /**
1144
- * Safety snap to prevent glyph clipping after manual resize.
1145
- * Similar to Polotno - checks if any glyphs are too close to edges
1146
- * and automatically expands width if needed.
1147
- * @private
1148
- * @param resizeOrigin - Which side was used for resizing ('left' or 'right')
1149
- */
1150
- private safetySnapWidth(resizeOrigin?: 'left' | 'right' | null): void {
1151
- // For Textbox objects, we always want to check for clipping regardless of isWrapping flag
1152
- if (!this._textLines || this.type.toLowerCase() !== 'textbox' || this._textLines.length === 0) {
1153
- return;
1154
- }
1155
-
1156
- const lineCount = this._textLines.length;
1157
- if (lineCount === 0) return;
1158
-
1159
- // Check all lines, not just the last one
1160
- let maxActualLineWidth = 0; // Actual measured width without buffers
1161
- let maxRequiredWidth = 0; // Width including RTL buffer
1162
-
1163
- for (let i = 0; i < lineCount; i++) {
1164
- const lineText = this._textLines[i].join(''); // Convert grapheme array to string
1165
- const lineWidth = this.getLineWidth(i);
1166
- maxActualLineWidth = Math.max(maxActualLineWidth, lineWidth);
1167
-
1168
- // RTL detection - regex for Arabic, Hebrew, and other RTL characters
1169
- const rtlRegex = /[\u0590-\u05FF\u0600-\u06FF\u0750-\u077F\uFB50-\uFDFF\uFE70-\uFEFF]/;
1170
- if (rtlRegex.test(lineText)) {
1171
- // Add minimal RTL compensation buffer - just enough to prevent clipping
1172
- const rtlBuffer = (this.fontSize || 16) * 0.15; // 15% of font size (much smaller)
1173
- maxRequiredWidth = Math.max(maxRequiredWidth, lineWidth + rtlBuffer);
1174
- } else {
1175
- maxRequiredWidth = Math.max(maxRequiredWidth, lineWidth);
1176
- }
1177
- }
1178
-
1179
- // Safety margin - how close glyphs can get before we snap
1180
- const safetyThreshold = 2; // px - very subtle trigger
1181
-
1182
- if (maxRequiredWidth > this.width - safetyThreshold) {
1183
- // Set width to exactly what's needed + minimal safety margin
1184
- const newWidth = maxRequiredWidth + 1; // Add just 1px safety margin
1185
-
1186
- // Store original position before width change
1187
- const originalLeft = this.left;
1188
- const originalTop = this.top;
1189
- const widthIncrease = newWidth - this.width;
1190
-
1191
- // Change width
1192
- this.set('width', newWidth);
1193
-
1194
- // Force text layout recalculation
1195
- this.initDimensions();
1196
-
1197
- // Only compensate position when resizing from left handle
1198
- // Right handle resize doesn't shift the text position
1199
- if (resizeOrigin === 'left') {
1200
- // When resizing from left, the expansion pushes text right
1201
- // Compensate by moving the textbox left by the width increase
1202
- this.set({
1203
- 'left': originalLeft - widthIncrease,
1204
- 'top': originalTop
1205
- });
1206
- }
1207
-
1208
- this.setCoords();
1209
-
1210
- // Also refresh the overlay editor if it exists
1211
- if ((this as any).__overlayEditor) {
1212
- setTimeout(() => {
1213
- (this as any).__overlayEditor.refresh();
1214
- }, 0);
1215
- }
1216
-
1217
- this.canvas?.requestRenderAll();
1218
- }
1219
- }
1220
-
1221
- /**
1222
- * Fix character selection mismatch after JSON loading for browser-wrapped fonts
1223
- * @private
1224
- */
1225
- _fixCharacterMappingAfterJsonLoad(): void {
1226
- if ((this as any)._usingBrowserWrapping) {
1227
- // Clear all cached states to force fresh text layout calculation
1228
- (this as any)._browserWrapCache = null;
1229
- (this as any)._lastDimensionState = null;
1230
-
1231
- // Force complete re-initialization
1232
- this.initDimensions();
1233
- this._forceClearCache = true;
1234
-
1235
- // Ensure canvas refresh
1236
- this.setCoords();
1237
- if (this.canvas) {
1238
- this.canvas.requestRenderAll();
1239
- }
1240
- }
1241
- }
1242
-
1243
- /**
1244
- * Force complete textbox re-initialization (useful after JSON loading)
1245
- * Overrides Text version with Textbox-specific logic
1246
- */
1247
- forceTextReinitialization(): void {
1248
- console.log('🔄 Force reinitializing Textbox object');
1249
-
1250
- // CRITICAL: Ensure textbox is marked as initialized
1251
- this.initialized = true;
1252
-
1253
- // Clear all caches and force dirty state
1254
- this._clearCache();
1255
- this.dirty = true;
1256
- this.dynamicMinWidth = 0;
1257
-
1258
- // Force isEditing false to ensure clean state
1259
- this.isEditing = false;
1260
-
1261
- console.log(' → Set initialized=true, dirty=true, cleared caches');
1262
-
1263
- // Re-initialize dimensions (this will handle justify properly)
1264
- this.initDimensions();
1265
-
1266
- // Double-check that justify was applied by checking space widths
1267
- if (this.textAlign.includes('justify') && this.__charBounds) {
1268
- setTimeout(() => {
1269
- // Verify justify was applied by checking if space widths vary
1270
- let hasVariableSpaces = false;
1271
- this.__charBounds.forEach((lineBounds, i) => {
1272
- if (lineBounds && this._textLines && this._textLines[i]) {
1273
- const spaces = lineBounds.filter((bound, j) => /\s/.test(this._textLines[i][j]));
1274
- if (spaces.length > 1) {
1275
- const firstSpaceWidth = spaces[0].width;
1276
- hasVariableSpaces = spaces.some(space => Math.abs(space.width - firstSpaceWidth) > 0.1);
1277
- }
1278
- }
1279
- });
1280
-
1281
- if (!hasVariableSpaces && this.__charBounds.length > 0) {
1282
- console.warn(' ⚠️ Justify spaces still uniform - forcing enlargeSpaces again');
1283
- if (this.enlargeSpaces) {
1284
- this.enlargeSpaces();
1285
- }
1286
- } else {
1287
- console.log(' ✅ Justify spaces properly expanded');
1288
- }
1289
-
1290
- // Ensure height is recalculated - use browser height if available
1291
- if ((this as any)._usingBrowserWrapping && (this as any)._actualBrowserHeight) {
1292
- this.height = (this as any)._actualBrowserHeight;
1293
- console.log(`🔤 JUSTIFY: Preserved browser height: ${this.height}px`);
1294
- } else {
1295
- this.height = this.calcTextHeight();
1296
- console.log(`🔧 JUSTIFY: Used calcTextHeight: ${this.height}px`);
1297
- }
1298
- this.canvas?.requestRenderAll();
1299
- }, 10);
1300
- }
1301
- }
1302
-
1303
- /**
1304
- * Returns object representation of an instance
1305
- * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
1306
- * @return {Object} object representation of an instance
1307
- */
1308
- toObject<
1309
- T extends Omit<Props & TClassProperties<this>, keyof SProps>,
1310
- K extends keyof T = never,
1311
- >(propertiesToInclude: K[] = []): Pick<T, K> & SProps {
1312
- return super.toObject<T, K>([
1313
- 'minWidth',
1314
- 'splitByGrapheme',
1315
- ...propertiesToInclude,
1316
- ] as K[]);
1317
- }
1318
- }
1319
-
1320
- classRegistry.setClass(Textbox);
1
+ import type { TClassProperties, TOptions } from '../typedefs';
2
+ import { IText } from './IText/IText';
3
+ import { classRegistry } from '../ClassRegistry';
4
+ import { createTextboxDefaultControls } from '../controls/commonControls';
5
+ import { JUSTIFY, JUSTIFY_CENTER } from './Text/constants';
6
+ import type { TextStyleDeclaration } from './Text/StyledText';
7
+ import type { SerializedITextProps, ITextProps } from './IText/IText';
8
+ import type { ITextEvents } from './IText/ITextBehavior';
9
+ import type { TextLinesInfo } from './Text/Text';
10
+ import type { Control } from '../controls/Control';
11
+ import { fontLacksEnglishGlyphsCached } from '../text/measure';
12
+ import { layoutText } from '../text/layout';
13
+
14
+ // @TODO: Many things here are configuration related and shouldn't be on the class nor prototype
15
+ // regexes, list of properties that are not suppose to change by instances, magic consts.
16
+ // this will be a separated effort
17
+ export const textboxDefaultValues: Partial<TClassProperties<Textbox>> = {
18
+ minWidth: 20,
19
+ dynamicMinWidth: 2,
20
+ lockScalingFlip: true,
21
+ noScaleCache: false,
22
+ _wordJoiners: /[ \t\r]/,
23
+ splitByGrapheme: false,
24
+ };
25
+
26
+ export type GraphemeData = {
27
+ wordsData: {
28
+ word: string[];
29
+ width: number;
30
+ }[][];
31
+ largestWordWidth: number;
32
+ };
33
+
34
+ export type StyleMap = Record<string, { line: number; offset: number }>;
35
+
36
+ // @TODO this is not complete
37
+ interface UniqueTextboxProps {
38
+ minWidth: number;
39
+ splitByGrapheme: boolean;
40
+ dynamicMinWidth: number;
41
+ _wordJoiners: RegExp;
42
+ }
43
+
44
+ export interface SerializedTextboxProps
45
+ extends SerializedITextProps,
46
+ Pick<UniqueTextboxProps, 'minWidth' | 'splitByGrapheme'> {}
47
+
48
+ export interface TextboxProps extends ITextProps, UniqueTextboxProps {}
49
+
50
+ /**
51
+ * Textbox class, based on IText, allows the user to resize the text rectangle
52
+ * and wraps lines automatically. Textboxes have their Y scaling locked, the
53
+ * user can only change width. Height is adjusted automatically based on the
54
+ * wrapping of lines.
55
+ */
56
+ export class Textbox<
57
+ Props extends TOptions<TextboxProps> = Partial<TextboxProps>,
58
+ SProps extends SerializedTextboxProps = SerializedTextboxProps,
59
+ EventSpec extends ITextEvents = ITextEvents,
60
+ >
61
+ extends IText<Props, SProps, EventSpec>
62
+ implements UniqueTextboxProps
63
+ {
64
+ /**
65
+ * Minimum width of textbox, in pixels.
66
+ * @type Number
67
+ */
68
+ declare minWidth: number;
69
+
70
+ /**
71
+ * Minimum calculated width of a textbox, in pixels.
72
+ * fixed to 2 so that an empty textbox cannot go to 0
73
+ * and is still selectable without text.
74
+ * @type Number
75
+ */
76
+ declare dynamicMinWidth: number;
77
+
78
+ /**
79
+ * Use this boolean property in order to split strings that have no white space concept.
80
+ * this is a cheap way to help with chinese/japanese
81
+ * @type Boolean
82
+ * @since 2.6.0
83
+ */
84
+ declare splitByGrapheme: boolean;
85
+
86
+ declare _wordJoiners: RegExp;
87
+
88
+ declare _styleMap: StyleMap;
89
+
90
+ declare isWrapping: boolean;
91
+
92
+ static type = 'Textbox';
93
+
94
+ static textLayoutProperties = [...IText.textLayoutProperties, 'width'];
95
+
96
+ static ownDefaults = textboxDefaultValues;
97
+
98
+ static getDefaults(): Record<string, any> {
99
+ return {
100
+ ...super.getDefaults(),
101
+ ...Textbox.ownDefaults,
102
+ };
103
+ }
104
+
105
+ /**
106
+ * Constructor
107
+ * @param {String} text Text string
108
+ * @param {Object} [options] Options object
109
+ */
110
+ constructor(text: string, options?: Props) {
111
+ super(text, { ...Textbox.ownDefaults, ...options } as Props);
112
+ this.initializeEventListeners();
113
+ }
114
+
115
+ /**
116
+ * Creates the default control object.
117
+ * If you prefer to have on instance of controls shared among all objects
118
+ * make this function return an empty object and add controls to the ownDefaults object
119
+ */
120
+ static createControls(): { controls: Record<string, Control> } {
121
+ return { controls: createTextboxDefaultControls() };
122
+ }
123
+
124
+ /**
125
+ * Unlike superclass's version of this function, Textbox does not update
126
+ * its width.
127
+ * @private
128
+ * @override
129
+ */
130
+ initDimensions() {
131
+ if (!this.initialized) {
132
+ this.initialized = true;
133
+ }
134
+
135
+ // Prevent rapid recalculations during moves
136
+ if ((this as any)._usingBrowserWrapping) {
137
+ const now = Date.now();
138
+ const lastCall = (this as any)._lastInitDimensionsTime || 0;
139
+ const isRapidCall = now - lastCall < 100;
140
+ const isDuringLoading = (this as any)._jsonLoading || !(this as any)._browserWrapInitialized;
141
+
142
+ if (isRapidCall && !isDuringLoading) {
143
+ return;
144
+ }
145
+ (this as any)._lastInitDimensionsTime = now;
146
+ }
147
+
148
+ // Skip if nothing changed
149
+ const currentState = `${this.text}|${this.width}|${this.fontSize}|${this.fontFamily}|${this.textAlign}`;
150
+ if ((this as any)._lastDimensionState === currentState && this._textLines && this._textLines.length > 0) {
151
+ return;
152
+ }
153
+ (this as any)._lastDimensionState = currentState;
154
+
155
+ // Use advanced layout if enabled
156
+ if (this.enableAdvancedLayout) {
157
+ return this.initDimensionsAdvanced();
158
+ }
159
+
160
+ this.isEditing && this.initDelayedCursor();
161
+ this._clearCache();
162
+ // clear dynamicMinWidth as it will be different after we re-wrap line
163
+ this.dynamicMinWidth = 0;
164
+ // wrap lines
165
+ const splitTextResult = this._splitText();
166
+ this._styleMap = this._generateStyleMap(splitTextResult);
167
+
168
+ // For browser wrapping, ensure _textLines is set from browser results
169
+ if ((this as any)._usingBrowserWrapping && splitTextResult && splitTextResult.lines) {
170
+ this._textLines = splitTextResult.lines.map(line => line.split(''));
171
+
172
+ // Store justify measurements and browser height
173
+ const justifyMeasurements = (splitTextResult as any).justifySpaceMeasurements;
174
+ if (justifyMeasurements) {
175
+ (this._styleMap as any).justifySpaceMeasurements = justifyMeasurements;
176
+ }
177
+
178
+ const actualHeight = (splitTextResult as any).actualBrowserHeight;
179
+ if (actualHeight) {
180
+ (this as any)._actualBrowserHeight = actualHeight;
181
+ }
182
+ }
183
+ // Don't auto-resize width when using browser wrapping to prevent width increases during moves
184
+ if (!((this as any)._usingBrowserWrapping) && this.dynamicMinWidth > this.width) {
185
+ this._set('width', this.dynamicMinWidth);
186
+ }
187
+
188
+ // For browser wrapping fonts (like STV), ensure minimum width for new textboxes
189
+ // since these fonts can't measure English characters properly
190
+ if ((this as any)._usingBrowserWrapping && this.width < 50) {
191
+ console.log(`🔤 BROWSER WRAP: Font ${this.fontFamily} has width ${this.width}px, setting to 300px for usability`);
192
+ this.width = 300;
193
+ }
194
+
195
+ // Mark browser wrapping as initialized when complete
196
+ if ((this as any)._usingBrowserWrapping) {
197
+ (this as any)._browserWrapInitialized = true;
198
+ }
199
+
200
+ if (this.textAlign.includes(JUSTIFY)) {
201
+ // For browser wrapping fonts, apply browser-calculated justify spaces
202
+ if ((this as any)._usingBrowserWrapping) {
203
+ console.log('🔤 BROWSER WRAP: Applying browser-calculated justify spaces');
204
+ this._applyBrowserJustifySpaces();
205
+ return;
206
+ }
207
+
208
+ // Don't apply justify alignment during drag operations to prevent snapping
209
+ const now = Date.now();
210
+ const lastDragTime = (this as any)._lastInitDimensionsTime || 0;
211
+ const isDuringDrag = now - lastDragTime < 200; // 200ms window for drag detection
212
+
213
+ if (isDuringDrag) {
214
+ console.log('🔤 Skipping justify during drag operation to prevent snapping');
215
+ return;
216
+ }
217
+
218
+ // For non-browser-wrapping fonts, use Fabric's justify system
219
+ // once text is measured we need to make space fatter to make justified text.
220
+ // Ensure __charBounds exists and fonts are ready before applying justify
221
+ if (this.__charBounds && this.__charBounds.length > 0) {
222
+ // Check if font is ready for accurate justify calculations
223
+ const fontReady = this._isFontReady ? this._isFontReady() : true;
224
+ if (fontReady) {
225
+ this.enlargeSpaces();
226
+ } else {
227
+ console.warn('⚠️ Textbox: Font not ready for justify, deferring enlargeSpaces');
228
+ // Defer justify calculation until font is ready
229
+ this._scheduleJustifyAfterFontLoad();
230
+ }
231
+ } else {
232
+ console.warn('⚠️ Textbox: __charBounds not ready for justify alignment, deferring enlargeSpaces');
233
+ // Defer the justify calculation until the next frame
234
+ setTimeout(() => {
235
+ if (this.__charBounds && this.__charBounds.length > 0 && this.enlargeSpaces) {
236
+ console.log('🔧 Applying deferred Textbox justify alignment');
237
+ this.enlargeSpaces();
238
+ this.canvas?.requestRenderAll();
239
+ }
240
+ }, 0);
241
+ }
242
+ }
243
+ // Calculate height - use Fabric's calculation for proper text rendering space
244
+ if ((this as any)._usingBrowserWrapping && this._textLines && this._textLines.length > 0) {
245
+ const actualBrowserHeight = (this as any)._actualBrowserHeight;
246
+ const oldHeight = this.height;
247
+ // Use Fabric's height calculation since it knows how much space text rendering needs
248
+ this.height = this.calcTextHeight();
249
+
250
+ // Force canvas refresh and control update if height changed significantly
251
+ if (Math.abs(this.height - oldHeight) > 1) {
252
+ this.setCoords();
253
+ this.canvas?.requestRenderAll();
254
+
255
+ // DEBUG: Log exact positioning details
256
+ console.log(`🎯 POSITIONING DEBUG:`);
257
+ console.log(` Textbox height: ${this.height}px`);
258
+ console.log(` Textbox top: ${this.top}px`);
259
+ console.log(` Textbox left: ${this.left}px`);
260
+ console.log(` Text lines: ${this._textLines?.length || 0}`);
261
+ console.log(` Font size: ${this.fontSize}px`);
262
+ console.log(` Line height: ${this.lineHeight || 1.16}`);
263
+ console.log(` Calculated line height: ${this.fontSize * (this.lineHeight || 1.16)}px`);
264
+ console.log(` _getTopOffset(): ${this._getTopOffset()}px`);
265
+ console.log(` calcTextHeight(): ${this.calcTextHeight()}px`);
266
+ console.log(` Browser height: ${actualBrowserHeight}px`);
267
+ console.log(` Height difference: ${this.height - this.calcTextHeight()}px`);
268
+ }
269
+ } else {
270
+ this.height = this.calcTextHeight();
271
+ }
272
+ }
273
+
274
+ /**
275
+ * Schedule justify calculation after font loads (Textbox-specific)
276
+ * @private
277
+ */
278
+ _scheduleJustifyAfterFontLoad(): void {
279
+ if (typeof document === 'undefined' || !('fonts' in document)) {
280
+ return;
281
+ }
282
+
283
+ // Only schedule if not already waiting
284
+ if ((this as any)._fontJustifyScheduled) {
285
+ return;
286
+ }
287
+ (this as any)._fontJustifyScheduled = true;
288
+
289
+ const fontSpec = `${this.fontSize}px ${this.fontFamily}`;
290
+ document.fonts.load(fontSpec).then(() => {
291
+ (this as any)._fontJustifyScheduled = false;
292
+ console.log('🔧 Textbox: Font loaded, applying justify alignment');
293
+
294
+ // Re-run initDimensions to ensure proper justify calculation
295
+ this.initDimensions();
296
+ this.canvas?.requestRenderAll();
297
+ }).catch(() => {
298
+ (this as any)._fontJustifyScheduled = false;
299
+ console.warn('⚠️ Textbox: Font loading failed, justify may be incorrect');
300
+ });
301
+ }
302
+
303
+ /**
304
+ * Advanced dimensions calculation using new layout engine
305
+ * @private
306
+ */
307
+ initDimensionsAdvanced() {
308
+ if (!this.initialized) {
309
+ return;
310
+ }
311
+
312
+ this.isEditing && this.initDelayedCursor();
313
+ this._clearCache();
314
+ this.dynamicMinWidth = 0;
315
+
316
+ // Use new layout engine
317
+ const layout = layoutText({
318
+ text: this.text,
319
+ width: this.width,
320
+ height: this.height,
321
+ wrap: this.wrap || 'word',
322
+ align: (this as any)._mapTextAlignToAlign(this.textAlign),
323
+ ellipsis: this.ellipsis || false,
324
+ fontSize: this.fontSize,
325
+ lineHeight: this.lineHeight,
326
+ letterSpacing: this.letterSpacing || 0,
327
+ charSpacing: this.charSpacing,
328
+ direction: this.direction === 'inherit' ? 'ltr' : this.direction,
329
+ fontFamily: this.fontFamily,
330
+ fontStyle: this.fontStyle,
331
+ fontWeight: this.fontWeight,
332
+ verticalAlign: this.verticalAlign || 'top',
333
+ });
334
+
335
+ // Update dynamic minimum width based on layout
336
+ if (layout.lines.length > 0) {
337
+ const maxLineWidth = Math.max(...layout.lines.map(line => line.width));
338
+ this.dynamicMinWidth = Math.max(this.minWidth, maxLineWidth);
339
+ }
340
+
341
+ // Adjust width if needed (preserving Textbox behavior)
342
+ if (this.dynamicMinWidth > this.width) {
343
+ this._set('width', this.dynamicMinWidth);
344
+ // Re-layout with new width
345
+ const newLayout = layoutText({
346
+ ...(this as any)._getAdvancedLayoutOptions(),
347
+ width: this.width,
348
+ });
349
+ this.height = newLayout.totalHeight;
350
+ (this as any)._convertLayoutToLegacyFormat(newLayout);
351
+ } else {
352
+ this.height = layout.totalHeight;
353
+ (this as any)._convertLayoutToLegacyFormat(layout);
354
+ }
355
+
356
+ // Generate style map for compatibility
357
+ this._styleMap = this._generateStyleMapFromLayout(layout);
358
+ this.dirty = true;
359
+ }
360
+
361
+ /**
362
+ * Generate style map from new layout format
363
+ * @private
364
+ */
365
+ _generateStyleMapFromLayout(layout: any): StyleMap {
366
+ const map: StyleMap = {};
367
+ let realLineCount = 0;
368
+ let charCount = 0;
369
+
370
+ layout.lines.forEach((line: any, i: number) => {
371
+ if (line.text.includes('\n') && i > 0) {
372
+ realLineCount++;
373
+ }
374
+
375
+ map[i] = { line: realLineCount, offset: 0 };
376
+ charCount += line.graphemes.length;
377
+
378
+ if (i < layout.lines.length - 1) {
379
+ charCount += 1; // newline character
380
+ }
381
+ });
382
+
383
+ return map;
384
+ }
385
+
386
+ /**
387
+ * Generate an object that translates the style object so that it is
388
+ * broken up by visual lines (new lines and automatic wrapping).
389
+ * The original text styles object is broken up by actual lines (new lines only),
390
+ * which is only sufficient for Text / IText
391
+ * @private
392
+ */
393
+ _generateStyleMap(textInfo: TextLinesInfo): StyleMap {
394
+ let realLineCount = 0,
395
+ realLineCharCount = 0,
396
+ charCount = 0;
397
+ const map: StyleMap = {};
398
+
399
+ for (let i = 0; i < textInfo.graphemeLines.length; i++) {
400
+ if (textInfo.graphemeText[charCount] === '\n' && i > 0) {
401
+ realLineCharCount = 0;
402
+ charCount++;
403
+ realLineCount++;
404
+ } else if (
405
+ !this.splitByGrapheme &&
406
+ this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) &&
407
+ i > 0
408
+ ) {
409
+ // this case deals with space's that are removed from end of lines when wrapping
410
+ realLineCharCount++;
411
+ charCount++;
412
+ }
413
+
414
+ map[i] = { line: realLineCount, offset: realLineCharCount };
415
+
416
+ charCount += textInfo.graphemeLines[i].length;
417
+ realLineCharCount += textInfo.graphemeLines[i].length;
418
+ }
419
+
420
+ return map;
421
+ }
422
+
423
+ /**
424
+ * Returns true if object has a style property or has it on a specified line
425
+ * @param {Number} lineIndex
426
+ * @return {Boolean}
427
+ */
428
+ styleHas(property: keyof TextStyleDeclaration, lineIndex: number): boolean {
429
+ if (this._styleMap && !this.isWrapping) {
430
+ const map = this._styleMap[lineIndex];
431
+ if (map) {
432
+ lineIndex = map.line;
433
+ }
434
+ }
435
+ return super.styleHas(property, lineIndex);
436
+ }
437
+
438
+ /**
439
+ * Returns true if object has no styling or no styling in a line
440
+ * @param {Number} lineIndex , lineIndex is on wrapped lines.
441
+ * @return {Boolean}
442
+ */
443
+ isEmptyStyles(lineIndex: number): boolean {
444
+ if (!this.styles) {
445
+ return true;
446
+ }
447
+ let offset = 0,
448
+ nextLineIndex = lineIndex + 1,
449
+ nextOffset: number,
450
+ shouldLimit = false;
451
+ const map = this._styleMap[lineIndex],
452
+ mapNextLine = this._styleMap[lineIndex + 1];
453
+ if (map) {
454
+ lineIndex = map.line;
455
+ offset = map.offset;
456
+ }
457
+ if (mapNextLine) {
458
+ nextLineIndex = mapNextLine.line;
459
+ shouldLimit = nextLineIndex === lineIndex;
460
+ nextOffset = mapNextLine.offset;
461
+ }
462
+ const obj =
463
+ typeof lineIndex === 'undefined'
464
+ ? this.styles
465
+ : { line: this.styles[lineIndex] };
466
+ for (const p1 in obj) {
467
+ for (const p2 in obj[p1]) {
468
+ const p2Number = parseInt(p2, 10);
469
+ if (p2Number >= offset && (!shouldLimit || p2Number < nextOffset!)) {
470
+ for (const p3 in obj[p1][p2]) {
471
+ return false;
472
+ }
473
+ }
474
+ }
475
+ }
476
+ return true;
477
+ }
478
+
479
+ /**
480
+ * @protected
481
+ * @param {Number} lineIndex
482
+ * @param {Number} charIndex
483
+ * @return {TextStyleDeclaration} a style object reference to the existing one or a new empty object when undefined
484
+ */
485
+ _getStyleDeclaration(
486
+ lineIndex: number,
487
+ charIndex: number,
488
+ ): TextStyleDeclaration {
489
+ if (this._styleMap && !this.isWrapping) {
490
+ const map = this._styleMap[lineIndex];
491
+ if (!map) {
492
+ return {};
493
+ }
494
+ lineIndex = map.line;
495
+ charIndex = map.offset + charIndex;
496
+ }
497
+ return super._getStyleDeclaration(lineIndex, charIndex);
498
+ }
499
+
500
+ /**
501
+ * @param {Number} lineIndex
502
+ * @param {Number} charIndex
503
+ * @param {Object} style
504
+ * @private
505
+ */
506
+ protected _setStyleDeclaration(
507
+ lineIndex: number,
508
+ charIndex: number,
509
+ style: object,
510
+ ) {
511
+ const map = this._styleMap[lineIndex];
512
+ super._setStyleDeclaration(map.line, map.offset + charIndex, style);
513
+ }
514
+
515
+ /**
516
+ * @param {Number} lineIndex
517
+ * @param {Number} charIndex
518
+ * @private
519
+ */
520
+ protected _deleteStyleDeclaration(lineIndex: number, charIndex: number) {
521
+ const map = this._styleMap[lineIndex];
522
+ super._deleteStyleDeclaration(map.line, map.offset + charIndex);
523
+ }
524
+
525
+ /**
526
+ * probably broken need a fix
527
+ * Returns the real style line that correspond to the wrapped lineIndex line
528
+ * Used just to verify if the line does exist or not.
529
+ * @param {Number} lineIndex
530
+ * @returns {Boolean} if the line exists or not
531
+ * @private
532
+ */
533
+ protected _getLineStyle(lineIndex: number): boolean {
534
+ const map = this._styleMap[lineIndex];
535
+ return !!this.styles[map.line];
536
+ }
537
+
538
+ /**
539
+ * Set the line style to an empty object so that is initialized
540
+ * @param {Number} lineIndex
541
+ * @param {Object} style
542
+ * @private
543
+ */
544
+ protected _setLineStyle(lineIndex: number) {
545
+ const map = this._styleMap[lineIndex];
546
+ super._setLineStyle(map.line);
547
+ }
548
+
549
+ /**
550
+ * Wraps text using the 'width' property of Textbox. First this function
551
+ * splits text on newlines, so we preserve newlines entered by the user.
552
+ * Then it wraps each line using the width of the Textbox by calling
553
+ * _wrapLine().
554
+ * @param {Array} lines The string array of text that is split into lines
555
+ * @param {Number} desiredWidth width you want to wrap to
556
+ * @returns {Array} Array of lines
557
+ */
558
+ _wrapText(lines: string[], desiredWidth: number): string[][] {
559
+ this.isWrapping = true;
560
+ // extract all thewords and the widths to optimally wrap lines.
561
+ const data = this.getGraphemeDataForRender(lines);
562
+ const wrapped: string[][] = [];
563
+ for (let i = 0; i < data.wordsData.length; i++) {
564
+ wrapped.push(...this._wrapLine(i, desiredWidth, data));
565
+ }
566
+ this.isWrapping = false;
567
+ return wrapped;
568
+ }
569
+
570
+ /**
571
+ * For each line of text terminated by an hard line stop,
572
+ * measure each word width and extract the largest word from all.
573
+ * The returned words here are the one that at the end will be rendered.
574
+ * @param {string[]} lines the lines we need to measure
575
+ *
576
+ */
577
+ getGraphemeDataForRender(lines: string[]): GraphemeData {
578
+ const splitByGrapheme = this.splitByGrapheme,
579
+ infix = splitByGrapheme ? '' : ' ';
580
+
581
+ let largestWordWidth = 0;
582
+
583
+ const data = lines.map((line, lineIndex) => {
584
+ let offset = 0;
585
+ const wordsOrGraphemes = splitByGrapheme
586
+ ? this.graphemeSplit(line)
587
+ : this.wordSplit(line);
588
+
589
+ if (wordsOrGraphemes.length === 0) {
590
+ return [{ word: [], width: 0 }];
591
+ }
592
+
593
+ return wordsOrGraphemes.map((word: string) => {
594
+ // if using splitByGrapheme words are already in graphemes.
595
+ const graphemeArray = splitByGrapheme
596
+ ? [word]
597
+ : this.graphemeSplit(word);
598
+ const width = this._measureWord(graphemeArray, lineIndex, offset);
599
+ largestWordWidth = Math.max(width, largestWordWidth);
600
+ offset += graphemeArray.length + infix.length;
601
+ return { word: graphemeArray, width };
602
+ });
603
+ });
604
+
605
+ return {
606
+ wordsData: data,
607
+ largestWordWidth,
608
+ };
609
+ }
610
+
611
+ /**
612
+ * Helper function to measure a string of text, given its lineIndex and charIndex offset
613
+ * It gets called when charBounds are not available yet.
614
+ * Override if necessary
615
+ * Use with {@link Textbox#wordSplit}
616
+ *
617
+ * @param {CanvasRenderingContext2D} ctx
618
+ * @param {String} text
619
+ * @param {number} lineIndex
620
+ * @param {number} charOffset
621
+ * @returns {number}
622
+ */
623
+ _measureWord(word: string[], lineIndex: number, charOffset = 0): number {
624
+ let width = 0,
625
+ prevGrapheme;
626
+ const skipLeft = true;
627
+ for (let i = 0, len = word.length; i < len; i++) {
628
+ const box = this._getGraphemeBox(
629
+ word[i],
630
+ lineIndex,
631
+ i + charOffset,
632
+ prevGrapheme,
633
+ skipLeft,
634
+ );
635
+ width += box.kernedWidth;
636
+ prevGrapheme = word[i];
637
+ }
638
+ return width;
639
+ }
640
+
641
+ /**
642
+ * Override this method to customize word splitting
643
+ * Use with {@link Textbox#_measureWord}
644
+ * @param {string} value
645
+ * @returns {string[]} array of words
646
+ */
647
+ wordSplit(value: string): string[] {
648
+ return value.split(this._wordJoiners);
649
+ }
650
+
651
+ /**
652
+ * Wraps a line of text using the width of the Textbox as desiredWidth
653
+ * and leveraging the known width o words from GraphemeData
654
+ * @private
655
+ * @param {Number} lineIndex
656
+ * @param {Number} desiredWidth width you want to wrap the line to
657
+ * @param {GraphemeData} graphemeData an object containing all the lines' words width.
658
+ * @param {Number} reservedSpace space to remove from wrapping for custom functionalities
659
+ * @returns {Array} Array of line(s) into which the given text is wrapped
660
+ * to.
661
+ */
662
+ _wrapLine(
663
+ lineIndex: number,
664
+ desiredWidth: number,
665
+ { largestWordWidth, wordsData }: GraphemeData,
666
+ reservedSpace = 0,
667
+ ): string[][] {
668
+ const additionalSpace = this._getWidthOfCharSpacing(),
669
+ splitByGrapheme = this.splitByGrapheme,
670
+ graphemeLines = [],
671
+ infix = splitByGrapheme ? '' : ' ';
672
+
673
+ let lineWidth = 0,
674
+ line: string[] = [],
675
+ // spaces in different languages?
676
+ offset = 0,
677
+ infixWidth = 0,
678
+ lineJustStarted = true;
679
+
680
+ desiredWidth -= reservedSpace;
681
+
682
+ const maxWidth = Math.max(
683
+ desiredWidth,
684
+ largestWordWidth,
685
+ this.dynamicMinWidth,
686
+ );
687
+ // layout words
688
+ const data = wordsData[lineIndex];
689
+ offset = 0;
690
+ let i;
691
+ for (i = 0; i < data.length; i++) {
692
+ const { word, width: wordWidth } = data[i];
693
+ offset += word.length;
694
+
695
+ // Predictive wrapping: check if adding this word would exceed the width
696
+ const potentialLineWidth = lineWidth + infixWidth + wordWidth - additionalSpace;
697
+ // Use exact width to match overlay editor behavior
698
+ const conservativeMaxWidth = maxWidth; // No artificial buffer
699
+
700
+ // Debug logging for wrapping decisions
701
+ const currentLineText = line.join('');
702
+ console.log(`🔧 FABRIC WRAP CHECK: "${data[i].word}" -> potential: ${potentialLineWidth.toFixed(1)}px vs limit: ${conservativeMaxWidth.toFixed(1)}px`);
703
+
704
+ if (potentialLineWidth > conservativeMaxWidth && !lineJustStarted) {
705
+ // This word would exceed the width, wrap before adding it
706
+ console.log(`🔧 FABRIC WRAP! Line: "${currentLineText}" (${lineWidth.toFixed(1)}px)`);
707
+ graphemeLines.push(line);
708
+ line = [];
709
+ lineWidth = wordWidth; // Start new line with just this word
710
+ lineJustStarted = true;
711
+ } else {
712
+ // Word fits, add it to current line
713
+ lineWidth = potentialLineWidth + additionalSpace;
714
+ }
715
+
716
+ if (!lineJustStarted && !splitByGrapheme) {
717
+ line.push(infix);
718
+ }
719
+ line = line.concat(word);
720
+
721
+ // Debug: show current line after adding word
722
+ console.log(`🔧 FABRIC AFTER ADD: Line now: "${line.join('')}" (${line.length} chars)`);
723
+
724
+
725
+ infixWidth = splitByGrapheme
726
+ ? 0
727
+ : this._measureWord([infix], lineIndex, offset);
728
+ offset++;
729
+ lineJustStarted = false;
730
+ }
731
+
732
+ i && graphemeLines.push(line);
733
+
734
+ // TODO: this code is probably not necessary anymore.
735
+ // it can be moved out of this function since largestWordWidth is now
736
+ // known in advance
737
+ // Don't modify dynamicMinWidth when using browser wrapping to prevent width increases
738
+ if (!((this as any)._usingBrowserWrapping) && largestWordWidth + reservedSpace > this.dynamicMinWidth) {
739
+ console.log(`🔧 FABRIC updating dynamicMinWidth: ${this.dynamicMinWidth} -> ${largestWordWidth - additionalSpace + reservedSpace}`);
740
+ this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;
741
+ } else if ((this as any)._usingBrowserWrapping) {
742
+ console.log(`🔤 BROWSER WRAP: Skipping dynamicMinWidth update to prevent width increase`);
743
+ }
744
+
745
+ // Debug: show final wrapped lines
746
+ console.log(`🔧 FABRIC FINAL LINES: ${graphemeLines.length} lines`);
747
+ graphemeLines.forEach((line, i) => {
748
+ console.log(` Line ${i + 1}: "${line.join('')}" (${line.length} chars)`);
749
+ });
750
+
751
+ return graphemeLines;
752
+ }
753
+
754
+ /**
755
+ * Detect if the text line is ended with an hard break
756
+ * text and itext do not have wrapping, return false
757
+ * @param {Number} lineIndex text to split
758
+ * @return {Boolean}
759
+ */
760
+ isEndOfWrapping(lineIndex: number): boolean {
761
+ if (!this._styleMap[lineIndex + 1]) {
762
+ // is last line, return true;
763
+ return true;
764
+ }
765
+ if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {
766
+ // this is last line before a line break, return true;
767
+ return true;
768
+ }
769
+ return false;
770
+ }
771
+
772
+ /**
773
+ * Detect if a line has a linebreak and so we need to account for it when moving
774
+ * and counting style.
775
+ * This is important only for splitByGrapheme at the end of wrapping.
776
+ * If we are not wrapping the offset is always 1
777
+ * @return Number
778
+ */
779
+ missingNewlineOffset(lineIndex: number, skipWrapping?: boolean): 0 | 1 {
780
+ if (this.splitByGrapheme && !skipWrapping) {
781
+ return this.isEndOfWrapping(lineIndex) ? 1 : 0;
782
+ }
783
+ return 1;
784
+ }
785
+
786
+ /**
787
+ * Gets lines of text to render in the Textbox. This function calculates
788
+ * text wrapping on the fly every time it is called.
789
+ * @param {String} text text to split
790
+ * @returns {Array} Array of lines in the Textbox.
791
+ * @override
792
+ */
793
+ _splitTextIntoLines(text: string) {
794
+ // Check if we need browser wrapping using smart font detection
795
+ const needsBrowserWrapping = this.fontFamily && fontLacksEnglishGlyphsCached(this.fontFamily);
796
+
797
+ if (needsBrowserWrapping) {
798
+ // Cache key based on text content, width, font properties, AND text alignment
799
+ const textHash = text.length + text.slice(0, 50); // Include text content in cache key
800
+ const cacheKey = `${textHash}|${this.width}|${this.fontSize}|${this.fontFamily}|${this.textAlign}`;
801
+
802
+ // Check if we have a cached result and nothing has changed
803
+ if ((this as any)._browserWrapCache && (this as any)._browserWrapCache.key === cacheKey) {
804
+ const cachedResult = (this as any)._browserWrapCache.result;
805
+
806
+ // For justify alignment, ensure we have the measurements
807
+ if (this.textAlign.includes('justify') && !(cachedResult as any).justifySpaceMeasurements) {
808
+ // Fall through to recalculate
809
+ } else {
810
+ return cachedResult;
811
+ }
812
+ }
813
+
814
+ const result = this._splitTextIntoLinesWithBrowser(text);
815
+
816
+ // Cache the result
817
+ (this as any)._browserWrapCache = { key: cacheKey, result };
818
+
819
+ // Mark that we used browser wrapping to prevent dynamicMinWidth modifications
820
+ (this as any)._usingBrowserWrapping = true;
821
+
822
+ return result;
823
+ }
824
+
825
+ // Clear the browser wrapping flag when using regular wrapping
826
+ (this as any)._usingBrowserWrapping = false;
827
+
828
+ // Default Fabric wrapping for other fonts
829
+ const newText = super._splitTextIntoLines(text),
830
+ graphemeLines = this._wrapText(newText.lines, this.width),
831
+ lines = new Array(graphemeLines.length);
832
+ for (let i = 0; i < graphemeLines.length; i++) {
833
+ lines[i] = graphemeLines[i].join('');
834
+ }
835
+ newText.lines = lines;
836
+ newText.graphemeLines = graphemeLines;
837
+ return newText;
838
+ }
839
+
840
+ /**
841
+ * Use browser's native text wrapping for accurate handling of fonts without English glyphs
842
+ * @private
843
+ */
844
+ _splitTextIntoLinesWithBrowser(text: string) {
845
+ if (typeof document === 'undefined') {
846
+ // Fallback to regular wrapping in Node.js
847
+ return this._splitTextIntoLinesDefault(text);
848
+ }
849
+
850
+ // Create a hidden element that mimics the overlay editor
851
+ const testElement = document.createElement('div');
852
+ testElement.style.position = 'absolute';
853
+ testElement.style.left = '-9999px';
854
+ testElement.style.visibility = 'hidden';
855
+ testElement.style.fontSize = `${this.fontSize}px`;
856
+ testElement.style.fontFamily = `"${this.fontFamily}"`;
857
+ testElement.style.fontWeight = String(this.fontWeight || 'normal');
858
+ testElement.style.fontStyle = String(this.fontStyle || 'normal');
859
+ testElement.style.lineHeight = String(this.lineHeight || 1.16);
860
+
861
+ testElement.style.width = `${this.width}px`;
862
+
863
+ testElement.style.direction = this.direction || 'ltr';
864
+ testElement.style.whiteSpace = 'pre-wrap';
865
+ testElement.style.wordBreak = 'normal';
866
+ testElement.style.overflowWrap = 'break-word';
867
+
868
+ // Set browser-native text alignment (including justify)
869
+ if (this.textAlign.includes('justify')) {
870
+ testElement.style.textAlign = 'justify';
871
+ testElement.style.textAlignLast = 'auto'; // Let browser decide last line alignment
872
+ } else {
873
+ testElement.style.textAlign = this.textAlign;
874
+ }
875
+
876
+ testElement.textContent = text;
877
+
878
+ document.body.appendChild(testElement);
879
+
880
+ // Get the browser's natural line breaks
881
+ const range = document.createRange();
882
+ const lines: string[] = [];
883
+ const graphemeLines: string[][] = [];
884
+
885
+ try {
886
+ // Simple approach: split by measuring character positions
887
+ const textNode = testElement.firstChild;
888
+ if (textNode && textNode.nodeType === Node.TEXT_NODE) {
889
+ let currentLineStart = 0;
890
+ const textLength = text.length;
891
+ let previousBottom = 0;
892
+
893
+ for (let i = 0; i <= textLength; i++) {
894
+ range.setStart(textNode, currentLineStart);
895
+ range.setEnd(textNode, i);
896
+ const rect = range.getBoundingClientRect();
897
+
898
+ if (i > currentLineStart && (rect.bottom > previousBottom + 5 || i === textLength)) {
899
+ // New line detected or end of text
900
+ const lineEnd = i === textLength ? i : i - 1;
901
+ const lineText = text.substring(currentLineStart, lineEnd).trim();
902
+ if (lineText) {
903
+ lines.push(lineText);
904
+ // Convert to graphemes for compatibility
905
+ const graphemeLine = lineText.split('');
906
+ graphemeLines.push(graphemeLine);
907
+ }
908
+ currentLineStart = lineEnd;
909
+ previousBottom = rect.bottom;
910
+ }
911
+ }
912
+ }
913
+ } catch (error) {
914
+ console.warn('Browser wrapping failed, using fallback:', error);
915
+ document.body.removeChild(testElement);
916
+ return this._splitTextIntoLinesDefault(text);
917
+ }
918
+
919
+ // Extract actual browser height BEFORE removing element
920
+ const actualBrowserHeight = testElement.scrollHeight;
921
+ const offsetHeight = testElement.offsetHeight;
922
+ const clientHeight = testElement.clientHeight;
923
+ const boundingRect = testElement.getBoundingClientRect();
924
+
925
+ console.log(`🔤 Browser element measurements:`);
926
+ console.log(` scrollHeight: ${actualBrowserHeight}px (content + padding + hidden overflow)`);
927
+ console.log(` offsetHeight: ${offsetHeight}px (content + padding + border)`);
928
+ console.log(` clientHeight: ${clientHeight}px (content + padding, no border/scrollbar)`);
929
+ console.log(` boundingRect.height: ${boundingRect.height}px (actual rendered height)`);
930
+ console.log(` Font size: ${this.fontSize}px, Line height: ${this.lineHeight || 1.16}, Lines: ${lines.length}`);
931
+
932
+ // For justify alignment, extract space measurements from browser BEFORE removing element
933
+ let justifySpaceMeasurements = null;
934
+ if (this.textAlign.includes('justify')) {
935
+ justifySpaceMeasurements = this._extractJustifySpaceMeasurements(testElement, lines);
936
+ }
937
+
938
+ document.body.removeChild(testElement);
939
+
940
+ console.log(`🔤 Browser wrapping result: ${lines.length} lines`);
941
+
942
+ // Try different height measurements to find the most accurate
943
+ let bestHeight = actualBrowserHeight;
944
+
945
+ // If scrollHeight and offsetHeight differ significantly, investigate
946
+ if (Math.abs(actualBrowserHeight - offsetHeight) > 2) {
947
+ console.log(`🔤 Height discrepancy detected: scrollHeight=${actualBrowserHeight}px vs offsetHeight=${offsetHeight}px`);
948
+ }
949
+
950
+ // Consider using boundingRect height if it's larger (sometimes more accurate for visible content)
951
+ if (boundingRect.height > bestHeight) {
952
+ console.log(`🔤 Using boundingRect height (${boundingRect.height}px) instead of scrollHeight (${bestHeight}px)`);
953
+ bestHeight = boundingRect.height;
954
+ }
955
+
956
+ // Font-specific height adjustments for accurate bounding box
957
+ let adjustedHeight = bestHeight;
958
+
959
+ // Fonts without English glyphs need additional height buffer due to different font metrics
960
+ const lacksEnglishGlyphs = fontLacksEnglishGlyphsCached(this.fontFamily);
961
+ if (lacksEnglishGlyphs) {
962
+ const glyphBuffer = this.fontSize * 0.25; // 25% of font size for non-English fonts
963
+ adjustedHeight = bestHeight + glyphBuffer;
964
+ console.log(`🔤 Non-English font detected (${this.fontFamily}): Adding ${glyphBuffer}px buffer (${bestHeight}px + ${glyphBuffer}px = ${adjustedHeight}px)`);
965
+ } else {
966
+ console.log(`🔤 Standard font (${this.fontFamily}): Using browser height directly (${bestHeight}px)`);
967
+ }
968
+
969
+ return {
970
+ _unwrappedLines: [text.split('')],
971
+ lines: lines,
972
+ graphemeText: text.split(''),
973
+ graphemeLines: graphemeLines,
974
+ justifySpaceMeasurements: justifySpaceMeasurements,
975
+ actualBrowserHeight: adjustedHeight,
976
+ };
977
+ }
978
+
979
+
980
+
981
+
982
+ /**
983
+ * Extract justify space measurements from browser
984
+ * @private
985
+ */
986
+ _extractJustifySpaceMeasurements(element: HTMLElement, lines: string[]) {
987
+ console.log(`🔤 Extracting browser justify space measurements for ${lines.length} lines`);
988
+
989
+ // For now, we'll use a simplified approach:
990
+ // Apply uniform space expansion to match the line width
991
+ const spaceWidths: number[][] = [];
992
+
993
+ lines.forEach((line, lineIndex) => {
994
+ const lineSpaces: number[] = [];
995
+ const spaceCount = (line.match(/\s/g) || []).length;
996
+
997
+ if (spaceCount > 0 && lineIndex < lines.length - 1) { // Don't justify last line
998
+ // Calculate how much space expansion is needed
999
+ const normalSpaceWidth = 6.4; // Default space width for STV font
1000
+ const lineWidth = this.width;
1001
+
1002
+ // Estimate natural line width
1003
+ const charCount = line.length - spaceCount;
1004
+ const avgCharWidth = 12; // Approximate for STV font
1005
+ const naturalWidth = charCount * avgCharWidth + spaceCount * normalSpaceWidth;
1006
+
1007
+ // Calculate expanded space width
1008
+ const remainingSpace = lineWidth - (charCount * avgCharWidth);
1009
+ const expandedSpaceWidth = remainingSpace / spaceCount;
1010
+
1011
+ console.log(`🔤 Line ${lineIndex}: ${spaceCount} spaces, natural: ${normalSpaceWidth}px -> justified: ${expandedSpaceWidth.toFixed(1)}px`);
1012
+
1013
+ // Fill array with expanded space widths for this line
1014
+ for (let i = 0; i < spaceCount; i++) {
1015
+ lineSpaces.push(expandedSpaceWidth);
1016
+ }
1017
+ }
1018
+
1019
+ spaceWidths.push(lineSpaces);
1020
+ });
1021
+
1022
+ return spaceWidths;
1023
+ }
1024
+
1025
+ /**
1026
+ * Apply browser-calculated justify space measurements
1027
+ * @private
1028
+ */
1029
+ _applyBrowserJustifySpaces() {
1030
+ if (!this._textLines || !this.__charBounds) {
1031
+ console.warn('🔤 BROWSER JUSTIFY: _textLines or __charBounds not ready');
1032
+ return;
1033
+ }
1034
+
1035
+ // Get space measurements from browser wrapping result
1036
+ const styleMap = this._styleMap as any;
1037
+ if (!styleMap || !styleMap.justifySpaceMeasurements) {
1038
+ console.warn('🔤 BROWSER JUSTIFY: No justify space measurements available');
1039
+ return;
1040
+ }
1041
+
1042
+ const spaceWidths = styleMap.justifySpaceMeasurements as number[][];
1043
+ console.log('🔤 BROWSER JUSTIFY: Applying space measurements to __charBounds');
1044
+
1045
+ // Apply space widths to character bounds
1046
+ this._textLines.forEach((line, lineIndex) => {
1047
+ if (!this.__charBounds || !this.__charBounds[lineIndex] || !spaceWidths[lineIndex]) return;
1048
+
1049
+ const lineBounds = this.__charBounds[lineIndex];
1050
+ const lineSpaceWidths = spaceWidths[lineIndex];
1051
+ let spaceIndex = 0;
1052
+
1053
+ for (let charIndex = 0; charIndex < line.length; charIndex++) {
1054
+ if (/\s/.test(line[charIndex]) && spaceIndex < lineSpaceWidths.length) {
1055
+ const expandedWidth = lineSpaceWidths[spaceIndex];
1056
+ if (lineBounds[charIndex]) {
1057
+ const oldWidth = lineBounds[charIndex].width;
1058
+ lineBounds[charIndex].width = expandedWidth;
1059
+ console.log(`🔤 Line ${lineIndex} space ${spaceIndex}: ${oldWidth.toFixed(1)}px -> ${expandedWidth.toFixed(1)}px`);
1060
+ }
1061
+ spaceIndex++;
1062
+ }
1063
+ }
1064
+ });
1065
+ }
1066
+
1067
+ /**
1068
+ * Fallback to default Fabric wrapping
1069
+ * @private
1070
+ */
1071
+ _splitTextIntoLinesDefault(text: string) {
1072
+ const newText = super._splitTextIntoLines(text),
1073
+ graphemeLines = this._wrapText(newText.lines, this.width),
1074
+ lines = new Array(graphemeLines.length);
1075
+ for (let i = 0; i < graphemeLines.length; i++) {
1076
+ lines[i] = graphemeLines[i].join('');
1077
+ }
1078
+ newText.lines = lines;
1079
+ newText.graphemeLines = graphemeLines;
1080
+ return newText;
1081
+ }
1082
+
1083
+ getMinWidth() {
1084
+ return Math.max(this.minWidth, this.dynamicMinWidth);
1085
+ }
1086
+
1087
+ _removeExtraneousStyles() {
1088
+ const linesToKeep = new Map();
1089
+ for (const prop in this._styleMap) {
1090
+ const propNumber = parseInt(prop, 10);
1091
+ if (this._textLines[propNumber]) {
1092
+ const lineIndex = this._styleMap[prop].line;
1093
+ linesToKeep.set(`${lineIndex}`, true);
1094
+ }
1095
+ }
1096
+ for (const prop in this.styles) {
1097
+ if (!linesToKeep.has(prop)) {
1098
+ delete this.styles[prop];
1099
+ }
1100
+ }
1101
+ }
1102
+
1103
+ /**
1104
+ * Initialize event listeners for safety snap functionality
1105
+ * @private
1106
+ */
1107
+ private initializeEventListeners(): void {
1108
+ // Track which side is being used for resize to handle position compensation
1109
+ let resizeOrigin: 'left' | 'right' | null = null;
1110
+
1111
+ // Detect resize origin during resizing
1112
+ this.on('resizing', (e: any) => {
1113
+ // Check transform origin to determine which side is being resized
1114
+ if (e.transform) {
1115
+ const { originX } = e.transform;
1116
+ // originX tells us which side is the anchor - opposite side is being dragged
1117
+ resizeOrigin = originX === 'right' ? 'left' : originX === 'left' ? 'right' : null;
1118
+ } else if (e.originX) {
1119
+ const { originX } = e;
1120
+ resizeOrigin = originX === 'right' ? 'left' : originX === 'left' ? 'right' : null;
1121
+ }
1122
+ });
1123
+
1124
+ // Only trigger safety snap after resize is complete (not during)
1125
+ // Use 'modified' event which fires after user releases the mouse
1126
+ this.on('modified', () => {
1127
+ const currentResizeOrigin = resizeOrigin; // Capture the value before reset
1128
+ // Small delay to ensure text layout is updated
1129
+ setTimeout(() => this.safetySnapWidth(currentResizeOrigin), 10);
1130
+ resizeOrigin = null; // Reset after capturing
1131
+ });
1132
+
1133
+ // Also listen to canvas-level modified event as backup
1134
+ this.canvas?.on('object:modified', (e) => {
1135
+ if (e.target === this) {
1136
+ const currentResizeOrigin = resizeOrigin; // Capture the value before reset
1137
+ setTimeout(() => this.safetySnapWidth(currentResizeOrigin), 10);
1138
+ resizeOrigin = null; // Reset after capturing
1139
+ }
1140
+ });
1141
+ }
1142
+
1143
+ /**
1144
+ * Safety snap to prevent glyph clipping after manual resize.
1145
+ * Similar to Polotno - checks if any glyphs are too close to edges
1146
+ * and automatically expands width if needed.
1147
+ * @private
1148
+ * @param resizeOrigin - Which side was used for resizing ('left' or 'right')
1149
+ */
1150
+ private safetySnapWidth(resizeOrigin?: 'left' | 'right' | null): void {
1151
+ // For Textbox objects, we always want to check for clipping regardless of isWrapping flag
1152
+ if (!this._textLines || this.type.toLowerCase() !== 'textbox' || this._textLines.length === 0) {
1153
+ return;
1154
+ }
1155
+
1156
+ const lineCount = this._textLines.length;
1157
+ if (lineCount === 0) return;
1158
+
1159
+ // Check all lines, not just the last one
1160
+ let maxActualLineWidth = 0; // Actual measured width without buffers
1161
+ let maxRequiredWidth = 0; // Width including RTL buffer
1162
+
1163
+ for (let i = 0; i < lineCount; i++) {
1164
+ const lineText = this._textLines[i].join(''); // Convert grapheme array to string
1165
+ const lineWidth = this.getLineWidth(i);
1166
+ maxActualLineWidth = Math.max(maxActualLineWidth, lineWidth);
1167
+
1168
+ // RTL detection - regex for Arabic, Hebrew, and other RTL characters
1169
+ const rtlRegex = /[\u0590-\u05FF\u0600-\u06FF\u0750-\u077F\uFB50-\uFDFF\uFE70-\uFEFF]/;
1170
+ if (rtlRegex.test(lineText)) {
1171
+ // Add minimal RTL compensation buffer - just enough to prevent clipping
1172
+ const rtlBuffer = (this.fontSize || 16) * 0.15; // 15% of font size (much smaller)
1173
+ maxRequiredWidth = Math.max(maxRequiredWidth, lineWidth + rtlBuffer);
1174
+ } else {
1175
+ maxRequiredWidth = Math.max(maxRequiredWidth, lineWidth);
1176
+ }
1177
+ }
1178
+
1179
+ // Safety margin - how close glyphs can get before we snap
1180
+ const safetyThreshold = 2; // px - very subtle trigger
1181
+
1182
+ if (maxRequiredWidth > this.width - safetyThreshold) {
1183
+ // Set width to exactly what's needed + minimal safety margin
1184
+ const newWidth = maxRequiredWidth + 1; // Add just 1px safety margin
1185
+
1186
+ // Store original position before width change
1187
+ const originalLeft = this.left;
1188
+ const originalTop = this.top;
1189
+ const widthIncrease = newWidth - this.width;
1190
+
1191
+ // Change width
1192
+ this.set('width', newWidth);
1193
+
1194
+ // Force text layout recalculation
1195
+ this.initDimensions();
1196
+
1197
+ // Only compensate position when resizing from left handle
1198
+ // Right handle resize doesn't shift the text position
1199
+ if (resizeOrigin === 'left') {
1200
+ // When resizing from left, the expansion pushes text right
1201
+ // Compensate by moving the textbox left by the width increase
1202
+ this.set({
1203
+ 'left': originalLeft - widthIncrease,
1204
+ 'top': originalTop
1205
+ });
1206
+ }
1207
+
1208
+ this.setCoords();
1209
+
1210
+ // Also refresh the overlay editor if it exists
1211
+ if ((this as any).__overlayEditor) {
1212
+ setTimeout(() => {
1213
+ (this as any).__overlayEditor.refresh();
1214
+ }, 0);
1215
+ }
1216
+
1217
+ this.canvas?.requestRenderAll();
1218
+ }
1219
+ }
1220
+
1221
+ /**
1222
+ * Fix character selection mismatch after JSON loading for browser-wrapped fonts
1223
+ * @private
1224
+ */
1225
+ _fixCharacterMappingAfterJsonLoad(): void {
1226
+ if ((this as any)._usingBrowserWrapping) {
1227
+ // Clear all cached states to force fresh text layout calculation
1228
+ (this as any)._browserWrapCache = null;
1229
+ (this as any)._lastDimensionState = null;
1230
+
1231
+ // Force complete re-initialization
1232
+ this.initDimensions();
1233
+ this._forceClearCache = true;
1234
+
1235
+ // Ensure canvas refresh
1236
+ this.setCoords();
1237
+ if (this.canvas) {
1238
+ this.canvas.requestRenderAll();
1239
+ }
1240
+ }
1241
+ }
1242
+
1243
+ /**
1244
+ * Force complete textbox re-initialization (useful after JSON loading)
1245
+ * Overrides Text version with Textbox-specific logic
1246
+ */
1247
+ forceTextReinitialization(): void {
1248
+ console.log('🔄 Force reinitializing Textbox object');
1249
+
1250
+ // CRITICAL: Ensure textbox is marked as initialized
1251
+ this.initialized = true;
1252
+
1253
+ // Clear all caches and force dirty state
1254
+ this._clearCache();
1255
+ this.dirty = true;
1256
+ this.dynamicMinWidth = 0;
1257
+
1258
+ // Force isEditing false to ensure clean state
1259
+ this.isEditing = false;
1260
+
1261
+ console.log(' → Set initialized=true, dirty=true, cleared caches');
1262
+
1263
+ // Re-initialize dimensions (this will handle justify properly)
1264
+ this.initDimensions();
1265
+
1266
+ // Double-check that justify was applied by checking space widths
1267
+ if (this.textAlign.includes('justify') && this.__charBounds) {
1268
+ setTimeout(() => {
1269
+ // Verify justify was applied by checking if space widths vary
1270
+ let hasVariableSpaces = false;
1271
+ this.__charBounds.forEach((lineBounds, i) => {
1272
+ if (lineBounds && this._textLines && this._textLines[i]) {
1273
+ const spaces = lineBounds.filter((bound, j) => /\s/.test(this._textLines[i][j]));
1274
+ if (spaces.length > 1) {
1275
+ const firstSpaceWidth = spaces[0].width;
1276
+ hasVariableSpaces = spaces.some(space => Math.abs(space.width - firstSpaceWidth) > 0.1);
1277
+ }
1278
+ }
1279
+ });
1280
+
1281
+ if (!hasVariableSpaces && this.__charBounds.length > 0) {
1282
+ console.warn(' ⚠️ Justify spaces still uniform - forcing enlargeSpaces again');
1283
+ if (this.enlargeSpaces) {
1284
+ this.enlargeSpaces();
1285
+ }
1286
+ } else {
1287
+ console.log(' ✅ Justify spaces properly expanded');
1288
+ }
1289
+
1290
+ // Ensure height is recalculated - use browser height if available
1291
+ if ((this as any)._usingBrowserWrapping && (this as any)._actualBrowserHeight) {
1292
+ this.height = (this as any)._actualBrowserHeight;
1293
+ console.log(`🔤 JUSTIFY: Preserved browser height: ${this.height}px`);
1294
+ } else {
1295
+ this.height = this.calcTextHeight();
1296
+ console.log(`🔧 JUSTIFY: Used calcTextHeight: ${this.height}px`);
1297
+ }
1298
+ this.canvas?.requestRenderAll();
1299
+ }, 10);
1300
+ }
1301
+ }
1302
+
1303
+ /**
1304
+ * Returns object representation of an instance
1305
+ * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output
1306
+ * @return {Object} object representation of an instance
1307
+ */
1308
+ toObject<
1309
+ T extends Omit<Props & TClassProperties<this>, keyof SProps>,
1310
+ K extends keyof T = never,
1311
+ >(propertiesToInclude: K[] = []): Pick<T, K> & SProps {
1312
+ return super.toObject<T, K>([
1313
+ 'minWidth',
1314
+ 'splitByGrapheme',
1315
+ ...propertiesToInclude,
1316
+ ] as K[]);
1317
+ }
1318
+ }
1319
+
1320
+ classRegistry.setClass(Textbox);