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

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 → konva-master}/CHANGELOG.md +2 -1
  18. package/debug/{konva → konva-master}/LICENSE +0 -0
  19. package/debug/{konva → konva-master}/README.md +7 -3
  20. package/debug/{konva → konva-master}/gulpfile.mjs +0 -0
  21. package/debug/{konva → konva-master}/package.json +1 -1
  22. package/debug/{konva → konva-master}/release.sh +1 -4
  23. package/debug/{konva → konva-master}/resources/doc-includes/ContainerParams.txt +0 -0
  24. package/debug/{konva → konva-master}/resources/doc-includes/NodeParams.txt +0 -0
  25. package/debug/{konva → konva-master}/resources/doc-includes/ShapeParams.txt +0 -0
  26. package/debug/{konva → konva-master}/resources/jsdoc.conf.json +0 -0
  27. package/debug/{konva → konva-master}/rollup.config.mjs +0 -0
  28. package/debug/{konva → konva-master}/src/Animation.ts +0 -0
  29. package/debug/{konva → konva-master}/src/BezierFunctions.ts +0 -0
  30. package/debug/{konva → konva-master}/src/Canvas.ts +37 -0
  31. package/debug/{konva → konva-master}/src/Container.ts +0 -0
  32. package/debug/{konva → konva-master}/src/Context.ts +0 -0
  33. package/debug/{konva → konva-master}/src/Core.ts +0 -0
  34. package/debug/{konva → konva-master}/src/DragAndDrop.ts +0 -0
  35. package/debug/{konva → konva-master}/src/Factory.ts +0 -0
  36. package/debug/{konva → konva-master}/src/FastLayer.ts +0 -0
  37. package/debug/{konva → konva-master}/src/Global.ts +0 -0
  38. package/debug/{konva → konva-master}/src/Group.ts +0 -0
  39. package/debug/{konva → konva-master}/src/Layer.ts +0 -0
  40. package/debug/{konva → konva-master}/src/Node.ts +0 -0
  41. package/debug/{konva → konva-master}/src/PointerEvents.ts +0 -0
  42. package/debug/{konva → konva-master}/src/Shape.ts +0 -0
  43. package/debug/{konva → konva-master}/src/Stage.ts +0 -0
  44. package/debug/{konva → konva-master}/src/Tween.ts +0 -0
  45. package/debug/{konva → konva-master}/src/Util.ts +0 -0
  46. package/debug/{konva → konva-master}/src/Validators.ts +0 -0
  47. package/debug/{konva → konva-master}/src/_CoreInternals.ts +0 -0
  48. package/debug/{konva → konva-master}/src/_FullInternals.ts +0 -0
  49. package/debug/{konva → konva-master}/src/canvas-backend.ts +0 -0
  50. package/debug/{konva → konva-master}/src/filters/Blur.ts +0 -0
  51. package/debug/{konva → konva-master}/src/filters/Brighten.ts +0 -0
  52. package/debug/{konva → konva-master}/src/filters/Brightness.ts +0 -0
  53. package/debug/{konva → konva-master}/src/filters/Contrast.ts +0 -0
  54. package/debug/{konva → konva-master}/src/filters/Emboss.ts +0 -0
  55. package/debug/{konva → konva-master}/src/filters/Enhance.ts +0 -0
  56. package/debug/{konva → konva-master}/src/filters/Grayscale.ts +0 -0
  57. package/debug/{konva → konva-master}/src/filters/HSL.ts +0 -0
  58. package/debug/{konva → konva-master}/src/filters/HSV.ts +0 -0
  59. package/debug/{konva → konva-master}/src/filters/Invert.ts +0 -0
  60. package/debug/{konva → konva-master}/src/filters/Kaleidoscope.ts +0 -0
  61. package/debug/{konva → konva-master}/src/filters/Mask.ts +0 -0
  62. package/debug/{konva → konva-master}/src/filters/Noise.ts +0 -0
  63. package/debug/{konva → konva-master}/src/filters/Pixelate.ts +0 -0
  64. package/debug/{konva → konva-master}/src/filters/Posterize.ts +0 -0
  65. package/debug/{konva → konva-master}/src/filters/RGB.ts +0 -0
  66. package/debug/{konva → konva-master}/src/filters/RGBA.ts +0 -0
  67. package/debug/{konva → konva-master}/src/filters/Sepia.ts +0 -0
  68. package/debug/{konva → konva-master}/src/filters/Solarize.ts +0 -0
  69. package/debug/{konva → konva-master}/src/filters/Threshold.ts +0 -0
  70. package/debug/{konva → konva-master}/src/index.ts +0 -0
  71. package/debug/{konva → konva-master}/src/shapes/Arc.ts +0 -0
  72. package/debug/{konva → konva-master}/src/shapes/Arrow.ts +0 -0
  73. package/debug/{konva → konva-master}/src/shapes/Circle.ts +0 -0
  74. package/debug/{konva → konva-master}/src/shapes/Ellipse.ts +0 -0
  75. package/debug/{konva → konva-master}/src/shapes/Image.ts +0 -0
  76. package/debug/{konva → konva-master}/src/shapes/Label.ts +0 -0
  77. package/debug/{konva → konva-master}/src/shapes/Line.ts +0 -0
  78. package/debug/{konva → konva-master}/src/shapes/Path.ts +0 -0
  79. package/debug/{konva → konva-master}/src/shapes/Rect.ts +0 -0
  80. package/debug/{konva → konva-master}/src/shapes/RegularPolygon.ts +0 -0
  81. package/debug/{konva → konva-master}/src/shapes/Ring.ts +0 -0
  82. package/debug/{konva → konva-master}/src/shapes/Sprite.ts +0 -0
  83. package/debug/{konva → konva-master}/src/shapes/Star.ts +0 -0
  84. package/debug/{konva → konva-master}/src/shapes/Text.ts +2 -2
  85. package/debug/{konva → konva-master}/src/shapes/TextPath.ts +0 -0
  86. package/debug/{konva → konva-master}/src/shapes/Transformer.ts +0 -0
  87. package/debug/{konva → konva-master}/src/shapes/Wedge.ts +0 -0
  88. package/debug/{konva → konva-master}/src/skia-backend.ts +0 -0
  89. package/debug/{konva → konva-master}/src/types.ts +0 -0
  90. package/debug/{konva → konva-master}/tsconfig.json +0 -0
  91. package/debug/{konva → konva-master}/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 +1133 -1129
  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 +1133 -1129
  133. package/dist/index.mjs.map +1 -1
  134. package/dist/index.node.cjs +1133 -1129
  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 +1133 -1129
  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/changeWidth.d.ts +0 -0
  391. package/dist/src/controls/changeWidth.d.ts.map +0 -0
  392. package/dist/src/controls/changeWidth.min.mjs +0 -0
  393. package/dist/src/controls/changeWidth.min.mjs.map +0 -0
  394. package/dist/src/controls/changeWidth.mjs +0 -0
  395. package/dist/src/controls/changeWidth.mjs.map +0 -0
  396. package/dist/src/controls/commonControls.d.ts +0 -0
  397. package/dist/src/controls/commonControls.d.ts.map +0 -0
  398. package/dist/src/controls/commonControls.min.mjs +0 -0
  399. package/dist/src/controls/commonControls.min.mjs.map +0 -0
  400. package/dist/src/controls/commonControls.mjs +0 -0
  401. package/dist/src/controls/commonControls.mjs.map +0 -0
  402. package/dist/src/controls/controlRendering.d.ts +0 -0
  403. package/dist/src/controls/controlRendering.d.ts.map +0 -0
  404. package/dist/src/controls/controlRendering.min.mjs +0 -0
  405. package/dist/src/controls/controlRendering.min.mjs.map +0 -0
  406. package/dist/src/controls/controlRendering.mjs +0 -0
  407. package/dist/src/controls/controlRendering.mjs.map +0 -0
  408. package/dist/src/controls/drag.d.ts +0 -0
  409. package/dist/src/controls/drag.d.ts.map +0 -0
  410. package/dist/src/controls/drag.min.mjs +0 -0
  411. package/dist/src/controls/drag.min.mjs.map +0 -0
  412. package/dist/src/controls/drag.mjs +0 -0
  413. package/dist/src/controls/drag.mjs.map +0 -0
  414. package/dist/src/controls/fireEvent.d.ts +0 -0
  415. package/dist/src/controls/fireEvent.d.ts.map +0 -0
  416. package/dist/src/controls/fireEvent.min.mjs +0 -0
  417. package/dist/src/controls/fireEvent.min.mjs.map +0 -0
  418. package/dist/src/controls/fireEvent.mjs +0 -0
  419. package/dist/src/controls/fireEvent.mjs.map +0 -0
  420. package/dist/src/controls/index.d.ts +0 -0
  421. package/dist/src/controls/index.d.ts.map +0 -0
  422. package/dist/src/controls/index.min.mjs +0 -0
  423. package/dist/src/controls/index.min.mjs.map +0 -0
  424. package/dist/src/controls/index.mjs +0 -0
  425. package/dist/src/controls/index.mjs.map +0 -0
  426. package/dist/src/controls/pathControl.d.ts +0 -0
  427. package/dist/src/controls/pathControl.d.ts.map +0 -0
  428. package/dist/src/controls/pathControl.min.mjs +0 -0
  429. package/dist/src/controls/pathControl.min.mjs.map +0 -0
  430. package/dist/src/controls/pathControl.mjs +0 -0
  431. package/dist/src/controls/pathControl.mjs.map +0 -0
  432. package/dist/src/controls/polyControl.d.ts +0 -0
  433. package/dist/src/controls/polyControl.d.ts.map +0 -0
  434. package/dist/src/controls/polyControl.min.mjs +0 -0
  435. package/dist/src/controls/polyControl.min.mjs.map +0 -0
  436. package/dist/src/controls/polyControl.mjs +0 -0
  437. package/dist/src/controls/polyControl.mjs.map +0 -0
  438. package/dist/src/controls/rotate.d.ts +0 -0
  439. package/dist/src/controls/rotate.d.ts.map +0 -0
  440. package/dist/src/controls/rotate.min.mjs +0 -0
  441. package/dist/src/controls/rotate.min.mjs.map +0 -0
  442. package/dist/src/controls/rotate.mjs +0 -0
  443. package/dist/src/controls/rotate.mjs.map +0 -0
  444. package/dist/src/controls/scale.d.ts +0 -0
  445. package/dist/src/controls/scale.d.ts.map +0 -0
  446. package/dist/src/controls/scale.min.mjs +0 -0
  447. package/dist/src/controls/scale.min.mjs.map +0 -0
  448. package/dist/src/controls/scale.mjs +0 -0
  449. package/dist/src/controls/scale.mjs.map +0 -0
  450. package/dist/src/controls/scaleSkew.d.ts +0 -0
  451. package/dist/src/controls/scaleSkew.d.ts.map +0 -0
  452. package/dist/src/controls/scaleSkew.min.mjs +0 -0
  453. package/dist/src/controls/scaleSkew.min.mjs.map +0 -0
  454. package/dist/src/controls/scaleSkew.mjs +0 -0
  455. package/dist/src/controls/scaleSkew.mjs.map +0 -0
  456. package/dist/src/controls/skew.d.ts +0 -0
  457. package/dist/src/controls/skew.d.ts.map +0 -0
  458. package/dist/src/controls/skew.min.mjs +0 -0
  459. package/dist/src/controls/skew.min.mjs.map +0 -0
  460. package/dist/src/controls/skew.mjs +0 -0
  461. package/dist/src/controls/skew.mjs.map +0 -0
  462. package/dist/src/controls/util.d.ts +0 -0
  463. package/dist/src/controls/util.d.ts.map +0 -0
  464. package/dist/src/controls/util.min.mjs +0 -0
  465. package/dist/src/controls/util.min.mjs.map +0 -0
  466. package/dist/src/controls/util.mjs +0 -0
  467. package/dist/src/controls/util.mjs.map +0 -0
  468. package/dist/src/controls/wrapWithFireEvent.d.ts +0 -0
  469. package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  470. package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -0
  471. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -0
  472. package/dist/src/controls/wrapWithFireEvent.mjs +0 -0
  473. package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -0
  474. package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  475. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  476. package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -0
  477. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -0
  478. package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -0
  479. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -0
  480. package/dist/src/env/browser.d.ts +0 -0
  481. package/dist/src/env/browser.d.ts.map +0 -0
  482. package/dist/src/env/browser.min.mjs +0 -0
  483. package/dist/src/env/browser.min.mjs.map +0 -0
  484. package/dist/src/env/browser.mjs +0 -0
  485. package/dist/src/env/browser.mjs.map +0 -0
  486. package/dist/src/env/index.d.ts +0 -0
  487. package/dist/src/env/index.d.ts.map +0 -0
  488. package/dist/src/env/index.min.mjs +0 -0
  489. package/dist/src/env/index.min.mjs.map +0 -0
  490. package/dist/src/env/index.mjs +0 -0
  491. package/dist/src/env/index.mjs.map +0 -0
  492. package/dist/src/env/node.d.ts +0 -0
  493. package/dist/src/env/node.d.ts.map +0 -0
  494. package/dist/src/env/types.d.ts +0 -0
  495. package/dist/src/env/types.d.ts.map +0 -0
  496. package/dist/src/filters/BaseFilter.d.ts +0 -0
  497. package/dist/src/filters/BaseFilter.d.ts.map +0 -0
  498. package/dist/src/filters/BaseFilter.min.mjs +0 -0
  499. package/dist/src/filters/BaseFilter.min.mjs.map +0 -0
  500. package/dist/src/filters/BaseFilter.mjs +0 -0
  501. package/dist/src/filters/BaseFilter.mjs.map +0 -0
  502. package/dist/src/filters/BlendColor.d.ts +0 -0
  503. package/dist/src/filters/BlendColor.d.ts.map +0 -0
  504. package/dist/src/filters/BlendColor.min.mjs +0 -0
  505. package/dist/src/filters/BlendColor.min.mjs.map +0 -0
  506. package/dist/src/filters/BlendColor.mjs +0 -0
  507. package/dist/src/filters/BlendColor.mjs.map +0 -0
  508. package/dist/src/filters/BlendImage.d.ts +0 -0
  509. package/dist/src/filters/BlendImage.d.ts.map +0 -0
  510. package/dist/src/filters/BlendImage.min.mjs +0 -0
  511. package/dist/src/filters/BlendImage.min.mjs.map +0 -0
  512. package/dist/src/filters/BlendImage.mjs +0 -0
  513. package/dist/src/filters/BlendImage.mjs.map +0 -0
  514. package/dist/src/filters/Blur.d.ts +0 -0
  515. package/dist/src/filters/Blur.d.ts.map +0 -0
  516. package/dist/src/filters/Blur.min.mjs +0 -0
  517. package/dist/src/filters/Blur.min.mjs.map +0 -0
  518. package/dist/src/filters/Blur.mjs +0 -0
  519. package/dist/src/filters/Blur.mjs.map +0 -0
  520. package/dist/src/filters/Boilerplate.d.ts +0 -0
  521. package/dist/src/filters/Boilerplate.d.ts.map +0 -0
  522. package/dist/src/filters/Brightness.d.ts +0 -0
  523. package/dist/src/filters/Brightness.d.ts.map +0 -0
  524. package/dist/src/filters/Brightness.min.mjs +0 -0
  525. package/dist/src/filters/Brightness.min.mjs.map +0 -0
  526. package/dist/src/filters/Brightness.mjs +0 -0
  527. package/dist/src/filters/Brightness.mjs.map +0 -0
  528. package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  529. package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  530. package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -0
  531. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -0
  532. package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -0
  533. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -0
  534. package/dist/src/filters/ColorMatrix.d.ts +0 -0
  535. package/dist/src/filters/ColorMatrix.d.ts.map +0 -0
  536. package/dist/src/filters/ColorMatrix.min.mjs +0 -0
  537. package/dist/src/filters/ColorMatrix.min.mjs.map +0 -0
  538. package/dist/src/filters/ColorMatrix.mjs +0 -0
  539. package/dist/src/filters/ColorMatrix.mjs.map +0 -0
  540. package/dist/src/filters/ColorMatrixFilters.d.ts +0 -0
  541. package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  542. package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -0
  543. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -0
  544. package/dist/src/filters/ColorMatrixFilters.mjs +0 -0
  545. package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -0
  546. package/dist/src/filters/Composed.d.ts +0 -0
  547. package/dist/src/filters/Composed.d.ts.map +0 -0
  548. package/dist/src/filters/Composed.min.mjs +0 -0
  549. package/dist/src/filters/Composed.min.mjs.map +0 -0
  550. package/dist/src/filters/Composed.mjs +0 -0
  551. package/dist/src/filters/Composed.mjs.map +0 -0
  552. package/dist/src/filters/Contrast.d.ts +0 -0
  553. package/dist/src/filters/Contrast.d.ts.map +0 -0
  554. package/dist/src/filters/Contrast.min.mjs +0 -0
  555. package/dist/src/filters/Contrast.min.mjs.map +0 -0
  556. package/dist/src/filters/Contrast.mjs +0 -0
  557. package/dist/src/filters/Contrast.mjs.map +0 -0
  558. package/dist/src/filters/Convolute.d.ts +0 -0
  559. package/dist/src/filters/Convolute.d.ts.map +0 -0
  560. package/dist/src/filters/Convolute.min.mjs +0 -0
  561. package/dist/src/filters/Convolute.min.mjs.map +0 -0
  562. package/dist/src/filters/Convolute.mjs +0 -0
  563. package/dist/src/filters/Convolute.mjs.map +0 -0
  564. package/dist/src/filters/FilterBackend.d.ts +0 -0
  565. package/dist/src/filters/FilterBackend.d.ts.map +0 -0
  566. package/dist/src/filters/FilterBackend.min.mjs +0 -0
  567. package/dist/src/filters/FilterBackend.min.mjs.map +0 -0
  568. package/dist/src/filters/FilterBackend.mjs +0 -0
  569. package/dist/src/filters/FilterBackend.mjs.map +0 -0
  570. package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -0
  571. package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  572. package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -0
  573. package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -0
  574. package/dist/src/filters/GLProbes/GLProbe.mjs +0 -0
  575. package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -0
  576. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -0
  577. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -0
  578. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  579. package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  580. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -0
  581. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -0
  582. package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -0
  583. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -0
  584. package/dist/src/filters/Gamma.d.ts +0 -0
  585. package/dist/src/filters/Gamma.d.ts.map +0 -0
  586. package/dist/src/filters/Gamma.min.mjs +0 -0
  587. package/dist/src/filters/Gamma.min.mjs.map +0 -0
  588. package/dist/src/filters/Gamma.mjs +0 -0
  589. package/dist/src/filters/Gamma.mjs.map +0 -0
  590. package/dist/src/filters/Grayscale.d.ts +0 -0
  591. package/dist/src/filters/Grayscale.d.ts.map +0 -0
  592. package/dist/src/filters/Grayscale.min.mjs +0 -0
  593. package/dist/src/filters/Grayscale.min.mjs.map +0 -0
  594. package/dist/src/filters/Grayscale.mjs +0 -0
  595. package/dist/src/filters/Grayscale.mjs.map +0 -0
  596. package/dist/src/filters/HueRotation.d.ts +0 -0
  597. package/dist/src/filters/HueRotation.d.ts.map +0 -0
  598. package/dist/src/filters/HueRotation.min.mjs +0 -0
  599. package/dist/src/filters/HueRotation.min.mjs.map +0 -0
  600. package/dist/src/filters/HueRotation.mjs +0 -0
  601. package/dist/src/filters/HueRotation.mjs.map +0 -0
  602. package/dist/src/filters/Invert.d.ts +0 -0
  603. package/dist/src/filters/Invert.d.ts.map +0 -0
  604. package/dist/src/filters/Invert.min.mjs +0 -0
  605. package/dist/src/filters/Invert.min.mjs.map +0 -0
  606. package/dist/src/filters/Invert.mjs +0 -0
  607. package/dist/src/filters/Invert.mjs.map +0 -0
  608. package/dist/src/filters/Noise.d.ts +0 -0
  609. package/dist/src/filters/Noise.d.ts.map +0 -0
  610. package/dist/src/filters/Noise.min.mjs +0 -0
  611. package/dist/src/filters/Noise.min.mjs.map +0 -0
  612. package/dist/src/filters/Noise.mjs +0 -0
  613. package/dist/src/filters/Noise.mjs.map +0 -0
  614. package/dist/src/filters/Pixelate.d.ts +0 -0
  615. package/dist/src/filters/Pixelate.d.ts.map +0 -0
  616. package/dist/src/filters/Pixelate.min.mjs +0 -0
  617. package/dist/src/filters/Pixelate.min.mjs.map +0 -0
  618. package/dist/src/filters/Pixelate.mjs +0 -0
  619. package/dist/src/filters/Pixelate.mjs.map +0 -0
  620. package/dist/src/filters/RemoveColor.d.ts +0 -0
  621. package/dist/src/filters/RemoveColor.d.ts.map +0 -0
  622. package/dist/src/filters/RemoveColor.min.mjs +0 -0
  623. package/dist/src/filters/RemoveColor.min.mjs.map +0 -0
  624. package/dist/src/filters/RemoveColor.mjs +0 -0
  625. package/dist/src/filters/RemoveColor.mjs.map +0 -0
  626. package/dist/src/filters/Resize.d.ts +0 -0
  627. package/dist/src/filters/Resize.d.ts.map +0 -0
  628. package/dist/src/filters/Resize.min.mjs +0 -0
  629. package/dist/src/filters/Resize.min.mjs.map +0 -0
  630. package/dist/src/filters/Resize.mjs +0 -0
  631. package/dist/src/filters/Resize.mjs.map +0 -0
  632. package/dist/src/filters/Saturation.d.ts +0 -0
  633. package/dist/src/filters/Saturation.d.ts.map +0 -0
  634. package/dist/src/filters/Saturation.min.mjs +0 -0
  635. package/dist/src/filters/Saturation.min.mjs.map +0 -0
  636. package/dist/src/filters/Saturation.mjs +0 -0
  637. package/dist/src/filters/Saturation.mjs.map +0 -0
  638. package/dist/src/filters/Vibrance.d.ts +0 -0
  639. package/dist/src/filters/Vibrance.d.ts.map +0 -0
  640. package/dist/src/filters/Vibrance.min.mjs +0 -0
  641. package/dist/src/filters/Vibrance.min.mjs.map +0 -0
  642. package/dist/src/filters/Vibrance.mjs +0 -0
  643. package/dist/src/filters/Vibrance.mjs.map +0 -0
  644. package/dist/src/filters/WebGLFilterBackend.d.ts +0 -0
  645. package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  646. package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -0
  647. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -0
  648. package/dist/src/filters/WebGLFilterBackend.mjs +0 -0
  649. package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -0
  650. package/dist/src/filters/filters.d.ts +0 -0
  651. package/dist/src/filters/filters.d.ts.map +0 -0
  652. package/dist/src/filters/filters.min.mjs +0 -0
  653. package/dist/src/filters/filters.min.mjs.map +0 -0
  654. package/dist/src/filters/filters.mjs +0 -0
  655. package/dist/src/filters/filters.mjs.map +0 -0
  656. package/dist/src/filters/index.d.ts +0 -0
  657. package/dist/src/filters/index.d.ts.map +0 -0
  658. package/dist/src/filters/shaders/baseFilter.d.ts +0 -0
  659. package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -0
  660. package/dist/src/filters/shaders/baseFilter.min.mjs +0 -0
  661. package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -0
  662. package/dist/src/filters/shaders/baseFilter.mjs +0 -0
  663. package/dist/src/filters/shaders/baseFilter.mjs.map +0 -0
  664. package/dist/src/filters/shaders/blendColor.d.ts +0 -0
  665. package/dist/src/filters/shaders/blendColor.d.ts.map +0 -0
  666. package/dist/src/filters/shaders/blendColor.min.mjs +0 -0
  667. package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -0
  668. package/dist/src/filters/shaders/blendColor.mjs +0 -0
  669. package/dist/src/filters/shaders/blendColor.mjs.map +0 -0
  670. package/dist/src/filters/shaders/blendImage.d.ts +0 -0
  671. package/dist/src/filters/shaders/blendImage.d.ts.map +0 -0
  672. package/dist/src/filters/shaders/blendImage.min.mjs +0 -0
  673. package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -0
  674. package/dist/src/filters/shaders/blendImage.mjs +0 -0
  675. package/dist/src/filters/shaders/blendImage.mjs.map +0 -0
  676. package/dist/src/filters/shaders/blur.d.ts +0 -0
  677. package/dist/src/filters/shaders/blur.d.ts.map +0 -0
  678. package/dist/src/filters/shaders/blur.min.mjs +0 -0
  679. package/dist/src/filters/shaders/blur.min.mjs.map +0 -0
  680. package/dist/src/filters/shaders/blur.mjs +0 -0
  681. package/dist/src/filters/shaders/blur.mjs.map +0 -0
  682. package/dist/src/filters/shaders/brightness.d.ts +0 -0
  683. package/dist/src/filters/shaders/brightness.d.ts.map +0 -0
  684. package/dist/src/filters/shaders/brightness.min.mjs +0 -0
  685. package/dist/src/filters/shaders/brightness.min.mjs.map +0 -0
  686. package/dist/src/filters/shaders/brightness.mjs +0 -0
  687. package/dist/src/filters/shaders/brightness.mjs.map +0 -0
  688. package/dist/src/filters/shaders/colorMatrix.d.ts +0 -0
  689. package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  690. package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -0
  691. package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -0
  692. package/dist/src/filters/shaders/colorMatrix.mjs +0 -0
  693. package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -0
  694. package/dist/src/filters/shaders/constrast.d.ts +0 -0
  695. package/dist/src/filters/shaders/constrast.d.ts.map +0 -0
  696. package/dist/src/filters/shaders/constrast.min.mjs +0 -0
  697. package/dist/src/filters/shaders/constrast.min.mjs.map +0 -0
  698. package/dist/src/filters/shaders/constrast.mjs +0 -0
  699. package/dist/src/filters/shaders/constrast.mjs.map +0 -0
  700. package/dist/src/filters/shaders/convolute.d.ts +0 -0
  701. package/dist/src/filters/shaders/convolute.d.ts.map +0 -0
  702. package/dist/src/filters/shaders/convolute.min.mjs +0 -0
  703. package/dist/src/filters/shaders/convolute.min.mjs.map +0 -0
  704. package/dist/src/filters/shaders/convolute.mjs +0 -0
  705. package/dist/src/filters/shaders/convolute.mjs.map +0 -0
  706. package/dist/src/filters/shaders/gamma.d.ts +0 -0
  707. package/dist/src/filters/shaders/gamma.d.ts.map +0 -0
  708. package/dist/src/filters/shaders/gamma.min.mjs +0 -0
  709. package/dist/src/filters/shaders/gamma.min.mjs.map +0 -0
  710. package/dist/src/filters/shaders/gamma.mjs +0 -0
  711. package/dist/src/filters/shaders/gamma.mjs.map +0 -0
  712. package/dist/src/filters/shaders/grayscale.d.ts +0 -0
  713. package/dist/src/filters/shaders/grayscale.d.ts.map +0 -0
  714. package/dist/src/filters/shaders/grayscale.min.mjs +0 -0
  715. package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -0
  716. package/dist/src/filters/shaders/grayscale.mjs +0 -0
  717. package/dist/src/filters/shaders/grayscale.mjs.map +0 -0
  718. package/dist/src/filters/shaders/invert.d.ts +0 -0
  719. package/dist/src/filters/shaders/invert.d.ts.map +0 -0
  720. package/dist/src/filters/shaders/invert.min.mjs +0 -0
  721. package/dist/src/filters/shaders/invert.min.mjs.map +0 -0
  722. package/dist/src/filters/shaders/invert.mjs +0 -0
  723. package/dist/src/filters/shaders/invert.mjs.map +0 -0
  724. package/dist/src/filters/shaders/noise.d.ts +0 -0
  725. package/dist/src/filters/shaders/noise.d.ts.map +0 -0
  726. package/dist/src/filters/shaders/noise.min.mjs +0 -0
  727. package/dist/src/filters/shaders/noise.min.mjs.map +0 -0
  728. package/dist/src/filters/shaders/noise.mjs +0 -0
  729. package/dist/src/filters/shaders/noise.mjs.map +0 -0
  730. package/dist/src/filters/shaders/pixelate.d.ts +0 -0
  731. package/dist/src/filters/shaders/pixelate.d.ts.map +0 -0
  732. package/dist/src/filters/shaders/pixelate.min.mjs +0 -0
  733. package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -0
  734. package/dist/src/filters/shaders/pixelate.mjs +0 -0
  735. package/dist/src/filters/shaders/pixelate.mjs.map +0 -0
  736. package/dist/src/filters/shaders/removeColor.d.ts +0 -0
  737. package/dist/src/filters/shaders/removeColor.d.ts.map +0 -0
  738. package/dist/src/filters/shaders/removeColor.min.mjs +0 -0
  739. package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -0
  740. package/dist/src/filters/shaders/removeColor.mjs +0 -0
  741. package/dist/src/filters/shaders/removeColor.mjs.map +0 -0
  742. package/dist/src/filters/shaders/saturation.d.ts +0 -0
  743. package/dist/src/filters/shaders/saturation.d.ts.map +0 -0
  744. package/dist/src/filters/shaders/saturation.min.mjs +0 -0
  745. package/dist/src/filters/shaders/saturation.min.mjs.map +0 -0
  746. package/dist/src/filters/shaders/saturation.mjs +0 -0
  747. package/dist/src/filters/shaders/saturation.mjs.map +0 -0
  748. package/dist/src/filters/shaders/vibrance.d.ts +0 -0
  749. package/dist/src/filters/shaders/vibrance.d.ts.map +0 -0
  750. package/dist/src/filters/shaders/vibrance.min.mjs +0 -0
  751. package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -0
  752. package/dist/src/filters/shaders/vibrance.mjs +0 -0
  753. package/dist/src/filters/shaders/vibrance.mjs.map +0 -0
  754. package/dist/src/filters/typedefs.d.ts +0 -0
  755. package/dist/src/filters/typedefs.d.ts.map +0 -0
  756. package/dist/src/filters/utils.d.ts +0 -0
  757. package/dist/src/filters/utils.d.ts.map +0 -0
  758. package/dist/src/filters/utils.min.mjs +0 -0
  759. package/dist/src/filters/utils.min.mjs.map +0 -0
  760. package/dist/src/filters/utils.mjs +0 -0
  761. package/dist/src/filters/utils.mjs.map +0 -0
  762. package/dist/src/gradient/Gradient.d.ts +0 -0
  763. package/dist/src/gradient/Gradient.d.ts.map +0 -0
  764. package/dist/src/gradient/Gradient.min.mjs +0 -0
  765. package/dist/src/gradient/Gradient.min.mjs.map +0 -0
  766. package/dist/src/gradient/Gradient.mjs +0 -0
  767. package/dist/src/gradient/Gradient.mjs.map +0 -0
  768. package/dist/src/gradient/constants.d.ts +0 -0
  769. package/dist/src/gradient/constants.d.ts.map +0 -0
  770. package/dist/src/gradient/constants.min.mjs +0 -0
  771. package/dist/src/gradient/constants.min.mjs.map +0 -0
  772. package/dist/src/gradient/constants.mjs +0 -0
  773. package/dist/src/gradient/constants.mjs.map +0 -0
  774. package/dist/src/gradient/index.d.ts +0 -0
  775. package/dist/src/gradient/index.d.ts.map +0 -0
  776. package/dist/src/gradient/parser/misc.d.ts +0 -0
  777. package/dist/src/gradient/parser/misc.d.ts.map +0 -0
  778. package/dist/src/gradient/parser/misc.min.mjs +0 -0
  779. package/dist/src/gradient/parser/misc.min.mjs.map +0 -0
  780. package/dist/src/gradient/parser/misc.mjs +0 -0
  781. package/dist/src/gradient/parser/misc.mjs.map +0 -0
  782. package/dist/src/gradient/parser/parseColorStops.d.ts +0 -0
  783. package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  784. package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -0
  785. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -0
  786. package/dist/src/gradient/parser/parseColorStops.mjs +0 -0
  787. package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -0
  788. package/dist/src/gradient/parser/parseCoords.d.ts +0 -0
  789. package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -0
  790. package/dist/src/gradient/parser/parseCoords.min.mjs +0 -0
  791. package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -0
  792. package/dist/src/gradient/parser/parseCoords.mjs +0 -0
  793. package/dist/src/gradient/parser/parseCoords.mjs.map +0 -0
  794. package/dist/src/gradient/typedefs.d.ts +0 -0
  795. package/dist/src/gradient/typedefs.d.ts.map +0 -0
  796. package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -0
  797. package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -0
  798. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -0
  799. package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -0
  800. package/dist/src/parkinglot/straighten.d.ts +0 -0
  801. package/dist/src/parkinglot/straighten.d.ts.map +0 -0
  802. package/dist/src/parser/applyViewboxTransform.d.ts +0 -0
  803. package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -0
  804. package/dist/src/parser/applyViewboxTransform.min.mjs +0 -0
  805. package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -0
  806. package/dist/src/parser/applyViewboxTransform.mjs +0 -0
  807. package/dist/src/parser/applyViewboxTransform.mjs.map +0 -0
  808. package/dist/src/parser/attributes.d.ts +0 -0
  809. package/dist/src/parser/attributes.d.ts.map +0 -0
  810. package/dist/src/parser/attributes.min.mjs +0 -0
  811. package/dist/src/parser/attributes.min.mjs.map +0 -0
  812. package/dist/src/parser/attributes.mjs +0 -0
  813. package/dist/src/parser/attributes.mjs.map +0 -0
  814. package/dist/src/parser/constants.d.ts +0 -0
  815. package/dist/src/parser/constants.d.ts.map +0 -0
  816. package/dist/src/parser/constants.min.mjs +0 -0
  817. package/dist/src/parser/constants.min.mjs.map +0 -0
  818. package/dist/src/parser/constants.mjs +0 -0
  819. package/dist/src/parser/constants.mjs.map +0 -0
  820. package/dist/src/parser/doesSomeParentMatch.d.ts +0 -0
  821. package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  822. package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -0
  823. package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -0
  824. package/dist/src/parser/doesSomeParentMatch.mjs +0 -0
  825. package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -0
  826. package/dist/src/parser/elementMatchesRule.d.ts +0 -0
  827. package/dist/src/parser/elementMatchesRule.d.ts.map +0 -0
  828. package/dist/src/parser/elementMatchesRule.min.mjs +0 -0
  829. package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -0
  830. package/dist/src/parser/elementMatchesRule.mjs +0 -0
  831. package/dist/src/parser/elementMatchesRule.mjs.map +0 -0
  832. package/dist/src/parser/elements_parser.d.ts +0 -0
  833. package/dist/src/parser/elements_parser.d.ts.map +0 -0
  834. package/dist/src/parser/elements_parser.min.mjs +0 -0
  835. package/dist/src/parser/elements_parser.min.mjs.map +0 -0
  836. package/dist/src/parser/elements_parser.mjs +0 -0
  837. package/dist/src/parser/elements_parser.mjs.map +0 -0
  838. package/dist/src/parser/getCSSRules.d.ts +0 -0
  839. package/dist/src/parser/getCSSRules.d.ts.map +0 -0
  840. package/dist/src/parser/getCSSRules.min.mjs +0 -0
  841. package/dist/src/parser/getCSSRules.min.mjs.map +0 -0
  842. package/dist/src/parser/getCSSRules.mjs +0 -0
  843. package/dist/src/parser/getCSSRules.mjs.map +0 -0
  844. package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -0
  845. package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  846. package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -0
  847. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -0
  848. package/dist/src/parser/getGlobalStylesForElement.mjs +0 -0
  849. package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -0
  850. package/dist/src/parser/getGradientDefs.d.ts +0 -0
  851. package/dist/src/parser/getGradientDefs.d.ts.map +0 -0
  852. package/dist/src/parser/getGradientDefs.min.mjs +0 -0
  853. package/dist/src/parser/getGradientDefs.min.mjs.map +0 -0
  854. package/dist/src/parser/getGradientDefs.mjs +0 -0
  855. package/dist/src/parser/getGradientDefs.mjs.map +0 -0
  856. package/dist/src/parser/getMultipleNodes.d.ts +0 -0
  857. package/dist/src/parser/getMultipleNodes.d.ts.map +0 -0
  858. package/dist/src/parser/getMultipleNodes.min.mjs +0 -0
  859. package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -0
  860. package/dist/src/parser/getMultipleNodes.mjs +0 -0
  861. package/dist/src/parser/getMultipleNodes.mjs.map +0 -0
  862. package/dist/src/parser/getSvgRegex.d.ts +0 -0
  863. package/dist/src/parser/getSvgRegex.d.ts.map +0 -0
  864. package/dist/src/parser/getSvgRegex.min.mjs +0 -0
  865. package/dist/src/parser/getSvgRegex.min.mjs.map +0 -0
  866. package/dist/src/parser/getSvgRegex.mjs +0 -0
  867. package/dist/src/parser/getSvgRegex.mjs.map +0 -0
  868. package/dist/src/parser/getTagName.d.ts +0 -0
  869. package/dist/src/parser/getTagName.d.ts.map +0 -0
  870. package/dist/src/parser/getTagName.min.mjs +0 -0
  871. package/dist/src/parser/getTagName.min.mjs.map +0 -0
  872. package/dist/src/parser/getTagName.mjs +0 -0
  873. package/dist/src/parser/getTagName.mjs.map +0 -0
  874. package/dist/src/parser/hasInvalidAncestor.d.ts +0 -0
  875. package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  876. package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -0
  877. package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -0
  878. package/dist/src/parser/hasInvalidAncestor.mjs +0 -0
  879. package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -0
  880. package/dist/src/parser/loadSVGFromString.d.ts +0 -0
  881. package/dist/src/parser/loadSVGFromString.d.ts.map +0 -0
  882. package/dist/src/parser/loadSVGFromString.min.mjs +0 -0
  883. package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -0
  884. package/dist/src/parser/loadSVGFromString.mjs +0 -0
  885. package/dist/src/parser/loadSVGFromString.mjs.map +0 -0
  886. package/dist/src/parser/loadSVGFromURL.d.ts +0 -0
  887. package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -0
  888. package/dist/src/parser/loadSVGFromURL.min.mjs +0 -0
  889. package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -0
  890. package/dist/src/parser/loadSVGFromURL.mjs +0 -0
  891. package/dist/src/parser/loadSVGFromURL.mjs.map +0 -0
  892. package/dist/src/parser/normalizeAttr.d.ts +0 -0
  893. package/dist/src/parser/normalizeAttr.d.ts.map +0 -0
  894. package/dist/src/parser/normalizeAttr.min.mjs +0 -0
  895. package/dist/src/parser/normalizeAttr.min.mjs.map +0 -0
  896. package/dist/src/parser/normalizeAttr.mjs +0 -0
  897. package/dist/src/parser/normalizeAttr.mjs.map +0 -0
  898. package/dist/src/parser/normalizeValue.d.ts +0 -0
  899. package/dist/src/parser/normalizeValue.d.ts.map +0 -0
  900. package/dist/src/parser/normalizeValue.min.mjs +0 -0
  901. package/dist/src/parser/normalizeValue.min.mjs.map +0 -0
  902. package/dist/src/parser/normalizeValue.mjs +0 -0
  903. package/dist/src/parser/normalizeValue.mjs.map +0 -0
  904. package/dist/src/parser/parseAttributes.d.ts +0 -0
  905. package/dist/src/parser/parseAttributes.d.ts.map +0 -0
  906. package/dist/src/parser/parseAttributes.min.mjs +0 -0
  907. package/dist/src/parser/parseAttributes.min.mjs.map +0 -0
  908. package/dist/src/parser/parseAttributes.mjs +0 -0
  909. package/dist/src/parser/parseAttributes.mjs.map +0 -0
  910. package/dist/src/parser/parseFontDeclaration.d.ts +0 -0
  911. package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -0
  912. package/dist/src/parser/parseFontDeclaration.min.mjs +0 -0
  913. package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -0
  914. package/dist/src/parser/parseFontDeclaration.mjs +0 -0
  915. package/dist/src/parser/parseFontDeclaration.mjs.map +0 -0
  916. package/dist/src/parser/parsePointsAttribute.d.ts +0 -0
  917. package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -0
  918. package/dist/src/parser/parsePointsAttribute.min.mjs +0 -0
  919. package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -0
  920. package/dist/src/parser/parsePointsAttribute.mjs +0 -0
  921. package/dist/src/parser/parsePointsAttribute.mjs.map +0 -0
  922. package/dist/src/parser/parseSVGDocument.d.ts +0 -0
  923. package/dist/src/parser/parseSVGDocument.d.ts.map +0 -0
  924. package/dist/src/parser/parseSVGDocument.min.mjs +0 -0
  925. package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -0
  926. package/dist/src/parser/parseSVGDocument.mjs +0 -0
  927. package/dist/src/parser/parseSVGDocument.mjs.map +0 -0
  928. package/dist/src/parser/parseStyleAttribute.d.ts +0 -0
  929. package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -0
  930. package/dist/src/parser/parseStyleAttribute.min.mjs +0 -0
  931. package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -0
  932. package/dist/src/parser/parseStyleAttribute.mjs +0 -0
  933. package/dist/src/parser/parseStyleAttribute.mjs.map +0 -0
  934. package/dist/src/parser/parseStyleObject.d.ts +0 -0
  935. package/dist/src/parser/parseStyleObject.d.ts.map +0 -0
  936. package/dist/src/parser/parseStyleObject.min.mjs +0 -0
  937. package/dist/src/parser/parseStyleObject.min.mjs.map +0 -0
  938. package/dist/src/parser/parseStyleObject.mjs +0 -0
  939. package/dist/src/parser/parseStyleObject.mjs.map +0 -0
  940. package/dist/src/parser/parseStyleString.d.ts +0 -0
  941. package/dist/src/parser/parseStyleString.d.ts.map +0 -0
  942. package/dist/src/parser/parseStyleString.min.mjs +0 -0
  943. package/dist/src/parser/parseStyleString.min.mjs.map +0 -0
  944. package/dist/src/parser/parseStyleString.mjs +0 -0
  945. package/dist/src/parser/parseStyleString.mjs.map +0 -0
  946. package/dist/src/parser/parseTransformAttribute.d.ts +0 -0
  947. package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -0
  948. package/dist/src/parser/parseTransformAttribute.min.mjs +0 -0
  949. package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -0
  950. package/dist/src/parser/parseTransformAttribute.mjs +0 -0
  951. package/dist/src/parser/parseTransformAttribute.mjs.map +0 -0
  952. package/dist/src/parser/parseUseDirectives.d.ts +0 -0
  953. package/dist/src/parser/parseUseDirectives.d.ts.map +0 -0
  954. package/dist/src/parser/parseUseDirectives.min.mjs +0 -0
  955. package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -0
  956. package/dist/src/parser/parseUseDirectives.mjs +0 -0
  957. package/dist/src/parser/parseUseDirectives.mjs.map +0 -0
  958. package/dist/src/parser/percent.d.ts +0 -0
  959. package/dist/src/parser/percent.d.ts.map +0 -0
  960. package/dist/src/parser/percent.min.mjs +0 -0
  961. package/dist/src/parser/percent.min.mjs.map +0 -0
  962. package/dist/src/parser/percent.mjs +0 -0
  963. package/dist/src/parser/percent.mjs.map +0 -0
  964. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  965. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  966. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -0
  967. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -0
  968. package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -0
  969. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -0
  970. package/dist/src/parser/selectorMatches.d.ts +0 -0
  971. package/dist/src/parser/selectorMatches.d.ts.map +0 -0
  972. package/dist/src/parser/selectorMatches.min.mjs +0 -0
  973. package/dist/src/parser/selectorMatches.min.mjs.map +0 -0
  974. package/dist/src/parser/selectorMatches.mjs +0 -0
  975. package/dist/src/parser/selectorMatches.mjs.map +0 -0
  976. package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -0
  977. package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  978. package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -0
  979. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -0
  980. package/dist/src/parser/setStrokeFillOpacity.mjs +0 -0
  981. package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -0
  982. package/dist/src/parser/typedefs.d.ts +0 -0
  983. package/dist/src/parser/typedefs.d.ts.map +0 -0
  984. package/dist/src/shapes/ActiveSelection.d.ts +0 -0
  985. package/dist/src/shapes/ActiveSelection.d.ts.map +0 -0
  986. package/dist/src/shapes/ActiveSelection.min.mjs +0 -0
  987. package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -0
  988. package/dist/src/shapes/ActiveSelection.mjs +0 -0
  989. package/dist/src/shapes/ActiveSelection.mjs.map +0 -0
  990. package/dist/src/shapes/Circle.d.ts +0 -0
  991. package/dist/src/shapes/Circle.d.ts.map +0 -0
  992. package/dist/src/shapes/Circle.min.mjs +0 -0
  993. package/dist/src/shapes/Circle.min.mjs.map +0 -0
  994. package/dist/src/shapes/Circle.mjs +0 -0
  995. package/dist/src/shapes/Circle.mjs.map +0 -0
  996. package/dist/src/shapes/Ellipse.d.ts +0 -0
  997. package/dist/src/shapes/Ellipse.d.ts.map +0 -0
  998. package/dist/src/shapes/Ellipse.min.mjs +0 -0
  999. package/dist/src/shapes/Ellipse.min.mjs.map +0 -0
  1000. package/dist/src/shapes/Ellipse.mjs +0 -0
  1001. package/dist/src/shapes/Ellipse.mjs.map +0 -0
  1002. package/dist/src/shapes/Group.d.ts +0 -0
  1003. package/dist/src/shapes/Group.d.ts.map +0 -0
  1004. package/dist/src/shapes/Group.min.mjs +0 -0
  1005. package/dist/src/shapes/Group.min.mjs.map +0 -0
  1006. package/dist/src/shapes/Group.mjs +0 -0
  1007. package/dist/src/shapes/Group.mjs.map +0 -0
  1008. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1009. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1010. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -0
  1011. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -0
  1012. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -0
  1013. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -0
  1014. package/dist/src/shapes/IText/IText.d.ts +0 -0
  1015. package/dist/src/shapes/IText/IText.d.ts.map +0 -0
  1016. package/dist/src/shapes/IText/IText.min.mjs +0 -0
  1017. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  1018. package/dist/src/shapes/IText/IText.mjs +206 -206
  1019. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  1020. package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1021. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
  1022. package/dist/src/shapes/IText/ITextBehavior.min.mjs +0 -0
  1023. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  1024. package/dist/src/shapes/IText/ITextBehavior.mjs +152 -152
  1025. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  1026. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1027. package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1028. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -0
  1029. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  1030. package/dist/src/shapes/IText/ITextClickBehavior.mjs +36 -36
  1031. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  1032. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1033. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1034. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -0
  1035. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  1036. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +115 -115
  1037. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
  1038. package/dist/src/shapes/IText/constants.d.ts +0 -0
  1039. package/dist/src/shapes/IText/constants.d.ts.map +0 -0
  1040. package/dist/src/shapes/IText/constants.min.mjs +0 -0
  1041. package/dist/src/shapes/IText/constants.min.mjs.map +0 -0
  1042. package/dist/src/shapes/IText/constants.mjs +0 -0
  1043. package/dist/src/shapes/IText/constants.mjs.map +0 -0
  1044. package/dist/src/shapes/Image.d.ts +0 -0
  1045. package/dist/src/shapes/Image.d.ts.map +0 -0
  1046. package/dist/src/shapes/Image.min.mjs +0 -0
  1047. package/dist/src/shapes/Image.min.mjs.map +0 -0
  1048. package/dist/src/shapes/Image.mjs +0 -0
  1049. package/dist/src/shapes/Image.mjs.map +0 -0
  1050. package/dist/src/shapes/Line.d.ts +0 -0
  1051. package/dist/src/shapes/Line.d.ts.map +0 -0
  1052. package/dist/src/shapes/Line.min.mjs +0 -0
  1053. package/dist/src/shapes/Line.min.mjs.map +0 -0
  1054. package/dist/src/shapes/Line.mjs +0 -0
  1055. package/dist/src/shapes/Line.mjs.map +0 -0
  1056. package/dist/src/shapes/Object/FabricObject.d.ts +0 -0
  1057. package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1058. package/dist/src/shapes/Object/FabricObject.min.mjs +0 -0
  1059. package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -0
  1060. package/dist/src/shapes/Object/FabricObject.mjs +0 -0
  1061. package/dist/src/shapes/Object/FabricObject.mjs.map +0 -0
  1062. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1063. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1064. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -0
  1065. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -0
  1066. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -0
  1067. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -0
  1068. package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1069. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1070. package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -0
  1071. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -0
  1072. package/dist/src/shapes/Object/InteractiveObject.mjs +0 -0
  1073. package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -0
  1074. package/dist/src/shapes/Object/Object.d.ts +0 -0
  1075. package/dist/src/shapes/Object/Object.d.ts.map +0 -0
  1076. package/dist/src/shapes/Object/Object.min.mjs +0 -0
  1077. package/dist/src/shapes/Object/Object.min.mjs.map +0 -0
  1078. package/dist/src/shapes/Object/Object.mjs +0 -0
  1079. package/dist/src/shapes/Object/Object.mjs.map +0 -0
  1080. package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1081. package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1082. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -0
  1083. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -0
  1084. package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -0
  1085. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -0
  1086. package/dist/src/shapes/Object/defaultValues.d.ts +0 -0
  1087. package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1088. package/dist/src/shapes/Object/defaultValues.min.mjs +0 -0
  1089. package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -0
  1090. package/dist/src/shapes/Object/defaultValues.mjs +0 -0
  1091. package/dist/src/shapes/Object/defaultValues.mjs.map +0 -0
  1092. package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1093. package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1094. package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1095. package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1096. package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1097. package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1098. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1099. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1100. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1101. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1102. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1103. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1104. package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1105. package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1106. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1107. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1108. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1109. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1110. package/dist/src/shapes/Object/types/index.d.ts +0 -0
  1111. package/dist/src/shapes/Object/types/index.d.ts.map +0 -0
  1112. package/dist/src/shapes/Path.d.ts +0 -0
  1113. package/dist/src/shapes/Path.d.ts.map +0 -0
  1114. package/dist/src/shapes/Path.min.mjs +0 -0
  1115. package/dist/src/shapes/Path.min.mjs.map +0 -0
  1116. package/dist/src/shapes/Path.mjs +0 -0
  1117. package/dist/src/shapes/Path.mjs.map +0 -0
  1118. package/dist/src/shapes/Polygon.d.ts +0 -0
  1119. package/dist/src/shapes/Polygon.d.ts.map +0 -0
  1120. package/dist/src/shapes/Polygon.min.mjs +0 -0
  1121. package/dist/src/shapes/Polygon.min.mjs.map +0 -0
  1122. package/dist/src/shapes/Polygon.mjs +0 -0
  1123. package/dist/src/shapes/Polygon.mjs.map +0 -0
  1124. package/dist/src/shapes/Polyline.d.ts +0 -0
  1125. package/dist/src/shapes/Polyline.d.ts.map +0 -0
  1126. package/dist/src/shapes/Polyline.min.mjs +0 -0
  1127. package/dist/src/shapes/Polyline.min.mjs.map +0 -0
  1128. package/dist/src/shapes/Polyline.mjs +0 -0
  1129. package/dist/src/shapes/Polyline.mjs.map +0 -0
  1130. package/dist/src/shapes/Rect.d.ts +0 -0
  1131. package/dist/src/shapes/Rect.d.ts.map +0 -0
  1132. package/dist/src/shapes/Rect.min.mjs +0 -0
  1133. package/dist/src/shapes/Rect.min.mjs.map +0 -0
  1134. package/dist/src/shapes/Rect.mjs +0 -0
  1135. package/dist/src/shapes/Rect.mjs.map +0 -0
  1136. package/dist/src/shapes/Text/StyledText.d.ts +0 -0
  1137. package/dist/src/shapes/Text/StyledText.d.ts.map +0 -0
  1138. package/dist/src/shapes/Text/StyledText.min.mjs +0 -0
  1139. package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -0
  1140. package/dist/src/shapes/Text/StyledText.mjs +0 -0
  1141. package/dist/src/shapes/Text/StyledText.mjs.map +0 -0
  1142. package/dist/src/shapes/Text/Text.d.ts +0 -0
  1143. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  1144. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  1145. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  1146. package/dist/src/shapes/Text/Text.mjs +298 -294
  1147. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  1148. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1149. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1150. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -0
  1151. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -0
  1152. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -0
  1153. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -0
  1154. package/dist/src/shapes/Text/constants.d.ts +1 -1
  1155. package/dist/src/shapes/Text/constants.d.ts.map +1 -1
  1156. package/dist/src/shapes/Text/constants.min.mjs +1 -1
  1157. package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
  1158. package/dist/src/shapes/Text/constants.mjs +1 -1
  1159. package/dist/src/shapes/Text/constants.mjs.map +1 -1
  1160. package/dist/src/shapes/Textbox.d.ts +0 -0
  1161. package/dist/src/shapes/Textbox.d.ts.map +0 -0
  1162. package/dist/src/shapes/Textbox.min.mjs +0 -0
  1163. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  1164. package/dist/src/shapes/Textbox.mjs +168 -168
  1165. package/dist/src/shapes/Textbox.mjs.map +1 -1
  1166. package/dist/src/shapes/Triangle.d.ts +0 -0
  1167. package/dist/src/shapes/Triangle.d.ts.map +0 -0
  1168. package/dist/src/shapes/Triangle.min.mjs +0 -0
  1169. package/dist/src/shapes/Triangle.min.mjs.map +0 -0
  1170. package/dist/src/shapes/Triangle.mjs +0 -0
  1171. package/dist/src/shapes/Triangle.mjs.map +0 -0
  1172. package/dist/src/text/browserLines.d.ts +0 -0
  1173. package/dist/src/text/browserLines.d.ts.map +0 -0
  1174. package/dist/src/text/browserLines.min.mjs +0 -0
  1175. package/dist/src/text/browserLines.min.mjs.map +1 -1
  1176. package/dist/src/text/browserLines.mjs +20 -20
  1177. package/dist/src/text/browserLines.mjs.map +1 -1
  1178. package/dist/src/text/ellipsis.d.ts +0 -0
  1179. package/dist/src/text/ellipsis.d.ts.map +0 -0
  1180. package/dist/src/text/ellipsis.min.mjs +0 -0
  1181. package/dist/src/text/ellipsis.min.mjs.map +1 -1
  1182. package/dist/src/text/ellipsis.mjs +11 -11
  1183. package/dist/src/text/ellipsis.mjs.map +1 -1
  1184. package/dist/src/text/examples/arabicTextExample.d.ts +60 -0
  1185. package/dist/src/text/examples/arabicTextExample.d.ts.map +1 -0
  1186. package/dist/src/text/hitTest.d.ts +0 -0
  1187. package/dist/src/text/hitTest.d.ts.map +0 -0
  1188. package/dist/src/text/hitTest.min.mjs +0 -0
  1189. package/dist/src/text/hitTest.min.mjs.map +1 -1
  1190. package/dist/src/text/hitTest.mjs +19 -19
  1191. package/dist/src/text/hitTest.mjs.map +1 -1
  1192. package/dist/src/text/layout.d.ts +0 -0
  1193. package/dist/src/text/layout.d.ts.map +0 -0
  1194. package/dist/src/text/layout.min.mjs +0 -0
  1195. package/dist/src/text/layout.min.mjs.map +1 -1
  1196. package/dist/src/text/layout.mjs +33 -33
  1197. package/dist/src/text/layout.mjs.map +1 -1
  1198. package/dist/src/text/measure.d.ts +0 -0
  1199. package/dist/src/text/measure.d.ts.map +0 -0
  1200. package/dist/src/text/measure.min.mjs +0 -0
  1201. package/dist/src/text/measure.min.mjs.map +1 -1
  1202. package/dist/src/text/measure.mjs +30 -30
  1203. package/dist/src/text/measure.mjs.map +1 -1
  1204. package/dist/src/text/overlayEditor.d.ts +0 -0
  1205. package/dist/src/text/overlayEditor.d.ts.map +0 -0
  1206. package/dist/src/text/overlayEditor.min.mjs +0 -0
  1207. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  1208. package/dist/src/text/overlayEditor.mjs +33 -33
  1209. package/dist/src/text/overlayEditor.mjs.map +1 -1
  1210. package/dist/src/text/scriptUtils.d.ts +142 -0
  1211. package/dist/src/text/scriptUtils.d.ts.map +1 -0
  1212. package/dist/src/text/scriptUtils.min.mjs +2 -0
  1213. package/dist/src/text/scriptUtils.min.mjs.map +1 -0
  1214. package/dist/src/text/scriptUtils.mjs +212 -0
  1215. package/dist/src/text/scriptUtils.mjs.map +1 -0
  1216. package/dist/src/text/unicode.d.ts +0 -0
  1217. package/dist/src/text/unicode.d.ts.map +0 -0
  1218. package/dist/src/text/unicode.min.mjs +0 -0
  1219. package/dist/src/text/unicode.min.mjs.map +1 -1
  1220. package/dist/src/text/unicode.mjs +8 -8
  1221. package/dist/src/text/unicode.mjs.map +1 -1
  1222. package/dist/src/typedefs.d.ts +0 -0
  1223. package/dist/src/typedefs.d.ts.map +0 -0
  1224. package/dist/src/util/animation/AnimationBase.d.ts +0 -0
  1225. package/dist/src/util/animation/AnimationBase.d.ts.map +0 -0
  1226. package/dist/src/util/animation/AnimationBase.min.mjs +0 -0
  1227. package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -0
  1228. package/dist/src/util/animation/AnimationBase.mjs +0 -0
  1229. package/dist/src/util/animation/AnimationBase.mjs.map +0 -0
  1230. package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1231. package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1232. package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -0
  1233. package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -0
  1234. package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -0
  1235. package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -0
  1236. package/dist/src/util/animation/AnimationRegistry.d.ts +0 -0
  1237. package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1238. package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -0
  1239. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -0
  1240. package/dist/src/util/animation/AnimationRegistry.mjs +0 -0
  1241. package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -0
  1242. package/dist/src/util/animation/ArrayAnimation.d.ts +0 -0
  1243. package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1244. package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -0
  1245. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -0
  1246. package/dist/src/util/animation/ArrayAnimation.mjs +0 -0
  1247. package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -0
  1248. package/dist/src/util/animation/ColorAnimation.d.ts +0 -0
  1249. package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1250. package/dist/src/util/animation/ColorAnimation.min.mjs +0 -0
  1251. package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -0
  1252. package/dist/src/util/animation/ColorAnimation.mjs +0 -0
  1253. package/dist/src/util/animation/ColorAnimation.mjs.map +0 -0
  1254. package/dist/src/util/animation/ValueAnimation.d.ts +0 -0
  1255. package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1256. package/dist/src/util/animation/ValueAnimation.min.mjs +0 -0
  1257. package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -0
  1258. package/dist/src/util/animation/ValueAnimation.mjs +0 -0
  1259. package/dist/src/util/animation/ValueAnimation.mjs.map +0 -0
  1260. package/dist/src/util/animation/animate.d.ts +0 -0
  1261. package/dist/src/util/animation/animate.d.ts.map +0 -0
  1262. package/dist/src/util/animation/animate.min.mjs +0 -0
  1263. package/dist/src/util/animation/animate.min.mjs.map +0 -0
  1264. package/dist/src/util/animation/animate.mjs +0 -0
  1265. package/dist/src/util/animation/animate.mjs.map +0 -0
  1266. package/dist/src/util/animation/easing.d.ts +0 -0
  1267. package/dist/src/util/animation/easing.d.ts.map +0 -0
  1268. package/dist/src/util/animation/easing.min.mjs +0 -0
  1269. package/dist/src/util/animation/easing.min.mjs.map +0 -0
  1270. package/dist/src/util/animation/easing.mjs +0 -0
  1271. package/dist/src/util/animation/easing.mjs.map +0 -0
  1272. package/dist/src/util/animation/index.d.ts +0 -0
  1273. package/dist/src/util/animation/index.d.ts.map +0 -0
  1274. package/dist/src/util/animation/types.d.ts +0 -0
  1275. package/dist/src/util/animation/types.d.ts.map +0 -0
  1276. package/dist/src/util/applyMixins.d.ts +0 -0
  1277. package/dist/src/util/applyMixins.d.ts.map +0 -0
  1278. package/dist/src/util/applyMixins.min.mjs +0 -0
  1279. package/dist/src/util/applyMixins.min.mjs.map +0 -0
  1280. package/dist/src/util/applyMixins.mjs +0 -0
  1281. package/dist/src/util/applyMixins.mjs.map +0 -0
  1282. package/dist/src/util/dom_event.d.ts +0 -0
  1283. package/dist/src/util/dom_event.d.ts.map +0 -0
  1284. package/dist/src/util/dom_event.min.mjs +0 -0
  1285. package/dist/src/util/dom_event.min.mjs.map +0 -0
  1286. package/dist/src/util/dom_event.mjs +0 -0
  1287. package/dist/src/util/dom_event.mjs.map +0 -0
  1288. package/dist/src/util/dom_misc.d.ts +0 -0
  1289. package/dist/src/util/dom_misc.d.ts.map +0 -0
  1290. package/dist/src/util/dom_misc.min.mjs +0 -0
  1291. package/dist/src/util/dom_misc.min.mjs.map +0 -0
  1292. package/dist/src/util/dom_misc.mjs +0 -0
  1293. package/dist/src/util/dom_misc.mjs.map +0 -0
  1294. package/dist/src/util/index.d.ts +0 -0
  1295. package/dist/src/util/index.d.ts.map +0 -0
  1296. package/dist/src/util/index.min.mjs +0 -0
  1297. package/dist/src/util/index.min.mjs.map +0 -0
  1298. package/dist/src/util/index.mjs +0 -0
  1299. package/dist/src/util/index.mjs.map +0 -0
  1300. package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -0
  1301. package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  1302. package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -0
  1303. package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -0
  1304. package/dist/src/util/internals/applyCanvasTransform.mjs +0 -0
  1305. package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -0
  1306. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  1307. package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  1308. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -0
  1309. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -0
  1310. package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -0
  1311. package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -0
  1312. package/dist/src/util/internals/cloneStyles.d.ts +0 -0
  1313. package/dist/src/util/internals/cloneStyles.d.ts.map +0 -0
  1314. package/dist/src/util/internals/cloneStyles.min.mjs +0 -0
  1315. package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -0
  1316. package/dist/src/util/internals/cloneStyles.mjs +0 -0
  1317. package/dist/src/util/internals/cloneStyles.mjs.map +0 -0
  1318. package/dist/src/util/internals/console.d.ts +0 -0
  1319. package/dist/src/util/internals/console.d.ts.map +0 -0
  1320. package/dist/src/util/internals/console.min.mjs +0 -0
  1321. package/dist/src/util/internals/console.min.mjs.map +0 -0
  1322. package/dist/src/util/internals/console.mjs +0 -0
  1323. package/dist/src/util/internals/console.mjs.map +0 -0
  1324. package/dist/src/util/internals/dom_style.d.ts +0 -0
  1325. package/dist/src/util/internals/dom_style.d.ts.map +0 -0
  1326. package/dist/src/util/internals/dom_style.min.mjs +0 -0
  1327. package/dist/src/util/internals/dom_style.min.mjs.map +0 -0
  1328. package/dist/src/util/internals/dom_style.mjs +0 -0
  1329. package/dist/src/util/internals/dom_style.mjs.map +0 -0
  1330. package/dist/src/util/internals/findRight.d.ts +0 -0
  1331. package/dist/src/util/internals/findRight.d.ts.map +0 -0
  1332. package/dist/src/util/internals/findRight.min.mjs +0 -0
  1333. package/dist/src/util/internals/findRight.min.mjs.map +0 -0
  1334. package/dist/src/util/internals/findRight.mjs +0 -0
  1335. package/dist/src/util/internals/findRight.mjs.map +0 -0
  1336. package/dist/src/util/internals/getRandomInt.d.ts +0 -0
  1337. package/dist/src/util/internals/getRandomInt.d.ts.map +0 -0
  1338. package/dist/src/util/internals/getRandomInt.min.mjs +0 -0
  1339. package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -0
  1340. package/dist/src/util/internals/getRandomInt.mjs +0 -0
  1341. package/dist/src/util/internals/getRandomInt.mjs.map +0 -0
  1342. package/dist/src/util/internals/ifNaN.d.ts +0 -0
  1343. package/dist/src/util/internals/ifNaN.d.ts.map +0 -0
  1344. package/dist/src/util/internals/ifNaN.min.mjs +0 -0
  1345. package/dist/src/util/internals/ifNaN.min.mjs.map +0 -0
  1346. package/dist/src/util/internals/ifNaN.mjs +0 -0
  1347. package/dist/src/util/internals/ifNaN.mjs.map +0 -0
  1348. package/dist/src/util/internals/removeFromArray.d.ts +0 -0
  1349. package/dist/src/util/internals/removeFromArray.d.ts.map +0 -0
  1350. package/dist/src/util/internals/removeFromArray.min.mjs +0 -0
  1351. package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -0
  1352. package/dist/src/util/internals/removeFromArray.mjs +0 -0
  1353. package/dist/src/util/internals/removeFromArray.mjs.map +0 -0
  1354. package/dist/src/util/internals/uid.d.ts +0 -0
  1355. package/dist/src/util/internals/uid.d.ts.map +0 -0
  1356. package/dist/src/util/internals/uid.min.mjs +0 -0
  1357. package/dist/src/util/internals/uid.min.mjs.map +0 -0
  1358. package/dist/src/util/internals/uid.mjs +0 -0
  1359. package/dist/src/util/internals/uid.mjs.map +0 -0
  1360. package/dist/src/util/lang_string.d.ts +0 -0
  1361. package/dist/src/util/lang_string.d.ts.map +0 -0
  1362. package/dist/src/util/lang_string.min.mjs +0 -0
  1363. package/dist/src/util/lang_string.min.mjs.map +0 -0
  1364. package/dist/src/util/lang_string.mjs +0 -0
  1365. package/dist/src/util/lang_string.mjs.map +0 -0
  1366. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  1367. package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  1368. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -0
  1369. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -0
  1370. package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -0
  1371. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -0
  1372. package/dist/src/util/misc/capValue.d.ts +0 -0
  1373. package/dist/src/util/misc/capValue.d.ts.map +0 -0
  1374. package/dist/src/util/misc/capValue.min.mjs +0 -0
  1375. package/dist/src/util/misc/capValue.min.mjs.map +0 -0
  1376. package/dist/src/util/misc/capValue.mjs +0 -0
  1377. package/dist/src/util/misc/capValue.mjs.map +0 -0
  1378. package/dist/src/util/misc/cornerRadius.d.ts +0 -0
  1379. package/dist/src/util/misc/cornerRadius.d.ts.map +0 -0
  1380. package/dist/src/util/misc/cornerRadius.min.mjs +0 -0
  1381. package/dist/src/util/misc/cornerRadius.min.mjs.map +0 -0
  1382. package/dist/src/util/misc/cornerRadius.mjs +0 -0
  1383. package/dist/src/util/misc/cornerRadius.mjs.map +0 -0
  1384. package/dist/src/util/misc/cos.d.ts +0 -0
  1385. package/dist/src/util/misc/cos.d.ts.map +0 -0
  1386. package/dist/src/util/misc/cos.min.mjs +0 -0
  1387. package/dist/src/util/misc/cos.min.mjs.map +0 -0
  1388. package/dist/src/util/misc/cos.mjs +0 -0
  1389. package/dist/src/util/misc/cos.mjs.map +0 -0
  1390. package/dist/src/util/misc/dom.d.ts +0 -0
  1391. package/dist/src/util/misc/dom.d.ts.map +0 -0
  1392. package/dist/src/util/misc/dom.min.mjs +0 -0
  1393. package/dist/src/util/misc/dom.min.mjs.map +0 -0
  1394. package/dist/src/util/misc/dom.mjs +0 -0
  1395. package/dist/src/util/misc/dom.mjs.map +0 -0
  1396. package/dist/src/util/misc/findScaleTo.d.ts +0 -0
  1397. package/dist/src/util/misc/findScaleTo.d.ts.map +0 -0
  1398. package/dist/src/util/misc/findScaleTo.min.mjs +0 -0
  1399. package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -0
  1400. package/dist/src/util/misc/findScaleTo.mjs +0 -0
  1401. package/dist/src/util/misc/findScaleTo.mjs.map +0 -0
  1402. package/dist/src/util/misc/groupSVGElements.d.ts +0 -0
  1403. package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -0
  1404. package/dist/src/util/misc/groupSVGElements.min.mjs +0 -0
  1405. package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -0
  1406. package/dist/src/util/misc/groupSVGElements.mjs +0 -0
  1407. package/dist/src/util/misc/groupSVGElements.mjs.map +0 -0
  1408. package/dist/src/util/misc/isTransparent.d.ts +0 -0
  1409. package/dist/src/util/misc/isTransparent.d.ts.map +0 -0
  1410. package/dist/src/util/misc/isTransparent.min.mjs +0 -0
  1411. package/dist/src/util/misc/isTransparent.min.mjs.map +0 -0
  1412. package/dist/src/util/misc/isTransparent.mjs +0 -0
  1413. package/dist/src/util/misc/isTransparent.mjs.map +0 -0
  1414. package/dist/src/util/misc/matrix.d.ts +0 -0
  1415. package/dist/src/util/misc/matrix.d.ts.map +0 -0
  1416. package/dist/src/util/misc/matrix.min.mjs +0 -0
  1417. package/dist/src/util/misc/matrix.min.mjs.map +0 -0
  1418. package/dist/src/util/misc/matrix.mjs +0 -0
  1419. package/dist/src/util/misc/matrix.mjs.map +0 -0
  1420. package/dist/src/util/misc/mergeClipPaths.d.ts +0 -0
  1421. package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  1422. package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -0
  1423. package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -0
  1424. package/dist/src/util/misc/mergeClipPaths.mjs +0 -0
  1425. package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -0
  1426. package/dist/src/util/misc/objectEnlive.d.ts +0 -0
  1427. package/dist/src/util/misc/objectEnlive.d.ts.map +0 -0
  1428. package/dist/src/util/misc/objectEnlive.min.mjs +0 -0
  1429. package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -0
  1430. package/dist/src/util/misc/objectEnlive.mjs +0 -0
  1431. package/dist/src/util/misc/objectEnlive.mjs.map +0 -0
  1432. package/dist/src/util/misc/objectTransforms.d.ts +0 -0
  1433. package/dist/src/util/misc/objectTransforms.d.ts.map +0 -0
  1434. package/dist/src/util/misc/objectTransforms.min.mjs +0 -0
  1435. package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -0
  1436. package/dist/src/util/misc/objectTransforms.mjs +0 -0
  1437. package/dist/src/util/misc/objectTransforms.mjs.map +0 -0
  1438. package/dist/src/util/misc/pick.d.ts +0 -0
  1439. package/dist/src/util/misc/pick.d.ts.map +0 -0
  1440. package/dist/src/util/misc/pick.min.mjs +0 -0
  1441. package/dist/src/util/misc/pick.min.mjs.map +0 -0
  1442. package/dist/src/util/misc/pick.mjs +0 -0
  1443. package/dist/src/util/misc/pick.mjs.map +0 -0
  1444. package/dist/src/util/misc/planeChange.d.ts +0 -0
  1445. package/dist/src/util/misc/planeChange.d.ts.map +0 -0
  1446. package/dist/src/util/misc/planeChange.min.mjs +0 -0
  1447. package/dist/src/util/misc/planeChange.min.mjs.map +0 -0
  1448. package/dist/src/util/misc/planeChange.mjs +0 -0
  1449. package/dist/src/util/misc/planeChange.mjs.map +0 -0
  1450. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  1451. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  1452. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -0
  1453. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -0
  1454. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -0
  1455. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -0
  1456. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  1457. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  1458. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -0
  1459. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -0
  1460. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -0
  1461. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -0
  1462. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  1463. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  1464. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -0
  1465. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -0
  1466. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -0
  1467. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -0
  1468. package/dist/src/util/misc/projectStroke/index.d.ts +0 -0
  1469. package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -0
  1470. package/dist/src/util/misc/projectStroke/index.min.mjs +0 -0
  1471. package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -0
  1472. package/dist/src/util/misc/projectStroke/index.mjs +0 -0
  1473. package/dist/src/util/misc/projectStroke/index.mjs.map +0 -0
  1474. package/dist/src/util/misc/projectStroke/types.d.ts +0 -0
  1475. package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -0
  1476. package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  1477. package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  1478. package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -0
  1479. package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -0
  1480. package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -0
  1481. package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -0
  1482. package/dist/src/util/misc/resolveOrigin.d.ts +0 -0
  1483. package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -0
  1484. package/dist/src/util/misc/resolveOrigin.min.mjs +0 -0
  1485. package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -0
  1486. package/dist/src/util/misc/resolveOrigin.mjs +0 -0
  1487. package/dist/src/util/misc/resolveOrigin.mjs.map +0 -0
  1488. package/dist/src/util/misc/sin.d.ts +0 -0
  1489. package/dist/src/util/misc/sin.d.ts.map +0 -0
  1490. package/dist/src/util/misc/sin.min.mjs +0 -0
  1491. package/dist/src/util/misc/sin.min.mjs.map +0 -0
  1492. package/dist/src/util/misc/sin.mjs +0 -0
  1493. package/dist/src/util/misc/sin.mjs.map +0 -0
  1494. package/dist/src/util/misc/svgExport.d.ts +0 -0
  1495. package/dist/src/util/misc/svgExport.d.ts.map +0 -0
  1496. package/dist/src/util/misc/svgExport.min.mjs +0 -0
  1497. package/dist/src/util/misc/svgExport.min.mjs.map +0 -0
  1498. package/dist/src/util/misc/svgExport.mjs +0 -0
  1499. package/dist/src/util/misc/svgExport.mjs.map +0 -0
  1500. package/dist/src/util/misc/svgParsing.d.ts +0 -0
  1501. package/dist/src/util/misc/svgParsing.d.ts.map +0 -0
  1502. package/dist/src/util/misc/svgParsing.min.mjs +0 -0
  1503. package/dist/src/util/misc/svgParsing.min.mjs.map +0 -0
  1504. package/dist/src/util/misc/svgParsing.mjs +0 -0
  1505. package/dist/src/util/misc/svgParsing.mjs.map +0 -0
  1506. package/dist/src/util/misc/textStyles.d.ts +0 -0
  1507. package/dist/src/util/misc/textStyles.d.ts.map +0 -0
  1508. package/dist/src/util/misc/textStyles.min.mjs +0 -0
  1509. package/dist/src/util/misc/textStyles.min.mjs.map +0 -0
  1510. package/dist/src/util/misc/textStyles.mjs +0 -0
  1511. package/dist/src/util/misc/textStyles.mjs.map +0 -0
  1512. package/dist/src/util/misc/toFixed.d.ts +0 -0
  1513. package/dist/src/util/misc/toFixed.d.ts.map +0 -0
  1514. package/dist/src/util/misc/toFixed.min.mjs +0 -0
  1515. package/dist/src/util/misc/toFixed.min.mjs.map +0 -0
  1516. package/dist/src/util/misc/toFixed.mjs +0 -0
  1517. package/dist/src/util/misc/toFixed.mjs.map +0 -0
  1518. package/dist/src/util/misc/vectors.d.ts +0 -0
  1519. package/dist/src/util/misc/vectors.d.ts.map +0 -0
  1520. package/dist/src/util/misc/vectors.min.mjs +0 -0
  1521. package/dist/src/util/misc/vectors.min.mjs.map +0 -0
  1522. package/dist/src/util/misc/vectors.mjs +0 -0
  1523. package/dist/src/util/misc/vectors.mjs.map +0 -0
  1524. package/dist/src/util/path/index.d.ts +0 -0
  1525. package/dist/src/util/path/index.d.ts.map +0 -0
  1526. package/dist/src/util/path/index.min.mjs +0 -0
  1527. package/dist/src/util/path/index.min.mjs.map +0 -0
  1528. package/dist/src/util/path/index.mjs +0 -0
  1529. package/dist/src/util/path/index.mjs.map +0 -0
  1530. package/dist/src/util/path/regex.d.ts +0 -0
  1531. package/dist/src/util/path/regex.d.ts.map +0 -0
  1532. package/dist/src/util/path/regex.min.mjs +0 -0
  1533. package/dist/src/util/path/regex.min.mjs.map +0 -0
  1534. package/dist/src/util/path/regex.mjs +0 -0
  1535. package/dist/src/util/path/regex.mjs.map +0 -0
  1536. package/dist/src/util/path/typechecks.d.ts +0 -0
  1537. package/dist/src/util/path/typechecks.d.ts.map +0 -0
  1538. package/dist/src/util/path/typedefs.d.ts +0 -0
  1539. package/dist/src/util/path/typedefs.d.ts.map +0 -0
  1540. package/dist/src/util/transform_matrix_removal.d.ts +0 -0
  1541. package/dist/src/util/transform_matrix_removal.d.ts.map +0 -0
  1542. package/dist/src/util/transform_matrix_removal.min.mjs +0 -0
  1543. package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -0
  1544. package/dist/src/util/transform_matrix_removal.mjs +0 -0
  1545. package/dist/src/util/transform_matrix_removal.mjs.map +0 -0
  1546. package/dist/src/util/typeAssertions.d.ts +0 -0
  1547. package/dist/src/util/typeAssertions.d.ts.map +0 -0
  1548. package/dist/src/util/typeAssertions.min.mjs +0 -0
  1549. package/dist/src/util/typeAssertions.min.mjs.map +0 -0
  1550. package/dist/src/util/typeAssertions.mjs +0 -0
  1551. package/dist/src/util/typeAssertions.mjs.map +0 -0
  1552. package/dist-extensions/aligning_guidelines/constant.mjs +0 -0
  1553. package/dist-extensions/aligning_guidelines/constant.mjs.map +0 -0
  1554. package/dist-extensions/aligning_guidelines/index.mjs +0 -0
  1555. package/dist-extensions/aligning_guidelines/index.mjs.map +0 -0
  1556. package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -0
  1557. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -0
  1558. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -0
  1559. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -0
  1560. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -0
  1561. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -0
  1562. package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -0
  1563. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -0
  1564. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -0
  1565. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -0
  1566. package/dist-extensions/data_updaters/gradient/index.mjs +0 -0
  1567. package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -0
  1568. package/dist-extensions/data_updaters/origins/index.mjs +0 -0
  1569. package/dist-extensions/data_updaters/origins/index.mjs.map +0 -0
  1570. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +0 -0
  1571. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  1572. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -0
  1573. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -0
  1574. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  1575. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  1576. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  1577. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  1578. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  1579. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  1580. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  1581. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  1582. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  1583. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  1584. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  1585. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  1586. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -0
  1587. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  1588. package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -0
  1589. package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -0
  1590. package/dist-extensions/extensions/index.d.ts +0 -0
  1591. package/dist-extensions/extensions/index.d.ts.map +0 -0
  1592. package/dist-extensions/fabric-extensions.min.js +0 -0
  1593. package/dist-extensions/fabric-extensions.min.js.map +0 -0
  1594. package/dist-extensions/fabric.d.ts +0 -0
  1595. package/dist-extensions/fabric.d.ts.map +0 -0
  1596. package/dist-extensions/index.d.ts +0 -0
  1597. package/dist-extensions/index.d.ts.map +0 -0
  1598. package/dist-extensions/index.mjs +0 -0
  1599. package/dist-extensions/index.mjs.map +0 -0
  1600. package/dist-extensions/src/ClassRegistry.d.ts +0 -0
  1601. package/dist-extensions/src/ClassRegistry.d.ts.map +0 -0
  1602. package/dist-extensions/src/Collection.d.ts +0 -0
  1603. package/dist-extensions/src/Collection.d.ts.map +0 -0
  1604. package/dist-extensions/src/CommonMethods.d.ts +0 -0
  1605. package/dist-extensions/src/CommonMethods.d.ts.map +0 -0
  1606. package/dist-extensions/src/EventTypeDefs.d.ts +0 -0
  1607. package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -0
  1608. package/dist-extensions/src/Intersection.d.ts +0 -0
  1609. package/dist-extensions/src/Intersection.d.ts.map +0 -0
  1610. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  1611. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  1612. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -0
  1613. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  1614. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  1615. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  1616. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  1617. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  1618. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  1619. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  1620. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  1621. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  1622. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  1623. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  1624. package/dist-extensions/src/LayoutManager/constants.d.ts +0 -0
  1625. package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -0
  1626. package/dist-extensions/src/LayoutManager/index.d.ts +0 -0
  1627. package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -0
  1628. package/dist-extensions/src/LayoutManager/types.d.ts +0 -0
  1629. package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -0
  1630. package/dist-extensions/src/Observable.d.ts +0 -0
  1631. package/dist-extensions/src/Observable.d.ts.map +0 -0
  1632. package/dist-extensions/src/Pattern/Pattern.d.ts +0 -0
  1633. package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -0
  1634. package/dist-extensions/src/Pattern/index.d.ts +0 -0
  1635. package/dist-extensions/src/Pattern/index.d.ts.map +0 -0
  1636. package/dist-extensions/src/Pattern/types.d.ts +0 -0
  1637. package/dist-extensions/src/Pattern/types.d.ts.map +0 -0
  1638. package/dist-extensions/src/Point.d.ts +0 -0
  1639. package/dist-extensions/src/Point.d.ts.map +0 -0
  1640. package/dist-extensions/src/Shadow.d.ts +0 -0
  1641. package/dist-extensions/src/Shadow.d.ts.map +0 -0
  1642. package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -0
  1643. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -0
  1644. package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -0
  1645. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -0
  1646. package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -0
  1647. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -0
  1648. package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -0
  1649. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -0
  1650. package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -0
  1651. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -0
  1652. package/dist-extensions/src/brushes/typedefs.d.ts +0 -0
  1653. package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -0
  1654. package/dist-extensions/src/cache.d.ts +0 -0
  1655. package/dist-extensions/src/cache.d.ts.map +0 -0
  1656. package/dist-extensions/src/canvas/Canvas.d.ts +0 -0
  1657. package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -0
  1658. package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -0
  1659. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -0
  1660. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  1661. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  1662. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  1663. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  1664. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -0
  1665. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -0
  1666. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -0
  1667. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -0
  1668. package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -0
  1669. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -0
  1670. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -0
  1671. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  1672. package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -0
  1673. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -0
  1674. package/dist-extensions/src/color/Color.d.ts +0 -0
  1675. package/dist-extensions/src/color/Color.d.ts.map +0 -0
  1676. package/dist-extensions/src/color/color_map.d.ts +0 -0
  1677. package/dist-extensions/src/color/color_map.d.ts.map +0 -0
  1678. package/dist-extensions/src/color/constants.d.ts +0 -0
  1679. package/dist-extensions/src/color/constants.d.ts.map +0 -0
  1680. package/dist-extensions/src/color/typedefs.d.ts +0 -0
  1681. package/dist-extensions/src/color/typedefs.d.ts.map +0 -0
  1682. package/dist-extensions/src/color/util.d.ts +0 -0
  1683. package/dist-extensions/src/color/util.d.ts.map +0 -0
  1684. package/dist-extensions/src/config.d.ts +0 -0
  1685. package/dist-extensions/src/config.d.ts.map +0 -0
  1686. package/dist-extensions/src/constants.d.ts +0 -0
  1687. package/dist-extensions/src/constants.d.ts.map +0 -0
  1688. package/dist-extensions/src/controls/Control.d.ts +0 -0
  1689. package/dist-extensions/src/controls/Control.d.ts.map +0 -0
  1690. package/dist-extensions/src/controls/changeHeight.d.ts +0 -0
  1691. package/dist-extensions/src/controls/changeHeight.d.ts.map +0 -0
  1692. package/dist-extensions/src/controls/changeWidth.d.ts +0 -0
  1693. package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -0
  1694. package/dist-extensions/src/controls/commonControls.d.ts +0 -0
  1695. package/dist-extensions/src/controls/commonControls.d.ts.map +0 -0
  1696. package/dist-extensions/src/controls/controlRendering.d.ts +0 -0
  1697. package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -0
  1698. package/dist-extensions/src/controls/drag.d.ts +0 -0
  1699. package/dist-extensions/src/controls/drag.d.ts.map +0 -0
  1700. package/dist-extensions/src/controls/fireEvent.d.ts +0 -0
  1701. package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -0
  1702. package/dist-extensions/src/controls/index.d.ts +0 -0
  1703. package/dist-extensions/src/controls/index.d.ts.map +0 -0
  1704. package/dist-extensions/src/controls/pathControl.d.ts +0 -0
  1705. package/dist-extensions/src/controls/pathControl.d.ts.map +0 -0
  1706. package/dist-extensions/src/controls/polyControl.d.ts +0 -0
  1707. package/dist-extensions/src/controls/polyControl.d.ts.map +0 -0
  1708. package/dist-extensions/src/controls/rotate.d.ts +0 -0
  1709. package/dist-extensions/src/controls/rotate.d.ts.map +0 -0
  1710. package/dist-extensions/src/controls/scale.d.ts +0 -0
  1711. package/dist-extensions/src/controls/scale.d.ts.map +0 -0
  1712. package/dist-extensions/src/controls/scaleSkew.d.ts +0 -0
  1713. package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -0
  1714. package/dist-extensions/src/controls/skew.d.ts +0 -0
  1715. package/dist-extensions/src/controls/skew.d.ts.map +0 -0
  1716. package/dist-extensions/src/controls/util.d.ts +0 -0
  1717. package/dist-extensions/src/controls/util.d.ts.map +0 -0
  1718. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -0
  1719. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  1720. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  1721. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  1722. package/dist-extensions/src/env/browser.d.ts +0 -0
  1723. package/dist-extensions/src/env/browser.d.ts.map +0 -0
  1724. package/dist-extensions/src/env/index.d.ts +0 -0
  1725. package/dist-extensions/src/env/index.d.ts.map +0 -0
  1726. package/dist-extensions/src/env/types.d.ts +0 -0
  1727. package/dist-extensions/src/env/types.d.ts.map +0 -0
  1728. package/dist-extensions/src/filters/BaseFilter.d.ts +0 -0
  1729. package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -0
  1730. package/dist-extensions/src/filters/BlendColor.d.ts +0 -0
  1731. package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -0
  1732. package/dist-extensions/src/filters/BlendImage.d.ts +0 -0
  1733. package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -0
  1734. package/dist-extensions/src/filters/Blur.d.ts +0 -0
  1735. package/dist-extensions/src/filters/Blur.d.ts.map +0 -0
  1736. package/dist-extensions/src/filters/Brightness.d.ts +0 -0
  1737. package/dist-extensions/src/filters/Brightness.d.ts.map +0 -0
  1738. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  1739. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  1740. package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -0
  1741. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -0
  1742. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -0
  1743. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  1744. package/dist-extensions/src/filters/Composed.d.ts +0 -0
  1745. package/dist-extensions/src/filters/Composed.d.ts.map +0 -0
  1746. package/dist-extensions/src/filters/Contrast.d.ts +0 -0
  1747. package/dist-extensions/src/filters/Contrast.d.ts.map +0 -0
  1748. package/dist-extensions/src/filters/Convolute.d.ts +0 -0
  1749. package/dist-extensions/src/filters/Convolute.d.ts.map +0 -0
  1750. package/dist-extensions/src/filters/FilterBackend.d.ts +0 -0
  1751. package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -0
  1752. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -0
  1753. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  1754. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  1755. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  1756. package/dist-extensions/src/filters/Gamma.d.ts +0 -0
  1757. package/dist-extensions/src/filters/Gamma.d.ts.map +0 -0
  1758. package/dist-extensions/src/filters/Grayscale.d.ts +0 -0
  1759. package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -0
  1760. package/dist-extensions/src/filters/HueRotation.d.ts +0 -0
  1761. package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -0
  1762. package/dist-extensions/src/filters/Invert.d.ts +0 -0
  1763. package/dist-extensions/src/filters/Invert.d.ts.map +0 -0
  1764. package/dist-extensions/src/filters/Noise.d.ts +0 -0
  1765. package/dist-extensions/src/filters/Noise.d.ts.map +0 -0
  1766. package/dist-extensions/src/filters/Pixelate.d.ts +0 -0
  1767. package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -0
  1768. package/dist-extensions/src/filters/RemoveColor.d.ts +0 -0
  1769. package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -0
  1770. package/dist-extensions/src/filters/Resize.d.ts +0 -0
  1771. package/dist-extensions/src/filters/Resize.d.ts.map +0 -0
  1772. package/dist-extensions/src/filters/Saturation.d.ts +0 -0
  1773. package/dist-extensions/src/filters/Saturation.d.ts.map +0 -0
  1774. package/dist-extensions/src/filters/Vibrance.d.ts +0 -0
  1775. package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -0
  1776. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -0
  1777. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  1778. package/dist-extensions/src/filters/filters.d.ts +0 -0
  1779. package/dist-extensions/src/filters/filters.d.ts.map +0 -0
  1780. package/dist-extensions/src/filters/index.d.ts +0 -0
  1781. package/dist-extensions/src/filters/index.d.ts.map +0 -0
  1782. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -0
  1783. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -0
  1784. package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -0
  1785. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -0
  1786. package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -0
  1787. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -0
  1788. package/dist-extensions/src/filters/shaders/blur.d.ts +0 -0
  1789. package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -0
  1790. package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -0
  1791. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -0
  1792. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -0
  1793. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  1794. package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -0
  1795. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -0
  1796. package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -0
  1797. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -0
  1798. package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -0
  1799. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -0
  1800. package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -0
  1801. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -0
  1802. package/dist-extensions/src/filters/shaders/invert.d.ts +0 -0
  1803. package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -0
  1804. package/dist-extensions/src/filters/shaders/noise.d.ts +0 -0
  1805. package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -0
  1806. package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -0
  1807. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -0
  1808. package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -0
  1809. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -0
  1810. package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -0
  1811. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -0
  1812. package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -0
  1813. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -0
  1814. package/dist-extensions/src/filters/typedefs.d.ts +0 -0
  1815. package/dist-extensions/src/filters/typedefs.d.ts.map +0 -0
  1816. package/dist-extensions/src/filters/utils.d.ts +0 -0
  1817. package/dist-extensions/src/filters/utils.d.ts.map +0 -0
  1818. package/dist-extensions/src/gradient/Gradient.d.ts +0 -0
  1819. package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -0
  1820. package/dist-extensions/src/gradient/constants.d.ts +0 -0
  1821. package/dist-extensions/src/gradient/constants.d.ts.map +0 -0
  1822. package/dist-extensions/src/gradient/index.d.ts +0 -0
  1823. package/dist-extensions/src/gradient/index.d.ts.map +0 -0
  1824. package/dist-extensions/src/gradient/parser/misc.d.ts +0 -0
  1825. package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -0
  1826. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -0
  1827. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  1828. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -0
  1829. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -0
  1830. package/dist-extensions/src/gradient/typedefs.d.ts +0 -0
  1831. package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -0
  1832. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -0
  1833. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -0
  1834. package/dist-extensions/src/parser/attributes.d.ts +0 -0
  1835. package/dist-extensions/src/parser/attributes.d.ts.map +0 -0
  1836. package/dist-extensions/src/parser/constants.d.ts +0 -0
  1837. package/dist-extensions/src/parser/constants.d.ts.map +0 -0
  1838. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -0
  1839. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  1840. package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -0
  1841. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -0
  1842. package/dist-extensions/src/parser/elements_parser.d.ts +0 -0
  1843. package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -0
  1844. package/dist-extensions/src/parser/getCSSRules.d.ts +0 -0
  1845. package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -0
  1846. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -0
  1847. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  1848. package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -0
  1849. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -0
  1850. package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -0
  1851. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -0
  1852. package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -0
  1853. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -0
  1854. package/dist-extensions/src/parser/getTagName.d.ts +0 -0
  1855. package/dist-extensions/src/parser/getTagName.d.ts.map +0 -0
  1856. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -0
  1857. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  1858. package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -0
  1859. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -0
  1860. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -0
  1861. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -0
  1862. package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -0
  1863. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -0
  1864. package/dist-extensions/src/parser/normalizeValue.d.ts +0 -0
  1865. package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -0
  1866. package/dist-extensions/src/parser/parseAttributes.d.ts +0 -0
  1867. package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -0
  1868. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -0
  1869. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -0
  1870. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -0
  1871. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -0
  1872. package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -0
  1873. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -0
  1874. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -0
  1875. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -0
  1876. package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -0
  1877. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -0
  1878. package/dist-extensions/src/parser/parseStyleString.d.ts +0 -0
  1879. package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -0
  1880. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -0
  1881. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -0
  1882. package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -0
  1883. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -0
  1884. package/dist-extensions/src/parser/percent.d.ts +0 -0
  1885. package/dist-extensions/src/parser/percent.d.ts.map +0 -0
  1886. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  1887. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  1888. package/dist-extensions/src/parser/selectorMatches.d.ts +0 -0
  1889. package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -0
  1890. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -0
  1891. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  1892. package/dist-extensions/src/parser/typedefs.d.ts +0 -0
  1893. package/dist-extensions/src/parser/typedefs.d.ts.map +0 -0
  1894. package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -0
  1895. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -0
  1896. package/dist-extensions/src/shapes/Circle.d.ts +0 -0
  1897. package/dist-extensions/src/shapes/Circle.d.ts.map +0 -0
  1898. package/dist-extensions/src/shapes/CustomLine.d.ts +10 -0
  1899. package/dist-extensions/src/shapes/CustomLine.d.ts.map +1 -0
  1900. package/dist-extensions/src/shapes/Ellipse.d.ts +0 -0
  1901. package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -0
  1902. package/dist-extensions/src/shapes/Group.d.ts +0 -0
  1903. package/dist-extensions/src/shapes/Group.d.ts.map +0 -0
  1904. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1905. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1906. package/dist-extensions/src/shapes/IText/IText.d.ts +0 -0
  1907. package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -0
  1908. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1909. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
  1910. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1911. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1912. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1913. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1914. package/dist-extensions/src/shapes/IText/constants.d.ts +0 -0
  1915. package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -0
  1916. package/dist-extensions/src/shapes/Image.d.ts +0 -0
  1917. package/dist-extensions/src/shapes/Image.d.ts.map +0 -0
  1918. package/dist-extensions/src/shapes/Line.d.ts +0 -0
  1919. package/dist-extensions/src/shapes/Line.d.ts.map +0 -0
  1920. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -0
  1921. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1922. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1923. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1924. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1925. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1926. package/dist-extensions/src/shapes/Object/Object.d.ts +0 -0
  1927. package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -0
  1928. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1929. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1930. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -0
  1931. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1932. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1933. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1934. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1935. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1936. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1937. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1938. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1939. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1940. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1941. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1942. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1943. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1944. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1945. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1946. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1947. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1948. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1949. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1950. package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -0
  1951. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -0
  1952. package/dist-extensions/src/shapes/Path.d.ts +0 -0
  1953. package/dist-extensions/src/shapes/Path.d.ts.map +0 -0
  1954. package/dist-extensions/src/shapes/Polygon.d.ts +0 -0
  1955. package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -0
  1956. package/dist-extensions/src/shapes/Polyline.d.ts +0 -0
  1957. package/dist-extensions/src/shapes/Polyline.d.ts.map +0 -0
  1958. package/dist-extensions/src/shapes/Rect.d.ts +0 -0
  1959. package/dist-extensions/src/shapes/Rect.d.ts.map +0 -0
  1960. package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -0
  1961. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -0
  1962. package/dist-extensions/src/shapes/Text/Text.d.ts +0 -0
  1963. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  1964. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1965. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1966. package/dist-extensions/src/shapes/Text/constants.d.ts +1 -1
  1967. package/dist-extensions/src/shapes/Text/constants.d.ts.map +1 -1
  1968. package/dist-extensions/src/shapes/Textbox.d.ts +0 -0
  1969. package/dist-extensions/src/shapes/Textbox.d.ts.map +0 -0
  1970. package/dist-extensions/src/shapes/Triangle.d.ts +0 -0
  1971. package/dist-extensions/src/shapes/Triangle.d.ts.map +0 -0
  1972. package/dist-extensions/src/text/browserLines.d.ts +0 -0
  1973. package/dist-extensions/src/text/browserLines.d.ts.map +0 -0
  1974. package/dist-extensions/src/text/ellipsis.d.ts +0 -0
  1975. package/dist-extensions/src/text/ellipsis.d.ts.map +0 -0
  1976. package/dist-extensions/src/text/hitTest.d.ts +0 -0
  1977. package/dist-extensions/src/text/hitTest.d.ts.map +0 -0
  1978. package/dist-extensions/src/text/layout.d.ts +0 -0
  1979. package/dist-extensions/src/text/layout.d.ts.map +0 -0
  1980. package/dist-extensions/src/text/measure.d.ts +0 -0
  1981. package/dist-extensions/src/text/measure.d.ts.map +0 -0
  1982. package/dist-extensions/src/text/overlayEditor.d.ts +0 -0
  1983. package/dist-extensions/src/text/overlayEditor.d.ts.map +0 -0
  1984. package/dist-extensions/src/text/scriptUtils.d.ts +142 -0
  1985. package/dist-extensions/src/text/scriptUtils.d.ts.map +1 -0
  1986. package/dist-extensions/src/text/unicode.d.ts +0 -0
  1987. package/dist-extensions/src/text/unicode.d.ts.map +0 -0
  1988. package/dist-extensions/src/typedefs.d.ts +0 -0
  1989. package/dist-extensions/src/typedefs.d.ts.map +0 -0
  1990. package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -0
  1991. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -0
  1992. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1993. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1994. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -0
  1995. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1996. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -0
  1997. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1998. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -0
  1999. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -0
  2000. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -0
  2001. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -0
  2002. package/dist-extensions/src/util/animation/animate.d.ts +0 -0
  2003. package/dist-extensions/src/util/animation/animate.d.ts.map +0 -0
  2004. package/dist-extensions/src/util/animation/easing.d.ts +0 -0
  2005. package/dist-extensions/src/util/animation/easing.d.ts.map +0 -0
  2006. package/dist-extensions/src/util/animation/index.d.ts +0 -0
  2007. package/dist-extensions/src/util/animation/index.d.ts.map +0 -0
  2008. package/dist-extensions/src/util/animation/types.d.ts +0 -0
  2009. package/dist-extensions/src/util/animation/types.d.ts.map +0 -0
  2010. package/dist-extensions/src/util/applyMixins.d.ts +0 -0
  2011. package/dist-extensions/src/util/applyMixins.d.ts.map +0 -0
  2012. package/dist-extensions/src/util/dom_event.d.ts +0 -0
  2013. package/dist-extensions/src/util/dom_event.d.ts.map +0 -0
  2014. package/dist-extensions/src/util/dom_misc.d.ts +0 -0
  2015. package/dist-extensions/src/util/dom_misc.d.ts.map +0 -0
  2016. package/dist-extensions/src/util/index.d.ts +0 -0
  2017. package/dist-extensions/src/util/index.d.ts.map +0 -0
  2018. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -0
  2019. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  2020. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  2021. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  2022. package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -0
  2023. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -0
  2024. package/dist-extensions/src/util/internals/console.d.ts +0 -0
  2025. package/dist-extensions/src/util/internals/console.d.ts.map +0 -0
  2026. package/dist-extensions/src/util/internals/dom_style.d.ts +0 -0
  2027. package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -0
  2028. package/dist-extensions/src/util/internals/findRight.d.ts +0 -0
  2029. package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -0
  2030. package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -0
  2031. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -0
  2032. package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -0
  2033. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -0
  2034. package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -0
  2035. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -0
  2036. package/dist-extensions/src/util/internals/uid.d.ts +0 -0
  2037. package/dist-extensions/src/util/internals/uid.d.ts.map +0 -0
  2038. package/dist-extensions/src/util/lang_string.d.ts +0 -0
  2039. package/dist-extensions/src/util/lang_string.d.ts.map +0 -0
  2040. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  2041. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  2042. package/dist-extensions/src/util/misc/capValue.d.ts +0 -0
  2043. package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -0
  2044. package/dist-extensions/src/util/misc/cornerRadius.d.ts +0 -0
  2045. package/dist-extensions/src/util/misc/cornerRadius.d.ts.map +0 -0
  2046. package/dist-extensions/src/util/misc/cos.d.ts +0 -0
  2047. package/dist-extensions/src/util/misc/cos.d.ts.map +0 -0
  2048. package/dist-extensions/src/util/misc/dom.d.ts +0 -0
  2049. package/dist-extensions/src/util/misc/dom.d.ts.map +0 -0
  2050. package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -0
  2051. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -0
  2052. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -0
  2053. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -0
  2054. package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -0
  2055. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -0
  2056. package/dist-extensions/src/util/misc/matrix.d.ts +0 -0
  2057. package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -0
  2058. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -0
  2059. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  2060. package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -0
  2061. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -0
  2062. package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -0
  2063. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -0
  2064. package/dist-extensions/src/util/misc/pick.d.ts +0 -0
  2065. package/dist-extensions/src/util/misc/pick.d.ts.map +0 -0
  2066. package/dist-extensions/src/util/misc/planeChange.d.ts +0 -0
  2067. package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -0
  2068. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  2069. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  2070. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  2071. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  2072. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  2073. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  2074. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -0
  2075. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -0
  2076. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -0
  2077. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -0
  2078. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  2079. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  2080. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -0
  2081. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -0
  2082. package/dist-extensions/src/util/misc/sin.d.ts +0 -0
  2083. package/dist-extensions/src/util/misc/sin.d.ts.map +0 -0
  2084. package/dist-extensions/src/util/misc/svgExport.d.ts +0 -0
  2085. package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -0
  2086. package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -0
  2087. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -0
  2088. package/dist-extensions/src/util/misc/textStyles.d.ts +0 -0
  2089. package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -0
  2090. package/dist-extensions/src/util/misc/toFixed.d.ts +0 -0
  2091. package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -0
  2092. package/dist-extensions/src/util/misc/vectors.d.ts +0 -0
  2093. package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -0
  2094. package/dist-extensions/src/util/path/index.d.ts +0 -0
  2095. package/dist-extensions/src/util/path/index.d.ts.map +0 -0
  2096. package/dist-extensions/src/util/path/regex.d.ts +0 -0
  2097. package/dist-extensions/src/util/path/regex.d.ts.map +0 -0
  2098. package/dist-extensions/src/util/path/typedefs.d.ts +0 -0
  2099. package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -0
  2100. package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -0
  2101. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -0
  2102. package/dist-extensions/src/util/typeAssertions.d.ts +0 -0
  2103. package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -0
  2104. package/docs/fabric-konva-gap-analysis.md +0 -0
  2105. package/docs/konva-text-behavior-spec.md +0 -0
  2106. package/docs/text-engine-design.md +0 -0
  2107. package/eslint.config.mjs +0 -0
  2108. package/examples/overlay-edit.html +416 -416
  2109. package/extensions/README.MD +0 -0
  2110. package/extensions/aligning_guidelines/README.MD +0 -0
  2111. package/extensions/aligning_guidelines/constant.ts +0 -0
  2112. package/extensions/aligning_guidelines/index.ts +0 -0
  2113. package/extensions/aligning_guidelines/typedefs.ts +0 -0
  2114. package/extensions/aligning_guidelines/util/basic.spec.ts +0 -0
  2115. package/extensions/aligning_guidelines/util/basic.ts +0 -0
  2116. package/extensions/aligning_guidelines/util/collect-line.ts +0 -0
  2117. package/extensions/aligning_guidelines/util/collect-point.ts +0 -0
  2118. package/extensions/aligning_guidelines/util/draw.ts +0 -0
  2119. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -0
  2120. package/extensions/data_updaters/README.md +0 -0
  2121. package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -0
  2122. package/extensions/data_updaters/gradient/index.spec.ts +0 -0
  2123. package/extensions/data_updaters/gradient/index.ts +0 -0
  2124. package/extensions/data_updaters/origins/README.md +0 -0
  2125. package/extensions/data_updaters/origins/index.spec.ts +0 -0
  2126. package/extensions/data_updaters/origins/index.ts +0 -0
  2127. package/extensions/index.ts +0 -0
  2128. package/fabric-test-editor.html +3552 -0
  2129. package/fabric-test2.html +647 -0
  2130. package/fabric.ts +182 -182
  2131. package/fonts/STV Bold.ttf +0 -0
  2132. package/fonts/STV Light.ttf +0 -0
  2133. package/fonts/STV Regular.ttf +0 -0
  2134. package/index.node.ts +0 -0
  2135. package/index.ts +0 -0
  2136. package/lib/aligning_guidelines.js +0 -0
  2137. package/lib/centering_guidelines.js +0 -0
  2138. package/lib/event.js +0 -0
  2139. package/package.json +164 -164
  2140. package/playwright.config.ts +0 -0
  2141. package/playwright.setup.ts +0 -0
  2142. package/publish-next.js +0 -0
  2143. package/publish.js +0 -0
  2144. package/rollup.config.mjs +0 -0
  2145. package/rtl-debug.html +745 -0
  2146. package/scripts/bench-text.js +591 -591
  2147. package/scripts/build.mjs +0 -0
  2148. package/scripts/buildLock.mjs +0 -0
  2149. package/scripts/buildReporter.mjs +0 -0
  2150. package/scripts/buildStats.mjs +0 -0
  2151. package/scripts/dirname.mjs +0 -0
  2152. package/scripts/git.mjs +0 -0
  2153. package/scripts/index.mjs +0 -0
  2154. package/scripts/sandbox.mjs +0 -0
  2155. package/src/ClassRegistry.spec.ts +0 -0
  2156. package/src/ClassRegistry.ts +0 -0
  2157. package/src/Collection.spec.ts +0 -0
  2158. package/src/Collection.ts +0 -0
  2159. package/src/CommonMethods.ts +0 -0
  2160. package/src/EventTypeDefs.ts +0 -0
  2161. package/src/Intersection.spec.ts +0 -0
  2162. package/src/Intersection.ts +0 -0
  2163. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
  2164. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
  2165. package/src/LayoutManager/LayoutManager.spec.ts +0 -0
  2166. package/src/LayoutManager/LayoutManager.ts +0 -0
  2167. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
  2168. package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
  2169. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
  2170. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
  2171. package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
  2172. package/src/LayoutManager/README.md +0 -0
  2173. package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
  2174. package/src/LayoutManager/constants.ts +0 -0
  2175. package/src/LayoutManager/index.ts +0 -0
  2176. package/src/LayoutManager/types.ts +0 -0
  2177. package/src/Observable.spec.ts +0 -0
  2178. package/src/Observable.ts +0 -0
  2179. package/src/Pattern/Pattern.spec.ts +0 -0
  2180. package/src/Pattern/Pattern.ts +0 -0
  2181. package/src/Pattern/index.ts +0 -0
  2182. package/src/Pattern/types.ts +0 -0
  2183. package/src/Point.spec.ts +0 -0
  2184. package/src/Point.ts +0 -0
  2185. package/src/Shadow.spec.ts +0 -0
  2186. package/src/Shadow.ts +0 -0
  2187. package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
  2188. package/src/brushes/BaseBrush.spec.ts +0 -0
  2189. package/src/brushes/BaseBrush.ts +0 -0
  2190. package/src/brushes/CircleBrush.test.ts +0 -0
  2191. package/src/brushes/CircleBrush.ts +0 -0
  2192. package/src/brushes/PatternBrush.ts +0 -0
  2193. package/src/brushes/PencilBrush.spec.ts +0 -0
  2194. package/src/brushes/PencilBrush.ts +0 -0
  2195. package/src/brushes/SprayBrush.ts +0 -0
  2196. package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
  2197. package/src/brushes/typedefs.ts +0 -0
  2198. package/src/cache.spec.ts +0 -0
  2199. package/src/cache.ts +0 -0
  2200. package/src/canvas/Canvas-dispose.spec.ts +0 -0
  2201. package/src/canvas/Canvas-events.spec.ts +0 -0
  2202. package/src/canvas/Canvas.spec.ts +0 -0
  2203. package/src/canvas/Canvas.ts +0 -0
  2204. package/src/canvas/CanvasOptions.ts +0 -0
  2205. package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
  2206. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
  2207. package/src/canvas/DOMManagers/util.spec.ts +0 -0
  2208. package/src/canvas/DOMManagers/util.ts +0 -0
  2209. package/src/canvas/SelectableCanvas.spec.ts +0 -0
  2210. package/src/canvas/SelectableCanvas.ts +0 -0
  2211. package/src/canvas/StaticCanvas.spec.ts +0 -0
  2212. package/src/canvas/StaticCanvas.ts +0 -0
  2213. package/src/canvas/StaticCanvasOptions.ts +0 -0
  2214. package/src/canvas/TextEditingManager.ts +0 -0
  2215. package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
  2216. package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
  2217. package/src/canvas/__tests__/eventData.test.ts +0 -0
  2218. package/src/canvas/canvas_gestures.mixin.ts +0 -0
  2219. package/src/color/Color.ts +0 -0
  2220. package/src/color/color.test.ts +0 -0
  2221. package/src/color/color_map.ts +0 -0
  2222. package/src/color/constants.ts +0 -0
  2223. package/src/color/typedefs.ts +0 -0
  2224. package/src/color/util.ts +0 -0
  2225. package/src/config.ts +0 -0
  2226. package/src/constants.ts +0 -0
  2227. package/src/controls/Control-cursor.spec.ts +0 -0
  2228. package/src/controls/Control-handlers.spec.ts +0 -0
  2229. package/src/controls/Control.spec.ts +0 -0
  2230. package/src/controls/Control.ts +0 -0
  2231. package/src/controls/changeHeight.ts +0 -0
  2232. package/src/controls/changeWidth.test.ts +0 -0
  2233. package/src/controls/changeWidth.ts +0 -0
  2234. package/src/controls/commonControls.ts +0 -0
  2235. package/src/controls/controlRendering.ts +0 -0
  2236. package/src/controls/drag.ts +0 -0
  2237. package/src/controls/fireEvent.ts +0 -0
  2238. package/src/controls/index.ts +0 -0
  2239. package/src/controls/pathControl.spec.ts +0 -0
  2240. package/src/controls/pathControl.ts +0 -0
  2241. package/src/controls/polyControl.spec.ts +0 -0
  2242. package/src/controls/polyControl.ts +0 -0
  2243. package/src/controls/rotate.ts +0 -0
  2244. package/src/controls/scale.test.ts +0 -0
  2245. package/src/controls/scale.ts +0 -0
  2246. package/src/controls/scaleSkew.ts +0 -0
  2247. package/src/controls/skew.ts +0 -0
  2248. package/src/controls/util.ts +0 -0
  2249. package/src/controls/wrapWithFireEvent.ts +0 -0
  2250. package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
  2251. package/src/controls/wrapWithFixedAnchor.ts +0 -0
  2252. package/src/env/browser.ts +0 -0
  2253. package/src/env/env.spec.ts +0 -0
  2254. package/src/env/index.ts +0 -0
  2255. package/src/env/node.ts +0 -0
  2256. package/src/env/types.ts +0 -0
  2257. package/src/filters/BaseFilter.spec.ts +0 -0
  2258. package/src/filters/BaseFilter.ts +0 -0
  2259. package/src/filters/BlendColor.ts +0 -0
  2260. package/src/filters/BlendImage.ts +0 -0
  2261. package/src/filters/Blur.ts +0 -0
  2262. package/src/filters/Boilerplate.ts +0 -0
  2263. package/src/filters/Brightness.ts +0 -0
  2264. package/src/filters/Canvas2dFilterBackend.ts +0 -0
  2265. package/src/filters/ColorMatrix.spec.ts +0 -0
  2266. package/src/filters/ColorMatrix.ts +0 -0
  2267. package/src/filters/ColorMatrixFilters.ts +0 -0
  2268. package/src/filters/Composed.ts +0 -0
  2269. package/src/filters/Contrast.ts +0 -0
  2270. package/src/filters/Convolute.ts +0 -0
  2271. package/src/filters/FilterBackend.ts +0 -0
  2272. package/src/filters/GLProbes/GLProbe.ts +0 -0
  2273. package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
  2274. package/src/filters/GLProbes/WebGLProbe.ts +0 -0
  2275. package/src/filters/Gamma.ts +0 -0
  2276. package/src/filters/Grayscale.ts +0 -0
  2277. package/src/filters/HueRotation.ts +0 -0
  2278. package/src/filters/Invert.ts +0 -0
  2279. package/src/filters/Noise.ts +0 -0
  2280. package/src/filters/Pixelate.ts +0 -0
  2281. package/src/filters/RemoveColor.ts +0 -0
  2282. package/src/filters/Resize.ts +0 -0
  2283. package/src/filters/Saturation.ts +0 -0
  2284. package/src/filters/Vibrance.ts +0 -0
  2285. package/src/filters/WebGLFilterBackend.spec.ts +0 -0
  2286. package/src/filters/WebGLFilterBackend.ts +0 -0
  2287. package/src/filters/filters.ts +0 -0
  2288. package/src/filters/index.ts +0 -0
  2289. package/src/filters/shaders/baseFilter.ts +0 -0
  2290. package/src/filters/shaders/blendColor.ts +0 -0
  2291. package/src/filters/shaders/blendImage.ts +0 -0
  2292. package/src/filters/shaders/blur.ts +0 -0
  2293. package/src/filters/shaders/brightness.ts +0 -0
  2294. package/src/filters/shaders/colorMatrix.ts +0 -0
  2295. package/src/filters/shaders/constrast.ts +0 -0
  2296. package/src/filters/shaders/convolute.ts +0 -0
  2297. package/src/filters/shaders/gamma.ts +0 -0
  2298. package/src/filters/shaders/grayscale.ts +0 -0
  2299. package/src/filters/shaders/invert.ts +0 -0
  2300. package/src/filters/shaders/noise.ts +0 -0
  2301. package/src/filters/shaders/pixelate.ts +0 -0
  2302. package/src/filters/shaders/removeColor.ts +0 -0
  2303. package/src/filters/shaders/saturation.ts +0 -0
  2304. package/src/filters/shaders/vibrance.ts +0 -0
  2305. package/src/filters/typedefs.ts +0 -0
  2306. package/src/filters/utils.ts +0 -0
  2307. package/src/gradient/Gradient.spec.ts +0 -0
  2308. package/src/gradient/Gradient.ts +0 -0
  2309. package/src/gradient/constants.ts +0 -0
  2310. package/src/gradient/index.ts +0 -0
  2311. package/src/gradient/parser/misc.ts +0 -0
  2312. package/src/gradient/parser/parseColorStops.ts +0 -0
  2313. package/src/gradient/parser/parseCoords.ts +0 -0
  2314. package/src/gradient/typedefs.ts +0 -0
  2315. package/src/mixins/eraser_brush.mixin.ts +0 -0
  2316. package/src/parkinglot/canvas_animation.mixin.ts +0 -0
  2317. package/src/parkinglot/straighten.ts +0 -0
  2318. package/src/parser/applyViewboxTransform.spec.ts +0 -0
  2319. package/src/parser/applyViewboxTransform.ts +0 -0
  2320. package/src/parser/attributes.ts +0 -0
  2321. package/src/parser/constants.spec.ts +0 -0
  2322. package/src/parser/constants.ts +0 -0
  2323. package/src/parser/doesSomeParentMatch.ts +0 -0
  2324. package/src/parser/elementMatchesRule.ts +0 -0
  2325. package/src/parser/elements_parser.ts +0 -0
  2326. package/src/parser/getCSSRules.spec.ts +0 -0
  2327. package/src/parser/getCSSRules.ts +0 -0
  2328. package/src/parser/getGlobalStylesForElement.ts +0 -0
  2329. package/src/parser/getGradientDefs.ts +0 -0
  2330. package/src/parser/getMultipleNodes.ts +0 -0
  2331. package/src/parser/getSvgRegex.ts +0 -0
  2332. package/src/parser/getTagName.ts +0 -0
  2333. package/src/parser/hasInvalidAncestor.ts +0 -0
  2334. package/src/parser/loadSVGFromString.test.ts +0 -0
  2335. package/src/parser/loadSVGFromString.ts +0 -0
  2336. package/src/parser/loadSVGFromURL.ts +0 -0
  2337. package/src/parser/normalizeAttr.ts +0 -0
  2338. package/src/parser/normalizeValue.ts +0 -0
  2339. package/src/parser/parseAttributes.ts +0 -0
  2340. package/src/parser/parseFontDeclaration.ts +0 -0
  2341. package/src/parser/parsePointsAttribute.ts +0 -0
  2342. package/src/parser/parseSVGDocument.ts +0 -0
  2343. package/src/parser/parseStyleAttribute.ts +0 -0
  2344. package/src/parser/parseStyleObject.ts +0 -0
  2345. package/src/parser/parseStyleString.ts +0 -0
  2346. package/src/parser/parseTransformAttribute.ts +0 -0
  2347. package/src/parser/parseUseDirectives.test.ts +0 -0
  2348. package/src/parser/parseUseDirectives.ts +0 -0
  2349. package/src/parser/parser.spec.ts +0 -0
  2350. package/src/parser/percent.ts +0 -0
  2351. package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
  2352. package/src/parser/selectorMatches.ts +0 -0
  2353. package/src/parser/setStrokeFillOpacity.ts +0 -0
  2354. package/src/parser/typedefs.ts +0 -0
  2355. package/src/shapes/ActiveSelection.spec.ts +0 -0
  2356. package/src/shapes/ActiveSelection.ts +0 -0
  2357. package/src/shapes/Circle.spec.ts +0 -0
  2358. package/src/shapes/Circle.ts +0 -0
  2359. package/src/shapes/Ellipse.spec.ts +0 -0
  2360. package/src/shapes/Ellipse.ts +0 -0
  2361. package/src/shapes/Group.spec.ts +0 -0
  2362. package/src/shapes/Group.ts +0 -0
  2363. package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
  2364. package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
  2365. package/src/shapes/IText/IText.test.ts +0 -0
  2366. package/src/shapes/IText/IText.ts +846 -846
  2367. package/src/shapes/IText/ITextBehavior.test.ts +0 -0
  2368. package/src/shapes/IText/ITextBehavior.ts +1187 -1187
  2369. package/src/shapes/IText/ITextClickBehavior.ts +254 -254
  2370. package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
  2371. package/src/shapes/IText/ITextKeyBehavior.ts +732 -732
  2372. package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
  2373. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
  2374. package/src/shapes/IText/constants.ts +0 -0
  2375. package/src/shapes/Image-filters.spec.ts +0 -0
  2376. package/src/shapes/Image.spec.ts +0 -0
  2377. package/src/shapes/Image.ts +0 -0
  2378. package/src/shapes/Line.spec.ts +0 -0
  2379. package/src/shapes/Line.ts +0 -0
  2380. package/src/shapes/Object/FabricObject.spec.ts +0 -0
  2381. package/src/shapes/Object/FabricObject.ts +0 -0
  2382. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
  2383. package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
  2384. package/src/shapes/Object/InteractiveObject.ts +0 -0
  2385. package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
  2386. package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
  2387. package/src/shapes/Object/Object.spec.ts +0 -0
  2388. package/src/shapes/Object/Object.ts +0 -0
  2389. package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
  2390. package/src/shapes/Object/ObjectGeometry.ts +0 -0
  2391. package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
  2392. package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
  2393. package/src/shapes/Object/StackedObject.spec.ts +0 -0
  2394. package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
  2395. package/src/shapes/Object/defaultValues.ts +0 -0
  2396. package/src/shapes/Object/types/BaseProps.ts +0 -0
  2397. package/src/shapes/Object/types/BorderProps.ts +0 -0
  2398. package/src/shapes/Object/types/ControlProps.ts +0 -0
  2399. package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
  2400. package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
  2401. package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
  2402. package/src/shapes/Object/types/ObjectProps.ts +0 -0
  2403. package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
  2404. package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
  2405. package/src/shapes/Object/types/index.ts +0 -0
  2406. package/src/shapes/Path.spec.ts +0 -0
  2407. package/src/shapes/Path.ts +0 -0
  2408. package/src/shapes/Polygon.spec.ts +0 -0
  2409. package/src/shapes/Polygon.ts +0 -0
  2410. package/src/shapes/Polyline.spec.ts +0 -0
  2411. package/src/shapes/Polyline.ts +0 -0
  2412. package/src/shapes/Rect.spec.ts +0 -0
  2413. package/src/shapes/Rect.ts +0 -0
  2414. package/src/shapes/Text/StyledText.spec.ts +0 -0
  2415. package/src/shapes/Text/StyledText.ts +0 -0
  2416. package/src/shapes/Text/Text.spec.ts +0 -0
  2417. package/src/shapes/Text/Text.ts +2463 -2459
  2418. package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
  2419. package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
  2420. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
  2421. package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
  2422. package/src/shapes/Text/constants.ts +135 -134
  2423. package/src/shapes/Textbox.spec.ts +0 -0
  2424. package/src/shapes/Textbox.ts +1320 -1320
  2425. package/src/shapes/Triangle.spec.ts +0 -0
  2426. package/src/shapes/Triangle.ts +0 -0
  2427. package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
  2428. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
  2429. package/src/text/browserLines.ts +233 -233
  2430. package/src/text/ellipsis.ts +516 -516
  2431. package/src/text/hitTest.ts +623 -623
  2432. package/src/text/layout.ts +586 -586
  2433. package/src/text/measure.ts +626 -626
  2434. package/src/text/overlayEditor.ts +1047 -1047
  2435. package/src/text/unicode.ts +454 -454
  2436. package/src/typedefs.ts +0 -0
  2437. package/src/util/__snapshots__/index.spec.ts.snap +0 -0
  2438. package/src/util/animation/AnimationBase.ts +0 -0
  2439. package/src/util/animation/AnimationFrameProvider.ts +0 -0
  2440. package/src/util/animation/AnimationRegistry.ts +0 -0
  2441. package/src/util/animation/ArrayAnimation.ts +0 -0
  2442. package/src/util/animation/ColorAnimation.ts +0 -0
  2443. package/src/util/animation/ValueAnimation.ts +0 -0
  2444. package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
  2445. package/src/util/animation/animate.ts +0 -0
  2446. package/src/util/animation/animations.spec.ts +0 -0
  2447. package/src/util/animation/easing.ts +0 -0
  2448. package/src/util/animation/index.ts +0 -0
  2449. package/src/util/animation/types.ts +0 -0
  2450. package/src/util/applyMixins.ts +0 -0
  2451. package/src/util/dom_event.spec.ts +0 -0
  2452. package/src/util/dom_event.ts +0 -0
  2453. package/src/util/dom_misc.ts +0 -0
  2454. package/src/util/index.spec.ts +0 -0
  2455. package/src/util/index.ts +0 -0
  2456. package/src/util/internals/applyCanvasTransform.ts +0 -0
  2457. package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
  2458. package/src/util/internals/cleanupSvgAttribute.ts +0 -0
  2459. package/src/util/internals/cloneStyles.spec.ts +0 -0
  2460. package/src/util/internals/cloneStyles.ts +0 -0
  2461. package/src/util/internals/console.ts +0 -0
  2462. package/src/util/internals/dom_style.spec.ts +0 -0
  2463. package/src/util/internals/dom_style.ts +0 -0
  2464. package/src/util/internals/findRight.ts +0 -0
  2465. package/src/util/internals/getRandomInt.test.ts +0 -0
  2466. package/src/util/internals/getRandomInt.ts +0 -0
  2467. package/src/util/internals/ifNaN.ts +0 -0
  2468. package/src/util/internals/removeFromArray.spec.ts +0 -0
  2469. package/src/util/internals/removeFromArray.ts +0 -0
  2470. package/src/util/internals/uid.ts +0 -0
  2471. package/src/util/lang_string.spec.ts +0 -0
  2472. package/src/util/lang_string.ts +0 -0
  2473. package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
  2474. package/src/util/misc/boundingBoxFromPoints.ts +0 -0
  2475. package/src/util/misc/capValue.spec.ts +0 -0
  2476. package/src/util/misc/capValue.ts +0 -0
  2477. package/src/util/misc/cornerRadius.spec.ts +0 -0
  2478. package/src/util/misc/cornerRadius.ts +0 -0
  2479. package/src/util/misc/cos.spec.ts +0 -0
  2480. package/src/util/misc/cos.ts +0 -0
  2481. package/src/util/misc/dom.spec.ts +0 -0
  2482. package/src/util/misc/dom.ts +0 -0
  2483. package/src/util/misc/findScaleTo.spec.ts +0 -0
  2484. package/src/util/misc/findScaleTo.ts +0 -0
  2485. package/src/util/misc/groupSVGElements.spec.ts +0 -0
  2486. package/src/util/misc/groupSVGElements.ts +0 -0
  2487. package/src/util/misc/isTransparent.ts +0 -0
  2488. package/src/util/misc/matrix.spec.ts +0 -0
  2489. package/src/util/misc/matrix.ts +0 -0
  2490. package/src/util/misc/mergeClipPaths.spec.ts +0 -0
  2491. package/src/util/misc/mergeClipPaths.ts +0 -0
  2492. package/src/util/misc/objectEnlive.spec.ts +0 -0
  2493. package/src/util/misc/objectEnlive.ts +0 -0
  2494. package/src/util/misc/objectTransforms.spec.ts +0 -0
  2495. package/src/util/misc/objectTransforms.ts +0 -0
  2496. package/src/util/misc/pick.spec.ts +0 -0
  2497. package/src/util/misc/pick.ts +0 -0
  2498. package/src/util/misc/planeChange.spec.ts +0 -0
  2499. package/src/util/misc/planeChange.ts +0 -0
  2500. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
  2501. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
  2502. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
  2503. package/src/util/misc/projectStroke/index.ts +0 -0
  2504. package/src/util/misc/projectStroke/types.ts +0 -0
  2505. package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
  2506. package/src/util/misc/radiansDegreesConversion.ts +0 -0
  2507. package/src/util/misc/resolveOrigin.ts +0 -0
  2508. package/src/util/misc/sin.ts +0 -0
  2509. package/src/util/misc/svgExport.ts +0 -0
  2510. package/src/util/misc/svgParsing.spec.ts +0 -0
  2511. package/src/util/misc/svgParsing.ts +0 -0
  2512. package/src/util/misc/textStyles.ts +0 -0
  2513. package/src/util/misc/toFixed.spec.ts +0 -0
  2514. package/src/util/misc/toFixed.ts +0 -0
  2515. package/src/util/misc/vectors.spec.ts +0 -0
  2516. package/src/util/misc/vectors.ts +0 -0
  2517. package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
  2518. package/src/util/path/index.spec.ts +0 -0
  2519. package/src/util/path/index.ts +0 -0
  2520. package/src/util/path/regex.ts +0 -0
  2521. package/src/util/path/typechecks.ts +0 -0
  2522. package/src/util/path/typedefs.ts +0 -0
  2523. package/src/util/transform_matrix_removal.ts +0 -0
  2524. package/src/util/typeAssertions.spec.ts +0 -0
  2525. package/src/util/typeAssertions.ts +0 -0
  2526. package/tsconfig-extensions.json +0 -0
  2527. package/tsconfig.json +0 -0
  2528. package/tsconfig.spec.json +0 -0
  2529. package/typedoc.config.json +0 -0
  2530. package/vitest.config.ts +0 -0
  2531. package/vitest.d.ts +0 -0
  2532. package/vitest.env.d.ts +0 -0
  2533. package/vitest.extend.ts +0 -0
  2534. package/vitest.setup.ts +0 -0
  2535. package/dist/src/controls/changeHeight.min.mjs +0 -2
  2536. package/dist/src/controls/changeHeight.min.mjs.map +0 -1
  2537. package/dist/src/controls/changeHeight.mjs +0 -36
  2538. package/dist/src/controls/changeHeight.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"layout.mjs","sources":["../../../src/text/layout.ts"],"sourcesContent":["/**\n * Core Text Layout Engine\n * \n * Implements Konva-compatible text layout with support for:\n * - Multiple wrap modes (word/char/none)\n * - Ellipsis truncation\n * - Justify alignment with proper space distribution\n * - RTL/LTR text direction\n * - Advanced grapheme handling\n */\n\nimport { graphemeSplit } from '../util/lang_string';\nimport type { MeasurementOptions, GraphemeMeasurement, KerningMeasurement } from './measure';\nimport { measureGrapheme, measureGraphemeWithKerning, getFontMetrics } from './measure';\nimport type { EllipsisResult } from './ellipsis';\nimport { applyEllipsis } from './ellipsis';\nimport { segmentGraphemes, analyzeBiDi, type BiDiRun } from './unicode';\n\nexport interface TextLayoutOptions {\n text: string;\n width?: number;\n height?: number;\n wrap: 'word' | 'char' | 'none';\n align: 'left' | 'center' | 'right' | 'justify';\n ellipsis?: boolean | string;\n fontSize: number;\n lineHeight: number;\n letterSpacing?: number; // px-based (Konva style)\n charSpacing?: number; // em-based (Fabric style) \n direction: 'ltr' | 'rtl' | 'inherit';\n fontFamily: string;\n fontStyle: string;\n fontWeight: string | number;\n padding?: number;\n verticalAlign?: 'top' | 'middle' | 'bottom';\n}\n\nexport interface LayoutResult {\n lines: LayoutLine[];\n totalWidth: number;\n totalHeight: number;\n isTruncated: boolean;\n graphemeCount: number;\n ellipsisApplied?: EllipsisResult;\n}\n\nexport interface LayoutLine {\n text: string;\n graphemes: string[];\n width: number;\n height: number;\n bounds: GraphemeBounds[];\n isWrapped: boolean;\n isLastInParagraph: boolean;\n justifyRatio?: number; // For justify alignment - space expansion factor\n baseline: number;\n}\n\nexport interface GraphemeBounds {\n grapheme: string;\n x: number;\n y: number;\n width: number;\n height: number;\n kernedWidth: number;\n left: number;\n baseline: number;\n deltaY?: number;\n charIndex: number; // Logical character index in original text\n graphemeIndex: number; // Logical grapheme index in original text\n}\n\n/**\n * Main text layout function - converts text and options into positioned layout\n */\nexport function layoutText(options: TextLayoutOptions): LayoutResult {\n const {\n text,\n width: containerWidth,\n height: containerHeight,\n wrap,\n align,\n ellipsis,\n direction,\n padding = 0,\n verticalAlign = 'top'\n } = options;\n\n // Handle empty text\n if (!text) {\n return {\n lines: [],\n totalWidth: 0,\n totalHeight: 0,\n isTruncated: false,\n graphemeCount: 0,\n };\n }\n\n // Calculate available space\n const maxWidth = containerWidth ? containerWidth - (padding * 2) : Infinity;\n const maxHeight = containerHeight ? containerHeight - (padding * 2) : Infinity;\n\n // Split text into paragraphs (by \\n)\n const paragraphs = text.split('\\n');\n \n // Process each paragraph\n const allLines: LayoutLine[] = [];\n let totalHeight = 0;\n let maxLineWidth = 0;\n let totalGraphemes = 0;\n\n for (let i = 0; i < paragraphs.length; i++) {\n const paragraph = paragraphs[i];\n const isLastParagraph = i === paragraphs.length - 1;\n \n // Layout this paragraph\n const paragraphLines = layoutParagraph(paragraph, {\n ...options,\n width: maxWidth,\n isLastParagraph,\n });\n \n // Check height constraints\n for (const line of paragraphLines) {\n if (containerHeight && totalHeight + line.height > maxHeight) {\n // Height exceeded - truncate here\n const truncatedResult = handleHeightOverflow(\n allLines,\n line,\n maxHeight - totalHeight,\n options\n );\n \n return {\n lines: truncatedResult.lines,\n totalWidth: Math.max(maxLineWidth, ...truncatedResult.lines.map(l => l.width)),\n totalHeight: maxHeight,\n isTruncated: true,\n graphemeCount: totalGraphemes + truncatedResult.addedGraphemes,\n ellipsisApplied: truncatedResult.ellipsisResult,\n };\n }\n\n // Mark last line in paragraph\n if (line === paragraphLines[paragraphLines.length - 1]) {\n line.isLastInParagraph = true;\n }\n\n allLines.push(line);\n totalHeight += line.height;\n maxLineWidth = Math.max(maxLineWidth, line.width);\n totalGraphemes += line.graphemes.length;\n }\n }\n\n // Apply ellipsis if width exceeded and ellipsis enabled\n let ellipsisResult: EllipsisResult | undefined;\n if (ellipsis && containerWidth) {\n for (const line of allLines) {\n if (line.width > maxWidth) {\n ellipsisResult = applyEllipsis(line.text, {\n maxWidth,\n maxHeight: Infinity,\n ellipsisChar: typeof ellipsis === 'string' ? ellipsis : '…',\n measureFn: (text: string) => measureLineWidth(text, options),\n });\n \n if (ellipsisResult.isTruncated) {\n // Rebuild truncated line\n const truncatedLine = layoutSingleLine(ellipsisResult.truncatedText, options);\n Object.assign(line, truncatedLine);\n break;\n }\n }\n }\n }\n\n // Apply alignment\n const alignedLines = applyAlignment(allLines, align, maxLineWidth, options);\n\n // Apply vertical alignment\n const verticalOffset = calculateVerticalOffset(\n totalHeight,\n containerHeight || totalHeight,\n verticalAlign\n );\n\n // Adjust line positions for vertical alignment\n alignedLines.forEach(line => {\n line.bounds.forEach(bound => {\n bound.y += verticalOffset;\n });\n });\n\n return {\n lines: alignedLines,\n totalWidth: maxLineWidth,\n totalHeight: totalHeight,\n isTruncated: !!ellipsisResult?.isTruncated,\n graphemeCount: totalGraphemes,\n ellipsisApplied: ellipsisResult,\n };\n}\n\n/**\n * Layout a single paragraph with wrapping\n */\nfunction layoutParagraph(\n text: string, \n options: TextLayoutOptions & { width: number; isLastParagraph: boolean }\n): LayoutLine[] {\n const { wrap, width: maxWidth } = options;\n\n if (!text) {\n // Empty paragraph - create empty line\n return [createEmptyLine(options)];\n }\n\n // Handle no wrapping\n if (wrap === 'none' || maxWidth === Infinity) {\n return [layoutSingleLine(text, options, 0)];\n }\n\n // Apply wrapping\n const lines: string[] = [];\n \n if (wrap === 'word') {\n lines.push(...wrapByWords(text, maxWidth, options));\n } else if (wrap === 'char') {\n lines.push(...wrapByCharacters(text, maxWidth, options));\n }\n\n // Convert wrapped lines to layout lines, tracking text offset\n let textOffset = 0;\n const layoutLines = lines.map(lineText => {\n const line = layoutSingleLine(lineText, options, textOffset);\n textOffset += lineText.length + 1; // +1 for newline character\n return line;\n });\n \n return layoutLines;\n}\n\n/**\n * Layout a single line of text (no wrapping)\n */\nfunction layoutSingleLine(text: string, options: TextLayoutOptions, textOffset: number = 0): LayoutLine {\n const graphemes = segmentGraphemes(text);\n const bounds: GraphemeBounds[] = [];\n const measurementOptions = createMeasurementOptions(options);\n \n let x = 0;\n let lineWidth = 0;\n let lineHeight = 0;\n let charIndex = textOffset; // Track character position in original text\n \n // Measure each grapheme\n for (let i = 0; i < graphemes.length; i++) {\n const grapheme = graphemes[i];\n const prevGrapheme = i > 0 ? graphemes[i - 1] : undefined;\n \n // Measure with kerning\n const measurement = measureGraphemeWithKerning(\n grapheme,\n prevGrapheme,\n measurementOptions\n );\n \n // Apply letter spacing (Konva style - applied to ALL characters including last)\n const letterSpacing = options.letterSpacing || 0;\n const charSpacing = options.charSpacing ? \n (options.fontSize * options.charSpacing) / 1000 : 0;\n \n const totalSpacing = letterSpacing + charSpacing;\n const effectiveWidth = measurement.kernedWidth + totalSpacing;\n \n bounds.push({\n grapheme,\n x,\n y: 0, // Will be adjusted later\n width: measurement.width,\n height: measurement.height,\n kernedWidth: measurement.kernedWidth,\n left: x,\n baseline: measurement.baseline,\n charIndex: charIndex, // Character position in original text\n graphemeIndex: textOffset + i, // Grapheme index in original text\n });\n \n // Update character index for next iteration\n charIndex += grapheme.length;\n \n x += effectiveWidth;\n lineWidth += effectiveWidth;\n lineHeight = Math.max(lineHeight, measurement.height);\n }\n\n // Remove trailing spacing from total width (but keep in bounds for rendering)\n if (bounds.length > 0) {\n const letterSpacing = options.letterSpacing || 0;\n const charSpacing = options.charSpacing ? \n (options.fontSize * options.charSpacing) / 1000 : 0;\n const totalSpacing = letterSpacing + charSpacing;\n \n // Konva applies letterSpacing to all chars, so we don't remove it\n // lineWidth -= totalSpacing;\n }\n\n // Apply line height\n const finalHeight = lineHeight * options.lineHeight;\n\n return {\n text,\n graphemes,\n width: lineWidth,\n height: finalHeight,\n bounds,\n isWrapped: false,\n isLastInParagraph: false,\n baseline: finalHeight * 0.8, // Approximate baseline position\n };\n}\n\n/**\n * Word-based wrapping algorithm\n */\nfunction wrapByWords(text: string, maxWidth: number, options: TextLayoutOptions): string[] {\n const lines: string[] = [];\n const words = text.split(/(\\s+)/); // Preserve whitespace\n let currentLine = '';\n let currentWidth = 0;\n\n for (let i = 0; i < words.length; i++) {\n const word = words[i];\n const wordWidth = measureLineWidth(word, options);\n const testLine = currentLine ? currentLine + word : word;\n const testWidth = measureLineWidth(testLine, options);\n\n // If adding this word exceeds max width and we have content\n if (testWidth > maxWidth && currentLine) {\n lines.push(currentLine.trim());\n currentLine = word;\n currentWidth = wordWidth;\n }\n // If single word is too long, break it by characters\n else if (wordWidth > maxWidth && !currentLine) {\n const brokenWord = wrapByCharacters(word, maxWidth, options);\n lines.push(...brokenWord.slice(0, -1)); // All but last part\n currentLine = brokenWord[brokenWord.length - 1]; // Last part\n currentWidth = measureLineWidth(currentLine, options);\n }\n else {\n currentLine = testLine;\n currentWidth = testWidth;\n }\n }\n\n if (currentLine) {\n lines.push(currentLine.trim());\n }\n\n return lines.length > 0 ? lines : [''];\n}\n\n/**\n * Character-based wrapping algorithm \n */\nfunction wrapByCharacters(text: string, maxWidth: number, options: TextLayoutOptions): string[] {\n const lines: string[] = [];\n const graphemes = segmentGraphemes(text);\n let currentLine = '';\n \n for (const grapheme of graphemes) {\n const testLine = currentLine + grapheme;\n const testWidth = measureLineWidth(testLine, options);\n \n if (testWidth > maxWidth && currentLine) {\n lines.push(currentLine);\n currentLine = grapheme;\n } else {\n currentLine = testLine;\n }\n }\n \n if (currentLine) {\n lines.push(currentLine);\n }\n \n return lines.length > 0 ? lines : [''];\n}\n\n/**\n * Apply text alignment to lines\n */\nfunction applyAlignment(\n lines: LayoutLine[], \n align: string, \n containerWidth: number,\n options: TextLayoutOptions\n): LayoutLine[] {\n return lines.map(line => {\n let offsetX = 0;\n \n switch (align) {\n case 'center':\n offsetX = (containerWidth - line.width) / 2;\n break;\n case 'right':\n offsetX = containerWidth - line.width;\n break;\n case 'justify':\n if (!line.isLastInParagraph && line.graphemes.length > 1) {\n return applyJustification(line, containerWidth, options);\n }\n break;\n case 'left':\n default:\n offsetX = 0;\n break;\n }\n \n // Apply offset to all bounds\n if (offsetX !== 0) {\n line.bounds.forEach(bound => {\n bound.x += offsetX;\n bound.left += offsetX;\n });\n }\n \n return line;\n });\n}\n\n/**\n * Apply justify alignment by expanding spaces\n */\nfunction applyJustification(\n line: LayoutLine, \n containerWidth: number, \n options: TextLayoutOptions\n): LayoutLine {\n const spaces = line.graphemes.filter(g => /\\s/.test(g)).length;\n if (spaces === 0) return line;\n \n const extraSpace = containerWidth - line.width;\n const spaceExpansion = extraSpace / spaces;\n \n let offsetX = 0;\n line.bounds.forEach(bound => {\n bound.x += offsetX;\n bound.left += offsetX;\n \n if (/\\s/.test(bound.grapheme)) {\n bound.kernedWidth += spaceExpansion;\n bound.width += spaceExpansion;\n offsetX += spaceExpansion;\n }\n });\n \n line.width = containerWidth;\n line.justifyRatio = 1 + (spaceExpansion / (options.fontSize * 0.25)); // Approximate space width\n \n return line;\n}\n\n/**\n * Calculate vertical alignment offset\n */\nfunction calculateVerticalOffset(\n contentHeight: number,\n containerHeight: number, \n align: 'top' | 'middle' | 'bottom'\n): number {\n switch (align) {\n case 'middle':\n return (containerHeight - contentHeight) / 2;\n case 'bottom':\n return containerHeight - contentHeight;\n case 'top':\n default:\n return 0;\n }\n}\n\n/**\n * Handle height overflow with ellipsis\n */\nfunction handleHeightOverflow(\n existingLines: LayoutLine[],\n overflowLine: LayoutLine,\n remainingHeight: number,\n options: TextLayoutOptions\n): { \n lines: LayoutLine[]; \n addedGraphemes: number; \n ellipsisResult?: EllipsisResult;\n} {\n // If ellipsis is enabled, try to fit part of the overflow line\n if (options.ellipsis && remainingHeight > 0) {\n const ellipsisChar = typeof options.ellipsis === 'string' ? options.ellipsis : '…';\n const maxWidth = options.width || Infinity;\n \n const ellipsisResult = applyEllipsis(overflowLine.text, {\n maxWidth,\n maxHeight: remainingHeight,\n ellipsisChar,\n measureFn: (text: string) => measureLineWidth(text, options),\n });\n \n if (ellipsisResult.isTruncated) {\n const truncatedLine = layoutSingleLine(ellipsisResult.truncatedText, options);\n truncatedLine.isLastInParagraph = true;\n \n return {\n lines: [...existingLines, truncatedLine],\n addedGraphemes: truncatedLine.graphemes.length,\n ellipsisResult,\n };\n }\n }\n \n return {\n lines: existingLines,\n addedGraphemes: 0,\n };\n}\n\n/**\n * Create empty line for empty paragraphs\n */\nfunction createEmptyLine(options: TextLayoutOptions): LayoutLine {\n const height = options.fontSize * options.lineHeight;\n \n return {\n text: '',\n graphemes: [],\n width: 0,\n height,\n bounds: [],\n isWrapped: false,\n isLastInParagraph: true,\n baseline: height * 0.8,\n };\n}\n\n/**\n * Measure width of a line of text\n */\nfunction measureLineWidth(text: string, options: TextLayoutOptions): number {\n const graphemes = segmentGraphemes(text);\n const measurementOptions = createMeasurementOptions(options);\n \n let width = 0;\n for (let i = 0; i < graphemes.length; i++) {\n const grapheme = graphemes[i];\n const prevGrapheme = i > 0 ? graphemes[i - 1] : undefined;\n \n const measurement = measureGraphemeWithKerning(\n grapheme,\n prevGrapheme, \n measurementOptions\n );\n \n const letterSpacing = options.letterSpacing || 0;\n const charSpacing = options.charSpacing ? \n (options.fontSize * options.charSpacing) / 1000 : 0;\n \n width += measurement.kernedWidth + letterSpacing + charSpacing;\n }\n \n return width;\n}\n\n/**\n * Convert layout options to measurement options\n */\nfunction createMeasurementOptions(options: TextLayoutOptions): MeasurementOptions {\n return {\n fontFamily: options.fontFamily,\n fontSize: options.fontSize,\n fontStyle: options.fontStyle,\n fontWeight: options.fontWeight,\n letterSpacing: options.letterSpacing,\n direction: options.direction === 'inherit' ? 'ltr' : options.direction,\n };\n}"],"names":["layoutText","options","_ellipsisResult","text","width","containerWidth","height","containerHeight","wrap","align","ellipsis","direction","padding","verticalAlign","lines","totalWidth","totalHeight","isTruncated","graphemeCount","maxWidth","Infinity","maxHeight","paragraphs","split","allLines","maxLineWidth","totalGraphemes","i","length","paragraph","isLastParagraph","paragraphLines","layoutParagraph","line","truncatedResult","handleHeightOverflow","Math","max","map","l","addedGraphemes","ellipsisApplied","ellipsisResult","isLastInParagraph","push","graphemes","applyEllipsis","ellipsisChar","measureFn","measureLineWidth","truncatedLine","layoutSingleLine","truncatedText","Object","assign","alignedLines","applyAlignment","verticalOffset","calculateVerticalOffset","forEach","bounds","bound","y","createEmptyLine","wrapByWords","wrapByCharacters","textOffset","layoutLines","lineText","arguments","undefined","segmentGraphemes","measurementOptions","createMeasurementOptions","x","lineWidth","lineHeight","charIndex","grapheme","prevGrapheme","measurement","measureGraphemeWithKerning","letterSpacing","charSpacing","fontSize","totalSpacing","effectiveWidth","kernedWidth","left","baseline","graphemeIndex","finalHeight","isWrapped","words","currentLine","word","wordWidth","testLine","testWidth","trim","brokenWord","slice","currentWidth","offsetX","applyJustification","spaces","filter","g","test","extraSpace","spaceExpansion","justifyRatio","contentHeight","existingLines","overflowLine","remainingHeight","fontFamily","fontStyle","fontWeight"],"mappings":"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"}
1
+ {"version":3,"file":"layout.mjs","sources":["../../../src/text/layout.ts"],"sourcesContent":["/**\r\n * Core Text Layout Engine\r\n * \r\n * Implements Konva-compatible text layout with support for:\r\n * - Multiple wrap modes (word/char/none)\r\n * - Ellipsis truncation\r\n * - Justify alignment with proper space distribution\r\n * - RTL/LTR text direction\r\n * - Advanced grapheme handling\r\n */\r\n\r\nimport { graphemeSplit } from '../util/lang_string';\r\nimport type { MeasurementOptions, GraphemeMeasurement, KerningMeasurement } from './measure';\r\nimport { measureGrapheme, measureGraphemeWithKerning, getFontMetrics } from './measure';\r\nimport type { EllipsisResult } from './ellipsis';\r\nimport { applyEllipsis } from './ellipsis';\r\nimport { segmentGraphemes, analyzeBiDi, type BiDiRun } from './unicode';\r\n\r\nexport interface TextLayoutOptions {\r\n text: string;\r\n width?: number;\r\n height?: number;\r\n wrap: 'word' | 'char' | 'none';\r\n align: 'left' | 'center' | 'right' | 'justify';\r\n ellipsis?: boolean | string;\r\n fontSize: number;\r\n lineHeight: number;\r\n letterSpacing?: number; // px-based (Konva style)\r\n charSpacing?: number; // em-based (Fabric style) \r\n direction: 'ltr' | 'rtl' | 'inherit';\r\n fontFamily: string;\r\n fontStyle: string;\r\n fontWeight: string | number;\r\n padding?: number;\r\n verticalAlign?: 'top' | 'middle' | 'bottom';\r\n}\r\n\r\nexport interface LayoutResult {\r\n lines: LayoutLine[];\r\n totalWidth: number;\r\n totalHeight: number;\r\n isTruncated: boolean;\r\n graphemeCount: number;\r\n ellipsisApplied?: EllipsisResult;\r\n}\r\n\r\nexport interface LayoutLine {\r\n text: string;\r\n graphemes: string[];\r\n width: number;\r\n height: number;\r\n bounds: GraphemeBounds[];\r\n isWrapped: boolean;\r\n isLastInParagraph: boolean;\r\n justifyRatio?: number; // For justify alignment - space expansion factor\r\n baseline: number;\r\n}\r\n\r\nexport interface GraphemeBounds {\r\n grapheme: string;\r\n x: number;\r\n y: number;\r\n width: number;\r\n height: number;\r\n kernedWidth: number;\r\n left: number;\r\n baseline: number;\r\n deltaY?: number;\r\n charIndex: number; // Logical character index in original text\r\n graphemeIndex: number; // Logical grapheme index in original text\r\n}\r\n\r\n/**\r\n * Main text layout function - converts text and options into positioned layout\r\n */\r\nexport function layoutText(options: TextLayoutOptions): LayoutResult {\r\n const {\r\n text,\r\n width: containerWidth,\r\n height: containerHeight,\r\n wrap,\r\n align,\r\n ellipsis,\r\n direction,\r\n padding = 0,\r\n verticalAlign = 'top'\r\n } = options;\r\n\r\n // Handle empty text\r\n if (!text) {\r\n return {\r\n lines: [],\r\n totalWidth: 0,\r\n totalHeight: 0,\r\n isTruncated: false,\r\n graphemeCount: 0,\r\n };\r\n }\r\n\r\n // Calculate available space\r\n const maxWidth = containerWidth ? containerWidth - (padding * 2) : Infinity;\r\n const maxHeight = containerHeight ? containerHeight - (padding * 2) : Infinity;\r\n\r\n // Split text into paragraphs (by \\n)\r\n const paragraphs = text.split('\\n');\r\n \r\n // Process each paragraph\r\n const allLines: LayoutLine[] = [];\r\n let totalHeight = 0;\r\n let maxLineWidth = 0;\r\n let totalGraphemes = 0;\r\n\r\n for (let i = 0; i < paragraphs.length; i++) {\r\n const paragraph = paragraphs[i];\r\n const isLastParagraph = i === paragraphs.length - 1;\r\n \r\n // Layout this paragraph\r\n const paragraphLines = layoutParagraph(paragraph, {\r\n ...options,\r\n width: maxWidth,\r\n isLastParagraph,\r\n });\r\n \r\n // Check height constraints\r\n for (const line of paragraphLines) {\r\n if (containerHeight && totalHeight + line.height > maxHeight) {\r\n // Height exceeded - truncate here\r\n const truncatedResult = handleHeightOverflow(\r\n allLines,\r\n line,\r\n maxHeight - totalHeight,\r\n options\r\n );\r\n \r\n return {\r\n lines: truncatedResult.lines,\r\n totalWidth: Math.max(maxLineWidth, ...truncatedResult.lines.map(l => l.width)),\r\n totalHeight: maxHeight,\r\n isTruncated: true,\r\n graphemeCount: totalGraphemes + truncatedResult.addedGraphemes,\r\n ellipsisApplied: truncatedResult.ellipsisResult,\r\n };\r\n }\r\n\r\n // Mark last line in paragraph\r\n if (line === paragraphLines[paragraphLines.length - 1]) {\r\n line.isLastInParagraph = true;\r\n }\r\n\r\n allLines.push(line);\r\n totalHeight += line.height;\r\n maxLineWidth = Math.max(maxLineWidth, line.width);\r\n totalGraphemes += line.graphemes.length;\r\n }\r\n }\r\n\r\n // Apply ellipsis if width exceeded and ellipsis enabled\r\n let ellipsisResult: EllipsisResult | undefined;\r\n if (ellipsis && containerWidth) {\r\n for (const line of allLines) {\r\n if (line.width > maxWidth) {\r\n ellipsisResult = applyEllipsis(line.text, {\r\n maxWidth,\r\n maxHeight: Infinity,\r\n ellipsisChar: typeof ellipsis === 'string' ? ellipsis : '…',\r\n measureFn: (text: string) => measureLineWidth(text, options),\r\n });\r\n \r\n if (ellipsisResult.isTruncated) {\r\n // Rebuild truncated line\r\n const truncatedLine = layoutSingleLine(ellipsisResult.truncatedText, options);\r\n Object.assign(line, truncatedLine);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Apply alignment\r\n const alignedLines = applyAlignment(allLines, align, maxLineWidth, options);\r\n\r\n // Apply vertical alignment\r\n const verticalOffset = calculateVerticalOffset(\r\n totalHeight,\r\n containerHeight || totalHeight,\r\n verticalAlign\r\n );\r\n\r\n // Adjust line positions for vertical alignment\r\n alignedLines.forEach(line => {\r\n line.bounds.forEach(bound => {\r\n bound.y += verticalOffset;\r\n });\r\n });\r\n\r\n return {\r\n lines: alignedLines,\r\n totalWidth: maxLineWidth,\r\n totalHeight: totalHeight,\r\n isTruncated: !!ellipsisResult?.isTruncated,\r\n graphemeCount: totalGraphemes,\r\n ellipsisApplied: ellipsisResult,\r\n };\r\n}\r\n\r\n/**\r\n * Layout a single paragraph with wrapping\r\n */\r\nfunction layoutParagraph(\r\n text: string, \r\n options: TextLayoutOptions & { width: number; isLastParagraph: boolean }\r\n): LayoutLine[] {\r\n const { wrap, width: maxWidth } = options;\r\n\r\n if (!text) {\r\n // Empty paragraph - create empty line\r\n return [createEmptyLine(options)];\r\n }\r\n\r\n // Handle no wrapping\r\n if (wrap === 'none' || maxWidth === Infinity) {\r\n return [layoutSingleLine(text, options, 0)];\r\n }\r\n\r\n // Apply wrapping\r\n const lines: string[] = [];\r\n \r\n if (wrap === 'word') {\r\n lines.push(...wrapByWords(text, maxWidth, options));\r\n } else if (wrap === 'char') {\r\n lines.push(...wrapByCharacters(text, maxWidth, options));\r\n }\r\n\r\n // Convert wrapped lines to layout lines, tracking text offset\r\n let textOffset = 0;\r\n const layoutLines = lines.map(lineText => {\r\n const line = layoutSingleLine(lineText, options, textOffset);\r\n textOffset += lineText.length + 1; // +1 for newline character\r\n return line;\r\n });\r\n \r\n return layoutLines;\r\n}\r\n\r\n/**\r\n * Layout a single line of text (no wrapping)\r\n */\r\nfunction layoutSingleLine(text: string, options: TextLayoutOptions, textOffset: number = 0): LayoutLine {\r\n const graphemes = segmentGraphemes(text);\r\n const bounds: GraphemeBounds[] = [];\r\n const measurementOptions = createMeasurementOptions(options);\r\n \r\n let x = 0;\r\n let lineWidth = 0;\r\n let lineHeight = 0;\r\n let charIndex = textOffset; // Track character position in original text\r\n \r\n // Measure each grapheme\r\n for (let i = 0; i < graphemes.length; i++) {\r\n const grapheme = graphemes[i];\r\n const prevGrapheme = i > 0 ? graphemes[i - 1] : undefined;\r\n \r\n // Measure with kerning\r\n const measurement = measureGraphemeWithKerning(\r\n grapheme,\r\n prevGrapheme,\r\n measurementOptions\r\n );\r\n \r\n // Apply letter spacing (Konva style - applied to ALL characters including last)\r\n const letterSpacing = options.letterSpacing || 0;\r\n const charSpacing = options.charSpacing ? \r\n (options.fontSize * options.charSpacing) / 1000 : 0;\r\n \r\n const totalSpacing = letterSpacing + charSpacing;\r\n const effectiveWidth = measurement.kernedWidth + totalSpacing;\r\n \r\n bounds.push({\r\n grapheme,\r\n x,\r\n y: 0, // Will be adjusted later\r\n width: measurement.width,\r\n height: measurement.height,\r\n kernedWidth: measurement.kernedWidth,\r\n left: x,\r\n baseline: measurement.baseline,\r\n charIndex: charIndex, // Character position in original text\r\n graphemeIndex: textOffset + i, // Grapheme index in original text\r\n });\r\n \r\n // Update character index for next iteration\r\n charIndex += grapheme.length;\r\n \r\n x += effectiveWidth;\r\n lineWidth += effectiveWidth;\r\n lineHeight = Math.max(lineHeight, measurement.height);\r\n }\r\n\r\n // Remove trailing spacing from total width (but keep in bounds for rendering)\r\n if (bounds.length > 0) {\r\n const letterSpacing = options.letterSpacing || 0;\r\n const charSpacing = options.charSpacing ? \r\n (options.fontSize * options.charSpacing) / 1000 : 0;\r\n const totalSpacing = letterSpacing + charSpacing;\r\n \r\n // Konva applies letterSpacing to all chars, so we don't remove it\r\n // lineWidth -= totalSpacing;\r\n }\r\n\r\n // Apply line height\r\n const finalHeight = lineHeight * options.lineHeight;\r\n\r\n return {\r\n text,\r\n graphemes,\r\n width: lineWidth,\r\n height: finalHeight,\r\n bounds,\r\n isWrapped: false,\r\n isLastInParagraph: false,\r\n baseline: finalHeight * 0.8, // Approximate baseline position\r\n };\r\n}\r\n\r\n/**\r\n * Word-based wrapping algorithm\r\n */\r\nfunction wrapByWords(text: string, maxWidth: number, options: TextLayoutOptions): string[] {\r\n const lines: string[] = [];\r\n const words = text.split(/(\\s+)/); // Preserve whitespace\r\n let currentLine = '';\r\n let currentWidth = 0;\r\n\r\n for (let i = 0; i < words.length; i++) {\r\n const word = words[i];\r\n const wordWidth = measureLineWidth(word, options);\r\n const testLine = currentLine ? currentLine + word : word;\r\n const testWidth = measureLineWidth(testLine, options);\r\n\r\n // If adding this word exceeds max width and we have content\r\n if (testWidth > maxWidth && currentLine) {\r\n lines.push(currentLine.trim());\r\n currentLine = word;\r\n currentWidth = wordWidth;\r\n }\r\n // If single word is too long, break it by characters\r\n else if (wordWidth > maxWidth && !currentLine) {\r\n const brokenWord = wrapByCharacters(word, maxWidth, options);\r\n lines.push(...brokenWord.slice(0, -1)); // All but last part\r\n currentLine = brokenWord[brokenWord.length - 1]; // Last part\r\n currentWidth = measureLineWidth(currentLine, options);\r\n }\r\n else {\r\n currentLine = testLine;\r\n currentWidth = testWidth;\r\n }\r\n }\r\n\r\n if (currentLine) {\r\n lines.push(currentLine.trim());\r\n }\r\n\r\n return lines.length > 0 ? lines : [''];\r\n}\r\n\r\n/**\r\n * Character-based wrapping algorithm \r\n */\r\nfunction wrapByCharacters(text: string, maxWidth: number, options: TextLayoutOptions): string[] {\r\n const lines: string[] = [];\r\n const graphemes = segmentGraphemes(text);\r\n let currentLine = '';\r\n \r\n for (const grapheme of graphemes) {\r\n const testLine = currentLine + grapheme;\r\n const testWidth = measureLineWidth(testLine, options);\r\n \r\n if (testWidth > maxWidth && currentLine) {\r\n lines.push(currentLine);\r\n currentLine = grapheme;\r\n } else {\r\n currentLine = testLine;\r\n }\r\n }\r\n \r\n if (currentLine) {\r\n lines.push(currentLine);\r\n }\r\n \r\n return lines.length > 0 ? lines : [''];\r\n}\r\n\r\n/**\r\n * Apply text alignment to lines\r\n */\r\nfunction applyAlignment(\r\n lines: LayoutLine[], \r\n align: string, \r\n containerWidth: number,\r\n options: TextLayoutOptions\r\n): LayoutLine[] {\r\n return lines.map(line => {\r\n let offsetX = 0;\r\n \r\n switch (align) {\r\n case 'center':\r\n offsetX = (containerWidth - line.width) / 2;\r\n break;\r\n case 'right':\r\n offsetX = containerWidth - line.width;\r\n break;\r\n case 'justify':\r\n if (!line.isLastInParagraph && line.graphemes.length > 1) {\r\n return applyJustification(line, containerWidth, options);\r\n }\r\n break;\r\n case 'left':\r\n default:\r\n offsetX = 0;\r\n break;\r\n }\r\n \r\n // Apply offset to all bounds\r\n if (offsetX !== 0) {\r\n line.bounds.forEach(bound => {\r\n bound.x += offsetX;\r\n bound.left += offsetX;\r\n });\r\n }\r\n \r\n return line;\r\n });\r\n}\r\n\r\n/**\r\n * Apply justify alignment by expanding spaces\r\n */\r\nfunction applyJustification(\r\n line: LayoutLine, \r\n containerWidth: number, \r\n options: TextLayoutOptions\r\n): LayoutLine {\r\n const spaces = line.graphemes.filter(g => /\\s/.test(g)).length;\r\n if (spaces === 0) return line;\r\n \r\n const extraSpace = containerWidth - line.width;\r\n const spaceExpansion = extraSpace / spaces;\r\n \r\n let offsetX = 0;\r\n line.bounds.forEach(bound => {\r\n bound.x += offsetX;\r\n bound.left += offsetX;\r\n \r\n if (/\\s/.test(bound.grapheme)) {\r\n bound.kernedWidth += spaceExpansion;\r\n bound.width += spaceExpansion;\r\n offsetX += spaceExpansion;\r\n }\r\n });\r\n \r\n line.width = containerWidth;\r\n line.justifyRatio = 1 + (spaceExpansion / (options.fontSize * 0.25)); // Approximate space width\r\n \r\n return line;\r\n}\r\n\r\n/**\r\n * Calculate vertical alignment offset\r\n */\r\nfunction calculateVerticalOffset(\r\n contentHeight: number,\r\n containerHeight: number, \r\n align: 'top' | 'middle' | 'bottom'\r\n): number {\r\n switch (align) {\r\n case 'middle':\r\n return (containerHeight - contentHeight) / 2;\r\n case 'bottom':\r\n return containerHeight - contentHeight;\r\n case 'top':\r\n default:\r\n return 0;\r\n }\r\n}\r\n\r\n/**\r\n * Handle height overflow with ellipsis\r\n */\r\nfunction handleHeightOverflow(\r\n existingLines: LayoutLine[],\r\n overflowLine: LayoutLine,\r\n remainingHeight: number,\r\n options: TextLayoutOptions\r\n): { \r\n lines: LayoutLine[]; \r\n addedGraphemes: number; \r\n ellipsisResult?: EllipsisResult;\r\n} {\r\n // If ellipsis is enabled, try to fit part of the overflow line\r\n if (options.ellipsis && remainingHeight > 0) {\r\n const ellipsisChar = typeof options.ellipsis === 'string' ? options.ellipsis : '…';\r\n const maxWidth = options.width || Infinity;\r\n \r\n const ellipsisResult = applyEllipsis(overflowLine.text, {\r\n maxWidth,\r\n maxHeight: remainingHeight,\r\n ellipsisChar,\r\n measureFn: (text: string) => measureLineWidth(text, options),\r\n });\r\n \r\n if (ellipsisResult.isTruncated) {\r\n const truncatedLine = layoutSingleLine(ellipsisResult.truncatedText, options);\r\n truncatedLine.isLastInParagraph = true;\r\n \r\n return {\r\n lines: [...existingLines, truncatedLine],\r\n addedGraphemes: truncatedLine.graphemes.length,\r\n ellipsisResult,\r\n };\r\n }\r\n }\r\n \r\n return {\r\n lines: existingLines,\r\n addedGraphemes: 0,\r\n };\r\n}\r\n\r\n/**\r\n * Create empty line for empty paragraphs\r\n */\r\nfunction createEmptyLine(options: TextLayoutOptions): LayoutLine {\r\n const height = options.fontSize * options.lineHeight;\r\n \r\n return {\r\n text: '',\r\n graphemes: [],\r\n width: 0,\r\n height,\r\n bounds: [],\r\n isWrapped: false,\r\n isLastInParagraph: true,\r\n baseline: height * 0.8,\r\n };\r\n}\r\n\r\n/**\r\n * Measure width of a line of text\r\n */\r\nfunction measureLineWidth(text: string, options: TextLayoutOptions): number {\r\n const graphemes = segmentGraphemes(text);\r\n const measurementOptions = createMeasurementOptions(options);\r\n \r\n let width = 0;\r\n for (let i = 0; i < graphemes.length; i++) {\r\n const grapheme = graphemes[i];\r\n const prevGrapheme = i > 0 ? graphemes[i - 1] : undefined;\r\n \r\n const measurement = measureGraphemeWithKerning(\r\n grapheme,\r\n prevGrapheme, \r\n measurementOptions\r\n );\r\n \r\n const letterSpacing = options.letterSpacing || 0;\r\n const charSpacing = options.charSpacing ? \r\n (options.fontSize * options.charSpacing) / 1000 : 0;\r\n \r\n width += measurement.kernedWidth + letterSpacing + charSpacing;\r\n }\r\n \r\n return width;\r\n}\r\n\r\n/**\r\n * Convert layout options to measurement options\r\n */\r\nfunction createMeasurementOptions(options: TextLayoutOptions): MeasurementOptions {\r\n return {\r\n fontFamily: options.fontFamily,\r\n fontSize: options.fontSize,\r\n fontStyle: options.fontStyle,\r\n fontWeight: options.fontWeight,\r\n letterSpacing: options.letterSpacing,\r\n direction: options.direction === 'inherit' ? 'ltr' : options.direction,\r\n };\r\n}"],"names":["layoutText","options","_ellipsisResult","text","width","containerWidth","height","containerHeight","wrap","align","ellipsis","direction","padding","verticalAlign","lines","totalWidth","totalHeight","isTruncated","graphemeCount","maxWidth","Infinity","maxHeight","paragraphs","split","allLines","maxLineWidth","totalGraphemes","i","length","paragraph","isLastParagraph","paragraphLines","layoutParagraph","line","truncatedResult","handleHeightOverflow","Math","max","map","l","addedGraphemes","ellipsisApplied","ellipsisResult","isLastInParagraph","push","graphemes","applyEllipsis","ellipsisChar","measureFn","measureLineWidth","truncatedLine","layoutSingleLine","truncatedText","Object","assign","alignedLines","applyAlignment","verticalOffset","calculateVerticalOffset","forEach","bounds","bound","y","createEmptyLine","wrapByWords","wrapByCharacters","textOffset","layoutLines","lineText","arguments","undefined","segmentGraphemes","measurementOptions","createMeasurementOptions","x","lineWidth","lineHeight","charIndex","grapheme","prevGrapheme","measurement","measureGraphemeWithKerning","letterSpacing","charSpacing","fontSize","totalSpacing","effectiveWidth","kernedWidth","left","baseline","graphemeIndex","finalHeight","isWrapped","words","currentLine","word","wordWidth","testLine","testWidth","trim","brokenWord","slice","currentWidth","offsetX","applyJustification","spaces","filter","g","test","extraSpace","spaceExpansion","justifyRatio","contentHeight","existingLines","overflowLine","remainingHeight","fontFamily","fontStyle","fontWeight"],"mappings":"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"}
File without changes
File without changes
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"measure.min.mjs","sources":["../../../src/text/measure.ts"],"sourcesContent":["/**\n * Advanced Text Measurement System\n *\n * Provides precise text measurement with caching, font metrics,\n * and DPI awareness for optimal performance and accuracy.\n */\n\nimport { createCanvasElementFor } from '../util/misc/dom';\n\nexport interface MeasurementOptions {\n fontFamily: string;\n fontSize: number;\n fontStyle: string;\n fontWeight: string | number;\n letterSpacing?: number;\n direction?: 'ltr' | 'rtl';\n}\n\nexport interface GraphemeMeasurement {\n width: number;\n height: number;\n ascent: number;\n descent: number;\n baseline: number;\n}\n\nexport interface KerningMeasurement extends GraphemeMeasurement {\n kernedWidth: number; // width accounting for kerning with previous char\n}\n\nexport interface FontMetrics {\n ascent: number;\n descent: number;\n lineHeight: number;\n baseline: string;\n fontBoundingBoxAscent?: number;\n fontBoundingBoxDescent?: number;\n actualBoundingBoxAscent?: number;\n actualBoundingBoxDescent?: number;\n}\n\n// Global measurement context - reused for performance\nlet measurementContext: CanvasRenderingContext2D | null = null;\n\n/**\n * Get or create the shared measurement context\n */\nfunction getMeasurementContext(): CanvasRenderingContext2D {\n if (!measurementContext) {\n const canvas = createCanvasElementFor({\n width: 0,\n height: 0,\n });\n measurementContext = canvas.getContext('2d')!;\n }\n return measurementContext;\n}\n\n/**\n * Measure a single grapheme\n */\nexport function measureGrapheme(\n grapheme: string,\n options: MeasurementOptions,\n ctx?: CanvasRenderingContext2D,\n): GraphemeMeasurement {\n // Check cache first\n const cached = measurementCache.get(grapheme, options);\n if (cached) {\n return cached;\n }\n\n // Use provided context or get global one\n const context = ctx || getMeasurementContext();\n\n // Set font properties\n applyFontStyle(context, options);\n\n // Measure the grapheme\n const metrics = context.measureText(grapheme);\n const fontMetrics = getFontMetrics(options);\n\n // Calculate comprehensive measurements\n const measurement: GraphemeMeasurement = {\n width: metrics.width,\n height: fontMetrics.lineHeight,\n ascent: fontMetrics.ascent,\n descent: fontMetrics.descent,\n baseline: fontMetrics.ascent,\n };\n\n // Cache the result\n measurementCache.set(grapheme, options, measurement);\n\n return measurement;\n}\n\n/**\n * Measure a grapheme with kerning relative to previous character\n */\nexport function measureGraphemeWithKerning(\n grapheme: string,\n previousGrapheme: string | undefined,\n options: MeasurementOptions,\n ctx?: CanvasRenderingContext2D,\n): KerningMeasurement {\n // Get individual measurement\n const individual = measureGrapheme(grapheme, options, ctx);\n\n // If no previous character, kerning width equals regular width\n if (!previousGrapheme) {\n return {\n ...individual,\n kernedWidth: individual.width,\n };\n }\n\n // Check kerning cache\n const kerningPair = `${previousGrapheme}${grapheme}`;\n const cachedKerning = kerningCache.get(kerningPair, options);\n if (cachedKerning) {\n return {\n ...individual,\n kernedWidth: cachedKerning,\n };\n }\n\n // Use provided context or get global one\n const context = ctx || getMeasurementContext();\n applyFontStyle(context, options);\n\n // Measure the pair\n const pairWidth = context.measureText(previousGrapheme + grapheme).width;\n const previousWidth = measureGrapheme(\n previousGrapheme,\n options,\n context,\n ).width;\n const kernedWidth = pairWidth - previousWidth;\n\n // Cache kerning result\n kerningCache.set(kerningPair, options, kernedWidth);\n\n return {\n ...individual,\n kernedWidth,\n };\n}\n\n/**\n * Get a representative character for font metrics measurement\n * Uses canvas to test which scripts the font actually supports\n */\nfunction getRepresentativeCharacter(fontFamily: string): string {\n const context = getMeasurementContext();\n \n // Wait for font to be ready if possible\n if (typeof document !== 'undefined' && 'fonts' in document) {\n try {\n // Check if font is ready, if not, use fallback immediately\n if (!document.fonts.check(`16px ${fontFamily}`)) {\n return 'M'; // Use safe fallback while font loads\n }\n } catch (e) {\n // Font check failed, use fallback\n return 'M';\n }\n }\n \n // Test characters for different scripts\n const testChars = [\n { char: 'م', script: 'Arabic' }, // Arabic\n { char: 'א', script: 'Hebrew' }, // Hebrew \n { char: 'अ', script: 'Devanagari' }, // Hindi/Sanskrit\n { char: 'ا', script: 'Urdu' }, // Urdu\n { char: 'ک', script: 'Persian' }, // Persian\n { char: 'த', script: 'Tamil' }, // Tamil\n { char: 'ก', script: 'Thai' }, // Thai\n { char: 'М', script: 'Cyrillic' }, // Cyrillic\n { char: 'Ω', script: 'Greek' }, // Greek\n { char: 'M', script: 'Latin' } // Latin (fallback)\n ];\n \n // Set the font\n context.font = `16px ${fontFamily}`;\n \n // Test each character to see which ones render properly\n // Use a more robust width check to avoid false positives\n const fallbackWidth = context.measureText('M').width;\n \n for (const test of testChars) {\n const metrics = context.measureText(test.char);\n \n // Character is valid if it has width and isn't just a fallback glyph\n if (metrics.width > 0 && Math.abs(metrics.width - fallbackWidth) > 0.1) {\n return test.char;\n }\n }\n \n // Fallback to Latin 'M'\n return 'M';\n}\n\n/**\n * Get font metrics for layout calculations\n */\nexport function getFontMetrics(options: MeasurementOptions): FontMetrics {\n const cacheKey = getFontDeclaration(options);\n const cached = fontMetricsCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n const context = getMeasurementContext();\n applyFontStyle(context, options);\n\n // Use representative character based on font's primary script\n const sample = getRepresentativeCharacter(options.fontFamily);\n const metrics = context.measureText(sample);\n const fontSize = options.fontSize;\n\n // Calculate metrics with fallbacks\n const fontBoundingBoxAscent =\n metrics.fontBoundingBoxAscent ?? fontSize * 0.91;\n const fontBoundingBoxDescent =\n metrics.fontBoundingBoxDescent ?? fontSize * 0.21;\n const actualBoundingBoxAscent =\n metrics.actualBoundingBoxAscent ?? fontSize * 0.716;\n const actualBoundingBoxDescent = metrics.actualBoundingBoxDescent ?? 0;\n\n const result: FontMetrics = {\n ascent: fontBoundingBoxAscent,\n descent: fontBoundingBoxDescent,\n lineHeight: fontSize,\n baseline: 'alphabetic',\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n };\n\n fontMetricsCache.set(cacheKey, result);\n return result;\n}\n\n/**\n * Apply font styling to canvas context\n */\nfunction applyFontStyle(\n ctx: CanvasRenderingContext2D,\n options: MeasurementOptions,\n): void {\n const fontDeclaration = getFontDeclaration(options);\n ctx.font = fontDeclaration;\n\n if (options.letterSpacing) {\n // Modern browsers support letterSpacing\n if ('letterSpacing' in ctx) {\n (ctx as any).letterSpacing = `${options.letterSpacing}px`;\n }\n }\n\n if (options.direction) {\n ctx.direction = options.direction;\n }\n\n ctx.textBaseline = 'alphabetic';\n}\n\n/**\n * Generate font declaration string\n */\nfunction getFontDeclaration(options: MeasurementOptions): string {\n const { fontStyle, fontWeight, fontSize, fontFamily } = options;\n\n // Normalize font family (add quotes if needed)\n let normalizedFamily =\n fontFamily.includes(' ') &&\n !fontFamily.includes('\"') &&\n !fontFamily.includes(\"'\")\n ? `\"${fontFamily}\"`\n : fontFamily;\n\n // Note: Font fallbacks are handled in the rendering phase only\n // to avoid affecting measurement calculations for text wrapping\n\n return `${fontStyle} ${fontWeight} ${fontSize}px ${normalizedFamily}`;\n}\n\n/**\n * LRU Cache implementation for measurements\n */\nclass LRUCache<T> {\n private cache = new Map<string, { value: T; timestamp: number }>();\n private maxSize: number;\n private hits = 0;\n private misses = 0;\n\n constructor(maxSize = 1000) {\n this.maxSize = maxSize;\n }\n\n get(key: string): T | undefined {\n const entry = this.cache.get(key);\n if (entry) {\n // Update timestamp for LRU\n entry.timestamp = Date.now();\n this.hits++;\n return entry.value;\n }\n this.misses++;\n return undefined;\n }\n\n set(key: string, value: T): void {\n // Remove oldest entries if at capacity\n if (this.cache.size >= this.maxSize) {\n const oldestKey = this.findOldestKey();\n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n\n this.cache.set(key, {\n value,\n timestamp: Date.now(),\n });\n }\n\n private findOldestKey(): string | undefined {\n let oldestKey: string | undefined;\n let oldestTime = Infinity;\n\n for (const [key, entry] of this.cache.entries()) {\n if (entry.timestamp < oldestTime) {\n oldestTime = entry.timestamp;\n oldestKey = key;\n }\n }\n\n return oldestKey;\n }\n\n clear(): void {\n this.cache.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n getStats(): { size: number; hitRate: number; hits: number; misses: number } {\n const total = this.hits + this.misses;\n return {\n size: this.cache.size,\n hitRate: total > 0 ? this.hits / total : 0,\n hits: this.hits,\n misses: this.misses,\n };\n }\n}\n\n/**\n * Advanced measurement cache with font-aware keys\n */\nexport class MeasurementCache {\n private cache = new LRUCache<GraphemeMeasurement>(1000);\n\n getCacheKey(grapheme: string, options: MeasurementOptions): string {\n const fontDecl = getFontDeclaration(options);\n const letterSpacing = options.letterSpacing || 0;\n return `${fontDecl}|${grapheme}|${letterSpacing}`;\n }\n\n get(\n grapheme: string,\n options: MeasurementOptions,\n ): GraphemeMeasurement | undefined {\n const key = this.getCacheKey(grapheme, options);\n return this.cache.get(key);\n }\n\n set(\n grapheme: string,\n options: MeasurementOptions,\n measurement: GraphemeMeasurement,\n ): void {\n const key = this.getCacheKey(grapheme, options);\n this.cache.set(key, measurement);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n getStats() {\n return this.cache.getStats();\n }\n}\n\n/**\n * Kerning cache for character pairs\n */\nclass KerningCache {\n private cache = new LRUCache<number>(5000); // More entries for pairs\n\n getCacheKey(pair: string, options: MeasurementOptions): string {\n const fontDecl = getFontDeclaration(options);\n return `${fontDecl}|${pair}`;\n }\n\n get(pair: string, options: MeasurementOptions): number | undefined {\n const key = this.getCacheKey(pair, options);\n return this.cache.get(key);\n }\n\n set(pair: string, options: MeasurementOptions, kerning: number): void {\n const key = this.getCacheKey(pair, options);\n this.cache.set(key, kerning);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n getStats() {\n return this.cache.getStats();\n }\n}\n\n/**\n * Font metrics cache\n */\nclass FontMetricsCache {\n private cache = new Map<string, FontMetrics>();\n\n get(fontDeclaration: string): FontMetrics | undefined {\n return this.cache.get(fontDeclaration);\n }\n\n set(fontDeclaration: string, metrics: FontMetrics): void {\n this.cache.set(fontDeclaration, metrics);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n getStats() {\n return {\n size: this.cache.size,\n };\n }\n}\n\n// Global cache instances\nexport const measurementCache = new MeasurementCache();\nexport const kerningCache = new KerningCache();\nexport const fontMetricsCache = new FontMetricsCache();\n\n// Set up font loading listener to clear caches when fonts change\nif (typeof document !== 'undefined' && 'fonts' in document) {\n document.fonts.addEventListener('loadingdone', () => {\n // Clear all caches when fonts finish loading\n clearAllCaches();\n });\n}\n\n/**\n * Clear all measurement caches\n */\nexport function clearAllCaches(): void {\n measurementCache.clear();\n kerningCache.clear();\n fontMetricsCache.clear();\n}\n\n/**\n * Get combined cache statistics\n */\nexport function getCacheStats() {\n return {\n measurement: measurementCache.getStats(),\n kerning: kerningCache.getStats(),\n fontMetrics: fontMetricsCache.getStats(),\n };\n}\n\n/**\n * Batch measure multiple graphemes efficiently\n */\nexport function batchMeasureGraphemes(\n graphemes: string[],\n options: MeasurementOptions,\n ctx?: CanvasRenderingContext2D,\n): GraphemeMeasurement[] {\n const context = ctx || getMeasurementContext();\n applyFontStyle(context, options);\n\n // Separate cached and uncached measurements\n const results: GraphemeMeasurement[] = new Array(graphemes.length);\n const uncachedIndices: number[] = [];\n\n // Check cache for all graphemes\n graphemes.forEach((grapheme, index) => {\n const cached = measurementCache.get(grapheme, options);\n if (cached) {\n results[index] = cached;\n } else {\n uncachedIndices.push(index);\n }\n });\n\n // Measure uncached graphemes\n const fontMetrics = getFontMetrics(options);\n uncachedIndices.forEach((index) => {\n const grapheme = graphemes[index];\n const metrics = context.measureText(grapheme);\n\n const measurement: GraphemeMeasurement = {\n width: metrics.width,\n height: fontMetrics.lineHeight,\n ascent: fontMetrics.ascent,\n descent: fontMetrics.descent,\n baseline: fontMetrics.ascent,\n };\n\n measurementCache.set(grapheme, options, measurement);\n results[index] = measurement;\n });\n\n return results;\n}\n\n/**\n * Estimate text width without full layout (for performance)\n */\nexport function estimateTextWidth(\n text: string,\n options: MeasurementOptions,\n): number {\n // Use average character width for estimation\n const avgChar = 'n'; // Representative character\n const avgMeasurement = measureGrapheme(avgChar, options);\n const letterSpacing = options.letterSpacing || 0;\n\n return text.length * (avgMeasurement.width + letterSpacing);\n}\n\n/**\n * Check if font is loaded and ready for measurement\n */\nexport function isFontReady(fontFamily: string): boolean {\n if (typeof document === 'undefined') return true;\n\n if ('fonts' in document) {\n return document.fonts.check(`16px ${fontFamily}`);\n }\n\n // Fallback - assume font is ready\n return true;\n}\n\n/**\n * Detect if a font lacks English glyph support\n * These fonts should use browser-native measurement instead of Fabric's character-by-character measurement\n */\nexport function fontLacksEnglishGlyphs(fontFamily: string): boolean {\n if (typeof document === 'undefined') return false;\n \n // Known fonts that lack English glyphs\n const knownNonEnglishFonts = [\n 'stv', 'arabic', 'naskh', 'thuluth', 'kufi', 'diwani',\n 'nastaliq', 'kufic', 'hijazi', 'madinah', 'makkah'\n ];\n \n const lowerFontFamily = fontFamily.toLowerCase();\n \n // Check known list first\n if (knownNonEnglishFonts.some(font => lowerFontFamily.includes(font))) {\n return true;\n }\n \n // Dynamic glyph support detection\n const context = getMeasurementContext();\n context.font = `16px ${fontFamily}`;\n \n // Test English characters\n const englishChars = ['A', 'B', 'C', 'a', 'b', 'c', 'M', 'W'];\n const fallbackFont = 'Arial, sans-serif';\n \n // Measure with target font\n const targetWidths = englishChars.map(char => context.measureText(char).width);\n \n // Measure with fallback font\n context.font = `16px ${fallbackFont}`;\n const fallbackWidths = englishChars.map(char => context.measureText(char).width);\n \n // If most measurements are identical, the font likely doesn't have English glyphs\n let identicalCount = 0;\n for (let i = 0; i < englishChars.length; i++) {\n if (Math.abs(targetWidths[i] - fallbackWidths[i]) < 0.5) {\n identicalCount++;\n }\n }\n \n const lacksSupportThreshold = englishChars.length * 0.7; // 70% identical = lacks support\n const lacksSupport = identicalCount >= lacksSupportThreshold;\n \n \n return lacksSupport;\n}\n\n// Cache for font glyph detection results\nconst fontGlyphCache = new Map<string, boolean>();\n\n/**\n * Cached version of font glyph detection\n */\nexport function fontLacksEnglishGlyphsCached(fontFamily: string): boolean {\n if (fontGlyphCache.has(fontFamily)) {\n return fontGlyphCache.get(fontFamily)!;\n }\n \n const result = fontLacksEnglishGlyphs(fontFamily);\n fontGlyphCache.set(fontFamily, result);\n return result;\n}\n"],"names":["measurementContext","getMeasurementContext","canvas","createCanvasElementFor","width","height","getContext","measureGrapheme","grapheme","options","ctx","cached","measurementCache","get","context","applyFontStyle","metrics","measureText","fontMetrics","getFontMetrics","measurement","lineHeight","ascent","descent","baseline","set","measureGraphemeWithKerning","previousGrapheme","individual","kernedWidth","kerningPair","cachedKerning","kerningCache","_metrics$fontBounding","_metrics$fontBounding2","_metrics$actualBoundi","_metrics$actualBoundi2","cacheKey","getFontDeclaration","fontMetricsCache","sample","fontFamily","document","fonts","check","e","testChars","char","script","font","fallbackWidth","test","Math","abs","getRepresentativeCharacter","fontSize","fontBoundingBoxAscent","fontBoundingBoxDescent","result","actualBoundingBoxAscent","actualBoundingBoxDescent","fontDeclaration","letterSpacing","direction","textBaseline","fontStyle","fontWeight","includes","LRUCache","constructor","maxSize","arguments","length","undefined","_defineProperty","this","Map","key","entry","cache","timestamp","Date","now","hits","value","misses","size","oldestKey","findOldestKey","delete","oldestTime","Infinity","entries","clear","getStats","total","hitRate","MeasurementCache","getCacheKey","pair","kerning","clearAllCaches","fontLacksEnglishGlyphs","lowerFontFamily","toLowerCase","some","englishChars","targetWidths","map","fallbackWidths","identicalCount","i","addEventListener","fontGlyphCache","fontLacksEnglishGlyphsCached","has"],"mappings":"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"}
1
+ {"version":3,"file":"measure.min.mjs","sources":["../../../src/text/measure.ts"],"sourcesContent":["/**\r\n * Advanced Text Measurement System\r\n *\r\n * Provides precise text measurement with caching, font metrics,\r\n * and DPI awareness for optimal performance and accuracy.\r\n */\r\n\r\nimport { createCanvasElementFor } from '../util/misc/dom';\r\n\r\nexport interface MeasurementOptions {\r\n fontFamily: string;\r\n fontSize: number;\r\n fontStyle: string;\r\n fontWeight: string | number;\r\n letterSpacing?: number;\r\n direction?: 'ltr' | 'rtl';\r\n}\r\n\r\nexport interface GraphemeMeasurement {\r\n width: number;\r\n height: number;\r\n ascent: number;\r\n descent: number;\r\n baseline: number;\r\n}\r\n\r\nexport interface KerningMeasurement extends GraphemeMeasurement {\r\n kernedWidth: number; // width accounting for kerning with previous char\r\n}\r\n\r\nexport interface FontMetrics {\r\n ascent: number;\r\n descent: number;\r\n lineHeight: number;\r\n baseline: string;\r\n fontBoundingBoxAscent?: number;\r\n fontBoundingBoxDescent?: number;\r\n actualBoundingBoxAscent?: number;\r\n actualBoundingBoxDescent?: number;\r\n}\r\n\r\n// Global measurement context - reused for performance\r\nlet measurementContext: CanvasRenderingContext2D | null = null;\r\n\r\n/**\r\n * Get or create the shared measurement context\r\n */\r\nfunction getMeasurementContext(): CanvasRenderingContext2D {\r\n if (!measurementContext) {\r\n const canvas = createCanvasElementFor({\r\n width: 0,\r\n height: 0,\r\n });\r\n measurementContext = canvas.getContext('2d')!;\r\n }\r\n return measurementContext;\r\n}\r\n\r\n/**\r\n * Measure a single grapheme\r\n */\r\nexport function measureGrapheme(\r\n grapheme: string,\r\n options: MeasurementOptions,\r\n ctx?: CanvasRenderingContext2D,\r\n): GraphemeMeasurement {\r\n // Check cache first\r\n const cached = measurementCache.get(grapheme, options);\r\n if (cached) {\r\n return cached;\r\n }\r\n\r\n // Use provided context or get global one\r\n const context = ctx || getMeasurementContext();\r\n\r\n // Set font properties\r\n applyFontStyle(context, options);\r\n\r\n // Measure the grapheme\r\n const metrics = context.measureText(grapheme);\r\n const fontMetrics = getFontMetrics(options);\r\n\r\n // Calculate comprehensive measurements\r\n const measurement: GraphemeMeasurement = {\r\n width: metrics.width,\r\n height: fontMetrics.lineHeight,\r\n ascent: fontMetrics.ascent,\r\n descent: fontMetrics.descent,\r\n baseline: fontMetrics.ascent,\r\n };\r\n\r\n // Cache the result\r\n measurementCache.set(grapheme, options, measurement);\r\n\r\n return measurement;\r\n}\r\n\r\n/**\r\n * Measure a grapheme with kerning relative to previous character\r\n */\r\nexport function measureGraphemeWithKerning(\r\n grapheme: string,\r\n previousGrapheme: string | undefined,\r\n options: MeasurementOptions,\r\n ctx?: CanvasRenderingContext2D,\r\n): KerningMeasurement {\r\n // Get individual measurement\r\n const individual = measureGrapheme(grapheme, options, ctx);\r\n\r\n // If no previous character, kerning width equals regular width\r\n if (!previousGrapheme) {\r\n return {\r\n ...individual,\r\n kernedWidth: individual.width,\r\n };\r\n }\r\n\r\n // Check kerning cache\r\n const kerningPair = `${previousGrapheme}${grapheme}`;\r\n const cachedKerning = kerningCache.get(kerningPair, options);\r\n if (cachedKerning) {\r\n return {\r\n ...individual,\r\n kernedWidth: cachedKerning,\r\n };\r\n }\r\n\r\n // Use provided context or get global one\r\n const context = ctx || getMeasurementContext();\r\n applyFontStyle(context, options);\r\n\r\n // Measure the pair\r\n const pairWidth = context.measureText(previousGrapheme + grapheme).width;\r\n const previousWidth = measureGrapheme(\r\n previousGrapheme,\r\n options,\r\n context,\r\n ).width;\r\n const kernedWidth = pairWidth - previousWidth;\r\n\r\n // Cache kerning result\r\n kerningCache.set(kerningPair, options, kernedWidth);\r\n\r\n return {\r\n ...individual,\r\n kernedWidth,\r\n };\r\n}\r\n\r\n/**\r\n * Get a representative character for font metrics measurement\r\n * Uses canvas to test which scripts the font actually supports\r\n */\r\nfunction getRepresentativeCharacter(fontFamily: string): string {\r\n const context = getMeasurementContext();\r\n \r\n // Wait for font to be ready if possible\r\n if (typeof document !== 'undefined' && 'fonts' in document) {\r\n try {\r\n // Check if font is ready, if not, use fallback immediately\r\n if (!document.fonts.check(`16px ${fontFamily}`)) {\r\n return 'M'; // Use safe fallback while font loads\r\n }\r\n } catch (e) {\r\n // Font check failed, use fallback\r\n return 'M';\r\n }\r\n }\r\n \r\n // Test characters for different scripts\r\n const testChars = [\r\n { char: 'م', script: 'Arabic' }, // Arabic\r\n { char: 'א', script: 'Hebrew' }, // Hebrew \r\n { char: 'अ', script: 'Devanagari' }, // Hindi/Sanskrit\r\n { char: 'ا', script: 'Urdu' }, // Urdu\r\n { char: 'ک', script: 'Persian' }, // Persian\r\n { char: 'த', script: 'Tamil' }, // Tamil\r\n { char: 'ก', script: 'Thai' }, // Thai\r\n { char: 'М', script: 'Cyrillic' }, // Cyrillic\r\n { char: 'Ω', script: 'Greek' }, // Greek\r\n { char: 'M', script: 'Latin' } // Latin (fallback)\r\n ];\r\n \r\n // Set the font\r\n context.font = `16px ${fontFamily}`;\r\n \r\n // Test each character to see which ones render properly\r\n // Use a more robust width check to avoid false positives\r\n const fallbackWidth = context.measureText('M').width;\r\n \r\n for (const test of testChars) {\r\n const metrics = context.measureText(test.char);\r\n \r\n // Character is valid if it has width and isn't just a fallback glyph\r\n if (metrics.width > 0 && Math.abs(metrics.width - fallbackWidth) > 0.1) {\r\n return test.char;\r\n }\r\n }\r\n \r\n // Fallback to Latin 'M'\r\n return 'M';\r\n}\r\n\r\n/**\r\n * Get font metrics for layout calculations\r\n */\r\nexport function getFontMetrics(options: MeasurementOptions): FontMetrics {\r\n const cacheKey = getFontDeclaration(options);\r\n const cached = fontMetricsCache.get(cacheKey);\r\n if (cached) {\r\n return cached;\r\n }\r\n\r\n const context = getMeasurementContext();\r\n applyFontStyle(context, options);\r\n\r\n // Use representative character based on font's primary script\r\n const sample = getRepresentativeCharacter(options.fontFamily);\r\n const metrics = context.measureText(sample);\r\n const fontSize = options.fontSize;\r\n\r\n // Calculate metrics with fallbacks\r\n const fontBoundingBoxAscent =\r\n metrics.fontBoundingBoxAscent ?? fontSize * 0.91;\r\n const fontBoundingBoxDescent =\r\n metrics.fontBoundingBoxDescent ?? fontSize * 0.21;\r\n const actualBoundingBoxAscent =\r\n metrics.actualBoundingBoxAscent ?? fontSize * 0.716;\r\n const actualBoundingBoxDescent = metrics.actualBoundingBoxDescent ?? 0;\r\n\r\n const result: FontMetrics = {\r\n ascent: fontBoundingBoxAscent,\r\n descent: fontBoundingBoxDescent,\r\n lineHeight: fontSize,\r\n baseline: 'alphabetic',\r\n fontBoundingBoxAscent,\r\n fontBoundingBoxDescent,\r\n actualBoundingBoxAscent,\r\n actualBoundingBoxDescent,\r\n };\r\n\r\n fontMetricsCache.set(cacheKey, result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Apply font styling to canvas context\r\n */\r\nfunction applyFontStyle(\r\n ctx: CanvasRenderingContext2D,\r\n options: MeasurementOptions,\r\n): void {\r\n const fontDeclaration = getFontDeclaration(options);\r\n ctx.font = fontDeclaration;\r\n\r\n if (options.letterSpacing) {\r\n // Modern browsers support letterSpacing\r\n if ('letterSpacing' in ctx) {\r\n (ctx as any).letterSpacing = `${options.letterSpacing}px`;\r\n }\r\n }\r\n\r\n if (options.direction) {\r\n ctx.direction = options.direction;\r\n }\r\n\r\n ctx.textBaseline = 'alphabetic';\r\n}\r\n\r\n/**\r\n * Generate font declaration string\r\n */\r\nfunction getFontDeclaration(options: MeasurementOptions): string {\r\n const { fontStyle, fontWeight, fontSize, fontFamily } = options;\r\n\r\n // Normalize font family (add quotes if needed)\r\n let normalizedFamily =\r\n fontFamily.includes(' ') &&\r\n !fontFamily.includes('\"') &&\r\n !fontFamily.includes(\"'\")\r\n ? `\"${fontFamily}\"`\r\n : fontFamily;\r\n\r\n // Note: Font fallbacks are handled in the rendering phase only\r\n // to avoid affecting measurement calculations for text wrapping\r\n\r\n return `${fontStyle} ${fontWeight} ${fontSize}px ${normalizedFamily}`;\r\n}\r\n\r\n/**\r\n * LRU Cache implementation for measurements\r\n */\r\nclass LRUCache<T> {\r\n private cache = new Map<string, { value: T; timestamp: number }>();\r\n private maxSize: number;\r\n private hits = 0;\r\n private misses = 0;\r\n\r\n constructor(maxSize = 1000) {\r\n this.maxSize = maxSize;\r\n }\r\n\r\n get(key: string): T | undefined {\r\n const entry = this.cache.get(key);\r\n if (entry) {\r\n // Update timestamp for LRU\r\n entry.timestamp = Date.now();\r\n this.hits++;\r\n return entry.value;\r\n }\r\n this.misses++;\r\n return undefined;\r\n }\r\n\r\n set(key: string, value: T): void {\r\n // Remove oldest entries if at capacity\r\n if (this.cache.size >= this.maxSize) {\r\n const oldestKey = this.findOldestKey();\r\n if (oldestKey) {\r\n this.cache.delete(oldestKey);\r\n }\r\n }\r\n\r\n this.cache.set(key, {\r\n value,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n private findOldestKey(): string | undefined {\r\n let oldestKey: string | undefined;\r\n let oldestTime = Infinity;\r\n\r\n for (const [key, entry] of this.cache.entries()) {\r\n if (entry.timestamp < oldestTime) {\r\n oldestTime = entry.timestamp;\r\n oldestKey = key;\r\n }\r\n }\r\n\r\n return oldestKey;\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n this.hits = 0;\r\n this.misses = 0;\r\n }\r\n\r\n getStats(): { size: number; hitRate: number; hits: number; misses: number } {\r\n const total = this.hits + this.misses;\r\n return {\r\n size: this.cache.size,\r\n hitRate: total > 0 ? this.hits / total : 0,\r\n hits: this.hits,\r\n misses: this.misses,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Advanced measurement cache with font-aware keys\r\n */\r\nexport class MeasurementCache {\r\n private cache = new LRUCache<GraphemeMeasurement>(1000);\r\n\r\n getCacheKey(grapheme: string, options: MeasurementOptions): string {\r\n const fontDecl = getFontDeclaration(options);\r\n const letterSpacing = options.letterSpacing || 0;\r\n return `${fontDecl}|${grapheme}|${letterSpacing}`;\r\n }\r\n\r\n get(\r\n grapheme: string,\r\n options: MeasurementOptions,\r\n ): GraphemeMeasurement | undefined {\r\n const key = this.getCacheKey(grapheme, options);\r\n return this.cache.get(key);\r\n }\r\n\r\n set(\r\n grapheme: string,\r\n options: MeasurementOptions,\r\n measurement: GraphemeMeasurement,\r\n ): void {\r\n const key = this.getCacheKey(grapheme, options);\r\n this.cache.set(key, measurement);\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n\r\n getStats() {\r\n return this.cache.getStats();\r\n }\r\n}\r\n\r\n/**\r\n * Kerning cache for character pairs\r\n */\r\nclass KerningCache {\r\n private cache = new LRUCache<number>(5000); // More entries for pairs\r\n\r\n getCacheKey(pair: string, options: MeasurementOptions): string {\r\n const fontDecl = getFontDeclaration(options);\r\n return `${fontDecl}|${pair}`;\r\n }\r\n\r\n get(pair: string, options: MeasurementOptions): number | undefined {\r\n const key = this.getCacheKey(pair, options);\r\n return this.cache.get(key);\r\n }\r\n\r\n set(pair: string, options: MeasurementOptions, kerning: number): void {\r\n const key = this.getCacheKey(pair, options);\r\n this.cache.set(key, kerning);\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n\r\n getStats() {\r\n return this.cache.getStats();\r\n }\r\n}\r\n\r\n/**\r\n * Font metrics cache\r\n */\r\nclass FontMetricsCache {\r\n private cache = new Map<string, FontMetrics>();\r\n\r\n get(fontDeclaration: string): FontMetrics | undefined {\r\n return this.cache.get(fontDeclaration);\r\n }\r\n\r\n set(fontDeclaration: string, metrics: FontMetrics): void {\r\n this.cache.set(fontDeclaration, metrics);\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n\r\n getStats() {\r\n return {\r\n size: this.cache.size,\r\n };\r\n }\r\n}\r\n\r\n// Global cache instances\r\nexport const measurementCache = new MeasurementCache();\r\nexport const kerningCache = new KerningCache();\r\nexport const fontMetricsCache = new FontMetricsCache();\r\n\r\n// Set up font loading listener to clear caches when fonts change\r\nif (typeof document !== 'undefined' && 'fonts' in document) {\r\n document.fonts.addEventListener('loadingdone', () => {\r\n // Clear all caches when fonts finish loading\r\n clearAllCaches();\r\n });\r\n}\r\n\r\n/**\r\n * Clear all measurement caches\r\n */\r\nexport function clearAllCaches(): void {\r\n measurementCache.clear();\r\n kerningCache.clear();\r\n fontMetricsCache.clear();\r\n}\r\n\r\n/**\r\n * Get combined cache statistics\r\n */\r\nexport function getCacheStats() {\r\n return {\r\n measurement: measurementCache.getStats(),\r\n kerning: kerningCache.getStats(),\r\n fontMetrics: fontMetricsCache.getStats(),\r\n };\r\n}\r\n\r\n/**\r\n * Batch measure multiple graphemes efficiently\r\n */\r\nexport function batchMeasureGraphemes(\r\n graphemes: string[],\r\n options: MeasurementOptions,\r\n ctx?: CanvasRenderingContext2D,\r\n): GraphemeMeasurement[] {\r\n const context = ctx || getMeasurementContext();\r\n applyFontStyle(context, options);\r\n\r\n // Separate cached and uncached measurements\r\n const results: GraphemeMeasurement[] = new Array(graphemes.length);\r\n const uncachedIndices: number[] = [];\r\n\r\n // Check cache for all graphemes\r\n graphemes.forEach((grapheme, index) => {\r\n const cached = measurementCache.get(grapheme, options);\r\n if (cached) {\r\n results[index] = cached;\r\n } else {\r\n uncachedIndices.push(index);\r\n }\r\n });\r\n\r\n // Measure uncached graphemes\r\n const fontMetrics = getFontMetrics(options);\r\n uncachedIndices.forEach((index) => {\r\n const grapheme = graphemes[index];\r\n const metrics = context.measureText(grapheme);\r\n\r\n const measurement: GraphemeMeasurement = {\r\n width: metrics.width,\r\n height: fontMetrics.lineHeight,\r\n ascent: fontMetrics.ascent,\r\n descent: fontMetrics.descent,\r\n baseline: fontMetrics.ascent,\r\n };\r\n\r\n measurementCache.set(grapheme, options, measurement);\r\n results[index] = measurement;\r\n });\r\n\r\n return results;\r\n}\r\n\r\n/**\r\n * Estimate text width without full layout (for performance)\r\n */\r\nexport function estimateTextWidth(\r\n text: string,\r\n options: MeasurementOptions,\r\n): number {\r\n // Use average character width for estimation\r\n const avgChar = 'n'; // Representative character\r\n const avgMeasurement = measureGrapheme(avgChar, options);\r\n const letterSpacing = options.letterSpacing || 0;\r\n\r\n return text.length * (avgMeasurement.width + letterSpacing);\r\n}\r\n\r\n/**\r\n * Check if font is loaded and ready for measurement\r\n */\r\nexport function isFontReady(fontFamily: string): boolean {\r\n if (typeof document === 'undefined') return true;\r\n\r\n if ('fonts' in document) {\r\n return document.fonts.check(`16px ${fontFamily}`);\r\n }\r\n\r\n // Fallback - assume font is ready\r\n return true;\r\n}\r\n\r\n/**\r\n * Detect if a font lacks English glyph support\r\n * These fonts should use browser-native measurement instead of Fabric's character-by-character measurement\r\n */\r\nexport function fontLacksEnglishGlyphs(fontFamily: string): boolean {\r\n if (typeof document === 'undefined') return false;\r\n \r\n // Known fonts that lack English glyphs\r\n const knownNonEnglishFonts = [\r\n 'stv', 'arabic', 'naskh', 'thuluth', 'kufi', 'diwani',\r\n 'nastaliq', 'kufic', 'hijazi', 'madinah', 'makkah'\r\n ];\r\n \r\n const lowerFontFamily = fontFamily.toLowerCase();\r\n \r\n // Check known list first\r\n if (knownNonEnglishFonts.some(font => lowerFontFamily.includes(font))) {\r\n return true;\r\n }\r\n \r\n // Dynamic glyph support detection\r\n const context = getMeasurementContext();\r\n context.font = `16px ${fontFamily}`;\r\n \r\n // Test English characters\r\n const englishChars = ['A', 'B', 'C', 'a', 'b', 'c', 'M', 'W'];\r\n const fallbackFont = 'Arial, sans-serif';\r\n \r\n // Measure with target font\r\n const targetWidths = englishChars.map(char => context.measureText(char).width);\r\n \r\n // Measure with fallback font\r\n context.font = `16px ${fallbackFont}`;\r\n const fallbackWidths = englishChars.map(char => context.measureText(char).width);\r\n \r\n // If most measurements are identical, the font likely doesn't have English glyphs\r\n let identicalCount = 0;\r\n for (let i = 0; i < englishChars.length; i++) {\r\n if (Math.abs(targetWidths[i] - fallbackWidths[i]) < 0.5) {\r\n identicalCount++;\r\n }\r\n }\r\n \r\n const lacksSupportThreshold = englishChars.length * 0.7; // 70% identical = lacks support\r\n const lacksSupport = identicalCount >= lacksSupportThreshold;\r\n \r\n \r\n return lacksSupport;\r\n}\r\n\r\n// Cache for font glyph detection results\r\nconst fontGlyphCache = new Map<string, boolean>();\r\n\r\n/**\r\n * Cached version of font glyph detection\r\n */\r\nexport function fontLacksEnglishGlyphsCached(fontFamily: string): boolean {\r\n if (fontGlyphCache.has(fontFamily)) {\r\n return fontGlyphCache.get(fontFamily)!;\r\n }\r\n \r\n const result = fontLacksEnglishGlyphs(fontFamily);\r\n fontGlyphCache.set(fontFamily, result);\r\n return result;\r\n}\r\n"],"names":["measurementContext","getMeasurementContext","canvas","createCanvasElementFor","width","height","getContext","measureGrapheme","grapheme","options","ctx","cached","measurementCache","get","context","applyFontStyle","metrics","measureText","fontMetrics","getFontMetrics","measurement","lineHeight","ascent","descent","baseline","set","measureGraphemeWithKerning","previousGrapheme","individual","kernedWidth","kerningPair","cachedKerning","kerningCache","_metrics$fontBounding","_metrics$fontBounding2","_metrics$actualBoundi","_metrics$actualBoundi2","cacheKey","getFontDeclaration","fontMetricsCache","sample","fontFamily","document","fonts","check","e","testChars","char","script","font","fallbackWidth","test","Math","abs","getRepresentativeCharacter","fontSize","fontBoundingBoxAscent","fontBoundingBoxDescent","result","actualBoundingBoxAscent","actualBoundingBoxDescent","fontDeclaration","letterSpacing","direction","textBaseline","fontStyle","fontWeight","includes","LRUCache","constructor","maxSize","arguments","length","undefined","_defineProperty","this","Map","key","entry","cache","timestamp","Date","now","hits","value","misses","size","oldestKey","findOldestKey","delete","oldestTime","Infinity","entries","clear","getStats","total","hitRate","MeasurementCache","getCacheKey","pair","kerning","clearAllCaches","fontLacksEnglishGlyphs","lowerFontFamily","toLowerCase","some","englishChars","targetWidths","map","fallbackWidths","identicalCount","i","addEventListener","fontGlyphCache","fontLacksEnglishGlyphsCached","has"],"mappings":"oJA0CA,IAAIA,EAAsD,KAK1D,SAASC,IACP,IAAKD,EAAoB,CACvB,MAAME,EAASC,EAAuB,CACpCC,MAAO,EACPC,OAAQ,IAEVL,EAAqBE,EAAOI,WAAW,KACzC,CACA,OAAON,CACT,CAKO,SAASO,EACdC,EACAC,EACAC,GAGA,MAAMC,EAASC,EAAiBC,IAAIL,EAAUC,GAC9C,GAAIE,EACF,OAAOA,EAIT,MAAMG,EAAUJ,GAAOT,IAGvBc,EAAeD,EAASL,GAGxB,MAAMO,EAAUF,EAAQG,YAAYT,GAC9BU,EAAcC,EAAeV,GAG7BW,EAAmC,CACvChB,MAAOY,EAAQZ,MACfC,OAAQa,EAAYG,WACpBC,OAAQJ,EAAYI,OACpBC,QAASL,EAAYK,QACrBC,SAAUN,EAAYI,QAMxB,OAFAV,EAAiBa,IAAIjB,EAAUC,EAASW,GAEjCA,CACT,CAKO,SAASM,EACdlB,EACAmB,EACAlB,EACAC,GAGA,MAAMkB,EAAarB,EAAgBC,EAAUC,EAASC,GAGtD,IAAKiB,EACH,MAAO,IACFC,EACHC,YAAaD,EAAWxB,OAK5B,MAAM0B,EAAc,GAAGH,IAAmBnB,IACpCuB,EAAgBC,EAAanB,IAAIiB,EAAarB,GACpD,GAAIsB,EACF,MAAO,IACFH,EACHC,YAAaE,GAKjB,MAAMjB,EAAiBb,IACvBc,EAAeD,EAASL,GAGxB,MAMMoB,EANYf,EAAQG,YAAYU,EAAmBnB,GAAUJ,MAC7CG,EACpBoB,EACAlB,EACAK,GACAV,MAMF,OAFA4B,EAAaP,IAAIK,EAAarB,EAASoB,GAEhC,IACFD,EACHC,cAEJ,CA2DO,SAASV,EAAeV,GAA0C,IAAAwB,EAAAC,EAAAC,EAAAC,EACvE,MAAMC,EAAWC,EAAmB7B,GAC9BE,EAAS4B,EAAiB1B,IAAIwB,GACpC,GAAI1B,EACF,OAAOA,EAGT,MAAMG,EAAUb,IAChBc,EAAeD,EAASL,GAGxB,MAAM+B,EAhER,SAAoCC,GAClC,MAAM3B,EAAUb,IAGhB,GAAwB,oBAAbyC,UAA4B,UAAWA,SAChD,IAEE,IAAKA,SAASC,MAAMC,MAAM,QAAQH,KAChC,MAAO,GAEX,CAAE,MAAOI,GAEP,MAAO,GACT,CAIF,MAAMC,EAAY,CAChB,CAAEC,KAAM,IAAKC,OAAQ,UACrB,CAAED,KAAM,IAAKC,OAAQ,UACrB,CAAED,KAAM,IAAKC,OAAQ,cACrB,CAAED,KAAM,IAAKC,OAAQ,QACrB,CAAED,KAAM,IAAKC,OAAQ,WACrB,CAAED,KAAM,IAAKC,OAAQ,SACrB,CAAED,KAAM,IAAKC,OAAQ,QACrB,CAAED,KAAM,IAAKC,OAAQ,YACrB,CAAED,KAAM,IAAKC,OAAQ,SACrB,CAAED,KAAM,IAAKC,OAAQ,UAIvBlC,EAAQmC,KAAO,QAAQR,IAIvB,MAAMS,EAAgBpC,EAAQG,YAAY,KAAKb,MAE/C,IAAK,MAAM+C,KAAQL,EAAW,CAC5B,MAAM9B,EAAUF,EAAQG,YAAYkC,EAAKJ,MAGzC,GAAI/B,EAAQZ,MAAQ,GAAKgD,KAAKC,IAAIrC,EAAQZ,MAAQ8C,GAAiB,GACjE,OAAOC,EAAKJ,IAEhB,CAGA,MAAO,GACT,CAgBiBO,CAA2B7C,EAAQgC,YAC5CzB,EAAUF,EAAQG,YAAYuB,GAC9Be,EAAW9C,EAAQ8C,SAGnBC,EACyB,QADJvB,EACzBjB,EAAQwC,6BAAqB,IAAAvB,EAAAA,EAAe,IAAXsB,EAC7BE,EAC0B,QADJvB,EAC1BlB,EAAQyC,8BAAsB,IAAAvB,EAAAA,EAAe,IAAXqB,EAK9BG,EAAsB,CAC1BpC,OAAQkC,EACRjC,QAASkC,EACTpC,WAAYkC,EACZ/B,SAAU,aACVgC,wBACAC,yBACAE,wBAV+B,QADJxB,EAC3BnB,EAAQ2C,+BAAuB,IAAAxB,EAAAA,EAAe,KAAXoB,EAWnCK,yBAV+D,QAAnCxB,EAAGpB,EAAQ4C,gCAAwB,IAAAxB,EAAAA,EAAI,GAcrE,OADAG,EAAiBd,IAAIY,EAAUqB,GACxBA,CACT,CAKA,SAAS3C,EACPL,EACAD,GAEA,MAAMoD,EAAkBvB,EAAmB7B,GAC3CC,EAAIuC,KAAOY,EAEPpD,EAAQqD,eAEN,kBAAmBpD,IACpBA,EAAYoD,cAAgB,GAAGrD,EAAQqD,mBAIxCrD,EAAQsD,YACVrD,EAAIqD,UAAYtD,EAAQsD,WAG1BrD,EAAIsD,aAAe,YACrB,CAKA,SAAS1B,EAAmB7B,GAC1B,MAAMwD,UAAEA,EAASC,WAAEA,EAAUX,SAAEA,EAAQd,WAAEA,GAAehC,EAaxD,MAAO,GAAGwD,KAAaC,KAAcX,QATnCd,EAAW0B,SAAS,MACnB1B,EAAW0B,SAAS,MACpB1B,EAAW0B,SAAS,KAEjB1B,EADA,IAAIA,MAOZ,CAKA,MAAM2B,EAMJC,WAAAA,GAA4B,IAAhBC,EAAOC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,IAAIG,EAAAC,KAAA,QALV,IAAIC,KAA8CF,EAAAC,KAAA,eAAA,GAAAD,cAEnD,GAACA,gBACC,GAGfC,KAAKL,QAAUA,CACjB,CAEAzD,GAAAA,CAAIgE,GACF,MAAMC,EAAQH,KAAKI,MAAMlE,IAAIgE,GAC7B,GAAIC,EAIF,OAFAA,EAAME,UAAYC,KAAKC,MACvBP,KAAKQ,OACEL,EAAMM,MAEfT,KAAKU,QAEP,CAEA5D,GAAAA,CAAIoD,EAAaO,GAEf,GAAIT,KAAKI,MAAMO,MAAQX,KAAKL,QAAS,CACnC,MAAMiB,EAAYZ,KAAKa,gBACnBD,GACFZ,KAAKI,MAAMU,OAAOF,EAEtB,CAEAZ,KAAKI,MAAMtD,IAAIoD,EAAK,CAClBO,QACAJ,UAAWC,KAAKC,OAEpB,CAEQM,aAAAA,GACN,IAAID,EACAG,EAAaC,IAEjB,IAAK,MAAOd,EAAKC,KAAUH,KAAKI,MAAMa,UAChCd,EAAME,UAAYU,IACpBA,EAAaZ,EAAME,UACnBO,EAAYV,GAIhB,OAAOU,CACT,CAEAM,KAAAA,GACElB,KAAKI,MAAMc,QACXlB,KAAKQ,KAAO,EACZR,KAAKU,OAAS,CAChB,CAEAS,QAAAA,GACE,MAAMC,EAAQpB,KAAKQ,KAAOR,KAAKU,OAC/B,MAAO,CACLC,KAAMX,KAAKI,MAAMO,KACjBU,QAASD,EAAQ,EAAIpB,KAAKQ,KAAOY,EAAQ,EACzCZ,KAAMR,KAAKQ,KACXE,OAAQV,KAAKU,OAEjB,EAMK,MAAMY,EAAiB5B,WAAAA,GAAAK,EAAAC,KAAA,QACZ,IAAIP,EAA8B,KAAK,CAEvD8B,WAAAA,CAAY1F,EAAkBC,GAG5B,MAAO,GAFU6B,EAAmB7B,MAEdD,KADAC,EAAQqD,eAAiB,GAEjD,CAEAjD,GAAAA,CACEL,EACAC,GAEA,MAAMoE,EAAMF,KAAKuB,YAAY1F,EAAUC,GACvC,OAAOkE,KAAKI,MAAMlE,IAAIgE,EACxB,CAEApD,GAAAA,CACEjB,EACAC,EACAW,GAEA,MAAMyD,EAAMF,KAAKuB,YAAY1F,EAAUC,GACvCkE,KAAKI,MAAMtD,IAAIoD,EAAKzD,EACtB,CAEAyE,KAAAA,GACElB,KAAKI,MAAMc,OACb,CAEAC,QAAAA,GACE,OAAOnB,KAAKI,MAAMe,UACpB,QA2DWlF,EAAmB,IAAIqF,EACvBjE,EAAe,IAtD5B,MAAmBqC,WAAAA,GAAAK,EAAAC,KAAA,QACD,IAAIP,EAAiB,KAAK,CAE1C8B,WAAAA,CAAYC,EAAc1F,GAExB,MAAO,GADU6B,EAAmB7B,MACd0F,GACxB,CAEAtF,GAAAA,CAAIsF,EAAc1F,GAChB,MAAMoE,EAAMF,KAAKuB,YAAYC,EAAM1F,GACnC,OAAOkE,KAAKI,MAAMlE,IAAIgE,EACxB,CAEApD,GAAAA,CAAI0E,EAAc1F,EAA6B2F,GAC7C,MAAMvB,EAAMF,KAAKuB,YAAYC,EAAM1F,GACnCkE,KAAKI,MAAMtD,IAAIoD,EAAKuB,EACtB,CAEAP,KAAAA,GACElB,KAAKI,MAAMc,OACb,CAEAC,QAAAA,GACE,OAAOnB,KAAKI,MAAMe,UACpB,GA+BWvD,EAAmB,IAzBhC,MAAuB8B,WAAAA,GAAAK,EAAAC,KAAA,QACL,IAAIC,IAA0B,CAE9C/D,GAAAA,CAAIgD,GACF,OAAOc,KAAKI,MAAMlE,IAAIgD,EACxB,CAEApC,GAAAA,CAAIoC,EAAyB7C,GAC3B2D,KAAKI,MAAMtD,IAAIoC,EAAiB7C,EAClC,CAEA6E,KAAAA,GACElB,KAAKI,MAAMc,OACb,CAEAC,QAAAA,GACE,MAAO,CACLR,KAAMX,KAAKI,MAAMO,KAErB,GAmBK,SAASe,IACdzF,EAAiBiF,QACjB7D,EAAa6D,QACbtD,EAAiBsD,OACnB,CA4FO,SAASS,EAAuB7D,GACrC,GAAwB,oBAAbC,SAA0B,OAAO,EAG5C,MAKM6D,EAAkB9D,EAAW+D,cAGnC,GAR6B,CAC3B,MAAO,SAAU,QAAS,UAAW,OAAQ,SAC7C,WAAY,QAAS,SAAU,UAAW,UAMnBC,KAAKxD,GAAQsD,EAAgBpC,SAASlB,IAC7D,OAAO,EAIT,MAAMnC,EAAUb,IAChBa,EAAQmC,KAAO,QAAQR,IAGvB,MAAMiE,EAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAInDC,EAAeD,EAAaE,IAAI7D,GAAQjC,EAAQG,YAAY8B,GAAM3C,OAGxEU,EAAQmC,KAAO,yBACf,MAAM4D,EAAiBH,EAAaE,IAAI7D,GAAQjC,EAAQG,YAAY8B,GAAM3C,OAG1E,IAAI0G,EAAiB,EACrB,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAAalC,OAAQuC,IACnC3D,KAAKC,IAAIsD,EAAaI,GAAKF,EAAeE,IAAM,IAClDD,IAQJ,OAHqBA,GAD+B,GAAtBJ,EAAalC,MAK7C,CAtJwB,oBAAb9B,UAA4B,UAAWA,UAChDA,SAASC,MAAMqE,iBAAiB,cAAe,KAE7CX,MAsJJ,MAAMY,EAAiB,IAAIrC,IAKpB,SAASsC,EAA6BzE,GAC3C,GAAIwE,EAAeE,IAAI1E,GACrB,OAAOwE,EAAepG,IAAI4B,GAG5B,MAAMiB,EAAS4C,EAAuB7D,GAEtC,OADAwE,EAAexF,IAAIgB,EAAYiB,GACxBA,CACT"}
@@ -4,8 +4,8 @@ import { createCanvasElementFor } from '../util/misc/dom.mjs';
4
4
  // Global measurement context - reused for performance
5
5
  let measurementContext = null;
6
6
 
7
- /**
8
- * Get or create the shared measurement context
7
+ /**
8
+ * Get or create the shared measurement context
9
9
  */
10
10
  function getMeasurementContext() {
11
11
  if (!measurementContext) {
@@ -18,8 +18,8 @@ function getMeasurementContext() {
18
18
  return measurementContext;
19
19
  }
20
20
 
21
- /**
22
- * Measure a single grapheme
21
+ /**
22
+ * Measure a single grapheme
23
23
  */
24
24
  function measureGrapheme(grapheme, options, ctx) {
25
25
  // Check cache first
@@ -52,8 +52,8 @@ function measureGrapheme(grapheme, options, ctx) {
52
52
  return measurement;
53
53
  }
54
54
 
55
- /**
56
- * Measure a grapheme with kerning relative to previous character
55
+ /**
56
+ * Measure a grapheme with kerning relative to previous character
57
57
  */
58
58
  function measureGraphemeWithKerning(grapheme, previousGrapheme, options, ctx) {
59
59
  // Get individual measurement
@@ -94,9 +94,9 @@ function measureGraphemeWithKerning(grapheme, previousGrapheme, options, ctx) {
94
94
  };
95
95
  }
96
96
 
97
- /**
98
- * Get a representative character for font metrics measurement
99
- * Uses canvas to test which scripts the font actually supports
97
+ /**
98
+ * Get a representative character for font metrics measurement
99
+ * Uses canvas to test which scripts the font actually supports
100
100
  */
101
101
  function getRepresentativeCharacter(fontFamily) {
102
102
  const context = getMeasurementContext();
@@ -185,8 +185,8 @@ function getRepresentativeCharacter(fontFamily) {
185
185
  return 'M';
186
186
  }
187
187
 
188
- /**
189
- * Get font metrics for layout calculations
188
+ /**
189
+ * Get font metrics for layout calculations
190
190
  */
191
191
  function getFontMetrics(options) {
192
192
  var _metrics$fontBounding, _metrics$fontBounding2, _metrics$actualBoundi, _metrics$actualBoundi2;
@@ -222,8 +222,8 @@ function getFontMetrics(options) {
222
222
  return result;
223
223
  }
224
224
 
225
- /**
226
- * Apply font styling to canvas context
225
+ /**
226
+ * Apply font styling to canvas context
227
227
  */
228
228
  function applyFontStyle(ctx, options) {
229
229
  const fontDeclaration = getFontDeclaration(options);
@@ -240,8 +240,8 @@ function applyFontStyle(ctx, options) {
240
240
  ctx.textBaseline = 'alphabetic';
241
241
  }
242
242
 
243
- /**
244
- * Generate font declaration string
243
+ /**
244
+ * Generate font declaration string
245
245
  */
246
246
  function getFontDeclaration(options) {
247
247
  const {
@@ -260,8 +260,8 @@ function getFontDeclaration(options) {
260
260
  return `${fontStyle} ${fontWeight} ${fontSize}px ${normalizedFamily}`;
261
261
  }
262
262
 
263
- /**
264
- * LRU Cache implementation for measurements
263
+ /**
264
+ * LRU Cache implementation for measurements
265
265
  */
266
266
  class LRUCache {
267
267
  constructor() {
@@ -323,8 +323,8 @@ class LRUCache {
323
323
  }
324
324
  }
325
325
 
326
- /**
327
- * Advanced measurement cache with font-aware keys
326
+ /**
327
+ * Advanced measurement cache with font-aware keys
328
328
  */
329
329
  class MeasurementCache {
330
330
  constructor() {
@@ -351,8 +351,8 @@ class MeasurementCache {
351
351
  }
352
352
  }
353
353
 
354
- /**
355
- * Kerning cache for character pairs
354
+ /**
355
+ * Kerning cache for character pairs
356
356
  */
357
357
  class KerningCache {
358
358
  constructor() {
@@ -380,8 +380,8 @@ class KerningCache {
380
380
  }
381
381
  }
382
382
 
383
- /**
384
- * Font metrics cache
383
+ /**
384
+ * Font metrics cache
385
385
  */
386
386
  class FontMetricsCache {
387
387
  constructor() {
@@ -416,8 +416,8 @@ if (typeof document !== 'undefined' && 'fonts' in document) {
416
416
  });
417
417
  }
418
418
 
419
- /**
420
- * Clear all measurement caches
419
+ /**
420
+ * Clear all measurement caches
421
421
  */
422
422
  function clearAllCaches() {
423
423
  measurementCache.clear();
@@ -425,9 +425,9 @@ function clearAllCaches() {
425
425
  fontMetricsCache.clear();
426
426
  }
427
427
 
428
- /**
429
- * Detect if a font lacks English glyph support
430
- * These fonts should use browser-native measurement instead of Fabric's character-by-character measurement
428
+ /**
429
+ * Detect if a font lacks English glyph support
430
+ * These fonts should use browser-native measurement instead of Fabric's character-by-character measurement
431
431
  */
432
432
  function fontLacksEnglishGlyphs(fontFamily) {
433
433
  if (typeof document === 'undefined') return false;
@@ -471,8 +471,8 @@ function fontLacksEnglishGlyphs(fontFamily) {
471
471
  // Cache for font glyph detection results
472
472
  const fontGlyphCache = new Map();
473
473
 
474
- /**
475
- * Cached version of font glyph detection
474
+ /**
475
+ * Cached version of font glyph detection
476
476
  */
477
477
  function fontLacksEnglishGlyphsCached(fontFamily) {
478
478
  if (fontGlyphCache.has(fontFamily)) {
@@ -1 +1 @@
1
- {"version":3,"file":"measure.mjs","sources":["../../../src/text/measure.ts"],"sourcesContent":["/**\n * Advanced Text Measurement System\n *\n * Provides precise text measurement with caching, font metrics,\n * and DPI awareness for optimal performance and accuracy.\n */\n\nimport { createCanvasElementFor } from '../util/misc/dom';\n\nexport interface MeasurementOptions {\n fontFamily: string;\n fontSize: number;\n fontStyle: string;\n fontWeight: string | number;\n letterSpacing?: number;\n direction?: 'ltr' | 'rtl';\n}\n\nexport interface GraphemeMeasurement {\n width: number;\n height: number;\n ascent: number;\n descent: number;\n baseline: number;\n}\n\nexport interface KerningMeasurement extends GraphemeMeasurement {\n kernedWidth: number; // width accounting for kerning with previous char\n}\n\nexport interface FontMetrics {\n ascent: number;\n descent: number;\n lineHeight: number;\n baseline: string;\n fontBoundingBoxAscent?: number;\n fontBoundingBoxDescent?: number;\n actualBoundingBoxAscent?: number;\n actualBoundingBoxDescent?: number;\n}\n\n// Global measurement context - reused for performance\nlet measurementContext: CanvasRenderingContext2D | null = null;\n\n/**\n * Get or create the shared measurement context\n */\nfunction getMeasurementContext(): CanvasRenderingContext2D {\n if (!measurementContext) {\n const canvas = createCanvasElementFor({\n width: 0,\n height: 0,\n });\n measurementContext = canvas.getContext('2d')!;\n }\n return measurementContext;\n}\n\n/**\n * Measure a single grapheme\n */\nexport function measureGrapheme(\n grapheme: string,\n options: MeasurementOptions,\n ctx?: CanvasRenderingContext2D,\n): GraphemeMeasurement {\n // Check cache first\n const cached = measurementCache.get(grapheme, options);\n if (cached) {\n return cached;\n }\n\n // Use provided context or get global one\n const context = ctx || getMeasurementContext();\n\n // Set font properties\n applyFontStyle(context, options);\n\n // Measure the grapheme\n const metrics = context.measureText(grapheme);\n const fontMetrics = getFontMetrics(options);\n\n // Calculate comprehensive measurements\n const measurement: GraphemeMeasurement = {\n width: metrics.width,\n height: fontMetrics.lineHeight,\n ascent: fontMetrics.ascent,\n descent: fontMetrics.descent,\n baseline: fontMetrics.ascent,\n };\n\n // Cache the result\n measurementCache.set(grapheme, options, measurement);\n\n return measurement;\n}\n\n/**\n * Measure a grapheme with kerning relative to previous character\n */\nexport function measureGraphemeWithKerning(\n grapheme: string,\n previousGrapheme: string | undefined,\n options: MeasurementOptions,\n ctx?: CanvasRenderingContext2D,\n): KerningMeasurement {\n // Get individual measurement\n const individual = measureGrapheme(grapheme, options, ctx);\n\n // If no previous character, kerning width equals regular width\n if (!previousGrapheme) {\n return {\n ...individual,\n kernedWidth: individual.width,\n };\n }\n\n // Check kerning cache\n const kerningPair = `${previousGrapheme}${grapheme}`;\n const cachedKerning = kerningCache.get(kerningPair, options);\n if (cachedKerning) {\n return {\n ...individual,\n kernedWidth: cachedKerning,\n };\n }\n\n // Use provided context or get global one\n const context = ctx || getMeasurementContext();\n applyFontStyle(context, options);\n\n // Measure the pair\n const pairWidth = context.measureText(previousGrapheme + grapheme).width;\n const previousWidth = measureGrapheme(\n previousGrapheme,\n options,\n context,\n ).width;\n const kernedWidth = pairWidth - previousWidth;\n\n // Cache kerning result\n kerningCache.set(kerningPair, options, kernedWidth);\n\n return {\n ...individual,\n kernedWidth,\n };\n}\n\n/**\n * Get a representative character for font metrics measurement\n * Uses canvas to test which scripts the font actually supports\n */\nfunction getRepresentativeCharacter(fontFamily: string): string {\n const context = getMeasurementContext();\n \n // Wait for font to be ready if possible\n if (typeof document !== 'undefined' && 'fonts' in document) {\n try {\n // Check if font is ready, if not, use fallback immediately\n if (!document.fonts.check(`16px ${fontFamily}`)) {\n return 'M'; // Use safe fallback while font loads\n }\n } catch (e) {\n // Font check failed, use fallback\n return 'M';\n }\n }\n \n // Test characters for different scripts\n const testChars = [\n { char: 'م', script: 'Arabic' }, // Arabic\n { char: 'א', script: 'Hebrew' }, // Hebrew \n { char: 'अ', script: 'Devanagari' }, // Hindi/Sanskrit\n { char: 'ا', script: 'Urdu' }, // Urdu\n { char: 'ک', script: 'Persian' }, // Persian\n { char: 'த', script: 'Tamil' }, // Tamil\n { char: 'ก', script: 'Thai' }, // Thai\n { char: 'М', script: 'Cyrillic' }, // Cyrillic\n { char: 'Ω', script: 'Greek' }, // Greek\n { char: 'M', script: 'Latin' } // Latin (fallback)\n ];\n \n // Set the font\n context.font = `16px ${fontFamily}`;\n \n // Test each character to see which ones render properly\n // Use a more robust width check to avoid false positives\n const fallbackWidth = context.measureText('M').width;\n \n for (const test of testChars) {\n const metrics = context.measureText(test.char);\n \n // Character is valid if it has width and isn't just a fallback glyph\n if (metrics.width > 0 && Math.abs(metrics.width - fallbackWidth) > 0.1) {\n return test.char;\n }\n }\n \n // Fallback to Latin 'M'\n return 'M';\n}\n\n/**\n * Get font metrics for layout calculations\n */\nexport function getFontMetrics(options: MeasurementOptions): FontMetrics {\n const cacheKey = getFontDeclaration(options);\n const cached = fontMetricsCache.get(cacheKey);\n if (cached) {\n return cached;\n }\n\n const context = getMeasurementContext();\n applyFontStyle(context, options);\n\n // Use representative character based on font's primary script\n const sample = getRepresentativeCharacter(options.fontFamily);\n const metrics = context.measureText(sample);\n const fontSize = options.fontSize;\n\n // Calculate metrics with fallbacks\n const fontBoundingBoxAscent =\n metrics.fontBoundingBoxAscent ?? fontSize * 0.91;\n const fontBoundingBoxDescent =\n metrics.fontBoundingBoxDescent ?? fontSize * 0.21;\n const actualBoundingBoxAscent =\n metrics.actualBoundingBoxAscent ?? fontSize * 0.716;\n const actualBoundingBoxDescent = metrics.actualBoundingBoxDescent ?? 0;\n\n const result: FontMetrics = {\n ascent: fontBoundingBoxAscent,\n descent: fontBoundingBoxDescent,\n lineHeight: fontSize,\n baseline: 'alphabetic',\n fontBoundingBoxAscent,\n fontBoundingBoxDescent,\n actualBoundingBoxAscent,\n actualBoundingBoxDescent,\n };\n\n fontMetricsCache.set(cacheKey, result);\n return result;\n}\n\n/**\n * Apply font styling to canvas context\n */\nfunction applyFontStyle(\n ctx: CanvasRenderingContext2D,\n options: MeasurementOptions,\n): void {\n const fontDeclaration = getFontDeclaration(options);\n ctx.font = fontDeclaration;\n\n if (options.letterSpacing) {\n // Modern browsers support letterSpacing\n if ('letterSpacing' in ctx) {\n (ctx as any).letterSpacing = `${options.letterSpacing}px`;\n }\n }\n\n if (options.direction) {\n ctx.direction = options.direction;\n }\n\n ctx.textBaseline = 'alphabetic';\n}\n\n/**\n * Generate font declaration string\n */\nfunction getFontDeclaration(options: MeasurementOptions): string {\n const { fontStyle, fontWeight, fontSize, fontFamily } = options;\n\n // Normalize font family (add quotes if needed)\n let normalizedFamily =\n fontFamily.includes(' ') &&\n !fontFamily.includes('\"') &&\n !fontFamily.includes(\"'\")\n ? `\"${fontFamily}\"`\n : fontFamily;\n\n // Note: Font fallbacks are handled in the rendering phase only\n // to avoid affecting measurement calculations for text wrapping\n\n return `${fontStyle} ${fontWeight} ${fontSize}px ${normalizedFamily}`;\n}\n\n/**\n * LRU Cache implementation for measurements\n */\nclass LRUCache<T> {\n private cache = new Map<string, { value: T; timestamp: number }>();\n private maxSize: number;\n private hits = 0;\n private misses = 0;\n\n constructor(maxSize = 1000) {\n this.maxSize = maxSize;\n }\n\n get(key: string): T | undefined {\n const entry = this.cache.get(key);\n if (entry) {\n // Update timestamp for LRU\n entry.timestamp = Date.now();\n this.hits++;\n return entry.value;\n }\n this.misses++;\n return undefined;\n }\n\n set(key: string, value: T): void {\n // Remove oldest entries if at capacity\n if (this.cache.size >= this.maxSize) {\n const oldestKey = this.findOldestKey();\n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n\n this.cache.set(key, {\n value,\n timestamp: Date.now(),\n });\n }\n\n private findOldestKey(): string | undefined {\n let oldestKey: string | undefined;\n let oldestTime = Infinity;\n\n for (const [key, entry] of this.cache.entries()) {\n if (entry.timestamp < oldestTime) {\n oldestTime = entry.timestamp;\n oldestKey = key;\n }\n }\n\n return oldestKey;\n }\n\n clear(): void {\n this.cache.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n getStats(): { size: number; hitRate: number; hits: number; misses: number } {\n const total = this.hits + this.misses;\n return {\n size: this.cache.size,\n hitRate: total > 0 ? this.hits / total : 0,\n hits: this.hits,\n misses: this.misses,\n };\n }\n}\n\n/**\n * Advanced measurement cache with font-aware keys\n */\nexport class MeasurementCache {\n private cache = new LRUCache<GraphemeMeasurement>(1000);\n\n getCacheKey(grapheme: string, options: MeasurementOptions): string {\n const fontDecl = getFontDeclaration(options);\n const letterSpacing = options.letterSpacing || 0;\n return `${fontDecl}|${grapheme}|${letterSpacing}`;\n }\n\n get(\n grapheme: string,\n options: MeasurementOptions,\n ): GraphemeMeasurement | undefined {\n const key = this.getCacheKey(grapheme, options);\n return this.cache.get(key);\n }\n\n set(\n grapheme: string,\n options: MeasurementOptions,\n measurement: GraphemeMeasurement,\n ): void {\n const key = this.getCacheKey(grapheme, options);\n this.cache.set(key, measurement);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n getStats() {\n return this.cache.getStats();\n }\n}\n\n/**\n * Kerning cache for character pairs\n */\nclass KerningCache {\n private cache = new LRUCache<number>(5000); // More entries for pairs\n\n getCacheKey(pair: string, options: MeasurementOptions): string {\n const fontDecl = getFontDeclaration(options);\n return `${fontDecl}|${pair}`;\n }\n\n get(pair: string, options: MeasurementOptions): number | undefined {\n const key = this.getCacheKey(pair, options);\n return this.cache.get(key);\n }\n\n set(pair: string, options: MeasurementOptions, kerning: number): void {\n const key = this.getCacheKey(pair, options);\n this.cache.set(key, kerning);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n getStats() {\n return this.cache.getStats();\n }\n}\n\n/**\n * Font metrics cache\n */\nclass FontMetricsCache {\n private cache = new Map<string, FontMetrics>();\n\n get(fontDeclaration: string): FontMetrics | undefined {\n return this.cache.get(fontDeclaration);\n }\n\n set(fontDeclaration: string, metrics: FontMetrics): void {\n this.cache.set(fontDeclaration, metrics);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n getStats() {\n return {\n size: this.cache.size,\n };\n }\n}\n\n// Global cache instances\nexport const measurementCache = new MeasurementCache();\nexport const kerningCache = new KerningCache();\nexport const fontMetricsCache = new FontMetricsCache();\n\n// Set up font loading listener to clear caches when fonts change\nif (typeof document !== 'undefined' && 'fonts' in document) {\n document.fonts.addEventListener('loadingdone', () => {\n // Clear all caches when fonts finish loading\n clearAllCaches();\n });\n}\n\n/**\n * Clear all measurement caches\n */\nexport function clearAllCaches(): void {\n measurementCache.clear();\n kerningCache.clear();\n fontMetricsCache.clear();\n}\n\n/**\n * Get combined cache statistics\n */\nexport function getCacheStats() {\n return {\n measurement: measurementCache.getStats(),\n kerning: kerningCache.getStats(),\n fontMetrics: fontMetricsCache.getStats(),\n };\n}\n\n/**\n * Batch measure multiple graphemes efficiently\n */\nexport function batchMeasureGraphemes(\n graphemes: string[],\n options: MeasurementOptions,\n ctx?: CanvasRenderingContext2D,\n): GraphemeMeasurement[] {\n const context = ctx || getMeasurementContext();\n applyFontStyle(context, options);\n\n // Separate cached and uncached measurements\n const results: GraphemeMeasurement[] = new Array(graphemes.length);\n const uncachedIndices: number[] = [];\n\n // Check cache for all graphemes\n graphemes.forEach((grapheme, index) => {\n const cached = measurementCache.get(grapheme, options);\n if (cached) {\n results[index] = cached;\n } else {\n uncachedIndices.push(index);\n }\n });\n\n // Measure uncached graphemes\n const fontMetrics = getFontMetrics(options);\n uncachedIndices.forEach((index) => {\n const grapheme = graphemes[index];\n const metrics = context.measureText(grapheme);\n\n const measurement: GraphemeMeasurement = {\n width: metrics.width,\n height: fontMetrics.lineHeight,\n ascent: fontMetrics.ascent,\n descent: fontMetrics.descent,\n baseline: fontMetrics.ascent,\n };\n\n measurementCache.set(grapheme, options, measurement);\n results[index] = measurement;\n });\n\n return results;\n}\n\n/**\n * Estimate text width without full layout (for performance)\n */\nexport function estimateTextWidth(\n text: string,\n options: MeasurementOptions,\n): number {\n // Use average character width for estimation\n const avgChar = 'n'; // Representative character\n const avgMeasurement = measureGrapheme(avgChar, options);\n const letterSpacing = options.letterSpacing || 0;\n\n return text.length * (avgMeasurement.width + letterSpacing);\n}\n\n/**\n * Check if font is loaded and ready for measurement\n */\nexport function isFontReady(fontFamily: string): boolean {\n if (typeof document === 'undefined') return true;\n\n if ('fonts' in document) {\n return document.fonts.check(`16px ${fontFamily}`);\n }\n\n // Fallback - assume font is ready\n return true;\n}\n\n/**\n * Detect if a font lacks English glyph support\n * These fonts should use browser-native measurement instead of Fabric's character-by-character measurement\n */\nexport function fontLacksEnglishGlyphs(fontFamily: string): boolean {\n if (typeof document === 'undefined') return false;\n \n // Known fonts that lack English glyphs\n const knownNonEnglishFonts = [\n 'stv', 'arabic', 'naskh', 'thuluth', 'kufi', 'diwani',\n 'nastaliq', 'kufic', 'hijazi', 'madinah', 'makkah'\n ];\n \n const lowerFontFamily = fontFamily.toLowerCase();\n \n // Check known list first\n if (knownNonEnglishFonts.some(font => lowerFontFamily.includes(font))) {\n return true;\n }\n \n // Dynamic glyph support detection\n const context = getMeasurementContext();\n context.font = `16px ${fontFamily}`;\n \n // Test English characters\n const englishChars = ['A', 'B', 'C', 'a', 'b', 'c', 'M', 'W'];\n const fallbackFont = 'Arial, sans-serif';\n \n // Measure with target font\n const targetWidths = englishChars.map(char => context.measureText(char).width);\n \n // Measure with fallback font\n context.font = `16px ${fallbackFont}`;\n const fallbackWidths = englishChars.map(char => context.measureText(char).width);\n \n // If most measurements are identical, the font likely doesn't have English glyphs\n let identicalCount = 0;\n for (let i = 0; i < englishChars.length; i++) {\n if (Math.abs(targetWidths[i] - fallbackWidths[i]) < 0.5) {\n identicalCount++;\n }\n }\n \n const lacksSupportThreshold = englishChars.length * 0.7; // 70% identical = lacks support\n const lacksSupport = identicalCount >= lacksSupportThreshold;\n \n \n return lacksSupport;\n}\n\n// Cache for font glyph detection results\nconst fontGlyphCache = new Map<string, boolean>();\n\n/**\n * Cached version of font glyph detection\n */\nexport function fontLacksEnglishGlyphsCached(fontFamily: string): boolean {\n if (fontGlyphCache.has(fontFamily)) {\n return fontGlyphCache.get(fontFamily)!;\n }\n \n const result = fontLacksEnglishGlyphs(fontFamily);\n fontGlyphCache.set(fontFamily, result);\n return result;\n}\n"],"names":["measurementContext","getMeasurementContext","canvas","createCanvasElementFor","width","height","getContext","measureGrapheme","grapheme","options","ctx","cached","measurementCache","get","context","applyFontStyle","metrics","measureText","fontMetrics","getFontMetrics","measurement","lineHeight","ascent","descent","baseline","set","measureGraphemeWithKerning","previousGrapheme","individual","kernedWidth","kerningPair","cachedKerning","kerningCache","pairWidth","previousWidth","getRepresentativeCharacter","fontFamily","document","fonts","check","e","testChars","char","script","font","fallbackWidth","test","Math","abs","_metrics$fontBounding","_metrics$fontBounding2","_metrics$actualBoundi","_metrics$actualBoundi2","cacheKey","getFontDeclaration","fontMetricsCache","sample","fontSize","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","result","fontDeclaration","letterSpacing","direction","textBaseline","fontStyle","fontWeight","normalizedFamily","includes","LRUCache","constructor","maxSize","arguments","length","undefined","_defineProperty","Map","key","entry","cache","timestamp","Date","now","hits","value","misses","size","oldestKey","findOldestKey","delete","oldestTime","Infinity","entries","clear","getStats","total","hitRate","MeasurementCache","getCacheKey","fontDecl","KerningCache","pair","kerning","FontMetricsCache","addEventListener","clearAllCaches","fontLacksEnglishGlyphs","knownNonEnglishFonts","lowerFontFamily","toLowerCase","some","englishChars","fallbackFont","targetWidths","map","fallbackWidths","identicalCount","i","lacksSupportThreshold","lacksSupport","fontGlyphCache","fontLacksEnglishGlyphsCached","has"],"mappings":"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"}
1
+ {"version":3,"file":"measure.mjs","sources":["../../../src/text/measure.ts"],"sourcesContent":["/**\r\n * Advanced Text Measurement System\r\n *\r\n * Provides precise text measurement with caching, font metrics,\r\n * and DPI awareness for optimal performance and accuracy.\r\n */\r\n\r\nimport { createCanvasElementFor } from '../util/misc/dom';\r\n\r\nexport interface MeasurementOptions {\r\n fontFamily: string;\r\n fontSize: number;\r\n fontStyle: string;\r\n fontWeight: string | number;\r\n letterSpacing?: number;\r\n direction?: 'ltr' | 'rtl';\r\n}\r\n\r\nexport interface GraphemeMeasurement {\r\n width: number;\r\n height: number;\r\n ascent: number;\r\n descent: number;\r\n baseline: number;\r\n}\r\n\r\nexport interface KerningMeasurement extends GraphemeMeasurement {\r\n kernedWidth: number; // width accounting for kerning with previous char\r\n}\r\n\r\nexport interface FontMetrics {\r\n ascent: number;\r\n descent: number;\r\n lineHeight: number;\r\n baseline: string;\r\n fontBoundingBoxAscent?: number;\r\n fontBoundingBoxDescent?: number;\r\n actualBoundingBoxAscent?: number;\r\n actualBoundingBoxDescent?: number;\r\n}\r\n\r\n// Global measurement context - reused for performance\r\nlet measurementContext: CanvasRenderingContext2D | null = null;\r\n\r\n/**\r\n * Get or create the shared measurement context\r\n */\r\nfunction getMeasurementContext(): CanvasRenderingContext2D {\r\n if (!measurementContext) {\r\n const canvas = createCanvasElementFor({\r\n width: 0,\r\n height: 0,\r\n });\r\n measurementContext = canvas.getContext('2d')!;\r\n }\r\n return measurementContext;\r\n}\r\n\r\n/**\r\n * Measure a single grapheme\r\n */\r\nexport function measureGrapheme(\r\n grapheme: string,\r\n options: MeasurementOptions,\r\n ctx?: CanvasRenderingContext2D,\r\n): GraphemeMeasurement {\r\n // Check cache first\r\n const cached = measurementCache.get(grapheme, options);\r\n if (cached) {\r\n return cached;\r\n }\r\n\r\n // Use provided context or get global one\r\n const context = ctx || getMeasurementContext();\r\n\r\n // Set font properties\r\n applyFontStyle(context, options);\r\n\r\n // Measure the grapheme\r\n const metrics = context.measureText(grapheme);\r\n const fontMetrics = getFontMetrics(options);\r\n\r\n // Calculate comprehensive measurements\r\n const measurement: GraphemeMeasurement = {\r\n width: metrics.width,\r\n height: fontMetrics.lineHeight,\r\n ascent: fontMetrics.ascent,\r\n descent: fontMetrics.descent,\r\n baseline: fontMetrics.ascent,\r\n };\r\n\r\n // Cache the result\r\n measurementCache.set(grapheme, options, measurement);\r\n\r\n return measurement;\r\n}\r\n\r\n/**\r\n * Measure a grapheme with kerning relative to previous character\r\n */\r\nexport function measureGraphemeWithKerning(\r\n grapheme: string,\r\n previousGrapheme: string | undefined,\r\n options: MeasurementOptions,\r\n ctx?: CanvasRenderingContext2D,\r\n): KerningMeasurement {\r\n // Get individual measurement\r\n const individual = measureGrapheme(grapheme, options, ctx);\r\n\r\n // If no previous character, kerning width equals regular width\r\n if (!previousGrapheme) {\r\n return {\r\n ...individual,\r\n kernedWidth: individual.width,\r\n };\r\n }\r\n\r\n // Check kerning cache\r\n const kerningPair = `${previousGrapheme}${grapheme}`;\r\n const cachedKerning = kerningCache.get(kerningPair, options);\r\n if (cachedKerning) {\r\n return {\r\n ...individual,\r\n kernedWidth: cachedKerning,\r\n };\r\n }\r\n\r\n // Use provided context or get global one\r\n const context = ctx || getMeasurementContext();\r\n applyFontStyle(context, options);\r\n\r\n // Measure the pair\r\n const pairWidth = context.measureText(previousGrapheme + grapheme).width;\r\n const previousWidth = measureGrapheme(\r\n previousGrapheme,\r\n options,\r\n context,\r\n ).width;\r\n const kernedWidth = pairWidth - previousWidth;\r\n\r\n // Cache kerning result\r\n kerningCache.set(kerningPair, options, kernedWidth);\r\n\r\n return {\r\n ...individual,\r\n kernedWidth,\r\n };\r\n}\r\n\r\n/**\r\n * Get a representative character for font metrics measurement\r\n * Uses canvas to test which scripts the font actually supports\r\n */\r\nfunction getRepresentativeCharacter(fontFamily: string): string {\r\n const context = getMeasurementContext();\r\n \r\n // Wait for font to be ready if possible\r\n if (typeof document !== 'undefined' && 'fonts' in document) {\r\n try {\r\n // Check if font is ready, if not, use fallback immediately\r\n if (!document.fonts.check(`16px ${fontFamily}`)) {\r\n return 'M'; // Use safe fallback while font loads\r\n }\r\n } catch (e) {\r\n // Font check failed, use fallback\r\n return 'M';\r\n }\r\n }\r\n \r\n // Test characters for different scripts\r\n const testChars = [\r\n { char: 'م', script: 'Arabic' }, // Arabic\r\n { char: 'א', script: 'Hebrew' }, // Hebrew \r\n { char: 'अ', script: 'Devanagari' }, // Hindi/Sanskrit\r\n { char: 'ا', script: 'Urdu' }, // Urdu\r\n { char: 'ک', script: 'Persian' }, // Persian\r\n { char: 'த', script: 'Tamil' }, // Tamil\r\n { char: 'ก', script: 'Thai' }, // Thai\r\n { char: 'М', script: 'Cyrillic' }, // Cyrillic\r\n { char: 'Ω', script: 'Greek' }, // Greek\r\n { char: 'M', script: 'Latin' } // Latin (fallback)\r\n ];\r\n \r\n // Set the font\r\n context.font = `16px ${fontFamily}`;\r\n \r\n // Test each character to see which ones render properly\r\n // Use a more robust width check to avoid false positives\r\n const fallbackWidth = context.measureText('M').width;\r\n \r\n for (const test of testChars) {\r\n const metrics = context.measureText(test.char);\r\n \r\n // Character is valid if it has width and isn't just a fallback glyph\r\n if (metrics.width > 0 && Math.abs(metrics.width - fallbackWidth) > 0.1) {\r\n return test.char;\r\n }\r\n }\r\n \r\n // Fallback to Latin 'M'\r\n return 'M';\r\n}\r\n\r\n/**\r\n * Get font metrics for layout calculations\r\n */\r\nexport function getFontMetrics(options: MeasurementOptions): FontMetrics {\r\n const cacheKey = getFontDeclaration(options);\r\n const cached = fontMetricsCache.get(cacheKey);\r\n if (cached) {\r\n return cached;\r\n }\r\n\r\n const context = getMeasurementContext();\r\n applyFontStyle(context, options);\r\n\r\n // Use representative character based on font's primary script\r\n const sample = getRepresentativeCharacter(options.fontFamily);\r\n const metrics = context.measureText(sample);\r\n const fontSize = options.fontSize;\r\n\r\n // Calculate metrics with fallbacks\r\n const fontBoundingBoxAscent =\r\n metrics.fontBoundingBoxAscent ?? fontSize * 0.91;\r\n const fontBoundingBoxDescent =\r\n metrics.fontBoundingBoxDescent ?? fontSize * 0.21;\r\n const actualBoundingBoxAscent =\r\n metrics.actualBoundingBoxAscent ?? fontSize * 0.716;\r\n const actualBoundingBoxDescent = metrics.actualBoundingBoxDescent ?? 0;\r\n\r\n const result: FontMetrics = {\r\n ascent: fontBoundingBoxAscent,\r\n descent: fontBoundingBoxDescent,\r\n lineHeight: fontSize,\r\n baseline: 'alphabetic',\r\n fontBoundingBoxAscent,\r\n fontBoundingBoxDescent,\r\n actualBoundingBoxAscent,\r\n actualBoundingBoxDescent,\r\n };\r\n\r\n fontMetricsCache.set(cacheKey, result);\r\n return result;\r\n}\r\n\r\n/**\r\n * Apply font styling to canvas context\r\n */\r\nfunction applyFontStyle(\r\n ctx: CanvasRenderingContext2D,\r\n options: MeasurementOptions,\r\n): void {\r\n const fontDeclaration = getFontDeclaration(options);\r\n ctx.font = fontDeclaration;\r\n\r\n if (options.letterSpacing) {\r\n // Modern browsers support letterSpacing\r\n if ('letterSpacing' in ctx) {\r\n (ctx as any).letterSpacing = `${options.letterSpacing}px`;\r\n }\r\n }\r\n\r\n if (options.direction) {\r\n ctx.direction = options.direction;\r\n }\r\n\r\n ctx.textBaseline = 'alphabetic';\r\n}\r\n\r\n/**\r\n * Generate font declaration string\r\n */\r\nfunction getFontDeclaration(options: MeasurementOptions): string {\r\n const { fontStyle, fontWeight, fontSize, fontFamily } = options;\r\n\r\n // Normalize font family (add quotes if needed)\r\n let normalizedFamily =\r\n fontFamily.includes(' ') &&\r\n !fontFamily.includes('\"') &&\r\n !fontFamily.includes(\"'\")\r\n ? `\"${fontFamily}\"`\r\n : fontFamily;\r\n\r\n // Note: Font fallbacks are handled in the rendering phase only\r\n // to avoid affecting measurement calculations for text wrapping\r\n\r\n return `${fontStyle} ${fontWeight} ${fontSize}px ${normalizedFamily}`;\r\n}\r\n\r\n/**\r\n * LRU Cache implementation for measurements\r\n */\r\nclass LRUCache<T> {\r\n private cache = new Map<string, { value: T; timestamp: number }>();\r\n private maxSize: number;\r\n private hits = 0;\r\n private misses = 0;\r\n\r\n constructor(maxSize = 1000) {\r\n this.maxSize = maxSize;\r\n }\r\n\r\n get(key: string): T | undefined {\r\n const entry = this.cache.get(key);\r\n if (entry) {\r\n // Update timestamp for LRU\r\n entry.timestamp = Date.now();\r\n this.hits++;\r\n return entry.value;\r\n }\r\n this.misses++;\r\n return undefined;\r\n }\r\n\r\n set(key: string, value: T): void {\r\n // Remove oldest entries if at capacity\r\n if (this.cache.size >= this.maxSize) {\r\n const oldestKey = this.findOldestKey();\r\n if (oldestKey) {\r\n this.cache.delete(oldestKey);\r\n }\r\n }\r\n\r\n this.cache.set(key, {\r\n value,\r\n timestamp: Date.now(),\r\n });\r\n }\r\n\r\n private findOldestKey(): string | undefined {\r\n let oldestKey: string | undefined;\r\n let oldestTime = Infinity;\r\n\r\n for (const [key, entry] of this.cache.entries()) {\r\n if (entry.timestamp < oldestTime) {\r\n oldestTime = entry.timestamp;\r\n oldestKey = key;\r\n }\r\n }\r\n\r\n return oldestKey;\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n this.hits = 0;\r\n this.misses = 0;\r\n }\r\n\r\n getStats(): { size: number; hitRate: number; hits: number; misses: number } {\r\n const total = this.hits + this.misses;\r\n return {\r\n size: this.cache.size,\r\n hitRate: total > 0 ? this.hits / total : 0,\r\n hits: this.hits,\r\n misses: this.misses,\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Advanced measurement cache with font-aware keys\r\n */\r\nexport class MeasurementCache {\r\n private cache = new LRUCache<GraphemeMeasurement>(1000);\r\n\r\n getCacheKey(grapheme: string, options: MeasurementOptions): string {\r\n const fontDecl = getFontDeclaration(options);\r\n const letterSpacing = options.letterSpacing || 0;\r\n return `${fontDecl}|${grapheme}|${letterSpacing}`;\r\n }\r\n\r\n get(\r\n grapheme: string,\r\n options: MeasurementOptions,\r\n ): GraphemeMeasurement | undefined {\r\n const key = this.getCacheKey(grapheme, options);\r\n return this.cache.get(key);\r\n }\r\n\r\n set(\r\n grapheme: string,\r\n options: MeasurementOptions,\r\n measurement: GraphemeMeasurement,\r\n ): void {\r\n const key = this.getCacheKey(grapheme, options);\r\n this.cache.set(key, measurement);\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n\r\n getStats() {\r\n return this.cache.getStats();\r\n }\r\n}\r\n\r\n/**\r\n * Kerning cache for character pairs\r\n */\r\nclass KerningCache {\r\n private cache = new LRUCache<number>(5000); // More entries for pairs\r\n\r\n getCacheKey(pair: string, options: MeasurementOptions): string {\r\n const fontDecl = getFontDeclaration(options);\r\n return `${fontDecl}|${pair}`;\r\n }\r\n\r\n get(pair: string, options: MeasurementOptions): number | undefined {\r\n const key = this.getCacheKey(pair, options);\r\n return this.cache.get(key);\r\n }\r\n\r\n set(pair: string, options: MeasurementOptions, kerning: number): void {\r\n const key = this.getCacheKey(pair, options);\r\n this.cache.set(key, kerning);\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n\r\n getStats() {\r\n return this.cache.getStats();\r\n }\r\n}\r\n\r\n/**\r\n * Font metrics cache\r\n */\r\nclass FontMetricsCache {\r\n private cache = new Map<string, FontMetrics>();\r\n\r\n get(fontDeclaration: string): FontMetrics | undefined {\r\n return this.cache.get(fontDeclaration);\r\n }\r\n\r\n set(fontDeclaration: string, metrics: FontMetrics): void {\r\n this.cache.set(fontDeclaration, metrics);\r\n }\r\n\r\n clear(): void {\r\n this.cache.clear();\r\n }\r\n\r\n getStats() {\r\n return {\r\n size: this.cache.size,\r\n };\r\n }\r\n}\r\n\r\n// Global cache instances\r\nexport const measurementCache = new MeasurementCache();\r\nexport const kerningCache = new KerningCache();\r\nexport const fontMetricsCache = new FontMetricsCache();\r\n\r\n// Set up font loading listener to clear caches when fonts change\r\nif (typeof document !== 'undefined' && 'fonts' in document) {\r\n document.fonts.addEventListener('loadingdone', () => {\r\n // Clear all caches when fonts finish loading\r\n clearAllCaches();\r\n });\r\n}\r\n\r\n/**\r\n * Clear all measurement caches\r\n */\r\nexport function clearAllCaches(): void {\r\n measurementCache.clear();\r\n kerningCache.clear();\r\n fontMetricsCache.clear();\r\n}\r\n\r\n/**\r\n * Get combined cache statistics\r\n */\r\nexport function getCacheStats() {\r\n return {\r\n measurement: measurementCache.getStats(),\r\n kerning: kerningCache.getStats(),\r\n fontMetrics: fontMetricsCache.getStats(),\r\n };\r\n}\r\n\r\n/**\r\n * Batch measure multiple graphemes efficiently\r\n */\r\nexport function batchMeasureGraphemes(\r\n graphemes: string[],\r\n options: MeasurementOptions,\r\n ctx?: CanvasRenderingContext2D,\r\n): GraphemeMeasurement[] {\r\n const context = ctx || getMeasurementContext();\r\n applyFontStyle(context, options);\r\n\r\n // Separate cached and uncached measurements\r\n const results: GraphemeMeasurement[] = new Array(graphemes.length);\r\n const uncachedIndices: number[] = [];\r\n\r\n // Check cache for all graphemes\r\n graphemes.forEach((grapheme, index) => {\r\n const cached = measurementCache.get(grapheme, options);\r\n if (cached) {\r\n results[index] = cached;\r\n } else {\r\n uncachedIndices.push(index);\r\n }\r\n });\r\n\r\n // Measure uncached graphemes\r\n const fontMetrics = getFontMetrics(options);\r\n uncachedIndices.forEach((index) => {\r\n const grapheme = graphemes[index];\r\n const metrics = context.measureText(grapheme);\r\n\r\n const measurement: GraphemeMeasurement = {\r\n width: metrics.width,\r\n height: fontMetrics.lineHeight,\r\n ascent: fontMetrics.ascent,\r\n descent: fontMetrics.descent,\r\n baseline: fontMetrics.ascent,\r\n };\r\n\r\n measurementCache.set(grapheme, options, measurement);\r\n results[index] = measurement;\r\n });\r\n\r\n return results;\r\n}\r\n\r\n/**\r\n * Estimate text width without full layout (for performance)\r\n */\r\nexport function estimateTextWidth(\r\n text: string,\r\n options: MeasurementOptions,\r\n): number {\r\n // Use average character width for estimation\r\n const avgChar = 'n'; // Representative character\r\n const avgMeasurement = measureGrapheme(avgChar, options);\r\n const letterSpacing = options.letterSpacing || 0;\r\n\r\n return text.length * (avgMeasurement.width + letterSpacing);\r\n}\r\n\r\n/**\r\n * Check if font is loaded and ready for measurement\r\n */\r\nexport function isFontReady(fontFamily: string): boolean {\r\n if (typeof document === 'undefined') return true;\r\n\r\n if ('fonts' in document) {\r\n return document.fonts.check(`16px ${fontFamily}`);\r\n }\r\n\r\n // Fallback - assume font is ready\r\n return true;\r\n}\r\n\r\n/**\r\n * Detect if a font lacks English glyph support\r\n * These fonts should use browser-native measurement instead of Fabric's character-by-character measurement\r\n */\r\nexport function fontLacksEnglishGlyphs(fontFamily: string): boolean {\r\n if (typeof document === 'undefined') return false;\r\n \r\n // Known fonts that lack English glyphs\r\n const knownNonEnglishFonts = [\r\n 'stv', 'arabic', 'naskh', 'thuluth', 'kufi', 'diwani',\r\n 'nastaliq', 'kufic', 'hijazi', 'madinah', 'makkah'\r\n ];\r\n \r\n const lowerFontFamily = fontFamily.toLowerCase();\r\n \r\n // Check known list first\r\n if (knownNonEnglishFonts.some(font => lowerFontFamily.includes(font))) {\r\n return true;\r\n }\r\n \r\n // Dynamic glyph support detection\r\n const context = getMeasurementContext();\r\n context.font = `16px ${fontFamily}`;\r\n \r\n // Test English characters\r\n const englishChars = ['A', 'B', 'C', 'a', 'b', 'c', 'M', 'W'];\r\n const fallbackFont = 'Arial, sans-serif';\r\n \r\n // Measure with target font\r\n const targetWidths = englishChars.map(char => context.measureText(char).width);\r\n \r\n // Measure with fallback font\r\n context.font = `16px ${fallbackFont}`;\r\n const fallbackWidths = englishChars.map(char => context.measureText(char).width);\r\n \r\n // If most measurements are identical, the font likely doesn't have English glyphs\r\n let identicalCount = 0;\r\n for (let i = 0; i < englishChars.length; i++) {\r\n if (Math.abs(targetWidths[i] - fallbackWidths[i]) < 0.5) {\r\n identicalCount++;\r\n }\r\n }\r\n \r\n const lacksSupportThreshold = englishChars.length * 0.7; // 70% identical = lacks support\r\n const lacksSupport = identicalCount >= lacksSupportThreshold;\r\n \r\n \r\n return lacksSupport;\r\n}\r\n\r\n// Cache for font glyph detection results\r\nconst fontGlyphCache = new Map<string, boolean>();\r\n\r\n/**\r\n * Cached version of font glyph detection\r\n */\r\nexport function fontLacksEnglishGlyphsCached(fontFamily: string): boolean {\r\n if (fontGlyphCache.has(fontFamily)) {\r\n return fontGlyphCache.get(fontFamily)!;\r\n }\r\n \r\n const result = fontLacksEnglishGlyphs(fontFamily);\r\n fontGlyphCache.set(fontFamily, result);\r\n return result;\r\n}\r\n"],"names":["measurementContext","getMeasurementContext","canvas","createCanvasElementFor","width","height","getContext","measureGrapheme","grapheme","options","ctx","cached","measurementCache","get","context","applyFontStyle","metrics","measureText","fontMetrics","getFontMetrics","measurement","lineHeight","ascent","descent","baseline","set","measureGraphemeWithKerning","previousGrapheme","individual","kernedWidth","kerningPair","cachedKerning","kerningCache","pairWidth","previousWidth","getRepresentativeCharacter","fontFamily","document","fonts","check","e","testChars","char","script","font","fallbackWidth","test","Math","abs","_metrics$fontBounding","_metrics$fontBounding2","_metrics$actualBoundi","_metrics$actualBoundi2","cacheKey","getFontDeclaration","fontMetricsCache","sample","fontSize","fontBoundingBoxAscent","fontBoundingBoxDescent","actualBoundingBoxAscent","actualBoundingBoxDescent","result","fontDeclaration","letterSpacing","direction","textBaseline","fontStyle","fontWeight","normalizedFamily","includes","LRUCache","constructor","maxSize","arguments","length","undefined","_defineProperty","Map","key","entry","cache","timestamp","Date","now","hits","value","misses","size","oldestKey","findOldestKey","delete","oldestTime","Infinity","entries","clear","getStats","total","hitRate","MeasurementCache","getCacheKey","fontDecl","KerningCache","pair","kerning","FontMetricsCache","addEventListener","clearAllCaches","fontLacksEnglishGlyphs","knownNonEnglishFonts","lowerFontFamily","toLowerCase","some","englishChars","fallbackFont","targetWidths","map","fallbackWidths","identicalCount","i","lacksSupportThreshold","lacksSupport","fontGlyphCache","fontLacksEnglishGlyphsCached","has"],"mappings":"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"}
File without changes
File without changes