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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2538) 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 +1588 -1199
  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 +1588 -1199
  133. package/dist/index.mjs.map +1 -1
  134. package/dist/index.node.cjs +1588 -1199
  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 +1588 -1199
  139. package/dist/index.node.mjs.map +1 -1
  140. package/dist/package.json.min.mjs +1 -1
  141. package/dist/package.json.min.mjs.map +0 -0
  142. package/dist/package.json.mjs +1 -1
  143. package/dist/package.json.mjs.map +0 -0
  144. package/dist/src/ClassRegistry.d.ts +0 -0
  145. package/dist/src/ClassRegistry.d.ts.map +0 -0
  146. package/dist/src/ClassRegistry.min.mjs +0 -0
  147. package/dist/src/ClassRegistry.min.mjs.map +0 -0
  148. package/dist/src/ClassRegistry.mjs +0 -0
  149. package/dist/src/ClassRegistry.mjs.map +0 -0
  150. package/dist/src/Collection.d.ts +0 -0
  151. package/dist/src/Collection.d.ts.map +0 -0
  152. package/dist/src/Collection.min.mjs +0 -0
  153. package/dist/src/Collection.min.mjs.map +0 -0
  154. package/dist/src/Collection.mjs +0 -0
  155. package/dist/src/Collection.mjs.map +0 -0
  156. package/dist/src/CommonMethods.d.ts +0 -0
  157. package/dist/src/CommonMethods.d.ts.map +0 -0
  158. package/dist/src/CommonMethods.min.mjs +0 -0
  159. package/dist/src/CommonMethods.min.mjs.map +0 -0
  160. package/dist/src/CommonMethods.mjs +0 -0
  161. package/dist/src/CommonMethods.mjs.map +0 -0
  162. package/dist/src/EventTypeDefs.d.ts +0 -0
  163. package/dist/src/EventTypeDefs.d.ts.map +0 -0
  164. package/dist/src/Intersection.d.ts +0 -0
  165. package/dist/src/Intersection.d.ts.map +0 -0
  166. package/dist/src/Intersection.min.mjs +0 -0
  167. package/dist/src/Intersection.min.mjs.map +0 -0
  168. package/dist/src/Intersection.mjs +0 -0
  169. package/dist/src/Intersection.mjs.map +0 -0
  170. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  171. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  172. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs +0 -0
  173. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +0 -0
  174. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs +0 -0
  175. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +0 -0
  176. package/dist/src/LayoutManager/LayoutManager.d.ts +0 -0
  177. package/dist/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  178. package/dist/src/LayoutManager/LayoutManager.min.mjs +0 -0
  179. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +0 -0
  180. package/dist/src/LayoutManager/LayoutManager.mjs +0 -0
  181. package/dist/src/LayoutManager/LayoutManager.mjs.map +0 -0
  182. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  183. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  184. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +0 -0
  185. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +0 -0
  186. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +0 -0
  187. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +0 -0
  188. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  189. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  190. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +0 -0
  191. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs.map +0 -0
  192. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +0 -0
  193. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs.map +0 -0
  194. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  195. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  196. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +0 -0
  197. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +0 -0
  198. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +0 -0
  199. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +0 -0
  200. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  201. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  202. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +0 -0
  203. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +0 -0
  204. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +0 -0
  205. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +0 -0
  206. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  207. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  208. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs +0 -0
  209. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +0 -0
  210. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs +0 -0
  211. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +0 -0
  212. package/dist/src/LayoutManager/constants.d.ts +0 -0
  213. package/dist/src/LayoutManager/constants.d.ts.map +0 -0
  214. package/dist/src/LayoutManager/constants.min.mjs +0 -0
  215. package/dist/src/LayoutManager/constants.min.mjs.map +0 -0
  216. package/dist/src/LayoutManager/constants.mjs +0 -0
  217. package/dist/src/LayoutManager/constants.mjs.map +0 -0
  218. package/dist/src/LayoutManager/index.d.ts +0 -0
  219. package/dist/src/LayoutManager/index.d.ts.map +0 -0
  220. package/dist/src/LayoutManager/types.d.ts +0 -0
  221. package/dist/src/LayoutManager/types.d.ts.map +0 -0
  222. package/dist/src/Observable.d.ts +0 -0
  223. package/dist/src/Observable.d.ts.map +0 -0
  224. package/dist/src/Observable.min.mjs +0 -0
  225. package/dist/src/Observable.min.mjs.map +0 -0
  226. package/dist/src/Observable.mjs +0 -0
  227. package/dist/src/Observable.mjs.map +0 -0
  228. package/dist/src/Pattern/Pattern.d.ts +0 -0
  229. package/dist/src/Pattern/Pattern.d.ts.map +0 -0
  230. package/dist/src/Pattern/Pattern.min.mjs +0 -0
  231. package/dist/src/Pattern/Pattern.min.mjs.map +0 -0
  232. package/dist/src/Pattern/Pattern.mjs +0 -0
  233. package/dist/src/Pattern/Pattern.mjs.map +0 -0
  234. package/dist/src/Pattern/index.d.ts +0 -0
  235. package/dist/src/Pattern/index.d.ts.map +0 -0
  236. package/dist/src/Pattern/types.d.ts +0 -0
  237. package/dist/src/Pattern/types.d.ts.map +0 -0
  238. package/dist/src/Point.d.ts +0 -0
  239. package/dist/src/Point.d.ts.map +0 -0
  240. package/dist/src/Point.min.mjs +0 -0
  241. package/dist/src/Point.min.mjs.map +0 -0
  242. package/dist/src/Point.mjs +0 -0
  243. package/dist/src/Point.mjs.map +0 -0
  244. package/dist/src/Shadow.d.ts +0 -0
  245. package/dist/src/Shadow.d.ts.map +0 -0
  246. package/dist/src/Shadow.min.mjs +0 -0
  247. package/dist/src/Shadow.min.mjs.map +0 -0
  248. package/dist/src/Shadow.mjs +0 -0
  249. package/dist/src/Shadow.mjs.map +0 -0
  250. package/dist/src/brushes/BaseBrush.d.ts +0 -0
  251. package/dist/src/brushes/BaseBrush.d.ts.map +0 -0
  252. package/dist/src/brushes/BaseBrush.min.mjs +0 -0
  253. package/dist/src/brushes/BaseBrush.min.mjs.map +0 -0
  254. package/dist/src/brushes/BaseBrush.mjs +0 -0
  255. package/dist/src/brushes/BaseBrush.mjs.map +0 -0
  256. package/dist/src/brushes/CircleBrush.d.ts +0 -0
  257. package/dist/src/brushes/CircleBrush.d.ts.map +0 -0
  258. package/dist/src/brushes/CircleBrush.min.mjs +0 -0
  259. package/dist/src/brushes/CircleBrush.min.mjs.map +0 -0
  260. package/dist/src/brushes/CircleBrush.mjs +0 -0
  261. package/dist/src/brushes/CircleBrush.mjs.map +0 -0
  262. package/dist/src/brushes/PatternBrush.d.ts +0 -0
  263. package/dist/src/brushes/PatternBrush.d.ts.map +0 -0
  264. package/dist/src/brushes/PatternBrush.min.mjs +0 -0
  265. package/dist/src/brushes/PatternBrush.min.mjs.map +0 -0
  266. package/dist/src/brushes/PatternBrush.mjs +0 -0
  267. package/dist/src/brushes/PatternBrush.mjs.map +0 -0
  268. package/dist/src/brushes/PencilBrush.d.ts +0 -0
  269. package/dist/src/brushes/PencilBrush.d.ts.map +0 -0
  270. package/dist/src/brushes/PencilBrush.min.mjs +0 -0
  271. package/dist/src/brushes/PencilBrush.min.mjs.map +0 -0
  272. package/dist/src/brushes/PencilBrush.mjs +0 -0
  273. package/dist/src/brushes/PencilBrush.mjs.map +0 -0
  274. package/dist/src/brushes/SprayBrush.d.ts +0 -0
  275. package/dist/src/brushes/SprayBrush.d.ts.map +0 -0
  276. package/dist/src/brushes/SprayBrush.min.mjs +0 -0
  277. package/dist/src/brushes/SprayBrush.min.mjs.map +0 -0
  278. package/dist/src/brushes/SprayBrush.mjs +0 -0
  279. package/dist/src/brushes/SprayBrush.mjs.map +0 -0
  280. package/dist/src/brushes/typedefs.d.ts +0 -0
  281. package/dist/src/brushes/typedefs.d.ts.map +0 -0
  282. package/dist/src/cache.d.ts +0 -0
  283. package/dist/src/cache.d.ts.map +0 -0
  284. package/dist/src/cache.min.mjs +0 -0
  285. package/dist/src/cache.min.mjs.map +0 -0
  286. package/dist/src/cache.mjs +0 -0
  287. package/dist/src/cache.mjs.map +0 -0
  288. package/dist/src/canvas/Canvas.d.ts +0 -0
  289. package/dist/src/canvas/Canvas.d.ts.map +0 -0
  290. package/dist/src/canvas/Canvas.min.mjs +0 -0
  291. package/dist/src/canvas/Canvas.min.mjs.map +0 -0
  292. package/dist/src/canvas/Canvas.mjs +0 -0
  293. package/dist/src/canvas/Canvas.mjs.map +0 -0
  294. package/dist/src/canvas/CanvasOptions.d.ts +0 -0
  295. package/dist/src/canvas/CanvasOptions.d.ts.map +0 -0
  296. package/dist/src/canvas/CanvasOptions.min.mjs +0 -0
  297. package/dist/src/canvas/CanvasOptions.min.mjs.map +0 -0
  298. package/dist/src/canvas/CanvasOptions.mjs +0 -0
  299. package/dist/src/canvas/CanvasOptions.mjs.map +0 -0
  300. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  301. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  302. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +0 -0
  303. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +0 -0
  304. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +0 -0
  305. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +0 -0
  306. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  307. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  308. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +0 -0
  309. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +0 -0
  310. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +0 -0
  311. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +0 -0
  312. package/dist/src/canvas/DOMManagers/util.d.ts +0 -0
  313. package/dist/src/canvas/DOMManagers/util.d.ts.map +0 -0
  314. package/dist/src/canvas/DOMManagers/util.min.mjs +0 -0
  315. package/dist/src/canvas/DOMManagers/util.min.mjs.map +0 -0
  316. package/dist/src/canvas/DOMManagers/util.mjs +0 -0
  317. package/dist/src/canvas/DOMManagers/util.mjs.map +0 -0
  318. package/dist/src/canvas/SelectableCanvas.d.ts +0 -0
  319. package/dist/src/canvas/SelectableCanvas.d.ts.map +0 -0
  320. package/dist/src/canvas/SelectableCanvas.min.mjs +0 -0
  321. package/dist/src/canvas/SelectableCanvas.min.mjs.map +0 -0
  322. package/dist/src/canvas/SelectableCanvas.mjs +0 -0
  323. package/dist/src/canvas/SelectableCanvas.mjs.map +0 -0
  324. package/dist/src/canvas/StaticCanvas.d.ts +0 -0
  325. package/dist/src/canvas/StaticCanvas.d.ts.map +0 -0
  326. package/dist/src/canvas/StaticCanvas.min.mjs +0 -0
  327. package/dist/src/canvas/StaticCanvas.min.mjs.map +0 -0
  328. package/dist/src/canvas/StaticCanvas.mjs +0 -0
  329. package/dist/src/canvas/StaticCanvas.mjs.map +0 -0
  330. package/dist/src/canvas/StaticCanvasOptions.d.ts +0 -0
  331. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  332. package/dist/src/canvas/StaticCanvasOptions.min.mjs +0 -0
  333. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +0 -0
  334. package/dist/src/canvas/StaticCanvasOptions.mjs +0 -0
  335. package/dist/src/canvas/StaticCanvasOptions.mjs.map +0 -0
  336. package/dist/src/canvas/TextEditingManager.d.ts +0 -0
  337. package/dist/src/canvas/TextEditingManager.d.ts.map +0 -0
  338. package/dist/src/canvas/TextEditingManager.min.mjs +0 -0
  339. package/dist/src/canvas/TextEditingManager.min.mjs.map +0 -0
  340. package/dist/src/canvas/TextEditingManager.mjs +0 -0
  341. package/dist/src/canvas/TextEditingManager.mjs.map +0 -0
  342. package/dist/src/canvas/canvas_gestures.mixin.d.ts +0 -0
  343. package/dist/src/canvas/canvas_gestures.mixin.d.ts.map +0 -0
  344. package/dist/src/color/Color.d.ts +0 -0
  345. package/dist/src/color/Color.d.ts.map +0 -0
  346. package/dist/src/color/Color.min.mjs +0 -0
  347. package/dist/src/color/Color.min.mjs.map +0 -0
  348. package/dist/src/color/Color.mjs +0 -0
  349. package/dist/src/color/Color.mjs.map +0 -0
  350. package/dist/src/color/color_map.d.ts +0 -0
  351. package/dist/src/color/color_map.d.ts.map +0 -0
  352. package/dist/src/color/color_map.min.mjs +0 -0
  353. package/dist/src/color/color_map.min.mjs.map +0 -0
  354. package/dist/src/color/color_map.mjs +0 -0
  355. package/dist/src/color/color_map.mjs.map +0 -0
  356. package/dist/src/color/constants.d.ts +0 -0
  357. package/dist/src/color/constants.d.ts.map +0 -0
  358. package/dist/src/color/constants.min.mjs +0 -0
  359. package/dist/src/color/constants.min.mjs.map +0 -0
  360. package/dist/src/color/constants.mjs +0 -0
  361. package/dist/src/color/constants.mjs.map +0 -0
  362. package/dist/src/color/typedefs.d.ts +0 -0
  363. package/dist/src/color/typedefs.d.ts.map +0 -0
  364. package/dist/src/color/util.d.ts +0 -0
  365. package/dist/src/color/util.d.ts.map +0 -0
  366. package/dist/src/color/util.min.mjs +0 -0
  367. package/dist/src/color/util.min.mjs.map +0 -0
  368. package/dist/src/color/util.mjs +0 -0
  369. package/dist/src/color/util.mjs.map +0 -0
  370. package/dist/src/config.d.ts +0 -0
  371. package/dist/src/config.d.ts.map +0 -0
  372. package/dist/src/config.min.mjs +0 -0
  373. package/dist/src/config.min.mjs.map +0 -0
  374. package/dist/src/config.mjs +0 -0
  375. package/dist/src/config.mjs.map +0 -0
  376. package/dist/src/constants.d.ts +0 -0
  377. package/dist/src/constants.d.ts.map +0 -0
  378. package/dist/src/constants.min.mjs +0 -0
  379. package/dist/src/constants.min.mjs.map +0 -0
  380. package/dist/src/constants.mjs +0 -0
  381. package/dist/src/constants.mjs.map +0 -0
  382. package/dist/src/controls/Control.d.ts +0 -0
  383. package/dist/src/controls/Control.d.ts.map +0 -0
  384. package/dist/src/controls/Control.min.mjs +0 -0
  385. package/dist/src/controls/Control.min.mjs.map +0 -0
  386. package/dist/src/controls/Control.mjs +0 -0
  387. package/dist/src/controls/Control.mjs.map +0 -0
  388. package/dist/src/controls/changeHeight.d.ts +0 -0
  389. package/dist/src/controls/changeHeight.d.ts.map +0 -0
  390. package/dist/src/controls/changeHeight.min.mjs +2 -0
  391. package/dist/src/controls/changeHeight.min.mjs.map +1 -0
  392. package/dist/src/controls/changeHeight.mjs +36 -0
  393. package/dist/src/controls/changeHeight.mjs.map +1 -0
  394. package/dist/src/controls/changeWidth.d.ts +0 -0
  395. package/dist/src/controls/changeWidth.d.ts.map +0 -0
  396. package/dist/src/controls/changeWidth.min.mjs +0 -0
  397. package/dist/src/controls/changeWidth.min.mjs.map +0 -0
  398. package/dist/src/controls/changeWidth.mjs +0 -0
  399. package/dist/src/controls/changeWidth.mjs.map +0 -0
  400. package/dist/src/controls/commonControls.d.ts +0 -0
  401. package/dist/src/controls/commonControls.d.ts.map +0 -0
  402. package/dist/src/controls/commonControls.min.mjs +0 -0
  403. package/dist/src/controls/commonControls.min.mjs.map +0 -0
  404. package/dist/src/controls/commonControls.mjs +0 -0
  405. package/dist/src/controls/commonControls.mjs.map +0 -0
  406. package/dist/src/controls/controlRendering.d.ts +0 -0
  407. package/dist/src/controls/controlRendering.d.ts.map +0 -0
  408. package/dist/src/controls/controlRendering.min.mjs +0 -0
  409. package/dist/src/controls/controlRendering.min.mjs.map +0 -0
  410. package/dist/src/controls/controlRendering.mjs +0 -0
  411. package/dist/src/controls/controlRendering.mjs.map +0 -0
  412. package/dist/src/controls/drag.d.ts +0 -0
  413. package/dist/src/controls/drag.d.ts.map +0 -0
  414. package/dist/src/controls/drag.min.mjs +0 -0
  415. package/dist/src/controls/drag.min.mjs.map +0 -0
  416. package/dist/src/controls/drag.mjs +0 -0
  417. package/dist/src/controls/drag.mjs.map +0 -0
  418. package/dist/src/controls/fireEvent.d.ts +0 -0
  419. package/dist/src/controls/fireEvent.d.ts.map +0 -0
  420. package/dist/src/controls/fireEvent.min.mjs +0 -0
  421. package/dist/src/controls/fireEvent.min.mjs.map +0 -0
  422. package/dist/src/controls/fireEvent.mjs +0 -0
  423. package/dist/src/controls/fireEvent.mjs.map +0 -0
  424. package/dist/src/controls/index.d.ts +0 -0
  425. package/dist/src/controls/index.d.ts.map +0 -0
  426. package/dist/src/controls/index.min.mjs +0 -0
  427. package/dist/src/controls/index.min.mjs.map +0 -0
  428. package/dist/src/controls/index.mjs +0 -0
  429. package/dist/src/controls/index.mjs.map +0 -0
  430. package/dist/src/controls/pathControl.d.ts +0 -0
  431. package/dist/src/controls/pathControl.d.ts.map +0 -0
  432. package/dist/src/controls/pathControl.min.mjs +0 -0
  433. package/dist/src/controls/pathControl.min.mjs.map +0 -0
  434. package/dist/src/controls/pathControl.mjs +0 -0
  435. package/dist/src/controls/pathControl.mjs.map +0 -0
  436. package/dist/src/controls/polyControl.d.ts +0 -0
  437. package/dist/src/controls/polyControl.d.ts.map +0 -0
  438. package/dist/src/controls/polyControl.min.mjs +0 -0
  439. package/dist/src/controls/polyControl.min.mjs.map +0 -0
  440. package/dist/src/controls/polyControl.mjs +0 -0
  441. package/dist/src/controls/polyControl.mjs.map +0 -0
  442. package/dist/src/controls/rotate.d.ts +0 -0
  443. package/dist/src/controls/rotate.d.ts.map +0 -0
  444. package/dist/src/controls/rotate.min.mjs +0 -0
  445. package/dist/src/controls/rotate.min.mjs.map +0 -0
  446. package/dist/src/controls/rotate.mjs +0 -0
  447. package/dist/src/controls/rotate.mjs.map +0 -0
  448. package/dist/src/controls/scale.d.ts +0 -0
  449. package/dist/src/controls/scale.d.ts.map +0 -0
  450. package/dist/src/controls/scale.min.mjs +0 -0
  451. package/dist/src/controls/scale.min.mjs.map +0 -0
  452. package/dist/src/controls/scale.mjs +0 -0
  453. package/dist/src/controls/scale.mjs.map +0 -0
  454. package/dist/src/controls/scaleSkew.d.ts +0 -0
  455. package/dist/src/controls/scaleSkew.d.ts.map +0 -0
  456. package/dist/src/controls/scaleSkew.min.mjs +0 -0
  457. package/dist/src/controls/scaleSkew.min.mjs.map +0 -0
  458. package/dist/src/controls/scaleSkew.mjs +0 -0
  459. package/dist/src/controls/scaleSkew.mjs.map +0 -0
  460. package/dist/src/controls/skew.d.ts +0 -0
  461. package/dist/src/controls/skew.d.ts.map +0 -0
  462. package/dist/src/controls/skew.min.mjs +0 -0
  463. package/dist/src/controls/skew.min.mjs.map +0 -0
  464. package/dist/src/controls/skew.mjs +0 -0
  465. package/dist/src/controls/skew.mjs.map +0 -0
  466. package/dist/src/controls/util.d.ts +0 -0
  467. package/dist/src/controls/util.d.ts.map +0 -0
  468. package/dist/src/controls/util.min.mjs +0 -0
  469. package/dist/src/controls/util.min.mjs.map +0 -0
  470. package/dist/src/controls/util.mjs +0 -0
  471. package/dist/src/controls/util.mjs.map +0 -0
  472. package/dist/src/controls/wrapWithFireEvent.d.ts +0 -0
  473. package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  474. package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -0
  475. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -0
  476. package/dist/src/controls/wrapWithFireEvent.mjs +0 -0
  477. package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -0
  478. package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  479. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  480. package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -0
  481. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -0
  482. package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -0
  483. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -0
  484. package/dist/src/env/browser.d.ts +0 -0
  485. package/dist/src/env/browser.d.ts.map +0 -0
  486. package/dist/src/env/browser.min.mjs +0 -0
  487. package/dist/src/env/browser.min.mjs.map +0 -0
  488. package/dist/src/env/browser.mjs +0 -0
  489. package/dist/src/env/browser.mjs.map +0 -0
  490. package/dist/src/env/index.d.ts +0 -0
  491. package/dist/src/env/index.d.ts.map +0 -0
  492. package/dist/src/env/index.min.mjs +0 -0
  493. package/dist/src/env/index.min.mjs.map +0 -0
  494. package/dist/src/env/index.mjs +0 -0
  495. package/dist/src/env/index.mjs.map +0 -0
  496. package/dist/src/env/node.d.ts +0 -0
  497. package/dist/src/env/node.d.ts.map +0 -0
  498. package/dist/src/env/types.d.ts +0 -0
  499. package/dist/src/env/types.d.ts.map +0 -0
  500. package/dist/src/filters/BaseFilter.d.ts +0 -0
  501. package/dist/src/filters/BaseFilter.d.ts.map +0 -0
  502. package/dist/src/filters/BaseFilter.min.mjs +0 -0
  503. package/dist/src/filters/BaseFilter.min.mjs.map +0 -0
  504. package/dist/src/filters/BaseFilter.mjs +0 -0
  505. package/dist/src/filters/BaseFilter.mjs.map +0 -0
  506. package/dist/src/filters/BlendColor.d.ts +0 -0
  507. package/dist/src/filters/BlendColor.d.ts.map +0 -0
  508. package/dist/src/filters/BlendColor.min.mjs +0 -0
  509. package/dist/src/filters/BlendColor.min.mjs.map +0 -0
  510. package/dist/src/filters/BlendColor.mjs +0 -0
  511. package/dist/src/filters/BlendColor.mjs.map +0 -0
  512. package/dist/src/filters/BlendImage.d.ts +0 -0
  513. package/dist/src/filters/BlendImage.d.ts.map +0 -0
  514. package/dist/src/filters/BlendImage.min.mjs +0 -0
  515. package/dist/src/filters/BlendImage.min.mjs.map +0 -0
  516. package/dist/src/filters/BlendImage.mjs +0 -0
  517. package/dist/src/filters/BlendImage.mjs.map +0 -0
  518. package/dist/src/filters/Blur.d.ts +0 -0
  519. package/dist/src/filters/Blur.d.ts.map +0 -0
  520. package/dist/src/filters/Blur.min.mjs +0 -0
  521. package/dist/src/filters/Blur.min.mjs.map +0 -0
  522. package/dist/src/filters/Blur.mjs +0 -0
  523. package/dist/src/filters/Blur.mjs.map +0 -0
  524. package/dist/src/filters/Boilerplate.d.ts +0 -0
  525. package/dist/src/filters/Boilerplate.d.ts.map +0 -0
  526. package/dist/src/filters/Brightness.d.ts +0 -0
  527. package/dist/src/filters/Brightness.d.ts.map +0 -0
  528. package/dist/src/filters/Brightness.min.mjs +0 -0
  529. package/dist/src/filters/Brightness.min.mjs.map +0 -0
  530. package/dist/src/filters/Brightness.mjs +0 -0
  531. package/dist/src/filters/Brightness.mjs.map +0 -0
  532. package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  533. package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  534. package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -0
  535. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -0
  536. package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -0
  537. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -0
  538. package/dist/src/filters/ColorMatrix.d.ts +0 -0
  539. package/dist/src/filters/ColorMatrix.d.ts.map +0 -0
  540. package/dist/src/filters/ColorMatrix.min.mjs +0 -0
  541. package/dist/src/filters/ColorMatrix.min.mjs.map +0 -0
  542. package/dist/src/filters/ColorMatrix.mjs +0 -0
  543. package/dist/src/filters/ColorMatrix.mjs.map +0 -0
  544. package/dist/src/filters/ColorMatrixFilters.d.ts +0 -0
  545. package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  546. package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -0
  547. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -0
  548. package/dist/src/filters/ColorMatrixFilters.mjs +0 -0
  549. package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -0
  550. package/dist/src/filters/Composed.d.ts +0 -0
  551. package/dist/src/filters/Composed.d.ts.map +0 -0
  552. package/dist/src/filters/Composed.min.mjs +0 -0
  553. package/dist/src/filters/Composed.min.mjs.map +0 -0
  554. package/dist/src/filters/Composed.mjs +0 -0
  555. package/dist/src/filters/Composed.mjs.map +0 -0
  556. package/dist/src/filters/Contrast.d.ts +0 -0
  557. package/dist/src/filters/Contrast.d.ts.map +0 -0
  558. package/dist/src/filters/Contrast.min.mjs +0 -0
  559. package/dist/src/filters/Contrast.min.mjs.map +0 -0
  560. package/dist/src/filters/Contrast.mjs +0 -0
  561. package/dist/src/filters/Contrast.mjs.map +0 -0
  562. package/dist/src/filters/Convolute.d.ts +0 -0
  563. package/dist/src/filters/Convolute.d.ts.map +0 -0
  564. package/dist/src/filters/Convolute.min.mjs +0 -0
  565. package/dist/src/filters/Convolute.min.mjs.map +0 -0
  566. package/dist/src/filters/Convolute.mjs +0 -0
  567. package/dist/src/filters/Convolute.mjs.map +0 -0
  568. package/dist/src/filters/FilterBackend.d.ts +0 -0
  569. package/dist/src/filters/FilterBackend.d.ts.map +0 -0
  570. package/dist/src/filters/FilterBackend.min.mjs +0 -0
  571. package/dist/src/filters/FilterBackend.min.mjs.map +0 -0
  572. package/dist/src/filters/FilterBackend.mjs +0 -0
  573. package/dist/src/filters/FilterBackend.mjs.map +0 -0
  574. package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -0
  575. package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  576. package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -0
  577. package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -0
  578. package/dist/src/filters/GLProbes/GLProbe.mjs +0 -0
  579. package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -0
  580. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -0
  581. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -0
  582. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  583. package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  584. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -0
  585. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -0
  586. package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -0
  587. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -0
  588. package/dist/src/filters/Gamma.d.ts +0 -0
  589. package/dist/src/filters/Gamma.d.ts.map +0 -0
  590. package/dist/src/filters/Gamma.min.mjs +0 -0
  591. package/dist/src/filters/Gamma.min.mjs.map +0 -0
  592. package/dist/src/filters/Gamma.mjs +0 -0
  593. package/dist/src/filters/Gamma.mjs.map +0 -0
  594. package/dist/src/filters/Grayscale.d.ts +0 -0
  595. package/dist/src/filters/Grayscale.d.ts.map +0 -0
  596. package/dist/src/filters/Grayscale.min.mjs +0 -0
  597. package/dist/src/filters/Grayscale.min.mjs.map +0 -0
  598. package/dist/src/filters/Grayscale.mjs +0 -0
  599. package/dist/src/filters/Grayscale.mjs.map +0 -0
  600. package/dist/src/filters/HueRotation.d.ts +0 -0
  601. package/dist/src/filters/HueRotation.d.ts.map +0 -0
  602. package/dist/src/filters/HueRotation.min.mjs +0 -0
  603. package/dist/src/filters/HueRotation.min.mjs.map +0 -0
  604. package/dist/src/filters/HueRotation.mjs +0 -0
  605. package/dist/src/filters/HueRotation.mjs.map +0 -0
  606. package/dist/src/filters/Invert.d.ts +0 -0
  607. package/dist/src/filters/Invert.d.ts.map +0 -0
  608. package/dist/src/filters/Invert.min.mjs +0 -0
  609. package/dist/src/filters/Invert.min.mjs.map +0 -0
  610. package/dist/src/filters/Invert.mjs +0 -0
  611. package/dist/src/filters/Invert.mjs.map +0 -0
  612. package/dist/src/filters/Noise.d.ts +0 -0
  613. package/dist/src/filters/Noise.d.ts.map +0 -0
  614. package/dist/src/filters/Noise.min.mjs +0 -0
  615. package/dist/src/filters/Noise.min.mjs.map +0 -0
  616. package/dist/src/filters/Noise.mjs +0 -0
  617. package/dist/src/filters/Noise.mjs.map +0 -0
  618. package/dist/src/filters/Pixelate.d.ts +0 -0
  619. package/dist/src/filters/Pixelate.d.ts.map +0 -0
  620. package/dist/src/filters/Pixelate.min.mjs +0 -0
  621. package/dist/src/filters/Pixelate.min.mjs.map +0 -0
  622. package/dist/src/filters/Pixelate.mjs +0 -0
  623. package/dist/src/filters/Pixelate.mjs.map +0 -0
  624. package/dist/src/filters/RemoveColor.d.ts +0 -0
  625. package/dist/src/filters/RemoveColor.d.ts.map +0 -0
  626. package/dist/src/filters/RemoveColor.min.mjs +0 -0
  627. package/dist/src/filters/RemoveColor.min.mjs.map +0 -0
  628. package/dist/src/filters/RemoveColor.mjs +0 -0
  629. package/dist/src/filters/RemoveColor.mjs.map +0 -0
  630. package/dist/src/filters/Resize.d.ts +0 -0
  631. package/dist/src/filters/Resize.d.ts.map +0 -0
  632. package/dist/src/filters/Resize.min.mjs +0 -0
  633. package/dist/src/filters/Resize.min.mjs.map +0 -0
  634. package/dist/src/filters/Resize.mjs +0 -0
  635. package/dist/src/filters/Resize.mjs.map +0 -0
  636. package/dist/src/filters/Saturation.d.ts +0 -0
  637. package/dist/src/filters/Saturation.d.ts.map +0 -0
  638. package/dist/src/filters/Saturation.min.mjs +0 -0
  639. package/dist/src/filters/Saturation.min.mjs.map +0 -0
  640. package/dist/src/filters/Saturation.mjs +0 -0
  641. package/dist/src/filters/Saturation.mjs.map +0 -0
  642. package/dist/src/filters/Vibrance.d.ts +0 -0
  643. package/dist/src/filters/Vibrance.d.ts.map +0 -0
  644. package/dist/src/filters/Vibrance.min.mjs +0 -0
  645. package/dist/src/filters/Vibrance.min.mjs.map +0 -0
  646. package/dist/src/filters/Vibrance.mjs +0 -0
  647. package/dist/src/filters/Vibrance.mjs.map +0 -0
  648. package/dist/src/filters/WebGLFilterBackend.d.ts +0 -0
  649. package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  650. package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -0
  651. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -0
  652. package/dist/src/filters/WebGLFilterBackend.mjs +0 -0
  653. package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -0
  654. package/dist/src/filters/filters.d.ts +0 -0
  655. package/dist/src/filters/filters.d.ts.map +0 -0
  656. package/dist/src/filters/filters.min.mjs +0 -0
  657. package/dist/src/filters/filters.min.mjs.map +0 -0
  658. package/dist/src/filters/filters.mjs +0 -0
  659. package/dist/src/filters/filters.mjs.map +0 -0
  660. package/dist/src/filters/index.d.ts +0 -0
  661. package/dist/src/filters/index.d.ts.map +0 -0
  662. package/dist/src/filters/shaders/baseFilter.d.ts +0 -0
  663. package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -0
  664. package/dist/src/filters/shaders/baseFilter.min.mjs +0 -0
  665. package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -0
  666. package/dist/src/filters/shaders/baseFilter.mjs +0 -0
  667. package/dist/src/filters/shaders/baseFilter.mjs.map +0 -0
  668. package/dist/src/filters/shaders/blendColor.d.ts +0 -0
  669. package/dist/src/filters/shaders/blendColor.d.ts.map +0 -0
  670. package/dist/src/filters/shaders/blendColor.min.mjs +0 -0
  671. package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -0
  672. package/dist/src/filters/shaders/blendColor.mjs +0 -0
  673. package/dist/src/filters/shaders/blendColor.mjs.map +0 -0
  674. package/dist/src/filters/shaders/blendImage.d.ts +0 -0
  675. package/dist/src/filters/shaders/blendImage.d.ts.map +0 -0
  676. package/dist/src/filters/shaders/blendImage.min.mjs +0 -0
  677. package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -0
  678. package/dist/src/filters/shaders/blendImage.mjs +0 -0
  679. package/dist/src/filters/shaders/blendImage.mjs.map +0 -0
  680. package/dist/src/filters/shaders/blur.d.ts +0 -0
  681. package/dist/src/filters/shaders/blur.d.ts.map +0 -0
  682. package/dist/src/filters/shaders/blur.min.mjs +0 -0
  683. package/dist/src/filters/shaders/blur.min.mjs.map +0 -0
  684. package/dist/src/filters/shaders/blur.mjs +0 -0
  685. package/dist/src/filters/shaders/blur.mjs.map +0 -0
  686. package/dist/src/filters/shaders/brightness.d.ts +0 -0
  687. package/dist/src/filters/shaders/brightness.d.ts.map +0 -0
  688. package/dist/src/filters/shaders/brightness.min.mjs +0 -0
  689. package/dist/src/filters/shaders/brightness.min.mjs.map +0 -0
  690. package/dist/src/filters/shaders/brightness.mjs +0 -0
  691. package/dist/src/filters/shaders/brightness.mjs.map +0 -0
  692. package/dist/src/filters/shaders/colorMatrix.d.ts +0 -0
  693. package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  694. package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -0
  695. package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -0
  696. package/dist/src/filters/shaders/colorMatrix.mjs +0 -0
  697. package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -0
  698. package/dist/src/filters/shaders/constrast.d.ts +0 -0
  699. package/dist/src/filters/shaders/constrast.d.ts.map +0 -0
  700. package/dist/src/filters/shaders/constrast.min.mjs +0 -0
  701. package/dist/src/filters/shaders/constrast.min.mjs.map +0 -0
  702. package/dist/src/filters/shaders/constrast.mjs +0 -0
  703. package/dist/src/filters/shaders/constrast.mjs.map +0 -0
  704. package/dist/src/filters/shaders/convolute.d.ts +0 -0
  705. package/dist/src/filters/shaders/convolute.d.ts.map +0 -0
  706. package/dist/src/filters/shaders/convolute.min.mjs +0 -0
  707. package/dist/src/filters/shaders/convolute.min.mjs.map +0 -0
  708. package/dist/src/filters/shaders/convolute.mjs +0 -0
  709. package/dist/src/filters/shaders/convolute.mjs.map +0 -0
  710. package/dist/src/filters/shaders/gamma.d.ts +0 -0
  711. package/dist/src/filters/shaders/gamma.d.ts.map +0 -0
  712. package/dist/src/filters/shaders/gamma.min.mjs +0 -0
  713. package/dist/src/filters/shaders/gamma.min.mjs.map +0 -0
  714. package/dist/src/filters/shaders/gamma.mjs +0 -0
  715. package/dist/src/filters/shaders/gamma.mjs.map +0 -0
  716. package/dist/src/filters/shaders/grayscale.d.ts +0 -0
  717. package/dist/src/filters/shaders/grayscale.d.ts.map +0 -0
  718. package/dist/src/filters/shaders/grayscale.min.mjs +0 -0
  719. package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -0
  720. package/dist/src/filters/shaders/grayscale.mjs +0 -0
  721. package/dist/src/filters/shaders/grayscale.mjs.map +0 -0
  722. package/dist/src/filters/shaders/invert.d.ts +0 -0
  723. package/dist/src/filters/shaders/invert.d.ts.map +0 -0
  724. package/dist/src/filters/shaders/invert.min.mjs +0 -0
  725. package/dist/src/filters/shaders/invert.min.mjs.map +0 -0
  726. package/dist/src/filters/shaders/invert.mjs +0 -0
  727. package/dist/src/filters/shaders/invert.mjs.map +0 -0
  728. package/dist/src/filters/shaders/noise.d.ts +0 -0
  729. package/dist/src/filters/shaders/noise.d.ts.map +0 -0
  730. package/dist/src/filters/shaders/noise.min.mjs +0 -0
  731. package/dist/src/filters/shaders/noise.min.mjs.map +0 -0
  732. package/dist/src/filters/shaders/noise.mjs +0 -0
  733. package/dist/src/filters/shaders/noise.mjs.map +0 -0
  734. package/dist/src/filters/shaders/pixelate.d.ts +0 -0
  735. package/dist/src/filters/shaders/pixelate.d.ts.map +0 -0
  736. package/dist/src/filters/shaders/pixelate.min.mjs +0 -0
  737. package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -0
  738. package/dist/src/filters/shaders/pixelate.mjs +0 -0
  739. package/dist/src/filters/shaders/pixelate.mjs.map +0 -0
  740. package/dist/src/filters/shaders/removeColor.d.ts +0 -0
  741. package/dist/src/filters/shaders/removeColor.d.ts.map +0 -0
  742. package/dist/src/filters/shaders/removeColor.min.mjs +0 -0
  743. package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -0
  744. package/dist/src/filters/shaders/removeColor.mjs +0 -0
  745. package/dist/src/filters/shaders/removeColor.mjs.map +0 -0
  746. package/dist/src/filters/shaders/saturation.d.ts +0 -0
  747. package/dist/src/filters/shaders/saturation.d.ts.map +0 -0
  748. package/dist/src/filters/shaders/saturation.min.mjs +0 -0
  749. package/dist/src/filters/shaders/saturation.min.mjs.map +0 -0
  750. package/dist/src/filters/shaders/saturation.mjs +0 -0
  751. package/dist/src/filters/shaders/saturation.mjs.map +0 -0
  752. package/dist/src/filters/shaders/vibrance.d.ts +0 -0
  753. package/dist/src/filters/shaders/vibrance.d.ts.map +0 -0
  754. package/dist/src/filters/shaders/vibrance.min.mjs +0 -0
  755. package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -0
  756. package/dist/src/filters/shaders/vibrance.mjs +0 -0
  757. package/dist/src/filters/shaders/vibrance.mjs.map +0 -0
  758. package/dist/src/filters/typedefs.d.ts +0 -0
  759. package/dist/src/filters/typedefs.d.ts.map +0 -0
  760. package/dist/src/filters/utils.d.ts +0 -0
  761. package/dist/src/filters/utils.d.ts.map +0 -0
  762. package/dist/src/filters/utils.min.mjs +0 -0
  763. package/dist/src/filters/utils.min.mjs.map +0 -0
  764. package/dist/src/filters/utils.mjs +0 -0
  765. package/dist/src/filters/utils.mjs.map +0 -0
  766. package/dist/src/gradient/Gradient.d.ts +0 -0
  767. package/dist/src/gradient/Gradient.d.ts.map +0 -0
  768. package/dist/src/gradient/Gradient.min.mjs +0 -0
  769. package/dist/src/gradient/Gradient.min.mjs.map +0 -0
  770. package/dist/src/gradient/Gradient.mjs +0 -0
  771. package/dist/src/gradient/Gradient.mjs.map +0 -0
  772. package/dist/src/gradient/constants.d.ts +0 -0
  773. package/dist/src/gradient/constants.d.ts.map +0 -0
  774. package/dist/src/gradient/constants.min.mjs +0 -0
  775. package/dist/src/gradient/constants.min.mjs.map +0 -0
  776. package/dist/src/gradient/constants.mjs +0 -0
  777. package/dist/src/gradient/constants.mjs.map +0 -0
  778. package/dist/src/gradient/index.d.ts +0 -0
  779. package/dist/src/gradient/index.d.ts.map +0 -0
  780. package/dist/src/gradient/parser/misc.d.ts +0 -0
  781. package/dist/src/gradient/parser/misc.d.ts.map +0 -0
  782. package/dist/src/gradient/parser/misc.min.mjs +0 -0
  783. package/dist/src/gradient/parser/misc.min.mjs.map +0 -0
  784. package/dist/src/gradient/parser/misc.mjs +0 -0
  785. package/dist/src/gradient/parser/misc.mjs.map +0 -0
  786. package/dist/src/gradient/parser/parseColorStops.d.ts +0 -0
  787. package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  788. package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -0
  789. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -0
  790. package/dist/src/gradient/parser/parseColorStops.mjs +0 -0
  791. package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -0
  792. package/dist/src/gradient/parser/parseCoords.d.ts +0 -0
  793. package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -0
  794. package/dist/src/gradient/parser/parseCoords.min.mjs +0 -0
  795. package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -0
  796. package/dist/src/gradient/parser/parseCoords.mjs +0 -0
  797. package/dist/src/gradient/parser/parseCoords.mjs.map +0 -0
  798. package/dist/src/gradient/typedefs.d.ts +0 -0
  799. package/dist/src/gradient/typedefs.d.ts.map +0 -0
  800. package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -0
  801. package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -0
  802. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -0
  803. package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -0
  804. package/dist/src/parkinglot/straighten.d.ts +0 -0
  805. package/dist/src/parkinglot/straighten.d.ts.map +0 -0
  806. package/dist/src/parser/applyViewboxTransform.d.ts +0 -0
  807. package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -0
  808. package/dist/src/parser/applyViewboxTransform.min.mjs +0 -0
  809. package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -0
  810. package/dist/src/parser/applyViewboxTransform.mjs +0 -0
  811. package/dist/src/parser/applyViewboxTransform.mjs.map +0 -0
  812. package/dist/src/parser/attributes.d.ts +0 -0
  813. package/dist/src/parser/attributes.d.ts.map +0 -0
  814. package/dist/src/parser/attributes.min.mjs +0 -0
  815. package/dist/src/parser/attributes.min.mjs.map +0 -0
  816. package/dist/src/parser/attributes.mjs +0 -0
  817. package/dist/src/parser/attributes.mjs.map +0 -0
  818. package/dist/src/parser/constants.d.ts +0 -0
  819. package/dist/src/parser/constants.d.ts.map +0 -0
  820. package/dist/src/parser/constants.min.mjs +0 -0
  821. package/dist/src/parser/constants.min.mjs.map +0 -0
  822. package/dist/src/parser/constants.mjs +0 -0
  823. package/dist/src/parser/constants.mjs.map +0 -0
  824. package/dist/src/parser/doesSomeParentMatch.d.ts +0 -0
  825. package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  826. package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -0
  827. package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -0
  828. package/dist/src/parser/doesSomeParentMatch.mjs +0 -0
  829. package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -0
  830. package/dist/src/parser/elementMatchesRule.d.ts +0 -0
  831. package/dist/src/parser/elementMatchesRule.d.ts.map +0 -0
  832. package/dist/src/parser/elementMatchesRule.min.mjs +0 -0
  833. package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -0
  834. package/dist/src/parser/elementMatchesRule.mjs +0 -0
  835. package/dist/src/parser/elementMatchesRule.mjs.map +0 -0
  836. package/dist/src/parser/elements_parser.d.ts +0 -0
  837. package/dist/src/parser/elements_parser.d.ts.map +0 -0
  838. package/dist/src/parser/elements_parser.min.mjs +0 -0
  839. package/dist/src/parser/elements_parser.min.mjs.map +0 -0
  840. package/dist/src/parser/elements_parser.mjs +0 -0
  841. package/dist/src/parser/elements_parser.mjs.map +0 -0
  842. package/dist/src/parser/getCSSRules.d.ts +0 -0
  843. package/dist/src/parser/getCSSRules.d.ts.map +0 -0
  844. package/dist/src/parser/getCSSRules.min.mjs +0 -0
  845. package/dist/src/parser/getCSSRules.min.mjs.map +0 -0
  846. package/dist/src/parser/getCSSRules.mjs +0 -0
  847. package/dist/src/parser/getCSSRules.mjs.map +0 -0
  848. package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -0
  849. package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  850. package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -0
  851. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -0
  852. package/dist/src/parser/getGlobalStylesForElement.mjs +0 -0
  853. package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -0
  854. package/dist/src/parser/getGradientDefs.d.ts +0 -0
  855. package/dist/src/parser/getGradientDefs.d.ts.map +0 -0
  856. package/dist/src/parser/getGradientDefs.min.mjs +0 -0
  857. package/dist/src/parser/getGradientDefs.min.mjs.map +0 -0
  858. package/dist/src/parser/getGradientDefs.mjs +0 -0
  859. package/dist/src/parser/getGradientDefs.mjs.map +0 -0
  860. package/dist/src/parser/getMultipleNodes.d.ts +0 -0
  861. package/dist/src/parser/getMultipleNodes.d.ts.map +0 -0
  862. package/dist/src/parser/getMultipleNodes.min.mjs +0 -0
  863. package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -0
  864. package/dist/src/parser/getMultipleNodes.mjs +0 -0
  865. package/dist/src/parser/getMultipleNodes.mjs.map +0 -0
  866. package/dist/src/parser/getSvgRegex.d.ts +0 -0
  867. package/dist/src/parser/getSvgRegex.d.ts.map +0 -0
  868. package/dist/src/parser/getSvgRegex.min.mjs +0 -0
  869. package/dist/src/parser/getSvgRegex.min.mjs.map +0 -0
  870. package/dist/src/parser/getSvgRegex.mjs +0 -0
  871. package/dist/src/parser/getSvgRegex.mjs.map +0 -0
  872. package/dist/src/parser/getTagName.d.ts +0 -0
  873. package/dist/src/parser/getTagName.d.ts.map +0 -0
  874. package/dist/src/parser/getTagName.min.mjs +0 -0
  875. package/dist/src/parser/getTagName.min.mjs.map +0 -0
  876. package/dist/src/parser/getTagName.mjs +0 -0
  877. package/dist/src/parser/getTagName.mjs.map +0 -0
  878. package/dist/src/parser/hasInvalidAncestor.d.ts +0 -0
  879. package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  880. package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -0
  881. package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -0
  882. package/dist/src/parser/hasInvalidAncestor.mjs +0 -0
  883. package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -0
  884. package/dist/src/parser/loadSVGFromString.d.ts +0 -0
  885. package/dist/src/parser/loadSVGFromString.d.ts.map +0 -0
  886. package/dist/src/parser/loadSVGFromString.min.mjs +0 -0
  887. package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -0
  888. package/dist/src/parser/loadSVGFromString.mjs +0 -0
  889. package/dist/src/parser/loadSVGFromString.mjs.map +0 -0
  890. package/dist/src/parser/loadSVGFromURL.d.ts +0 -0
  891. package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -0
  892. package/dist/src/parser/loadSVGFromURL.min.mjs +0 -0
  893. package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -0
  894. package/dist/src/parser/loadSVGFromURL.mjs +0 -0
  895. package/dist/src/parser/loadSVGFromURL.mjs.map +0 -0
  896. package/dist/src/parser/normalizeAttr.d.ts +0 -0
  897. package/dist/src/parser/normalizeAttr.d.ts.map +0 -0
  898. package/dist/src/parser/normalizeAttr.min.mjs +0 -0
  899. package/dist/src/parser/normalizeAttr.min.mjs.map +0 -0
  900. package/dist/src/parser/normalizeAttr.mjs +0 -0
  901. package/dist/src/parser/normalizeAttr.mjs.map +0 -0
  902. package/dist/src/parser/normalizeValue.d.ts +0 -0
  903. package/dist/src/parser/normalizeValue.d.ts.map +0 -0
  904. package/dist/src/parser/normalizeValue.min.mjs +0 -0
  905. package/dist/src/parser/normalizeValue.min.mjs.map +0 -0
  906. package/dist/src/parser/normalizeValue.mjs +0 -0
  907. package/dist/src/parser/normalizeValue.mjs.map +0 -0
  908. package/dist/src/parser/parseAttributes.d.ts +0 -0
  909. package/dist/src/parser/parseAttributes.d.ts.map +0 -0
  910. package/dist/src/parser/parseAttributes.min.mjs +0 -0
  911. package/dist/src/parser/parseAttributes.min.mjs.map +0 -0
  912. package/dist/src/parser/parseAttributes.mjs +0 -0
  913. package/dist/src/parser/parseAttributes.mjs.map +0 -0
  914. package/dist/src/parser/parseFontDeclaration.d.ts +0 -0
  915. package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -0
  916. package/dist/src/parser/parseFontDeclaration.min.mjs +0 -0
  917. package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -0
  918. package/dist/src/parser/parseFontDeclaration.mjs +0 -0
  919. package/dist/src/parser/parseFontDeclaration.mjs.map +0 -0
  920. package/dist/src/parser/parsePointsAttribute.d.ts +0 -0
  921. package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -0
  922. package/dist/src/parser/parsePointsAttribute.min.mjs +0 -0
  923. package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -0
  924. package/dist/src/parser/parsePointsAttribute.mjs +0 -0
  925. package/dist/src/parser/parsePointsAttribute.mjs.map +0 -0
  926. package/dist/src/parser/parseSVGDocument.d.ts +0 -0
  927. package/dist/src/parser/parseSVGDocument.d.ts.map +0 -0
  928. package/dist/src/parser/parseSVGDocument.min.mjs +0 -0
  929. package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -0
  930. package/dist/src/parser/parseSVGDocument.mjs +0 -0
  931. package/dist/src/parser/parseSVGDocument.mjs.map +0 -0
  932. package/dist/src/parser/parseStyleAttribute.d.ts +0 -0
  933. package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -0
  934. package/dist/src/parser/parseStyleAttribute.min.mjs +0 -0
  935. package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -0
  936. package/dist/src/parser/parseStyleAttribute.mjs +0 -0
  937. package/dist/src/parser/parseStyleAttribute.mjs.map +0 -0
  938. package/dist/src/parser/parseStyleObject.d.ts +0 -0
  939. package/dist/src/parser/parseStyleObject.d.ts.map +0 -0
  940. package/dist/src/parser/parseStyleObject.min.mjs +0 -0
  941. package/dist/src/parser/parseStyleObject.min.mjs.map +0 -0
  942. package/dist/src/parser/parseStyleObject.mjs +0 -0
  943. package/dist/src/parser/parseStyleObject.mjs.map +0 -0
  944. package/dist/src/parser/parseStyleString.d.ts +0 -0
  945. package/dist/src/parser/parseStyleString.d.ts.map +0 -0
  946. package/dist/src/parser/parseStyleString.min.mjs +0 -0
  947. package/dist/src/parser/parseStyleString.min.mjs.map +0 -0
  948. package/dist/src/parser/parseStyleString.mjs +0 -0
  949. package/dist/src/parser/parseStyleString.mjs.map +0 -0
  950. package/dist/src/parser/parseTransformAttribute.d.ts +0 -0
  951. package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -0
  952. package/dist/src/parser/parseTransformAttribute.min.mjs +0 -0
  953. package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -0
  954. package/dist/src/parser/parseTransformAttribute.mjs +0 -0
  955. package/dist/src/parser/parseTransformAttribute.mjs.map +0 -0
  956. package/dist/src/parser/parseUseDirectives.d.ts +0 -0
  957. package/dist/src/parser/parseUseDirectives.d.ts.map +0 -0
  958. package/dist/src/parser/parseUseDirectives.min.mjs +0 -0
  959. package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -0
  960. package/dist/src/parser/parseUseDirectives.mjs +0 -0
  961. package/dist/src/parser/parseUseDirectives.mjs.map +0 -0
  962. package/dist/src/parser/percent.d.ts +0 -0
  963. package/dist/src/parser/percent.d.ts.map +0 -0
  964. package/dist/src/parser/percent.min.mjs +0 -0
  965. package/dist/src/parser/percent.min.mjs.map +0 -0
  966. package/dist/src/parser/percent.mjs +0 -0
  967. package/dist/src/parser/percent.mjs.map +0 -0
  968. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  969. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  970. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -0
  971. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -0
  972. package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -0
  973. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -0
  974. package/dist/src/parser/selectorMatches.d.ts +0 -0
  975. package/dist/src/parser/selectorMatches.d.ts.map +0 -0
  976. package/dist/src/parser/selectorMatches.min.mjs +0 -0
  977. package/dist/src/parser/selectorMatches.min.mjs.map +0 -0
  978. package/dist/src/parser/selectorMatches.mjs +0 -0
  979. package/dist/src/parser/selectorMatches.mjs.map +0 -0
  980. package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -0
  981. package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  982. package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -0
  983. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -0
  984. package/dist/src/parser/setStrokeFillOpacity.mjs +0 -0
  985. package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -0
  986. package/dist/src/parser/typedefs.d.ts +0 -0
  987. package/dist/src/parser/typedefs.d.ts.map +0 -0
  988. package/dist/src/shapes/ActiveSelection.d.ts +0 -0
  989. package/dist/src/shapes/ActiveSelection.d.ts.map +0 -0
  990. package/dist/src/shapes/ActiveSelection.min.mjs +0 -0
  991. package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -0
  992. package/dist/src/shapes/ActiveSelection.mjs +0 -0
  993. package/dist/src/shapes/ActiveSelection.mjs.map +0 -0
  994. package/dist/src/shapes/Circle.d.ts +0 -0
  995. package/dist/src/shapes/Circle.d.ts.map +0 -0
  996. package/dist/src/shapes/Circle.min.mjs +0 -0
  997. package/dist/src/shapes/Circle.min.mjs.map +0 -0
  998. package/dist/src/shapes/Circle.mjs +0 -0
  999. package/dist/src/shapes/Circle.mjs.map +0 -0
  1000. package/dist/src/shapes/Ellipse.d.ts +0 -0
  1001. package/dist/src/shapes/Ellipse.d.ts.map +0 -0
  1002. package/dist/src/shapes/Ellipse.min.mjs +0 -0
  1003. package/dist/src/shapes/Ellipse.min.mjs.map +0 -0
  1004. package/dist/src/shapes/Ellipse.mjs +0 -0
  1005. package/dist/src/shapes/Ellipse.mjs.map +0 -0
  1006. package/dist/src/shapes/Group.d.ts +0 -0
  1007. package/dist/src/shapes/Group.d.ts.map +0 -0
  1008. package/dist/src/shapes/Group.min.mjs +0 -0
  1009. package/dist/src/shapes/Group.min.mjs.map +0 -0
  1010. package/dist/src/shapes/Group.mjs +0 -0
  1011. package/dist/src/shapes/Group.mjs.map +0 -0
  1012. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1013. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1014. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -0
  1015. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -0
  1016. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -0
  1017. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -0
  1018. package/dist/src/shapes/IText/IText.d.ts +0 -0
  1019. package/dist/src/shapes/IText/IText.d.ts.map +0 -0
  1020. package/dist/src/shapes/IText/IText.min.mjs +0 -0
  1021. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  1022. package/dist/src/shapes/IText/IText.mjs +206 -206
  1023. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  1024. package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1025. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
  1026. package/dist/src/shapes/IText/ITextBehavior.min.mjs +1 -1
  1027. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  1028. package/dist/src/shapes/IText/ITextBehavior.mjs +221 -157
  1029. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  1030. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1031. package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1032. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -0
  1033. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  1034. package/dist/src/shapes/IText/ITextClickBehavior.mjs +36 -36
  1035. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  1036. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1037. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1038. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -0
  1039. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  1040. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +115 -115
  1041. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
  1042. package/dist/src/shapes/IText/constants.d.ts +0 -0
  1043. package/dist/src/shapes/IText/constants.d.ts.map +0 -0
  1044. package/dist/src/shapes/IText/constants.min.mjs +0 -0
  1045. package/dist/src/shapes/IText/constants.min.mjs.map +0 -0
  1046. package/dist/src/shapes/IText/constants.mjs +0 -0
  1047. package/dist/src/shapes/IText/constants.mjs.map +0 -0
  1048. package/dist/src/shapes/Image.d.ts +0 -0
  1049. package/dist/src/shapes/Image.d.ts.map +0 -0
  1050. package/dist/src/shapes/Image.min.mjs +0 -0
  1051. package/dist/src/shapes/Image.min.mjs.map +0 -0
  1052. package/dist/src/shapes/Image.mjs +0 -0
  1053. package/dist/src/shapes/Image.mjs.map +0 -0
  1054. package/dist/src/shapes/Line.d.ts +0 -0
  1055. package/dist/src/shapes/Line.d.ts.map +0 -0
  1056. package/dist/src/shapes/Line.min.mjs +0 -0
  1057. package/dist/src/shapes/Line.min.mjs.map +0 -0
  1058. package/dist/src/shapes/Line.mjs +0 -0
  1059. package/dist/src/shapes/Line.mjs.map +0 -0
  1060. package/dist/src/shapes/Object/FabricObject.d.ts +0 -0
  1061. package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1062. package/dist/src/shapes/Object/FabricObject.min.mjs +0 -0
  1063. package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -0
  1064. package/dist/src/shapes/Object/FabricObject.mjs +0 -0
  1065. package/dist/src/shapes/Object/FabricObject.mjs.map +0 -0
  1066. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1067. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1068. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -0
  1069. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -0
  1070. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -0
  1071. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -0
  1072. package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1073. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1074. package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -0
  1075. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -0
  1076. package/dist/src/shapes/Object/InteractiveObject.mjs +0 -0
  1077. package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -0
  1078. package/dist/src/shapes/Object/Object.d.ts +0 -0
  1079. package/dist/src/shapes/Object/Object.d.ts.map +0 -0
  1080. package/dist/src/shapes/Object/Object.min.mjs +0 -0
  1081. package/dist/src/shapes/Object/Object.min.mjs.map +0 -0
  1082. package/dist/src/shapes/Object/Object.mjs +0 -0
  1083. package/dist/src/shapes/Object/Object.mjs.map +0 -0
  1084. package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1085. package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1086. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -0
  1087. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -0
  1088. package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -0
  1089. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -0
  1090. package/dist/src/shapes/Object/defaultValues.d.ts +0 -0
  1091. package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1092. package/dist/src/shapes/Object/defaultValues.min.mjs +0 -0
  1093. package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -0
  1094. package/dist/src/shapes/Object/defaultValues.mjs +0 -0
  1095. package/dist/src/shapes/Object/defaultValues.mjs.map +0 -0
  1096. package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1097. package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1098. package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1099. package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1100. package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1101. package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1102. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1103. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1104. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1105. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1106. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1107. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1108. package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1109. package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1110. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1111. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1112. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1113. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1114. package/dist/src/shapes/Object/types/index.d.ts +0 -0
  1115. package/dist/src/shapes/Object/types/index.d.ts.map +0 -0
  1116. package/dist/src/shapes/Path.d.ts +0 -0
  1117. package/dist/src/shapes/Path.d.ts.map +0 -0
  1118. package/dist/src/shapes/Path.min.mjs +0 -0
  1119. package/dist/src/shapes/Path.min.mjs.map +0 -0
  1120. package/dist/src/shapes/Path.mjs +0 -0
  1121. package/dist/src/shapes/Path.mjs.map +0 -0
  1122. package/dist/src/shapes/Polygon.d.ts +0 -0
  1123. package/dist/src/shapes/Polygon.d.ts.map +0 -0
  1124. package/dist/src/shapes/Polygon.min.mjs +0 -0
  1125. package/dist/src/shapes/Polygon.min.mjs.map +0 -0
  1126. package/dist/src/shapes/Polygon.mjs +0 -0
  1127. package/dist/src/shapes/Polygon.mjs.map +0 -0
  1128. package/dist/src/shapes/Polyline.d.ts +0 -0
  1129. package/dist/src/shapes/Polyline.d.ts.map +0 -0
  1130. package/dist/src/shapes/Polyline.min.mjs +0 -0
  1131. package/dist/src/shapes/Polyline.min.mjs.map +0 -0
  1132. package/dist/src/shapes/Polyline.mjs +0 -0
  1133. package/dist/src/shapes/Polyline.mjs.map +0 -0
  1134. package/dist/src/shapes/Rect.d.ts +0 -0
  1135. package/dist/src/shapes/Rect.d.ts.map +0 -0
  1136. package/dist/src/shapes/Rect.min.mjs +0 -0
  1137. package/dist/src/shapes/Rect.min.mjs.map +0 -0
  1138. package/dist/src/shapes/Rect.mjs +0 -0
  1139. package/dist/src/shapes/Rect.mjs.map +0 -0
  1140. package/dist/src/shapes/Text/StyledText.d.ts +0 -0
  1141. package/dist/src/shapes/Text/StyledText.d.ts.map +0 -0
  1142. package/dist/src/shapes/Text/StyledText.min.mjs +0 -0
  1143. package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -0
  1144. package/dist/src/shapes/Text/StyledText.mjs +0 -0
  1145. package/dist/src/shapes/Text/StyledText.mjs.map +0 -0
  1146. package/dist/src/shapes/Text/Text.d.ts +1 -0
  1147. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  1148. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  1149. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  1150. package/dist/src/shapes/Text/Text.mjs +315 -302
  1151. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  1152. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1153. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1154. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -0
  1155. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -0
  1156. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -0
  1157. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -0
  1158. package/dist/src/shapes/Text/constants.d.ts +0 -0
  1159. package/dist/src/shapes/Text/constants.d.ts.map +0 -0
  1160. package/dist/src/shapes/Text/constants.min.mjs +0 -0
  1161. package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
  1162. package/dist/src/shapes/Text/constants.mjs +0 -0
  1163. package/dist/src/shapes/Text/constants.mjs.map +1 -1
  1164. package/dist/src/shapes/Textbox.d.ts +20 -0
  1165. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  1166. package/dist/src/shapes/Textbox.min.mjs +1 -1
  1167. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  1168. package/dist/src/shapes/Textbox.mjs +486 -202
  1169. package/dist/src/shapes/Textbox.mjs.map +1 -1
  1170. package/dist/src/shapes/Triangle.d.ts +0 -0
  1171. package/dist/src/shapes/Triangle.d.ts.map +0 -0
  1172. package/dist/src/shapes/Triangle.min.mjs +0 -0
  1173. package/dist/src/shapes/Triangle.min.mjs.map +0 -0
  1174. package/dist/src/shapes/Triangle.mjs +0 -0
  1175. package/dist/src/shapes/Triangle.mjs.map +0 -0
  1176. package/dist/src/text/browserLines.d.ts +7 -2
  1177. package/dist/src/text/browserLines.d.ts.map +1 -1
  1178. package/dist/src/text/browserLines.min.mjs +1 -1
  1179. package/dist/src/text/browserLines.min.mjs.map +1 -1
  1180. package/dist/src/text/browserLines.mjs +35 -25
  1181. package/dist/src/text/browserLines.mjs.map +1 -1
  1182. package/dist/src/text/ellipsis.d.ts +0 -0
  1183. package/dist/src/text/ellipsis.d.ts.map +0 -0
  1184. package/dist/src/text/ellipsis.min.mjs +0 -0
  1185. package/dist/src/text/ellipsis.min.mjs.map +1 -1
  1186. package/dist/src/text/ellipsis.mjs +11 -11
  1187. package/dist/src/text/ellipsis.mjs.map +1 -1
  1188. package/dist/src/text/hitTest.d.ts +0 -0
  1189. package/dist/src/text/hitTest.d.ts.map +0 -0
  1190. package/dist/src/text/hitTest.min.mjs +0 -0
  1191. package/dist/src/text/hitTest.min.mjs.map +1 -1
  1192. package/dist/src/text/hitTest.mjs +19 -19
  1193. package/dist/src/text/hitTest.mjs.map +1 -1
  1194. package/dist/src/text/layout.d.ts +0 -0
  1195. package/dist/src/text/layout.d.ts.map +0 -0
  1196. package/dist/src/text/layout.min.mjs +0 -0
  1197. package/dist/src/text/layout.min.mjs.map +1 -1
  1198. package/dist/src/text/layout.mjs +33 -33
  1199. package/dist/src/text/layout.mjs.map +1 -1
  1200. package/dist/src/text/measure.d.ts +0 -0
  1201. package/dist/src/text/measure.d.ts.map +0 -0
  1202. package/dist/src/text/measure.min.mjs +0 -0
  1203. package/dist/src/text/measure.min.mjs.map +1 -1
  1204. package/dist/src/text/measure.mjs +30 -30
  1205. package/dist/src/text/measure.mjs.map +1 -1
  1206. package/dist/src/text/overlayEditor.d.ts +1 -0
  1207. package/dist/src/text/overlayEditor.d.ts.map +1 -1
  1208. package/dist/src/text/overlayEditor.min.mjs +1 -1
  1209. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  1210. package/dist/src/text/overlayEditor.mjs +70 -51
  1211. package/dist/src/text/overlayEditor.mjs.map +1 -1
  1212. package/dist/src/text/unicode.d.ts +0 -0
  1213. package/dist/src/text/unicode.d.ts.map +0 -0
  1214. package/dist/src/text/unicode.min.mjs +0 -0
  1215. package/dist/src/text/unicode.min.mjs.map +1 -1
  1216. package/dist/src/text/unicode.mjs +8 -8
  1217. package/dist/src/text/unicode.mjs.map +1 -1
  1218. package/dist/src/typedefs.d.ts +0 -0
  1219. package/dist/src/typedefs.d.ts.map +0 -0
  1220. package/dist/src/util/animation/AnimationBase.d.ts +0 -0
  1221. package/dist/src/util/animation/AnimationBase.d.ts.map +0 -0
  1222. package/dist/src/util/animation/AnimationBase.min.mjs +0 -0
  1223. package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -0
  1224. package/dist/src/util/animation/AnimationBase.mjs +0 -0
  1225. package/dist/src/util/animation/AnimationBase.mjs.map +0 -0
  1226. package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1227. package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1228. package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -0
  1229. package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -0
  1230. package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -0
  1231. package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -0
  1232. package/dist/src/util/animation/AnimationRegistry.d.ts +0 -0
  1233. package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1234. package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -0
  1235. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -0
  1236. package/dist/src/util/animation/AnimationRegistry.mjs +0 -0
  1237. package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -0
  1238. package/dist/src/util/animation/ArrayAnimation.d.ts +0 -0
  1239. package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1240. package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -0
  1241. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -0
  1242. package/dist/src/util/animation/ArrayAnimation.mjs +0 -0
  1243. package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -0
  1244. package/dist/src/util/animation/ColorAnimation.d.ts +0 -0
  1245. package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1246. package/dist/src/util/animation/ColorAnimation.min.mjs +0 -0
  1247. package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -0
  1248. package/dist/src/util/animation/ColorAnimation.mjs +0 -0
  1249. package/dist/src/util/animation/ColorAnimation.mjs.map +0 -0
  1250. package/dist/src/util/animation/ValueAnimation.d.ts +0 -0
  1251. package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1252. package/dist/src/util/animation/ValueAnimation.min.mjs +0 -0
  1253. package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -0
  1254. package/dist/src/util/animation/ValueAnimation.mjs +0 -0
  1255. package/dist/src/util/animation/ValueAnimation.mjs.map +0 -0
  1256. package/dist/src/util/animation/animate.d.ts +0 -0
  1257. package/dist/src/util/animation/animate.d.ts.map +0 -0
  1258. package/dist/src/util/animation/animate.min.mjs +0 -0
  1259. package/dist/src/util/animation/animate.min.mjs.map +0 -0
  1260. package/dist/src/util/animation/animate.mjs +0 -0
  1261. package/dist/src/util/animation/animate.mjs.map +0 -0
  1262. package/dist/src/util/animation/easing.d.ts +0 -0
  1263. package/dist/src/util/animation/easing.d.ts.map +0 -0
  1264. package/dist/src/util/animation/easing.min.mjs +0 -0
  1265. package/dist/src/util/animation/easing.min.mjs.map +0 -0
  1266. package/dist/src/util/animation/easing.mjs +0 -0
  1267. package/dist/src/util/animation/easing.mjs.map +0 -0
  1268. package/dist/src/util/animation/index.d.ts +0 -0
  1269. package/dist/src/util/animation/index.d.ts.map +0 -0
  1270. package/dist/src/util/animation/types.d.ts +0 -0
  1271. package/dist/src/util/animation/types.d.ts.map +0 -0
  1272. package/dist/src/util/applyMixins.d.ts +0 -0
  1273. package/dist/src/util/applyMixins.d.ts.map +0 -0
  1274. package/dist/src/util/applyMixins.min.mjs +0 -0
  1275. package/dist/src/util/applyMixins.min.mjs.map +0 -0
  1276. package/dist/src/util/applyMixins.mjs +0 -0
  1277. package/dist/src/util/applyMixins.mjs.map +0 -0
  1278. package/dist/src/util/dom_event.d.ts +0 -0
  1279. package/dist/src/util/dom_event.d.ts.map +0 -0
  1280. package/dist/src/util/dom_event.min.mjs +0 -0
  1281. package/dist/src/util/dom_event.min.mjs.map +0 -0
  1282. package/dist/src/util/dom_event.mjs +0 -0
  1283. package/dist/src/util/dom_event.mjs.map +0 -0
  1284. package/dist/src/util/dom_misc.d.ts +0 -0
  1285. package/dist/src/util/dom_misc.d.ts.map +0 -0
  1286. package/dist/src/util/dom_misc.min.mjs +0 -0
  1287. package/dist/src/util/dom_misc.min.mjs.map +0 -0
  1288. package/dist/src/util/dom_misc.mjs +0 -0
  1289. package/dist/src/util/dom_misc.mjs.map +0 -0
  1290. package/dist/src/util/index.d.ts +0 -0
  1291. package/dist/src/util/index.d.ts.map +0 -0
  1292. package/dist/src/util/index.min.mjs +0 -0
  1293. package/dist/src/util/index.min.mjs.map +0 -0
  1294. package/dist/src/util/index.mjs +0 -0
  1295. package/dist/src/util/index.mjs.map +0 -0
  1296. package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -0
  1297. package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  1298. package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -0
  1299. package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -0
  1300. package/dist/src/util/internals/applyCanvasTransform.mjs +0 -0
  1301. package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -0
  1302. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  1303. package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  1304. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -0
  1305. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -0
  1306. package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -0
  1307. package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -0
  1308. package/dist/src/util/internals/cloneStyles.d.ts +0 -0
  1309. package/dist/src/util/internals/cloneStyles.d.ts.map +0 -0
  1310. package/dist/src/util/internals/cloneStyles.min.mjs +0 -0
  1311. package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -0
  1312. package/dist/src/util/internals/cloneStyles.mjs +0 -0
  1313. package/dist/src/util/internals/cloneStyles.mjs.map +0 -0
  1314. package/dist/src/util/internals/console.d.ts +0 -0
  1315. package/dist/src/util/internals/console.d.ts.map +0 -0
  1316. package/dist/src/util/internals/console.min.mjs +0 -0
  1317. package/dist/src/util/internals/console.min.mjs.map +0 -0
  1318. package/dist/src/util/internals/console.mjs +0 -0
  1319. package/dist/src/util/internals/console.mjs.map +0 -0
  1320. package/dist/src/util/internals/dom_style.d.ts +0 -0
  1321. package/dist/src/util/internals/dom_style.d.ts.map +0 -0
  1322. package/dist/src/util/internals/dom_style.min.mjs +0 -0
  1323. package/dist/src/util/internals/dom_style.min.mjs.map +0 -0
  1324. package/dist/src/util/internals/dom_style.mjs +0 -0
  1325. package/dist/src/util/internals/dom_style.mjs.map +0 -0
  1326. package/dist/src/util/internals/findRight.d.ts +0 -0
  1327. package/dist/src/util/internals/findRight.d.ts.map +0 -0
  1328. package/dist/src/util/internals/findRight.min.mjs +0 -0
  1329. package/dist/src/util/internals/findRight.min.mjs.map +0 -0
  1330. package/dist/src/util/internals/findRight.mjs +0 -0
  1331. package/dist/src/util/internals/findRight.mjs.map +0 -0
  1332. package/dist/src/util/internals/getRandomInt.d.ts +0 -0
  1333. package/dist/src/util/internals/getRandomInt.d.ts.map +0 -0
  1334. package/dist/src/util/internals/getRandomInt.min.mjs +0 -0
  1335. package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -0
  1336. package/dist/src/util/internals/getRandomInt.mjs +0 -0
  1337. package/dist/src/util/internals/getRandomInt.mjs.map +0 -0
  1338. package/dist/src/util/internals/ifNaN.d.ts +0 -0
  1339. package/dist/src/util/internals/ifNaN.d.ts.map +0 -0
  1340. package/dist/src/util/internals/ifNaN.min.mjs +0 -0
  1341. package/dist/src/util/internals/ifNaN.min.mjs.map +0 -0
  1342. package/dist/src/util/internals/ifNaN.mjs +0 -0
  1343. package/dist/src/util/internals/ifNaN.mjs.map +0 -0
  1344. package/dist/src/util/internals/removeFromArray.d.ts +0 -0
  1345. package/dist/src/util/internals/removeFromArray.d.ts.map +0 -0
  1346. package/dist/src/util/internals/removeFromArray.min.mjs +0 -0
  1347. package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -0
  1348. package/dist/src/util/internals/removeFromArray.mjs +0 -0
  1349. package/dist/src/util/internals/removeFromArray.mjs.map +0 -0
  1350. package/dist/src/util/internals/uid.d.ts +0 -0
  1351. package/dist/src/util/internals/uid.d.ts.map +0 -0
  1352. package/dist/src/util/internals/uid.min.mjs +0 -0
  1353. package/dist/src/util/internals/uid.min.mjs.map +0 -0
  1354. package/dist/src/util/internals/uid.mjs +0 -0
  1355. package/dist/src/util/internals/uid.mjs.map +0 -0
  1356. package/dist/src/util/lang_string.d.ts +0 -0
  1357. package/dist/src/util/lang_string.d.ts.map +0 -0
  1358. package/dist/src/util/lang_string.min.mjs +0 -0
  1359. package/dist/src/util/lang_string.min.mjs.map +0 -0
  1360. package/dist/src/util/lang_string.mjs +0 -0
  1361. package/dist/src/util/lang_string.mjs.map +0 -0
  1362. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  1363. package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  1364. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -0
  1365. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -0
  1366. package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -0
  1367. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -0
  1368. package/dist/src/util/misc/capValue.d.ts +0 -0
  1369. package/dist/src/util/misc/capValue.d.ts.map +0 -0
  1370. package/dist/src/util/misc/capValue.min.mjs +0 -0
  1371. package/dist/src/util/misc/capValue.min.mjs.map +0 -0
  1372. package/dist/src/util/misc/capValue.mjs +0 -0
  1373. package/dist/src/util/misc/capValue.mjs.map +0 -0
  1374. package/dist/src/util/misc/cornerRadius.d.ts +0 -0
  1375. package/dist/src/util/misc/cornerRadius.d.ts.map +0 -0
  1376. package/dist/src/util/misc/cornerRadius.min.mjs +0 -0
  1377. package/dist/src/util/misc/cornerRadius.min.mjs.map +0 -0
  1378. package/dist/src/util/misc/cornerRadius.mjs +0 -0
  1379. package/dist/src/util/misc/cornerRadius.mjs.map +0 -0
  1380. package/dist/src/util/misc/cos.d.ts +0 -0
  1381. package/dist/src/util/misc/cos.d.ts.map +0 -0
  1382. package/dist/src/util/misc/cos.min.mjs +0 -0
  1383. package/dist/src/util/misc/cos.min.mjs.map +0 -0
  1384. package/dist/src/util/misc/cos.mjs +0 -0
  1385. package/dist/src/util/misc/cos.mjs.map +0 -0
  1386. package/dist/src/util/misc/dom.d.ts +0 -0
  1387. package/dist/src/util/misc/dom.d.ts.map +0 -0
  1388. package/dist/src/util/misc/dom.min.mjs +0 -0
  1389. package/dist/src/util/misc/dom.min.mjs.map +0 -0
  1390. package/dist/src/util/misc/dom.mjs +0 -0
  1391. package/dist/src/util/misc/dom.mjs.map +0 -0
  1392. package/dist/src/util/misc/findScaleTo.d.ts +0 -0
  1393. package/dist/src/util/misc/findScaleTo.d.ts.map +0 -0
  1394. package/dist/src/util/misc/findScaleTo.min.mjs +0 -0
  1395. package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -0
  1396. package/dist/src/util/misc/findScaleTo.mjs +0 -0
  1397. package/dist/src/util/misc/findScaleTo.mjs.map +0 -0
  1398. package/dist/src/util/misc/groupSVGElements.d.ts +0 -0
  1399. package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -0
  1400. package/dist/src/util/misc/groupSVGElements.min.mjs +0 -0
  1401. package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -0
  1402. package/dist/src/util/misc/groupSVGElements.mjs +0 -0
  1403. package/dist/src/util/misc/groupSVGElements.mjs.map +0 -0
  1404. package/dist/src/util/misc/isTransparent.d.ts +0 -0
  1405. package/dist/src/util/misc/isTransparent.d.ts.map +0 -0
  1406. package/dist/src/util/misc/isTransparent.min.mjs +0 -0
  1407. package/dist/src/util/misc/isTransparent.min.mjs.map +0 -0
  1408. package/dist/src/util/misc/isTransparent.mjs +0 -0
  1409. package/dist/src/util/misc/isTransparent.mjs.map +0 -0
  1410. package/dist/src/util/misc/matrix.d.ts +0 -0
  1411. package/dist/src/util/misc/matrix.d.ts.map +0 -0
  1412. package/dist/src/util/misc/matrix.min.mjs +0 -0
  1413. package/dist/src/util/misc/matrix.min.mjs.map +0 -0
  1414. package/dist/src/util/misc/matrix.mjs +0 -0
  1415. package/dist/src/util/misc/matrix.mjs.map +0 -0
  1416. package/dist/src/util/misc/mergeClipPaths.d.ts +0 -0
  1417. package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  1418. package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -0
  1419. package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -0
  1420. package/dist/src/util/misc/mergeClipPaths.mjs +0 -0
  1421. package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -0
  1422. package/dist/src/util/misc/objectEnlive.d.ts +0 -0
  1423. package/dist/src/util/misc/objectEnlive.d.ts.map +0 -0
  1424. package/dist/src/util/misc/objectEnlive.min.mjs +0 -0
  1425. package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -0
  1426. package/dist/src/util/misc/objectEnlive.mjs +0 -0
  1427. package/dist/src/util/misc/objectEnlive.mjs.map +0 -0
  1428. package/dist/src/util/misc/objectTransforms.d.ts +0 -0
  1429. package/dist/src/util/misc/objectTransforms.d.ts.map +0 -0
  1430. package/dist/src/util/misc/objectTransforms.min.mjs +0 -0
  1431. package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -0
  1432. package/dist/src/util/misc/objectTransforms.mjs +0 -0
  1433. package/dist/src/util/misc/objectTransforms.mjs.map +0 -0
  1434. package/dist/src/util/misc/pick.d.ts +0 -0
  1435. package/dist/src/util/misc/pick.d.ts.map +0 -0
  1436. package/dist/src/util/misc/pick.min.mjs +0 -0
  1437. package/dist/src/util/misc/pick.min.mjs.map +0 -0
  1438. package/dist/src/util/misc/pick.mjs +0 -0
  1439. package/dist/src/util/misc/pick.mjs.map +0 -0
  1440. package/dist/src/util/misc/planeChange.d.ts +0 -0
  1441. package/dist/src/util/misc/planeChange.d.ts.map +0 -0
  1442. package/dist/src/util/misc/planeChange.min.mjs +0 -0
  1443. package/dist/src/util/misc/planeChange.min.mjs.map +0 -0
  1444. package/dist/src/util/misc/planeChange.mjs +0 -0
  1445. package/dist/src/util/misc/planeChange.mjs.map +0 -0
  1446. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  1447. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  1448. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -0
  1449. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -0
  1450. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -0
  1451. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -0
  1452. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  1453. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  1454. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -0
  1455. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -0
  1456. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -0
  1457. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -0
  1458. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  1459. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  1460. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -0
  1461. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -0
  1462. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -0
  1463. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -0
  1464. package/dist/src/util/misc/projectStroke/index.d.ts +0 -0
  1465. package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -0
  1466. package/dist/src/util/misc/projectStroke/index.min.mjs +0 -0
  1467. package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -0
  1468. package/dist/src/util/misc/projectStroke/index.mjs +0 -0
  1469. package/dist/src/util/misc/projectStroke/index.mjs.map +0 -0
  1470. package/dist/src/util/misc/projectStroke/types.d.ts +0 -0
  1471. package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -0
  1472. package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  1473. package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  1474. package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -0
  1475. package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -0
  1476. package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -0
  1477. package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -0
  1478. package/dist/src/util/misc/resolveOrigin.d.ts +0 -0
  1479. package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -0
  1480. package/dist/src/util/misc/resolveOrigin.min.mjs +0 -0
  1481. package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -0
  1482. package/dist/src/util/misc/resolveOrigin.mjs +0 -0
  1483. package/dist/src/util/misc/resolveOrigin.mjs.map +0 -0
  1484. package/dist/src/util/misc/sin.d.ts +0 -0
  1485. package/dist/src/util/misc/sin.d.ts.map +0 -0
  1486. package/dist/src/util/misc/sin.min.mjs +0 -0
  1487. package/dist/src/util/misc/sin.min.mjs.map +0 -0
  1488. package/dist/src/util/misc/sin.mjs +0 -0
  1489. package/dist/src/util/misc/sin.mjs.map +0 -0
  1490. package/dist/src/util/misc/svgExport.d.ts +0 -0
  1491. package/dist/src/util/misc/svgExport.d.ts.map +0 -0
  1492. package/dist/src/util/misc/svgExport.min.mjs +0 -0
  1493. package/dist/src/util/misc/svgExport.min.mjs.map +0 -0
  1494. package/dist/src/util/misc/svgExport.mjs +0 -0
  1495. package/dist/src/util/misc/svgExport.mjs.map +0 -0
  1496. package/dist/src/util/misc/svgParsing.d.ts +0 -0
  1497. package/dist/src/util/misc/svgParsing.d.ts.map +0 -0
  1498. package/dist/src/util/misc/svgParsing.min.mjs +0 -0
  1499. package/dist/src/util/misc/svgParsing.min.mjs.map +0 -0
  1500. package/dist/src/util/misc/svgParsing.mjs +0 -0
  1501. package/dist/src/util/misc/svgParsing.mjs.map +0 -0
  1502. package/dist/src/util/misc/textStyles.d.ts +0 -0
  1503. package/dist/src/util/misc/textStyles.d.ts.map +0 -0
  1504. package/dist/src/util/misc/textStyles.min.mjs +0 -0
  1505. package/dist/src/util/misc/textStyles.min.mjs.map +0 -0
  1506. package/dist/src/util/misc/textStyles.mjs +0 -0
  1507. package/dist/src/util/misc/textStyles.mjs.map +0 -0
  1508. package/dist/src/util/misc/toFixed.d.ts +0 -0
  1509. package/dist/src/util/misc/toFixed.d.ts.map +0 -0
  1510. package/dist/src/util/misc/toFixed.min.mjs +0 -0
  1511. package/dist/src/util/misc/toFixed.min.mjs.map +0 -0
  1512. package/dist/src/util/misc/toFixed.mjs +0 -0
  1513. package/dist/src/util/misc/toFixed.mjs.map +0 -0
  1514. package/dist/src/util/misc/vectors.d.ts +0 -0
  1515. package/dist/src/util/misc/vectors.d.ts.map +0 -0
  1516. package/dist/src/util/misc/vectors.min.mjs +0 -0
  1517. package/dist/src/util/misc/vectors.min.mjs.map +0 -0
  1518. package/dist/src/util/misc/vectors.mjs +0 -0
  1519. package/dist/src/util/misc/vectors.mjs.map +0 -0
  1520. package/dist/src/util/path/index.d.ts +0 -0
  1521. package/dist/src/util/path/index.d.ts.map +0 -0
  1522. package/dist/src/util/path/index.min.mjs +0 -0
  1523. package/dist/src/util/path/index.min.mjs.map +0 -0
  1524. package/dist/src/util/path/index.mjs +0 -0
  1525. package/dist/src/util/path/index.mjs.map +0 -0
  1526. package/dist/src/util/path/regex.d.ts +0 -0
  1527. package/dist/src/util/path/regex.d.ts.map +0 -0
  1528. package/dist/src/util/path/regex.min.mjs +0 -0
  1529. package/dist/src/util/path/regex.min.mjs.map +0 -0
  1530. package/dist/src/util/path/regex.mjs +0 -0
  1531. package/dist/src/util/path/regex.mjs.map +0 -0
  1532. package/dist/src/util/path/typechecks.d.ts +0 -0
  1533. package/dist/src/util/path/typechecks.d.ts.map +0 -0
  1534. package/dist/src/util/path/typedefs.d.ts +0 -0
  1535. package/dist/src/util/path/typedefs.d.ts.map +0 -0
  1536. package/dist/src/util/transform_matrix_removal.d.ts +0 -0
  1537. package/dist/src/util/transform_matrix_removal.d.ts.map +0 -0
  1538. package/dist/src/util/transform_matrix_removal.min.mjs +0 -0
  1539. package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -0
  1540. package/dist/src/util/transform_matrix_removal.mjs +0 -0
  1541. package/dist/src/util/transform_matrix_removal.mjs.map +0 -0
  1542. package/dist/src/util/typeAssertions.d.ts +0 -0
  1543. package/dist/src/util/typeAssertions.d.ts.map +0 -0
  1544. package/dist/src/util/typeAssertions.min.mjs +0 -0
  1545. package/dist/src/util/typeAssertions.min.mjs.map +0 -0
  1546. package/dist/src/util/typeAssertions.mjs +0 -0
  1547. package/dist/src/util/typeAssertions.mjs.map +0 -0
  1548. package/dist-extensions/aligning_guidelines/constant.mjs +0 -0
  1549. package/dist-extensions/aligning_guidelines/constant.mjs.map +0 -0
  1550. package/dist-extensions/aligning_guidelines/index.mjs +0 -0
  1551. package/dist-extensions/aligning_guidelines/index.mjs.map +0 -0
  1552. package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -0
  1553. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -0
  1554. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -0
  1555. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -0
  1556. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -0
  1557. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -0
  1558. package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -0
  1559. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -0
  1560. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -0
  1561. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -0
  1562. package/dist-extensions/data_updaters/gradient/index.mjs +0 -0
  1563. package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -0
  1564. package/dist-extensions/data_updaters/origins/index.mjs +0 -0
  1565. package/dist-extensions/data_updaters/origins/index.mjs.map +0 -0
  1566. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +0 -0
  1567. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  1568. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -0
  1569. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -0
  1570. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  1571. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  1572. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  1573. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  1574. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  1575. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  1576. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  1577. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  1578. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  1579. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  1580. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  1581. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  1582. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -0
  1583. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  1584. package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -0
  1585. package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -0
  1586. package/dist-extensions/extensions/index.d.ts +0 -0
  1587. package/dist-extensions/extensions/index.d.ts.map +0 -0
  1588. package/dist-extensions/fabric-extensions.min.js +0 -0
  1589. package/dist-extensions/fabric-extensions.min.js.map +0 -0
  1590. package/dist-extensions/fabric.d.ts +0 -0
  1591. package/dist-extensions/fabric.d.ts.map +0 -0
  1592. package/dist-extensions/index.d.ts +0 -0
  1593. package/dist-extensions/index.d.ts.map +0 -0
  1594. package/dist-extensions/index.mjs +0 -0
  1595. package/dist-extensions/index.mjs.map +0 -0
  1596. package/dist-extensions/src/ClassRegistry.d.ts +0 -0
  1597. package/dist-extensions/src/ClassRegistry.d.ts.map +0 -0
  1598. package/dist-extensions/src/Collection.d.ts +0 -0
  1599. package/dist-extensions/src/Collection.d.ts.map +0 -0
  1600. package/dist-extensions/src/CommonMethods.d.ts +0 -0
  1601. package/dist-extensions/src/CommonMethods.d.ts.map +0 -0
  1602. package/dist-extensions/src/EventTypeDefs.d.ts +0 -0
  1603. package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -0
  1604. package/dist-extensions/src/Intersection.d.ts +0 -0
  1605. package/dist-extensions/src/Intersection.d.ts.map +0 -0
  1606. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  1607. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  1608. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -0
  1609. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  1610. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  1611. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  1612. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  1613. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  1614. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  1615. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  1616. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  1617. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  1618. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  1619. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  1620. package/dist-extensions/src/LayoutManager/constants.d.ts +0 -0
  1621. package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -0
  1622. package/dist-extensions/src/LayoutManager/index.d.ts +0 -0
  1623. package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -0
  1624. package/dist-extensions/src/LayoutManager/types.d.ts +0 -0
  1625. package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -0
  1626. package/dist-extensions/src/Observable.d.ts +0 -0
  1627. package/dist-extensions/src/Observable.d.ts.map +0 -0
  1628. package/dist-extensions/src/Pattern/Pattern.d.ts +0 -0
  1629. package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -0
  1630. package/dist-extensions/src/Pattern/index.d.ts +0 -0
  1631. package/dist-extensions/src/Pattern/index.d.ts.map +0 -0
  1632. package/dist-extensions/src/Pattern/types.d.ts +0 -0
  1633. package/dist-extensions/src/Pattern/types.d.ts.map +0 -0
  1634. package/dist-extensions/src/Point.d.ts +0 -0
  1635. package/dist-extensions/src/Point.d.ts.map +0 -0
  1636. package/dist-extensions/src/Shadow.d.ts +0 -0
  1637. package/dist-extensions/src/Shadow.d.ts.map +0 -0
  1638. package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -0
  1639. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -0
  1640. package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -0
  1641. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -0
  1642. package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -0
  1643. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -0
  1644. package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -0
  1645. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -0
  1646. package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -0
  1647. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -0
  1648. package/dist-extensions/src/brushes/typedefs.d.ts +0 -0
  1649. package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -0
  1650. package/dist-extensions/src/cache.d.ts +0 -0
  1651. package/dist-extensions/src/cache.d.ts.map +0 -0
  1652. package/dist-extensions/src/canvas/Canvas.d.ts +0 -0
  1653. package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -0
  1654. package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -0
  1655. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -0
  1656. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  1657. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  1658. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  1659. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  1660. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -0
  1661. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -0
  1662. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -0
  1663. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -0
  1664. package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -0
  1665. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -0
  1666. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -0
  1667. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  1668. package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -0
  1669. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -0
  1670. package/dist-extensions/src/color/Color.d.ts +0 -0
  1671. package/dist-extensions/src/color/Color.d.ts.map +0 -0
  1672. package/dist-extensions/src/color/color_map.d.ts +0 -0
  1673. package/dist-extensions/src/color/color_map.d.ts.map +0 -0
  1674. package/dist-extensions/src/color/constants.d.ts +0 -0
  1675. package/dist-extensions/src/color/constants.d.ts.map +0 -0
  1676. package/dist-extensions/src/color/typedefs.d.ts +0 -0
  1677. package/dist-extensions/src/color/typedefs.d.ts.map +0 -0
  1678. package/dist-extensions/src/color/util.d.ts +0 -0
  1679. package/dist-extensions/src/color/util.d.ts.map +0 -0
  1680. package/dist-extensions/src/config.d.ts +0 -0
  1681. package/dist-extensions/src/config.d.ts.map +0 -0
  1682. package/dist-extensions/src/constants.d.ts +0 -0
  1683. package/dist-extensions/src/constants.d.ts.map +0 -0
  1684. package/dist-extensions/src/controls/Control.d.ts +0 -0
  1685. package/dist-extensions/src/controls/Control.d.ts.map +0 -0
  1686. package/dist-extensions/src/controls/changeHeight.d.ts +0 -0
  1687. package/dist-extensions/src/controls/changeHeight.d.ts.map +0 -0
  1688. package/dist-extensions/src/controls/changeWidth.d.ts +0 -0
  1689. package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -0
  1690. package/dist-extensions/src/controls/commonControls.d.ts +0 -0
  1691. package/dist-extensions/src/controls/commonControls.d.ts.map +0 -0
  1692. package/dist-extensions/src/controls/controlRendering.d.ts +0 -0
  1693. package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -0
  1694. package/dist-extensions/src/controls/drag.d.ts +0 -0
  1695. package/dist-extensions/src/controls/drag.d.ts.map +0 -0
  1696. package/dist-extensions/src/controls/fireEvent.d.ts +0 -0
  1697. package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -0
  1698. package/dist-extensions/src/controls/index.d.ts +0 -0
  1699. package/dist-extensions/src/controls/index.d.ts.map +0 -0
  1700. package/dist-extensions/src/controls/pathControl.d.ts +0 -0
  1701. package/dist-extensions/src/controls/pathControl.d.ts.map +0 -0
  1702. package/dist-extensions/src/controls/polyControl.d.ts +0 -0
  1703. package/dist-extensions/src/controls/polyControl.d.ts.map +0 -0
  1704. package/dist-extensions/src/controls/rotate.d.ts +0 -0
  1705. package/dist-extensions/src/controls/rotate.d.ts.map +0 -0
  1706. package/dist-extensions/src/controls/scale.d.ts +0 -0
  1707. package/dist-extensions/src/controls/scale.d.ts.map +0 -0
  1708. package/dist-extensions/src/controls/scaleSkew.d.ts +0 -0
  1709. package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -0
  1710. package/dist-extensions/src/controls/skew.d.ts +0 -0
  1711. package/dist-extensions/src/controls/skew.d.ts.map +0 -0
  1712. package/dist-extensions/src/controls/util.d.ts +0 -0
  1713. package/dist-extensions/src/controls/util.d.ts.map +0 -0
  1714. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -0
  1715. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  1716. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  1717. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  1718. package/dist-extensions/src/env/browser.d.ts +0 -0
  1719. package/dist-extensions/src/env/browser.d.ts.map +0 -0
  1720. package/dist-extensions/src/env/index.d.ts +0 -0
  1721. package/dist-extensions/src/env/index.d.ts.map +0 -0
  1722. package/dist-extensions/src/env/types.d.ts +0 -0
  1723. package/dist-extensions/src/env/types.d.ts.map +0 -0
  1724. package/dist-extensions/src/filters/BaseFilter.d.ts +0 -0
  1725. package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -0
  1726. package/dist-extensions/src/filters/BlendColor.d.ts +0 -0
  1727. package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -0
  1728. package/dist-extensions/src/filters/BlendImage.d.ts +0 -0
  1729. package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -0
  1730. package/dist-extensions/src/filters/Blur.d.ts +0 -0
  1731. package/dist-extensions/src/filters/Blur.d.ts.map +0 -0
  1732. package/dist-extensions/src/filters/Brightness.d.ts +0 -0
  1733. package/dist-extensions/src/filters/Brightness.d.ts.map +0 -0
  1734. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  1735. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  1736. package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -0
  1737. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -0
  1738. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -0
  1739. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  1740. package/dist-extensions/src/filters/Composed.d.ts +0 -0
  1741. package/dist-extensions/src/filters/Composed.d.ts.map +0 -0
  1742. package/dist-extensions/src/filters/Contrast.d.ts +0 -0
  1743. package/dist-extensions/src/filters/Contrast.d.ts.map +0 -0
  1744. package/dist-extensions/src/filters/Convolute.d.ts +0 -0
  1745. package/dist-extensions/src/filters/Convolute.d.ts.map +0 -0
  1746. package/dist-extensions/src/filters/FilterBackend.d.ts +0 -0
  1747. package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -0
  1748. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -0
  1749. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  1750. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  1751. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  1752. package/dist-extensions/src/filters/Gamma.d.ts +0 -0
  1753. package/dist-extensions/src/filters/Gamma.d.ts.map +0 -0
  1754. package/dist-extensions/src/filters/Grayscale.d.ts +0 -0
  1755. package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -0
  1756. package/dist-extensions/src/filters/HueRotation.d.ts +0 -0
  1757. package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -0
  1758. package/dist-extensions/src/filters/Invert.d.ts +0 -0
  1759. package/dist-extensions/src/filters/Invert.d.ts.map +0 -0
  1760. package/dist-extensions/src/filters/Noise.d.ts +0 -0
  1761. package/dist-extensions/src/filters/Noise.d.ts.map +0 -0
  1762. package/dist-extensions/src/filters/Pixelate.d.ts +0 -0
  1763. package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -0
  1764. package/dist-extensions/src/filters/RemoveColor.d.ts +0 -0
  1765. package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -0
  1766. package/dist-extensions/src/filters/Resize.d.ts +0 -0
  1767. package/dist-extensions/src/filters/Resize.d.ts.map +0 -0
  1768. package/dist-extensions/src/filters/Saturation.d.ts +0 -0
  1769. package/dist-extensions/src/filters/Saturation.d.ts.map +0 -0
  1770. package/dist-extensions/src/filters/Vibrance.d.ts +0 -0
  1771. package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -0
  1772. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -0
  1773. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  1774. package/dist-extensions/src/filters/filters.d.ts +0 -0
  1775. package/dist-extensions/src/filters/filters.d.ts.map +0 -0
  1776. package/dist-extensions/src/filters/index.d.ts +0 -0
  1777. package/dist-extensions/src/filters/index.d.ts.map +0 -0
  1778. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -0
  1779. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -0
  1780. package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -0
  1781. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -0
  1782. package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -0
  1783. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -0
  1784. package/dist-extensions/src/filters/shaders/blur.d.ts +0 -0
  1785. package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -0
  1786. package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -0
  1787. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -0
  1788. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -0
  1789. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  1790. package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -0
  1791. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -0
  1792. package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -0
  1793. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -0
  1794. package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -0
  1795. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -0
  1796. package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -0
  1797. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -0
  1798. package/dist-extensions/src/filters/shaders/invert.d.ts +0 -0
  1799. package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -0
  1800. package/dist-extensions/src/filters/shaders/noise.d.ts +0 -0
  1801. package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -0
  1802. package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -0
  1803. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -0
  1804. package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -0
  1805. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -0
  1806. package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -0
  1807. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -0
  1808. package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -0
  1809. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -0
  1810. package/dist-extensions/src/filters/typedefs.d.ts +0 -0
  1811. package/dist-extensions/src/filters/typedefs.d.ts.map +0 -0
  1812. package/dist-extensions/src/filters/utils.d.ts +0 -0
  1813. package/dist-extensions/src/filters/utils.d.ts.map +0 -0
  1814. package/dist-extensions/src/gradient/Gradient.d.ts +0 -0
  1815. package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -0
  1816. package/dist-extensions/src/gradient/constants.d.ts +0 -0
  1817. package/dist-extensions/src/gradient/constants.d.ts.map +0 -0
  1818. package/dist-extensions/src/gradient/index.d.ts +0 -0
  1819. package/dist-extensions/src/gradient/index.d.ts.map +0 -0
  1820. package/dist-extensions/src/gradient/parser/misc.d.ts +0 -0
  1821. package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -0
  1822. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -0
  1823. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  1824. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -0
  1825. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -0
  1826. package/dist-extensions/src/gradient/typedefs.d.ts +0 -0
  1827. package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -0
  1828. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -0
  1829. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -0
  1830. package/dist-extensions/src/parser/attributes.d.ts +0 -0
  1831. package/dist-extensions/src/parser/attributes.d.ts.map +0 -0
  1832. package/dist-extensions/src/parser/constants.d.ts +0 -0
  1833. package/dist-extensions/src/parser/constants.d.ts.map +0 -0
  1834. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -0
  1835. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  1836. package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -0
  1837. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -0
  1838. package/dist-extensions/src/parser/elements_parser.d.ts +0 -0
  1839. package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -0
  1840. package/dist-extensions/src/parser/getCSSRules.d.ts +0 -0
  1841. package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -0
  1842. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -0
  1843. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  1844. package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -0
  1845. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -0
  1846. package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -0
  1847. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -0
  1848. package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -0
  1849. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -0
  1850. package/dist-extensions/src/parser/getTagName.d.ts +0 -0
  1851. package/dist-extensions/src/parser/getTagName.d.ts.map +0 -0
  1852. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -0
  1853. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  1854. package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -0
  1855. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -0
  1856. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -0
  1857. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -0
  1858. package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -0
  1859. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -0
  1860. package/dist-extensions/src/parser/normalizeValue.d.ts +0 -0
  1861. package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -0
  1862. package/dist-extensions/src/parser/parseAttributes.d.ts +0 -0
  1863. package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -0
  1864. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -0
  1865. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -0
  1866. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -0
  1867. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -0
  1868. package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -0
  1869. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -0
  1870. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -0
  1871. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -0
  1872. package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -0
  1873. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -0
  1874. package/dist-extensions/src/parser/parseStyleString.d.ts +0 -0
  1875. package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -0
  1876. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -0
  1877. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -0
  1878. package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -0
  1879. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -0
  1880. package/dist-extensions/src/parser/percent.d.ts +0 -0
  1881. package/dist-extensions/src/parser/percent.d.ts.map +0 -0
  1882. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  1883. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  1884. package/dist-extensions/src/parser/selectorMatches.d.ts +0 -0
  1885. package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -0
  1886. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -0
  1887. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  1888. package/dist-extensions/src/parser/typedefs.d.ts +0 -0
  1889. package/dist-extensions/src/parser/typedefs.d.ts.map +0 -0
  1890. package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -0
  1891. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -0
  1892. package/dist-extensions/src/shapes/Circle.d.ts +0 -0
  1893. package/dist-extensions/src/shapes/Circle.d.ts.map +0 -0
  1894. package/dist-extensions/src/shapes/Ellipse.d.ts +0 -0
  1895. package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -0
  1896. package/dist-extensions/src/shapes/Group.d.ts +0 -0
  1897. package/dist-extensions/src/shapes/Group.d.ts.map +0 -0
  1898. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1899. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1900. package/dist-extensions/src/shapes/IText/IText.d.ts +0 -0
  1901. package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -0
  1902. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1903. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
  1904. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1905. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1906. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1907. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1908. package/dist-extensions/src/shapes/IText/constants.d.ts +0 -0
  1909. package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -0
  1910. package/dist-extensions/src/shapes/Image.d.ts +0 -0
  1911. package/dist-extensions/src/shapes/Image.d.ts.map +0 -0
  1912. package/dist-extensions/src/shapes/Line.d.ts +0 -0
  1913. package/dist-extensions/src/shapes/Line.d.ts.map +0 -0
  1914. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -0
  1915. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1916. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1917. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1918. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1919. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1920. package/dist-extensions/src/shapes/Object/Object.d.ts +0 -0
  1921. package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -0
  1922. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1923. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1924. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -0
  1925. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1926. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1927. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1928. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1929. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1930. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1931. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1932. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1933. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1934. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1935. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1936. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1937. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1938. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1939. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1940. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1941. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1942. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1943. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1944. package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -0
  1945. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -0
  1946. package/dist-extensions/src/shapes/Path.d.ts +0 -0
  1947. package/dist-extensions/src/shapes/Path.d.ts.map +0 -0
  1948. package/dist-extensions/src/shapes/Polygon.d.ts +0 -0
  1949. package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -0
  1950. package/dist-extensions/src/shapes/Polyline.d.ts +0 -0
  1951. package/dist-extensions/src/shapes/Polyline.d.ts.map +0 -0
  1952. package/dist-extensions/src/shapes/Rect.d.ts +0 -0
  1953. package/dist-extensions/src/shapes/Rect.d.ts.map +0 -0
  1954. package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -0
  1955. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -0
  1956. package/dist-extensions/src/shapes/Text/Text.d.ts +1 -0
  1957. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  1958. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1959. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1960. package/dist-extensions/src/shapes/Text/constants.d.ts +0 -0
  1961. package/dist-extensions/src/shapes/Text/constants.d.ts.map +0 -0
  1962. package/dist-extensions/src/shapes/Textbox.d.ts +20 -0
  1963. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  1964. package/dist-extensions/src/shapes/Triangle.d.ts +0 -0
  1965. package/dist-extensions/src/shapes/Triangle.d.ts.map +0 -0
  1966. package/dist-extensions/src/text/browserLines.d.ts +7 -2
  1967. package/dist-extensions/src/text/browserLines.d.ts.map +1 -1
  1968. package/dist-extensions/src/text/ellipsis.d.ts +0 -0
  1969. package/dist-extensions/src/text/ellipsis.d.ts.map +0 -0
  1970. package/dist-extensions/src/text/hitTest.d.ts +0 -0
  1971. package/dist-extensions/src/text/hitTest.d.ts.map +0 -0
  1972. package/dist-extensions/src/text/layout.d.ts +0 -0
  1973. package/dist-extensions/src/text/layout.d.ts.map +0 -0
  1974. package/dist-extensions/src/text/measure.d.ts +0 -0
  1975. package/dist-extensions/src/text/measure.d.ts.map +0 -0
  1976. package/dist-extensions/src/text/overlayEditor.d.ts +1 -0
  1977. package/dist-extensions/src/text/overlayEditor.d.ts.map +1 -1
  1978. package/dist-extensions/src/text/unicode.d.ts +0 -0
  1979. package/dist-extensions/src/text/unicode.d.ts.map +0 -0
  1980. package/dist-extensions/src/typedefs.d.ts +0 -0
  1981. package/dist-extensions/src/typedefs.d.ts.map +0 -0
  1982. package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -0
  1983. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -0
  1984. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1985. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1986. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -0
  1987. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1988. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -0
  1989. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1990. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -0
  1991. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1992. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -0
  1993. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1994. package/dist-extensions/src/util/animation/animate.d.ts +0 -0
  1995. package/dist-extensions/src/util/animation/animate.d.ts.map +0 -0
  1996. package/dist-extensions/src/util/animation/easing.d.ts +0 -0
  1997. package/dist-extensions/src/util/animation/easing.d.ts.map +0 -0
  1998. package/dist-extensions/src/util/animation/index.d.ts +0 -0
  1999. package/dist-extensions/src/util/animation/index.d.ts.map +0 -0
  2000. package/dist-extensions/src/util/animation/types.d.ts +0 -0
  2001. package/dist-extensions/src/util/animation/types.d.ts.map +0 -0
  2002. package/dist-extensions/src/util/applyMixins.d.ts +0 -0
  2003. package/dist-extensions/src/util/applyMixins.d.ts.map +0 -0
  2004. package/dist-extensions/src/util/dom_event.d.ts +0 -0
  2005. package/dist-extensions/src/util/dom_event.d.ts.map +0 -0
  2006. package/dist-extensions/src/util/dom_misc.d.ts +0 -0
  2007. package/dist-extensions/src/util/dom_misc.d.ts.map +0 -0
  2008. package/dist-extensions/src/util/index.d.ts +0 -0
  2009. package/dist-extensions/src/util/index.d.ts.map +0 -0
  2010. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -0
  2011. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  2012. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  2013. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  2014. package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -0
  2015. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -0
  2016. package/dist-extensions/src/util/internals/console.d.ts +0 -0
  2017. package/dist-extensions/src/util/internals/console.d.ts.map +0 -0
  2018. package/dist-extensions/src/util/internals/dom_style.d.ts +0 -0
  2019. package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -0
  2020. package/dist-extensions/src/util/internals/findRight.d.ts +0 -0
  2021. package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -0
  2022. package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -0
  2023. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -0
  2024. package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -0
  2025. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -0
  2026. package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -0
  2027. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -0
  2028. package/dist-extensions/src/util/internals/uid.d.ts +0 -0
  2029. package/dist-extensions/src/util/internals/uid.d.ts.map +0 -0
  2030. package/dist-extensions/src/util/lang_string.d.ts +0 -0
  2031. package/dist-extensions/src/util/lang_string.d.ts.map +0 -0
  2032. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  2033. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  2034. package/dist-extensions/src/util/misc/capValue.d.ts +0 -0
  2035. package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -0
  2036. package/dist-extensions/src/util/misc/cornerRadius.d.ts +0 -0
  2037. package/dist-extensions/src/util/misc/cornerRadius.d.ts.map +0 -0
  2038. package/dist-extensions/src/util/misc/cos.d.ts +0 -0
  2039. package/dist-extensions/src/util/misc/cos.d.ts.map +0 -0
  2040. package/dist-extensions/src/util/misc/dom.d.ts +0 -0
  2041. package/dist-extensions/src/util/misc/dom.d.ts.map +0 -0
  2042. package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -0
  2043. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -0
  2044. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -0
  2045. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -0
  2046. package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -0
  2047. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -0
  2048. package/dist-extensions/src/util/misc/matrix.d.ts +0 -0
  2049. package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -0
  2050. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -0
  2051. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  2052. package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -0
  2053. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -0
  2054. package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -0
  2055. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -0
  2056. package/dist-extensions/src/util/misc/pick.d.ts +0 -0
  2057. package/dist-extensions/src/util/misc/pick.d.ts.map +0 -0
  2058. package/dist-extensions/src/util/misc/planeChange.d.ts +0 -0
  2059. package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -0
  2060. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  2061. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  2062. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  2063. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  2064. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  2065. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  2066. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -0
  2067. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -0
  2068. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -0
  2069. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -0
  2070. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  2071. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  2072. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -0
  2073. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -0
  2074. package/dist-extensions/src/util/misc/sin.d.ts +0 -0
  2075. package/dist-extensions/src/util/misc/sin.d.ts.map +0 -0
  2076. package/dist-extensions/src/util/misc/svgExport.d.ts +0 -0
  2077. package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -0
  2078. package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -0
  2079. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -0
  2080. package/dist-extensions/src/util/misc/textStyles.d.ts +0 -0
  2081. package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -0
  2082. package/dist-extensions/src/util/misc/toFixed.d.ts +0 -0
  2083. package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -0
  2084. package/dist-extensions/src/util/misc/vectors.d.ts +0 -0
  2085. package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -0
  2086. package/dist-extensions/src/util/path/index.d.ts +0 -0
  2087. package/dist-extensions/src/util/path/index.d.ts.map +0 -0
  2088. package/dist-extensions/src/util/path/regex.d.ts +0 -0
  2089. package/dist-extensions/src/util/path/regex.d.ts.map +0 -0
  2090. package/dist-extensions/src/util/path/typedefs.d.ts +0 -0
  2091. package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -0
  2092. package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -0
  2093. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -0
  2094. package/dist-extensions/src/util/typeAssertions.d.ts +0 -0
  2095. package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -0
  2096. package/docs/fabric-konva-gap-analysis.md +0 -0
  2097. package/docs/konva-text-behavior-spec.md +0 -0
  2098. package/docs/text-engine-design.md +0 -0
  2099. package/eslint.config.mjs +0 -0
  2100. package/examples/overlay-edit.html +416 -416
  2101. package/extensions/README.MD +0 -0
  2102. package/extensions/aligning_guidelines/README.MD +0 -0
  2103. package/extensions/aligning_guidelines/constant.ts +0 -0
  2104. package/extensions/aligning_guidelines/index.ts +0 -0
  2105. package/extensions/aligning_guidelines/typedefs.ts +0 -0
  2106. package/extensions/aligning_guidelines/util/basic.spec.ts +0 -0
  2107. package/extensions/aligning_guidelines/util/basic.ts +0 -0
  2108. package/extensions/aligning_guidelines/util/collect-line.ts +0 -0
  2109. package/extensions/aligning_guidelines/util/collect-point.ts +0 -0
  2110. package/extensions/aligning_guidelines/util/draw.ts +0 -0
  2111. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -0
  2112. package/extensions/data_updaters/README.md +0 -0
  2113. package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -0
  2114. package/extensions/data_updaters/gradient/index.spec.ts +0 -0
  2115. package/extensions/data_updaters/gradient/index.ts +0 -0
  2116. package/extensions/data_updaters/origins/README.md +0 -0
  2117. package/extensions/data_updaters/origins/index.spec.ts +0 -0
  2118. package/extensions/data_updaters/origins/index.ts +0 -0
  2119. package/extensions/index.ts +0 -0
  2120. package/fabric.ts +182 -182
  2121. package/index.node.ts +0 -0
  2122. package/index.ts +0 -0
  2123. package/lib/aligning_guidelines.js +0 -0
  2124. package/lib/centering_guidelines.js +0 -0
  2125. package/lib/event.js +0 -0
  2126. package/package.json +164 -164
  2127. package/playwright.config.ts +0 -0
  2128. package/playwright.setup.ts +0 -0
  2129. package/{fonts → public/fonts}/STV Bold.ttf +0 -0
  2130. package/{fonts → public/fonts}/STV Light.ttf +0 -0
  2131. package/{fonts → public/fonts}/STV Regular.ttf +0 -0
  2132. package/publish-next.js +0 -0
  2133. package/publish.js +0 -0
  2134. package/rollup.config.mjs +0 -0
  2135. package/rtl-debug.html +744 -744
  2136. package/scripts/bench-text.js +591 -591
  2137. package/scripts/build.mjs +0 -0
  2138. package/scripts/buildLock.mjs +0 -0
  2139. package/scripts/buildReporter.mjs +0 -0
  2140. package/scripts/buildStats.mjs +0 -0
  2141. package/scripts/dirname.mjs +0 -0
  2142. package/scripts/git.mjs +0 -0
  2143. package/scripts/index.mjs +0 -0
  2144. package/scripts/sandbox.mjs +0 -0
  2145. package/src/ClassRegistry.spec.ts +0 -0
  2146. package/src/ClassRegistry.ts +0 -0
  2147. package/src/Collection.spec.ts +0 -0
  2148. package/src/Collection.ts +0 -0
  2149. package/src/CommonMethods.ts +0 -0
  2150. package/src/EventTypeDefs.ts +0 -0
  2151. package/src/Intersection.spec.ts +0 -0
  2152. package/src/Intersection.ts +0 -0
  2153. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
  2154. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
  2155. package/src/LayoutManager/LayoutManager.spec.ts +0 -0
  2156. package/src/LayoutManager/LayoutManager.ts +0 -0
  2157. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
  2158. package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
  2159. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
  2160. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
  2161. package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
  2162. package/src/LayoutManager/README.md +0 -0
  2163. package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
  2164. package/src/LayoutManager/constants.ts +0 -0
  2165. package/src/LayoutManager/index.ts +0 -0
  2166. package/src/LayoutManager/types.ts +0 -0
  2167. package/src/Observable.spec.ts +0 -0
  2168. package/src/Observable.ts +0 -0
  2169. package/src/Pattern/Pattern.spec.ts +0 -0
  2170. package/src/Pattern/Pattern.ts +0 -0
  2171. package/src/Pattern/index.ts +0 -0
  2172. package/src/Pattern/types.ts +0 -0
  2173. package/src/Point.spec.ts +0 -0
  2174. package/src/Point.ts +0 -0
  2175. package/src/Shadow.spec.ts +0 -0
  2176. package/src/Shadow.ts +0 -0
  2177. package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
  2178. package/src/brushes/BaseBrush.spec.ts +0 -0
  2179. package/src/brushes/BaseBrush.ts +0 -0
  2180. package/src/brushes/CircleBrush.test.ts +0 -0
  2181. package/src/brushes/CircleBrush.ts +0 -0
  2182. package/src/brushes/PatternBrush.ts +0 -0
  2183. package/src/brushes/PencilBrush.spec.ts +0 -0
  2184. package/src/brushes/PencilBrush.ts +0 -0
  2185. package/src/brushes/SprayBrush.ts +0 -0
  2186. package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
  2187. package/src/brushes/typedefs.ts +0 -0
  2188. package/src/cache.spec.ts +0 -0
  2189. package/src/cache.ts +0 -0
  2190. package/src/canvas/Canvas-dispose.spec.ts +0 -0
  2191. package/src/canvas/Canvas-events.spec.ts +0 -0
  2192. package/src/canvas/Canvas.spec.ts +0 -0
  2193. package/src/canvas/Canvas.ts +0 -0
  2194. package/src/canvas/CanvasOptions.ts +0 -0
  2195. package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
  2196. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
  2197. package/src/canvas/DOMManagers/util.spec.ts +0 -0
  2198. package/src/canvas/DOMManagers/util.ts +0 -0
  2199. package/src/canvas/SelectableCanvas.spec.ts +0 -0
  2200. package/src/canvas/SelectableCanvas.ts +0 -0
  2201. package/src/canvas/StaticCanvas.spec.ts +0 -0
  2202. package/src/canvas/StaticCanvas.ts +0 -0
  2203. package/src/canvas/StaticCanvasOptions.ts +0 -0
  2204. package/src/canvas/TextEditingManager.ts +0 -0
  2205. package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
  2206. package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
  2207. package/src/canvas/__tests__/eventData.test.ts +0 -0
  2208. package/src/canvas/canvas_gestures.mixin.ts +0 -0
  2209. package/src/color/Color.ts +0 -0
  2210. package/src/color/color.test.ts +0 -0
  2211. package/src/color/color_map.ts +0 -0
  2212. package/src/color/constants.ts +0 -0
  2213. package/src/color/typedefs.ts +0 -0
  2214. package/src/color/util.ts +0 -0
  2215. package/src/config.ts +0 -0
  2216. package/src/constants.ts +0 -0
  2217. package/src/controls/Control-cursor.spec.ts +0 -0
  2218. package/src/controls/Control-handlers.spec.ts +0 -0
  2219. package/src/controls/Control.spec.ts +0 -0
  2220. package/src/controls/Control.ts +0 -0
  2221. package/src/controls/changeHeight.ts +0 -0
  2222. package/src/controls/changeWidth.test.ts +0 -0
  2223. package/src/controls/changeWidth.ts +0 -0
  2224. package/src/controls/commonControls.ts +0 -0
  2225. package/src/controls/controlRendering.ts +0 -0
  2226. package/src/controls/drag.ts +0 -0
  2227. package/src/controls/fireEvent.ts +0 -0
  2228. package/src/controls/index.ts +0 -0
  2229. package/src/controls/pathControl.spec.ts +0 -0
  2230. package/src/controls/pathControl.ts +0 -0
  2231. package/src/controls/polyControl.spec.ts +0 -0
  2232. package/src/controls/polyControl.ts +0 -0
  2233. package/src/controls/rotate.ts +0 -0
  2234. package/src/controls/scale.test.ts +0 -0
  2235. package/src/controls/scale.ts +0 -0
  2236. package/src/controls/scaleSkew.ts +0 -0
  2237. package/src/controls/skew.ts +0 -0
  2238. package/src/controls/util.ts +0 -0
  2239. package/src/controls/wrapWithFireEvent.ts +0 -0
  2240. package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
  2241. package/src/controls/wrapWithFixedAnchor.ts +0 -0
  2242. package/src/env/browser.ts +0 -0
  2243. package/src/env/env.spec.ts +0 -0
  2244. package/src/env/index.ts +0 -0
  2245. package/src/env/node.ts +0 -0
  2246. package/src/env/types.ts +0 -0
  2247. package/src/filters/BaseFilter.spec.ts +0 -0
  2248. package/src/filters/BaseFilter.ts +0 -0
  2249. package/src/filters/BlendColor.ts +0 -0
  2250. package/src/filters/BlendImage.ts +0 -0
  2251. package/src/filters/Blur.ts +0 -0
  2252. package/src/filters/Boilerplate.ts +0 -0
  2253. package/src/filters/Brightness.ts +0 -0
  2254. package/src/filters/Canvas2dFilterBackend.ts +0 -0
  2255. package/src/filters/ColorMatrix.spec.ts +0 -0
  2256. package/src/filters/ColorMatrix.ts +0 -0
  2257. package/src/filters/ColorMatrixFilters.ts +0 -0
  2258. package/src/filters/Composed.ts +0 -0
  2259. package/src/filters/Contrast.ts +0 -0
  2260. package/src/filters/Convolute.ts +0 -0
  2261. package/src/filters/FilterBackend.ts +0 -0
  2262. package/src/filters/GLProbes/GLProbe.ts +0 -0
  2263. package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
  2264. package/src/filters/GLProbes/WebGLProbe.ts +0 -0
  2265. package/src/filters/Gamma.ts +0 -0
  2266. package/src/filters/Grayscale.ts +0 -0
  2267. package/src/filters/HueRotation.ts +0 -0
  2268. package/src/filters/Invert.ts +0 -0
  2269. package/src/filters/Noise.ts +0 -0
  2270. package/src/filters/Pixelate.ts +0 -0
  2271. package/src/filters/RemoveColor.ts +0 -0
  2272. package/src/filters/Resize.ts +0 -0
  2273. package/src/filters/Saturation.ts +0 -0
  2274. package/src/filters/Vibrance.ts +0 -0
  2275. package/src/filters/WebGLFilterBackend.spec.ts +0 -0
  2276. package/src/filters/WebGLFilterBackend.ts +0 -0
  2277. package/src/filters/filters.ts +0 -0
  2278. package/src/filters/index.ts +0 -0
  2279. package/src/filters/shaders/baseFilter.ts +0 -0
  2280. package/src/filters/shaders/blendColor.ts +0 -0
  2281. package/src/filters/shaders/blendImage.ts +0 -0
  2282. package/src/filters/shaders/blur.ts +0 -0
  2283. package/src/filters/shaders/brightness.ts +0 -0
  2284. package/src/filters/shaders/colorMatrix.ts +0 -0
  2285. package/src/filters/shaders/constrast.ts +0 -0
  2286. package/src/filters/shaders/convolute.ts +0 -0
  2287. package/src/filters/shaders/gamma.ts +0 -0
  2288. package/src/filters/shaders/grayscale.ts +0 -0
  2289. package/src/filters/shaders/invert.ts +0 -0
  2290. package/src/filters/shaders/noise.ts +0 -0
  2291. package/src/filters/shaders/pixelate.ts +0 -0
  2292. package/src/filters/shaders/removeColor.ts +0 -0
  2293. package/src/filters/shaders/saturation.ts +0 -0
  2294. package/src/filters/shaders/vibrance.ts +0 -0
  2295. package/src/filters/typedefs.ts +0 -0
  2296. package/src/filters/utils.ts +0 -0
  2297. package/src/gradient/Gradient.spec.ts +0 -0
  2298. package/src/gradient/Gradient.ts +0 -0
  2299. package/src/gradient/constants.ts +0 -0
  2300. package/src/gradient/index.ts +0 -0
  2301. package/src/gradient/parser/misc.ts +0 -0
  2302. package/src/gradient/parser/parseColorStops.ts +0 -0
  2303. package/src/gradient/parser/parseCoords.ts +0 -0
  2304. package/src/gradient/typedefs.ts +0 -0
  2305. package/src/mixins/eraser_brush.mixin.ts +0 -0
  2306. package/src/parkinglot/canvas_animation.mixin.ts +0 -0
  2307. package/src/parkinglot/straighten.ts +0 -0
  2308. package/src/parser/applyViewboxTransform.spec.ts +0 -0
  2309. package/src/parser/applyViewboxTransform.ts +0 -0
  2310. package/src/parser/attributes.ts +0 -0
  2311. package/src/parser/constants.spec.ts +0 -0
  2312. package/src/parser/constants.ts +0 -0
  2313. package/src/parser/doesSomeParentMatch.ts +0 -0
  2314. package/src/parser/elementMatchesRule.ts +0 -0
  2315. package/src/parser/elements_parser.ts +0 -0
  2316. package/src/parser/getCSSRules.spec.ts +0 -0
  2317. package/src/parser/getCSSRules.ts +0 -0
  2318. package/src/parser/getGlobalStylesForElement.ts +0 -0
  2319. package/src/parser/getGradientDefs.ts +0 -0
  2320. package/src/parser/getMultipleNodes.ts +0 -0
  2321. package/src/parser/getSvgRegex.ts +0 -0
  2322. package/src/parser/getTagName.ts +0 -0
  2323. package/src/parser/hasInvalidAncestor.ts +0 -0
  2324. package/src/parser/loadSVGFromString.test.ts +0 -0
  2325. package/src/parser/loadSVGFromString.ts +0 -0
  2326. package/src/parser/loadSVGFromURL.ts +0 -0
  2327. package/src/parser/normalizeAttr.ts +0 -0
  2328. package/src/parser/normalizeValue.ts +0 -0
  2329. package/src/parser/parseAttributes.ts +0 -0
  2330. package/src/parser/parseFontDeclaration.ts +0 -0
  2331. package/src/parser/parsePointsAttribute.ts +0 -0
  2332. package/src/parser/parseSVGDocument.ts +0 -0
  2333. package/src/parser/parseStyleAttribute.ts +0 -0
  2334. package/src/parser/parseStyleObject.ts +0 -0
  2335. package/src/parser/parseStyleString.ts +0 -0
  2336. package/src/parser/parseTransformAttribute.ts +0 -0
  2337. package/src/parser/parseUseDirectives.test.ts +0 -0
  2338. package/src/parser/parseUseDirectives.ts +0 -0
  2339. package/src/parser/parser.spec.ts +0 -0
  2340. package/src/parser/percent.ts +0 -0
  2341. package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
  2342. package/src/parser/selectorMatches.ts +0 -0
  2343. package/src/parser/setStrokeFillOpacity.ts +0 -0
  2344. package/src/parser/typedefs.ts +0 -0
  2345. package/src/shapes/ActiveSelection.spec.ts +0 -0
  2346. package/src/shapes/ActiveSelection.ts +0 -0
  2347. package/src/shapes/Circle.spec.ts +0 -0
  2348. package/src/shapes/Circle.ts +0 -0
  2349. package/src/shapes/Ellipse.spec.ts +0 -0
  2350. package/src/shapes/Ellipse.ts +0 -0
  2351. package/src/shapes/Group.spec.ts +0 -0
  2352. package/src/shapes/Group.ts +0 -0
  2353. package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
  2354. package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
  2355. package/src/shapes/IText/IText.test.ts +0 -0
  2356. package/src/shapes/IText/IText.ts +846 -846
  2357. package/src/shapes/IText/ITextBehavior.test.ts +0 -0
  2358. package/src/shapes/IText/ITextBehavior.ts +1263 -1188
  2359. package/src/shapes/IText/ITextClickBehavior.ts +254 -254
  2360. package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
  2361. package/src/shapes/IText/ITextKeyBehavior.ts +732 -732
  2362. package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
  2363. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
  2364. package/src/shapes/IText/constants.ts +0 -0
  2365. package/src/shapes/Image-filters.spec.ts +0 -0
  2366. package/src/shapes/Image.spec.ts +0 -0
  2367. package/src/shapes/Image.ts +0 -0
  2368. package/src/shapes/Line.spec.ts +0 -0
  2369. package/src/shapes/Line.ts +0 -0
  2370. package/src/shapes/Object/FabricObject.spec.ts +0 -0
  2371. package/src/shapes/Object/FabricObject.ts +0 -0
  2372. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
  2373. package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
  2374. package/src/shapes/Object/InteractiveObject.ts +0 -0
  2375. package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
  2376. package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
  2377. package/src/shapes/Object/Object.spec.ts +0 -0
  2378. package/src/shapes/Object/Object.ts +0 -0
  2379. package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
  2380. package/src/shapes/Object/ObjectGeometry.ts +0 -0
  2381. package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
  2382. package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
  2383. package/src/shapes/Object/StackedObject.spec.ts +0 -0
  2384. package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
  2385. package/src/shapes/Object/defaultValues.ts +0 -0
  2386. package/src/shapes/Object/types/BaseProps.ts +0 -0
  2387. package/src/shapes/Object/types/BorderProps.ts +0 -0
  2388. package/src/shapes/Object/types/ControlProps.ts +0 -0
  2389. package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
  2390. package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
  2391. package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
  2392. package/src/shapes/Object/types/ObjectProps.ts +0 -0
  2393. package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
  2394. package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
  2395. package/src/shapes/Object/types/index.ts +0 -0
  2396. package/src/shapes/Path.spec.ts +0 -0
  2397. package/src/shapes/Path.ts +0 -0
  2398. package/src/shapes/Polygon.spec.ts +0 -0
  2399. package/src/shapes/Polygon.ts +0 -0
  2400. package/src/shapes/Polyline.spec.ts +0 -0
  2401. package/src/shapes/Polyline.ts +0 -0
  2402. package/src/shapes/Rect.spec.ts +0 -0
  2403. package/src/shapes/Rect.ts +0 -0
  2404. package/src/shapes/Text/StyledText.spec.ts +0 -0
  2405. package/src/shapes/Text/StyledText.ts +0 -0
  2406. package/src/shapes/Text/Text.spec.ts +0 -0
  2407. package/src/shapes/Text/Text.ts +2530 -2463
  2408. package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
  2409. package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
  2410. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
  2411. package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
  2412. package/src/shapes/Text/constants.ts +135 -135
  2413. package/src/shapes/Textbox.spec.ts +0 -0
  2414. package/src/shapes/Textbox.ts +1788 -1320
  2415. package/src/shapes/Triangle.spec.ts +0 -0
  2416. package/src/shapes/Triangle.ts +0 -0
  2417. package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
  2418. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
  2419. package/src/text/browserLines.ts +266 -234
  2420. package/src/text/ellipsis.ts +516 -516
  2421. package/src/text/hitTest.ts +623 -623
  2422. package/src/text/layout.ts +586 -586
  2423. package/src/text/measure.ts +626 -626
  2424. package/src/text/overlayEditor.ts +1108 -1047
  2425. package/src/text/unicode.ts +454 -454
  2426. package/src/typedefs.ts +0 -0
  2427. package/src/util/__snapshots__/index.spec.ts.snap +0 -0
  2428. package/src/util/animation/AnimationBase.ts +0 -0
  2429. package/src/util/animation/AnimationFrameProvider.ts +0 -0
  2430. package/src/util/animation/AnimationRegistry.ts +0 -0
  2431. package/src/util/animation/ArrayAnimation.ts +0 -0
  2432. package/src/util/animation/ColorAnimation.ts +0 -0
  2433. package/src/util/animation/ValueAnimation.ts +0 -0
  2434. package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
  2435. package/src/util/animation/animate.ts +0 -0
  2436. package/src/util/animation/animations.spec.ts +0 -0
  2437. package/src/util/animation/easing.ts +0 -0
  2438. package/src/util/animation/index.ts +0 -0
  2439. package/src/util/animation/types.ts +0 -0
  2440. package/src/util/applyMixins.ts +0 -0
  2441. package/src/util/dom_event.spec.ts +0 -0
  2442. package/src/util/dom_event.ts +0 -0
  2443. package/src/util/dom_misc.ts +0 -0
  2444. package/src/util/index.spec.ts +0 -0
  2445. package/src/util/index.ts +0 -0
  2446. package/src/util/internals/applyCanvasTransform.ts +0 -0
  2447. package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
  2448. package/src/util/internals/cleanupSvgAttribute.ts +0 -0
  2449. package/src/util/internals/cloneStyles.spec.ts +0 -0
  2450. package/src/util/internals/cloneStyles.ts +0 -0
  2451. package/src/util/internals/console.ts +0 -0
  2452. package/src/util/internals/dom_style.spec.ts +0 -0
  2453. package/src/util/internals/dom_style.ts +0 -0
  2454. package/src/util/internals/findRight.ts +0 -0
  2455. package/src/util/internals/getRandomInt.test.ts +0 -0
  2456. package/src/util/internals/getRandomInt.ts +0 -0
  2457. package/src/util/internals/ifNaN.ts +0 -0
  2458. package/src/util/internals/removeFromArray.spec.ts +0 -0
  2459. package/src/util/internals/removeFromArray.ts +0 -0
  2460. package/src/util/internals/uid.ts +0 -0
  2461. package/src/util/lang_string.spec.ts +0 -0
  2462. package/src/util/lang_string.ts +0 -0
  2463. package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
  2464. package/src/util/misc/boundingBoxFromPoints.ts +0 -0
  2465. package/src/util/misc/capValue.spec.ts +0 -0
  2466. package/src/util/misc/capValue.ts +0 -0
  2467. package/src/util/misc/cornerRadius.spec.ts +0 -0
  2468. package/src/util/misc/cornerRadius.ts +0 -0
  2469. package/src/util/misc/cos.spec.ts +0 -0
  2470. package/src/util/misc/cos.ts +0 -0
  2471. package/src/util/misc/dom.spec.ts +0 -0
  2472. package/src/util/misc/dom.ts +0 -0
  2473. package/src/util/misc/findScaleTo.spec.ts +0 -0
  2474. package/src/util/misc/findScaleTo.ts +0 -0
  2475. package/src/util/misc/groupSVGElements.spec.ts +0 -0
  2476. package/src/util/misc/groupSVGElements.ts +0 -0
  2477. package/src/util/misc/isTransparent.ts +0 -0
  2478. package/src/util/misc/matrix.spec.ts +0 -0
  2479. package/src/util/misc/matrix.ts +0 -0
  2480. package/src/util/misc/mergeClipPaths.spec.ts +0 -0
  2481. package/src/util/misc/mergeClipPaths.ts +0 -0
  2482. package/src/util/misc/objectEnlive.spec.ts +0 -0
  2483. package/src/util/misc/objectEnlive.ts +0 -0
  2484. package/src/util/misc/objectTransforms.spec.ts +0 -0
  2485. package/src/util/misc/objectTransforms.ts +0 -0
  2486. package/src/util/misc/pick.spec.ts +0 -0
  2487. package/src/util/misc/pick.ts +0 -0
  2488. package/src/util/misc/planeChange.spec.ts +0 -0
  2489. package/src/util/misc/planeChange.ts +0 -0
  2490. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
  2491. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
  2492. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
  2493. package/src/util/misc/projectStroke/index.ts +0 -0
  2494. package/src/util/misc/projectStroke/types.ts +0 -0
  2495. package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
  2496. package/src/util/misc/radiansDegreesConversion.ts +0 -0
  2497. package/src/util/misc/resolveOrigin.ts +0 -0
  2498. package/src/util/misc/sin.ts +0 -0
  2499. package/src/util/misc/svgExport.ts +0 -0
  2500. package/src/util/misc/svgParsing.spec.ts +0 -0
  2501. package/src/util/misc/svgParsing.ts +0 -0
  2502. package/src/util/misc/textStyles.ts +0 -0
  2503. package/src/util/misc/toFixed.spec.ts +0 -0
  2504. package/src/util/misc/toFixed.ts +0 -0
  2505. package/src/util/misc/vectors.spec.ts +0 -0
  2506. package/src/util/misc/vectors.ts +0 -0
  2507. package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
  2508. package/src/util/path/index.spec.ts +0 -0
  2509. package/src/util/path/index.ts +0 -0
  2510. package/src/util/path/regex.ts +0 -0
  2511. package/src/util/path/typechecks.ts +0 -0
  2512. package/src/util/path/typedefs.ts +0 -0
  2513. package/src/util/transform_matrix_removal.ts +0 -0
  2514. package/src/util/typeAssertions.spec.ts +0 -0
  2515. package/src/util/typeAssertions.ts +0 -0
  2516. package/tsconfig-extensions.json +0 -0
  2517. package/tsconfig.json +0 -0
  2518. package/tsconfig.spec.json +0 -0
  2519. package/typedoc.config.json +0 -0
  2520. package/vitest.config.ts +0 -0
  2521. package/vitest.d.ts +0 -0
  2522. package/vitest.env.d.ts +0 -0
  2523. package/vitest.extend.ts +0 -0
  2524. package/vitest.setup.ts +0 -0
  2525. package/dist/src/text/examples/arabicTextExample.d.ts +0 -60
  2526. package/dist/src/text/examples/arabicTextExample.d.ts.map +0 -1
  2527. package/dist/src/text/scriptUtils.d.ts +0 -142
  2528. package/dist/src/text/scriptUtils.d.ts.map +0 -1
  2529. package/dist/src/text/scriptUtils.min.mjs +0 -2
  2530. package/dist/src/text/scriptUtils.min.mjs.map +0 -1
  2531. package/dist/src/text/scriptUtils.mjs +0 -212
  2532. package/dist/src/text/scriptUtils.mjs.map +0 -1
  2533. package/dist-extensions/src/shapes/CustomLine.d.ts +0 -10
  2534. package/dist-extensions/src/shapes/CustomLine.d.ts.map +0 -1
  2535. package/dist-extensions/src/text/scriptUtils.d.ts +0 -142
  2536. package/dist-extensions/src/text/scriptUtils.d.ts.map +0 -1
  2537. package/fabric-test-editor.html +0 -3552
  2538. package/fabric-test2.html +0 -647
@@ -1 +1 @@
1
- {"version":3,"file":"browserLines.min.mjs","sources":["../../../src/text/browserLines.ts"],"sourcesContent":["/**\r\n * Browser Line Break Extraction\r\n * \r\n * Captures exact line breaks as rendered by the browser to ensure\r\n * pixel-perfect consistency between DOM editing and canvas rendering.\r\n */\r\n\r\nexport interface BrowserLine {\r\n text: string;\r\n start: number; // character index in original text\r\n end: number; // character index in original text (exclusive)\r\n}\r\n\r\nexport interface BrowserLinesResult {\r\n lines: BrowserLine[];\r\n totalWidth: number;\r\n totalHeight: number;\r\n}\r\n\r\n/**\r\n * Segment text into graphemes safely using Intl.Segmenter or fallback\r\n */\r\nfunction segmentIntoGraphemes(text: string): string[] {\r\n if (typeof Intl !== 'undefined' && Intl.Segmenter) {\r\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\r\n return Array.from(segmenter.segment(text), s => s.segment);\r\n }\r\n \r\n // Fallback: Use Array.from which handles basic Unicode correctly\r\n return Array.from(text);\r\n}\r\n\r\n/**\r\n * Extract line break information from a textarea by creating a mirror element\r\n * with identical computed styles and measuring grapheme positions.\r\n */\r\nexport function extractLinesFromDOM(textarea: HTMLTextAreaElement): BrowserLinesResult {\r\n const text = textarea.value;\r\n if (!text) {\r\n return {\r\n lines: [],\r\n totalWidth: 0,\r\n totalHeight: 0\r\n };\r\n }\r\n\r\n // Get computed styles from the textarea\r\n const computedStyle = getComputedStyle(textarea);\r\n const container = textarea.parentElement;\r\n if (!container) {\r\n throw new Error('Textarea must be in DOM to extract lines');\r\n }\r\n\r\n // Create mirror div with identical styling\r\n const mirror = document.createElement('div');\r\n mirror.style.position = 'absolute';\r\n mirror.style.left = '-9999px';\r\n mirror.style.top = '-9999px';\r\n mirror.style.visibility = 'hidden';\r\n mirror.style.pointerEvents = 'none';\r\n \r\n // Copy all relevant text styling\r\n const stylesToCopy = [\r\n 'fontSize',\r\n 'fontFamily',\r\n 'fontWeight',\r\n 'fontStyle',\r\n 'lineHeight',\r\n 'letterSpacing',\r\n 'wordSpacing',\r\n 'textAlign',\r\n 'textTransform',\r\n 'whiteSpace',\r\n 'overflowWrap',\r\n 'wordBreak',\r\n 'direction',\r\n 'unicodeBidi',\r\n 'width',\r\n 'height',\r\n 'maxWidth',\r\n 'maxHeight',\r\n 'minWidth',\r\n 'minHeight',\r\n 'padding',\r\n 'paddingTop',\r\n 'paddingRight',\r\n 'paddingBottom',\r\n 'paddingLeft',\r\n 'border',\r\n 'borderTop',\r\n 'borderRight',\r\n 'borderBottom',\r\n 'borderLeft',\r\n 'boxSizing',\r\n ];\r\n \r\n stylesToCopy.forEach(prop => {\r\n (mirror.style as any)[prop] = (computedStyle as any)[prop];\r\n });\r\n\r\n // Ensure the mirror has the same dimensions and overflow behavior as textarea\r\n mirror.style.overflow = 'hidden';\r\n mirror.style.resize = 'none';\r\n\r\n container.appendChild(mirror);\r\n\r\n try {\r\n // Segment text into graphemes\r\n const graphemes = segmentIntoGraphemes(text);\r\n const spans: HTMLSpanElement[] = [];\r\n \r\n // Create a span for each grapheme\r\n graphemes.forEach((grapheme, index) => {\r\n const span = document.createElement('span');\r\n span.textContent = grapheme;\r\n span.setAttribute('data-index', index.toString());\r\n mirror.appendChild(span);\r\n spans.push(span);\r\n });\r\n\r\n // Group spans by their offsetTop (line position)\r\n const lineGroups = new Map<number, { spans: HTMLSpanElement[], indices: number[] }>();\r\n \r\n spans.forEach((span, index) => {\r\n const top = span.offsetTop;\r\n if (!lineGroups.has(top)) {\r\n lineGroups.set(top, { spans: [], indices: [] });\r\n }\r\n lineGroups.get(top)!.spans.push(span);\r\n lineGroups.get(top)!.indices.push(index);\r\n });\r\n\r\n // Convert line groups to BrowserLine objects\r\n const lines: BrowserLine[] = [];\r\n const sortedTops = Array.from(lineGroups.keys()).sort((a, b) => a - b);\r\n \r\n sortedTops.forEach(top => {\r\n const group = lineGroups.get(top)!;\r\n const sortedIndices = group.indices.sort((a, b) => a - b);\r\n \r\n const start = sortedIndices[0];\r\n const end = sortedIndices[sortedIndices.length - 1] + 1;\r\n const lineText = graphemes.slice(start, end).join('');\r\n \r\n lines.push({\r\n text: lineText,\r\n start,\r\n end,\r\n });\r\n });\r\n\r\n // Calculate total dimensions\r\n const totalWidth = Math.max(...spans.map(span => span.offsetLeft + span.offsetWidth));\r\n const totalHeight = spans.length > 0 ? \r\n Math.max(...spans.map(span => span.offsetTop + span.offsetHeight)) : 0;\r\n\r\n return {\r\n lines,\r\n totalWidth,\r\n totalHeight\r\n };\r\n \r\n } finally {\r\n // Clean up mirror element\r\n container.removeChild(mirror);\r\n }\r\n}\r\n\r\n/**\r\n * Create a hash of layout-affecting properties to detect when browser lines are still valid\r\n */\r\nexport function createLayoutHash(target: any): string {\r\n const properties = [\r\n target.text,\r\n target.width,\r\n target.height,\r\n target.fontFamily,\r\n target.fontSize,\r\n target.fontWeight,\r\n target.fontStyle,\r\n target.lineHeight,\r\n target.charSpacing,\r\n target.textAlign,\r\n target.direction,\r\n ];\r\n \r\n return properties.map(p => String(p)).join('|');\r\n}\r\n\r\n/**\r\n * Check if stored browser lines are still valid for the current target state\r\n */\r\nexport function areBrowserLinesValid(target: any, storedHash?: string): boolean {\r\n if (!storedHash || !(target as any).__lastBrowserLines) {\r\n return false;\r\n }\r\n \r\n const currentHash = createLayoutHash(target);\r\n return currentHash === storedHash;\r\n}\r\n\r\n/**\r\n * Store browser lines on a target object with validity hash\r\n */\r\nexport function storeBrowserLines(\r\n target: any, \r\n lines: BrowserLine[], \r\n layoutHash?: string\r\n): void {\r\n (target as any).__lastBrowserLines = lines;\r\n (target as any).__lastBrowserLinesHash = layoutHash || createLayoutHash(target);\r\n}\r\n\r\n/**\r\n * Clear stored browser lines from a target object\r\n */\r\nexport function clearBrowserLines(target: any): void {\r\n delete (target as any).__lastBrowserLines;\r\n delete (target as any).__lastBrowserLinesHash;\r\n}\r\n\r\n/**\r\n * Get stored browser lines if they're still valid\r\n */\r\nexport function getBrowserLines(target: any): BrowserLine[] | null {\r\n const lines = (target as any).__lastBrowserLines;\r\n const hash = (target as any).__lastBrowserLinesHash;\r\n \r\n if (lines && areBrowserLinesValid(target, hash)) {\r\n return lines;\r\n }\r\n \r\n return null;\r\n}"],"names":["extractLinesFromDOM","textarea","text","value","lines","totalWidth","totalHeight","computedStyle","getComputedStyle","container","parentElement","Error","mirror","document","createElement","style","position","left","top","visibility","pointerEvents","forEach","prop","overflow","resize","appendChild","graphemes","Intl","Segmenter","segmenter","undefined","granularity","Array","from","segment","s","segmentIntoGraphemes","spans","grapheme","index","span","textContent","setAttribute","toString","push","lineGroups","Map","offsetTop","has","set","indices","get","keys","sort","a","b","sortedIndices","start","end","length","lineText","slice","join","Math","max","map","offsetLeft","offsetWidth","offsetHeight","removeChild","createLayoutHash","target","width","height","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","charSpacing","textAlign","direction","p","String","areBrowserLinesValid","storedHash","__lastBrowserLines","storeBrowserLines","layoutHash","__lastBrowserLinesHash","clearBrowserLines","getBrowserLines","hash"],"mappings":"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"}
1
+ {"version":3,"file":"browserLines.min.mjs","sources":["../../../src/text/browserLines.ts"],"sourcesContent":["/**\n * Browser Line Break Extraction\n *\n * Captures exact line breaks as rendered by the browser to ensure\n * pixel-perfect consistency between DOM editing and canvas rendering.\n */\n\nexport interface BrowserLine {\n text: string;\n start: number; // character index in original text\n end: number; // character index in original text (exclusive)\n}\n\nexport interface BrowserLinesResult {\n lines: BrowserLine[];\n totalWidth: number;\n totalHeight: number;\n width: number;\n}\n\n/**\n * Segment text into graphemes safely using Intl.Segmenter or fallback\n */\nfunction segmentIntoGraphemes(text: string): string[] {\n if (typeof Intl !== 'undefined' && Intl.Segmenter) {\n const segmenter = new Intl.Segmenter(undefined, {\n granularity: 'grapheme',\n });\n return Array.from(segmenter.segment(text), (s) => s.segment);\n }\n\n // Fallback: Use Array.from which handles basic Unicode correctly\n return Array.from(text);\n}\n\n/**\n * Extract line break information from a textarea by creating a mirror element\n * with identical computed styles and measuring grapheme positions.\n */\nexport function extractLinesFromDOM(\n textarea: HTMLTextAreaElement,\n): BrowserLinesResult {\n const text = textarea.value;\n if (!text) {\n return {\n lines: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n };\n }\n\n // Get computed styles from the textarea\n const computedStyle = getComputedStyle(textarea);\n const container = textarea.parentElement;\n if (!container) {\n throw new Error('Textarea must be in DOM to extract lines');\n }\n\n // Create mirror div with identical styling\n const mirror = document.createElement('div');\n mirror.style.position = 'absolute';\n mirror.style.left = '-9999px';\n mirror.style.top = '-9999px';\n mirror.style.visibility = 'hidden';\n mirror.style.pointerEvents = 'none';\n\n // Copy all relevant text styling\n const stylesToCopy = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'lineHeight',\n 'letterSpacing',\n 'wordSpacing',\n 'textAlign',\n 'textTransform',\n 'whiteSpace',\n 'overflowWrap',\n 'wordBreak',\n 'direction',\n 'unicodeBidi',\n 'width',\n 'height',\n 'maxWidth',\n 'maxHeight',\n 'minWidth',\n 'minHeight',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'border',\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n 'boxSizing',\n ];\n\n stylesToCopy.forEach((prop) => {\n (mirror.style as any)[prop] = (computedStyle as any)[prop];\n });\n\n // Ensure the mirror has the same dimensions and overflow behavior as textarea\n mirror.style.overflow = 'hidden';\n mirror.style.resize = 'none';\n\n container.appendChild(mirror);\n // capture the width the browser is using for layout\n const width = mirror.clientWidth;\n\n try {\n // Segment text into graphemes\n const graphemes = segmentIntoGraphemes(text);\n const spans: HTMLSpanElement[] = [];\n\n // Create a span for each grapheme\n graphemes.forEach((grapheme, index) => {\n const span = document.createElement('span');\n span.textContent = grapheme;\n span.setAttribute('data-index', index.toString());\n mirror.appendChild(span);\n spans.push(span);\n });\n\n // Group spans by their offsetTop (line position)\n const lineGroups = new Map<\n number,\n { spans: HTMLSpanElement[]; indices: number[] }\n >();\n\n spans.forEach((span, index) => {\n const top = span.offsetTop;\n if (!lineGroups.has(top)) {\n lineGroups.set(top, { spans: [], indices: [] });\n }\n lineGroups.get(top)!.spans.push(span);\n lineGroups.get(top)!.indices.push(index);\n });\n\n // Convert line groups to BrowserLine objects\n const lines: BrowserLine[] = [];\n const sortedTops = Array.from(lineGroups.keys()).sort((a, b) => a - b);\n\n sortedTops.forEach((top) => {\n const group = lineGroups.get(top)!;\n const sortedIndices = group.indices.sort((a, b) => a - b);\n\n const start = sortedIndices[0];\n const end = sortedIndices[sortedIndices.length - 1] + 1;\n const lineText = graphemes.slice(start, end).join('');\n\n lines.push({\n text: lineText,\n start,\n end,\n });\n });\n\n // Calculate total dimensions\n const totalWidth = Math.max(\n ...spans.map((span) => span.offsetLeft + span.offsetWidth),\n );\n const totalHeight =\n spans.length > 0\n ? Math.max(...spans.map((span) => span.offsetTop + span.offsetHeight))\n : 0;\n\n return {\n lines,\n totalWidth,\n totalHeight,\n width,\n };\n } finally {\n // Clean up mirror element\n container.removeChild(mirror);\n }\n}\n\n/**\n * Create a hash of layout-affecting properties to detect when browser lines are still valid\n */\nexport function createLayoutHash(target: any): string {\n const properties = [\n target.text,\n target.width,\n target.height,\n target.fontFamily,\n target.fontSize,\n target.fontWeight,\n target.fontStyle,\n target.lineHeight,\n target.charSpacing,\n target.textAlign,\n target.direction,\n ];\n\n return properties.map((p) => String(p)).join('|');\n}\n\n/**\n * Check if stored browser lines are still valid for the current target state\n */\nexport function areBrowserLinesValid(\n target: any,\n storedHash?: string,\n): boolean {\n if (!storedHash || !(target as any).__lastBrowserLines) {\n return false;\n }\n\n const currentHash = createLayoutHash(target);\n return currentHash === storedHash;\n}\n\nexport type StoredBrowserLines = {\n lines: BrowserLine[];\n width?: number;\n};\n\n/**\n * Store browser lines on a target object with validity hash\n */\nexport function storeBrowserLines(\n target: any,\n lines: BrowserLine[],\n width?: number,\n layoutHash?: string,\n): void {\n (target as any).__lastBrowserLines = lines;\n (target as any).__lastBrowserLinesWidth = width;\n (target as any).__lastBrowserLinesHash =\n layoutHash || createLayoutHash(target);\n}\n\n/**\n * Clear stored browser lines from a target object\n */\nexport function clearBrowserLines(target: any): void {\n delete (target as any).__lastBrowserLines;\n delete (target as any).__lastBrowserLinesHash;\n delete (target as any).__lastBrowserLinesWidth;\n}\n\n/**\n * Get stored browser lines if they're still valid\n */\nexport function getBrowserLines(target: any): BrowserLinesResult | null {\n const lines = (target as any).__lastBrowserLines;\n const hash = (target as any).__lastBrowserLinesHash;\n\n if (lines && areBrowserLinesValid(target, hash)) {\n return {\n lines,\n totalWidth: 0,\n totalHeight: 0,\n width: (target as any).__lastBrowserLinesWidth,\n };\n }\n\n return null;\n}\n"],"names":["extractLinesFromDOM","textarea","text","value","lines","totalWidth","totalHeight","width","computedStyle","getComputedStyle","container","parentElement","Error","mirror","document","createElement","style","position","left","top","visibility","pointerEvents","forEach","prop","overflow","resize","appendChild","clientWidth","graphemes","Intl","Segmenter","segmenter","undefined","granularity","Array","from","segment","s","segmentIntoGraphemes","spans","grapheme","index","span","textContent","setAttribute","toString","push","lineGroups","Map","offsetTop","has","set","indices","get","keys","sort","a","b","sortedIndices","start","end","length","lineText","slice","join","Math","max","map","offsetLeft","offsetWidth","offsetHeight","removeChild","createLayoutHash","target","height","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","charSpacing","textAlign","direction","p","String","areBrowserLinesValid","storedHash","__lastBrowserLines","storeBrowserLines","layoutHash","__lastBrowserLinesWidth","__lastBrowserLinesHash","clearBrowserLines","getBrowserLines","hash"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- /**
2
- * Browser Line Break Extraction
3
- *
4
- * Captures exact line breaks as rendered by the browser to ensure
5
- * pixel-perfect consistency between DOM editing and canvas rendering.
1
+ /**
2
+ * Browser Line Break Extraction
3
+ *
4
+ * Captures exact line breaks as rendered by the browser to ensure
5
+ * pixel-perfect consistency between DOM editing and canvas rendering.
6
6
  */
7
7
 
8
- /**
9
- * Segment text into graphemes safely using Intl.Segmenter or fallback
8
+ /**
9
+ * Segment text into graphemes safely using Intl.Segmenter or fallback
10
10
  */
11
11
  function segmentIntoGraphemes(text) {
12
12
  if (typeof Intl !== 'undefined' && Intl.Segmenter) {
@@ -20,9 +20,9 @@ function segmentIntoGraphemes(text) {
20
20
  return Array.from(text);
21
21
  }
22
22
 
23
- /**
24
- * Extract line break information from a textarea by creating a mirror element
25
- * with identical computed styles and measuring grapheme positions.
23
+ /**
24
+ * Extract line break information from a textarea by creating a mirror element
25
+ * with identical computed styles and measuring grapheme positions.
26
26
  */
27
27
  function extractLinesFromDOM(textarea) {
28
28
  const text = textarea.value;
@@ -30,7 +30,8 @@ function extractLinesFromDOM(textarea) {
30
30
  return {
31
31
  lines: [],
32
32
  totalWidth: 0,
33
- totalHeight: 0
33
+ totalHeight: 0,
34
+ width: 0
34
35
  };
35
36
  }
36
37
 
@@ -59,6 +60,8 @@ function extractLinesFromDOM(textarea) {
59
60
  mirror.style.overflow = 'hidden';
60
61
  mirror.style.resize = 'none';
61
62
  container.appendChild(mirror);
63
+ // capture the width the browser is using for layout
64
+ const width = mirror.clientWidth;
62
65
  try {
63
66
  // Segment text into graphemes
64
67
  const graphemes = segmentIntoGraphemes(text);
@@ -109,7 +112,8 @@ function extractLinesFromDOM(textarea) {
109
112
  return {
110
113
  lines,
111
114
  totalWidth,
112
- totalHeight
115
+ totalHeight,
116
+ width
113
117
  };
114
118
  } finally {
115
119
  // Clean up mirror element
@@ -117,16 +121,16 @@ function extractLinesFromDOM(textarea) {
117
121
  }
118
122
  }
119
123
 
120
- /**
121
- * Create a hash of layout-affecting properties to detect when browser lines are still valid
124
+ /**
125
+ * Create a hash of layout-affecting properties to detect when browser lines are still valid
122
126
  */
123
127
  function createLayoutHash(target) {
124
128
  const properties = [target.text, target.width, target.height, target.fontFamily, target.fontSize, target.fontWeight, target.fontStyle, target.lineHeight, target.charSpacing, target.textAlign, target.direction];
125
129
  return properties.map(p => String(p)).join('|');
126
130
  }
127
131
 
128
- /**
129
- * Check if stored browser lines are still valid for the current target state
132
+ /**
133
+ * Check if stored browser lines are still valid for the current target state
130
134
  */
131
135
  function areBrowserLinesValid(target, storedHash) {
132
136
  if (!storedHash || !target.__lastBrowserLines) {
@@ -135,31 +139,37 @@ function areBrowserLinesValid(target, storedHash) {
135
139
  const currentHash = createLayoutHash(target);
136
140
  return currentHash === storedHash;
137
141
  }
138
-
139
- /**
140
- * Store browser lines on a target object with validity hash
142
+ /**
143
+ * Store browser lines on a target object with validity hash
141
144
  */
142
- function storeBrowserLines(target, lines, layoutHash) {
145
+ function storeBrowserLines(target, lines, width, layoutHash) {
143
146
  target.__lastBrowserLines = lines;
147
+ target.__lastBrowserLinesWidth = width;
144
148
  target.__lastBrowserLinesHash = createLayoutHash(target);
145
149
  }
146
150
 
147
- /**
148
- * Clear stored browser lines from a target object
151
+ /**
152
+ * Clear stored browser lines from a target object
149
153
  */
150
154
  function clearBrowserLines(target) {
151
155
  delete target.__lastBrowserLines;
152
156
  delete target.__lastBrowserLinesHash;
157
+ delete target.__lastBrowserLinesWidth;
153
158
  }
154
159
 
155
- /**
156
- * Get stored browser lines if they're still valid
160
+ /**
161
+ * Get stored browser lines if they're still valid
157
162
  */
158
163
  function getBrowserLines(target) {
159
164
  const lines = target.__lastBrowserLines;
160
165
  const hash = target.__lastBrowserLinesHash;
161
166
  if (lines && areBrowserLinesValid(target, hash)) {
162
- return lines;
167
+ return {
168
+ lines,
169
+ totalWidth: 0,
170
+ totalHeight: 0,
171
+ width: target.__lastBrowserLinesWidth
172
+ };
163
173
  }
164
174
  return null;
165
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browserLines.mjs","sources":["../../../src/text/browserLines.ts"],"sourcesContent":["/**\r\n * Browser Line Break Extraction\r\n * \r\n * Captures exact line breaks as rendered by the browser to ensure\r\n * pixel-perfect consistency between DOM editing and canvas rendering.\r\n */\r\n\r\nexport interface BrowserLine {\r\n text: string;\r\n start: number; // character index in original text\r\n end: number; // character index in original text (exclusive)\r\n}\r\n\r\nexport interface BrowserLinesResult {\r\n lines: BrowserLine[];\r\n totalWidth: number;\r\n totalHeight: number;\r\n}\r\n\r\n/**\r\n * Segment text into graphemes safely using Intl.Segmenter or fallback\r\n */\r\nfunction segmentIntoGraphemes(text: string): string[] {\r\n if (typeof Intl !== 'undefined' && Intl.Segmenter) {\r\n const segmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });\r\n return Array.from(segmenter.segment(text), s => s.segment);\r\n }\r\n \r\n // Fallback: Use Array.from which handles basic Unicode correctly\r\n return Array.from(text);\r\n}\r\n\r\n/**\r\n * Extract line break information from a textarea by creating a mirror element\r\n * with identical computed styles and measuring grapheme positions.\r\n */\r\nexport function extractLinesFromDOM(textarea: HTMLTextAreaElement): BrowserLinesResult {\r\n const text = textarea.value;\r\n if (!text) {\r\n return {\r\n lines: [],\r\n totalWidth: 0,\r\n totalHeight: 0\r\n };\r\n }\r\n\r\n // Get computed styles from the textarea\r\n const computedStyle = getComputedStyle(textarea);\r\n const container = textarea.parentElement;\r\n if (!container) {\r\n throw new Error('Textarea must be in DOM to extract lines');\r\n }\r\n\r\n // Create mirror div with identical styling\r\n const mirror = document.createElement('div');\r\n mirror.style.position = 'absolute';\r\n mirror.style.left = '-9999px';\r\n mirror.style.top = '-9999px';\r\n mirror.style.visibility = 'hidden';\r\n mirror.style.pointerEvents = 'none';\r\n \r\n // Copy all relevant text styling\r\n const stylesToCopy = [\r\n 'fontSize',\r\n 'fontFamily',\r\n 'fontWeight',\r\n 'fontStyle',\r\n 'lineHeight',\r\n 'letterSpacing',\r\n 'wordSpacing',\r\n 'textAlign',\r\n 'textTransform',\r\n 'whiteSpace',\r\n 'overflowWrap',\r\n 'wordBreak',\r\n 'direction',\r\n 'unicodeBidi',\r\n 'width',\r\n 'height',\r\n 'maxWidth',\r\n 'maxHeight',\r\n 'minWidth',\r\n 'minHeight',\r\n 'padding',\r\n 'paddingTop',\r\n 'paddingRight',\r\n 'paddingBottom',\r\n 'paddingLeft',\r\n 'border',\r\n 'borderTop',\r\n 'borderRight',\r\n 'borderBottom',\r\n 'borderLeft',\r\n 'boxSizing',\r\n ];\r\n \r\n stylesToCopy.forEach(prop => {\r\n (mirror.style as any)[prop] = (computedStyle as any)[prop];\r\n });\r\n\r\n // Ensure the mirror has the same dimensions and overflow behavior as textarea\r\n mirror.style.overflow = 'hidden';\r\n mirror.style.resize = 'none';\r\n\r\n container.appendChild(mirror);\r\n\r\n try {\r\n // Segment text into graphemes\r\n const graphemes = segmentIntoGraphemes(text);\r\n const spans: HTMLSpanElement[] = [];\r\n \r\n // Create a span for each grapheme\r\n graphemes.forEach((grapheme, index) => {\r\n const span = document.createElement('span');\r\n span.textContent = grapheme;\r\n span.setAttribute('data-index', index.toString());\r\n mirror.appendChild(span);\r\n spans.push(span);\r\n });\r\n\r\n // Group spans by their offsetTop (line position)\r\n const lineGroups = new Map<number, { spans: HTMLSpanElement[], indices: number[] }>();\r\n \r\n spans.forEach((span, index) => {\r\n const top = span.offsetTop;\r\n if (!lineGroups.has(top)) {\r\n lineGroups.set(top, { spans: [], indices: [] });\r\n }\r\n lineGroups.get(top)!.spans.push(span);\r\n lineGroups.get(top)!.indices.push(index);\r\n });\r\n\r\n // Convert line groups to BrowserLine objects\r\n const lines: BrowserLine[] = [];\r\n const sortedTops = Array.from(lineGroups.keys()).sort((a, b) => a - b);\r\n \r\n sortedTops.forEach(top => {\r\n const group = lineGroups.get(top)!;\r\n const sortedIndices = group.indices.sort((a, b) => a - b);\r\n \r\n const start = sortedIndices[0];\r\n const end = sortedIndices[sortedIndices.length - 1] + 1;\r\n const lineText = graphemes.slice(start, end).join('');\r\n \r\n lines.push({\r\n text: lineText,\r\n start,\r\n end,\r\n });\r\n });\r\n\r\n // Calculate total dimensions\r\n const totalWidth = Math.max(...spans.map(span => span.offsetLeft + span.offsetWidth));\r\n const totalHeight = spans.length > 0 ? \r\n Math.max(...spans.map(span => span.offsetTop + span.offsetHeight)) : 0;\r\n\r\n return {\r\n lines,\r\n totalWidth,\r\n totalHeight\r\n };\r\n \r\n } finally {\r\n // Clean up mirror element\r\n container.removeChild(mirror);\r\n }\r\n}\r\n\r\n/**\r\n * Create a hash of layout-affecting properties to detect when browser lines are still valid\r\n */\r\nexport function createLayoutHash(target: any): string {\r\n const properties = [\r\n target.text,\r\n target.width,\r\n target.height,\r\n target.fontFamily,\r\n target.fontSize,\r\n target.fontWeight,\r\n target.fontStyle,\r\n target.lineHeight,\r\n target.charSpacing,\r\n target.textAlign,\r\n target.direction,\r\n ];\r\n \r\n return properties.map(p => String(p)).join('|');\r\n}\r\n\r\n/**\r\n * Check if stored browser lines are still valid for the current target state\r\n */\r\nexport function areBrowserLinesValid(target: any, storedHash?: string): boolean {\r\n if (!storedHash || !(target as any).__lastBrowserLines) {\r\n return false;\r\n }\r\n \r\n const currentHash = createLayoutHash(target);\r\n return currentHash === storedHash;\r\n}\r\n\r\n/**\r\n * Store browser lines on a target object with validity hash\r\n */\r\nexport function storeBrowserLines(\r\n target: any, \r\n lines: BrowserLine[], \r\n layoutHash?: string\r\n): void {\r\n (target as any).__lastBrowserLines = lines;\r\n (target as any).__lastBrowserLinesHash = layoutHash || createLayoutHash(target);\r\n}\r\n\r\n/**\r\n * Clear stored browser lines from a target object\r\n */\r\nexport function clearBrowserLines(target: any): void {\r\n delete (target as any).__lastBrowserLines;\r\n delete (target as any).__lastBrowserLinesHash;\r\n}\r\n\r\n/**\r\n * Get stored browser lines if they're still valid\r\n */\r\nexport function getBrowserLines(target: any): BrowserLine[] | null {\r\n const lines = (target as any).__lastBrowserLines;\r\n const hash = (target as any).__lastBrowserLinesHash;\r\n \r\n if (lines && areBrowserLinesValid(target, hash)) {\r\n return lines;\r\n }\r\n \r\n return null;\r\n}"],"names":["segmentIntoGraphemes","text","Intl","Segmenter","segmenter","undefined","granularity","Array","from","segment","s","extractLinesFromDOM","textarea","value","lines","totalWidth","totalHeight","computedStyle","getComputedStyle","container","parentElement","Error","mirror","document","createElement","style","position","left","top","visibility","pointerEvents","stylesToCopy","forEach","prop","overflow","resize","appendChild","graphemes","spans","grapheme","index","span","textContent","setAttribute","toString","push","lineGroups","Map","offsetTop","has","set","indices","get","sortedTops","keys","sort","a","b","group","sortedIndices","start","end","length","lineText","slice","join","Math","max","map","offsetLeft","offsetWidth","offsetHeight","removeChild","createLayoutHash","target","properties","width","height","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","charSpacing","textAlign","direction","p","String","areBrowserLinesValid","storedHash","__lastBrowserLines","currentHash","storeBrowserLines","layoutHash","__lastBrowserLinesHash","clearBrowserLines","getBrowserLines","hash"],"mappings":"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"}
1
+ {"version":3,"file":"browserLines.mjs","sources":["../../../src/text/browserLines.ts"],"sourcesContent":["/**\n * Browser Line Break Extraction\n *\n * Captures exact line breaks as rendered by the browser to ensure\n * pixel-perfect consistency between DOM editing and canvas rendering.\n */\n\nexport interface BrowserLine {\n text: string;\n start: number; // character index in original text\n end: number; // character index in original text (exclusive)\n}\n\nexport interface BrowserLinesResult {\n lines: BrowserLine[];\n totalWidth: number;\n totalHeight: number;\n width: number;\n}\n\n/**\n * Segment text into graphemes safely using Intl.Segmenter or fallback\n */\nfunction segmentIntoGraphemes(text: string): string[] {\n if (typeof Intl !== 'undefined' && Intl.Segmenter) {\n const segmenter = new Intl.Segmenter(undefined, {\n granularity: 'grapheme',\n });\n return Array.from(segmenter.segment(text), (s) => s.segment);\n }\n\n // Fallback: Use Array.from which handles basic Unicode correctly\n return Array.from(text);\n}\n\n/**\n * Extract line break information from a textarea by creating a mirror element\n * with identical computed styles and measuring grapheme positions.\n */\nexport function extractLinesFromDOM(\n textarea: HTMLTextAreaElement,\n): BrowserLinesResult {\n const text = textarea.value;\n if (!text) {\n return {\n lines: [],\n totalWidth: 0,\n totalHeight: 0,\n width: 0,\n };\n }\n\n // Get computed styles from the textarea\n const computedStyle = getComputedStyle(textarea);\n const container = textarea.parentElement;\n if (!container) {\n throw new Error('Textarea must be in DOM to extract lines');\n }\n\n // Create mirror div with identical styling\n const mirror = document.createElement('div');\n mirror.style.position = 'absolute';\n mirror.style.left = '-9999px';\n mirror.style.top = '-9999px';\n mirror.style.visibility = 'hidden';\n mirror.style.pointerEvents = 'none';\n\n // Copy all relevant text styling\n const stylesToCopy = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'lineHeight',\n 'letterSpacing',\n 'wordSpacing',\n 'textAlign',\n 'textTransform',\n 'whiteSpace',\n 'overflowWrap',\n 'wordBreak',\n 'direction',\n 'unicodeBidi',\n 'width',\n 'height',\n 'maxWidth',\n 'maxHeight',\n 'minWidth',\n 'minHeight',\n 'padding',\n 'paddingTop',\n 'paddingRight',\n 'paddingBottom',\n 'paddingLeft',\n 'border',\n 'borderTop',\n 'borderRight',\n 'borderBottom',\n 'borderLeft',\n 'boxSizing',\n ];\n\n stylesToCopy.forEach((prop) => {\n (mirror.style as any)[prop] = (computedStyle as any)[prop];\n });\n\n // Ensure the mirror has the same dimensions and overflow behavior as textarea\n mirror.style.overflow = 'hidden';\n mirror.style.resize = 'none';\n\n container.appendChild(mirror);\n // capture the width the browser is using for layout\n const width = mirror.clientWidth;\n\n try {\n // Segment text into graphemes\n const graphemes = segmentIntoGraphemes(text);\n const spans: HTMLSpanElement[] = [];\n\n // Create a span for each grapheme\n graphemes.forEach((grapheme, index) => {\n const span = document.createElement('span');\n span.textContent = grapheme;\n span.setAttribute('data-index', index.toString());\n mirror.appendChild(span);\n spans.push(span);\n });\n\n // Group spans by their offsetTop (line position)\n const lineGroups = new Map<\n number,\n { spans: HTMLSpanElement[]; indices: number[] }\n >();\n\n spans.forEach((span, index) => {\n const top = span.offsetTop;\n if (!lineGroups.has(top)) {\n lineGroups.set(top, { spans: [], indices: [] });\n }\n lineGroups.get(top)!.spans.push(span);\n lineGroups.get(top)!.indices.push(index);\n });\n\n // Convert line groups to BrowserLine objects\n const lines: BrowserLine[] = [];\n const sortedTops = Array.from(lineGroups.keys()).sort((a, b) => a - b);\n\n sortedTops.forEach((top) => {\n const group = lineGroups.get(top)!;\n const sortedIndices = group.indices.sort((a, b) => a - b);\n\n const start = sortedIndices[0];\n const end = sortedIndices[sortedIndices.length - 1] + 1;\n const lineText = graphemes.slice(start, end).join('');\n\n lines.push({\n text: lineText,\n start,\n end,\n });\n });\n\n // Calculate total dimensions\n const totalWidth = Math.max(\n ...spans.map((span) => span.offsetLeft + span.offsetWidth),\n );\n const totalHeight =\n spans.length > 0\n ? Math.max(...spans.map((span) => span.offsetTop + span.offsetHeight))\n : 0;\n\n return {\n lines,\n totalWidth,\n totalHeight,\n width,\n };\n } finally {\n // Clean up mirror element\n container.removeChild(mirror);\n }\n}\n\n/**\n * Create a hash of layout-affecting properties to detect when browser lines are still valid\n */\nexport function createLayoutHash(target: any): string {\n const properties = [\n target.text,\n target.width,\n target.height,\n target.fontFamily,\n target.fontSize,\n target.fontWeight,\n target.fontStyle,\n target.lineHeight,\n target.charSpacing,\n target.textAlign,\n target.direction,\n ];\n\n return properties.map((p) => String(p)).join('|');\n}\n\n/**\n * Check if stored browser lines are still valid for the current target state\n */\nexport function areBrowserLinesValid(\n target: any,\n storedHash?: string,\n): boolean {\n if (!storedHash || !(target as any).__lastBrowserLines) {\n return false;\n }\n\n const currentHash = createLayoutHash(target);\n return currentHash === storedHash;\n}\n\nexport type StoredBrowserLines = {\n lines: BrowserLine[];\n width?: number;\n};\n\n/**\n * Store browser lines on a target object with validity hash\n */\nexport function storeBrowserLines(\n target: any,\n lines: BrowserLine[],\n width?: number,\n layoutHash?: string,\n): void {\n (target as any).__lastBrowserLines = lines;\n (target as any).__lastBrowserLinesWidth = width;\n (target as any).__lastBrowserLinesHash =\n layoutHash || createLayoutHash(target);\n}\n\n/**\n * Clear stored browser lines from a target object\n */\nexport function clearBrowserLines(target: any): void {\n delete (target as any).__lastBrowserLines;\n delete (target as any).__lastBrowserLinesHash;\n delete (target as any).__lastBrowserLinesWidth;\n}\n\n/**\n * Get stored browser lines if they're still valid\n */\nexport function getBrowserLines(target: any): BrowserLinesResult | null {\n const lines = (target as any).__lastBrowserLines;\n const hash = (target as any).__lastBrowserLinesHash;\n\n if (lines && areBrowserLinesValid(target, hash)) {\n return {\n lines,\n totalWidth: 0,\n totalHeight: 0,\n width: (target as any).__lastBrowserLinesWidth,\n };\n }\n\n return null;\n}\n"],"names":["segmentIntoGraphemes","text","Intl","Segmenter","segmenter","undefined","granularity","Array","from","segment","s","extractLinesFromDOM","textarea","value","lines","totalWidth","totalHeight","width","computedStyle","getComputedStyle","container","parentElement","Error","mirror","document","createElement","style","position","left","top","visibility","pointerEvents","stylesToCopy","forEach","prop","overflow","resize","appendChild","clientWidth","graphemes","spans","grapheme","index","span","textContent","setAttribute","toString","push","lineGroups","Map","offsetTop","has","set","indices","get","sortedTops","keys","sort","a","b","group","sortedIndices","start","end","length","lineText","slice","join","Math","max","map","offsetLeft","offsetWidth","offsetHeight","removeChild","createLayoutHash","target","properties","height","fontFamily","fontSize","fontWeight","fontStyle","lineHeight","charSpacing","textAlign","direction","p","String","areBrowserLinesValid","storedHash","__lastBrowserLines","currentHash","storeBrowserLines","layoutHash","__lastBrowserLinesWidth","__lastBrowserLinesHash","clearBrowserLines","getBrowserLines","hash"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;;AAeA;AACA;AACA;AACA,SAASA,oBAAoBA,CAACC,IAAY,EAAY;EACpD,IAAI,OAAOC,IAAI,KAAK,WAAW,IAAIA,IAAI,CAACC,SAAS,EAAE;IACjD,MAAMC,SAAS,GAAG,IAAIF,IAAI,CAACC,SAAS,CAACE,SAAS,EAAE;AAC9CC,MAAAA,WAAW,EAAE;AACf,KAAC,CAAC;AACF,IAAA,OAAOC,KAAK,CAACC,IAAI,CAACJ,SAAS,CAACK,OAAO,CAACR,IAAI,CAAC,EAAGS,CAAC,IAAKA,CAAC,CAACD,OAAO,CAAC;AAC9D,EAAA;;AAEA;AACA,EAAA,OAAOF,KAAK,CAACC,IAAI,CAACP,IAAI,CAAC;AACzB;;AAEA;AACA;AACA;AACA;AACO,SAASU,mBAAmBA,CACjCC,QAA6B,EACT;AACpB,EAAA,MAAMX,IAAI,GAAGW,QAAQ,CAACC,KAAK;EAC3B,IAAI,CAACZ,IAAI,EAAE;IACT,OAAO;AACLa,MAAAA,KAAK,EAAE,EAAE;AACTC,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,WAAW,EAAE,CAAC;AACdC,MAAAA,KAAK,EAAE;KACR;AACH,EAAA;;AAEA;AACA,EAAA,MAAMC,aAAa,GAAGC,gBAAgB,CAACP,QAAQ,CAAC;AAChD,EAAA,MAAMQ,SAAS,GAAGR,QAAQ,CAACS,aAAa;EACxC,IAAI,CAACD,SAAS,EAAE;AACd,IAAA,MAAM,IAAIE,KAAK,CAAC,0CAA0C,CAAC;AAC7D,EAAA;;AAEA;AACA,EAAA,MAAMC,MAAM,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC;AAC5CF,EAAAA,MAAM,CAACG,KAAK,CAACC,QAAQ,GAAG,UAAU;AAClCJ,EAAAA,MAAM,CAACG,KAAK,CAACE,IAAI,GAAG,SAAS;AAC7BL,EAAAA,MAAM,CAACG,KAAK,CAACG,GAAG,GAAG,SAAS;AAC5BN,EAAAA,MAAM,CAACG,KAAK,CAACI,UAAU,GAAG,QAAQ;AAClCP,EAAAA,MAAM,CAACG,KAAK,CAACK,aAAa,GAAG,MAAM;;AAEnC;AACA,EAAA,MAAMC,YAAY,GAAG,CACnB,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,eAAe,EACf,aAAa,EACb,WAAW,EACX,eAAe,EACf,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,cAAc,EACd,eAAe,EACf,aAAa,EACb,QAAQ,EACR,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,WAAW,CACZ;AAEDA,EAAAA,YAAY,CAACC,OAAO,CAAEC,IAAI,IAAK;IAC5BX,MAAM,CAACG,KAAK,CAASQ,IAAI,CAAC,GAAIhB,aAAa,CAASgB,IAAI,CAAC;AAC5D,EAAA,CAAC,CAAC;;AAEF;AACAX,EAAAA,MAAM,CAACG,KAAK,CAACS,QAAQ,GAAG,QAAQ;AAChCZ,EAAAA,MAAM,CAACG,KAAK,CAACU,MAAM,GAAG,MAAM;AAE5BhB,EAAAA,SAAS,CAACiB,WAAW,CAACd,MAAM,CAAC;AAC7B;AACA,EAAA,MAAMN,KAAK,GAAGM,MAAM,CAACe,WAAW;EAEhC,IAAI;AACF;AACA,IAAA,MAAMC,SAAS,GAAGvC,oBAAoB,CAACC,IAAI,CAAC;IAC5C,MAAMuC,KAAwB,GAAG,EAAE;;AAEnC;AACAD,IAAAA,SAAS,CAACN,OAAO,CAAC,CAACQ,QAAQ,EAAEC,KAAK,KAAK;AACrC,MAAA,MAAMC,IAAI,GAAGnB,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;MAC3CkB,IAAI,CAACC,WAAW,GAAGH,QAAQ;MAC3BE,IAAI,CAACE,YAAY,CAAC,YAAY,EAAEH,KAAK,CAACI,QAAQ,EAAE,CAAC;AACjDvB,MAAAA,MAAM,CAACc,WAAW,CAACM,IAAI,CAAC;AACxBH,MAAAA,KAAK,CAACO,IAAI,CAACJ,IAAI,CAAC;AAClB,IAAA,CAAC,CAAC;;AAEF;AACA,IAAA,MAAMK,UAAU,GAAG,IAAIC,GAAG,EAGvB;AAEHT,IAAAA,KAAK,CAACP,OAAO,CAAC,CAACU,IAAI,EAAED,KAAK,KAAK;AAC7B,MAAA,MAAMb,GAAG,GAAGc,IAAI,CAACO,SAAS;AAC1B,MAAA,IAAI,CAACF,UAAU,CAACG,GAAG,CAACtB,GAAG,CAAC,EAAE;AACxBmB,QAAAA,UAAU,CAACI,GAAG,CAACvB,GAAG,EAAE;AAAEW,UAAAA,KAAK,EAAE,EAAE;AAAEa,UAAAA,OAAO,EAAE;AAAG,SAAC,CAAC;AACjD,MAAA;MACAL,UAAU,CAACM,GAAG,CAACzB,GAAG,CAAC,CAAEW,KAAK,CAACO,IAAI,CAACJ,IAAI,CAAC;MACrCK,UAAU,CAACM,GAAG,CAACzB,GAAG,CAAC,CAAEwB,OAAO,CAACN,IAAI,CAACL,KAAK,CAAC;AAC1C,IAAA,CAAC,CAAC;;AAEF;IACA,MAAM5B,KAAoB,GAAG,EAAE;IAC/B,MAAMyC,UAAU,GAAGhD,KAAK,CAACC,IAAI,CAACwC,UAAU,CAACQ,IAAI,EAAE,CAAC,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;AAEtEJ,IAAAA,UAAU,CAACtB,OAAO,CAAEJ,GAAG,IAAK;AAC1B,MAAA,MAAM+B,KAAK,GAAGZ,UAAU,CAACM,GAAG,CAACzB,GAAG,CAAE;AAClC,MAAA,MAAMgC,aAAa,GAAGD,KAAK,CAACP,OAAO,CAACI,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;AAEzD,MAAA,MAAMG,KAAK,GAAGD,aAAa,CAAC,CAAC,CAAC;MAC9B,MAAME,GAAG,GAAGF,aAAa,CAACA,aAAa,CAACG,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;AACvD,MAAA,MAAMC,QAAQ,GAAG1B,SAAS,CAAC2B,KAAK,CAACJ,KAAK,EAAEC,GAAG,CAAC,CAACI,IAAI,CAAC,EAAE,CAAC;MAErDrD,KAAK,CAACiC,IAAI,CAAC;AACT9C,QAAAA,IAAI,EAAEgE,QAAQ;QACdH,KAAK;AACLC,QAAAA;AACF,OAAC,CAAC;AACJ,IAAA,CAAC,CAAC;;AAEF;IACA,MAAMhD,UAAU,GAAGqD,IAAI,CAACC,GAAG,CACzB,GAAG7B,KAAK,CAAC8B,GAAG,CAAE3B,IAAI,IAAKA,IAAI,CAAC4B,UAAU,GAAG5B,IAAI,CAAC6B,WAAW,CAC3D,CAAC;AACD,IAAA,MAAMxD,WAAW,GACfwB,KAAK,CAACwB,MAAM,GAAG,CAAC,GACZI,IAAI,CAACC,GAAG,CAAC,GAAG7B,KAAK,CAAC8B,GAAG,CAAE3B,IAAI,IAAKA,IAAI,CAACO,SAAS,GAAGP,IAAI,CAAC8B,YAAY,CAAC,CAAC,GACpE,CAAC;IAEP,OAAO;MACL3D,KAAK;MACLC,UAAU;MACVC,WAAW;AACXC,MAAAA;KACD;AACH,EAAA,CAAC,SAAS;AACR;AACAG,IAAAA,SAAS,CAACsD,WAAW,CAACnD,MAAM,CAAC;AAC/B,EAAA;AACF;;AAEA;AACA;AACA;AACO,SAASoD,gBAAgBA,CAACC,MAAW,EAAU;EACpD,MAAMC,UAAU,GAAG,CACjBD,MAAM,CAAC3E,IAAI,EACX2E,MAAM,CAAC3D,KAAK,EACZ2D,MAAM,CAACE,MAAM,EACbF,MAAM,CAACG,UAAU,EACjBH,MAAM,CAACI,QAAQ,EACfJ,MAAM,CAACK,UAAU,EACjBL,MAAM,CAACM,SAAS,EAChBN,MAAM,CAACO,UAAU,EACjBP,MAAM,CAACQ,WAAW,EAClBR,MAAM,CAACS,SAAS,EAChBT,MAAM,CAACU,SAAS,CACjB;AAED,EAAA,OAAOT,UAAU,CAACP,GAAG,CAAEiB,CAAC,IAAKC,MAAM,CAACD,CAAC,CAAC,CAAC,CAACpB,IAAI,CAAC,GAAG,CAAC;AACnD;;AAEA;AACA;AACA;AACO,SAASsB,oBAAoBA,CAClCb,MAAW,EACXc,UAAmB,EACV;AACT,EAAA,IAAI,CAACA,UAAU,IAAI,CAAEd,MAAM,CAASe,kBAAkB,EAAE;AACtD,IAAA,OAAO,KAAK;AACd,EAAA;AAEA,EAAA,MAAMC,WAAW,GAAGjB,gBAAgB,CAACC,MAAM,CAAC;EAC5C,OAAOgB,WAAW,KAAKF,UAAU;AACnC;AAOA;AACA;AACA;AACO,SAASG,iBAAiBA,CAC/BjB,MAAW,EACX9D,KAAoB,EACpBG,KAAc,EACd6E,UAAmB,EACb;EACLlB,MAAM,CAASe,kBAAkB,GAAG7E,KAAK;EACzC8D,MAAM,CAASmB,uBAAuB,GAAG9E,KAAK;EAC9C2D,MAAM,CAASoB,sBAAsB,GACtBrB,gBAAgB,CAACC,MAAM,CAAC;AAC1C;;AAEA;AACA;AACA;AACO,SAASqB,iBAAiBA,CAACrB,MAAW,EAAQ;EACnD,OAAQA,MAAM,CAASe,kBAAkB;EACzC,OAAQf,MAAM,CAASoB,sBAAsB;EAC7C,OAAQpB,MAAM,CAASmB,uBAAuB;AAChD;;AAEA;AACA;AACA;AACO,SAASG,eAAeA,CAACtB,MAAW,EAA6B;AACtE,EAAA,MAAM9D,KAAK,GAAI8D,MAAM,CAASe,kBAAkB;AAChD,EAAA,MAAMQ,IAAI,GAAIvB,MAAM,CAASoB,sBAAsB;EAEnD,IAAIlF,KAAK,IAAI2E,oBAAoB,CAACb,MAAM,EAAEuB,IAAI,CAAC,EAAE;IAC/C,OAAO;MACLrF,KAAK;AACLC,MAAAA,UAAU,EAAE,CAAC;AACbC,MAAAA,WAAW,EAAE,CAAC;MACdC,KAAK,EAAG2D,MAAM,CAASmB;KACxB;AACH,EAAA;AAEA,EAAA,OAAO,IAAI;AACb;;;;"}
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"ellipsis.min.mjs","sources":["../../../src/text/ellipsis.ts"],"sourcesContent":["/**\r\n * Ellipsis Text Truncation System\r\n * \r\n * Implements text truncation with ellipsis when content exceeds bounds,\r\n * using binary search for optimal truncation points.\r\n */\r\n\r\nimport { segmentGraphemes } from './unicode';\r\n\r\nexport interface EllipsisOptions {\r\n maxWidth?: number;\r\n maxHeight?: number;\r\n ellipsisChar: string; // Default: \"…\"\r\n measureFn: (text: string) => number | { width: number; height: number };\r\n}\r\n\r\nexport interface EllipsisResult {\r\n truncatedText: string;\r\n isTruncated: boolean;\r\n truncationIndex: number; // Grapheme index where truncation occurred\r\n ellipsisWidth: number;\r\n originalLength: number;\r\n}\r\n\r\n/**\r\n * Apply ellipsis truncation to text based on width/height constraints\r\n */\r\nexport function applyEllipsis(\r\n text: string,\r\n options: EllipsisOptions\r\n): EllipsisResult {\r\n const { maxWidth, maxHeight, ellipsisChar, measureFn } = options;\r\n \r\n if (!text) {\r\n return {\r\n truncatedText: '',\r\n isTruncated: false,\r\n truncationIndex: 0,\r\n ellipsisWidth: 0,\r\n originalLength: 0,\r\n };\r\n }\r\n\r\n // Measure ellipsis width\r\n const ellipsisWidth = typeof measureFn(ellipsisChar) === 'number' \r\n ? measureFn(ellipsisChar) as number\r\n : (measureFn(ellipsisChar) as { width: number }).width;\r\n\r\n // Check if truncation is needed\r\n const originalMeasurement = measureFn(text);\r\n const originalWidth = typeof originalMeasurement === 'number' \r\n ? originalMeasurement \r\n : originalMeasurement.width;\r\n const originalHeight = typeof originalMeasurement === 'number'\r\n ? 0 // Height constraint not applicable for single dimension measure\r\n : originalMeasurement.height;\r\n\r\n let needsTruncation = false;\r\n if (maxWidth && originalWidth > maxWidth) needsTruncation = true;\r\n if (maxHeight && originalHeight > maxHeight) needsTruncation = true;\r\n\r\n if (!needsTruncation) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: segmentGraphemes(text).length,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n }\r\n\r\n // Apply width-based truncation\r\n if (maxWidth) {\r\n const widthTruncated = truncateByWidth(text, maxWidth, ellipsisChar, ellipsisWidth, measureFn);\r\n return {\r\n ...widthTruncated,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n }\r\n\r\n // Apply height-based truncation (for multi-line text)\r\n if (maxHeight) {\r\n const heightTruncated = truncateByHeight(text, maxHeight, ellipsisChar, measureFn);\r\n return {\r\n ...heightTruncated,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n }\r\n\r\n // Fallback - should not reach here\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: segmentGraphemes(text).length,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate text based on width constraint using binary search\r\n */\r\nfunction truncateByWidth(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n ellipsisWidth: number,\r\n measureFn: (text: string) => number | { width: number; height: number }\r\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n // Binary search for optimal truncation point\r\n let low = 0;\r\n let high = graphemes.length;\r\n let bestFit = 0;\r\n\r\n while (low <= high) {\r\n const mid = Math.floor((low + high) / 2);\r\n const candidate = graphemes.slice(0, mid).join('');\r\n \r\n const measurement = measureFn(candidate);\r\n const candidateWidth = typeof measurement === 'number' \r\n ? measurement \r\n : measurement.width;\r\n\r\n if (candidateWidth <= availableWidth) {\r\n bestFit = mid;\r\n low = mid + 1;\r\n } else {\r\n high = mid - 1;\r\n }\r\n }\r\n\r\n // Handle edge cases\r\n if (bestFit === 0) {\r\n // Even single character doesn't fit - return ellipsis only\r\n return {\r\n truncatedText: ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: 0,\r\n };\r\n }\r\n\r\n if (bestFit === graphemes.length) {\r\n // Everything fits even with ellipsis space reserved\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n };\r\n }\r\n\r\n // Create truncated text with ellipsis\r\n const truncatedText = graphemes.slice(0, bestFit).join('') + ellipsisChar;\r\n\r\n return {\r\n truncatedText,\r\n isTruncated: true,\r\n truncationIndex: bestFit,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate text based on height constraint\r\n */\r\nfunction truncateByHeight(\r\n text: string,\r\n maxHeight: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number | { width: number; height: number }\r\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\r\n const lines = text.split('\\n');\r\n let accumulatedText = '';\r\n let lineIndex = 0;\r\n\r\n // Add lines until height exceeded\r\n for (lineIndex = 0; lineIndex < lines.length; lineIndex++) {\r\n const testText = lineIndex === 0 \r\n ? lines[lineIndex] \r\n : accumulatedText + '\\n' + lines[lineIndex];\r\n \r\n const measurement = measureFn(testText);\r\n const height = typeof measurement === 'number' \r\n ? 0 // Single dimension measure doesn't provide height\r\n : measurement.height;\r\n\r\n if (height > maxHeight && accumulatedText) {\r\n // Previous text fits, current doesn't - truncate at previous\r\n break;\r\n }\r\n\r\n accumulatedText = testText;\r\n\r\n // If this is the last line and it fits, no truncation needed\r\n if (lineIndex === lines.length - 1) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: segmentGraphemes(text).length,\r\n };\r\n }\r\n }\r\n\r\n // If we need to truncate the last fitting line to add ellipsis\r\n if (lineIndex > 0) {\r\n const lastFittingLine = lines[lineIndex - 1];\r\n const withEllipsis = lastFittingLine + ellipsisChar;\r\n const graphemes = segmentGraphemes(accumulatedText);\r\n\r\n return {\r\n truncatedText: accumulatedText.replace(/[^\\n]*$/, withEllipsis),\r\n isTruncated: true,\r\n truncationIndex: graphemes.length - segmentGraphemes(lastFittingLine).length + segmentGraphemes(withEllipsis).length - 1,\r\n };\r\n }\r\n\r\n // First line doesn't fit - try width-based truncation on first line\r\n const firstLineWidth = typeof measureFn === 'function' \r\n ? (measureFn(lines[0]) as any)?.width || 1000\r\n : 1000; // Fallback width\r\n\r\n return truncateByWidth(lines[0], firstLineWidth, ellipsisChar, 0, measureFn);\r\n}\r\n\r\n/**\r\n * Find optimal truncation point using binary search\r\n */\r\nexport function findTruncationPoint(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisWidth: number,\r\n measureFn: (text: string) => number\r\n): number {\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n let low = 0;\r\n let high = graphemes.length;\r\n\r\n while (low < high) {\r\n const mid = Math.floor((low + high + 1) / 2);\r\n const candidate = graphemes.slice(0, mid).join('');\r\n const width = measureFn(candidate);\r\n\r\n if (width <= availableWidth) {\r\n low = mid;\r\n } else {\r\n high = mid - 1;\r\n }\r\n }\r\n\r\n return low;\r\n}\r\n\r\n/**\r\n * Smart truncation that tries to break at word boundaries\r\n */\r\nexport function smartTruncate(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n \r\n // First try exact truncation\r\n const exactPoint = findTruncationPoint(text, maxWidth, ellipsisWidth, measureFn);\r\n const graphemes = segmentGraphemes(text);\r\n \r\n if (exactPoint === 0) {\r\n return {\r\n truncatedText: ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: 0,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n if (exactPoint >= graphemes.length) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n // Try to find a word boundary before the exact point\r\n const textUpToPoint = graphemes.slice(0, exactPoint).join('');\r\n const words = textUpToPoint.split(/(\\s+)/);\r\n \r\n if (words.length > 1) {\r\n // Try truncating at last complete word\r\n const wordsWithoutLast = words.slice(0, -2); // Remove last word and space\r\n const wordBoundaryText = wordsWithoutLast.join('');\r\n const wordBoundaryWidth = measureFn(wordBoundaryText);\r\n \r\n if (wordBoundaryWidth + ellipsisWidth <= maxWidth && wordBoundaryText.trim()) {\r\n const wordBoundaryGraphemes = segmentGraphemes(wordBoundaryText);\r\n return {\r\n truncatedText: wordBoundaryText.trim() + ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: wordBoundaryGraphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n }\r\n\r\n // Fall back to character truncation\r\n return {\r\n truncatedText: graphemes.slice(0, exactPoint).join('') + ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: exactPoint,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate multi-line text with ellipsis on the last visible line\r\n */\r\nexport function truncateMultiline(\r\n lines: string[],\r\n maxLines: number,\r\n ellipsisChar: string,\r\n maxWidth?: number,\r\n measureFn?: (text: string) => number\r\n): {\r\n truncatedLines: string[];\r\n isTruncated: boolean;\r\n lastLineIndex: number;\r\n} {\r\n if (lines.length <= maxLines) {\r\n return {\r\n truncatedLines: lines,\r\n isTruncated: false,\r\n lastLineIndex: lines.length - 1,\r\n };\r\n }\r\n\r\n // Take lines up to limit\r\n const visibleLines = lines.slice(0, maxLines);\r\n \r\n // Add ellipsis to last line if needed\r\n if (maxWidth && measureFn) {\r\n const lastLineIndex = visibleLines.length - 1;\r\n const lastLine = visibleLines[lastLineIndex];\r\n const lastLineWithEllipsis = lastLine + ellipsisChar;\r\n \r\n if (measureFn(lastLineWithEllipsis) > maxWidth) {\r\n // Last line + ellipsis doesn't fit, truncate it\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const truncationPoint = findTruncationPoint(lastLine, maxWidth, ellipsisWidth, measureFn);\r\n const graphemes = segmentGraphemes(lastLine);\r\n visibleLines[lastLineIndex] = graphemes.slice(0, truncationPoint).join('') + ellipsisChar;\r\n } else {\r\n visibleLines[lastLineIndex] = lastLineWithEllipsis;\r\n }\r\n } else {\r\n // Just add ellipsis to last line\r\n const lastLineIndex = visibleLines.length - 1;\r\n visibleLines[lastLineIndex] = visibleLines[lastLineIndex] + ellipsisChar;\r\n }\r\n\r\n return {\r\n truncatedLines: visibleLines,\r\n isTruncated: true,\r\n lastLineIndex: maxLines - 1,\r\n };\r\n}\r\n\r\n/**\r\n * Calculate ellipsis positioning for different alignments\r\n */\r\nexport function getEllipsisPosition(\r\n text: string,\r\n position: 'end' | 'middle' | 'start',\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const graphemes = segmentGraphemes(text);\r\n const totalWidth = measureFn(text);\r\n \r\n if (totalWidth <= maxWidth) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n switch (position) {\r\n case 'start':\r\n return truncateFromStart(text, maxWidth, ellipsisChar, measureFn);\r\n case 'middle':\r\n return truncateFromMiddle(text, maxWidth, ellipsisChar, measureFn);\r\n case 'end':\r\n default:\r\n return smartTruncate(text, maxWidth, ellipsisChar, measureFn);\r\n }\r\n}\r\n\r\n/**\r\n * Truncate from start with ellipsis at beginning\r\n */\r\nfunction truncateFromStart(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n let low = 0;\r\n let high = graphemes.length;\r\n\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n const candidate = graphemes.slice(mid).join('');\r\n const width = measureFn(candidate);\r\n\r\n if (width <= availableWidth) {\r\n high = mid;\r\n } else {\r\n low = mid + 1;\r\n }\r\n }\r\n\r\n if (low >= graphemes.length) {\r\n return {\r\n truncatedText: ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: 0,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n return {\r\n truncatedText: ellipsisChar + graphemes.slice(low).join(''),\r\n isTruncated: true,\r\n truncationIndex: low,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate from middle with ellipsis in center\r\n */\r\nfunction truncateFromMiddle(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n // Binary search for optimal split\r\n let low = 0;\r\n let high = Math.floor(graphemes.length / 2);\r\n\r\n while (low < high) {\r\n const startChars = Math.floor((low + high + 1) / 2);\r\n const endChars = startChars;\r\n \r\n const candidate = graphemes.slice(0, startChars).join('') + \r\n graphemes.slice(-endChars).join('');\r\n const width = measureFn(candidate);\r\n\r\n if (width <= availableWidth) {\r\n low = startChars;\r\n } else {\r\n high = startChars - 1;\r\n }\r\n }\r\n\r\n const startChars = low;\r\n const endChars = low;\r\n\r\n if (startChars + endChars >= graphemes.length) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n const truncatedText = graphemes.slice(0, startChars).join('') + \r\n ellipsisChar + \r\n graphemes.slice(-endChars).join('');\r\n\r\n return {\r\n truncatedText,\r\n isTruncated: true,\r\n truncationIndex: startChars,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n}"],"names":["applyEllipsis","text","options","maxWidth","maxHeight","ellipsisChar","measureFn","truncatedText","isTruncated","truncationIndex","ellipsisWidth","originalLength","width","originalMeasurement","originalWidth","originalHeight","height","needsTruncation","segmentGraphemes","length","truncateByWidth","heightTruncated","_measureFn","lines","split","accumulatedText","lineIndex","testText","measurement","lastFittingLine","withEllipsis","graphemes","replace","firstLineWidth","truncateByHeight","availableWidth","low","high","bestFit","mid","Math","floor","slice","join"],"mappings":"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"}
1
+ {"version":3,"file":"ellipsis.min.mjs","sources":["../../../src/text/ellipsis.ts"],"sourcesContent":["/**\n * Ellipsis Text Truncation System\n * \n * Implements text truncation with ellipsis when content exceeds bounds,\n * using binary search for optimal truncation points.\n */\n\nimport { segmentGraphemes } from './unicode';\n\nexport interface EllipsisOptions {\n maxWidth?: number;\n maxHeight?: number;\n ellipsisChar: string; // Default: \"…\"\n measureFn: (text: string) => number | { width: number; height: number };\n}\n\nexport interface EllipsisResult {\n truncatedText: string;\n isTruncated: boolean;\n truncationIndex: number; // Grapheme index where truncation occurred\n ellipsisWidth: number;\n originalLength: number;\n}\n\n/**\n * Apply ellipsis truncation to text based on width/height constraints\n */\nexport function applyEllipsis(\n text: string,\n options: EllipsisOptions\n): EllipsisResult {\n const { maxWidth, maxHeight, ellipsisChar, measureFn } = options;\n \n if (!text) {\n return {\n truncatedText: '',\n isTruncated: false,\n truncationIndex: 0,\n ellipsisWidth: 0,\n originalLength: 0,\n };\n }\n\n // Measure ellipsis width\n const ellipsisWidth = typeof measureFn(ellipsisChar) === 'number' \n ? measureFn(ellipsisChar) as number\n : (measureFn(ellipsisChar) as { width: number }).width;\n\n // Check if truncation is needed\n const originalMeasurement = measureFn(text);\n const originalWidth = typeof originalMeasurement === 'number' \n ? originalMeasurement \n : originalMeasurement.width;\n const originalHeight = typeof originalMeasurement === 'number'\n ? 0 // Height constraint not applicable for single dimension measure\n : originalMeasurement.height;\n\n let needsTruncation = false;\n if (maxWidth && originalWidth > maxWidth) needsTruncation = true;\n if (maxHeight && originalHeight > maxHeight) needsTruncation = true;\n\n if (!needsTruncation) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: segmentGraphemes(text).length,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n }\n\n // Apply width-based truncation\n if (maxWidth) {\n const widthTruncated = truncateByWidth(text, maxWidth, ellipsisChar, ellipsisWidth, measureFn);\n return {\n ...widthTruncated,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n }\n\n // Apply height-based truncation (for multi-line text)\n if (maxHeight) {\n const heightTruncated = truncateByHeight(text, maxHeight, ellipsisChar, measureFn);\n return {\n ...heightTruncated,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n }\n\n // Fallback - should not reach here\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: segmentGraphemes(text).length,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n}\n\n/**\n * Truncate text based on width constraint using binary search\n */\nfunction truncateByWidth(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n ellipsisWidth: number,\n measureFn: (text: string) => number | { width: number; height: number }\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n // Binary search for optimal truncation point\n let low = 0;\n let high = graphemes.length;\n let bestFit = 0;\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = graphemes.slice(0, mid).join('');\n \n const measurement = measureFn(candidate);\n const candidateWidth = typeof measurement === 'number' \n ? measurement \n : measurement.width;\n\n if (candidateWidth <= availableWidth) {\n bestFit = mid;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n // Handle edge cases\n if (bestFit === 0) {\n // Even single character doesn't fit - return ellipsis only\n return {\n truncatedText: ellipsisChar,\n isTruncated: true,\n truncationIndex: 0,\n };\n }\n\n if (bestFit === graphemes.length) {\n // Everything fits even with ellipsis space reserved\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n };\n }\n\n // Create truncated text with ellipsis\n const truncatedText = graphemes.slice(0, bestFit).join('') + ellipsisChar;\n\n return {\n truncatedText,\n isTruncated: true,\n truncationIndex: bestFit,\n };\n}\n\n/**\n * Truncate text based on height constraint\n */\nfunction truncateByHeight(\n text: string,\n maxHeight: number,\n ellipsisChar: string,\n measureFn: (text: string) => number | { width: number; height: number }\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\n const lines = text.split('\\n');\n let accumulatedText = '';\n let lineIndex = 0;\n\n // Add lines until height exceeded\n for (lineIndex = 0; lineIndex < lines.length; lineIndex++) {\n const testText = lineIndex === 0 \n ? lines[lineIndex] \n : accumulatedText + '\\n' + lines[lineIndex];\n \n const measurement = measureFn(testText);\n const height = typeof measurement === 'number' \n ? 0 // Single dimension measure doesn't provide height\n : measurement.height;\n\n if (height > maxHeight && accumulatedText) {\n // Previous text fits, current doesn't - truncate at previous\n break;\n }\n\n accumulatedText = testText;\n\n // If this is the last line and it fits, no truncation needed\n if (lineIndex === lines.length - 1) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: segmentGraphemes(text).length,\n };\n }\n }\n\n // If we need to truncate the last fitting line to add ellipsis\n if (lineIndex > 0) {\n const lastFittingLine = lines[lineIndex - 1];\n const withEllipsis = lastFittingLine + ellipsisChar;\n const graphemes = segmentGraphemes(accumulatedText);\n\n return {\n truncatedText: accumulatedText.replace(/[^\\n]*$/, withEllipsis),\n isTruncated: true,\n truncationIndex: graphemes.length - segmentGraphemes(lastFittingLine).length + segmentGraphemes(withEllipsis).length - 1,\n };\n }\n\n // First line doesn't fit - try width-based truncation on first line\n const firstLineWidth = typeof measureFn === 'function' \n ? (measureFn(lines[0]) as any)?.width || 1000\n : 1000; // Fallback width\n\n return truncateByWidth(lines[0], firstLineWidth, ellipsisChar, 0, measureFn);\n}\n\n/**\n * Find optimal truncation point using binary search\n */\nexport function findTruncationPoint(\n text: string,\n maxWidth: number,\n ellipsisWidth: number,\n measureFn: (text: string) => number\n): number {\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n let low = 0;\n let high = graphemes.length;\n\n while (low < high) {\n const mid = Math.floor((low + high + 1) / 2);\n const candidate = graphemes.slice(0, mid).join('');\n const width = measureFn(candidate);\n\n if (width <= availableWidth) {\n low = mid;\n } else {\n high = mid - 1;\n }\n }\n\n return low;\n}\n\n/**\n * Smart truncation that tries to break at word boundaries\n */\nexport function smartTruncate(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const availableWidth = maxWidth - ellipsisWidth;\n \n // First try exact truncation\n const exactPoint = findTruncationPoint(text, maxWidth, ellipsisWidth, measureFn);\n const graphemes = segmentGraphemes(text);\n \n if (exactPoint === 0) {\n return {\n truncatedText: ellipsisChar,\n isTruncated: true,\n truncationIndex: 0,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n if (exactPoint >= graphemes.length) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n // Try to find a word boundary before the exact point\n const textUpToPoint = graphemes.slice(0, exactPoint).join('');\n const words = textUpToPoint.split(/(\\s+)/);\n \n if (words.length > 1) {\n // Try truncating at last complete word\n const wordsWithoutLast = words.slice(0, -2); // Remove last word and space\n const wordBoundaryText = wordsWithoutLast.join('');\n const wordBoundaryWidth = measureFn(wordBoundaryText);\n \n if (wordBoundaryWidth + ellipsisWidth <= maxWidth && wordBoundaryText.trim()) {\n const wordBoundaryGraphemes = segmentGraphemes(wordBoundaryText);\n return {\n truncatedText: wordBoundaryText.trim() + ellipsisChar,\n isTruncated: true,\n truncationIndex: wordBoundaryGraphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n }\n\n // Fall back to character truncation\n return {\n truncatedText: graphemes.slice(0, exactPoint).join('') + ellipsisChar,\n isTruncated: true,\n truncationIndex: exactPoint,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n}\n\n/**\n * Truncate multi-line text with ellipsis on the last visible line\n */\nexport function truncateMultiline(\n lines: string[],\n maxLines: number,\n ellipsisChar: string,\n maxWidth?: number,\n measureFn?: (text: string) => number\n): {\n truncatedLines: string[];\n isTruncated: boolean;\n lastLineIndex: number;\n} {\n if (lines.length <= maxLines) {\n return {\n truncatedLines: lines,\n isTruncated: false,\n lastLineIndex: lines.length - 1,\n };\n }\n\n // Take lines up to limit\n const visibleLines = lines.slice(0, maxLines);\n \n // Add ellipsis to last line if needed\n if (maxWidth && measureFn) {\n const lastLineIndex = visibleLines.length - 1;\n const lastLine = visibleLines[lastLineIndex];\n const lastLineWithEllipsis = lastLine + ellipsisChar;\n \n if (measureFn(lastLineWithEllipsis) > maxWidth) {\n // Last line + ellipsis doesn't fit, truncate it\n const ellipsisWidth = measureFn(ellipsisChar);\n const truncationPoint = findTruncationPoint(lastLine, maxWidth, ellipsisWidth, measureFn);\n const graphemes = segmentGraphemes(lastLine);\n visibleLines[lastLineIndex] = graphemes.slice(0, truncationPoint).join('') + ellipsisChar;\n } else {\n visibleLines[lastLineIndex] = lastLineWithEllipsis;\n }\n } else {\n // Just add ellipsis to last line\n const lastLineIndex = visibleLines.length - 1;\n visibleLines[lastLineIndex] = visibleLines[lastLineIndex] + ellipsisChar;\n }\n\n return {\n truncatedLines: visibleLines,\n isTruncated: true,\n lastLineIndex: maxLines - 1,\n };\n}\n\n/**\n * Calculate ellipsis positioning for different alignments\n */\nexport function getEllipsisPosition(\n text: string,\n position: 'end' | 'middle' | 'start',\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const graphemes = segmentGraphemes(text);\n const totalWidth = measureFn(text);\n \n if (totalWidth <= maxWidth) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n switch (position) {\n case 'start':\n return truncateFromStart(text, maxWidth, ellipsisChar, measureFn);\n case 'middle':\n return truncateFromMiddle(text, maxWidth, ellipsisChar, measureFn);\n case 'end':\n default:\n return smartTruncate(text, maxWidth, ellipsisChar, measureFn);\n }\n}\n\n/**\n * Truncate from start with ellipsis at beginning\n */\nfunction truncateFromStart(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n let low = 0;\n let high = graphemes.length;\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = graphemes.slice(mid).join('');\n const width = measureFn(candidate);\n\n if (width <= availableWidth) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n if (low >= graphemes.length) {\n return {\n truncatedText: ellipsisChar,\n isTruncated: true,\n truncationIndex: 0,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n return {\n truncatedText: ellipsisChar + graphemes.slice(low).join(''),\n isTruncated: true,\n truncationIndex: low,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n}\n\n/**\n * Truncate from middle with ellipsis in center\n */\nfunction truncateFromMiddle(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n // Binary search for optimal split\n let low = 0;\n let high = Math.floor(graphemes.length / 2);\n\n while (low < high) {\n const startChars = Math.floor((low + high + 1) / 2);\n const endChars = startChars;\n \n const candidate = graphemes.slice(0, startChars).join('') + \n graphemes.slice(-endChars).join('');\n const width = measureFn(candidate);\n\n if (width <= availableWidth) {\n low = startChars;\n } else {\n high = startChars - 1;\n }\n }\n\n const startChars = low;\n const endChars = low;\n\n if (startChars + endChars >= graphemes.length) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n const truncatedText = graphemes.slice(0, startChars).join('') + \n ellipsisChar + \n graphemes.slice(-endChars).join('');\n\n return {\n truncatedText,\n isTruncated: true,\n truncationIndex: startChars,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n}"],"names":["applyEllipsis","text","options","maxWidth","maxHeight","ellipsisChar","measureFn","truncatedText","isTruncated","truncationIndex","ellipsisWidth","originalLength","width","originalMeasurement","originalWidth","originalHeight","height","needsTruncation","segmentGraphemes","length","truncateByWidth","heightTruncated","_measureFn","lines","split","accumulatedText","lineIndex","testText","measurement","lastFittingLine","withEllipsis","graphemes","replace","firstLineWidth","truncateByHeight","availableWidth","low","high","bestFit","mid","Math","floor","slice","join"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { segmentGraphemes } from './unicode.mjs';
2
2
 
3
- /**
4
- * Ellipsis Text Truncation System
5
- *
6
- * Implements text truncation with ellipsis when content exceeds bounds,
7
- * using binary search for optimal truncation points.
3
+ /**
4
+ * Ellipsis Text Truncation System
5
+ *
6
+ * Implements text truncation with ellipsis when content exceeds bounds,
7
+ * using binary search for optimal truncation points.
8
8
  */
9
9
 
10
- /**
11
- * Apply ellipsis truncation to text based on width/height constraints
10
+ /**
11
+ * Apply ellipsis truncation to text based on width/height constraints
12
12
  */
13
13
  function applyEllipsis(text, options) {
14
14
  const {
@@ -78,8 +78,8 @@ function applyEllipsis(text, options) {
78
78
  };
79
79
  }
80
80
 
81
- /**
82
- * Truncate text based on width constraint using binary search
81
+ /**
82
+ * Truncate text based on width constraint using binary search
83
83
  */
84
84
  function truncateByWidth(text, maxWidth, ellipsisChar, ellipsisWidth, measureFn) {
85
85
  const graphemes = segmentGraphemes(text);
@@ -129,8 +129,8 @@ function truncateByWidth(text, maxWidth, ellipsisChar, ellipsisWidth, measureFn)
129
129
  };
130
130
  }
131
131
 
132
- /**
133
- * Truncate text based on height constraint
132
+ /**
133
+ * Truncate text based on height constraint
134
134
  */
135
135
  function truncateByHeight(text, maxHeight, ellipsisChar, measureFn) {
136
136
  var _measureFn;
@@ -1 +1 @@
1
- {"version":3,"file":"ellipsis.mjs","sources":["../../../src/text/ellipsis.ts"],"sourcesContent":["/**\r\n * Ellipsis Text Truncation System\r\n * \r\n * Implements text truncation with ellipsis when content exceeds bounds,\r\n * using binary search for optimal truncation points.\r\n */\r\n\r\nimport { segmentGraphemes } from './unicode';\r\n\r\nexport interface EllipsisOptions {\r\n maxWidth?: number;\r\n maxHeight?: number;\r\n ellipsisChar: string; // Default: \"…\"\r\n measureFn: (text: string) => number | { width: number; height: number };\r\n}\r\n\r\nexport interface EllipsisResult {\r\n truncatedText: string;\r\n isTruncated: boolean;\r\n truncationIndex: number; // Grapheme index where truncation occurred\r\n ellipsisWidth: number;\r\n originalLength: number;\r\n}\r\n\r\n/**\r\n * Apply ellipsis truncation to text based on width/height constraints\r\n */\r\nexport function applyEllipsis(\r\n text: string,\r\n options: EllipsisOptions\r\n): EllipsisResult {\r\n const { maxWidth, maxHeight, ellipsisChar, measureFn } = options;\r\n \r\n if (!text) {\r\n return {\r\n truncatedText: '',\r\n isTruncated: false,\r\n truncationIndex: 0,\r\n ellipsisWidth: 0,\r\n originalLength: 0,\r\n };\r\n }\r\n\r\n // Measure ellipsis width\r\n const ellipsisWidth = typeof measureFn(ellipsisChar) === 'number' \r\n ? measureFn(ellipsisChar) as number\r\n : (measureFn(ellipsisChar) as { width: number }).width;\r\n\r\n // Check if truncation is needed\r\n const originalMeasurement = measureFn(text);\r\n const originalWidth = typeof originalMeasurement === 'number' \r\n ? originalMeasurement \r\n : originalMeasurement.width;\r\n const originalHeight = typeof originalMeasurement === 'number'\r\n ? 0 // Height constraint not applicable for single dimension measure\r\n : originalMeasurement.height;\r\n\r\n let needsTruncation = false;\r\n if (maxWidth && originalWidth > maxWidth) needsTruncation = true;\r\n if (maxHeight && originalHeight > maxHeight) needsTruncation = true;\r\n\r\n if (!needsTruncation) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: segmentGraphemes(text).length,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n }\r\n\r\n // Apply width-based truncation\r\n if (maxWidth) {\r\n const widthTruncated = truncateByWidth(text, maxWidth, ellipsisChar, ellipsisWidth, measureFn);\r\n return {\r\n ...widthTruncated,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n }\r\n\r\n // Apply height-based truncation (for multi-line text)\r\n if (maxHeight) {\r\n const heightTruncated = truncateByHeight(text, maxHeight, ellipsisChar, measureFn);\r\n return {\r\n ...heightTruncated,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n }\r\n\r\n // Fallback - should not reach here\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: segmentGraphemes(text).length,\r\n ellipsisWidth,\r\n originalLength: segmentGraphemes(text).length,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate text based on width constraint using binary search\r\n */\r\nfunction truncateByWidth(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n ellipsisWidth: number,\r\n measureFn: (text: string) => number | { width: number; height: number }\r\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n // Binary search for optimal truncation point\r\n let low = 0;\r\n let high = graphemes.length;\r\n let bestFit = 0;\r\n\r\n while (low <= high) {\r\n const mid = Math.floor((low + high) / 2);\r\n const candidate = graphemes.slice(0, mid).join('');\r\n \r\n const measurement = measureFn(candidate);\r\n const candidateWidth = typeof measurement === 'number' \r\n ? measurement \r\n : measurement.width;\r\n\r\n if (candidateWidth <= availableWidth) {\r\n bestFit = mid;\r\n low = mid + 1;\r\n } else {\r\n high = mid - 1;\r\n }\r\n }\r\n\r\n // Handle edge cases\r\n if (bestFit === 0) {\r\n // Even single character doesn't fit - return ellipsis only\r\n return {\r\n truncatedText: ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: 0,\r\n };\r\n }\r\n\r\n if (bestFit === graphemes.length) {\r\n // Everything fits even with ellipsis space reserved\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n };\r\n }\r\n\r\n // Create truncated text with ellipsis\r\n const truncatedText = graphemes.slice(0, bestFit).join('') + ellipsisChar;\r\n\r\n return {\r\n truncatedText,\r\n isTruncated: true,\r\n truncationIndex: bestFit,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate text based on height constraint\r\n */\r\nfunction truncateByHeight(\r\n text: string,\r\n maxHeight: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number | { width: number; height: number }\r\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\r\n const lines = text.split('\\n');\r\n let accumulatedText = '';\r\n let lineIndex = 0;\r\n\r\n // Add lines until height exceeded\r\n for (lineIndex = 0; lineIndex < lines.length; lineIndex++) {\r\n const testText = lineIndex === 0 \r\n ? lines[lineIndex] \r\n : accumulatedText + '\\n' + lines[lineIndex];\r\n \r\n const measurement = measureFn(testText);\r\n const height = typeof measurement === 'number' \r\n ? 0 // Single dimension measure doesn't provide height\r\n : measurement.height;\r\n\r\n if (height > maxHeight && accumulatedText) {\r\n // Previous text fits, current doesn't - truncate at previous\r\n break;\r\n }\r\n\r\n accumulatedText = testText;\r\n\r\n // If this is the last line and it fits, no truncation needed\r\n if (lineIndex === lines.length - 1) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: segmentGraphemes(text).length,\r\n };\r\n }\r\n }\r\n\r\n // If we need to truncate the last fitting line to add ellipsis\r\n if (lineIndex > 0) {\r\n const lastFittingLine = lines[lineIndex - 1];\r\n const withEllipsis = lastFittingLine + ellipsisChar;\r\n const graphemes = segmentGraphemes(accumulatedText);\r\n\r\n return {\r\n truncatedText: accumulatedText.replace(/[^\\n]*$/, withEllipsis),\r\n isTruncated: true,\r\n truncationIndex: graphemes.length - segmentGraphemes(lastFittingLine).length + segmentGraphemes(withEllipsis).length - 1,\r\n };\r\n }\r\n\r\n // First line doesn't fit - try width-based truncation on first line\r\n const firstLineWidth = typeof measureFn === 'function' \r\n ? (measureFn(lines[0]) as any)?.width || 1000\r\n : 1000; // Fallback width\r\n\r\n return truncateByWidth(lines[0], firstLineWidth, ellipsisChar, 0, measureFn);\r\n}\r\n\r\n/**\r\n * Find optimal truncation point using binary search\r\n */\r\nexport function findTruncationPoint(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisWidth: number,\r\n measureFn: (text: string) => number\r\n): number {\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n let low = 0;\r\n let high = graphemes.length;\r\n\r\n while (low < high) {\r\n const mid = Math.floor((low + high + 1) / 2);\r\n const candidate = graphemes.slice(0, mid).join('');\r\n const width = measureFn(candidate);\r\n\r\n if (width <= availableWidth) {\r\n low = mid;\r\n } else {\r\n high = mid - 1;\r\n }\r\n }\r\n\r\n return low;\r\n}\r\n\r\n/**\r\n * Smart truncation that tries to break at word boundaries\r\n */\r\nexport function smartTruncate(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n \r\n // First try exact truncation\r\n const exactPoint = findTruncationPoint(text, maxWidth, ellipsisWidth, measureFn);\r\n const graphemes = segmentGraphemes(text);\r\n \r\n if (exactPoint === 0) {\r\n return {\r\n truncatedText: ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: 0,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n if (exactPoint >= graphemes.length) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n // Try to find a word boundary before the exact point\r\n const textUpToPoint = graphemes.slice(0, exactPoint).join('');\r\n const words = textUpToPoint.split(/(\\s+)/);\r\n \r\n if (words.length > 1) {\r\n // Try truncating at last complete word\r\n const wordsWithoutLast = words.slice(0, -2); // Remove last word and space\r\n const wordBoundaryText = wordsWithoutLast.join('');\r\n const wordBoundaryWidth = measureFn(wordBoundaryText);\r\n \r\n if (wordBoundaryWidth + ellipsisWidth <= maxWidth && wordBoundaryText.trim()) {\r\n const wordBoundaryGraphemes = segmentGraphemes(wordBoundaryText);\r\n return {\r\n truncatedText: wordBoundaryText.trim() + ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: wordBoundaryGraphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n }\r\n\r\n // Fall back to character truncation\r\n return {\r\n truncatedText: graphemes.slice(0, exactPoint).join('') + ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: exactPoint,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate multi-line text with ellipsis on the last visible line\r\n */\r\nexport function truncateMultiline(\r\n lines: string[],\r\n maxLines: number,\r\n ellipsisChar: string,\r\n maxWidth?: number,\r\n measureFn?: (text: string) => number\r\n): {\r\n truncatedLines: string[];\r\n isTruncated: boolean;\r\n lastLineIndex: number;\r\n} {\r\n if (lines.length <= maxLines) {\r\n return {\r\n truncatedLines: lines,\r\n isTruncated: false,\r\n lastLineIndex: lines.length - 1,\r\n };\r\n }\r\n\r\n // Take lines up to limit\r\n const visibleLines = lines.slice(0, maxLines);\r\n \r\n // Add ellipsis to last line if needed\r\n if (maxWidth && measureFn) {\r\n const lastLineIndex = visibleLines.length - 1;\r\n const lastLine = visibleLines[lastLineIndex];\r\n const lastLineWithEllipsis = lastLine + ellipsisChar;\r\n \r\n if (measureFn(lastLineWithEllipsis) > maxWidth) {\r\n // Last line + ellipsis doesn't fit, truncate it\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const truncationPoint = findTruncationPoint(lastLine, maxWidth, ellipsisWidth, measureFn);\r\n const graphemes = segmentGraphemes(lastLine);\r\n visibleLines[lastLineIndex] = graphemes.slice(0, truncationPoint).join('') + ellipsisChar;\r\n } else {\r\n visibleLines[lastLineIndex] = lastLineWithEllipsis;\r\n }\r\n } else {\r\n // Just add ellipsis to last line\r\n const lastLineIndex = visibleLines.length - 1;\r\n visibleLines[lastLineIndex] = visibleLines[lastLineIndex] + ellipsisChar;\r\n }\r\n\r\n return {\r\n truncatedLines: visibleLines,\r\n isTruncated: true,\r\n lastLineIndex: maxLines - 1,\r\n };\r\n}\r\n\r\n/**\r\n * Calculate ellipsis positioning for different alignments\r\n */\r\nexport function getEllipsisPosition(\r\n text: string,\r\n position: 'end' | 'middle' | 'start',\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const graphemes = segmentGraphemes(text);\r\n const totalWidth = measureFn(text);\r\n \r\n if (totalWidth <= maxWidth) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n switch (position) {\r\n case 'start':\r\n return truncateFromStart(text, maxWidth, ellipsisChar, measureFn);\r\n case 'middle':\r\n return truncateFromMiddle(text, maxWidth, ellipsisChar, measureFn);\r\n case 'end':\r\n default:\r\n return smartTruncate(text, maxWidth, ellipsisChar, measureFn);\r\n }\r\n}\r\n\r\n/**\r\n * Truncate from start with ellipsis at beginning\r\n */\r\nfunction truncateFromStart(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n let low = 0;\r\n let high = graphemes.length;\r\n\r\n while (low < high) {\r\n const mid = Math.floor((low + high) / 2);\r\n const candidate = graphemes.slice(mid).join('');\r\n const width = measureFn(candidate);\r\n\r\n if (width <= availableWidth) {\r\n high = mid;\r\n } else {\r\n low = mid + 1;\r\n }\r\n }\r\n\r\n if (low >= graphemes.length) {\r\n return {\r\n truncatedText: ellipsisChar,\r\n isTruncated: true,\r\n truncationIndex: 0,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n return {\r\n truncatedText: ellipsisChar + graphemes.slice(low).join(''),\r\n isTruncated: true,\r\n truncationIndex: low,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n}\r\n\r\n/**\r\n * Truncate from middle with ellipsis in center\r\n */\r\nfunction truncateFromMiddle(\r\n text: string,\r\n maxWidth: number,\r\n ellipsisChar: string,\r\n measureFn: (text: string) => number\r\n): EllipsisResult {\r\n const ellipsisWidth = measureFn(ellipsisChar);\r\n const graphemes = segmentGraphemes(text);\r\n const availableWidth = maxWidth - ellipsisWidth;\r\n\r\n // Binary search for optimal split\r\n let low = 0;\r\n let high = Math.floor(graphemes.length / 2);\r\n\r\n while (low < high) {\r\n const startChars = Math.floor((low + high + 1) / 2);\r\n const endChars = startChars;\r\n \r\n const candidate = graphemes.slice(0, startChars).join('') + \r\n graphemes.slice(-endChars).join('');\r\n const width = measureFn(candidate);\r\n\r\n if (width <= availableWidth) {\r\n low = startChars;\r\n } else {\r\n high = startChars - 1;\r\n }\r\n }\r\n\r\n const startChars = low;\r\n const endChars = low;\r\n\r\n if (startChars + endChars >= graphemes.length) {\r\n return {\r\n truncatedText: text,\r\n isTruncated: false,\r\n truncationIndex: graphemes.length,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n }\r\n\r\n const truncatedText = graphemes.slice(0, startChars).join('') + \r\n ellipsisChar + \r\n graphemes.slice(-endChars).join('');\r\n\r\n return {\r\n truncatedText,\r\n isTruncated: true,\r\n truncationIndex: startChars,\r\n ellipsisWidth,\r\n originalLength: graphemes.length,\r\n };\r\n}"],"names":["applyEllipsis","text","options","maxWidth","maxHeight","ellipsisChar","measureFn","truncatedText","isTruncated","truncationIndex","ellipsisWidth","originalLength","width","originalMeasurement","originalWidth","originalHeight","height","needsTruncation","segmentGraphemes","length","widthTruncated","truncateByWidth","heightTruncated","truncateByHeight","graphemes","availableWidth","low","high","bestFit","mid","Math","floor","candidate","slice","join","measurement","candidateWidth","_measureFn","lines","split","accumulatedText","lineIndex","testText","lastFittingLine","withEllipsis","replace","firstLineWidth"],"mappings":"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"}
1
+ {"version":3,"file":"ellipsis.mjs","sources":["../../../src/text/ellipsis.ts"],"sourcesContent":["/**\n * Ellipsis Text Truncation System\n * \n * Implements text truncation with ellipsis when content exceeds bounds,\n * using binary search for optimal truncation points.\n */\n\nimport { segmentGraphemes } from './unicode';\n\nexport interface EllipsisOptions {\n maxWidth?: number;\n maxHeight?: number;\n ellipsisChar: string; // Default: \"…\"\n measureFn: (text: string) => number | { width: number; height: number };\n}\n\nexport interface EllipsisResult {\n truncatedText: string;\n isTruncated: boolean;\n truncationIndex: number; // Grapheme index where truncation occurred\n ellipsisWidth: number;\n originalLength: number;\n}\n\n/**\n * Apply ellipsis truncation to text based on width/height constraints\n */\nexport function applyEllipsis(\n text: string,\n options: EllipsisOptions\n): EllipsisResult {\n const { maxWidth, maxHeight, ellipsisChar, measureFn } = options;\n \n if (!text) {\n return {\n truncatedText: '',\n isTruncated: false,\n truncationIndex: 0,\n ellipsisWidth: 0,\n originalLength: 0,\n };\n }\n\n // Measure ellipsis width\n const ellipsisWidth = typeof measureFn(ellipsisChar) === 'number' \n ? measureFn(ellipsisChar) as number\n : (measureFn(ellipsisChar) as { width: number }).width;\n\n // Check if truncation is needed\n const originalMeasurement = measureFn(text);\n const originalWidth = typeof originalMeasurement === 'number' \n ? originalMeasurement \n : originalMeasurement.width;\n const originalHeight = typeof originalMeasurement === 'number'\n ? 0 // Height constraint not applicable for single dimension measure\n : originalMeasurement.height;\n\n let needsTruncation = false;\n if (maxWidth && originalWidth > maxWidth) needsTruncation = true;\n if (maxHeight && originalHeight > maxHeight) needsTruncation = true;\n\n if (!needsTruncation) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: segmentGraphemes(text).length,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n }\n\n // Apply width-based truncation\n if (maxWidth) {\n const widthTruncated = truncateByWidth(text, maxWidth, ellipsisChar, ellipsisWidth, measureFn);\n return {\n ...widthTruncated,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n }\n\n // Apply height-based truncation (for multi-line text)\n if (maxHeight) {\n const heightTruncated = truncateByHeight(text, maxHeight, ellipsisChar, measureFn);\n return {\n ...heightTruncated,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n }\n\n // Fallback - should not reach here\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: segmentGraphemes(text).length,\n ellipsisWidth,\n originalLength: segmentGraphemes(text).length,\n };\n}\n\n/**\n * Truncate text based on width constraint using binary search\n */\nfunction truncateByWidth(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n ellipsisWidth: number,\n measureFn: (text: string) => number | { width: number; height: number }\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n // Binary search for optimal truncation point\n let low = 0;\n let high = graphemes.length;\n let bestFit = 0;\n\n while (low <= high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = graphemes.slice(0, mid).join('');\n \n const measurement = measureFn(candidate);\n const candidateWidth = typeof measurement === 'number' \n ? measurement \n : measurement.width;\n\n if (candidateWidth <= availableWidth) {\n bestFit = mid;\n low = mid + 1;\n } else {\n high = mid - 1;\n }\n }\n\n // Handle edge cases\n if (bestFit === 0) {\n // Even single character doesn't fit - return ellipsis only\n return {\n truncatedText: ellipsisChar,\n isTruncated: true,\n truncationIndex: 0,\n };\n }\n\n if (bestFit === graphemes.length) {\n // Everything fits even with ellipsis space reserved\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n };\n }\n\n // Create truncated text with ellipsis\n const truncatedText = graphemes.slice(0, bestFit).join('') + ellipsisChar;\n\n return {\n truncatedText,\n isTruncated: true,\n truncationIndex: bestFit,\n };\n}\n\n/**\n * Truncate text based on height constraint\n */\nfunction truncateByHeight(\n text: string,\n maxHeight: number,\n ellipsisChar: string,\n measureFn: (text: string) => number | { width: number; height: number }\n): Omit<EllipsisResult, 'ellipsisWidth' | 'originalLength'> {\n const lines = text.split('\\n');\n let accumulatedText = '';\n let lineIndex = 0;\n\n // Add lines until height exceeded\n for (lineIndex = 0; lineIndex < lines.length; lineIndex++) {\n const testText = lineIndex === 0 \n ? lines[lineIndex] \n : accumulatedText + '\\n' + lines[lineIndex];\n \n const measurement = measureFn(testText);\n const height = typeof measurement === 'number' \n ? 0 // Single dimension measure doesn't provide height\n : measurement.height;\n\n if (height > maxHeight && accumulatedText) {\n // Previous text fits, current doesn't - truncate at previous\n break;\n }\n\n accumulatedText = testText;\n\n // If this is the last line and it fits, no truncation needed\n if (lineIndex === lines.length - 1) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: segmentGraphemes(text).length,\n };\n }\n }\n\n // If we need to truncate the last fitting line to add ellipsis\n if (lineIndex > 0) {\n const lastFittingLine = lines[lineIndex - 1];\n const withEllipsis = lastFittingLine + ellipsisChar;\n const graphemes = segmentGraphemes(accumulatedText);\n\n return {\n truncatedText: accumulatedText.replace(/[^\\n]*$/, withEllipsis),\n isTruncated: true,\n truncationIndex: graphemes.length - segmentGraphemes(lastFittingLine).length + segmentGraphemes(withEllipsis).length - 1,\n };\n }\n\n // First line doesn't fit - try width-based truncation on first line\n const firstLineWidth = typeof measureFn === 'function' \n ? (measureFn(lines[0]) as any)?.width || 1000\n : 1000; // Fallback width\n\n return truncateByWidth(lines[0], firstLineWidth, ellipsisChar, 0, measureFn);\n}\n\n/**\n * Find optimal truncation point using binary search\n */\nexport function findTruncationPoint(\n text: string,\n maxWidth: number,\n ellipsisWidth: number,\n measureFn: (text: string) => number\n): number {\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n let low = 0;\n let high = graphemes.length;\n\n while (low < high) {\n const mid = Math.floor((low + high + 1) / 2);\n const candidate = graphemes.slice(0, mid).join('');\n const width = measureFn(candidate);\n\n if (width <= availableWidth) {\n low = mid;\n } else {\n high = mid - 1;\n }\n }\n\n return low;\n}\n\n/**\n * Smart truncation that tries to break at word boundaries\n */\nexport function smartTruncate(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const availableWidth = maxWidth - ellipsisWidth;\n \n // First try exact truncation\n const exactPoint = findTruncationPoint(text, maxWidth, ellipsisWidth, measureFn);\n const graphemes = segmentGraphemes(text);\n \n if (exactPoint === 0) {\n return {\n truncatedText: ellipsisChar,\n isTruncated: true,\n truncationIndex: 0,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n if (exactPoint >= graphemes.length) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n // Try to find a word boundary before the exact point\n const textUpToPoint = graphemes.slice(0, exactPoint).join('');\n const words = textUpToPoint.split(/(\\s+)/);\n \n if (words.length > 1) {\n // Try truncating at last complete word\n const wordsWithoutLast = words.slice(0, -2); // Remove last word and space\n const wordBoundaryText = wordsWithoutLast.join('');\n const wordBoundaryWidth = measureFn(wordBoundaryText);\n \n if (wordBoundaryWidth + ellipsisWidth <= maxWidth && wordBoundaryText.trim()) {\n const wordBoundaryGraphemes = segmentGraphemes(wordBoundaryText);\n return {\n truncatedText: wordBoundaryText.trim() + ellipsisChar,\n isTruncated: true,\n truncationIndex: wordBoundaryGraphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n }\n\n // Fall back to character truncation\n return {\n truncatedText: graphemes.slice(0, exactPoint).join('') + ellipsisChar,\n isTruncated: true,\n truncationIndex: exactPoint,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n}\n\n/**\n * Truncate multi-line text with ellipsis on the last visible line\n */\nexport function truncateMultiline(\n lines: string[],\n maxLines: number,\n ellipsisChar: string,\n maxWidth?: number,\n measureFn?: (text: string) => number\n): {\n truncatedLines: string[];\n isTruncated: boolean;\n lastLineIndex: number;\n} {\n if (lines.length <= maxLines) {\n return {\n truncatedLines: lines,\n isTruncated: false,\n lastLineIndex: lines.length - 1,\n };\n }\n\n // Take lines up to limit\n const visibleLines = lines.slice(0, maxLines);\n \n // Add ellipsis to last line if needed\n if (maxWidth && measureFn) {\n const lastLineIndex = visibleLines.length - 1;\n const lastLine = visibleLines[lastLineIndex];\n const lastLineWithEllipsis = lastLine + ellipsisChar;\n \n if (measureFn(lastLineWithEllipsis) > maxWidth) {\n // Last line + ellipsis doesn't fit, truncate it\n const ellipsisWidth = measureFn(ellipsisChar);\n const truncationPoint = findTruncationPoint(lastLine, maxWidth, ellipsisWidth, measureFn);\n const graphemes = segmentGraphemes(lastLine);\n visibleLines[lastLineIndex] = graphemes.slice(0, truncationPoint).join('') + ellipsisChar;\n } else {\n visibleLines[lastLineIndex] = lastLineWithEllipsis;\n }\n } else {\n // Just add ellipsis to last line\n const lastLineIndex = visibleLines.length - 1;\n visibleLines[lastLineIndex] = visibleLines[lastLineIndex] + ellipsisChar;\n }\n\n return {\n truncatedLines: visibleLines,\n isTruncated: true,\n lastLineIndex: maxLines - 1,\n };\n}\n\n/**\n * Calculate ellipsis positioning for different alignments\n */\nexport function getEllipsisPosition(\n text: string,\n position: 'end' | 'middle' | 'start',\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const graphemes = segmentGraphemes(text);\n const totalWidth = measureFn(text);\n \n if (totalWidth <= maxWidth) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n switch (position) {\n case 'start':\n return truncateFromStart(text, maxWidth, ellipsisChar, measureFn);\n case 'middle':\n return truncateFromMiddle(text, maxWidth, ellipsisChar, measureFn);\n case 'end':\n default:\n return smartTruncate(text, maxWidth, ellipsisChar, measureFn);\n }\n}\n\n/**\n * Truncate from start with ellipsis at beginning\n */\nfunction truncateFromStart(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n let low = 0;\n let high = graphemes.length;\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const candidate = graphemes.slice(mid).join('');\n const width = measureFn(candidate);\n\n if (width <= availableWidth) {\n high = mid;\n } else {\n low = mid + 1;\n }\n }\n\n if (low >= graphemes.length) {\n return {\n truncatedText: ellipsisChar,\n isTruncated: true,\n truncationIndex: 0,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n return {\n truncatedText: ellipsisChar + graphemes.slice(low).join(''),\n isTruncated: true,\n truncationIndex: low,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n}\n\n/**\n * Truncate from middle with ellipsis in center\n */\nfunction truncateFromMiddle(\n text: string,\n maxWidth: number,\n ellipsisChar: string,\n measureFn: (text: string) => number\n): EllipsisResult {\n const ellipsisWidth = measureFn(ellipsisChar);\n const graphemes = segmentGraphemes(text);\n const availableWidth = maxWidth - ellipsisWidth;\n\n // Binary search for optimal split\n let low = 0;\n let high = Math.floor(graphemes.length / 2);\n\n while (low < high) {\n const startChars = Math.floor((low + high + 1) / 2);\n const endChars = startChars;\n \n const candidate = graphemes.slice(0, startChars).join('') + \n graphemes.slice(-endChars).join('');\n const width = measureFn(candidate);\n\n if (width <= availableWidth) {\n low = startChars;\n } else {\n high = startChars - 1;\n }\n }\n\n const startChars = low;\n const endChars = low;\n\n if (startChars + endChars >= graphemes.length) {\n return {\n truncatedText: text,\n isTruncated: false,\n truncationIndex: graphemes.length,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n }\n\n const truncatedText = graphemes.slice(0, startChars).join('') + \n ellipsisChar + \n graphemes.slice(-endChars).join('');\n\n return {\n truncatedText,\n isTruncated: true,\n truncationIndex: startChars,\n ellipsisWidth,\n originalLength: graphemes.length,\n };\n}"],"names":["applyEllipsis","text","options","maxWidth","maxHeight","ellipsisChar","measureFn","truncatedText","isTruncated","truncationIndex","ellipsisWidth","originalLength","width","originalMeasurement","originalWidth","originalHeight","height","needsTruncation","segmentGraphemes","length","widthTruncated","truncateByWidth","heightTruncated","truncateByHeight","graphemes","availableWidth","low","high","bestFit","mid","Math","floor","candidate","slice","join","measurement","candidateWidth","_measureFn","lines","split","accumulatedText","lineIndex","testText","lastFittingLine","withEllipsis","replace","firstLineWidth"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAmBA;AACA;AACA;AACO,SAASA,aAAaA,CAC3BC,IAAY,EACZC,OAAwB,EACR;EAChB,MAAM;IAAEC,QAAQ;IAAEC,SAAS;IAAEC,YAAY;AAAEC,IAAAA;AAAU,GAAC,GAAGJ,OAAO;EAEhE,IAAI,CAACD,IAAI,EAAE;IACT,OAAO;AACLM,MAAAA,aAAa,EAAE,EAAE;AACjBC,MAAAA,WAAW,EAAE,KAAK;AAClBC,MAAAA,eAAe,EAAE,CAAC;AAClBC,MAAAA,aAAa,EAAE,CAAC;AAChBC,MAAAA,cAAc,EAAE;KACjB;AACH,EAAA;;AAEA;EACA,MAAMD,aAAa,GAAG,OAAOJ,SAAS,CAACD,YAAY,CAAC,KAAK,QAAQ,GAC7DC,SAAS,CAACD,YAAY,CAAC,GACtBC,SAAS,CAACD,YAAY,CAAC,CAAuBO,KAAK;;AAExD;AACA,EAAA,MAAMC,mBAAmB,GAAGP,SAAS,CAACL,IAAI,CAAC;EAC3C,MAAMa,aAAa,GAAG,OAAOD,mBAAmB,KAAK,QAAQ,GACzDA,mBAAmB,GACnBA,mBAAmB,CAACD,KAAK;EAC7B,MAAMG,cAAc,GAAG,OAAOF,mBAAmB,KAAK,QAAQ,GAC1D,CAAC;IACDA,mBAAmB,CAACG,MAAM;EAE9B,IAAIC,eAAe,GAAG,KAAK;EAC3B,IAAId,QAAQ,IAAIW,aAAa,GAAGX,QAAQ,EAAEc,eAAe,GAAG,IAAI;EAChE,IAAIb,SAAS,IAAIW,cAAc,GAAGX,SAAS,EAAEa,eAAe,GAAG,IAAI;EAEnE,IAAI,CAACA,eAAe,EAAE;IACpB,OAAO;AACLV,MAAAA,aAAa,EAAEN,IAAI;AACnBO,MAAAA,WAAW,EAAE,KAAK;AAClBC,MAAAA,eAAe,EAAES,gBAAgB,CAACjB,IAAI,CAAC,CAACkB,MAAM;MAC9CT,aAAa;AACbC,MAAAA,cAAc,EAAEO,gBAAgB,CAACjB,IAAI,CAAC,CAACkB;KACxC;AACH,EAAA;;AAEA;AACA,EAAA,IAAIhB,QAAQ,EAAE;AACZ,IAAA,MAAMiB,cAAc,GAAGC,eAAe,CAACpB,IAAI,EAAEE,QAAQ,EAAEE,YAAY,EAAEK,aAAa,EAAEJ,SAAS,CAAC;IAC9F,OAAO;AACL,MAAA,GAAGc,cAAc;MACjBV,aAAa;AACbC,MAAAA,cAAc,EAAEO,gBAAgB,CAACjB,IAAI,CAAC,CAACkB;KACxC;AACH,EAAA;;AAEA;AACA,EAAA,IAAIf,SAAS,EAAE;IACb,MAAMkB,eAAe,GAAGC,gBAAgB,CAACtB,IAAI,EAAEG,SAAS,EAAEC,YAAY,EAAEC,SAAS,CAAC;IAClF,OAAO;AACL,MAAA,GAAGgB,eAAe;MAClBZ,aAAa;AACbC,MAAAA,cAAc,EAAEO,gBAAgB,CAACjB,IAAI,CAAC,CAACkB;KACxC;AACH,EAAA;;AAEA;EACA,OAAO;AACLZ,IAAAA,aAAa,EAAEN,IAAI;AACnBO,IAAAA,WAAW,EAAE,KAAK;AAClBC,IAAAA,eAAe,EAAES,gBAAgB,CAACjB,IAAI,CAAC,CAACkB,MAAM;IAC9CT,aAAa;AACbC,IAAAA,cAAc,EAAEO,gBAAgB,CAACjB,IAAI,CAAC,CAACkB;GACxC;AACH;;AAEA;AACA;AACA;AACA,SAASE,eAAeA,CACtBpB,IAAY,EACZE,QAAgB,EAChBE,YAAoB,EACpBK,aAAqB,EACrBJ,SAAuE,EACb;AAC1D,EAAA,MAAMkB,SAAS,GAAGN,gBAAgB,CAACjB,IAAI,CAAC;AACxC,EAAA,MAAMwB,cAAc,GAAGtB,QAAQ,GAAGO,aAAa;;AAE/C;EACA,IAAIgB,GAAG,GAAG,CAAC;AACX,EAAA,IAAIC,IAAI,GAAGH,SAAS,CAACL,MAAM;EAC3B,IAAIS,OAAO,GAAG,CAAC;EAEf,OAAOF,GAAG,IAAIC,IAAI,EAAE;AAClB,IAAA,MAAME,GAAG,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACL,GAAG,GAAGC,IAAI,IAAI,CAAC,CAAC;AACxC,IAAA,MAAMK,SAAS,GAAGR,SAAS,CAACS,KAAK,CAAC,CAAC,EAAEJ,GAAG,CAAC,CAACK,IAAI,CAAC,EAAE,CAAC;AAElD,IAAA,MAAMC,WAAW,GAAG7B,SAAS,CAAC0B,SAAS,CAAC;IACxC,MAAMI,cAAc,GAAG,OAAOD,WAAW,KAAK,QAAQ,GAClDA,WAAW,GACXA,WAAW,CAACvB,KAAK;IAErB,IAAIwB,cAAc,IAAIX,cAAc,EAAE;AACpCG,MAAAA,OAAO,GAAGC,GAAG;MACbH,GAAG,GAAGG,GAAG,GAAG,CAAC;AACf,IAAA,CAAC,MAAM;MACLF,IAAI,GAAGE,GAAG,GAAG,CAAC;AAChB,IAAA;AACF,EAAA;;AAEA;EACA,IAAID,OAAO,KAAK,CAAC,EAAE;AACjB;IACA,OAAO;AACLrB,MAAAA,aAAa,EAAEF,YAAY;AAC3BG,MAAAA,WAAW,EAAE,IAAI;AACjBC,MAAAA,eAAe,EAAE;KAClB;AACH,EAAA;AAEA,EAAA,IAAImB,OAAO,KAAKJ,SAAS,CAACL,MAAM,EAAE;AAChC;IACA,OAAO;AACLZ,MAAAA,aAAa,EAAEN,IAAI;AACnBO,MAAAA,WAAW,EAAE,KAAK;MAClBC,eAAe,EAAEe,SAAS,CAACL;KAC5B;AACH,EAAA;;AAEA;AACA,EAAA,MAAMZ,aAAa,GAAGiB,SAAS,CAACS,KAAK,CAAC,CAAC,EAAEL,OAAO,CAAC,CAACM,IAAI,CAAC,EAAE,CAAC,GAAG7B,YAAY;EAEzE,OAAO;IACLE,aAAa;AACbC,IAAAA,WAAW,EAAE,IAAI;AACjBC,IAAAA,eAAe,EAAEmB;GAClB;AACH;;AAEA;AACA;AACA;AACA,SAASL,gBAAgBA,CACvBtB,IAAY,EACZG,SAAiB,EACjBC,YAAoB,EACpBC,SAAuE,EACb;AAAA,EAAA,IAAA+B,UAAA;AAC1D,EAAA,MAAMC,KAAK,GAAGrC,IAAI,CAACsC,KAAK,CAAC,IAAI,CAAC;EAC9B,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,SAAS,GAAG,CAAC;;AAEjB;AACA,EAAA,KAAKA,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGH,KAAK,CAACnB,MAAM,EAAEsB,SAAS,EAAE,EAAE;AACzD,IAAA,MAAMC,QAAQ,GAAGD,SAAS,KAAK,CAAC,GAC5BH,KAAK,CAACG,SAAS,CAAC,GAChBD,eAAe,GAAG,IAAI,GAAGF,KAAK,CAACG,SAAS,CAAC;AAE7C,IAAA,MAAMN,WAAW,GAAG7B,SAAS,CAACoC,QAAQ,CAAC;IACvC,MAAM1B,MAAM,GAAG,OAAOmB,WAAW,KAAK,QAAQ,GAC1C,CAAC;MACDA,WAAW,CAACnB,MAAM;AAEtB,IAAA,IAAIA,MAAM,GAAGZ,SAAS,IAAIoC,eAAe,EAAE;AACzC;AACA,MAAA;AACF,IAAA;AAEAA,IAAAA,eAAe,GAAGE,QAAQ;;AAE1B;AACA,IAAA,IAAID,SAAS,KAAKH,KAAK,CAACnB,MAAM,GAAG,CAAC,EAAE;MAClC,OAAO;AACLZ,QAAAA,aAAa,EAAEN,IAAI;AACnBO,QAAAA,WAAW,EAAE,KAAK;AAClBC,QAAAA,eAAe,EAAES,gBAAgB,CAACjB,IAAI,CAAC,CAACkB;OACzC;AACH,IAAA;AACF,EAAA;;AAEA;EACA,IAAIsB,SAAS,GAAG,CAAC,EAAE;AACjB,IAAA,MAAME,eAAe,GAAGL,KAAK,CAACG,SAAS,GAAG,CAAC,CAAC;AAC5C,IAAA,MAAMG,YAAY,GAAGD,eAAe,GAAGtC,YAAY;AACnD,IAAA,MAAMmB,SAAS,GAAGN,gBAAgB,CAACsB,eAAe,CAAC;IAEnD,OAAO;MACLjC,aAAa,EAAEiC,eAAe,CAACK,OAAO,CAAC,SAAS,EAAED,YAAY,CAAC;AAC/DpC,MAAAA,WAAW,EAAE,IAAI;AACjBC,MAAAA,eAAe,EAAEe,SAAS,CAACL,MAAM,GAAGD,gBAAgB,CAACyB,eAAe,CAAC,CAACxB,MAAM,GAAGD,gBAAgB,CAAC0B,YAAY,CAAC,CAACzB,MAAM,GAAG;KACxH;AACH,EAAA;;AAEA;AACA,EAAA,MAAM2B,cAAc,GAAG,OAAOxC,SAAS,KAAK,UAAU,GAClD,CAAA,CAAA+B,UAAA,GAAC/B,SAAS,CAACgC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAA,IAAA,IAAAD,UAAA,KAAA,MAAA,GAAA,MAAA,GAApBA,UAAA,CAA8BzB,KAAK,KAAI,IAAI,GAC3C,IAAI,CAAC;;AAET,EAAA,OAAOS,eAAe,CAACiB,KAAK,CAAC,CAAC,CAAC,EAAEQ,cAAc,EAAEzC,YAAY,EAAE,CAAC,EAAEC,SAAS,CAAC;AAC9E;;;;"}
File without changes
File without changes
File without changes