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

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 (2509) 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/CHANGELOG.md +0 -0
  10. package/CODE_OF_CONDUCT.md +0 -0
  11. package/CONTRIBUTING.md +0 -0
  12. package/LICENSE +0 -0
  13. package/OVERLAY_EDITOR_MIGRATION.md +0 -0
  14. package/README.md +0 -0
  15. package/SECURITY.md +0 -0
  16. package/debug/konva/CHANGELOG.md +0 -0
  17. package/debug/konva/LICENSE +0 -0
  18. package/debug/konva/README.md +0 -0
  19. package/debug/konva/gulpfile.mjs +0 -0
  20. package/debug/konva/package.json +0 -0
  21. package/debug/konva/release.sh +0 -0
  22. package/debug/konva/resources/doc-includes/ContainerParams.txt +0 -0
  23. package/debug/konva/resources/doc-includes/NodeParams.txt +0 -0
  24. package/debug/konva/resources/doc-includes/ShapeParams.txt +0 -0
  25. package/debug/konva/resources/jsdoc.conf.json +0 -0
  26. package/debug/konva/rollup.config.mjs +0 -0
  27. package/debug/konva/src/Animation.ts +0 -0
  28. package/debug/konva/src/BezierFunctions.ts +0 -0
  29. package/debug/konva/src/Canvas.ts +0 -0
  30. package/debug/konva/src/Container.ts +0 -0
  31. package/debug/konva/src/Context.ts +0 -0
  32. package/debug/konva/src/Core.ts +0 -0
  33. package/debug/konva/src/DragAndDrop.ts +0 -0
  34. package/debug/konva/src/Factory.ts +0 -0
  35. package/debug/konva/src/FastLayer.ts +0 -0
  36. package/debug/konva/src/Global.ts +0 -0
  37. package/debug/konva/src/Group.ts +0 -0
  38. package/debug/konva/src/Layer.ts +0 -0
  39. package/debug/konva/src/Node.ts +0 -0
  40. package/debug/konva/src/PointerEvents.ts +0 -0
  41. package/debug/konva/src/Shape.ts +0 -0
  42. package/debug/konva/src/Stage.ts +0 -0
  43. package/debug/konva/src/Tween.ts +0 -0
  44. package/debug/konva/src/Util.ts +0 -0
  45. package/debug/konva/src/Validators.ts +0 -0
  46. package/debug/konva/src/_CoreInternals.ts +0 -0
  47. package/debug/konva/src/_FullInternals.ts +0 -0
  48. package/debug/konva/src/canvas-backend.ts +0 -0
  49. package/debug/konva/src/filters/Blur.ts +0 -0
  50. package/debug/konva/src/filters/Brighten.ts +0 -0
  51. package/debug/konva/src/filters/Brightness.ts +0 -0
  52. package/debug/konva/src/filters/Contrast.ts +0 -0
  53. package/debug/konva/src/filters/Emboss.ts +0 -0
  54. package/debug/konva/src/filters/Enhance.ts +0 -0
  55. package/debug/konva/src/filters/Grayscale.ts +0 -0
  56. package/debug/konva/src/filters/HSL.ts +0 -0
  57. package/debug/konva/src/filters/HSV.ts +0 -0
  58. package/debug/konva/src/filters/Invert.ts +0 -0
  59. package/debug/konva/src/filters/Kaleidoscope.ts +0 -0
  60. package/debug/konva/src/filters/Mask.ts +0 -0
  61. package/debug/konva/src/filters/Noise.ts +0 -0
  62. package/debug/konva/src/filters/Pixelate.ts +0 -0
  63. package/debug/konva/src/filters/Posterize.ts +0 -0
  64. package/debug/konva/src/filters/RGB.ts +0 -0
  65. package/debug/konva/src/filters/RGBA.ts +0 -0
  66. package/debug/konva/src/filters/Sepia.ts +0 -0
  67. package/debug/konva/src/filters/Solarize.ts +0 -0
  68. package/debug/konva/src/filters/Threshold.ts +0 -0
  69. package/debug/konva/src/index.ts +0 -0
  70. package/debug/konva/src/shapes/Arc.ts +0 -0
  71. package/debug/konva/src/shapes/Arrow.ts +0 -0
  72. package/debug/konva/src/shapes/Circle.ts +0 -0
  73. package/debug/konva/src/shapes/Ellipse.ts +0 -0
  74. package/debug/konva/src/shapes/Image.ts +0 -0
  75. package/debug/konva/src/shapes/Label.ts +0 -0
  76. package/debug/konva/src/shapes/Line.ts +0 -0
  77. package/debug/konva/src/shapes/Path.ts +0 -0
  78. package/debug/konva/src/shapes/Rect.ts +0 -0
  79. package/debug/konva/src/shapes/RegularPolygon.ts +0 -0
  80. package/debug/konva/src/shapes/Ring.ts +0 -0
  81. package/debug/konva/src/shapes/Sprite.ts +0 -0
  82. package/debug/konva/src/shapes/Star.ts +0 -0
  83. package/debug/konva/src/shapes/Text.ts +0 -0
  84. package/debug/konva/src/shapes/TextPath.ts +0 -0
  85. package/debug/konva/src/shapes/Transformer.ts +0 -0
  86. package/debug/konva/src/shapes/Wedge.ts +0 -0
  87. package/debug/konva/src/skia-backend.ts +0 -0
  88. package/debug/konva/src/types.ts +0 -0
  89. package/debug/konva/tsconfig.json +0 -0
  90. package/debug/konva/tsconfig.test.json +0 -0
  91. package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs +0 -0
  92. package/dist/_virtual/_rollupPluginBabelHelpers.min.mjs.map +0 -0
  93. package/dist/_virtual/_rollupPluginBabelHelpers.mjs +0 -0
  94. package/dist/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -0
  95. package/dist/extensions/aligning_guidelines/constant.d.ts +0 -0
  96. package/dist/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  97. package/dist/extensions/aligning_guidelines/index.d.ts +0 -0
  98. package/dist/extensions/aligning_guidelines/index.d.ts.map +0 -0
  99. package/dist/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  100. package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  101. package/dist/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  102. package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  103. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  104. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  105. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  106. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  107. package/dist/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  108. package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  109. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  110. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  111. package/dist/extensions/data_updaters/gradient/index.d.ts +0 -0
  112. package/dist/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  113. package/dist/extensions/data_updaters/origins/index.d.ts +0 -0
  114. package/dist/extensions/data_updaters/origins/index.d.ts.map +0 -0
  115. package/dist/extensions/index.d.ts +0 -0
  116. package/dist/extensions/index.d.ts.map +0 -0
  117. package/dist/fabric.d.ts +0 -0
  118. package/dist/fabric.d.ts.map +0 -0
  119. package/dist/fabric.min.mjs +0 -0
  120. package/dist/fabric.min.mjs.map +0 -0
  121. package/dist/fabric.mjs +0 -0
  122. package/dist/fabric.mjs.map +0 -0
  123. package/dist/index.d.ts +0 -0
  124. package/dist/index.d.ts.map +0 -0
  125. package/dist/index.js +1180 -1044
  126. package/dist/index.js.map +1 -1
  127. package/dist/index.min.js +1 -1
  128. package/dist/index.min.js.map +1 -1
  129. package/dist/index.min.mjs +1 -1
  130. package/dist/index.min.mjs.map +1 -1
  131. package/dist/index.mjs +1180 -1044
  132. package/dist/index.mjs.map +1 -1
  133. package/dist/index.node.cjs +1180 -1044
  134. package/dist/index.node.cjs.map +1 -1
  135. package/dist/index.node.d.ts +0 -0
  136. package/dist/index.node.d.ts.map +0 -0
  137. package/dist/index.node.mjs +1180 -1044
  138. package/dist/index.node.mjs.map +1 -1
  139. package/dist/package.json.min.mjs +1 -1
  140. package/dist/package.json.min.mjs.map +0 -0
  141. package/dist/package.json.mjs +1 -1
  142. package/dist/package.json.mjs.map +0 -0
  143. package/dist/src/ClassRegistry.d.ts +0 -0
  144. package/dist/src/ClassRegistry.d.ts.map +0 -0
  145. package/dist/src/ClassRegistry.min.mjs +0 -0
  146. package/dist/src/ClassRegistry.min.mjs.map +0 -0
  147. package/dist/src/ClassRegistry.mjs +0 -0
  148. package/dist/src/ClassRegistry.mjs.map +0 -0
  149. package/dist/src/Collection.d.ts +0 -0
  150. package/dist/src/Collection.d.ts.map +0 -0
  151. package/dist/src/Collection.min.mjs +0 -0
  152. package/dist/src/Collection.min.mjs.map +0 -0
  153. package/dist/src/Collection.mjs +0 -0
  154. package/dist/src/Collection.mjs.map +0 -0
  155. package/dist/src/CommonMethods.d.ts +0 -0
  156. package/dist/src/CommonMethods.d.ts.map +0 -0
  157. package/dist/src/CommonMethods.min.mjs +0 -0
  158. package/dist/src/CommonMethods.min.mjs.map +0 -0
  159. package/dist/src/CommonMethods.mjs +0 -0
  160. package/dist/src/CommonMethods.mjs.map +0 -0
  161. package/dist/src/EventTypeDefs.d.ts +0 -0
  162. package/dist/src/EventTypeDefs.d.ts.map +0 -0
  163. package/dist/src/Intersection.d.ts +0 -0
  164. package/dist/src/Intersection.d.ts.map +0 -0
  165. package/dist/src/Intersection.min.mjs +0 -0
  166. package/dist/src/Intersection.min.mjs.map +0 -0
  167. package/dist/src/Intersection.mjs +0 -0
  168. package/dist/src/Intersection.mjs.map +0 -0
  169. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  170. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  171. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs +0 -0
  172. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +0 -0
  173. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs +0 -0
  174. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +0 -0
  175. package/dist/src/LayoutManager/LayoutManager.d.ts +0 -0
  176. package/dist/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  177. package/dist/src/LayoutManager/LayoutManager.min.mjs +0 -0
  178. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +0 -0
  179. package/dist/src/LayoutManager/LayoutManager.mjs +0 -0
  180. package/dist/src/LayoutManager/LayoutManager.mjs.map +0 -0
  181. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  182. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  183. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +0 -0
  184. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +0 -0
  185. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +0 -0
  186. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +0 -0
  187. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  188. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  189. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +0 -0
  190. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs.map +0 -0
  191. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +0 -0
  192. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs.map +0 -0
  193. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  194. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  195. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +0 -0
  196. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +0 -0
  197. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +0 -0
  198. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +0 -0
  199. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  200. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  201. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +0 -0
  202. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +0 -0
  203. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +0 -0
  204. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +0 -0
  205. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  206. package/dist/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  207. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs +0 -0
  208. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +0 -0
  209. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs +0 -0
  210. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +0 -0
  211. package/dist/src/LayoutManager/constants.d.ts +0 -0
  212. package/dist/src/LayoutManager/constants.d.ts.map +0 -0
  213. package/dist/src/LayoutManager/constants.min.mjs +0 -0
  214. package/dist/src/LayoutManager/constants.min.mjs.map +0 -0
  215. package/dist/src/LayoutManager/constants.mjs +0 -0
  216. package/dist/src/LayoutManager/constants.mjs.map +0 -0
  217. package/dist/src/LayoutManager/index.d.ts +0 -0
  218. package/dist/src/LayoutManager/index.d.ts.map +0 -0
  219. package/dist/src/LayoutManager/types.d.ts +0 -0
  220. package/dist/src/LayoutManager/types.d.ts.map +0 -0
  221. package/dist/src/Observable.d.ts +0 -0
  222. package/dist/src/Observable.d.ts.map +0 -0
  223. package/dist/src/Observable.min.mjs +0 -0
  224. package/dist/src/Observable.min.mjs.map +0 -0
  225. package/dist/src/Observable.mjs +0 -0
  226. package/dist/src/Observable.mjs.map +0 -0
  227. package/dist/src/Pattern/Pattern.d.ts +0 -0
  228. package/dist/src/Pattern/Pattern.d.ts.map +0 -0
  229. package/dist/src/Pattern/Pattern.min.mjs +0 -0
  230. package/dist/src/Pattern/Pattern.min.mjs.map +0 -0
  231. package/dist/src/Pattern/Pattern.mjs +0 -0
  232. package/dist/src/Pattern/Pattern.mjs.map +0 -0
  233. package/dist/src/Pattern/index.d.ts +0 -0
  234. package/dist/src/Pattern/index.d.ts.map +0 -0
  235. package/dist/src/Pattern/types.d.ts +0 -0
  236. package/dist/src/Pattern/types.d.ts.map +0 -0
  237. package/dist/src/Point.d.ts +0 -0
  238. package/dist/src/Point.d.ts.map +0 -0
  239. package/dist/src/Point.min.mjs +0 -0
  240. package/dist/src/Point.min.mjs.map +0 -0
  241. package/dist/src/Point.mjs +0 -0
  242. package/dist/src/Point.mjs.map +0 -0
  243. package/dist/src/Shadow.d.ts +0 -0
  244. package/dist/src/Shadow.d.ts.map +0 -0
  245. package/dist/src/Shadow.min.mjs +0 -0
  246. package/dist/src/Shadow.min.mjs.map +0 -0
  247. package/dist/src/Shadow.mjs +0 -0
  248. package/dist/src/Shadow.mjs.map +0 -0
  249. package/dist/src/brushes/BaseBrush.d.ts +0 -0
  250. package/dist/src/brushes/BaseBrush.d.ts.map +0 -0
  251. package/dist/src/brushes/BaseBrush.min.mjs +0 -0
  252. package/dist/src/brushes/BaseBrush.min.mjs.map +0 -0
  253. package/dist/src/brushes/BaseBrush.mjs +0 -0
  254. package/dist/src/brushes/BaseBrush.mjs.map +0 -0
  255. package/dist/src/brushes/CircleBrush.d.ts +0 -0
  256. package/dist/src/brushes/CircleBrush.d.ts.map +0 -0
  257. package/dist/src/brushes/CircleBrush.min.mjs +0 -0
  258. package/dist/src/brushes/CircleBrush.min.mjs.map +0 -0
  259. package/dist/src/brushes/CircleBrush.mjs +0 -0
  260. package/dist/src/brushes/CircleBrush.mjs.map +0 -0
  261. package/dist/src/brushes/PatternBrush.d.ts +0 -0
  262. package/dist/src/brushes/PatternBrush.d.ts.map +0 -0
  263. package/dist/src/brushes/PatternBrush.min.mjs +0 -0
  264. package/dist/src/brushes/PatternBrush.min.mjs.map +0 -0
  265. package/dist/src/brushes/PatternBrush.mjs +0 -0
  266. package/dist/src/brushes/PatternBrush.mjs.map +0 -0
  267. package/dist/src/brushes/PencilBrush.d.ts +0 -0
  268. package/dist/src/brushes/PencilBrush.d.ts.map +0 -0
  269. package/dist/src/brushes/PencilBrush.min.mjs +0 -0
  270. package/dist/src/brushes/PencilBrush.min.mjs.map +0 -0
  271. package/dist/src/brushes/PencilBrush.mjs +0 -0
  272. package/dist/src/brushes/PencilBrush.mjs.map +0 -0
  273. package/dist/src/brushes/SprayBrush.d.ts +0 -0
  274. package/dist/src/brushes/SprayBrush.d.ts.map +0 -0
  275. package/dist/src/brushes/SprayBrush.min.mjs +0 -0
  276. package/dist/src/brushes/SprayBrush.min.mjs.map +0 -0
  277. package/dist/src/brushes/SprayBrush.mjs +0 -0
  278. package/dist/src/brushes/SprayBrush.mjs.map +0 -0
  279. package/dist/src/brushes/typedefs.d.ts +0 -0
  280. package/dist/src/brushes/typedefs.d.ts.map +0 -0
  281. package/dist/src/cache.d.ts +0 -0
  282. package/dist/src/cache.d.ts.map +0 -0
  283. package/dist/src/cache.min.mjs +0 -0
  284. package/dist/src/cache.min.mjs.map +0 -0
  285. package/dist/src/cache.mjs +0 -0
  286. package/dist/src/cache.mjs.map +0 -0
  287. package/dist/src/canvas/Canvas.d.ts +0 -0
  288. package/dist/src/canvas/Canvas.d.ts.map +0 -0
  289. package/dist/src/canvas/Canvas.min.mjs +0 -0
  290. package/dist/src/canvas/Canvas.min.mjs.map +0 -0
  291. package/dist/src/canvas/Canvas.mjs +0 -0
  292. package/dist/src/canvas/Canvas.mjs.map +0 -0
  293. package/dist/src/canvas/CanvasOptions.d.ts +0 -0
  294. package/dist/src/canvas/CanvasOptions.d.ts.map +0 -0
  295. package/dist/src/canvas/CanvasOptions.min.mjs +0 -0
  296. package/dist/src/canvas/CanvasOptions.min.mjs.map +0 -0
  297. package/dist/src/canvas/CanvasOptions.mjs +0 -0
  298. package/dist/src/canvas/CanvasOptions.mjs.map +0 -0
  299. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  300. package/dist/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  301. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +0 -0
  302. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +0 -0
  303. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +0 -0
  304. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +0 -0
  305. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  306. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  307. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +0 -0
  308. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +0 -0
  309. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +0 -0
  310. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +0 -0
  311. package/dist/src/canvas/DOMManagers/util.d.ts +0 -0
  312. package/dist/src/canvas/DOMManagers/util.d.ts.map +0 -0
  313. package/dist/src/canvas/DOMManagers/util.min.mjs +0 -0
  314. package/dist/src/canvas/DOMManagers/util.min.mjs.map +0 -0
  315. package/dist/src/canvas/DOMManagers/util.mjs +0 -0
  316. package/dist/src/canvas/DOMManagers/util.mjs.map +0 -0
  317. package/dist/src/canvas/SelectableCanvas.d.ts +0 -0
  318. package/dist/src/canvas/SelectableCanvas.d.ts.map +0 -0
  319. package/dist/src/canvas/SelectableCanvas.min.mjs +0 -0
  320. package/dist/src/canvas/SelectableCanvas.min.mjs.map +0 -0
  321. package/dist/src/canvas/SelectableCanvas.mjs +0 -0
  322. package/dist/src/canvas/SelectableCanvas.mjs.map +0 -0
  323. package/dist/src/canvas/StaticCanvas.d.ts +0 -0
  324. package/dist/src/canvas/StaticCanvas.d.ts.map +0 -0
  325. package/dist/src/canvas/StaticCanvas.min.mjs +0 -0
  326. package/dist/src/canvas/StaticCanvas.min.mjs.map +0 -0
  327. package/dist/src/canvas/StaticCanvas.mjs +0 -0
  328. package/dist/src/canvas/StaticCanvas.mjs.map +0 -0
  329. package/dist/src/canvas/StaticCanvasOptions.d.ts +0 -0
  330. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  331. package/dist/src/canvas/StaticCanvasOptions.min.mjs +0 -0
  332. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +0 -0
  333. package/dist/src/canvas/StaticCanvasOptions.mjs +0 -0
  334. package/dist/src/canvas/StaticCanvasOptions.mjs.map +0 -0
  335. package/dist/src/canvas/TextEditingManager.d.ts +0 -0
  336. package/dist/src/canvas/TextEditingManager.d.ts.map +0 -0
  337. package/dist/src/canvas/TextEditingManager.min.mjs +0 -0
  338. package/dist/src/canvas/TextEditingManager.min.mjs.map +0 -0
  339. package/dist/src/canvas/TextEditingManager.mjs +0 -0
  340. package/dist/src/canvas/TextEditingManager.mjs.map +0 -0
  341. package/dist/src/canvas/canvas_gestures.mixin.d.ts +0 -0
  342. package/dist/src/canvas/canvas_gestures.mixin.d.ts.map +0 -0
  343. package/dist/src/color/Color.d.ts +0 -0
  344. package/dist/src/color/Color.d.ts.map +0 -0
  345. package/dist/src/color/Color.min.mjs +0 -0
  346. package/dist/src/color/Color.min.mjs.map +0 -0
  347. package/dist/src/color/Color.mjs +0 -0
  348. package/dist/src/color/Color.mjs.map +0 -0
  349. package/dist/src/color/color_map.d.ts +0 -0
  350. package/dist/src/color/color_map.d.ts.map +0 -0
  351. package/dist/src/color/color_map.min.mjs +0 -0
  352. package/dist/src/color/color_map.min.mjs.map +0 -0
  353. package/dist/src/color/color_map.mjs +0 -0
  354. package/dist/src/color/color_map.mjs.map +0 -0
  355. package/dist/src/color/constants.d.ts +0 -0
  356. package/dist/src/color/constants.d.ts.map +0 -0
  357. package/dist/src/color/constants.min.mjs +0 -0
  358. package/dist/src/color/constants.min.mjs.map +0 -0
  359. package/dist/src/color/constants.mjs +0 -0
  360. package/dist/src/color/constants.mjs.map +0 -0
  361. package/dist/src/color/typedefs.d.ts +0 -0
  362. package/dist/src/color/typedefs.d.ts.map +0 -0
  363. package/dist/src/color/util.d.ts +0 -0
  364. package/dist/src/color/util.d.ts.map +0 -0
  365. package/dist/src/color/util.min.mjs +0 -0
  366. package/dist/src/color/util.min.mjs.map +0 -0
  367. package/dist/src/color/util.mjs +0 -0
  368. package/dist/src/color/util.mjs.map +0 -0
  369. package/dist/src/config.d.ts +0 -0
  370. package/dist/src/config.d.ts.map +0 -0
  371. package/dist/src/config.min.mjs +0 -0
  372. package/dist/src/config.min.mjs.map +0 -0
  373. package/dist/src/config.mjs +0 -0
  374. package/dist/src/config.mjs.map +0 -0
  375. package/dist/src/constants.d.ts +0 -0
  376. package/dist/src/constants.d.ts.map +0 -0
  377. package/dist/src/constants.min.mjs +0 -0
  378. package/dist/src/constants.min.mjs.map +0 -0
  379. package/dist/src/constants.mjs +0 -0
  380. package/dist/src/constants.mjs.map +0 -0
  381. package/dist/src/controls/Control.d.ts +0 -0
  382. package/dist/src/controls/Control.d.ts.map +0 -0
  383. package/dist/src/controls/Control.min.mjs +0 -0
  384. package/dist/src/controls/Control.min.mjs.map +0 -0
  385. package/dist/src/controls/Control.mjs +0 -0
  386. package/dist/src/controls/Control.mjs.map +0 -0
  387. package/dist/src/controls/changeHeight.d.ts +0 -0
  388. package/dist/src/controls/changeHeight.d.ts.map +0 -0
  389. package/dist/src/controls/changeHeight.min.mjs +2 -0
  390. package/dist/src/controls/changeHeight.min.mjs.map +1 -0
  391. package/dist/src/controls/changeHeight.mjs +36 -0
  392. package/dist/src/controls/changeHeight.mjs.map +1 -0
  393. package/dist/src/controls/changeWidth.d.ts +0 -0
  394. package/dist/src/controls/changeWidth.d.ts.map +0 -0
  395. package/dist/src/controls/changeWidth.min.mjs +0 -0
  396. package/dist/src/controls/changeWidth.min.mjs.map +0 -0
  397. package/dist/src/controls/changeWidth.mjs +0 -0
  398. package/dist/src/controls/changeWidth.mjs.map +0 -0
  399. package/dist/src/controls/commonControls.d.ts +0 -0
  400. package/dist/src/controls/commonControls.d.ts.map +0 -0
  401. package/dist/src/controls/commonControls.min.mjs +0 -0
  402. package/dist/src/controls/commonControls.min.mjs.map +0 -0
  403. package/dist/src/controls/commonControls.mjs +0 -0
  404. package/dist/src/controls/commonControls.mjs.map +0 -0
  405. package/dist/src/controls/controlRendering.d.ts +0 -0
  406. package/dist/src/controls/controlRendering.d.ts.map +0 -0
  407. package/dist/src/controls/controlRendering.min.mjs +0 -0
  408. package/dist/src/controls/controlRendering.min.mjs.map +0 -0
  409. package/dist/src/controls/controlRendering.mjs +0 -0
  410. package/dist/src/controls/controlRendering.mjs.map +0 -0
  411. package/dist/src/controls/drag.d.ts +0 -0
  412. package/dist/src/controls/drag.d.ts.map +0 -0
  413. package/dist/src/controls/drag.min.mjs +0 -0
  414. package/dist/src/controls/drag.min.mjs.map +0 -0
  415. package/dist/src/controls/drag.mjs +0 -0
  416. package/dist/src/controls/drag.mjs.map +0 -0
  417. package/dist/src/controls/fireEvent.d.ts +0 -0
  418. package/dist/src/controls/fireEvent.d.ts.map +0 -0
  419. package/dist/src/controls/fireEvent.min.mjs +0 -0
  420. package/dist/src/controls/fireEvent.min.mjs.map +0 -0
  421. package/dist/src/controls/fireEvent.mjs +0 -0
  422. package/dist/src/controls/fireEvent.mjs.map +0 -0
  423. package/dist/src/controls/index.d.ts +0 -0
  424. package/dist/src/controls/index.d.ts.map +0 -0
  425. package/dist/src/controls/index.min.mjs +0 -0
  426. package/dist/src/controls/index.min.mjs.map +0 -0
  427. package/dist/src/controls/index.mjs +0 -0
  428. package/dist/src/controls/index.mjs.map +0 -0
  429. package/dist/src/controls/pathControl.d.ts +0 -0
  430. package/dist/src/controls/pathControl.d.ts.map +0 -0
  431. package/dist/src/controls/pathControl.min.mjs +0 -0
  432. package/dist/src/controls/pathControl.min.mjs.map +0 -0
  433. package/dist/src/controls/pathControl.mjs +0 -0
  434. package/dist/src/controls/pathControl.mjs.map +0 -0
  435. package/dist/src/controls/polyControl.d.ts +0 -0
  436. package/dist/src/controls/polyControl.d.ts.map +0 -0
  437. package/dist/src/controls/polyControl.min.mjs +0 -0
  438. package/dist/src/controls/polyControl.min.mjs.map +0 -0
  439. package/dist/src/controls/polyControl.mjs +0 -0
  440. package/dist/src/controls/polyControl.mjs.map +0 -0
  441. package/dist/src/controls/rotate.d.ts +0 -0
  442. package/dist/src/controls/rotate.d.ts.map +0 -0
  443. package/dist/src/controls/rotate.min.mjs +0 -0
  444. package/dist/src/controls/rotate.min.mjs.map +0 -0
  445. package/dist/src/controls/rotate.mjs +0 -0
  446. package/dist/src/controls/rotate.mjs.map +0 -0
  447. package/dist/src/controls/scale.d.ts +0 -0
  448. package/dist/src/controls/scale.d.ts.map +0 -0
  449. package/dist/src/controls/scale.min.mjs +0 -0
  450. package/dist/src/controls/scale.min.mjs.map +0 -0
  451. package/dist/src/controls/scale.mjs +0 -0
  452. package/dist/src/controls/scale.mjs.map +0 -0
  453. package/dist/src/controls/scaleSkew.d.ts +0 -0
  454. package/dist/src/controls/scaleSkew.d.ts.map +0 -0
  455. package/dist/src/controls/scaleSkew.min.mjs +0 -0
  456. package/dist/src/controls/scaleSkew.min.mjs.map +0 -0
  457. package/dist/src/controls/scaleSkew.mjs +0 -0
  458. package/dist/src/controls/scaleSkew.mjs.map +0 -0
  459. package/dist/src/controls/skew.d.ts +0 -0
  460. package/dist/src/controls/skew.d.ts.map +0 -0
  461. package/dist/src/controls/skew.min.mjs +0 -0
  462. package/dist/src/controls/skew.min.mjs.map +0 -0
  463. package/dist/src/controls/skew.mjs +0 -0
  464. package/dist/src/controls/skew.mjs.map +0 -0
  465. package/dist/src/controls/util.d.ts +0 -0
  466. package/dist/src/controls/util.d.ts.map +0 -0
  467. package/dist/src/controls/util.min.mjs +0 -0
  468. package/dist/src/controls/util.min.mjs.map +0 -0
  469. package/dist/src/controls/util.mjs +0 -0
  470. package/dist/src/controls/util.mjs.map +0 -0
  471. package/dist/src/controls/wrapWithFireEvent.d.ts +0 -0
  472. package/dist/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  473. package/dist/src/controls/wrapWithFireEvent.min.mjs +0 -0
  474. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +0 -0
  475. package/dist/src/controls/wrapWithFireEvent.mjs +0 -0
  476. package/dist/src/controls/wrapWithFireEvent.mjs.map +0 -0
  477. package/dist/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  478. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  479. package/dist/src/controls/wrapWithFixedAnchor.min.mjs +0 -0
  480. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +0 -0
  481. package/dist/src/controls/wrapWithFixedAnchor.mjs +0 -0
  482. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +0 -0
  483. package/dist/src/env/browser.d.ts +0 -0
  484. package/dist/src/env/browser.d.ts.map +0 -0
  485. package/dist/src/env/browser.min.mjs +0 -0
  486. package/dist/src/env/browser.min.mjs.map +0 -0
  487. package/dist/src/env/browser.mjs +0 -0
  488. package/dist/src/env/browser.mjs.map +0 -0
  489. package/dist/src/env/index.d.ts +0 -0
  490. package/dist/src/env/index.d.ts.map +0 -0
  491. package/dist/src/env/index.min.mjs +0 -0
  492. package/dist/src/env/index.min.mjs.map +0 -0
  493. package/dist/src/env/index.mjs +0 -0
  494. package/dist/src/env/index.mjs.map +0 -0
  495. package/dist/src/env/node.d.ts +0 -0
  496. package/dist/src/env/node.d.ts.map +0 -0
  497. package/dist/src/env/types.d.ts +0 -0
  498. package/dist/src/env/types.d.ts.map +0 -0
  499. package/dist/src/filters/BaseFilter.d.ts +0 -0
  500. package/dist/src/filters/BaseFilter.d.ts.map +0 -0
  501. package/dist/src/filters/BaseFilter.min.mjs +0 -0
  502. package/dist/src/filters/BaseFilter.min.mjs.map +0 -0
  503. package/dist/src/filters/BaseFilter.mjs +0 -0
  504. package/dist/src/filters/BaseFilter.mjs.map +0 -0
  505. package/dist/src/filters/BlendColor.d.ts +0 -0
  506. package/dist/src/filters/BlendColor.d.ts.map +0 -0
  507. package/dist/src/filters/BlendColor.min.mjs +0 -0
  508. package/dist/src/filters/BlendColor.min.mjs.map +0 -0
  509. package/dist/src/filters/BlendColor.mjs +0 -0
  510. package/dist/src/filters/BlendColor.mjs.map +0 -0
  511. package/dist/src/filters/BlendImage.d.ts +0 -0
  512. package/dist/src/filters/BlendImage.d.ts.map +0 -0
  513. package/dist/src/filters/BlendImage.min.mjs +0 -0
  514. package/dist/src/filters/BlendImage.min.mjs.map +0 -0
  515. package/dist/src/filters/BlendImage.mjs +0 -0
  516. package/dist/src/filters/BlendImage.mjs.map +0 -0
  517. package/dist/src/filters/Blur.d.ts +0 -0
  518. package/dist/src/filters/Blur.d.ts.map +0 -0
  519. package/dist/src/filters/Blur.min.mjs +0 -0
  520. package/dist/src/filters/Blur.min.mjs.map +0 -0
  521. package/dist/src/filters/Blur.mjs +0 -0
  522. package/dist/src/filters/Blur.mjs.map +0 -0
  523. package/dist/src/filters/Boilerplate.d.ts +0 -0
  524. package/dist/src/filters/Boilerplate.d.ts.map +0 -0
  525. package/dist/src/filters/Brightness.d.ts +0 -0
  526. package/dist/src/filters/Brightness.d.ts.map +0 -0
  527. package/dist/src/filters/Brightness.min.mjs +0 -0
  528. package/dist/src/filters/Brightness.min.mjs.map +0 -0
  529. package/dist/src/filters/Brightness.mjs +0 -0
  530. package/dist/src/filters/Brightness.mjs.map +0 -0
  531. package/dist/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  532. package/dist/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  533. package/dist/src/filters/Canvas2dFilterBackend.min.mjs +0 -0
  534. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +0 -0
  535. package/dist/src/filters/Canvas2dFilterBackend.mjs +0 -0
  536. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +0 -0
  537. package/dist/src/filters/ColorMatrix.d.ts +0 -0
  538. package/dist/src/filters/ColorMatrix.d.ts.map +0 -0
  539. package/dist/src/filters/ColorMatrix.min.mjs +0 -0
  540. package/dist/src/filters/ColorMatrix.min.mjs.map +0 -0
  541. package/dist/src/filters/ColorMatrix.mjs +0 -0
  542. package/dist/src/filters/ColorMatrix.mjs.map +0 -0
  543. package/dist/src/filters/ColorMatrixFilters.d.ts +0 -0
  544. package/dist/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  545. package/dist/src/filters/ColorMatrixFilters.min.mjs +0 -0
  546. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +0 -0
  547. package/dist/src/filters/ColorMatrixFilters.mjs +0 -0
  548. package/dist/src/filters/ColorMatrixFilters.mjs.map +0 -0
  549. package/dist/src/filters/Composed.d.ts +0 -0
  550. package/dist/src/filters/Composed.d.ts.map +0 -0
  551. package/dist/src/filters/Composed.min.mjs +0 -0
  552. package/dist/src/filters/Composed.min.mjs.map +0 -0
  553. package/dist/src/filters/Composed.mjs +0 -0
  554. package/dist/src/filters/Composed.mjs.map +0 -0
  555. package/dist/src/filters/Contrast.d.ts +0 -0
  556. package/dist/src/filters/Contrast.d.ts.map +0 -0
  557. package/dist/src/filters/Contrast.min.mjs +0 -0
  558. package/dist/src/filters/Contrast.min.mjs.map +0 -0
  559. package/dist/src/filters/Contrast.mjs +0 -0
  560. package/dist/src/filters/Contrast.mjs.map +0 -0
  561. package/dist/src/filters/Convolute.d.ts +0 -0
  562. package/dist/src/filters/Convolute.d.ts.map +0 -0
  563. package/dist/src/filters/Convolute.min.mjs +0 -0
  564. package/dist/src/filters/Convolute.min.mjs.map +0 -0
  565. package/dist/src/filters/Convolute.mjs +0 -0
  566. package/dist/src/filters/Convolute.mjs.map +0 -0
  567. package/dist/src/filters/FilterBackend.d.ts +0 -0
  568. package/dist/src/filters/FilterBackend.d.ts.map +0 -0
  569. package/dist/src/filters/FilterBackend.min.mjs +0 -0
  570. package/dist/src/filters/FilterBackend.min.mjs.map +0 -0
  571. package/dist/src/filters/FilterBackend.mjs +0 -0
  572. package/dist/src/filters/FilterBackend.mjs.map +0 -0
  573. package/dist/src/filters/GLProbes/GLProbe.d.ts +0 -0
  574. package/dist/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  575. package/dist/src/filters/GLProbes/GLProbe.min.mjs +0 -0
  576. package/dist/src/filters/GLProbes/GLProbe.min.mjs.map +0 -0
  577. package/dist/src/filters/GLProbes/GLProbe.mjs +0 -0
  578. package/dist/src/filters/GLProbes/GLProbe.mjs.map +0 -0
  579. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts +0 -0
  580. package/dist/src/filters/GLProbes/NodeGLProbe.d.ts.map +0 -0
  581. package/dist/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  582. package/dist/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  583. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs +0 -0
  584. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +0 -0
  585. package/dist/src/filters/GLProbes/WebGLProbe.mjs +0 -0
  586. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +0 -0
  587. package/dist/src/filters/Gamma.d.ts +0 -0
  588. package/dist/src/filters/Gamma.d.ts.map +0 -0
  589. package/dist/src/filters/Gamma.min.mjs +0 -0
  590. package/dist/src/filters/Gamma.min.mjs.map +0 -0
  591. package/dist/src/filters/Gamma.mjs +0 -0
  592. package/dist/src/filters/Gamma.mjs.map +0 -0
  593. package/dist/src/filters/Grayscale.d.ts +0 -0
  594. package/dist/src/filters/Grayscale.d.ts.map +0 -0
  595. package/dist/src/filters/Grayscale.min.mjs +0 -0
  596. package/dist/src/filters/Grayscale.min.mjs.map +0 -0
  597. package/dist/src/filters/Grayscale.mjs +0 -0
  598. package/dist/src/filters/Grayscale.mjs.map +0 -0
  599. package/dist/src/filters/HueRotation.d.ts +0 -0
  600. package/dist/src/filters/HueRotation.d.ts.map +0 -0
  601. package/dist/src/filters/HueRotation.min.mjs +0 -0
  602. package/dist/src/filters/HueRotation.min.mjs.map +0 -0
  603. package/dist/src/filters/HueRotation.mjs +0 -0
  604. package/dist/src/filters/HueRotation.mjs.map +0 -0
  605. package/dist/src/filters/Invert.d.ts +0 -0
  606. package/dist/src/filters/Invert.d.ts.map +0 -0
  607. package/dist/src/filters/Invert.min.mjs +0 -0
  608. package/dist/src/filters/Invert.min.mjs.map +0 -0
  609. package/dist/src/filters/Invert.mjs +0 -0
  610. package/dist/src/filters/Invert.mjs.map +0 -0
  611. package/dist/src/filters/Noise.d.ts +0 -0
  612. package/dist/src/filters/Noise.d.ts.map +0 -0
  613. package/dist/src/filters/Noise.min.mjs +0 -0
  614. package/dist/src/filters/Noise.min.mjs.map +0 -0
  615. package/dist/src/filters/Noise.mjs +0 -0
  616. package/dist/src/filters/Noise.mjs.map +0 -0
  617. package/dist/src/filters/Pixelate.d.ts +0 -0
  618. package/dist/src/filters/Pixelate.d.ts.map +0 -0
  619. package/dist/src/filters/Pixelate.min.mjs +0 -0
  620. package/dist/src/filters/Pixelate.min.mjs.map +0 -0
  621. package/dist/src/filters/Pixelate.mjs +0 -0
  622. package/dist/src/filters/Pixelate.mjs.map +0 -0
  623. package/dist/src/filters/RemoveColor.d.ts +0 -0
  624. package/dist/src/filters/RemoveColor.d.ts.map +0 -0
  625. package/dist/src/filters/RemoveColor.min.mjs +0 -0
  626. package/dist/src/filters/RemoveColor.min.mjs.map +0 -0
  627. package/dist/src/filters/RemoveColor.mjs +0 -0
  628. package/dist/src/filters/RemoveColor.mjs.map +0 -0
  629. package/dist/src/filters/Resize.d.ts +0 -0
  630. package/dist/src/filters/Resize.d.ts.map +0 -0
  631. package/dist/src/filters/Resize.min.mjs +0 -0
  632. package/dist/src/filters/Resize.min.mjs.map +0 -0
  633. package/dist/src/filters/Resize.mjs +0 -0
  634. package/dist/src/filters/Resize.mjs.map +0 -0
  635. package/dist/src/filters/Saturation.d.ts +0 -0
  636. package/dist/src/filters/Saturation.d.ts.map +0 -0
  637. package/dist/src/filters/Saturation.min.mjs +0 -0
  638. package/dist/src/filters/Saturation.min.mjs.map +0 -0
  639. package/dist/src/filters/Saturation.mjs +0 -0
  640. package/dist/src/filters/Saturation.mjs.map +0 -0
  641. package/dist/src/filters/Vibrance.d.ts +0 -0
  642. package/dist/src/filters/Vibrance.d.ts.map +0 -0
  643. package/dist/src/filters/Vibrance.min.mjs +0 -0
  644. package/dist/src/filters/Vibrance.min.mjs.map +0 -0
  645. package/dist/src/filters/Vibrance.mjs +0 -0
  646. package/dist/src/filters/Vibrance.mjs.map +0 -0
  647. package/dist/src/filters/WebGLFilterBackend.d.ts +0 -0
  648. package/dist/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  649. package/dist/src/filters/WebGLFilterBackend.min.mjs +0 -0
  650. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +0 -0
  651. package/dist/src/filters/WebGLFilterBackend.mjs +0 -0
  652. package/dist/src/filters/WebGLFilterBackend.mjs.map +0 -0
  653. package/dist/src/filters/filters.d.ts +0 -0
  654. package/dist/src/filters/filters.d.ts.map +0 -0
  655. package/dist/src/filters/filters.min.mjs +0 -0
  656. package/dist/src/filters/filters.min.mjs.map +0 -0
  657. package/dist/src/filters/filters.mjs +0 -0
  658. package/dist/src/filters/filters.mjs.map +0 -0
  659. package/dist/src/filters/index.d.ts +0 -0
  660. package/dist/src/filters/index.d.ts.map +0 -0
  661. package/dist/src/filters/shaders/baseFilter.d.ts +0 -0
  662. package/dist/src/filters/shaders/baseFilter.d.ts.map +0 -0
  663. package/dist/src/filters/shaders/baseFilter.min.mjs +0 -0
  664. package/dist/src/filters/shaders/baseFilter.min.mjs.map +0 -0
  665. package/dist/src/filters/shaders/baseFilter.mjs +0 -0
  666. package/dist/src/filters/shaders/baseFilter.mjs.map +0 -0
  667. package/dist/src/filters/shaders/blendColor.d.ts +0 -0
  668. package/dist/src/filters/shaders/blendColor.d.ts.map +0 -0
  669. package/dist/src/filters/shaders/blendColor.min.mjs +0 -0
  670. package/dist/src/filters/shaders/blendColor.min.mjs.map +0 -0
  671. package/dist/src/filters/shaders/blendColor.mjs +0 -0
  672. package/dist/src/filters/shaders/blendColor.mjs.map +0 -0
  673. package/dist/src/filters/shaders/blendImage.d.ts +0 -0
  674. package/dist/src/filters/shaders/blendImage.d.ts.map +0 -0
  675. package/dist/src/filters/shaders/blendImage.min.mjs +0 -0
  676. package/dist/src/filters/shaders/blendImage.min.mjs.map +0 -0
  677. package/dist/src/filters/shaders/blendImage.mjs +0 -0
  678. package/dist/src/filters/shaders/blendImage.mjs.map +0 -0
  679. package/dist/src/filters/shaders/blur.d.ts +0 -0
  680. package/dist/src/filters/shaders/blur.d.ts.map +0 -0
  681. package/dist/src/filters/shaders/blur.min.mjs +0 -0
  682. package/dist/src/filters/shaders/blur.min.mjs.map +0 -0
  683. package/dist/src/filters/shaders/blur.mjs +0 -0
  684. package/dist/src/filters/shaders/blur.mjs.map +0 -0
  685. package/dist/src/filters/shaders/brightness.d.ts +0 -0
  686. package/dist/src/filters/shaders/brightness.d.ts.map +0 -0
  687. package/dist/src/filters/shaders/brightness.min.mjs +0 -0
  688. package/dist/src/filters/shaders/brightness.min.mjs.map +0 -0
  689. package/dist/src/filters/shaders/brightness.mjs +0 -0
  690. package/dist/src/filters/shaders/brightness.mjs.map +0 -0
  691. package/dist/src/filters/shaders/colorMatrix.d.ts +0 -0
  692. package/dist/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  693. package/dist/src/filters/shaders/colorMatrix.min.mjs +0 -0
  694. package/dist/src/filters/shaders/colorMatrix.min.mjs.map +0 -0
  695. package/dist/src/filters/shaders/colorMatrix.mjs +0 -0
  696. package/dist/src/filters/shaders/colorMatrix.mjs.map +0 -0
  697. package/dist/src/filters/shaders/constrast.d.ts +0 -0
  698. package/dist/src/filters/shaders/constrast.d.ts.map +0 -0
  699. package/dist/src/filters/shaders/constrast.min.mjs +0 -0
  700. package/dist/src/filters/shaders/constrast.min.mjs.map +0 -0
  701. package/dist/src/filters/shaders/constrast.mjs +0 -0
  702. package/dist/src/filters/shaders/constrast.mjs.map +0 -0
  703. package/dist/src/filters/shaders/convolute.d.ts +0 -0
  704. package/dist/src/filters/shaders/convolute.d.ts.map +0 -0
  705. package/dist/src/filters/shaders/convolute.min.mjs +0 -0
  706. package/dist/src/filters/shaders/convolute.min.mjs.map +0 -0
  707. package/dist/src/filters/shaders/convolute.mjs +0 -0
  708. package/dist/src/filters/shaders/convolute.mjs.map +0 -0
  709. package/dist/src/filters/shaders/gamma.d.ts +0 -0
  710. package/dist/src/filters/shaders/gamma.d.ts.map +0 -0
  711. package/dist/src/filters/shaders/gamma.min.mjs +0 -0
  712. package/dist/src/filters/shaders/gamma.min.mjs.map +0 -0
  713. package/dist/src/filters/shaders/gamma.mjs +0 -0
  714. package/dist/src/filters/shaders/gamma.mjs.map +0 -0
  715. package/dist/src/filters/shaders/grayscale.d.ts +0 -0
  716. package/dist/src/filters/shaders/grayscale.d.ts.map +0 -0
  717. package/dist/src/filters/shaders/grayscale.min.mjs +0 -0
  718. package/dist/src/filters/shaders/grayscale.min.mjs.map +0 -0
  719. package/dist/src/filters/shaders/grayscale.mjs +0 -0
  720. package/dist/src/filters/shaders/grayscale.mjs.map +0 -0
  721. package/dist/src/filters/shaders/invert.d.ts +0 -0
  722. package/dist/src/filters/shaders/invert.d.ts.map +0 -0
  723. package/dist/src/filters/shaders/invert.min.mjs +0 -0
  724. package/dist/src/filters/shaders/invert.min.mjs.map +0 -0
  725. package/dist/src/filters/shaders/invert.mjs +0 -0
  726. package/dist/src/filters/shaders/invert.mjs.map +0 -0
  727. package/dist/src/filters/shaders/noise.d.ts +0 -0
  728. package/dist/src/filters/shaders/noise.d.ts.map +0 -0
  729. package/dist/src/filters/shaders/noise.min.mjs +0 -0
  730. package/dist/src/filters/shaders/noise.min.mjs.map +0 -0
  731. package/dist/src/filters/shaders/noise.mjs +0 -0
  732. package/dist/src/filters/shaders/noise.mjs.map +0 -0
  733. package/dist/src/filters/shaders/pixelate.d.ts +0 -0
  734. package/dist/src/filters/shaders/pixelate.d.ts.map +0 -0
  735. package/dist/src/filters/shaders/pixelate.min.mjs +0 -0
  736. package/dist/src/filters/shaders/pixelate.min.mjs.map +0 -0
  737. package/dist/src/filters/shaders/pixelate.mjs +0 -0
  738. package/dist/src/filters/shaders/pixelate.mjs.map +0 -0
  739. package/dist/src/filters/shaders/removeColor.d.ts +0 -0
  740. package/dist/src/filters/shaders/removeColor.d.ts.map +0 -0
  741. package/dist/src/filters/shaders/removeColor.min.mjs +0 -0
  742. package/dist/src/filters/shaders/removeColor.min.mjs.map +0 -0
  743. package/dist/src/filters/shaders/removeColor.mjs +0 -0
  744. package/dist/src/filters/shaders/removeColor.mjs.map +0 -0
  745. package/dist/src/filters/shaders/saturation.d.ts +0 -0
  746. package/dist/src/filters/shaders/saturation.d.ts.map +0 -0
  747. package/dist/src/filters/shaders/saturation.min.mjs +0 -0
  748. package/dist/src/filters/shaders/saturation.min.mjs.map +0 -0
  749. package/dist/src/filters/shaders/saturation.mjs +0 -0
  750. package/dist/src/filters/shaders/saturation.mjs.map +0 -0
  751. package/dist/src/filters/shaders/vibrance.d.ts +0 -0
  752. package/dist/src/filters/shaders/vibrance.d.ts.map +0 -0
  753. package/dist/src/filters/shaders/vibrance.min.mjs +0 -0
  754. package/dist/src/filters/shaders/vibrance.min.mjs.map +0 -0
  755. package/dist/src/filters/shaders/vibrance.mjs +0 -0
  756. package/dist/src/filters/shaders/vibrance.mjs.map +0 -0
  757. package/dist/src/filters/typedefs.d.ts +0 -0
  758. package/dist/src/filters/typedefs.d.ts.map +0 -0
  759. package/dist/src/filters/utils.d.ts +0 -0
  760. package/dist/src/filters/utils.d.ts.map +0 -0
  761. package/dist/src/filters/utils.min.mjs +0 -0
  762. package/dist/src/filters/utils.min.mjs.map +0 -0
  763. package/dist/src/filters/utils.mjs +0 -0
  764. package/dist/src/filters/utils.mjs.map +0 -0
  765. package/dist/src/gradient/Gradient.d.ts +0 -0
  766. package/dist/src/gradient/Gradient.d.ts.map +0 -0
  767. package/dist/src/gradient/Gradient.min.mjs +0 -0
  768. package/dist/src/gradient/Gradient.min.mjs.map +0 -0
  769. package/dist/src/gradient/Gradient.mjs +0 -0
  770. package/dist/src/gradient/Gradient.mjs.map +0 -0
  771. package/dist/src/gradient/constants.d.ts +0 -0
  772. package/dist/src/gradient/constants.d.ts.map +0 -0
  773. package/dist/src/gradient/constants.min.mjs +0 -0
  774. package/dist/src/gradient/constants.min.mjs.map +0 -0
  775. package/dist/src/gradient/constants.mjs +0 -0
  776. package/dist/src/gradient/constants.mjs.map +0 -0
  777. package/dist/src/gradient/index.d.ts +0 -0
  778. package/dist/src/gradient/index.d.ts.map +0 -0
  779. package/dist/src/gradient/parser/misc.d.ts +0 -0
  780. package/dist/src/gradient/parser/misc.d.ts.map +0 -0
  781. package/dist/src/gradient/parser/misc.min.mjs +0 -0
  782. package/dist/src/gradient/parser/misc.min.mjs.map +0 -0
  783. package/dist/src/gradient/parser/misc.mjs +0 -0
  784. package/dist/src/gradient/parser/misc.mjs.map +0 -0
  785. package/dist/src/gradient/parser/parseColorStops.d.ts +0 -0
  786. package/dist/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  787. package/dist/src/gradient/parser/parseColorStops.min.mjs +0 -0
  788. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +0 -0
  789. package/dist/src/gradient/parser/parseColorStops.mjs +0 -0
  790. package/dist/src/gradient/parser/parseColorStops.mjs.map +0 -0
  791. package/dist/src/gradient/parser/parseCoords.d.ts +0 -0
  792. package/dist/src/gradient/parser/parseCoords.d.ts.map +0 -0
  793. package/dist/src/gradient/parser/parseCoords.min.mjs +0 -0
  794. package/dist/src/gradient/parser/parseCoords.min.mjs.map +0 -0
  795. package/dist/src/gradient/parser/parseCoords.mjs +0 -0
  796. package/dist/src/gradient/parser/parseCoords.mjs.map +0 -0
  797. package/dist/src/gradient/typedefs.d.ts +0 -0
  798. package/dist/src/gradient/typedefs.d.ts.map +0 -0
  799. package/dist/src/mixins/eraser_brush.mixin.d.ts +0 -0
  800. package/dist/src/mixins/eraser_brush.mixin.d.ts.map +0 -0
  801. package/dist/src/parkinglot/canvas_animation.mixin.d.ts +0 -0
  802. package/dist/src/parkinglot/canvas_animation.mixin.d.ts.map +0 -0
  803. package/dist/src/parkinglot/straighten.d.ts +0 -0
  804. package/dist/src/parkinglot/straighten.d.ts.map +0 -0
  805. package/dist/src/parser/applyViewboxTransform.d.ts +0 -0
  806. package/dist/src/parser/applyViewboxTransform.d.ts.map +0 -0
  807. package/dist/src/parser/applyViewboxTransform.min.mjs +0 -0
  808. package/dist/src/parser/applyViewboxTransform.min.mjs.map +0 -0
  809. package/dist/src/parser/applyViewboxTransform.mjs +0 -0
  810. package/dist/src/parser/applyViewboxTransform.mjs.map +0 -0
  811. package/dist/src/parser/attributes.d.ts +0 -0
  812. package/dist/src/parser/attributes.d.ts.map +0 -0
  813. package/dist/src/parser/attributes.min.mjs +0 -0
  814. package/dist/src/parser/attributes.min.mjs.map +0 -0
  815. package/dist/src/parser/attributes.mjs +0 -0
  816. package/dist/src/parser/attributes.mjs.map +0 -0
  817. package/dist/src/parser/constants.d.ts +0 -0
  818. package/dist/src/parser/constants.d.ts.map +0 -0
  819. package/dist/src/parser/constants.min.mjs +0 -0
  820. package/dist/src/parser/constants.min.mjs.map +0 -0
  821. package/dist/src/parser/constants.mjs +0 -0
  822. package/dist/src/parser/constants.mjs.map +0 -0
  823. package/dist/src/parser/doesSomeParentMatch.d.ts +0 -0
  824. package/dist/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  825. package/dist/src/parser/doesSomeParentMatch.min.mjs +0 -0
  826. package/dist/src/parser/doesSomeParentMatch.min.mjs.map +0 -0
  827. package/dist/src/parser/doesSomeParentMatch.mjs +0 -0
  828. package/dist/src/parser/doesSomeParentMatch.mjs.map +0 -0
  829. package/dist/src/parser/elementMatchesRule.d.ts +0 -0
  830. package/dist/src/parser/elementMatchesRule.d.ts.map +0 -0
  831. package/dist/src/parser/elementMatchesRule.min.mjs +0 -0
  832. package/dist/src/parser/elementMatchesRule.min.mjs.map +0 -0
  833. package/dist/src/parser/elementMatchesRule.mjs +0 -0
  834. package/dist/src/parser/elementMatchesRule.mjs.map +0 -0
  835. package/dist/src/parser/elements_parser.d.ts +0 -0
  836. package/dist/src/parser/elements_parser.d.ts.map +0 -0
  837. package/dist/src/parser/elements_parser.min.mjs +0 -0
  838. package/dist/src/parser/elements_parser.min.mjs.map +0 -0
  839. package/dist/src/parser/elements_parser.mjs +0 -0
  840. package/dist/src/parser/elements_parser.mjs.map +0 -0
  841. package/dist/src/parser/getCSSRules.d.ts +0 -0
  842. package/dist/src/parser/getCSSRules.d.ts.map +0 -0
  843. package/dist/src/parser/getCSSRules.min.mjs +0 -0
  844. package/dist/src/parser/getCSSRules.min.mjs.map +0 -0
  845. package/dist/src/parser/getCSSRules.mjs +0 -0
  846. package/dist/src/parser/getCSSRules.mjs.map +0 -0
  847. package/dist/src/parser/getGlobalStylesForElement.d.ts +0 -0
  848. package/dist/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  849. package/dist/src/parser/getGlobalStylesForElement.min.mjs +0 -0
  850. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +0 -0
  851. package/dist/src/parser/getGlobalStylesForElement.mjs +0 -0
  852. package/dist/src/parser/getGlobalStylesForElement.mjs.map +0 -0
  853. package/dist/src/parser/getGradientDefs.d.ts +0 -0
  854. package/dist/src/parser/getGradientDefs.d.ts.map +0 -0
  855. package/dist/src/parser/getGradientDefs.min.mjs +0 -0
  856. package/dist/src/parser/getGradientDefs.min.mjs.map +0 -0
  857. package/dist/src/parser/getGradientDefs.mjs +0 -0
  858. package/dist/src/parser/getGradientDefs.mjs.map +0 -0
  859. package/dist/src/parser/getMultipleNodes.d.ts +0 -0
  860. package/dist/src/parser/getMultipleNodes.d.ts.map +0 -0
  861. package/dist/src/parser/getMultipleNodes.min.mjs +0 -0
  862. package/dist/src/parser/getMultipleNodes.min.mjs.map +0 -0
  863. package/dist/src/parser/getMultipleNodes.mjs +0 -0
  864. package/dist/src/parser/getMultipleNodes.mjs.map +0 -0
  865. package/dist/src/parser/getSvgRegex.d.ts +0 -0
  866. package/dist/src/parser/getSvgRegex.d.ts.map +0 -0
  867. package/dist/src/parser/getSvgRegex.min.mjs +0 -0
  868. package/dist/src/parser/getSvgRegex.min.mjs.map +0 -0
  869. package/dist/src/parser/getSvgRegex.mjs +0 -0
  870. package/dist/src/parser/getSvgRegex.mjs.map +0 -0
  871. package/dist/src/parser/getTagName.d.ts +0 -0
  872. package/dist/src/parser/getTagName.d.ts.map +0 -0
  873. package/dist/src/parser/getTagName.min.mjs +0 -0
  874. package/dist/src/parser/getTagName.min.mjs.map +0 -0
  875. package/dist/src/parser/getTagName.mjs +0 -0
  876. package/dist/src/parser/getTagName.mjs.map +0 -0
  877. package/dist/src/parser/hasInvalidAncestor.d.ts +0 -0
  878. package/dist/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  879. package/dist/src/parser/hasInvalidAncestor.min.mjs +0 -0
  880. package/dist/src/parser/hasInvalidAncestor.min.mjs.map +0 -0
  881. package/dist/src/parser/hasInvalidAncestor.mjs +0 -0
  882. package/dist/src/parser/hasInvalidAncestor.mjs.map +0 -0
  883. package/dist/src/parser/loadSVGFromString.d.ts +0 -0
  884. package/dist/src/parser/loadSVGFromString.d.ts.map +0 -0
  885. package/dist/src/parser/loadSVGFromString.min.mjs +0 -0
  886. package/dist/src/parser/loadSVGFromString.min.mjs.map +0 -0
  887. package/dist/src/parser/loadSVGFromString.mjs +0 -0
  888. package/dist/src/parser/loadSVGFromString.mjs.map +0 -0
  889. package/dist/src/parser/loadSVGFromURL.d.ts +0 -0
  890. package/dist/src/parser/loadSVGFromURL.d.ts.map +0 -0
  891. package/dist/src/parser/loadSVGFromURL.min.mjs +0 -0
  892. package/dist/src/parser/loadSVGFromURL.min.mjs.map +0 -0
  893. package/dist/src/parser/loadSVGFromURL.mjs +0 -0
  894. package/dist/src/parser/loadSVGFromURL.mjs.map +0 -0
  895. package/dist/src/parser/normalizeAttr.d.ts +0 -0
  896. package/dist/src/parser/normalizeAttr.d.ts.map +0 -0
  897. package/dist/src/parser/normalizeAttr.min.mjs +0 -0
  898. package/dist/src/parser/normalizeAttr.min.mjs.map +0 -0
  899. package/dist/src/parser/normalizeAttr.mjs +0 -0
  900. package/dist/src/parser/normalizeAttr.mjs.map +0 -0
  901. package/dist/src/parser/normalizeValue.d.ts +0 -0
  902. package/dist/src/parser/normalizeValue.d.ts.map +0 -0
  903. package/dist/src/parser/normalizeValue.min.mjs +0 -0
  904. package/dist/src/parser/normalizeValue.min.mjs.map +0 -0
  905. package/dist/src/parser/normalizeValue.mjs +0 -0
  906. package/dist/src/parser/normalizeValue.mjs.map +0 -0
  907. package/dist/src/parser/parseAttributes.d.ts +0 -0
  908. package/dist/src/parser/parseAttributes.d.ts.map +0 -0
  909. package/dist/src/parser/parseAttributes.min.mjs +0 -0
  910. package/dist/src/parser/parseAttributes.min.mjs.map +0 -0
  911. package/dist/src/parser/parseAttributes.mjs +0 -0
  912. package/dist/src/parser/parseAttributes.mjs.map +0 -0
  913. package/dist/src/parser/parseFontDeclaration.d.ts +0 -0
  914. package/dist/src/parser/parseFontDeclaration.d.ts.map +0 -0
  915. package/dist/src/parser/parseFontDeclaration.min.mjs +0 -0
  916. package/dist/src/parser/parseFontDeclaration.min.mjs.map +0 -0
  917. package/dist/src/parser/parseFontDeclaration.mjs +0 -0
  918. package/dist/src/parser/parseFontDeclaration.mjs.map +0 -0
  919. package/dist/src/parser/parsePointsAttribute.d.ts +0 -0
  920. package/dist/src/parser/parsePointsAttribute.d.ts.map +0 -0
  921. package/dist/src/parser/parsePointsAttribute.min.mjs +0 -0
  922. package/dist/src/parser/parsePointsAttribute.min.mjs.map +0 -0
  923. package/dist/src/parser/parsePointsAttribute.mjs +0 -0
  924. package/dist/src/parser/parsePointsAttribute.mjs.map +0 -0
  925. package/dist/src/parser/parseSVGDocument.d.ts +0 -0
  926. package/dist/src/parser/parseSVGDocument.d.ts.map +0 -0
  927. package/dist/src/parser/parseSVGDocument.min.mjs +0 -0
  928. package/dist/src/parser/parseSVGDocument.min.mjs.map +0 -0
  929. package/dist/src/parser/parseSVGDocument.mjs +0 -0
  930. package/dist/src/parser/parseSVGDocument.mjs.map +0 -0
  931. package/dist/src/parser/parseStyleAttribute.d.ts +0 -0
  932. package/dist/src/parser/parseStyleAttribute.d.ts.map +0 -0
  933. package/dist/src/parser/parseStyleAttribute.min.mjs +0 -0
  934. package/dist/src/parser/parseStyleAttribute.min.mjs.map +0 -0
  935. package/dist/src/parser/parseStyleAttribute.mjs +0 -0
  936. package/dist/src/parser/parseStyleAttribute.mjs.map +0 -0
  937. package/dist/src/parser/parseStyleObject.d.ts +0 -0
  938. package/dist/src/parser/parseStyleObject.d.ts.map +0 -0
  939. package/dist/src/parser/parseStyleObject.min.mjs +0 -0
  940. package/dist/src/parser/parseStyleObject.min.mjs.map +0 -0
  941. package/dist/src/parser/parseStyleObject.mjs +0 -0
  942. package/dist/src/parser/parseStyleObject.mjs.map +0 -0
  943. package/dist/src/parser/parseStyleString.d.ts +0 -0
  944. package/dist/src/parser/parseStyleString.d.ts.map +0 -0
  945. package/dist/src/parser/parseStyleString.min.mjs +0 -0
  946. package/dist/src/parser/parseStyleString.min.mjs.map +0 -0
  947. package/dist/src/parser/parseStyleString.mjs +0 -0
  948. package/dist/src/parser/parseStyleString.mjs.map +0 -0
  949. package/dist/src/parser/parseTransformAttribute.d.ts +0 -0
  950. package/dist/src/parser/parseTransformAttribute.d.ts.map +0 -0
  951. package/dist/src/parser/parseTransformAttribute.min.mjs +0 -0
  952. package/dist/src/parser/parseTransformAttribute.min.mjs.map +0 -0
  953. package/dist/src/parser/parseTransformAttribute.mjs +0 -0
  954. package/dist/src/parser/parseTransformAttribute.mjs.map +0 -0
  955. package/dist/src/parser/parseUseDirectives.d.ts +0 -0
  956. package/dist/src/parser/parseUseDirectives.d.ts.map +0 -0
  957. package/dist/src/parser/parseUseDirectives.min.mjs +0 -0
  958. package/dist/src/parser/parseUseDirectives.min.mjs.map +0 -0
  959. package/dist/src/parser/parseUseDirectives.mjs +0 -0
  960. package/dist/src/parser/parseUseDirectives.mjs.map +0 -0
  961. package/dist/src/parser/percent.d.ts +0 -0
  962. package/dist/src/parser/percent.d.ts.map +0 -0
  963. package/dist/src/parser/percent.min.mjs +0 -0
  964. package/dist/src/parser/percent.min.mjs.map +0 -0
  965. package/dist/src/parser/percent.mjs +0 -0
  966. package/dist/src/parser/percent.mjs.map +0 -0
  967. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  968. package/dist/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  969. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs +0 -0
  970. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +0 -0
  971. package/dist/src/parser/recursivelyParseGradientsXlink.mjs +0 -0
  972. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +0 -0
  973. package/dist/src/parser/selectorMatches.d.ts +0 -0
  974. package/dist/src/parser/selectorMatches.d.ts.map +0 -0
  975. package/dist/src/parser/selectorMatches.min.mjs +0 -0
  976. package/dist/src/parser/selectorMatches.min.mjs.map +0 -0
  977. package/dist/src/parser/selectorMatches.mjs +0 -0
  978. package/dist/src/parser/selectorMatches.mjs.map +0 -0
  979. package/dist/src/parser/setStrokeFillOpacity.d.ts +0 -0
  980. package/dist/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  981. package/dist/src/parser/setStrokeFillOpacity.min.mjs +0 -0
  982. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +0 -0
  983. package/dist/src/parser/setStrokeFillOpacity.mjs +0 -0
  984. package/dist/src/parser/setStrokeFillOpacity.mjs.map +0 -0
  985. package/dist/src/parser/typedefs.d.ts +0 -0
  986. package/dist/src/parser/typedefs.d.ts.map +0 -0
  987. package/dist/src/shapes/ActiveSelection.d.ts +0 -0
  988. package/dist/src/shapes/ActiveSelection.d.ts.map +0 -0
  989. package/dist/src/shapes/ActiveSelection.min.mjs +0 -0
  990. package/dist/src/shapes/ActiveSelection.min.mjs.map +0 -0
  991. package/dist/src/shapes/ActiveSelection.mjs +0 -0
  992. package/dist/src/shapes/ActiveSelection.mjs.map +0 -0
  993. package/dist/src/shapes/Circle.d.ts +0 -0
  994. package/dist/src/shapes/Circle.d.ts.map +0 -0
  995. package/dist/src/shapes/Circle.min.mjs +0 -0
  996. package/dist/src/shapes/Circle.min.mjs.map +0 -0
  997. package/dist/src/shapes/Circle.mjs +0 -0
  998. package/dist/src/shapes/Circle.mjs.map +0 -0
  999. package/dist/src/shapes/Ellipse.d.ts +0 -0
  1000. package/dist/src/shapes/Ellipse.d.ts.map +0 -0
  1001. package/dist/src/shapes/Ellipse.min.mjs +0 -0
  1002. package/dist/src/shapes/Ellipse.min.mjs.map +0 -0
  1003. package/dist/src/shapes/Ellipse.mjs +0 -0
  1004. package/dist/src/shapes/Ellipse.mjs.map +0 -0
  1005. package/dist/src/shapes/Group.d.ts +0 -0
  1006. package/dist/src/shapes/Group.d.ts.map +0 -0
  1007. package/dist/src/shapes/Group.min.mjs +0 -0
  1008. package/dist/src/shapes/Group.min.mjs.map +0 -0
  1009. package/dist/src/shapes/Group.mjs +0 -0
  1010. package/dist/src/shapes/Group.mjs.map +0 -0
  1011. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1012. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1013. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +0 -0
  1014. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +0 -0
  1015. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +0 -0
  1016. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +0 -0
  1017. package/dist/src/shapes/IText/IText.d.ts +0 -0
  1018. package/dist/src/shapes/IText/IText.d.ts.map +0 -0
  1019. package/dist/src/shapes/IText/IText.min.mjs +0 -0
  1020. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  1021. package/dist/src/shapes/IText/IText.mjs +206 -206
  1022. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  1023. package/dist/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1024. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
  1025. package/dist/src/shapes/IText/ITextBehavior.min.mjs +0 -0
  1026. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  1027. package/dist/src/shapes/IText/ITextBehavior.mjs +152 -152
  1028. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  1029. package/dist/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1030. package/dist/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1031. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +0 -0
  1032. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  1033. package/dist/src/shapes/IText/ITextClickBehavior.mjs +36 -36
  1034. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  1035. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1036. package/dist/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1037. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +0 -0
  1038. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +0 -0
  1039. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +0 -0
  1040. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +0 -0
  1041. package/dist/src/shapes/IText/constants.d.ts +0 -0
  1042. package/dist/src/shapes/IText/constants.d.ts.map +0 -0
  1043. package/dist/src/shapes/IText/constants.min.mjs +0 -0
  1044. package/dist/src/shapes/IText/constants.min.mjs.map +0 -0
  1045. package/dist/src/shapes/IText/constants.mjs +0 -0
  1046. package/dist/src/shapes/IText/constants.mjs.map +0 -0
  1047. package/dist/src/shapes/Image.d.ts +0 -0
  1048. package/dist/src/shapes/Image.d.ts.map +0 -0
  1049. package/dist/src/shapes/Image.min.mjs +0 -0
  1050. package/dist/src/shapes/Image.min.mjs.map +0 -0
  1051. package/dist/src/shapes/Image.mjs +0 -0
  1052. package/dist/src/shapes/Image.mjs.map +0 -0
  1053. package/dist/src/shapes/Line.d.ts +0 -0
  1054. package/dist/src/shapes/Line.d.ts.map +0 -0
  1055. package/dist/src/shapes/Line.min.mjs +0 -0
  1056. package/dist/src/shapes/Line.min.mjs.map +0 -0
  1057. package/dist/src/shapes/Line.mjs +0 -0
  1058. package/dist/src/shapes/Line.mjs.map +0 -0
  1059. package/dist/src/shapes/Object/FabricObject.d.ts +0 -0
  1060. package/dist/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1061. package/dist/src/shapes/Object/FabricObject.min.mjs +0 -0
  1062. package/dist/src/shapes/Object/FabricObject.min.mjs.map +0 -0
  1063. package/dist/src/shapes/Object/FabricObject.mjs +0 -0
  1064. package/dist/src/shapes/Object/FabricObject.mjs.map +0 -0
  1065. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1066. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1067. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +0 -0
  1068. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +0 -0
  1069. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +0 -0
  1070. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +0 -0
  1071. package/dist/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1072. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1073. package/dist/src/shapes/Object/InteractiveObject.min.mjs +0 -0
  1074. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +0 -0
  1075. package/dist/src/shapes/Object/InteractiveObject.mjs +0 -0
  1076. package/dist/src/shapes/Object/InteractiveObject.mjs.map +0 -0
  1077. package/dist/src/shapes/Object/Object.d.ts +0 -0
  1078. package/dist/src/shapes/Object/Object.d.ts.map +0 -0
  1079. package/dist/src/shapes/Object/Object.min.mjs +0 -0
  1080. package/dist/src/shapes/Object/Object.min.mjs.map +0 -0
  1081. package/dist/src/shapes/Object/Object.mjs +0 -0
  1082. package/dist/src/shapes/Object/Object.mjs.map +0 -0
  1083. package/dist/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1084. package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1085. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +0 -0
  1086. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +0 -0
  1087. package/dist/src/shapes/Object/ObjectGeometry.mjs +0 -0
  1088. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +0 -0
  1089. package/dist/src/shapes/Object/defaultValues.d.ts +0 -0
  1090. package/dist/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1091. package/dist/src/shapes/Object/defaultValues.min.mjs +0 -0
  1092. package/dist/src/shapes/Object/defaultValues.min.mjs.map +0 -0
  1093. package/dist/src/shapes/Object/defaultValues.mjs +0 -0
  1094. package/dist/src/shapes/Object/defaultValues.mjs.map +0 -0
  1095. package/dist/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1096. package/dist/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1097. package/dist/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1098. package/dist/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1099. package/dist/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1100. package/dist/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1101. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1102. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1103. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1104. package/dist/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1105. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1106. package/dist/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1107. package/dist/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1108. package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1109. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1110. package/dist/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1111. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1112. package/dist/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1113. package/dist/src/shapes/Object/types/index.d.ts +0 -0
  1114. package/dist/src/shapes/Object/types/index.d.ts.map +0 -0
  1115. package/dist/src/shapes/Path.d.ts +0 -0
  1116. package/dist/src/shapes/Path.d.ts.map +0 -0
  1117. package/dist/src/shapes/Path.min.mjs +0 -0
  1118. package/dist/src/shapes/Path.min.mjs.map +0 -0
  1119. package/dist/src/shapes/Path.mjs +0 -0
  1120. package/dist/src/shapes/Path.mjs.map +0 -0
  1121. package/dist/src/shapes/Polygon.d.ts +0 -0
  1122. package/dist/src/shapes/Polygon.d.ts.map +0 -0
  1123. package/dist/src/shapes/Polygon.min.mjs +0 -0
  1124. package/dist/src/shapes/Polygon.min.mjs.map +0 -0
  1125. package/dist/src/shapes/Polygon.mjs +0 -0
  1126. package/dist/src/shapes/Polygon.mjs.map +0 -0
  1127. package/dist/src/shapes/Polyline.d.ts +0 -0
  1128. package/dist/src/shapes/Polyline.d.ts.map +0 -0
  1129. package/dist/src/shapes/Polyline.min.mjs +0 -0
  1130. package/dist/src/shapes/Polyline.min.mjs.map +0 -0
  1131. package/dist/src/shapes/Polyline.mjs +0 -0
  1132. package/dist/src/shapes/Polyline.mjs.map +0 -0
  1133. package/dist/src/shapes/Rect.d.ts +0 -0
  1134. package/dist/src/shapes/Rect.d.ts.map +0 -0
  1135. package/dist/src/shapes/Rect.min.mjs +0 -0
  1136. package/dist/src/shapes/Rect.min.mjs.map +0 -0
  1137. package/dist/src/shapes/Rect.mjs +0 -0
  1138. package/dist/src/shapes/Rect.mjs.map +0 -0
  1139. package/dist/src/shapes/Text/StyledText.d.ts +0 -0
  1140. package/dist/src/shapes/Text/StyledText.d.ts.map +0 -0
  1141. package/dist/src/shapes/Text/StyledText.min.mjs +0 -0
  1142. package/dist/src/shapes/Text/StyledText.min.mjs.map +0 -0
  1143. package/dist/src/shapes/Text/StyledText.mjs +0 -0
  1144. package/dist/src/shapes/Text/StyledText.mjs.map +0 -0
  1145. package/dist/src/shapes/Text/Text.d.ts +0 -0
  1146. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  1147. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  1148. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  1149. package/dist/src/shapes/Text/Text.mjs +347 -295
  1150. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  1151. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1152. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1153. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +0 -0
  1154. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +0 -0
  1155. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -0
  1156. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +0 -0
  1157. package/dist/src/shapes/Text/constants.d.ts +0 -0
  1158. package/dist/src/shapes/Text/constants.d.ts.map +0 -0
  1159. package/dist/src/shapes/Text/constants.min.mjs +0 -0
  1160. package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
  1161. package/dist/src/shapes/Text/constants.mjs +0 -0
  1162. package/dist/src/shapes/Text/constants.mjs.map +1 -1
  1163. package/dist/src/shapes/Textbox.d.ts +0 -0
  1164. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  1165. package/dist/src/shapes/Textbox.min.mjs +1 -1
  1166. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  1167. package/dist/src/shapes/Textbox.mjs +149 -199
  1168. package/dist/src/shapes/Textbox.mjs.map +1 -1
  1169. package/dist/src/shapes/Triangle.d.ts +0 -0
  1170. package/dist/src/shapes/Triangle.d.ts.map +0 -0
  1171. package/dist/src/shapes/Triangle.min.mjs +0 -0
  1172. package/dist/src/shapes/Triangle.min.mjs.map +0 -0
  1173. package/dist/src/shapes/Triangle.mjs +0 -0
  1174. package/dist/src/shapes/Triangle.mjs.map +0 -0
  1175. package/dist/src/text/browserLines.d.ts +0 -0
  1176. package/dist/src/text/browserLines.d.ts.map +0 -0
  1177. package/dist/src/text/browserLines.min.mjs +0 -0
  1178. package/dist/src/text/browserLines.min.mjs.map +1 -1
  1179. package/dist/src/text/browserLines.mjs +20 -20
  1180. package/dist/src/text/browserLines.mjs.map +1 -1
  1181. package/dist/src/text/ellipsis.d.ts +0 -0
  1182. package/dist/src/text/ellipsis.d.ts.map +0 -0
  1183. package/dist/src/text/ellipsis.min.mjs +0 -0
  1184. package/dist/src/text/ellipsis.min.mjs.map +1 -1
  1185. package/dist/src/text/ellipsis.mjs +11 -11
  1186. package/dist/src/text/ellipsis.mjs.map +1 -1
  1187. package/dist/src/text/hitTest.d.ts +0 -0
  1188. package/dist/src/text/hitTest.d.ts.map +0 -0
  1189. package/dist/src/text/hitTest.min.mjs +0 -0
  1190. package/dist/src/text/hitTest.min.mjs.map +1 -1
  1191. package/dist/src/text/hitTest.mjs +19 -19
  1192. package/dist/src/text/hitTest.mjs.map +1 -1
  1193. package/dist/src/text/layout.d.ts +0 -0
  1194. package/dist/src/text/layout.d.ts.map +0 -0
  1195. package/dist/src/text/layout.min.mjs +0 -0
  1196. package/dist/src/text/layout.min.mjs.map +1 -1
  1197. package/dist/src/text/layout.mjs +33 -33
  1198. package/dist/src/text/layout.mjs.map +1 -1
  1199. package/dist/src/text/measure.d.ts +0 -0
  1200. package/dist/src/text/measure.d.ts.map +0 -0
  1201. package/dist/src/text/measure.min.mjs +0 -0
  1202. package/dist/src/text/measure.min.mjs.map +1 -1
  1203. package/dist/src/text/measure.mjs +20 -20
  1204. package/dist/src/text/measure.mjs.map +1 -1
  1205. package/dist/src/text/overlayEditor.d.ts +0 -0
  1206. package/dist/src/text/overlayEditor.d.ts.map +1 -1
  1207. package/dist/src/text/overlayEditor.min.mjs +1 -1
  1208. package/dist/src/text/overlayEditor.min.mjs.map +1 -1
  1209. package/dist/src/text/overlayEditor.mjs +176 -42
  1210. package/dist/src/text/overlayEditor.mjs.map +1 -1
  1211. package/dist/src/text/unicode.d.ts +0 -0
  1212. package/dist/src/text/unicode.d.ts.map +0 -0
  1213. package/dist/src/text/unicode.min.mjs +0 -0
  1214. package/dist/src/text/unicode.min.mjs.map +1 -1
  1215. package/dist/src/text/unicode.mjs +8 -8
  1216. package/dist/src/text/unicode.mjs.map +1 -1
  1217. package/dist/src/typedefs.d.ts +0 -0
  1218. package/dist/src/typedefs.d.ts.map +0 -0
  1219. package/dist/src/util/animation/AnimationBase.d.ts +0 -0
  1220. package/dist/src/util/animation/AnimationBase.d.ts.map +0 -0
  1221. package/dist/src/util/animation/AnimationBase.min.mjs +0 -0
  1222. package/dist/src/util/animation/AnimationBase.min.mjs.map +0 -0
  1223. package/dist/src/util/animation/AnimationBase.mjs +0 -0
  1224. package/dist/src/util/animation/AnimationBase.mjs.map +0 -0
  1225. package/dist/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1226. package/dist/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1227. package/dist/src/util/animation/AnimationFrameProvider.min.mjs +0 -0
  1228. package/dist/src/util/animation/AnimationFrameProvider.min.mjs.map +0 -0
  1229. package/dist/src/util/animation/AnimationFrameProvider.mjs +0 -0
  1230. package/dist/src/util/animation/AnimationFrameProvider.mjs.map +0 -0
  1231. package/dist/src/util/animation/AnimationRegistry.d.ts +0 -0
  1232. package/dist/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1233. package/dist/src/util/animation/AnimationRegistry.min.mjs +0 -0
  1234. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +0 -0
  1235. package/dist/src/util/animation/AnimationRegistry.mjs +0 -0
  1236. package/dist/src/util/animation/AnimationRegistry.mjs.map +0 -0
  1237. package/dist/src/util/animation/ArrayAnimation.d.ts +0 -0
  1238. package/dist/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1239. package/dist/src/util/animation/ArrayAnimation.min.mjs +0 -0
  1240. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +0 -0
  1241. package/dist/src/util/animation/ArrayAnimation.mjs +0 -0
  1242. package/dist/src/util/animation/ArrayAnimation.mjs.map +0 -0
  1243. package/dist/src/util/animation/ColorAnimation.d.ts +0 -0
  1244. package/dist/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1245. package/dist/src/util/animation/ColorAnimation.min.mjs +0 -0
  1246. package/dist/src/util/animation/ColorAnimation.min.mjs.map +0 -0
  1247. package/dist/src/util/animation/ColorAnimation.mjs +0 -0
  1248. package/dist/src/util/animation/ColorAnimation.mjs.map +0 -0
  1249. package/dist/src/util/animation/ValueAnimation.d.ts +0 -0
  1250. package/dist/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1251. package/dist/src/util/animation/ValueAnimation.min.mjs +0 -0
  1252. package/dist/src/util/animation/ValueAnimation.min.mjs.map +0 -0
  1253. package/dist/src/util/animation/ValueAnimation.mjs +0 -0
  1254. package/dist/src/util/animation/ValueAnimation.mjs.map +0 -0
  1255. package/dist/src/util/animation/animate.d.ts +0 -0
  1256. package/dist/src/util/animation/animate.d.ts.map +0 -0
  1257. package/dist/src/util/animation/animate.min.mjs +0 -0
  1258. package/dist/src/util/animation/animate.min.mjs.map +0 -0
  1259. package/dist/src/util/animation/animate.mjs +0 -0
  1260. package/dist/src/util/animation/animate.mjs.map +0 -0
  1261. package/dist/src/util/animation/easing.d.ts +0 -0
  1262. package/dist/src/util/animation/easing.d.ts.map +0 -0
  1263. package/dist/src/util/animation/easing.min.mjs +0 -0
  1264. package/dist/src/util/animation/easing.min.mjs.map +0 -0
  1265. package/dist/src/util/animation/easing.mjs +0 -0
  1266. package/dist/src/util/animation/easing.mjs.map +0 -0
  1267. package/dist/src/util/animation/index.d.ts +0 -0
  1268. package/dist/src/util/animation/index.d.ts.map +0 -0
  1269. package/dist/src/util/animation/types.d.ts +0 -0
  1270. package/dist/src/util/animation/types.d.ts.map +0 -0
  1271. package/dist/src/util/applyMixins.d.ts +0 -0
  1272. package/dist/src/util/applyMixins.d.ts.map +0 -0
  1273. package/dist/src/util/applyMixins.min.mjs +0 -0
  1274. package/dist/src/util/applyMixins.min.mjs.map +0 -0
  1275. package/dist/src/util/applyMixins.mjs +0 -0
  1276. package/dist/src/util/applyMixins.mjs.map +0 -0
  1277. package/dist/src/util/dom_event.d.ts +0 -0
  1278. package/dist/src/util/dom_event.d.ts.map +0 -0
  1279. package/dist/src/util/dom_event.min.mjs +0 -0
  1280. package/dist/src/util/dom_event.min.mjs.map +0 -0
  1281. package/dist/src/util/dom_event.mjs +0 -0
  1282. package/dist/src/util/dom_event.mjs.map +0 -0
  1283. package/dist/src/util/dom_misc.d.ts +0 -0
  1284. package/dist/src/util/dom_misc.d.ts.map +0 -0
  1285. package/dist/src/util/dom_misc.min.mjs +0 -0
  1286. package/dist/src/util/dom_misc.min.mjs.map +0 -0
  1287. package/dist/src/util/dom_misc.mjs +0 -0
  1288. package/dist/src/util/dom_misc.mjs.map +0 -0
  1289. package/dist/src/util/index.d.ts +0 -0
  1290. package/dist/src/util/index.d.ts.map +0 -0
  1291. package/dist/src/util/index.min.mjs +0 -0
  1292. package/dist/src/util/index.min.mjs.map +0 -0
  1293. package/dist/src/util/index.mjs +0 -0
  1294. package/dist/src/util/index.mjs.map +0 -0
  1295. package/dist/src/util/internals/applyCanvasTransform.d.ts +0 -0
  1296. package/dist/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  1297. package/dist/src/util/internals/applyCanvasTransform.min.mjs +0 -0
  1298. package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +0 -0
  1299. package/dist/src/util/internals/applyCanvasTransform.mjs +0 -0
  1300. package/dist/src/util/internals/applyCanvasTransform.mjs.map +0 -0
  1301. package/dist/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  1302. package/dist/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  1303. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs +0 -0
  1304. package/dist/src/util/internals/cleanupSvgAttribute.min.mjs.map +0 -0
  1305. package/dist/src/util/internals/cleanupSvgAttribute.mjs +0 -0
  1306. package/dist/src/util/internals/cleanupSvgAttribute.mjs.map +0 -0
  1307. package/dist/src/util/internals/cloneStyles.d.ts +0 -0
  1308. package/dist/src/util/internals/cloneStyles.d.ts.map +0 -0
  1309. package/dist/src/util/internals/cloneStyles.min.mjs +0 -0
  1310. package/dist/src/util/internals/cloneStyles.min.mjs.map +0 -0
  1311. package/dist/src/util/internals/cloneStyles.mjs +0 -0
  1312. package/dist/src/util/internals/cloneStyles.mjs.map +0 -0
  1313. package/dist/src/util/internals/console.d.ts +0 -0
  1314. package/dist/src/util/internals/console.d.ts.map +0 -0
  1315. package/dist/src/util/internals/console.min.mjs +0 -0
  1316. package/dist/src/util/internals/console.min.mjs.map +0 -0
  1317. package/dist/src/util/internals/console.mjs +0 -0
  1318. package/dist/src/util/internals/console.mjs.map +0 -0
  1319. package/dist/src/util/internals/dom_style.d.ts +0 -0
  1320. package/dist/src/util/internals/dom_style.d.ts.map +0 -0
  1321. package/dist/src/util/internals/dom_style.min.mjs +0 -0
  1322. package/dist/src/util/internals/dom_style.min.mjs.map +0 -0
  1323. package/dist/src/util/internals/dom_style.mjs +0 -0
  1324. package/dist/src/util/internals/dom_style.mjs.map +0 -0
  1325. package/dist/src/util/internals/findRight.d.ts +0 -0
  1326. package/dist/src/util/internals/findRight.d.ts.map +0 -0
  1327. package/dist/src/util/internals/findRight.min.mjs +0 -0
  1328. package/dist/src/util/internals/findRight.min.mjs.map +0 -0
  1329. package/dist/src/util/internals/findRight.mjs +0 -0
  1330. package/dist/src/util/internals/findRight.mjs.map +0 -0
  1331. package/dist/src/util/internals/getRandomInt.d.ts +0 -0
  1332. package/dist/src/util/internals/getRandomInt.d.ts.map +0 -0
  1333. package/dist/src/util/internals/getRandomInt.min.mjs +0 -0
  1334. package/dist/src/util/internals/getRandomInt.min.mjs.map +0 -0
  1335. package/dist/src/util/internals/getRandomInt.mjs +0 -0
  1336. package/dist/src/util/internals/getRandomInt.mjs.map +0 -0
  1337. package/dist/src/util/internals/ifNaN.d.ts +0 -0
  1338. package/dist/src/util/internals/ifNaN.d.ts.map +0 -0
  1339. package/dist/src/util/internals/ifNaN.min.mjs +0 -0
  1340. package/dist/src/util/internals/ifNaN.min.mjs.map +0 -0
  1341. package/dist/src/util/internals/ifNaN.mjs +0 -0
  1342. package/dist/src/util/internals/ifNaN.mjs.map +0 -0
  1343. package/dist/src/util/internals/removeFromArray.d.ts +0 -0
  1344. package/dist/src/util/internals/removeFromArray.d.ts.map +0 -0
  1345. package/dist/src/util/internals/removeFromArray.min.mjs +0 -0
  1346. package/dist/src/util/internals/removeFromArray.min.mjs.map +0 -0
  1347. package/dist/src/util/internals/removeFromArray.mjs +0 -0
  1348. package/dist/src/util/internals/removeFromArray.mjs.map +0 -0
  1349. package/dist/src/util/internals/uid.d.ts +0 -0
  1350. package/dist/src/util/internals/uid.d.ts.map +0 -0
  1351. package/dist/src/util/internals/uid.min.mjs +0 -0
  1352. package/dist/src/util/internals/uid.min.mjs.map +0 -0
  1353. package/dist/src/util/internals/uid.mjs +0 -0
  1354. package/dist/src/util/internals/uid.mjs.map +0 -0
  1355. package/dist/src/util/lang_string.d.ts +0 -0
  1356. package/dist/src/util/lang_string.d.ts.map +0 -0
  1357. package/dist/src/util/lang_string.min.mjs +0 -0
  1358. package/dist/src/util/lang_string.min.mjs.map +0 -0
  1359. package/dist/src/util/lang_string.mjs +0 -0
  1360. package/dist/src/util/lang_string.mjs.map +0 -0
  1361. package/dist/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  1362. package/dist/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  1363. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs +0 -0
  1364. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +0 -0
  1365. package/dist/src/util/misc/boundingBoxFromPoints.mjs +0 -0
  1366. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +0 -0
  1367. package/dist/src/util/misc/capValue.d.ts +0 -0
  1368. package/dist/src/util/misc/capValue.d.ts.map +0 -0
  1369. package/dist/src/util/misc/capValue.min.mjs +0 -0
  1370. package/dist/src/util/misc/capValue.min.mjs.map +0 -0
  1371. package/dist/src/util/misc/capValue.mjs +0 -0
  1372. package/dist/src/util/misc/capValue.mjs.map +0 -0
  1373. package/dist/src/util/misc/cos.d.ts +0 -0
  1374. package/dist/src/util/misc/cos.d.ts.map +0 -0
  1375. package/dist/src/util/misc/cos.min.mjs +0 -0
  1376. package/dist/src/util/misc/cos.min.mjs.map +0 -0
  1377. package/dist/src/util/misc/cos.mjs +0 -0
  1378. package/dist/src/util/misc/cos.mjs.map +0 -0
  1379. package/dist/src/util/misc/dom.d.ts +0 -0
  1380. package/dist/src/util/misc/dom.d.ts.map +0 -0
  1381. package/dist/src/util/misc/dom.min.mjs +0 -0
  1382. package/dist/src/util/misc/dom.min.mjs.map +0 -0
  1383. package/dist/src/util/misc/dom.mjs +0 -0
  1384. package/dist/src/util/misc/dom.mjs.map +0 -0
  1385. package/dist/src/util/misc/findScaleTo.d.ts +0 -0
  1386. package/dist/src/util/misc/findScaleTo.d.ts.map +0 -0
  1387. package/dist/src/util/misc/findScaleTo.min.mjs +0 -0
  1388. package/dist/src/util/misc/findScaleTo.min.mjs.map +0 -0
  1389. package/dist/src/util/misc/findScaleTo.mjs +0 -0
  1390. package/dist/src/util/misc/findScaleTo.mjs.map +0 -0
  1391. package/dist/src/util/misc/groupSVGElements.d.ts +0 -0
  1392. package/dist/src/util/misc/groupSVGElements.d.ts.map +0 -0
  1393. package/dist/src/util/misc/groupSVGElements.min.mjs +0 -0
  1394. package/dist/src/util/misc/groupSVGElements.min.mjs.map +0 -0
  1395. package/dist/src/util/misc/groupSVGElements.mjs +0 -0
  1396. package/dist/src/util/misc/groupSVGElements.mjs.map +0 -0
  1397. package/dist/src/util/misc/isTransparent.d.ts +0 -0
  1398. package/dist/src/util/misc/isTransparent.d.ts.map +0 -0
  1399. package/dist/src/util/misc/isTransparent.min.mjs +0 -0
  1400. package/dist/src/util/misc/isTransparent.min.mjs.map +0 -0
  1401. package/dist/src/util/misc/isTransparent.mjs +0 -0
  1402. package/dist/src/util/misc/isTransparent.mjs.map +0 -0
  1403. package/dist/src/util/misc/matrix.d.ts +0 -0
  1404. package/dist/src/util/misc/matrix.d.ts.map +0 -0
  1405. package/dist/src/util/misc/matrix.min.mjs +0 -0
  1406. package/dist/src/util/misc/matrix.min.mjs.map +0 -0
  1407. package/dist/src/util/misc/matrix.mjs +0 -0
  1408. package/dist/src/util/misc/matrix.mjs.map +0 -0
  1409. package/dist/src/util/misc/mergeClipPaths.d.ts +0 -0
  1410. package/dist/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  1411. package/dist/src/util/misc/mergeClipPaths.min.mjs +0 -0
  1412. package/dist/src/util/misc/mergeClipPaths.min.mjs.map +0 -0
  1413. package/dist/src/util/misc/mergeClipPaths.mjs +0 -0
  1414. package/dist/src/util/misc/mergeClipPaths.mjs.map +0 -0
  1415. package/dist/src/util/misc/objectEnlive.d.ts +0 -0
  1416. package/dist/src/util/misc/objectEnlive.d.ts.map +0 -0
  1417. package/dist/src/util/misc/objectEnlive.min.mjs +0 -0
  1418. package/dist/src/util/misc/objectEnlive.min.mjs.map +0 -0
  1419. package/dist/src/util/misc/objectEnlive.mjs +0 -0
  1420. package/dist/src/util/misc/objectEnlive.mjs.map +0 -0
  1421. package/dist/src/util/misc/objectTransforms.d.ts +0 -0
  1422. package/dist/src/util/misc/objectTransforms.d.ts.map +0 -0
  1423. package/dist/src/util/misc/objectTransforms.min.mjs +0 -0
  1424. package/dist/src/util/misc/objectTransforms.min.mjs.map +0 -0
  1425. package/dist/src/util/misc/objectTransforms.mjs +0 -0
  1426. package/dist/src/util/misc/objectTransforms.mjs.map +0 -0
  1427. package/dist/src/util/misc/pick.d.ts +0 -0
  1428. package/dist/src/util/misc/pick.d.ts.map +0 -0
  1429. package/dist/src/util/misc/pick.min.mjs +0 -0
  1430. package/dist/src/util/misc/pick.min.mjs.map +0 -0
  1431. package/dist/src/util/misc/pick.mjs +0 -0
  1432. package/dist/src/util/misc/pick.mjs.map +0 -0
  1433. package/dist/src/util/misc/planeChange.d.ts +0 -0
  1434. package/dist/src/util/misc/planeChange.d.ts.map +0 -0
  1435. package/dist/src/util/misc/planeChange.min.mjs +0 -0
  1436. package/dist/src/util/misc/planeChange.min.mjs.map +0 -0
  1437. package/dist/src/util/misc/planeChange.mjs +0 -0
  1438. package/dist/src/util/misc/planeChange.mjs.map +0 -0
  1439. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  1440. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  1441. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs +0 -0
  1442. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +0 -0
  1443. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs +0 -0
  1444. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +0 -0
  1445. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  1446. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  1447. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +0 -0
  1448. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +0 -0
  1449. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +0 -0
  1450. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +0 -0
  1451. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  1452. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  1453. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs +0 -0
  1454. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +0 -0
  1455. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs +0 -0
  1456. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +0 -0
  1457. package/dist/src/util/misc/projectStroke/index.d.ts +0 -0
  1458. package/dist/src/util/misc/projectStroke/index.d.ts.map +0 -0
  1459. package/dist/src/util/misc/projectStroke/index.min.mjs +0 -0
  1460. package/dist/src/util/misc/projectStroke/index.min.mjs.map +0 -0
  1461. package/dist/src/util/misc/projectStroke/index.mjs +0 -0
  1462. package/dist/src/util/misc/projectStroke/index.mjs.map +0 -0
  1463. package/dist/src/util/misc/projectStroke/types.d.ts +0 -0
  1464. package/dist/src/util/misc/projectStroke/types.d.ts.map +0 -0
  1465. package/dist/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  1466. package/dist/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  1467. package/dist/src/util/misc/radiansDegreesConversion.min.mjs +0 -0
  1468. package/dist/src/util/misc/radiansDegreesConversion.min.mjs.map +0 -0
  1469. package/dist/src/util/misc/radiansDegreesConversion.mjs +0 -0
  1470. package/dist/src/util/misc/radiansDegreesConversion.mjs.map +0 -0
  1471. package/dist/src/util/misc/resolveOrigin.d.ts +0 -0
  1472. package/dist/src/util/misc/resolveOrigin.d.ts.map +0 -0
  1473. package/dist/src/util/misc/resolveOrigin.min.mjs +0 -0
  1474. package/dist/src/util/misc/resolveOrigin.min.mjs.map +0 -0
  1475. package/dist/src/util/misc/resolveOrigin.mjs +0 -0
  1476. package/dist/src/util/misc/resolveOrigin.mjs.map +0 -0
  1477. package/dist/src/util/misc/sin.d.ts +0 -0
  1478. package/dist/src/util/misc/sin.d.ts.map +0 -0
  1479. package/dist/src/util/misc/sin.min.mjs +0 -0
  1480. package/dist/src/util/misc/sin.min.mjs.map +0 -0
  1481. package/dist/src/util/misc/sin.mjs +0 -0
  1482. package/dist/src/util/misc/sin.mjs.map +0 -0
  1483. package/dist/src/util/misc/svgExport.d.ts +0 -0
  1484. package/dist/src/util/misc/svgExport.d.ts.map +0 -0
  1485. package/dist/src/util/misc/svgExport.min.mjs +0 -0
  1486. package/dist/src/util/misc/svgExport.min.mjs.map +0 -0
  1487. package/dist/src/util/misc/svgExport.mjs +0 -0
  1488. package/dist/src/util/misc/svgExport.mjs.map +0 -0
  1489. package/dist/src/util/misc/svgParsing.d.ts +0 -0
  1490. package/dist/src/util/misc/svgParsing.d.ts.map +0 -0
  1491. package/dist/src/util/misc/svgParsing.min.mjs +0 -0
  1492. package/dist/src/util/misc/svgParsing.min.mjs.map +0 -0
  1493. package/dist/src/util/misc/svgParsing.mjs +0 -0
  1494. package/dist/src/util/misc/svgParsing.mjs.map +0 -0
  1495. package/dist/src/util/misc/textStyles.d.ts +0 -0
  1496. package/dist/src/util/misc/textStyles.d.ts.map +0 -0
  1497. package/dist/src/util/misc/textStyles.min.mjs +0 -0
  1498. package/dist/src/util/misc/textStyles.min.mjs.map +0 -0
  1499. package/dist/src/util/misc/textStyles.mjs +0 -0
  1500. package/dist/src/util/misc/textStyles.mjs.map +0 -0
  1501. package/dist/src/util/misc/toFixed.d.ts +0 -0
  1502. package/dist/src/util/misc/toFixed.d.ts.map +0 -0
  1503. package/dist/src/util/misc/toFixed.min.mjs +0 -0
  1504. package/dist/src/util/misc/toFixed.min.mjs.map +0 -0
  1505. package/dist/src/util/misc/toFixed.mjs +0 -0
  1506. package/dist/src/util/misc/toFixed.mjs.map +0 -0
  1507. package/dist/src/util/misc/vectors.d.ts +0 -0
  1508. package/dist/src/util/misc/vectors.d.ts.map +0 -0
  1509. package/dist/src/util/misc/vectors.min.mjs +0 -0
  1510. package/dist/src/util/misc/vectors.min.mjs.map +0 -0
  1511. package/dist/src/util/misc/vectors.mjs +0 -0
  1512. package/dist/src/util/misc/vectors.mjs.map +0 -0
  1513. package/dist/src/util/path/index.d.ts +0 -0
  1514. package/dist/src/util/path/index.d.ts.map +0 -0
  1515. package/dist/src/util/path/index.min.mjs +0 -0
  1516. package/dist/src/util/path/index.min.mjs.map +0 -0
  1517. package/dist/src/util/path/index.mjs +0 -0
  1518. package/dist/src/util/path/index.mjs.map +0 -0
  1519. package/dist/src/util/path/regex.d.ts +0 -0
  1520. package/dist/src/util/path/regex.d.ts.map +0 -0
  1521. package/dist/src/util/path/regex.min.mjs +0 -0
  1522. package/dist/src/util/path/regex.min.mjs.map +0 -0
  1523. package/dist/src/util/path/regex.mjs +0 -0
  1524. package/dist/src/util/path/regex.mjs.map +0 -0
  1525. package/dist/src/util/path/typechecks.d.ts +0 -0
  1526. package/dist/src/util/path/typechecks.d.ts.map +0 -0
  1527. package/dist/src/util/path/typedefs.d.ts +0 -0
  1528. package/dist/src/util/path/typedefs.d.ts.map +0 -0
  1529. package/dist/src/util/transform_matrix_removal.d.ts +0 -0
  1530. package/dist/src/util/transform_matrix_removal.d.ts.map +0 -0
  1531. package/dist/src/util/transform_matrix_removal.min.mjs +0 -0
  1532. package/dist/src/util/transform_matrix_removal.min.mjs.map +0 -0
  1533. package/dist/src/util/transform_matrix_removal.mjs +0 -0
  1534. package/dist/src/util/transform_matrix_removal.mjs.map +0 -0
  1535. package/dist/src/util/typeAssertions.d.ts +0 -0
  1536. package/dist/src/util/typeAssertions.d.ts.map +0 -0
  1537. package/dist/src/util/typeAssertions.min.mjs +0 -0
  1538. package/dist/src/util/typeAssertions.min.mjs.map +0 -0
  1539. package/dist/src/util/typeAssertions.mjs +0 -0
  1540. package/dist/src/util/typeAssertions.mjs.map +0 -0
  1541. package/dist-extensions/aligning_guidelines/constant.mjs +0 -0
  1542. package/dist-extensions/aligning_guidelines/constant.mjs.map +0 -0
  1543. package/dist-extensions/aligning_guidelines/index.mjs +0 -0
  1544. package/dist-extensions/aligning_guidelines/index.mjs.map +0 -0
  1545. package/dist-extensions/aligning_guidelines/util/basic.mjs +0 -0
  1546. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +0 -0
  1547. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +0 -0
  1548. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +0 -0
  1549. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +0 -0
  1550. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +0 -0
  1551. package/dist-extensions/aligning_guidelines/util/draw.mjs +0 -0
  1552. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +0 -0
  1553. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +0 -0
  1554. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +0 -0
  1555. package/dist-extensions/data_updaters/gradient/index.mjs +0 -0
  1556. package/dist-extensions/data_updaters/gradient/index.mjs.map +0 -0
  1557. package/dist-extensions/data_updaters/origins/index.mjs +0 -0
  1558. package/dist-extensions/data_updaters/origins/index.mjs.map +0 -0
  1559. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +0 -0
  1560. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +0 -0
  1561. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +0 -0
  1562. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +0 -0
  1563. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +0 -0
  1564. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +0 -0
  1565. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +0 -0
  1566. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +0 -0
  1567. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +0 -0
  1568. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +0 -0
  1569. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +0 -0
  1570. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +0 -0
  1571. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +0 -0
  1572. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +0 -0
  1573. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +0 -0
  1574. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +0 -0
  1575. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts +0 -0
  1576. package/dist-extensions/extensions/data_updaters/gradient/index.d.ts.map +0 -0
  1577. package/dist-extensions/extensions/data_updaters/origins/index.d.ts +0 -0
  1578. package/dist-extensions/extensions/data_updaters/origins/index.d.ts.map +0 -0
  1579. package/dist-extensions/extensions/index.d.ts +0 -0
  1580. package/dist-extensions/extensions/index.d.ts.map +0 -0
  1581. package/dist-extensions/fabric-extensions.min.js +0 -0
  1582. package/dist-extensions/fabric-extensions.min.js.map +0 -0
  1583. package/dist-extensions/fabric.d.ts +0 -0
  1584. package/dist-extensions/fabric.d.ts.map +0 -0
  1585. package/dist-extensions/index.d.ts +0 -0
  1586. package/dist-extensions/index.d.ts.map +0 -0
  1587. package/dist-extensions/index.mjs +0 -0
  1588. package/dist-extensions/index.mjs.map +0 -0
  1589. package/dist-extensions/src/ClassRegistry.d.ts +0 -0
  1590. package/dist-extensions/src/ClassRegistry.d.ts.map +0 -0
  1591. package/dist-extensions/src/Collection.d.ts +0 -0
  1592. package/dist-extensions/src/Collection.d.ts.map +0 -0
  1593. package/dist-extensions/src/CommonMethods.d.ts +0 -0
  1594. package/dist-extensions/src/CommonMethods.d.ts.map +0 -0
  1595. package/dist-extensions/src/EventTypeDefs.d.ts +0 -0
  1596. package/dist-extensions/src/EventTypeDefs.d.ts.map +0 -0
  1597. package/dist-extensions/src/Intersection.d.ts +0 -0
  1598. package/dist-extensions/src/Intersection.d.ts.map +0 -0
  1599. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +0 -0
  1600. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +0 -0
  1601. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +0 -0
  1602. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +0 -0
  1603. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +0 -0
  1604. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +0 -0
  1605. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +0 -0
  1606. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +0 -0
  1607. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +0 -0
  1608. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +0 -0
  1609. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +0 -0
  1610. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +0 -0
  1611. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +0 -0
  1612. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +0 -0
  1613. package/dist-extensions/src/LayoutManager/constants.d.ts +0 -0
  1614. package/dist-extensions/src/LayoutManager/constants.d.ts.map +0 -0
  1615. package/dist-extensions/src/LayoutManager/index.d.ts +0 -0
  1616. package/dist-extensions/src/LayoutManager/index.d.ts.map +0 -0
  1617. package/dist-extensions/src/LayoutManager/types.d.ts +0 -0
  1618. package/dist-extensions/src/LayoutManager/types.d.ts.map +0 -0
  1619. package/dist-extensions/src/Observable.d.ts +0 -0
  1620. package/dist-extensions/src/Observable.d.ts.map +0 -0
  1621. package/dist-extensions/src/Pattern/Pattern.d.ts +0 -0
  1622. package/dist-extensions/src/Pattern/Pattern.d.ts.map +0 -0
  1623. package/dist-extensions/src/Pattern/index.d.ts +0 -0
  1624. package/dist-extensions/src/Pattern/index.d.ts.map +0 -0
  1625. package/dist-extensions/src/Pattern/types.d.ts +0 -0
  1626. package/dist-extensions/src/Pattern/types.d.ts.map +0 -0
  1627. package/dist-extensions/src/Point.d.ts +0 -0
  1628. package/dist-extensions/src/Point.d.ts.map +0 -0
  1629. package/dist-extensions/src/Shadow.d.ts +0 -0
  1630. package/dist-extensions/src/Shadow.d.ts.map +0 -0
  1631. package/dist-extensions/src/brushes/BaseBrush.d.ts +0 -0
  1632. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +0 -0
  1633. package/dist-extensions/src/brushes/CircleBrush.d.ts +0 -0
  1634. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +0 -0
  1635. package/dist-extensions/src/brushes/PatternBrush.d.ts +0 -0
  1636. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +0 -0
  1637. package/dist-extensions/src/brushes/PencilBrush.d.ts +0 -0
  1638. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +0 -0
  1639. package/dist-extensions/src/brushes/SprayBrush.d.ts +0 -0
  1640. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +0 -0
  1641. package/dist-extensions/src/brushes/typedefs.d.ts +0 -0
  1642. package/dist-extensions/src/brushes/typedefs.d.ts.map +0 -0
  1643. package/dist-extensions/src/cache.d.ts +0 -0
  1644. package/dist-extensions/src/cache.d.ts.map +0 -0
  1645. package/dist-extensions/src/canvas/Canvas.d.ts +0 -0
  1646. package/dist-extensions/src/canvas/Canvas.d.ts.map +0 -0
  1647. package/dist-extensions/src/canvas/CanvasOptions.d.ts +0 -0
  1648. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +0 -0
  1649. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +0 -0
  1650. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +0 -0
  1651. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +0 -0
  1652. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +0 -0
  1653. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +0 -0
  1654. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +0 -0
  1655. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +0 -0
  1656. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +0 -0
  1657. package/dist-extensions/src/canvas/StaticCanvas.d.ts +0 -0
  1658. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +0 -0
  1659. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +0 -0
  1660. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +0 -0
  1661. package/dist-extensions/src/canvas/TextEditingManager.d.ts +0 -0
  1662. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +0 -0
  1663. package/dist-extensions/src/color/Color.d.ts +0 -0
  1664. package/dist-extensions/src/color/Color.d.ts.map +0 -0
  1665. package/dist-extensions/src/color/color_map.d.ts +0 -0
  1666. package/dist-extensions/src/color/color_map.d.ts.map +0 -0
  1667. package/dist-extensions/src/color/constants.d.ts +0 -0
  1668. package/dist-extensions/src/color/constants.d.ts.map +0 -0
  1669. package/dist-extensions/src/color/typedefs.d.ts +0 -0
  1670. package/dist-extensions/src/color/typedefs.d.ts.map +0 -0
  1671. package/dist-extensions/src/color/util.d.ts +0 -0
  1672. package/dist-extensions/src/color/util.d.ts.map +0 -0
  1673. package/dist-extensions/src/config.d.ts +0 -0
  1674. package/dist-extensions/src/config.d.ts.map +0 -0
  1675. package/dist-extensions/src/constants.d.ts +0 -0
  1676. package/dist-extensions/src/constants.d.ts.map +0 -0
  1677. package/dist-extensions/src/controls/Control.d.ts +0 -0
  1678. package/dist-extensions/src/controls/Control.d.ts.map +0 -0
  1679. package/dist-extensions/src/controls/changeHeight.d.ts +0 -0
  1680. package/dist-extensions/src/controls/changeHeight.d.ts.map +0 -0
  1681. package/dist-extensions/src/controls/changeWidth.d.ts +0 -0
  1682. package/dist-extensions/src/controls/changeWidth.d.ts.map +0 -0
  1683. package/dist-extensions/src/controls/commonControls.d.ts +0 -0
  1684. package/dist-extensions/src/controls/commonControls.d.ts.map +0 -0
  1685. package/dist-extensions/src/controls/controlRendering.d.ts +0 -0
  1686. package/dist-extensions/src/controls/controlRendering.d.ts.map +0 -0
  1687. package/dist-extensions/src/controls/drag.d.ts +0 -0
  1688. package/dist-extensions/src/controls/drag.d.ts.map +0 -0
  1689. package/dist-extensions/src/controls/fireEvent.d.ts +0 -0
  1690. package/dist-extensions/src/controls/fireEvent.d.ts.map +0 -0
  1691. package/dist-extensions/src/controls/index.d.ts +0 -0
  1692. package/dist-extensions/src/controls/index.d.ts.map +0 -0
  1693. package/dist-extensions/src/controls/pathControl.d.ts +0 -0
  1694. package/dist-extensions/src/controls/pathControl.d.ts.map +0 -0
  1695. package/dist-extensions/src/controls/polyControl.d.ts +0 -0
  1696. package/dist-extensions/src/controls/polyControl.d.ts.map +0 -0
  1697. package/dist-extensions/src/controls/rotate.d.ts +0 -0
  1698. package/dist-extensions/src/controls/rotate.d.ts.map +0 -0
  1699. package/dist-extensions/src/controls/scale.d.ts +0 -0
  1700. package/dist-extensions/src/controls/scale.d.ts.map +0 -0
  1701. package/dist-extensions/src/controls/scaleSkew.d.ts +0 -0
  1702. package/dist-extensions/src/controls/scaleSkew.d.ts.map +0 -0
  1703. package/dist-extensions/src/controls/skew.d.ts +0 -0
  1704. package/dist-extensions/src/controls/skew.d.ts.map +0 -0
  1705. package/dist-extensions/src/controls/util.d.ts +0 -0
  1706. package/dist-extensions/src/controls/util.d.ts.map +0 -0
  1707. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +0 -0
  1708. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +0 -0
  1709. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +0 -0
  1710. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +0 -0
  1711. package/dist-extensions/src/env/browser.d.ts +0 -0
  1712. package/dist-extensions/src/env/browser.d.ts.map +0 -0
  1713. package/dist-extensions/src/env/index.d.ts +0 -0
  1714. package/dist-extensions/src/env/index.d.ts.map +0 -0
  1715. package/dist-extensions/src/env/types.d.ts +0 -0
  1716. package/dist-extensions/src/env/types.d.ts.map +0 -0
  1717. package/dist-extensions/src/filters/BaseFilter.d.ts +0 -0
  1718. package/dist-extensions/src/filters/BaseFilter.d.ts.map +0 -0
  1719. package/dist-extensions/src/filters/BlendColor.d.ts +0 -0
  1720. package/dist-extensions/src/filters/BlendColor.d.ts.map +0 -0
  1721. package/dist-extensions/src/filters/BlendImage.d.ts +0 -0
  1722. package/dist-extensions/src/filters/BlendImage.d.ts.map +0 -0
  1723. package/dist-extensions/src/filters/Blur.d.ts +0 -0
  1724. package/dist-extensions/src/filters/Blur.d.ts.map +0 -0
  1725. package/dist-extensions/src/filters/Brightness.d.ts +0 -0
  1726. package/dist-extensions/src/filters/Brightness.d.ts.map +0 -0
  1727. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +0 -0
  1728. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +0 -0
  1729. package/dist-extensions/src/filters/ColorMatrix.d.ts +0 -0
  1730. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +0 -0
  1731. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +0 -0
  1732. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +0 -0
  1733. package/dist-extensions/src/filters/Composed.d.ts +0 -0
  1734. package/dist-extensions/src/filters/Composed.d.ts.map +0 -0
  1735. package/dist-extensions/src/filters/Contrast.d.ts +0 -0
  1736. package/dist-extensions/src/filters/Contrast.d.ts.map +0 -0
  1737. package/dist-extensions/src/filters/Convolute.d.ts +0 -0
  1738. package/dist-extensions/src/filters/Convolute.d.ts.map +0 -0
  1739. package/dist-extensions/src/filters/FilterBackend.d.ts +0 -0
  1740. package/dist-extensions/src/filters/FilterBackend.d.ts.map +0 -0
  1741. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +0 -0
  1742. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +0 -0
  1743. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +0 -0
  1744. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +0 -0
  1745. package/dist-extensions/src/filters/Gamma.d.ts +0 -0
  1746. package/dist-extensions/src/filters/Gamma.d.ts.map +0 -0
  1747. package/dist-extensions/src/filters/Grayscale.d.ts +0 -0
  1748. package/dist-extensions/src/filters/Grayscale.d.ts.map +0 -0
  1749. package/dist-extensions/src/filters/HueRotation.d.ts +0 -0
  1750. package/dist-extensions/src/filters/HueRotation.d.ts.map +0 -0
  1751. package/dist-extensions/src/filters/Invert.d.ts +0 -0
  1752. package/dist-extensions/src/filters/Invert.d.ts.map +0 -0
  1753. package/dist-extensions/src/filters/Noise.d.ts +0 -0
  1754. package/dist-extensions/src/filters/Noise.d.ts.map +0 -0
  1755. package/dist-extensions/src/filters/Pixelate.d.ts +0 -0
  1756. package/dist-extensions/src/filters/Pixelate.d.ts.map +0 -0
  1757. package/dist-extensions/src/filters/RemoveColor.d.ts +0 -0
  1758. package/dist-extensions/src/filters/RemoveColor.d.ts.map +0 -0
  1759. package/dist-extensions/src/filters/Resize.d.ts +0 -0
  1760. package/dist-extensions/src/filters/Resize.d.ts.map +0 -0
  1761. package/dist-extensions/src/filters/Saturation.d.ts +0 -0
  1762. package/dist-extensions/src/filters/Saturation.d.ts.map +0 -0
  1763. package/dist-extensions/src/filters/Vibrance.d.ts +0 -0
  1764. package/dist-extensions/src/filters/Vibrance.d.ts.map +0 -0
  1765. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +0 -0
  1766. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +0 -0
  1767. package/dist-extensions/src/filters/filters.d.ts +0 -0
  1768. package/dist-extensions/src/filters/filters.d.ts.map +0 -0
  1769. package/dist-extensions/src/filters/index.d.ts +0 -0
  1770. package/dist-extensions/src/filters/index.d.ts.map +0 -0
  1771. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +0 -0
  1772. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +0 -0
  1773. package/dist-extensions/src/filters/shaders/blendColor.d.ts +0 -0
  1774. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +0 -0
  1775. package/dist-extensions/src/filters/shaders/blendImage.d.ts +0 -0
  1776. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +0 -0
  1777. package/dist-extensions/src/filters/shaders/blur.d.ts +0 -0
  1778. package/dist-extensions/src/filters/shaders/blur.d.ts.map +0 -0
  1779. package/dist-extensions/src/filters/shaders/brightness.d.ts +0 -0
  1780. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +0 -0
  1781. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +0 -0
  1782. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +0 -0
  1783. package/dist-extensions/src/filters/shaders/constrast.d.ts +0 -0
  1784. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +0 -0
  1785. package/dist-extensions/src/filters/shaders/convolute.d.ts +0 -0
  1786. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +0 -0
  1787. package/dist-extensions/src/filters/shaders/gamma.d.ts +0 -0
  1788. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +0 -0
  1789. package/dist-extensions/src/filters/shaders/grayscale.d.ts +0 -0
  1790. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +0 -0
  1791. package/dist-extensions/src/filters/shaders/invert.d.ts +0 -0
  1792. package/dist-extensions/src/filters/shaders/invert.d.ts.map +0 -0
  1793. package/dist-extensions/src/filters/shaders/noise.d.ts +0 -0
  1794. package/dist-extensions/src/filters/shaders/noise.d.ts.map +0 -0
  1795. package/dist-extensions/src/filters/shaders/pixelate.d.ts +0 -0
  1796. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +0 -0
  1797. package/dist-extensions/src/filters/shaders/removeColor.d.ts +0 -0
  1798. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +0 -0
  1799. package/dist-extensions/src/filters/shaders/saturation.d.ts +0 -0
  1800. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +0 -0
  1801. package/dist-extensions/src/filters/shaders/vibrance.d.ts +0 -0
  1802. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +0 -0
  1803. package/dist-extensions/src/filters/typedefs.d.ts +0 -0
  1804. package/dist-extensions/src/filters/typedefs.d.ts.map +0 -0
  1805. package/dist-extensions/src/filters/utils.d.ts +0 -0
  1806. package/dist-extensions/src/filters/utils.d.ts.map +0 -0
  1807. package/dist-extensions/src/gradient/Gradient.d.ts +0 -0
  1808. package/dist-extensions/src/gradient/Gradient.d.ts.map +0 -0
  1809. package/dist-extensions/src/gradient/constants.d.ts +0 -0
  1810. package/dist-extensions/src/gradient/constants.d.ts.map +0 -0
  1811. package/dist-extensions/src/gradient/index.d.ts +0 -0
  1812. package/dist-extensions/src/gradient/index.d.ts.map +0 -0
  1813. package/dist-extensions/src/gradient/parser/misc.d.ts +0 -0
  1814. package/dist-extensions/src/gradient/parser/misc.d.ts.map +0 -0
  1815. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +0 -0
  1816. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +0 -0
  1817. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +0 -0
  1818. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +0 -0
  1819. package/dist-extensions/src/gradient/typedefs.d.ts +0 -0
  1820. package/dist-extensions/src/gradient/typedefs.d.ts.map +0 -0
  1821. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +0 -0
  1822. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +0 -0
  1823. package/dist-extensions/src/parser/attributes.d.ts +0 -0
  1824. package/dist-extensions/src/parser/attributes.d.ts.map +0 -0
  1825. package/dist-extensions/src/parser/constants.d.ts +0 -0
  1826. package/dist-extensions/src/parser/constants.d.ts.map +0 -0
  1827. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +0 -0
  1828. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +0 -0
  1829. package/dist-extensions/src/parser/elementMatchesRule.d.ts +0 -0
  1830. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +0 -0
  1831. package/dist-extensions/src/parser/elements_parser.d.ts +0 -0
  1832. package/dist-extensions/src/parser/elements_parser.d.ts.map +0 -0
  1833. package/dist-extensions/src/parser/getCSSRules.d.ts +0 -0
  1834. package/dist-extensions/src/parser/getCSSRules.d.ts.map +0 -0
  1835. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +0 -0
  1836. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +0 -0
  1837. package/dist-extensions/src/parser/getGradientDefs.d.ts +0 -0
  1838. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +0 -0
  1839. package/dist-extensions/src/parser/getMultipleNodes.d.ts +0 -0
  1840. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +0 -0
  1841. package/dist-extensions/src/parser/getSvgRegex.d.ts +0 -0
  1842. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +0 -0
  1843. package/dist-extensions/src/parser/getTagName.d.ts +0 -0
  1844. package/dist-extensions/src/parser/getTagName.d.ts.map +0 -0
  1845. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +0 -0
  1846. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +0 -0
  1847. package/dist-extensions/src/parser/loadSVGFromString.d.ts +0 -0
  1848. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +0 -0
  1849. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +0 -0
  1850. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +0 -0
  1851. package/dist-extensions/src/parser/normalizeAttr.d.ts +0 -0
  1852. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +0 -0
  1853. package/dist-extensions/src/parser/normalizeValue.d.ts +0 -0
  1854. package/dist-extensions/src/parser/normalizeValue.d.ts.map +0 -0
  1855. package/dist-extensions/src/parser/parseAttributes.d.ts +0 -0
  1856. package/dist-extensions/src/parser/parseAttributes.d.ts.map +0 -0
  1857. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +0 -0
  1858. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +0 -0
  1859. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +0 -0
  1860. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +0 -0
  1861. package/dist-extensions/src/parser/parseSVGDocument.d.ts +0 -0
  1862. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +0 -0
  1863. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +0 -0
  1864. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +0 -0
  1865. package/dist-extensions/src/parser/parseStyleObject.d.ts +0 -0
  1866. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +0 -0
  1867. package/dist-extensions/src/parser/parseStyleString.d.ts +0 -0
  1868. package/dist-extensions/src/parser/parseStyleString.d.ts.map +0 -0
  1869. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +0 -0
  1870. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +0 -0
  1871. package/dist-extensions/src/parser/parseUseDirectives.d.ts +0 -0
  1872. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +0 -0
  1873. package/dist-extensions/src/parser/percent.d.ts +0 -0
  1874. package/dist-extensions/src/parser/percent.d.ts.map +0 -0
  1875. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +0 -0
  1876. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +0 -0
  1877. package/dist-extensions/src/parser/selectorMatches.d.ts +0 -0
  1878. package/dist-extensions/src/parser/selectorMatches.d.ts.map +0 -0
  1879. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +0 -0
  1880. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +0 -0
  1881. package/dist-extensions/src/parser/typedefs.d.ts +0 -0
  1882. package/dist-extensions/src/parser/typedefs.d.ts.map +0 -0
  1883. package/dist-extensions/src/shapes/ActiveSelection.d.ts +0 -0
  1884. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +0 -0
  1885. package/dist-extensions/src/shapes/Circle.d.ts +0 -0
  1886. package/dist-extensions/src/shapes/Circle.d.ts.map +0 -0
  1887. package/dist-extensions/src/shapes/Ellipse.d.ts +0 -0
  1888. package/dist-extensions/src/shapes/Ellipse.d.ts.map +0 -0
  1889. package/dist-extensions/src/shapes/Group.d.ts +0 -0
  1890. package/dist-extensions/src/shapes/Group.d.ts.map +0 -0
  1891. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +0 -0
  1892. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +0 -0
  1893. package/dist-extensions/src/shapes/IText/IText.d.ts +0 -0
  1894. package/dist-extensions/src/shapes/IText/IText.d.ts.map +0 -0
  1895. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +0 -0
  1896. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +0 -0
  1897. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +0 -0
  1898. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +0 -0
  1899. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +0 -0
  1900. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +0 -0
  1901. package/dist-extensions/src/shapes/IText/constants.d.ts +0 -0
  1902. package/dist-extensions/src/shapes/IText/constants.d.ts.map +0 -0
  1903. package/dist-extensions/src/shapes/Image.d.ts +0 -0
  1904. package/dist-extensions/src/shapes/Image.d.ts.map +0 -0
  1905. package/dist-extensions/src/shapes/Line.d.ts +0 -0
  1906. package/dist-extensions/src/shapes/Line.d.ts.map +0 -0
  1907. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +0 -0
  1908. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +0 -0
  1909. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +0 -0
  1910. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +0 -0
  1911. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +0 -0
  1912. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +0 -0
  1913. package/dist-extensions/src/shapes/Object/Object.d.ts +0 -0
  1914. package/dist-extensions/src/shapes/Object/Object.d.ts.map +0 -0
  1915. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +0 -0
  1916. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +0 -0
  1917. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +0 -0
  1918. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +0 -0
  1919. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +0 -0
  1920. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +0 -0
  1921. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +0 -0
  1922. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +0 -0
  1923. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +0 -0
  1924. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +0 -0
  1925. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +0 -0
  1926. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +0 -0
  1927. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +0 -0
  1928. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +0 -0
  1929. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +0 -0
  1930. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +0 -0
  1931. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +0 -0
  1932. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +0 -0
  1933. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +0 -0
  1934. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +0 -0
  1935. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +0 -0
  1936. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +0 -0
  1937. package/dist-extensions/src/shapes/Object/types/index.d.ts +0 -0
  1938. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +0 -0
  1939. package/dist-extensions/src/shapes/Path.d.ts +0 -0
  1940. package/dist-extensions/src/shapes/Path.d.ts.map +0 -0
  1941. package/dist-extensions/src/shapes/Polygon.d.ts +0 -0
  1942. package/dist-extensions/src/shapes/Polygon.d.ts.map +0 -0
  1943. package/dist-extensions/src/shapes/Polyline.d.ts +0 -0
  1944. package/dist-extensions/src/shapes/Polyline.d.ts.map +0 -0
  1945. package/dist-extensions/src/shapes/Rect.d.ts +0 -0
  1946. package/dist-extensions/src/shapes/Rect.d.ts.map +0 -0
  1947. package/dist-extensions/src/shapes/Text/StyledText.d.ts +0 -0
  1948. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +0 -0
  1949. package/dist-extensions/src/shapes/Text/Text.d.ts +0 -0
  1950. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  1951. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +0 -0
  1952. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +0 -0
  1953. package/dist-extensions/src/shapes/Text/constants.d.ts +0 -0
  1954. package/dist-extensions/src/shapes/Text/constants.d.ts.map +0 -0
  1955. package/dist-extensions/src/shapes/Textbox.d.ts +0 -0
  1956. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  1957. package/dist-extensions/src/shapes/Triangle.d.ts +0 -0
  1958. package/dist-extensions/src/shapes/Triangle.d.ts.map +0 -0
  1959. package/dist-extensions/src/text/browserLines.d.ts +0 -0
  1960. package/dist-extensions/src/text/browserLines.d.ts.map +0 -0
  1961. package/dist-extensions/src/text/ellipsis.d.ts +0 -0
  1962. package/dist-extensions/src/text/ellipsis.d.ts.map +0 -0
  1963. package/dist-extensions/src/text/hitTest.d.ts +0 -0
  1964. package/dist-extensions/src/text/hitTest.d.ts.map +0 -0
  1965. package/dist-extensions/src/text/layout.d.ts +0 -0
  1966. package/dist-extensions/src/text/layout.d.ts.map +0 -0
  1967. package/dist-extensions/src/text/measure.d.ts +0 -0
  1968. package/dist-extensions/src/text/measure.d.ts.map +0 -0
  1969. package/dist-extensions/src/text/overlayEditor.d.ts +0 -0
  1970. package/dist-extensions/src/text/overlayEditor.d.ts.map +1 -1
  1971. package/dist-extensions/src/text/unicode.d.ts +0 -0
  1972. package/dist-extensions/src/text/unicode.d.ts.map +0 -0
  1973. package/dist-extensions/src/typedefs.d.ts +0 -0
  1974. package/dist-extensions/src/typedefs.d.ts.map +0 -0
  1975. package/dist-extensions/src/util/animation/AnimationBase.d.ts +0 -0
  1976. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +0 -0
  1977. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +0 -0
  1978. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +0 -0
  1979. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +0 -0
  1980. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +0 -0
  1981. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +0 -0
  1982. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +0 -0
  1983. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +0 -0
  1984. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +0 -0
  1985. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +0 -0
  1986. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +0 -0
  1987. package/dist-extensions/src/util/animation/animate.d.ts +0 -0
  1988. package/dist-extensions/src/util/animation/animate.d.ts.map +0 -0
  1989. package/dist-extensions/src/util/animation/easing.d.ts +0 -0
  1990. package/dist-extensions/src/util/animation/easing.d.ts.map +0 -0
  1991. package/dist-extensions/src/util/animation/index.d.ts +0 -0
  1992. package/dist-extensions/src/util/animation/index.d.ts.map +0 -0
  1993. package/dist-extensions/src/util/animation/types.d.ts +0 -0
  1994. package/dist-extensions/src/util/animation/types.d.ts.map +0 -0
  1995. package/dist-extensions/src/util/applyMixins.d.ts +0 -0
  1996. package/dist-extensions/src/util/applyMixins.d.ts.map +0 -0
  1997. package/dist-extensions/src/util/dom_event.d.ts +0 -0
  1998. package/dist-extensions/src/util/dom_event.d.ts.map +0 -0
  1999. package/dist-extensions/src/util/dom_misc.d.ts +0 -0
  2000. package/dist-extensions/src/util/dom_misc.d.ts.map +0 -0
  2001. package/dist-extensions/src/util/index.d.ts +0 -0
  2002. package/dist-extensions/src/util/index.d.ts.map +0 -0
  2003. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +0 -0
  2004. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts.map +0 -0
  2005. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +0 -0
  2006. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +0 -0
  2007. package/dist-extensions/src/util/internals/cloneStyles.d.ts +0 -0
  2008. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +0 -0
  2009. package/dist-extensions/src/util/internals/console.d.ts +0 -0
  2010. package/dist-extensions/src/util/internals/console.d.ts.map +0 -0
  2011. package/dist-extensions/src/util/internals/dom_style.d.ts +0 -0
  2012. package/dist-extensions/src/util/internals/dom_style.d.ts.map +0 -0
  2013. package/dist-extensions/src/util/internals/findRight.d.ts +0 -0
  2014. package/dist-extensions/src/util/internals/findRight.d.ts.map +0 -0
  2015. package/dist-extensions/src/util/internals/getRandomInt.d.ts +0 -0
  2016. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +0 -0
  2017. package/dist-extensions/src/util/internals/ifNaN.d.ts +0 -0
  2018. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +0 -0
  2019. package/dist-extensions/src/util/internals/removeFromArray.d.ts +0 -0
  2020. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +0 -0
  2021. package/dist-extensions/src/util/internals/uid.d.ts +0 -0
  2022. package/dist-extensions/src/util/internals/uid.d.ts.map +0 -0
  2023. package/dist-extensions/src/util/lang_string.d.ts +0 -0
  2024. package/dist-extensions/src/util/lang_string.d.ts.map +0 -0
  2025. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +0 -0
  2026. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +0 -0
  2027. package/dist-extensions/src/util/misc/capValue.d.ts +0 -0
  2028. package/dist-extensions/src/util/misc/capValue.d.ts.map +0 -0
  2029. package/dist-extensions/src/util/misc/cos.d.ts +0 -0
  2030. package/dist-extensions/src/util/misc/cos.d.ts.map +0 -0
  2031. package/dist-extensions/src/util/misc/dom.d.ts +0 -0
  2032. package/dist-extensions/src/util/misc/dom.d.ts.map +0 -0
  2033. package/dist-extensions/src/util/misc/findScaleTo.d.ts +0 -0
  2034. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +0 -0
  2035. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +0 -0
  2036. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +0 -0
  2037. package/dist-extensions/src/util/misc/isTransparent.d.ts +0 -0
  2038. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +0 -0
  2039. package/dist-extensions/src/util/misc/matrix.d.ts +0 -0
  2040. package/dist-extensions/src/util/misc/matrix.d.ts.map +0 -0
  2041. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +0 -0
  2042. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +0 -0
  2043. package/dist-extensions/src/util/misc/objectEnlive.d.ts +0 -0
  2044. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +0 -0
  2045. package/dist-extensions/src/util/misc/objectTransforms.d.ts +0 -0
  2046. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +0 -0
  2047. package/dist-extensions/src/util/misc/pick.d.ts +0 -0
  2048. package/dist-extensions/src/util/misc/pick.d.ts.map +0 -0
  2049. package/dist-extensions/src/util/misc/planeChange.d.ts +0 -0
  2050. package/dist-extensions/src/util/misc/planeChange.d.ts.map +0 -0
  2051. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +0 -0
  2052. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +0 -0
  2053. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +0 -0
  2054. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +0 -0
  2055. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +0 -0
  2056. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +0 -0
  2057. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +0 -0
  2058. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +0 -0
  2059. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +0 -0
  2060. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +0 -0
  2061. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +0 -0
  2062. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +0 -0
  2063. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +0 -0
  2064. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +0 -0
  2065. package/dist-extensions/src/util/misc/sin.d.ts +0 -0
  2066. package/dist-extensions/src/util/misc/sin.d.ts.map +0 -0
  2067. package/dist-extensions/src/util/misc/svgExport.d.ts +0 -0
  2068. package/dist-extensions/src/util/misc/svgExport.d.ts.map +0 -0
  2069. package/dist-extensions/src/util/misc/svgParsing.d.ts +0 -0
  2070. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +0 -0
  2071. package/dist-extensions/src/util/misc/textStyles.d.ts +0 -0
  2072. package/dist-extensions/src/util/misc/textStyles.d.ts.map +0 -0
  2073. package/dist-extensions/src/util/misc/toFixed.d.ts +0 -0
  2074. package/dist-extensions/src/util/misc/toFixed.d.ts.map +0 -0
  2075. package/dist-extensions/src/util/misc/vectors.d.ts +0 -0
  2076. package/dist-extensions/src/util/misc/vectors.d.ts.map +0 -0
  2077. package/dist-extensions/src/util/path/index.d.ts +0 -0
  2078. package/dist-extensions/src/util/path/index.d.ts.map +0 -0
  2079. package/dist-extensions/src/util/path/regex.d.ts +0 -0
  2080. package/dist-extensions/src/util/path/regex.d.ts.map +0 -0
  2081. package/dist-extensions/src/util/path/typedefs.d.ts +0 -0
  2082. package/dist-extensions/src/util/path/typedefs.d.ts.map +0 -0
  2083. package/dist-extensions/src/util/transform_matrix_removal.d.ts +0 -0
  2084. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +0 -0
  2085. package/dist-extensions/src/util/typeAssertions.d.ts +0 -0
  2086. package/dist-extensions/src/util/typeAssertions.d.ts.map +0 -0
  2087. package/eslint.config.mjs +0 -0
  2088. package/examples/overlay-edit.html +416 -416
  2089. package/extensions/README.MD +0 -0
  2090. package/extensions/aligning_guidelines/README.MD +0 -0
  2091. package/extensions/aligning_guidelines/constant.ts +0 -0
  2092. package/extensions/aligning_guidelines/index.ts +0 -0
  2093. package/extensions/aligning_guidelines/typedefs.ts +0 -0
  2094. package/extensions/aligning_guidelines/util/basic.spec.ts +0 -0
  2095. package/extensions/aligning_guidelines/util/basic.ts +0 -0
  2096. package/extensions/aligning_guidelines/util/collect-line.ts +0 -0
  2097. package/extensions/aligning_guidelines/util/collect-point.ts +0 -0
  2098. package/extensions/aligning_guidelines/util/draw.ts +0 -0
  2099. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +0 -0
  2100. package/extensions/data_updaters/README.md +0 -0
  2101. package/extensions/data_updaters/gradient/__snapshots__/index.spec.ts.snap +0 -0
  2102. package/extensions/data_updaters/gradient/index.spec.ts +0 -0
  2103. package/extensions/data_updaters/gradient/index.ts +0 -0
  2104. package/extensions/data_updaters/origins/README.md +0 -0
  2105. package/extensions/data_updaters/origins/index.spec.ts +0 -0
  2106. package/extensions/data_updaters/origins/index.ts +0 -0
  2107. package/extensions/index.ts +0 -0
  2108. package/fabric-test-editor.html +591 -0
  2109. package/fabric.ts +0 -0
  2110. package/index.node.ts +0 -0
  2111. package/index.ts +0 -0
  2112. package/lib/aligning_guidelines.js +0 -0
  2113. package/lib/centering_guidelines.js +0 -0
  2114. package/lib/event.js +0 -0
  2115. package/package.json +1 -1
  2116. package/playwright.config.ts +0 -0
  2117. package/playwright.setup.ts +0 -0
  2118. package/publish-next.js +0 -0
  2119. package/publish.js +0 -0
  2120. package/rollup.config.mjs +0 -0
  2121. package/scripts/bench-text.js +591 -591
  2122. package/scripts/build.mjs +0 -0
  2123. package/scripts/buildLock.mjs +0 -0
  2124. package/scripts/buildReporter.mjs +0 -0
  2125. package/scripts/buildStats.mjs +0 -0
  2126. package/scripts/dirname.mjs +0 -0
  2127. package/scripts/git.mjs +0 -0
  2128. package/scripts/index.mjs +0 -0
  2129. package/scripts/sandbox.mjs +0 -0
  2130. package/src/ClassRegistry.spec.ts +0 -0
  2131. package/src/ClassRegistry.ts +0 -0
  2132. package/src/Collection.spec.ts +0 -0
  2133. package/src/Collection.ts +0 -0
  2134. package/src/CommonMethods.ts +0 -0
  2135. package/src/EventTypeDefs.ts +0 -0
  2136. package/src/Intersection.spec.ts +0 -0
  2137. package/src/Intersection.ts +0 -0
  2138. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +0 -0
  2139. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +0 -0
  2140. package/src/LayoutManager/LayoutManager.spec.ts +0 -0
  2141. package/src/LayoutManager/LayoutManager.ts +0 -0
  2142. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +0 -0
  2143. package/src/LayoutManager/LayoutStrategies/FitContentLayout.ts +0 -0
  2144. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +0 -0
  2145. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +0 -0
  2146. package/src/LayoutManager/LayoutStrategies/utils.ts +0 -0
  2147. package/src/LayoutManager/README.md +0 -0
  2148. package/src/LayoutManager/__snapshots__/LayoutManager.spec.ts.snap +0 -0
  2149. package/src/LayoutManager/constants.ts +0 -0
  2150. package/src/LayoutManager/index.ts +0 -0
  2151. package/src/LayoutManager/types.ts +0 -0
  2152. package/src/Observable.spec.ts +0 -0
  2153. package/src/Observable.ts +0 -0
  2154. package/src/Pattern/Pattern.spec.ts +0 -0
  2155. package/src/Pattern/Pattern.ts +0 -0
  2156. package/src/Pattern/index.ts +0 -0
  2157. package/src/Pattern/types.ts +0 -0
  2158. package/src/Point.spec.ts +0 -0
  2159. package/src/Point.ts +0 -0
  2160. package/src/Shadow.spec.ts +0 -0
  2161. package/src/Shadow.ts +0 -0
  2162. package/src/__snapshots__/Shadow.spec.ts.snap +0 -0
  2163. package/src/brushes/BaseBrush.spec.ts +0 -0
  2164. package/src/brushes/BaseBrush.ts +0 -0
  2165. package/src/brushes/CircleBrush.test.ts +0 -0
  2166. package/src/brushes/CircleBrush.ts +0 -0
  2167. package/src/brushes/PatternBrush.ts +0 -0
  2168. package/src/brushes/PencilBrush.spec.ts +0 -0
  2169. package/src/brushes/PencilBrush.ts +0 -0
  2170. package/src/brushes/SprayBrush.ts +0 -0
  2171. package/src/brushes/__snapshots__/PencilBrush.spec.ts.snap +0 -0
  2172. package/src/brushes/typedefs.ts +0 -0
  2173. package/src/cache.spec.ts +0 -0
  2174. package/src/cache.ts +0 -0
  2175. package/src/canvas/Canvas-dispose.spec.ts +0 -0
  2176. package/src/canvas/Canvas-events.spec.ts +0 -0
  2177. package/src/canvas/Canvas.spec.ts +0 -0
  2178. package/src/canvas/Canvas.ts +0 -0
  2179. package/src/canvas/CanvasOptions.ts +0 -0
  2180. package/src/canvas/DOMManagers/CanvasDOMManager.ts +0 -0
  2181. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +0 -0
  2182. package/src/canvas/DOMManagers/util.spec.ts +0 -0
  2183. package/src/canvas/DOMManagers/util.ts +0 -0
  2184. package/src/canvas/SelectableCanvas.spec.ts +0 -0
  2185. package/src/canvas/SelectableCanvas.ts +0 -0
  2186. package/src/canvas/StaticCanvas.spec.ts +0 -0
  2187. package/src/canvas/StaticCanvas.ts +0 -0
  2188. package/src/canvas/StaticCanvasOptions.ts +0 -0
  2189. package/src/canvas/TextEditingManager.ts +0 -0
  2190. package/src/canvas/__tests__/SelectableCanvas.spec.ts +0 -0
  2191. package/src/canvas/__tests__/__snapshots__/eventData.test.ts.snap +0 -0
  2192. package/src/canvas/__tests__/eventData.test.ts +0 -0
  2193. package/src/canvas/canvas_gestures.mixin.ts +0 -0
  2194. package/src/color/Color.ts +0 -0
  2195. package/src/color/color.test.ts +0 -0
  2196. package/src/color/color_map.ts +0 -0
  2197. package/src/color/constants.ts +0 -0
  2198. package/src/color/typedefs.ts +0 -0
  2199. package/src/color/util.ts +0 -0
  2200. package/src/config.ts +0 -0
  2201. package/src/constants.ts +0 -0
  2202. package/src/controls/Control-cursor.spec.ts +0 -0
  2203. package/src/controls/Control-handlers.spec.ts +0 -0
  2204. package/src/controls/Control.spec.ts +0 -0
  2205. package/src/controls/Control.ts +0 -0
  2206. package/src/controls/changeHeight.ts +0 -0
  2207. package/src/controls/changeWidth.test.ts +0 -0
  2208. package/src/controls/changeWidth.ts +0 -0
  2209. package/src/controls/commonControls.ts +0 -0
  2210. package/src/controls/controlRendering.ts +0 -0
  2211. package/src/controls/drag.ts +0 -0
  2212. package/src/controls/fireEvent.ts +0 -0
  2213. package/src/controls/index.ts +0 -0
  2214. package/src/controls/pathControl.spec.ts +0 -0
  2215. package/src/controls/pathControl.ts +0 -0
  2216. package/src/controls/polyControl.spec.ts +0 -0
  2217. package/src/controls/polyControl.ts +0 -0
  2218. package/src/controls/rotate.ts +0 -0
  2219. package/src/controls/scale.test.ts +0 -0
  2220. package/src/controls/scale.ts +0 -0
  2221. package/src/controls/scaleSkew.ts +0 -0
  2222. package/src/controls/skew.ts +0 -0
  2223. package/src/controls/util.ts +0 -0
  2224. package/src/controls/wrapWithFireEvent.ts +0 -0
  2225. package/src/controls/wrapWithFixedAnchor.spec.ts +0 -0
  2226. package/src/controls/wrapWithFixedAnchor.ts +0 -0
  2227. package/src/env/browser.ts +0 -0
  2228. package/src/env/env.spec.ts +0 -0
  2229. package/src/env/index.ts +0 -0
  2230. package/src/env/node.ts +0 -0
  2231. package/src/env/types.ts +0 -0
  2232. package/src/filters/BaseFilter.spec.ts +0 -0
  2233. package/src/filters/BaseFilter.ts +0 -0
  2234. package/src/filters/BlendColor.ts +0 -0
  2235. package/src/filters/BlendImage.ts +0 -0
  2236. package/src/filters/Blur.ts +0 -0
  2237. package/src/filters/Boilerplate.ts +0 -0
  2238. package/src/filters/Brightness.ts +0 -0
  2239. package/src/filters/Canvas2dFilterBackend.ts +0 -0
  2240. package/src/filters/ColorMatrix.spec.ts +0 -0
  2241. package/src/filters/ColorMatrix.ts +0 -0
  2242. package/src/filters/ColorMatrixFilters.ts +0 -0
  2243. package/src/filters/Composed.ts +0 -0
  2244. package/src/filters/Contrast.ts +0 -0
  2245. package/src/filters/Convolute.ts +0 -0
  2246. package/src/filters/FilterBackend.ts +0 -0
  2247. package/src/filters/GLProbes/GLProbe.ts +0 -0
  2248. package/src/filters/GLProbes/NodeGLProbe.ts +0 -0
  2249. package/src/filters/GLProbes/WebGLProbe.ts +0 -0
  2250. package/src/filters/Gamma.ts +0 -0
  2251. package/src/filters/Grayscale.ts +0 -0
  2252. package/src/filters/HueRotation.ts +0 -0
  2253. package/src/filters/Invert.ts +0 -0
  2254. package/src/filters/Noise.ts +0 -0
  2255. package/src/filters/Pixelate.ts +0 -0
  2256. package/src/filters/RemoveColor.ts +0 -0
  2257. package/src/filters/Resize.ts +0 -0
  2258. package/src/filters/Saturation.ts +0 -0
  2259. package/src/filters/Vibrance.ts +0 -0
  2260. package/src/filters/WebGLFilterBackend.spec.ts +0 -0
  2261. package/src/filters/WebGLFilterBackend.ts +0 -0
  2262. package/src/filters/filters.ts +0 -0
  2263. package/src/filters/index.ts +0 -0
  2264. package/src/filters/shaders/baseFilter.ts +0 -0
  2265. package/src/filters/shaders/blendColor.ts +0 -0
  2266. package/src/filters/shaders/blendImage.ts +0 -0
  2267. package/src/filters/shaders/blur.ts +0 -0
  2268. package/src/filters/shaders/brightness.ts +0 -0
  2269. package/src/filters/shaders/colorMatrix.ts +0 -0
  2270. package/src/filters/shaders/constrast.ts +0 -0
  2271. package/src/filters/shaders/convolute.ts +0 -0
  2272. package/src/filters/shaders/gamma.ts +0 -0
  2273. package/src/filters/shaders/grayscale.ts +0 -0
  2274. package/src/filters/shaders/invert.ts +0 -0
  2275. package/src/filters/shaders/noise.ts +0 -0
  2276. package/src/filters/shaders/pixelate.ts +0 -0
  2277. package/src/filters/shaders/removeColor.ts +0 -0
  2278. package/src/filters/shaders/saturation.ts +0 -0
  2279. package/src/filters/shaders/vibrance.ts +0 -0
  2280. package/src/filters/typedefs.ts +0 -0
  2281. package/src/filters/utils.ts +0 -0
  2282. package/src/gradient/Gradient.spec.ts +0 -0
  2283. package/src/gradient/Gradient.ts +0 -0
  2284. package/src/gradient/constants.ts +0 -0
  2285. package/src/gradient/index.ts +0 -0
  2286. package/src/gradient/parser/misc.ts +0 -0
  2287. package/src/gradient/parser/parseColorStops.ts +0 -0
  2288. package/src/gradient/parser/parseCoords.ts +0 -0
  2289. package/src/gradient/typedefs.ts +0 -0
  2290. package/src/mixins/eraser_brush.mixin.ts +0 -0
  2291. package/src/parkinglot/canvas_animation.mixin.ts +0 -0
  2292. package/src/parkinglot/straighten.ts +0 -0
  2293. package/src/parser/applyViewboxTransform.spec.ts +0 -0
  2294. package/src/parser/applyViewboxTransform.ts +0 -0
  2295. package/src/parser/attributes.ts +0 -0
  2296. package/src/parser/constants.spec.ts +0 -0
  2297. package/src/parser/constants.ts +0 -0
  2298. package/src/parser/doesSomeParentMatch.ts +0 -0
  2299. package/src/parser/elementMatchesRule.ts +0 -0
  2300. package/src/parser/elements_parser.ts +0 -0
  2301. package/src/parser/getCSSRules.spec.ts +0 -0
  2302. package/src/parser/getCSSRules.ts +0 -0
  2303. package/src/parser/getGlobalStylesForElement.ts +0 -0
  2304. package/src/parser/getGradientDefs.ts +0 -0
  2305. package/src/parser/getMultipleNodes.ts +0 -0
  2306. package/src/parser/getSvgRegex.ts +0 -0
  2307. package/src/parser/getTagName.ts +0 -0
  2308. package/src/parser/hasInvalidAncestor.ts +0 -0
  2309. package/src/parser/loadSVGFromString.test.ts +0 -0
  2310. package/src/parser/loadSVGFromString.ts +0 -0
  2311. package/src/parser/loadSVGFromURL.ts +0 -0
  2312. package/src/parser/normalizeAttr.ts +0 -0
  2313. package/src/parser/normalizeValue.ts +0 -0
  2314. package/src/parser/parseAttributes.ts +0 -0
  2315. package/src/parser/parseFontDeclaration.ts +0 -0
  2316. package/src/parser/parsePointsAttribute.ts +0 -0
  2317. package/src/parser/parseSVGDocument.ts +0 -0
  2318. package/src/parser/parseStyleAttribute.ts +0 -0
  2319. package/src/parser/parseStyleObject.ts +0 -0
  2320. package/src/parser/parseStyleString.ts +0 -0
  2321. package/src/parser/parseTransformAttribute.ts +0 -0
  2322. package/src/parser/parseUseDirectives.test.ts +0 -0
  2323. package/src/parser/parseUseDirectives.ts +0 -0
  2324. package/src/parser/parser.spec.ts +0 -0
  2325. package/src/parser/percent.ts +0 -0
  2326. package/src/parser/recursivelyParseGradientsXlink.ts +0 -0
  2327. package/src/parser/selectorMatches.ts +0 -0
  2328. package/src/parser/setStrokeFillOpacity.ts +0 -0
  2329. package/src/parser/typedefs.ts +0 -0
  2330. package/src/shapes/ActiveSelection.spec.ts +0 -0
  2331. package/src/shapes/ActiveSelection.ts +0 -0
  2332. package/src/shapes/Circle.spec.ts +0 -0
  2333. package/src/shapes/Circle.ts +0 -0
  2334. package/src/shapes/Ellipse.spec.ts +0 -0
  2335. package/src/shapes/Ellipse.ts +0 -0
  2336. package/src/shapes/Group.spec.ts +0 -0
  2337. package/src/shapes/Group.ts +0 -0
  2338. package/src/shapes/IText/DraggableTextDelegate.ts +0 -0
  2339. package/src/shapes/IText/IText-click-behavior.spec.ts +0 -0
  2340. package/src/shapes/IText/IText.test.ts +0 -0
  2341. package/src/shapes/IText/IText.ts +846 -846
  2342. package/src/shapes/IText/ITextBehavior.test.ts +0 -0
  2343. package/src/shapes/IText/ITextBehavior.ts +1176 -1176
  2344. package/src/shapes/IText/ITextClickBehavior.ts +254 -254
  2345. package/src/shapes/IText/ITextKeyBehavior.test.ts +0 -0
  2346. package/src/shapes/IText/ITextKeyBehavior.ts +0 -0
  2347. package/src/shapes/IText/__snapshots__/IText.test.ts.snap +0 -0
  2348. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +0 -0
  2349. package/src/shapes/IText/constants.ts +0 -0
  2350. package/src/shapes/Image-filters.spec.ts +0 -0
  2351. package/src/shapes/Image.spec.ts +0 -0
  2352. package/src/shapes/Image.ts +0 -0
  2353. package/src/shapes/Line.spec.ts +0 -0
  2354. package/src/shapes/Line.ts +0 -0
  2355. package/src/shapes/Object/FabricObject.spec.ts +0 -0
  2356. package/src/shapes/Object/FabricObject.ts +0 -0
  2357. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +0 -0
  2358. package/src/shapes/Object/InteractiveObject.spec.ts +0 -0
  2359. package/src/shapes/Object/InteractiveObject.ts +0 -0
  2360. package/src/shapes/Object/Object-clip-path.spec.ts +0 -0
  2361. package/src/shapes/Object/Object-interactivity.spec.ts +0 -0
  2362. package/src/shapes/Object/Object.spec.ts +0 -0
  2363. package/src/shapes/Object/Object.ts +0 -0
  2364. package/src/shapes/Object/ObjectGeometry.spec.ts +0 -0
  2365. package/src/shapes/Object/ObjectGeometry.ts +0 -0
  2366. package/src/shapes/Object/ObjectOrigin.spec.ts +0 -0
  2367. package/src/shapes/Object/ObjectSerialization.spec.ts +0 -0
  2368. package/src/shapes/Object/StackedObject.spec.ts +0 -0
  2369. package/src/shapes/Object/__snapshots__/InteractiveObject.spec.ts.snap +0 -0
  2370. package/src/shapes/Object/defaultValues.ts +0 -0
  2371. package/src/shapes/Object/types/BaseProps.ts +0 -0
  2372. package/src/shapes/Object/types/BorderProps.ts +0 -0
  2373. package/src/shapes/Object/types/ControlProps.ts +0 -0
  2374. package/src/shapes/Object/types/FabricObjectProps.ts +0 -0
  2375. package/src/shapes/Object/types/FillStrokeProps.ts +0 -0
  2376. package/src/shapes/Object/types/LockInteractionProps.ts +0 -0
  2377. package/src/shapes/Object/types/ObjectProps.ts +0 -0
  2378. package/src/shapes/Object/types/ObjectTransformProps.ts +0 -0
  2379. package/src/shapes/Object/types/SerializedObjectProps.ts +0 -0
  2380. package/src/shapes/Object/types/index.ts +0 -0
  2381. package/src/shapes/Path.spec.ts +0 -0
  2382. package/src/shapes/Path.ts +0 -0
  2383. package/src/shapes/Polygon.spec.ts +0 -0
  2384. package/src/shapes/Polygon.ts +0 -0
  2385. package/src/shapes/Polyline.spec.ts +0 -0
  2386. package/src/shapes/Polyline.ts +0 -0
  2387. package/src/shapes/Rect.spec.ts +0 -0
  2388. package/src/shapes/Rect.ts +0 -0
  2389. package/src/shapes/Text/StyledText.spec.ts +0 -0
  2390. package/src/shapes/Text/StyledText.ts +0 -0
  2391. package/src/shapes/Text/Text.spec.ts +0 -0
  2392. package/src/shapes/Text/Text.ts +2226 -2161
  2393. package/src/shapes/Text/TextSVGExportMixin.spec.ts +0 -0
  2394. package/src/shapes/Text/TextSVGExportMixin.ts +0 -0
  2395. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +0 -0
  2396. package/src/shapes/Text/__snapshots__/TextSVGExportMixin.spec.ts.snap +0 -0
  2397. package/src/shapes/Text/constants.ts +134 -134
  2398. package/src/shapes/Textbox.spec.ts +0 -0
  2399. package/src/shapes/Textbox.ts +788 -788
  2400. package/src/shapes/Triangle.ts +0 -0
  2401. package/src/shapes/__snapshots__/Image.spec.ts.snap +0 -0
  2402. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +0 -0
  2403. package/src/text/browserLines.ts +233 -233
  2404. package/src/text/ellipsis.ts +516 -516
  2405. package/src/text/hitTest.ts +623 -623
  2406. package/src/text/layout.ts +586 -586
  2407. package/src/text/measure.ts +475 -475
  2408. package/src/text/overlayEditor.ts +1035 -895
  2409. package/src/text/unicode.ts +454 -454
  2410. package/src/typedefs.ts +0 -0
  2411. package/src/util/__snapshots__/index.spec.ts.snap +0 -0
  2412. package/src/util/animation/AnimationBase.ts +0 -0
  2413. package/src/util/animation/AnimationFrameProvider.ts +0 -0
  2414. package/src/util/animation/AnimationRegistry.ts +0 -0
  2415. package/src/util/animation/ArrayAnimation.ts +0 -0
  2416. package/src/util/animation/ColorAnimation.ts +0 -0
  2417. package/src/util/animation/ValueAnimation.ts +0 -0
  2418. package/src/util/animation/__snapshots__/animations.spec.ts.snap +0 -0
  2419. package/src/util/animation/animate.ts +0 -0
  2420. package/src/util/animation/animations.spec.ts +0 -0
  2421. package/src/util/animation/easing.ts +0 -0
  2422. package/src/util/animation/index.ts +0 -0
  2423. package/src/util/animation/types.ts +0 -0
  2424. package/src/util/applyMixins.ts +0 -0
  2425. package/src/util/dom_event.spec.ts +0 -0
  2426. package/src/util/dom_event.ts +0 -0
  2427. package/src/util/dom_misc.ts +0 -0
  2428. package/src/util/index.spec.ts +0 -0
  2429. package/src/util/index.ts +0 -0
  2430. package/src/util/internals/applyCanvasTransform.ts +0 -0
  2431. package/src/util/internals/cleanupSvgAttribute.test.ts +0 -0
  2432. package/src/util/internals/cleanupSvgAttribute.ts +0 -0
  2433. package/src/util/internals/cloneStyles.spec.ts +0 -0
  2434. package/src/util/internals/cloneStyles.ts +0 -0
  2435. package/src/util/internals/console.ts +0 -0
  2436. package/src/util/internals/dom_style.spec.ts +0 -0
  2437. package/src/util/internals/dom_style.ts +0 -0
  2438. package/src/util/internals/findRight.ts +0 -0
  2439. package/src/util/internals/getRandomInt.test.ts +0 -0
  2440. package/src/util/internals/getRandomInt.ts +0 -0
  2441. package/src/util/internals/ifNaN.ts +0 -0
  2442. package/src/util/internals/removeFromArray.spec.ts +0 -0
  2443. package/src/util/internals/removeFromArray.ts +0 -0
  2444. package/src/util/internals/uid.ts +0 -0
  2445. package/src/util/lang_string.spec.ts +0 -0
  2446. package/src/util/lang_string.ts +0 -0
  2447. package/src/util/misc/boundingBoxFromPoints.spec.ts +0 -0
  2448. package/src/util/misc/boundingBoxFromPoints.ts +0 -0
  2449. package/src/util/misc/capValue.spec.ts +0 -0
  2450. package/src/util/misc/capValue.ts +0 -0
  2451. package/src/util/misc/cos.spec.ts +0 -0
  2452. package/src/util/misc/cos.ts +0 -0
  2453. package/src/util/misc/dom.spec.ts +0 -0
  2454. package/src/util/misc/dom.ts +0 -0
  2455. package/src/util/misc/findScaleTo.spec.ts +0 -0
  2456. package/src/util/misc/findScaleTo.ts +0 -0
  2457. package/src/util/misc/groupSVGElements.spec.ts +0 -0
  2458. package/src/util/misc/groupSVGElements.ts +0 -0
  2459. package/src/util/misc/isTransparent.ts +0 -0
  2460. package/src/util/misc/matrix.spec.ts +0 -0
  2461. package/src/util/misc/matrix.ts +0 -0
  2462. package/src/util/misc/mergeClipPaths.spec.ts +0 -0
  2463. package/src/util/misc/mergeClipPaths.ts +0 -0
  2464. package/src/util/misc/objectEnlive.spec.ts +0 -0
  2465. package/src/util/misc/objectEnlive.ts +0 -0
  2466. package/src/util/misc/objectTransforms.spec.ts +0 -0
  2467. package/src/util/misc/objectTransforms.ts +0 -0
  2468. package/src/util/misc/pick.spec.ts +0 -0
  2469. package/src/util/misc/pick.ts +0 -0
  2470. package/src/util/misc/planeChange.spec.ts +0 -0
  2471. package/src/util/misc/planeChange.ts +0 -0
  2472. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +0 -0
  2473. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +0 -0
  2474. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +0 -0
  2475. package/src/util/misc/projectStroke/index.ts +0 -0
  2476. package/src/util/misc/projectStroke/types.ts +0 -0
  2477. package/src/util/misc/radiansDegreesConversion.spec.ts +0 -0
  2478. package/src/util/misc/radiansDegreesConversion.ts +0 -0
  2479. package/src/util/misc/resolveOrigin.ts +0 -0
  2480. package/src/util/misc/sin.ts +0 -0
  2481. package/src/util/misc/svgExport.ts +0 -0
  2482. package/src/util/misc/svgParsing.spec.ts +0 -0
  2483. package/src/util/misc/svgParsing.ts +0 -0
  2484. package/src/util/misc/textStyles.ts +0 -0
  2485. package/src/util/misc/toFixed.spec.ts +0 -0
  2486. package/src/util/misc/toFixed.ts +0 -0
  2487. package/src/util/misc/vectors.spec.ts +0 -0
  2488. package/src/util/misc/vectors.ts +0 -0
  2489. package/src/util/path/__snapshots__/index.spec.ts.snap +0 -0
  2490. package/src/util/path/index.spec.ts +0 -0
  2491. package/src/util/path/index.ts +0 -0
  2492. package/src/util/path/regex.ts +0 -0
  2493. package/src/util/path/typechecks.ts +0 -0
  2494. package/src/util/path/typedefs.ts +0 -0
  2495. package/src/util/transform_matrix_removal.ts +0 -0
  2496. package/src/util/typeAssertions.spec.ts +0 -0
  2497. package/src/util/typeAssertions.ts +0 -0
  2498. package/tsconfig-extensions.json +0 -0
  2499. package/tsconfig.json +0 -0
  2500. package/tsconfig.spec.json +0 -0
  2501. package/typedoc.config.json +0 -0
  2502. package/vitest.config.ts +0 -0
  2503. package/vitest.d.ts +0 -0
  2504. package/vitest.env.d.ts +0 -0
  2505. package/vitest.extend.ts +0 -0
  2506. package/vitest.setup.ts +0 -0
  2507. package/docs/fabric-konva-gap-analysis.md +0 -274
  2508. package/docs/konva-text-behavior-spec.md +0 -265
  2509. package/docs/text-engine-design.md +0 -698
@@ -1 +1 @@
1
- {"version":3,"file":"Text.min.mjs","sources":["../../../../src/shapes/Text/Text.ts"],"sourcesContent":["import { cache } from '../../cache';\r\nimport { DEFAULT_SVG_FONT_SIZE, FILL, STROKE } from '../../constants';\r\nimport type { ObjectEvents } from '../../EventTypeDefs';\r\nimport type {\r\n CompleteTextStyleDeclaration,\r\n TextStyle,\r\n TextStyleDeclaration,\r\n} from './StyledText';\r\nimport { StyledText } from './StyledText';\r\nimport { SHARED_ATTRIBUTES } from '../../parser/attributes';\r\nimport { parseAttributes } from '../../parser/parseAttributes';\r\nimport type {\r\n Abortable,\r\n TCacheCanvasDimensions,\r\n TClassProperties,\r\n TFiller,\r\n TOptions,\r\n} from '../../typedefs';\r\nimport { classRegistry } from '../../ClassRegistry';\r\nimport { graphemeSplit } from '../../util/lang_string';\r\nimport { createCanvasElementFor } from '../../util/misc/dom';\r\nimport { layoutText, type LayoutResult, type TextLayoutOptions } from '../../text/layout';\r\nimport { measureGrapheme, measureGraphemeWithKerning } from '../../text/measure';\r\nimport { applyEllipsis } from '../../text/ellipsis';\r\nimport { segmentGraphemes } from '../../text/unicode';\r\nimport type { TextStyleArray } from '../../util/misc/textStyles';\r\nimport {\r\n hasStyleChanged,\r\n stylesFromArray,\r\n stylesToArray,\r\n} from '../../util/misc/textStyles';\r\nimport { getPathSegmentsInfo, getPointOnPath } from '../../util/path';\r\nimport { cacheProperties } from '../Object/FabricObject';\r\nimport type { Path } from '../Path';\r\nimport { TextSVGExportMixin } from './TextSVGExportMixin';\r\nimport { applyMixins } from '../../util/applyMixins';\r\nimport type { FabricObjectProps, SerializedObjectProps } from '../Object/types';\r\nimport type { StylePropertiesType } from './constants';\r\nimport {\r\n additionalProps,\r\n textDefaultValues,\r\n textLayoutProperties,\r\n JUSTIFY,\r\n JUSTIFY_CENTER,\r\n JUSTIFY_LEFT,\r\n JUSTIFY_RIGHT,\r\n TEXT_DECORATION_THICKNESS,\r\n} from './constants';\r\nimport { CENTER, LEFT, RIGHT, TOP, BOTTOM } from '../../constants';\r\nimport { isFiller } from '../../util/typeAssertions';\r\nimport type { Gradient } from '../../gradient/Gradient';\r\nimport type { Pattern } from '../../Pattern';\r\nimport type { CSSRules } from '../../parser/typedefs';\r\nimport { getBrowserLines, clearBrowserLines } from '../../text/browserLines';\r\nimport type { BrowserLine } from '../../text/browserLines';\r\n\r\nlet measuringContext: CanvasRenderingContext2D | null;\r\n\r\n/**\r\n * Return a context for measurement of text string.\r\n * if created it gets stored for reuse\r\n */\r\nfunction getMeasuringContext() {\r\n if (!measuringContext) {\r\n const canvas = createCanvasElementFor({\r\n width: 0,\r\n height: 0,\r\n });\r\n measuringContext = canvas.getContext('2d');\r\n }\r\n return measuringContext;\r\n}\r\n\r\nexport type TPathSide = 'left' | 'right';\r\n\r\nexport type TPathAlign = 'baseline' | 'center' | 'ascender' | 'descender';\r\n\r\nexport type TextLinesInfo = {\r\n lines: string[];\r\n graphemeLines: string[][];\r\n graphemeText: string[];\r\n _unwrappedLines: string[][];\r\n};\r\n\r\n/**\r\n * Measure and return the info of a single grapheme.\r\n * needs the the info of previous graphemes already filled\r\n * Override to customize measuring\r\n */\r\nexport type GraphemeBBox = {\r\n width: number;\r\n height: number;\r\n kernedWidth: number;\r\n left: number;\r\n deltaY: number;\r\n renderLeft?: number;\r\n renderTop?: number;\r\n angle?: number;\r\n};\r\n\r\n// @TODO this is not complete\r\ninterface UniqueTextProps {\r\n charSpacing: number;\r\n lineHeight: number;\r\n fontSize: number;\r\n fontWeight: string | number;\r\n fontFamily: string;\r\n fontStyle: string;\r\n pathSide: TPathSide;\r\n pathAlign: TPathAlign;\r\n underline: boolean;\r\n overline: boolean;\r\n linethrough: boolean;\r\n textAlign: string;\r\n direction: CanvasDirection;\r\n path?: Path;\r\n textDecorationThickness: number;\r\n wrap: 'word' | 'char' | 'none';\r\n ellipsis: boolean | string;\r\n letterSpacing: number;\r\n enableAdvancedLayout: boolean;\r\n verticalAlign: 'top' | 'middle' | 'bottom';\r\n useOverlayEditing: boolean;\r\n}\r\n\r\nexport interface SerializedTextProps\r\n extends SerializedObjectProps,\r\n UniqueTextProps {\r\n styles: TextStyleArray | TextStyle;\r\n}\r\n\r\nexport interface TextProps extends FabricObjectProps, UniqueTextProps {\r\n styles: TextStyle;\r\n}\r\n\r\n/**\r\n * Text class\r\n * @see {@link http://fabricjs.com/fabric-intro-part-2#text}\r\n */\r\nexport class FabricText<\r\n Props extends TOptions<TextProps> = Partial<TextProps>,\r\n SProps extends SerializedTextProps = SerializedTextProps,\r\n EventSpec extends ObjectEvents = ObjectEvents,\r\n >\r\n extends StyledText<Props, SProps, EventSpec>\r\n implements UniqueTextProps\r\n{\r\n /**\r\n * Properties that requires a text layout recalculation when changed\r\n * @type string[]\r\n * @protected\r\n */\r\n static textLayoutProperties: string[] = textLayoutProperties;\r\n\r\n /**\r\n * @private\r\n */\r\n declare _reNewline: RegExp;\r\n\r\n /**\r\n * Use this regular expression to filter for whitespaces that is not a new line.\r\n * Mostly used when text is 'justify' aligned.\r\n * @private\r\n */\r\n declare _reSpacesAndTabs: RegExp;\r\n\r\n /**\r\n * Use this regular expression to filter for whitespace that is not a new line.\r\n * Mostly used when text is 'justify' aligned.\r\n * @private\r\n */\r\n declare _reSpaceAndTab: RegExp;\r\n\r\n /**\r\n * Use this regular expression to filter consecutive groups of non spaces.\r\n * Mostly used when text is 'justify' aligned.\r\n * @private\r\n */\r\n declare _reWords: RegExp;\r\n\r\n declare text: string;\r\n\r\n /**\r\n * Font size (in pixels)\r\n * @type Number\r\n */\r\n declare fontSize: number;\r\n\r\n /**\r\n * Font weight (e.g. bold, normal, 400, 600, 800)\r\n * @type {(Number|String)}\r\n */\r\n declare fontWeight: string | number;\r\n\r\n /**\r\n * Font family\r\n * @type String\r\n */\r\n declare fontFamily: string;\r\n\r\n /**\r\n * Text decoration underline.\r\n * @type Boolean\r\n */\r\n declare underline: boolean;\r\n\r\n /**\r\n * Text decoration overline.\r\n * @type Boolean\r\n */\r\n declare overline: boolean;\r\n\r\n /**\r\n * Text decoration linethrough.\r\n * @type Boolean\r\n */\r\n declare linethrough: boolean;\r\n\r\n /**\r\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\r\n * \"justify-left\", \"justify-center\" or \"justify-right\".\r\n * @type String\r\n */\r\n declare textAlign: string;\r\n\r\n /**\r\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\r\n * @type String\r\n */\r\n declare fontStyle: string;\r\n\r\n /**\r\n * Line height\r\n * @type Number\r\n */\r\n declare lineHeight: number;\r\n\r\n /**\r\n * Superscript schema object (minimum overlap)\r\n */\r\n declare superscript: {\r\n /**\r\n * fontSize factor\r\n * @default 0.6\r\n */\r\n size: number;\r\n /**\r\n * baseline-shift factor (upwards)\r\n * @default -0.35\r\n */\r\n baseline: number;\r\n };\r\n\r\n /**\r\n * Subscript schema object (minimum overlap)\r\n */\r\n declare subscript: {\r\n /**\r\n * fontSize factor\r\n * @default 0.6\r\n */\r\n size: number;\r\n /**\r\n * baseline-shift factor (downwards)\r\n * @default 0.11\r\n */\r\n baseline: number;\r\n };\r\n\r\n /**\r\n * Background color of text lines\r\n * @type String\r\n */\r\n declare textBackgroundColor: string;\r\n\r\n declare styles: TextStyle;\r\n\r\n /**\r\n * Path that the text should follow.\r\n * since 4.6.0 the path will be drawn automatically.\r\n * if you want to make the path visible, give it a stroke and strokeWidth or fill value\r\n * if you want it to be hidden, assign visible = false to the path.\r\n * This feature is in BETA, and SVG import/export is not yet supported.\r\n * @type Path\r\n * @example\r\n * const textPath = new Text('Text on a path', {\r\n * top: 150,\r\n * left: 150,\r\n * textAlign: 'center',\r\n * charSpacing: -50,\r\n * path: new Path('M 0 0 C 50 -100 150 -100 200 0', {\r\n * strokeWidth: 1,\r\n * visible: false\r\n * }),\r\n * pathSide: 'left',\r\n * pathStartOffset: 0\r\n * });\r\n */\r\n declare path?: Path;\r\n\r\n /**\r\n * Text wrapping mode\r\n * @type string\r\n * @default 'word'\r\n */\r\n declare wrap: 'word' | 'char' | 'none';\r\n\r\n /**\r\n * Ellipsis truncation\r\n * @type boolean | string\r\n * @default false\r\n */\r\n declare ellipsis: boolean | string;\r\n\r\n /**\r\n * Letter spacing in pixels (Konva-style)\r\n * @type number\r\n * @default 0\r\n */\r\n declare letterSpacing: number;\r\n\r\n /**\r\n * Enable advanced text layout engine\r\n * @type boolean\r\n * @default false\r\n */\r\n declare enableAdvancedLayout: boolean;\r\n\r\n /**\r\n * Vertical text alignment\r\n * @type string\r\n * @default 'top'\r\n */\r\n declare verticalAlign: 'top' | 'middle' | 'bottom';\r\n\r\n /**\r\n * Use overlay editor for inline text editing instead of hidden textarea.\r\n * @default false\r\n */\r\n declare useOverlayEditing: boolean;\r\n\r\n /**\r\n * The text decoration tickness for underline, overline and strikethrough\r\n * The tickness is expressed in thousandths of fontSize ( em ).\r\n * The original value was 1/15 that translates to 66.6667 thousandths.\r\n * The choice of unit of measure is to align with charSpacing.\r\n * You can slim the tickness without issues, while large underline or overline may end up\r\n * outside the bounding box of the text. In order to fix that a bigger refactor of the code\r\n * is needed and is out of scope for now. If you need such large overline on the first line\r\n * of text or large underline on the last line of text, consider disabling caching as a\r\n * workaround\r\n * @default 66.667\r\n */\r\n declare textDecorationThickness: number;\r\n\r\n /**\r\n * Offset amount for text path starting position\r\n * Only used when text has a path\r\n */\r\n declare pathStartOffset: number;\r\n\r\n /**\r\n * Which side of the path the text should be drawn on.\r\n * Only used when text has a path\r\n * @type {TPathSide} 'left|right'\r\n */\r\n declare pathSide: TPathSide;\r\n\r\n /**\r\n * How text is aligned to the path. This property determines\r\n * the perpendicular position of each character relative to the path.\r\n * (one of \"baseline\", \"center\", \"ascender\", \"descender\")\r\n * This feature is in BETA, and its behavior may change\r\n * @type TPathAlign\r\n */\r\n declare pathAlign: TPathAlign;\r\n\r\n /**\r\n * @private\r\n */\r\n declare _fontSizeFraction: number;\r\n\r\n /**\r\n * @private\r\n */\r\n declare offsets: { underline: number; linethrough: number; overline: number };\r\n\r\n /**\r\n * Text Line proportion to font Size (in pixels)\r\n * @type Number\r\n */\r\n declare _fontSizeMult: number;\r\n\r\n /**\r\n * additional space between characters\r\n * expressed in thousands of em unit\r\n * @type Number\r\n */\r\n declare charSpacing: number;\r\n\r\n /**\r\n * Baseline shift, styles only, keep at 0 for the main text object\r\n * @type {Number}\r\n */\r\n declare deltaY: number;\r\n\r\n /**\r\n * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\r\n * determine the direction of the text.\r\n * This has to be set manually together with textAlign and originX for proper\r\n * experience.\r\n * some interesting link for the future\r\n * https://www.w3.org/International/questions/qa-bidi-unicode-controls\r\n * @since 4.5.0\r\n * @type {CanvasDirection} 'ltr|rtl'\r\n */\r\n declare direction: CanvasDirection;\r\n\r\n /**\r\n * contains characters bounding boxes\r\n * This variable is considered to be protected.\r\n * But for how mixins are implemented right now, we can't leave it private\r\n * @protected\r\n */\r\n __charBounds: GraphemeBBox[][] = [];\r\n\r\n /**\r\n * use this size when measuring text. To avoid IE11 rounding errors\r\n * @type {Number}\r\n * @readonly\r\n * @private\r\n */\r\n declare CACHE_FONT_SIZE: number;\r\n\r\n /**\r\n * contains the min text width to avoid getting 0\r\n * @type {Number}\r\n */\r\n declare MIN_TEXT_WIDTH: number;\r\n\r\n /**\r\n * contains the the text of the object, divided in lines as they are displayed\r\n * on screen. Wrapping will divide the text independently of line breaks\r\n * @type {string[]}\r\n */\r\n declare textLines: string[];\r\n\r\n /**\r\n * same as textlines, but each line is an array of graphemes as split by splitByGrapheme\r\n * @type {string[]}\r\n */\r\n declare _textLines: string[][];\r\n\r\n declare _unwrappedTextLines: string[][];\r\n declare _text: string[];\r\n declare cursorWidth: number;\r\n declare __lineHeights: number[];\r\n declare __lineWidths: number[];\r\n declare initialized?: true;\r\n\r\n static cacheProperties = [...cacheProperties, ...additionalProps];\r\n\r\n static ownDefaults = textDefaultValues;\r\n\r\n static type = 'Text';\r\n\r\n static getDefaults(): Record<string, any> {\r\n return { ...super.getDefaults(), ...FabricText.ownDefaults };\r\n }\r\n\r\n constructor(text: string, options?: Props) {\r\n super();\r\n Object.assign(this, FabricText.ownDefaults);\r\n this.setOptions(options);\r\n if (!this.styles) {\r\n this.styles = {};\r\n }\r\n this.text = text;\r\n this.initialized = true;\r\n if (this.path) {\r\n this.setPathInfo();\r\n }\r\n this.initDimensions();\r\n this.setCoords();\r\n }\r\n\r\n /**\r\n * If text has a path, it will add the extra information needed\r\n * for path and text calculations\r\n */\r\n setPathInfo() {\r\n const path = this.path;\r\n if (path) {\r\n path.segmentsInfo = getPathSegmentsInfo(path.path);\r\n }\r\n }\r\n\r\n /**\r\n * @private\r\n * Divides text into lines of text and lines of graphemes.\r\n * Uses browser lines when available for pixel-perfect consistency.\r\n */\r\n _splitText(): TextLinesInfo {\r\n // Check if we have valid browser lines and should use them\r\n const browserLines = getBrowserLines(this);\r\n if (browserLines && this.useOverlayEditing) {\r\n return this._splitTextFromBrowserLines(browserLines);\r\n }\r\n \r\n const newLines = this._splitTextIntoLines(this.text);\r\n this.textLines = newLines.lines;\r\n this._textLines = newLines.graphemeLines;\r\n this._unwrappedTextLines = newLines._unwrappedLines;\r\n this._text = newLines.graphemeText;\r\n return newLines;\r\n }\r\n\r\n /**\r\n * Create TextLinesInfo from browser-extracted lines\r\n * @private\r\n */\r\n _splitTextFromBrowserLines(browserLines: BrowserLine[]): TextLinesInfo {\r\n const lines: string[] = [];\r\n const graphemeLines: string[][] = [];\r\n const unwrappedLines: string[][] = [];\r\n let graphemeText: string[] = [];\r\n\r\n for (const browserLine of browserLines) {\r\n lines.push(browserLine.text);\r\n const lineGraphemes = this.graphemeSplit(browserLine.text);\r\n graphemeLines.push(lineGraphemes);\r\n unwrappedLines.push(lineGraphemes);\r\n graphemeText = graphemeText.concat(lineGraphemes);\r\n \r\n // Add newline separator between lines (except for the last line)\r\n if (browserLine !== browserLines[browserLines.length - 1]) {\r\n graphemeText.push('\\n');\r\n }\r\n }\r\n\r\n const result: TextLinesInfo = {\r\n lines,\r\n graphemeLines,\r\n graphemeText,\r\n _unwrappedLines: unwrappedLines,\r\n };\r\n\r\n // Update instance properties\r\n this.textLines = result.lines;\r\n this._textLines = result.graphemeLines;\r\n this._unwrappedTextLines = result._unwrappedLines;\r\n this._text = result.graphemeText;\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Initialize or update text dimensions.\r\n * Updates this.width and this.height with the proper values.\r\n * Does not return dimensions.\r\n */\r\n initDimensions(): void {\r\n // Use advanced layout if enabled\r\n if (this.enableAdvancedLayout && !this.path) {\r\n return this.initDimensionsAdvanced();\r\n }\r\n \r\n this._splitText();\r\n this._clearCache();\r\n this.dirty = true;\r\n if (this.path) {\r\n this.width = this.path.width;\r\n this.height = this.path.height;\r\n } else {\r\n this.width =\r\n this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\r\n this.height = this.calcTextHeight();\r\n }\r\n if (this.textAlign.includes(JUSTIFY)) {\r\n // once text is measured we need to make space fatter to make justified text.\r\n this.enlargeSpaces();\r\n }\r\n }\r\n\r\n /**\r\n * Enlarge space boxes and shift the others\r\n */\r\n enlargeSpaces() {\r\n let diffSpace,\r\n currentLineWidth,\r\n numberOfSpaces,\r\n accumulatedSpace,\r\n line,\r\n charBound,\r\n spaces;\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n if (\r\n this.textAlign !== JUSTIFY &&\r\n (i === len - 1 || this.isEndOfWrapping(i))\r\n ) {\r\n continue;\r\n }\r\n accumulatedSpace = 0;\r\n line = this._textLines[i];\r\n currentLineWidth = this.getLineWidth(i);\r\n if (\r\n currentLineWidth < this.width &&\r\n (spaces = this.textLines[i].match(this._reSpacesAndTabs))\r\n ) {\r\n numberOfSpaces = spaces.length;\r\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\r\n for (let j = 0; j <= line.length; j++) {\r\n charBound = this.__charBounds[i][j];\r\n if (this._reSpaceAndTab.test(line[j])) {\r\n charBound.width += diffSpace;\r\n charBound.kernedWidth += diffSpace;\r\n charBound.left += accumulatedSpace;\r\n accumulatedSpace += diffSpace;\r\n } else {\r\n charBound.left += accumulatedSpace;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Advanced layout using new text engine (Konva-compatible)\r\n * @private\r\n */\r\n _layoutTextAdvanced(): LayoutResult {\r\n const options = this._getAdvancedLayoutOptions();\r\n return layoutText(options);\r\n }\r\n\r\n /**\r\n * Get advanced layout options from current text properties\r\n * @private\r\n */\r\n _getAdvancedLayoutOptions(): TextLayoutOptions {\r\n return {\r\n text: this.text,\r\n width: this.width,\r\n height: this.height,\r\n wrap: this.wrap || 'word',\r\n align: this._mapTextAlignToAlign(this.textAlign),\r\n ellipsis: this.ellipsis || false,\r\n fontSize: this.fontSize,\r\n lineHeight: this.lineHeight,\r\n letterSpacing: this.letterSpacing || 0,\r\n charSpacing: this.charSpacing,\r\n direction: this.direction === 'inherit' ? 'ltr' : this.direction,\r\n fontFamily: this.fontFamily,\r\n fontStyle: this.fontStyle,\r\n fontWeight: this.fontWeight,\r\n verticalAlign: this.verticalAlign || 'top',\r\n };\r\n }\r\n\r\n /**\r\n * Map Fabric textAlign to Konva align format\r\n * @private\r\n */\r\n _mapTextAlignToAlign(textAlign: string): 'left' | 'center' | 'right' | 'justify' {\r\n switch (textAlign) {\r\n case 'center':\r\n case CENTER:\r\n return 'center';\r\n case 'right':\r\n case RIGHT:\r\n return 'right';\r\n case 'justify':\r\n case JUSTIFY:\r\n case JUSTIFY_LEFT:\r\n case JUSTIFY_RIGHT:\r\n case JUSTIFY_CENTER:\r\n return 'justify';\r\n default:\r\n return 'left';\r\n }\r\n }\r\n\r\n /**\r\n * Enhanced initDimensions that uses advanced layout when enabled\r\n */\r\n initDimensionsAdvanced(): void {\r\n if (!this.enableAdvancedLayout) {\r\n return this.initDimensions();\r\n }\r\n\r\n const layout = this._layoutTextAdvanced();\r\n \r\n // Update dimensions from layout\r\n this.width = layout.totalWidth || this.MIN_TEXT_WIDTH;\r\n this.height = layout.totalHeight;\r\n \r\n // Convert layout to legacy format for compatibility\r\n this._convertLayoutToLegacyFormat(layout);\r\n \r\n this.dirty = true;\r\n }\r\n\r\n /**\r\n * Convert new layout format to legacy _textLines and __charBounds format\r\n * @private\r\n */\r\n _convertLayoutToLegacyFormat(layout: LayoutResult): void {\r\n this._textLines = layout.lines.map(line => line.graphemes);\r\n (this as any).textLines = layout.lines.map(line => line.text);\r\n \r\n // Convert bounds to legacy format\r\n this.__charBounds = layout.lines.map(line => \r\n line.bounds.map(bound => ({\r\n left: bound.left,\r\n top: bound.y,\r\n width: bound.width,\r\n height: bound.height,\r\n kernedWidth: bound.kernedWidth,\r\n deltaY: bound.deltaY || 0,\r\n }))\r\n );\r\n \r\n // Update grapheme info for compatibility\r\n if (layout.lines.length > 0) {\r\n (this as any)._unwrappedTextLines = layout.lines.map(line => line.graphemes);\r\n }\r\n }\r\n\r\n /**\r\n * Detect if the text line is ended with an hard break\r\n * text and itext do not have wrapping, return false\r\n * @return {Boolean}\r\n */\r\n isEndOfWrapping(lineIndex: number): boolean {\r\n return lineIndex === this._textLines.length - 1;\r\n }\r\n\r\n /**\r\n * Detect if a line has a linebreak and so we need to account for it when moving\r\n * and counting style.\r\n * It return always 1 for text and Itext. Textbox has its own implementation\r\n * @return Number\r\n */\r\n missingNewlineOffset(lineIndex: number, skipWrapping?: boolean): 0 | 1;\r\n missingNewlineOffset(_lineIndex: number): 1 {\r\n return 1;\r\n }\r\n\r\n /**\r\n * Returns 2d representation (lineIndex and charIndex) of cursor\r\n * @param {Number} selectionStart\r\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\r\n */\r\n get2DCursorLocation(selectionStart: number, skipWrapping?: boolean) {\r\n const lines = skipWrapping ? this._unwrappedTextLines : this._textLines;\r\n let i: number;\r\n for (i = 0; i < lines.length; i++) {\r\n if (selectionStart <= lines[i].length) {\r\n return {\r\n lineIndex: i,\r\n charIndex: selectionStart,\r\n };\r\n }\r\n selectionStart -=\r\n lines[i].length + this.missingNewlineOffset(i, skipWrapping);\r\n }\r\n return {\r\n lineIndex: i - 1,\r\n charIndex:\r\n lines[i - 1].length < selectionStart\r\n ? lines[i - 1].length\r\n : selectionStart,\r\n };\r\n }\r\n\r\n /**\r\n * Returns string representation of an instance\r\n * @return {String} String representation of text object\r\n */\r\n toString(): string {\r\n return `#<Text (${this.complexity()}): { \"text\": \"${\r\n this.text\r\n }\", \"fontFamily\": \"${this.fontFamily}\" }>`;\r\n }\r\n\r\n /**\r\n * Return the dimension and the zoom level needed to create a cache canvas\r\n * big enough to host the object to be cached.\r\n * @private\r\n * @param {Object} dim.x width of object to be cached\r\n * @param {Object} dim.y height of object to be cached\r\n * @return {Object}.width width of canvas\r\n * @return {Object}.height height of canvas\r\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\r\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\r\n */\r\n _getCacheCanvasDimensions(): TCacheCanvasDimensions {\r\n const dims = super._getCacheCanvasDimensions();\r\n const fontSize = this.fontSize;\r\n dims.width += fontSize * dims.zoomX;\r\n dims.height += fontSize * dims.zoomY;\r\n return dims;\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _render(ctx: CanvasRenderingContext2D) {\r\n const path = this.path;\r\n path && !path.isNotVisible() && path._render(ctx);\r\n this._setTextStyles(ctx);\r\n this._renderTextLinesBackground(ctx);\r\n this._renderTextDecoration(ctx, 'underline');\r\n this._renderText(ctx);\r\n this._renderTextDecoration(ctx, 'overline');\r\n this._renderTextDecoration(ctx, 'linethrough');\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderText(ctx: CanvasRenderingContext2D) {\r\n // Skip text rendering if in overlay editing mode\r\n if ((this as any).__overlayEditor) {\r\n return;\r\n }\r\n if (this.paintFirst === STROKE) {\r\n this._renderTextStroke(ctx);\r\n this._renderTextFill(ctx);\r\n } else {\r\n this._renderTextFill(ctx);\r\n this._renderTextStroke(ctx);\r\n }\r\n }\r\n\r\n /**\r\n * Set the font parameter of the context with the object properties or with charStyle\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {Object} [charStyle] object with font style properties\r\n * @param {String} [charStyle.fontFamily] Font Family\r\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\r\n * @param {String} [charStyle.fontWeight] Font weight\r\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\r\n */\r\n _setTextStyles(\r\n ctx: CanvasRenderingContext2D,\r\n charStyle?: any,\r\n forMeasuring?: boolean,\r\n ) {\r\n ctx.textBaseline = 'alphabetic';\r\n if (this.path) {\r\n switch (this.pathAlign) {\r\n case CENTER:\r\n ctx.textBaseline = 'middle';\r\n break;\r\n case 'ascender':\r\n ctx.textBaseline = TOP;\r\n break;\r\n case 'descender':\r\n ctx.textBaseline = BOTTOM;\r\n break;\r\n }\r\n }\r\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\r\n }\r\n\r\n /**\r\n * calculate and return the text Width measuring each line.\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @return {Number} Maximum width of Text object\r\n */\r\n calcTextWidth(): number {\r\n let maxWidth = this.getLineWidth(0);\r\n\r\n for (let i = 1, len = this._textLines.length; i < len; i++) {\r\n const currentLineWidth = this.getLineWidth(i);\r\n if (currentLineWidth > maxWidth) {\r\n maxWidth = currentLineWidth;\r\n }\r\n }\r\n return maxWidth;\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {String} line Text to render\r\n * @param {Number} left Left position of text\r\n * @param {Number} top Top position of text\r\n * @param {Number} lineIndex Index of a line in a text\r\n */\r\n _renderTextLine(\r\n method: 'fillText' | 'strokeText',\r\n ctx: CanvasRenderingContext2D,\r\n line: string[],\r\n left: number,\r\n top: number,\r\n lineIndex: number,\r\n ) {\r\n this._renderChars(method, ctx, line, left, top, lineIndex);\r\n }\r\n\r\n /**\r\n * Renders the text background for lines, taking care of style\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextLinesBackground(ctx: CanvasRenderingContext2D) {\r\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\r\n return;\r\n }\r\n const originalFill = ctx.fillStyle,\r\n leftOffset = this._getLeftOffset();\r\n let lineTopOffset = this._getTopOffset();\r\n\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n const heightOfLine = this.getHeightOfLine(i);\r\n if (\r\n !this.textBackgroundColor &&\r\n !this.styleHas('textBackgroundColor', i)\r\n ) {\r\n lineTopOffset += heightOfLine;\r\n continue;\r\n }\r\n const jlen = this._textLines[i].length;\r\n const lineLeftOffset = this._getLineLeftOffset(i);\r\n let boxWidth = 0;\r\n let boxStart = 0;\r\n let drawStart;\r\n let currentColor;\r\n let lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\r\n for (let j = 0; j < jlen; j++) {\r\n // at this point charbox are either standard or full with pathInfo if there is a path.\r\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\r\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\r\n if (this.path) {\r\n ctx.save();\r\n ctx.translate(charBox.renderLeft, charBox.renderTop);\r\n ctx.rotate(charBox.angle);\r\n ctx.fillStyle = currentColor;\r\n currentColor &&\r\n ctx.fillRect(\r\n -charBox.width / 2,\r\n (-heightOfLine / this.lineHeight) * (1 - this._fontSizeFraction),\r\n charBox.width,\r\n heightOfLine / this.lineHeight,\r\n );\r\n ctx.restore();\r\n } else if (currentColor !== lastColor) {\r\n drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n ctx.fillStyle = lastColor;\r\n lastColor &&\r\n ctx.fillRect(\r\n drawStart,\r\n lineTopOffset,\r\n boxWidth,\r\n heightOfLine / this.lineHeight,\r\n );\r\n boxStart = charBox.left;\r\n boxWidth = charBox.width;\r\n lastColor = currentColor;\r\n } else {\r\n boxWidth += charBox.kernedWidth;\r\n }\r\n }\r\n if (currentColor && !this.path) {\r\n drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n ctx.fillStyle = currentColor;\r\n ctx.fillRect(\r\n drawStart,\r\n lineTopOffset,\r\n boxWidth,\r\n heightOfLine / this.lineHeight,\r\n );\r\n }\r\n lineTopOffset += heightOfLine;\r\n }\r\n ctx.fillStyle = originalFill;\r\n // if there is text background color no\r\n // other shadows should be casted\r\n this._removeShadow(ctx);\r\n }\r\n\r\n /**\r\n * measure and return the width of a single character.\r\n * possibly overridden to accommodate different measure logic or\r\n * to hook some external lib for character measurement\r\n * @private\r\n * @param {String} _char, char to be measured\r\n * @param {Object} charStyle style of char to be measured\r\n * @param {String} [previousChar] previous char\r\n * @param {Object} [prevCharStyle] style of previous char\r\n */\r\n _measureChar(\r\n _char: string,\r\n charStyle: CompleteTextStyleDeclaration,\r\n previousChar: string | undefined,\r\n prevCharStyle: CompleteTextStyleDeclaration | Record<string, never>,\r\n ) {\r\n const fontCache = cache.getFontCache(charStyle),\r\n fontDeclaration = this._getFontDeclaration(charStyle),\r\n couple = previousChar + _char,\r\n stylesAreEqual =\r\n previousChar &&\r\n fontDeclaration === this._getFontDeclaration(prevCharStyle),\r\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE;\r\n let width: number | undefined,\r\n coupleWidth: number | undefined,\r\n previousWidth: number | undefined,\r\n kernedWidth: number | undefined;\r\n\r\n if (previousChar && fontCache[previousChar] !== undefined) {\r\n previousWidth = fontCache[previousChar];\r\n }\r\n if (fontCache[_char] !== undefined) {\r\n kernedWidth = width = fontCache[_char];\r\n }\r\n if (stylesAreEqual && fontCache[couple] !== undefined) {\r\n coupleWidth = fontCache[couple];\r\n kernedWidth = coupleWidth - previousWidth!;\r\n }\r\n if (\r\n width === undefined ||\r\n previousWidth === undefined ||\r\n coupleWidth === undefined\r\n ) {\r\n const ctx = getMeasuringContext()!;\r\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\r\n this._setTextStyles(ctx, charStyle, true);\r\n if (width === undefined) {\r\n kernedWidth = width = ctx.measureText(_char).width;\r\n fontCache[_char] = width;\r\n }\r\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\r\n previousWidth = ctx.measureText(previousChar).width;\r\n fontCache[previousChar] = previousWidth;\r\n }\r\n if (stylesAreEqual && coupleWidth === undefined) {\r\n // we can measure the kerning couple and subtract the width of the previous character\r\n coupleWidth = ctx.measureText(couple).width;\r\n fontCache[couple] = coupleWidth;\r\n // safe to use the non-null since if undefined we defined it before.\r\n kernedWidth = coupleWidth - previousWidth!;\r\n }\r\n }\r\n return {\r\n width: width * fontMultiplier,\r\n kernedWidth: kernedWidth! * fontMultiplier,\r\n };\r\n }\r\n\r\n /**\r\n * Computes height of character at given position\r\n * @param {Number} line the line index number\r\n * @param {Number} _char the character index number\r\n * @return {Number} fontSize of the character\r\n */\r\n getHeightOfChar(line: number, _char: number): number {\r\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\r\n }\r\n\r\n /**\r\n * measure a text line measuring all characters.\r\n * @param {Number} lineIndex line number\r\n */\r\n measureLine(lineIndex: number) {\r\n const lineInfo = this._measureLine(lineIndex);\r\n if (this.charSpacing !== 0) {\r\n lineInfo.width -= this._getWidthOfCharSpacing();\r\n }\r\n if (lineInfo.width < 0) {\r\n lineInfo.width = 0;\r\n }\r\n return lineInfo;\r\n }\r\n\r\n /**\r\n * measure every grapheme of a line, populating __charBounds\r\n * @param {Number} lineIndex\r\n * @return {Object} object.width total width of characters\r\n * @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs\r\n */\r\n _measureLine(lineIndex: number) {\r\n let width = 0,\r\n prevGrapheme: string | undefined,\r\n graphemeInfo: GraphemeBBox | undefined;\r\n\r\n const reverse = this.pathSide === RIGHT,\r\n path = this.path,\r\n line = this._textLines[lineIndex],\r\n llength = line.length,\r\n lineBounds = new Array<GraphemeBBox>(llength);\r\n\r\n this.__charBounds[lineIndex] = lineBounds;\r\n for (let i = 0; i < llength; i++) {\r\n const grapheme = line[i];\r\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\r\n lineBounds[i] = graphemeInfo;\r\n width += graphemeInfo.kernedWidth;\r\n prevGrapheme = grapheme;\r\n }\r\n // this latest bound box represent the last character of the line\r\n // to simplify cursor handling in interactive mode.\r\n lineBounds[llength] = {\r\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\r\n width: 0,\r\n kernedWidth: 0,\r\n height: this.fontSize,\r\n deltaY: 0,\r\n } as GraphemeBBox;\r\n if (path && path.segmentsInfo) {\r\n let positionInPath = 0;\r\n const totalPathLength =\r\n path.segmentsInfo[path.segmentsInfo.length - 1].length;\r\n switch (this.textAlign) {\r\n case LEFT:\r\n positionInPath = reverse ? totalPathLength - width : 0;\r\n break;\r\n case CENTER:\r\n positionInPath = (totalPathLength - width) / 2;\r\n break;\r\n case RIGHT:\r\n positionInPath = reverse ? 0 : totalPathLength - width;\r\n break;\r\n //todo - add support for justify\r\n }\r\n positionInPath += this.pathStartOffset * (reverse ? -1 : 1);\r\n for (\r\n let i = reverse ? llength - 1 : 0;\r\n reverse ? i >= 0 : i < llength;\r\n reverse ? i-- : i++\r\n ) {\r\n graphemeInfo = lineBounds[i];\r\n if (positionInPath > totalPathLength) {\r\n positionInPath %= totalPathLength;\r\n } else if (positionInPath < 0) {\r\n positionInPath += totalPathLength;\r\n }\r\n // it would probably much faster to send all the grapheme position for a line\r\n // and calculate path position/angle at once.\r\n this._setGraphemeOnPath(positionInPath, graphemeInfo);\r\n positionInPath += graphemeInfo.kernedWidth;\r\n }\r\n }\r\n return { width: width, numOfSpaces: 0 };\r\n }\r\n\r\n /**\r\n * Calculate the angle and the left,top position of the char that follow a path.\r\n * It appends it to graphemeInfo to be reused later at rendering\r\n * @private\r\n * @param {Number} positionInPath to be measured\r\n * @param {GraphemeBBox} graphemeInfo current grapheme box information\r\n * @param {Object} startingPoint position of the point\r\n */\r\n _setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox) {\r\n const centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\r\n path = this.path!;\r\n\r\n // we are at currentPositionOnPath. we want to know what point on the path is.\r\n const info = getPointOnPath(path.path, centerPosition, path.segmentsInfo)!;\r\n graphemeInfo.renderLeft = info.x - path.pathOffset.x;\r\n graphemeInfo.renderTop = info.y - path.pathOffset.y;\r\n graphemeInfo.angle = info.angle + (this.pathSide === RIGHT ? Math.PI : 0);\r\n }\r\n\r\n /**\r\n *\r\n * @param {String} grapheme to be measured\r\n * @param {Number} lineIndex index of the line where the char is\r\n * @param {Number} charIndex position in the line\r\n * @param {String} [prevGrapheme] character preceding the one to be measured\r\n * @returns {GraphemeBBox} grapheme bbox\r\n */\r\n _getGraphemeBox(\r\n grapheme: string,\r\n lineIndex: number,\r\n charIndex: number,\r\n prevGrapheme?: string,\r\n skipLeft?: boolean,\r\n ): GraphemeBBox {\r\n const style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\r\n prevStyle = prevGrapheme\r\n ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1)\r\n : {},\r\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle);\r\n let kernedWidth = info.kernedWidth,\r\n width = info.width,\r\n charSpacing;\r\n\r\n if (this.charSpacing !== 0) {\r\n charSpacing = this._getWidthOfCharSpacing();\r\n width += charSpacing;\r\n kernedWidth += charSpacing;\r\n }\r\n\r\n const box: GraphemeBBox = {\r\n width,\r\n left: 0,\r\n height: style.fontSize,\r\n kernedWidth,\r\n deltaY: style.deltaY,\r\n };\r\n if (charIndex > 0 && !skipLeft) {\r\n const previousBox = this.__charBounds[lineIndex][charIndex - 1];\r\n box.left =\r\n previousBox.left + previousBox.width + info.kernedWidth - info.width;\r\n }\r\n return box;\r\n }\r\n\r\n /**\r\n * Calculate height of line at 'lineIndex'\r\n * @param {Number} lineIndex index of line to calculate\r\n * @return {Number}\r\n */\r\n getHeightOfLine(lineIndex: number): number {\r\n if (this.__lineHeights[lineIndex]) {\r\n return this.__lineHeights[lineIndex];\r\n }\r\n\r\n // char 0 is measured before the line cycle because it needs to char\r\n // emptylines\r\n let maxHeight = this.getHeightOfChar(lineIndex, 0);\r\n for (let i = 1, len = this._textLines[lineIndex].length; i < len; i++) {\r\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\r\n }\r\n\r\n return (this.__lineHeights[lineIndex] =\r\n maxHeight * this.lineHeight * this._fontSizeMult);\r\n }\r\n\r\n /**\r\n * Calculate text box height\r\n */\r\n calcTextHeight() {\r\n let lineHeight,\r\n height = 0;\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n lineHeight = this.getHeightOfLine(i);\r\n height += i === len - 1 ? lineHeight / this.lineHeight : lineHeight;\r\n }\r\n return height;\r\n }\r\n\r\n /**\r\n * @private\r\n * @return {Number} Left offset\r\n */\r\n _getLeftOffset(): number {\r\n return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\r\n }\r\n\r\n /**\r\n * @private\r\n * @return {Number} Top offset\r\n */\r\n _getTopOffset(): number {\r\n return -this.height / 2;\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\r\n */\r\n _renderTextCommon(\r\n ctx: CanvasRenderingContext2D,\r\n method: 'fillText' | 'strokeText',\r\n ) {\r\n ctx.save();\r\n let lineHeights = 0;\r\n const left = this._getLeftOffset(),\r\n top = this._getTopOffset();\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n const heightOfLine = this.getHeightOfLine(i),\r\n maxHeight = heightOfLine / this.lineHeight,\r\n leftOffset = this._getLineLeftOffset(i);\r\n this._renderTextLine(\r\n method,\r\n ctx,\r\n this._textLines[i],\r\n left + leftOffset,\r\n top + lineHeights + maxHeight,\r\n i,\r\n );\r\n lineHeights += heightOfLine;\r\n }\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextFill(ctx: CanvasRenderingContext2D) {\r\n if (!this.fill && !this.styleHas(FILL)) {\r\n return;\r\n }\r\n\r\n this._renderTextCommon(ctx, 'fillText');\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextStroke(ctx: CanvasRenderingContext2D) {\r\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\r\n return;\r\n }\r\n\r\n if (this.shadow && !this.shadow.affectStroke) {\r\n this._removeShadow(ctx);\r\n }\r\n\r\n ctx.save();\r\n this._setLineDash(ctx, this.strokeDashArray);\r\n ctx.beginPath();\r\n this._renderTextCommon(ctx, 'strokeText');\r\n ctx.closePath();\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} method fillText or strokeText.\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {Array} line Content of the line, splitted in an array by grapheme\r\n * @param {Number} left\r\n * @param {Number} top\r\n * @param {Number} lineIndex\r\n */\r\n _renderChars(\r\n method: 'fillText' | 'strokeText',\r\n ctx: CanvasRenderingContext2D,\r\n line: Array<any>,\r\n left: number,\r\n top: number,\r\n lineIndex: number,\r\n ) {\r\n const lineHeight = this.getHeightOfLine(lineIndex),\r\n isJustify = this.textAlign.includes(JUSTIFY),\r\n path = this.path,\r\n shortCut =\r\n !isJustify &&\r\n this.charSpacing === 0 &&\r\n this.isEmptyStyles(lineIndex) &&\r\n !path,\r\n isLtr = this.direction === 'ltr',\r\n sign = this.direction === 'ltr' ? 1 : -1,\r\n // this was changed in the PR #7674\r\n // currentDirection = ctx.canvas.getAttribute('dir');\r\n currentDirection = ctx.direction;\r\n\r\n let actualStyle,\r\n nextStyle,\r\n charsToRender = '',\r\n charBox,\r\n boxWidth = 0,\r\n timeToRender,\r\n drawingLeft;\r\n\r\n ctx.save();\r\n if (currentDirection !== this.direction) {\r\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\r\n ctx.direction = isLtr ? 'ltr' : 'rtl';\r\n ctx.textAlign = isLtr ? LEFT : RIGHT;\r\n }\r\n top -= (lineHeight * this._fontSizeFraction) / this.lineHeight;\r\n if (shortCut) {\r\n // render all the line in one pass without checking\r\n // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\r\n this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top);\r\n ctx.restore();\r\n return;\r\n }\r\n for (let i = 0, len = line.length - 1; i <= len; i++) {\r\n timeToRender = i === len || this.charSpacing || path;\r\n charsToRender += line[i];\r\n charBox = this.__charBounds[lineIndex][i] as Required<GraphemeBBox>;\r\n if (boxWidth === 0) {\r\n left += sign * (charBox.kernedWidth - charBox.width);\r\n boxWidth += charBox.width;\r\n } else {\r\n boxWidth += charBox.kernedWidth;\r\n }\r\n if (isJustify && !timeToRender) {\r\n if (this._reSpaceAndTab.test(line[i])) {\r\n timeToRender = true;\r\n }\r\n }\r\n if (!timeToRender) {\r\n // if we have charSpacing, we render char by char\r\n actualStyle =\r\n actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\r\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\r\n timeToRender = hasStyleChanged(actualStyle, nextStyle, false);\r\n }\r\n if (timeToRender) {\r\n if (path) {\r\n ctx.save();\r\n ctx.translate(charBox.renderLeft, charBox.renderTop);\r\n ctx.rotate(charBox.angle);\r\n this._renderChar(\r\n method,\r\n ctx,\r\n lineIndex,\r\n i,\r\n charsToRender,\r\n -boxWidth / 2,\r\n 0,\r\n );\r\n ctx.restore();\r\n } else {\r\n drawingLeft = left;\r\n this._renderChar(\r\n method,\r\n ctx,\r\n lineIndex,\r\n i,\r\n charsToRender,\r\n drawingLeft,\r\n top,\r\n );\r\n }\r\n charsToRender = '';\r\n actualStyle = nextStyle;\r\n left += sign * boxWidth;\r\n boxWidth = 0;\r\n }\r\n }\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * This function try to patch the missing gradientTransform on canvas gradients.\r\n * transforming a context to transform the gradient, is going to transform the stroke too.\r\n * we want to transform the gradient but not the stroke operation, so we create\r\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\r\n * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\r\n * is limited.\r\n * @private\r\n * @param {TFiller} filler a fabric gradient instance\r\n * @return {CanvasPattern} a pattern to use as fill/stroke style\r\n */\r\n _applyPatternGradientTransformText(filler: TFiller) {\r\n // TODO: verify compatibility with strokeUniform\r\n const width = this.width + this.strokeWidth,\r\n height = this.height + this.strokeWidth,\r\n pCanvas = createCanvasElementFor({\r\n width,\r\n height,\r\n }),\r\n pCtx = pCanvas.getContext('2d')!;\r\n pCanvas.width = width;\r\n pCanvas.height = height;\r\n pCtx.beginPath();\r\n pCtx.moveTo(0, 0);\r\n pCtx.lineTo(width, 0);\r\n pCtx.lineTo(width, height);\r\n pCtx.lineTo(0, height);\r\n pCtx.closePath();\r\n pCtx.translate(width / 2, height / 2);\r\n pCtx.fillStyle = filler.toLive(pCtx)!;\r\n this._applyPatternGradientTransform(pCtx, filler);\r\n pCtx.fill();\r\n return pCtx.createPattern(pCanvas, 'no-repeat')!;\r\n }\r\n\r\n handleFiller<T extends 'fill' | 'stroke'>(\r\n ctx: CanvasRenderingContext2D,\r\n property: `${T}Style`,\r\n filler: TFiller | string,\r\n ): { offsetX: number; offsetY: number } {\r\n let offsetX: number, offsetY: number;\r\n if (isFiller(filler)) {\r\n if (\r\n (filler as Gradient<'linear'>).gradientUnits === 'percentage' ||\r\n (filler as Gradient<'linear'>).gradientTransform ||\r\n (filler as Pattern).patternTransform\r\n ) {\r\n // need to transform gradient in a pattern.\r\n // this is a slow process. If you are hitting this codepath, and the object\r\n // is not using caching, you should consider switching it on.\r\n // we need a canvas as big as the current object caching canvas.\r\n offsetX = -this.width / 2;\r\n offsetY = -this.height / 2;\r\n ctx.translate(offsetX, offsetY);\r\n ctx[property] = this._applyPatternGradientTransformText(filler);\r\n return { offsetX, offsetY };\r\n } else {\r\n // is a simple gradient or pattern\r\n ctx[property] = filler.toLive(ctx)!;\r\n return this._applyPatternGradientTransform(ctx, filler);\r\n }\r\n } else {\r\n // is a color\r\n ctx[property] = filler;\r\n }\r\n return { offsetX: 0, offsetY: 0 };\r\n }\r\n\r\n /**\r\n * This function prepare the canvas for a stroke style, and stroke and strokeWidth\r\n * need to be sent in as defined\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {CompleteTextStyleDeclaration} style with stroke and strokeWidth defined\r\n * @returns\r\n */\r\n _setStrokeStyles(\r\n ctx: CanvasRenderingContext2D,\r\n {\r\n stroke,\r\n strokeWidth,\r\n }: Pick<CompleteTextStyleDeclaration, 'stroke' | 'strokeWidth'>,\r\n ) {\r\n ctx.lineWidth = strokeWidth;\r\n ctx.lineCap = this.strokeLineCap;\r\n ctx.lineDashOffset = this.strokeDashOffset;\r\n ctx.lineJoin = this.strokeLineJoin;\r\n ctx.miterLimit = this.strokeMiterLimit;\r\n return this.handleFiller(ctx, 'strokeStyle', stroke!);\r\n }\r\n\r\n /**\r\n * This function prepare the canvas for a ill style, and fill\r\n * need to be sent in as defined\r\n * @param {CanvasRenderingContext2D} ctx\r\n * @param {CompleteTextStyleDeclaration} style with ill defined\r\n * @returns\r\n */\r\n _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>) {\r\n return this.handleFiller(ctx, 'fillStyle', fill!);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {String} method\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n * @param {Number} lineIndex\r\n * @param {Number} charIndex\r\n * @param {String} _char\r\n * @param {Number} left Left coordinate\r\n * @param {Number} top Top coordinate\r\n * @param {Number} lineHeight Height of the line\r\n */\r\n _renderChar(\r\n method: 'fillText' | 'strokeText',\r\n ctx: CanvasRenderingContext2D,\r\n lineIndex: number,\r\n charIndex: number,\r\n _char: string,\r\n left: number,\r\n top: number,\r\n ) {\r\n const decl = this._getStyleDeclaration(lineIndex, charIndex),\r\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\r\n shouldFill = method === 'fillText' && fullDecl.fill,\r\n shouldStroke =\r\n method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\r\n\r\n if (!shouldStroke && !shouldFill) {\r\n return;\r\n }\r\n ctx.save();\r\n\r\n ctx.font = this._getFontDeclaration(fullDecl);\r\n\r\n if (decl.textBackgroundColor) {\r\n this._removeShadow(ctx);\r\n }\r\n if (decl.deltaY) {\r\n top += decl.deltaY;\r\n }\r\n\r\n if (shouldFill) {\r\n const fillOffsets = this._setFillStyles(ctx, fullDecl);\r\n ctx.fillText(\r\n _char,\r\n left - fillOffsets.offsetX,\r\n top - fillOffsets.offsetY,\r\n );\r\n }\r\n\r\n if (shouldStroke) {\r\n const strokeOffsets = this._setStrokeStyles(ctx, fullDecl);\r\n ctx.strokeText(\r\n _char,\r\n left - strokeOffsets.offsetX,\r\n top - strokeOffsets.offsetY,\r\n );\r\n }\r\n\r\n ctx.restore();\r\n }\r\n\r\n /**\r\n * Turns the character into a 'superior figure' (i.e. 'superscript')\r\n * @param {Number} start selection start\r\n * @param {Number} end selection end\r\n */\r\n setSuperscript(start: number, end: number) {\r\n this._setScript(start, end, this.superscript);\r\n }\r\n\r\n /**\r\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\r\n * @param {Number} start selection start\r\n * @param {Number} end selection end\r\n */\r\n setSubscript(start: number, end: number) {\r\n this._setScript(start, end, this.subscript);\r\n }\r\n\r\n /**\r\n * Applies 'schema' at given position\r\n * @private\r\n * @param {Number} start selection start\r\n * @param {Number} end selection end\r\n * @param {Number} schema\r\n */\r\n protected _setScript(\r\n start: number,\r\n end: number,\r\n schema: {\r\n size: number;\r\n baseline: number;\r\n },\r\n ) {\r\n const loc = this.get2DCursorLocation(start, true),\r\n fontSize = this.getValueOfPropertyAt(\r\n loc.lineIndex,\r\n loc.charIndex,\r\n 'fontSize',\r\n ),\r\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\r\n style = {\r\n fontSize: fontSize * schema.size,\r\n deltaY: dy + fontSize * schema.baseline,\r\n };\r\n this.setSelectionStyles(style, start, end);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {Number} lineIndex index text line\r\n * @return {Number} Line left offset\r\n */\r\n _getLineLeftOffset(lineIndex: number): number {\r\n const lineWidth = this.getLineWidth(lineIndex),\r\n lineDiff = this.width - lineWidth,\r\n textAlign = this.textAlign,\r\n direction = this.direction,\r\n isEndOfWrapping = this.isEndOfWrapping(lineIndex);\r\n let leftOffset = 0;\r\n if (\r\n textAlign === JUSTIFY ||\r\n (textAlign === JUSTIFY_CENTER && !isEndOfWrapping) ||\r\n (textAlign === JUSTIFY_RIGHT && !isEndOfWrapping) ||\r\n (textAlign === JUSTIFY_LEFT && !isEndOfWrapping)\r\n ) {\r\n return 0;\r\n }\r\n if (textAlign === CENTER) {\r\n leftOffset = lineDiff / 2;\r\n }\r\n if (textAlign === RIGHT) {\r\n leftOffset = lineDiff;\r\n }\r\n if (textAlign === JUSTIFY_CENTER) {\r\n leftOffset = lineDiff / 2;\r\n }\r\n if (textAlign === JUSTIFY_RIGHT) {\r\n leftOffset = lineDiff;\r\n }\r\n if (direction === 'rtl') {\r\n if (\r\n textAlign === RIGHT ||\r\n textAlign === JUSTIFY ||\r\n textAlign === JUSTIFY_RIGHT\r\n ) {\r\n leftOffset = 0;\r\n } else if (textAlign === LEFT || textAlign === JUSTIFY_LEFT) {\r\n leftOffset = -lineDiff;\r\n } else if (textAlign === CENTER || textAlign === JUSTIFY_CENTER) {\r\n leftOffset = -lineDiff / 2;\r\n }\r\n }\r\n return leftOffset;\r\n }\r\n\r\n /**\r\n * @private\r\n */\r\n _clearCache() {\r\n this._forceClearCache = false;\r\n this.__lineWidths = [];\r\n this.__lineHeights = [];\r\n this.__charBounds = [];\r\n }\r\n\r\n /**\r\n * Measure a single line given its index. Used to calculate the initial\r\n * text bounding box. The values are calculated and stored in __lineWidths cache.\r\n * @private\r\n * @param {Number} lineIndex line number\r\n * @return {Number} Line width\r\n */\r\n getLineWidth(lineIndex: number): number {\r\n if (this.__lineWidths[lineIndex] !== undefined) {\r\n return this.__lineWidths[lineIndex];\r\n }\r\n\r\n const { width } = this.measureLine(lineIndex);\r\n this.__lineWidths[lineIndex] = width;\r\n return width;\r\n }\r\n\r\n _getWidthOfCharSpacing() {\r\n if (this.charSpacing !== 0) {\r\n return (this.fontSize * this.charSpacing) / 1000;\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Retrieves the value of property at given character position\r\n * @param {Number} lineIndex the line number\r\n * @param {Number} charIndex the character number\r\n * @param {String} property the property name\r\n * @returns the value of 'property'\r\n */\r\n getValueOfPropertyAt<T extends StylePropertiesType>(\r\n lineIndex: number,\r\n charIndex: number,\r\n property: T,\r\n ): this[T] {\r\n const charStyle = this._getStyleDeclaration(lineIndex, charIndex);\r\n return (charStyle[property] ?? this[property]) as this[T];\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n _renderTextDecoration(\r\n ctx: CanvasRenderingContext2D,\r\n type: 'underline' | 'linethrough' | 'overline',\r\n ) {\r\n if (!this[type] && !this.styleHas(type)) {\r\n return;\r\n }\r\n let topOffset = this._getTopOffset();\r\n const leftOffset = this._getLeftOffset(),\r\n path = this.path,\r\n charSpacing = this._getWidthOfCharSpacing(),\r\n offsetAligner =\r\n type === 'linethrough' ? 0.5 : type === 'overline' ? 1 : 0,\r\n offsetY = this.offsets[type];\r\n for (let i = 0, len = this._textLines.length; i < len; i++) {\r\n const heightOfLine = this.getHeightOfLine(i);\r\n if (!this[type] && !this.styleHas(type, i)) {\r\n topOffset += heightOfLine;\r\n continue;\r\n }\r\n const line = this._textLines[i];\r\n const maxHeight = heightOfLine / this.lineHeight;\r\n const lineLeftOffset = this._getLineLeftOffset(i);\r\n let boxStart = 0;\r\n let boxWidth = 0;\r\n let lastDecoration = this.getValueOfPropertyAt(i, 0, type);\r\n let lastFill = this.getValueOfPropertyAt(i, 0, FILL);\r\n let lastTickness = this.getValueOfPropertyAt(\r\n i,\r\n 0,\r\n TEXT_DECORATION_THICKNESS,\r\n );\r\n let currentDecoration = lastDecoration;\r\n let currentFill = lastFill;\r\n let currentTickness = lastTickness;\r\n const top = topOffset + maxHeight * (1 - this._fontSizeFraction);\r\n let size = this.getHeightOfChar(i, 0);\r\n let dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\r\n for (let j = 0, jlen = line.length; j < jlen; j++) {\r\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\r\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\r\n currentFill = this.getValueOfPropertyAt(i, j, FILL);\r\n currentTickness = this.getValueOfPropertyAt(\r\n i,\r\n j,\r\n TEXT_DECORATION_THICKNESS,\r\n );\r\n const currentSize = this.getHeightOfChar(i, j);\r\n const currentDy = this.getValueOfPropertyAt(i, j, 'deltaY');\r\n if (path && currentDecoration && currentFill) {\r\n const finalTickness = (this.fontSize * currentTickness) / 1000;\r\n ctx.save();\r\n // bug? verify lastFill is a valid fill here.\r\n ctx.fillStyle = lastFill as string;\r\n ctx.translate(charBox.renderLeft, charBox.renderTop);\r\n ctx.rotate(charBox.angle);\r\n ctx.fillRect(\r\n -charBox.kernedWidth / 2,\r\n offsetY * currentSize + currentDy - offsetAligner * finalTickness,\r\n charBox.kernedWidth,\r\n finalTickness,\r\n );\r\n ctx.restore();\r\n } else if (\r\n (currentDecoration !== lastDecoration ||\r\n currentFill !== lastFill ||\r\n currentSize !== size ||\r\n currentTickness !== lastTickness ||\r\n currentDy !== dy) &&\r\n boxWidth > 0\r\n ) {\r\n const finalTickness = (this.fontSize * lastTickness) / 1000;\r\n let drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n if (lastDecoration && lastFill && lastTickness) {\r\n // bug? verify lastFill is a valid fill here.\r\n ctx.fillStyle = lastFill as string;\r\n ctx.fillRect(\r\n drawStart,\r\n top + offsetY * size + dy - offsetAligner * finalTickness,\r\n boxWidth,\r\n finalTickness,\r\n );\r\n }\r\n boxStart = charBox.left;\r\n boxWidth = charBox.width;\r\n lastDecoration = currentDecoration;\r\n lastTickness = currentTickness;\r\n lastFill = currentFill;\r\n size = currentSize;\r\n dy = currentDy;\r\n } else {\r\n boxWidth += charBox.kernedWidth;\r\n }\r\n }\r\n let drawStart = leftOffset + lineLeftOffset + boxStart;\r\n if (this.direction === 'rtl') {\r\n drawStart = this.width - drawStart - boxWidth;\r\n }\r\n ctx.fillStyle = currentFill as string;\r\n const finalTickness = (this.fontSize * currentTickness) / 1000;\r\n currentDecoration &&\r\n currentFill &&\r\n currentTickness &&\r\n ctx.fillRect(\r\n drawStart,\r\n top + offsetY * size + dy - offsetAligner * finalTickness,\r\n boxWidth - charSpacing,\r\n finalTickness,\r\n );\r\n topOffset += heightOfLine;\r\n }\r\n // if there is text background color no\r\n // other shadows should be casted\r\n this._removeShadow(ctx);\r\n }\r\n\r\n /**\r\n * return font declaration string for canvas context\r\n * @param {Object} [styleObject] object\r\n * @returns {String} font declaration formatted for canvas context.\r\n */\r\n _getFontDeclaration(\r\n {\r\n fontFamily = this.fontFamily,\r\n fontStyle = this.fontStyle,\r\n fontWeight = this.fontWeight,\r\n fontSize = this.fontSize,\r\n }: Partial<\r\n Pick<\r\n TextStyleDeclaration,\r\n 'fontFamily' | 'fontStyle' | 'fontWeight' | 'fontSize'\r\n >\r\n > = {},\r\n forMeasuring?: boolean,\r\n ): string {\r\n const parsedFontFamily =\r\n fontFamily.includes(\"'\") ||\r\n fontFamily.includes('\"') ||\r\n fontFamily.includes(',') ||\r\n FabricText.genericFonts.includes(fontFamily.toLowerCase())\r\n ? fontFamily\r\n : `\"${fontFamily}\"`;\r\n return [\r\n fontStyle,\r\n fontWeight,\r\n `${forMeasuring ? this.CACHE_FONT_SIZE : fontSize}px`,\r\n parsedFontFamily,\r\n ].join(' ');\r\n }\r\n\r\n /**\r\n * Renders text instance on a specified context\r\n * @param {CanvasRenderingContext2D} ctx Context to render on\r\n */\r\n render(ctx: CanvasRenderingContext2D) {\r\n if (!this.visible) {\r\n return;\r\n }\r\n if (\r\n this.canvas &&\r\n this.canvas.skipOffscreen &&\r\n !this.group &&\r\n !this.isOnScreen()\r\n ) {\r\n return;\r\n }\r\n if (this._forceClearCache) {\r\n this.initDimensions();\r\n }\r\n super.render(ctx);\r\n }\r\n\r\n /**\r\n * Override this method to customize grapheme splitting\r\n * @todo the util `graphemeSplit` needs to be injectable in some way.\r\n * is more comfortable to inject the correct util rather than having to override text\r\n * in the middle of the prototype chain\r\n * @param {string} value\r\n * @returns {string[]} array of graphemes\r\n */\r\n graphemeSplit(value: string): string[] {\r\n return graphemeSplit(value);\r\n }\r\n\r\n /**\r\n * Returns the text as an array of lines.\r\n * @param {String} text text to split\r\n * @returns Lines in the text\r\n */\r\n _splitTextIntoLines(text: string): TextLinesInfo {\r\n const lines = text.split(this._reNewline),\r\n newLines = new Array<string[]>(lines.length),\r\n newLine = ['\\n'];\r\n let newText: string[] = [];\r\n for (let i = 0; i < lines.length; i++) {\r\n newLines[i] = this.graphemeSplit(lines[i]);\r\n newText = newText.concat(newLines[i], newLine);\r\n }\r\n newText.pop();\r\n return {\r\n _unwrappedLines: newLines,\r\n lines: lines,\r\n graphemeText: newText,\r\n graphemeLines: newLines,\r\n };\r\n }\r\n\r\n /**\r\n * Returns object representation of an instance\r\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\r\n * @return {Object} Object representation of an instance\r\n */\r\n toObject<\r\n T extends Omit<Props & TClassProperties<this>, keyof SProps>,\r\n K extends keyof T = never,\r\n >(propertiesToInclude: K[] = []): Pick<T, K> & SProps {\r\n return {\r\n ...super.toObject([...additionalProps, ...propertiesToInclude] as K[]),\r\n styles: stylesToArray(this.styles, this.text),\r\n ...(this.path ? { path: this.path.toObject() } : {}),\r\n };\r\n }\r\n\r\n set(key: string | any, value?: any) {\r\n const { textLayoutProperties } = this.constructor as typeof FabricText;\r\n super.set(key, value);\r\n let needsDims = false;\r\n let isAddingPath = false;\r\n if (typeof key === 'object') {\r\n for (const _key in key) {\r\n if (_key === 'path') {\r\n this.setPathInfo();\r\n }\r\n needsDims = needsDims || textLayoutProperties.includes(_key);\r\n isAddingPath = isAddingPath || _key === 'path';\r\n }\r\n } else {\r\n needsDims = textLayoutProperties.includes(key);\r\n isAddingPath = key === 'path';\r\n }\r\n if (isAddingPath) {\r\n this.setPathInfo();\r\n }\r\n if (needsDims && this.initialized) {\r\n // Clear browser lines when layout-affecting properties change\r\n clearBrowserLines(this);\r\n this.initDimensions();\r\n this.setCoords();\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns complexity of an instance\r\n * @return {Number} complexity\r\n */\r\n complexity(): number {\r\n return 1;\r\n }\r\n\r\n /**\r\n * List of generic font families\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/font-family#generic-name\r\n */\r\n static genericFonts = [\r\n 'serif',\r\n 'sans-serif',\r\n 'monospace',\r\n 'cursive',\r\n 'fantasy',\r\n 'system-ui',\r\n 'ui-serif',\r\n 'ui-sans-serif',\r\n 'ui-monospace',\r\n 'ui-rounded',\r\n 'math',\r\n 'emoji',\r\n 'fangsong',\r\n ];\r\n\r\n /* _FROM_SVG_START_ */\r\n\r\n /**\r\n * List of attribute names to account for when parsing SVG element (used by {@link FabricText.fromElement})\r\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\r\n */\r\n static ATTRIBUTE_NAMES = SHARED_ATTRIBUTES.concat(\r\n 'x',\r\n 'y',\r\n 'dx',\r\n 'dy',\r\n 'font-family',\r\n 'font-style',\r\n 'font-weight',\r\n 'font-size',\r\n 'letter-spacing',\r\n 'text-decoration',\r\n 'text-anchor',\r\n );\r\n\r\n /**\r\n * Returns FabricText instance from an SVG element (<b>not yet implemented</b>)\r\n * @param {HTMLElement} element Element to parse\r\n * @param {Object} [options] Options object\r\n */\r\n static async fromElement(\r\n element: HTMLElement | SVGElement,\r\n options?: Abortable,\r\n cssRules?: CSSRules,\r\n ) {\r\n const parsedAttributes = parseAttributes(\r\n element,\r\n FabricText.ATTRIBUTE_NAMES,\r\n cssRules,\r\n );\r\n\r\n const {\r\n textAnchor = LEFT as typeof LEFT | typeof CENTER | typeof RIGHT,\r\n textDecoration = '',\r\n dx = 0,\r\n dy = 0,\r\n top = 0,\r\n left = 0,\r\n fontSize = DEFAULT_SVG_FONT_SIZE,\r\n strokeWidth = 1,\r\n ...restOfOptions\r\n } = { ...options, ...parsedAttributes };\r\n\r\n const textContent = (element.textContent || '')\r\n .replace(/^\\s+|\\s+$|\\n+/g, '')\r\n .replace(/\\s+/g, ' ');\r\n\r\n // this code here is probably the usual issue for SVG center find\r\n // this can later looked at again and probably removed.\r\n\r\n const text = new this(textContent, {\r\n left: left + dx,\r\n top: top + dy,\r\n underline: textDecoration.includes('underline'),\r\n overline: textDecoration.includes('overline'),\r\n linethrough: textDecoration.includes('line-through'),\r\n // we initialize this as 0\r\n strokeWidth: 0,\r\n fontSize,\r\n ...restOfOptions,\r\n }),\r\n textHeightScaleFactor = text.getScaledHeight() / text.height,\r\n lineHeightDiff =\r\n (text.height + text.strokeWidth) * text.lineHeight - text.height,\r\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\r\n textHeight = text.getScaledHeight() + scaledDiff;\r\n\r\n let offX = 0;\r\n /*\r\n Adjust positioning:\r\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\r\n fabric output by default at top, left.\r\n */\r\n if (textAnchor === CENTER) {\r\n offX = text.getScaledWidth() / 2;\r\n }\r\n if (textAnchor === RIGHT) {\r\n offX = text.getScaledWidth();\r\n }\r\n text.set({\r\n left: text.left - offX,\r\n top:\r\n text.top -\r\n (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) /\r\n text.lineHeight,\r\n strokeWidth,\r\n });\r\n return text;\r\n }\r\n\r\n /* _FROM_SVG_END_ */\r\n\r\n /**\r\n * Returns FabricText instance from an object representation\r\n * @param {Object} object plain js Object to create an instance from\r\n * @returns {Promise<FabricText>}\r\n */\r\n static fromObject<\r\n T extends TOptions<SerializedTextProps>,\r\n S extends FabricText,\r\n >(object: T) {\r\n return this._fromObject<S>(\r\n {\r\n ...object,\r\n styles: stylesFromArray(object.styles || {}, object.text),\r\n },\r\n {\r\n extraParam: 'text',\r\n },\r\n );\r\n }\r\n}\r\n\r\napplyMixins(FabricText, [TextSVGExportMixin]);\r\nclassRegistry.setClass(FabricText);\r\nclassRegistry.setSVGClass(FabricText);\r\n"],"names":["measuringContext","FabricText","StyledText","getDefaults","super","ownDefaults","constructor","text","options","_defineProperty","Object","assign","this","setOptions","styles","initialized","path","setPathInfo","initDimensions","setCoords","segmentsInfo","getPathSegmentsInfo","_splitText","browserLines","getBrowserLines","useOverlayEditing","_splitTextFromBrowserLines","newLines","_splitTextIntoLines","textLines","lines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","unwrappedLines","browserLine","push","lineGraphemes","graphemeSplit","concat","length","result","enableAdvancedLayout","initDimensionsAdvanced","_clearCache","dirty","width","height","calcTextWidth","cursorWidth","MIN_TEXT_WIDTH","calcTextHeight","textAlign","includes","JUSTIFY","enlargeSpaces","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","line","charBound","spaces","i","len","isEndOfWrapping","getLineWidth","match","_reSpacesAndTabs","j","__charBounds","_reSpaceAndTab","test","kernedWidth","left","_layoutTextAdvanced","_getAdvancedLayoutOptions","layoutText","wrap","align","_mapTextAlignToAlign","ellipsis","fontSize","lineHeight","letterSpacing","charSpacing","direction","fontFamily","fontStyle","fontWeight","verticalAlign","CENTER","RIGHT","JUSTIFY_LEFT","JUSTIFY_RIGHT","JUSTIFY_CENTER","layout","totalWidth","totalHeight","_convertLayoutToLegacyFormat","map","graphemes","bounds","bound","top","y","deltaY","lineIndex","missingNewlineOffset","_lineIndex","get2DCursorLocation","selectionStart","skipWrapping","charIndex","toString","complexity","_getCacheCanvasDimensions","dims","zoomX","zoomY","_render","ctx","isNotVisible","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","__overlayEditor","paintFirst","STROKE","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","pathAlign","TOP","BOTTOM","font","_getFontDeclaration","maxWidth","_renderTextLine","method","_renderChars","textBackgroundColor","styleHas","originalFill","fillStyle","leftOffset","_getLeftOffset","lineTopOffset","_getTopOffset","heightOfLine","getHeightOfLine","jlen","lineLeftOffset","_getLineLeftOffset","drawStart","currentColor","boxWidth","boxStart","lastColor","getValueOfPropertyAt","charBox","save","translate","renderLeft","renderTop","rotate","angle","fillRect","_fontSizeFraction","restore","_removeShadow","_measureChar","_char","previousChar","prevCharStyle","fontCache","cache","getFontCache","fontDeclaration","couple","stylesAreEqual","fontMultiplier","CACHE_FONT_SIZE","coupleWidth","previousWidth","undefined","canvas","createCanvasElementFor","getContext","getMeasuringContext","measureText","getHeightOfChar","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","prevGrapheme","graphemeInfo","reverse","pathSide","llength","lineBounds","Array","grapheme","_getGraphemeBox","positionInPath","totalPathLength","LEFT","pathStartOffset","_setGraphemeOnPath","numOfSpaces","centerPosition","info","getPointOnPath","x","pathOffset","Math","PI","skipLeft","style","getCompleteStyleDeclaration","prevStyle","box","previousBox","__lineHeights","maxHeight","max","_fontSizeMult","_renderTextCommon","lineHeights","fill","FILL","stroke","strokeWidth","isEmptyStyles","shadow","affectStroke","_setLineDash","strokeDashArray","beginPath","closePath","isJustify","shortCut","isLtr","sign","currentDirection","actualStyle","nextStyle","timeToRender","drawingLeft","charsToRender","setAttribute","_renderChar","join","hasStyleChanged","_applyPatternGradientTransformText","filler","pCanvas","pCtx","moveTo","lineTo","toLive","_applyPatternGradientTransform","createPattern","handleFiller","property","offsetX","offsetY","isFiller","gradientUnits","gradientTransform","patternTransform","_setStrokeStyles","_ref","lineWidth","lineCap","strokeLineCap","lineDashOffset","strokeDashOffset","lineJoin","strokeLineJoin","miterLimit","strokeMiterLimit","_setFillStyles","_ref2","decl","_getStyleDeclaration","fullDecl","shouldFill","shouldStroke","fillOffsets","fillText","strokeOffsets","strokeText","setSuperscript","start","end","_setScript","superscript","setSubscript","subscript","schema","loc","dy","size","baseline","setSelectionStyles","lineDiff","_forceClearCache","__lineWidths","_charStyle$property","type","topOffset","offsetAligner","offsets","lastDecoration","lastFill","lastTickness","TEXT_DECORATION_THICKNESS","currentDecoration","currentFill","currentTickness","currentSize","currentDy","finalTickness","arguments","parsedFontFamily","genericFonts","toLowerCase","render","visible","skipOffscreen","group","isOnScreen","value","split","_reNewline","newLine","newText","pop","toObject","propertiesToInclude","additionalProps","stylesToArray","set","key","textLayoutProperties","needsDims","isAddingPath","_key","clearBrowserLines","fromElement","element","cssRules","parsedAttributes","parseAttributes","ATTRIBUTE_NAMES","textAnchor","textDecoration","dx","DEFAULT_SVG_FONT_SIZE","restOfOptions","textContent","replace","underline","overline","linethrough","textHeightScaleFactor","getScaledHeight","scaledDiff","textHeight","offX","getScaledWidth","fromObject","object","_fromObject","stylesFromArray","extraParam","cacheProperties","textDefaultValues","SHARED_ATTRIBUTES","applyMixins","TextSVGExportMixin","classRegistry","setClass","setSVGClass"],"mappings":"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"}
1
+ {"version":3,"file":"Text.min.mjs","sources":["../../../../src/shapes/Text/Text.ts"],"sourcesContent":["import { cache } from '../../cache';\nimport { DEFAULT_SVG_FONT_SIZE, FILL, STROKE } from '../../constants';\nimport type { ObjectEvents } from '../../EventTypeDefs';\nimport type {\n CompleteTextStyleDeclaration,\n TextStyle,\n TextStyleDeclaration,\n} from './StyledText';\nimport { StyledText } from './StyledText';\nimport { SHARED_ATTRIBUTES } from '../../parser/attributes';\nimport { parseAttributes } from '../../parser/parseAttributes';\nimport type {\n Abortable,\n TCacheCanvasDimensions,\n TClassProperties,\n TFiller,\n TOptions,\n} from '../../typedefs';\nimport { classRegistry } from '../../ClassRegistry';\nimport { graphemeSplit } from '../../util/lang_string';\nimport { createCanvasElementFor } from '../../util/misc/dom';\nimport { layoutText, type LayoutResult, type TextLayoutOptions } from '../../text/layout';\nimport { measureGrapheme, measureGraphemeWithKerning } from '../../text/measure';\nimport { applyEllipsis } from '../../text/ellipsis';\nimport { segmentGraphemes } from '../../text/unicode';\nimport type { TextStyleArray } from '../../util/misc/textStyles';\nimport {\n hasStyleChanged,\n stylesFromArray,\n stylesToArray,\n} from '../../util/misc/textStyles';\nimport { getPathSegmentsInfo, getPointOnPath } from '../../util/path';\nimport { cacheProperties } from '../Object/FabricObject';\nimport type { Path } from '../Path';\nimport { TextSVGExportMixin } from './TextSVGExportMixin';\nimport { applyMixins } from '../../util/applyMixins';\nimport type { FabricObjectProps, SerializedObjectProps } from '../Object/types';\nimport type { StylePropertiesType } from './constants';\nimport {\n additionalProps,\n textDefaultValues,\n textLayoutProperties,\n JUSTIFY,\n JUSTIFY_CENTER,\n JUSTIFY_LEFT,\n JUSTIFY_RIGHT,\n TEXT_DECORATION_THICKNESS,\n} from './constants';\nimport { CENTER, LEFT, RIGHT, TOP, BOTTOM } from '../../constants';\nimport { isFiller } from '../../util/typeAssertions';\nimport type { Gradient } from '../../gradient/Gradient';\nimport type { Pattern } from '../../Pattern';\nimport type { CSSRules } from '../../parser/typedefs';\nimport { getBrowserLines, clearBrowserLines } from '../../text/browserLines';\nimport type { BrowserLine } from '../../text/browserLines';\n\nlet measuringContext: CanvasRenderingContext2D | null;\n\n/**\n * Return a context for measurement of text string.\n * if created it gets stored for reuse\n */\nfunction getMeasuringContext() {\n if (!measuringContext) {\n const canvas = createCanvasElementFor({\n width: 0,\n height: 0,\n });\n measuringContext = canvas.getContext('2d');\n }\n return measuringContext;\n}\n\nexport type TPathSide = 'left' | 'right';\n\nexport type TPathAlign = 'baseline' | 'center' | 'ascender' | 'descender';\n\nexport type TextLinesInfo = {\n lines: string[];\n graphemeLines: string[][];\n graphemeText: string[];\n _unwrappedLines: string[][];\n};\n\n/**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * Override to customize measuring\n */\nexport type GraphemeBBox = {\n width: number;\n height: number;\n kernedWidth: number;\n left: number;\n deltaY: number;\n renderLeft?: number;\n renderTop?: number;\n angle?: number;\n};\n\n// @TODO this is not complete\ninterface UniqueTextProps {\n charSpacing: number;\n lineHeight: number;\n fontSize: number;\n fontWeight: string | number;\n fontFamily: string;\n fontStyle: string;\n pathSide: TPathSide;\n pathAlign: TPathAlign;\n underline: boolean;\n overline: boolean;\n linethrough: boolean;\n textAlign: string;\n direction: CanvasDirection;\n path?: Path;\n textDecorationThickness: number;\n wrap: 'word' | 'char' | 'none';\n ellipsis: boolean | string;\n letterSpacing: number;\n enableAdvancedLayout: boolean;\n verticalAlign: 'top' | 'middle' | 'bottom';\n useOverlayEditing: boolean;\n}\n\nexport interface SerializedTextProps\n extends SerializedObjectProps,\n UniqueTextProps {\n styles: TextStyleArray | TextStyle;\n}\n\nexport interface TextProps extends FabricObjectProps, UniqueTextProps {\n styles: TextStyle;\n}\n\n/**\n * Text class\n * @see {@link http://fabricjs.com/fabric-intro-part-2#text}\n */\nexport class FabricText<\n Props extends TOptions<TextProps> = Partial<TextProps>,\n SProps extends SerializedTextProps = SerializedTextProps,\n EventSpec extends ObjectEvents = ObjectEvents,\n >\n extends StyledText<Props, SProps, EventSpec>\n implements UniqueTextProps\n{\n /**\n * Properties that requires a text layout recalculation when changed\n * @type string[]\n * @protected\n */\n static textLayoutProperties: string[] = textLayoutProperties;\n\n /**\n * @private\n */\n declare _reNewline: RegExp;\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n declare _reSpacesAndTabs: RegExp;\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n declare _reSpaceAndTab: RegExp;\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n declare _reWords: RegExp;\n\n declare text: string;\n\n /**\n * Font size (in pixels)\n * @type Number\n */\n declare fontSize: number;\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n */\n declare fontWeight: string | number;\n\n /**\n * Font family\n * @type String\n */\n declare fontFamily: string;\n\n /**\n * Text decoration underline.\n * @type Boolean\n */\n declare underline: boolean;\n\n /**\n * Text decoration overline.\n * @type Boolean\n */\n declare overline: boolean;\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n */\n declare linethrough: boolean;\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n */\n declare textAlign: string;\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n */\n declare fontStyle: string;\n\n /**\n * Line height\n * @type Number\n */\n declare lineHeight: number;\n\n /**\n * Superscript schema object (minimum overlap)\n */\n declare superscript: {\n /**\n * fontSize factor\n * @default 0.6\n */\n size: number;\n /**\n * baseline-shift factor (upwards)\n * @default -0.35\n */\n baseline: number;\n };\n\n /**\n * Subscript schema object (minimum overlap)\n */\n declare subscript: {\n /**\n * fontSize factor\n * @default 0.6\n */\n size: number;\n /**\n * baseline-shift factor (downwards)\n * @default 0.11\n */\n baseline: number;\n };\n\n /**\n * Background color of text lines\n * @type String\n */\n declare textBackgroundColor: string;\n\n declare styles: TextStyle;\n\n /**\n * Path that the text should follow.\n * since 4.6.0 the path will be drawn automatically.\n * if you want to make the path visible, give it a stroke and strokeWidth or fill value\n * if you want it to be hidden, assign visible = false to the path.\n * This feature is in BETA, and SVG import/export is not yet supported.\n * @type Path\n * @example\n * const textPath = new Text('Text on a path', {\n * top: 150,\n * left: 150,\n * textAlign: 'center',\n * charSpacing: -50,\n * path: new Path('M 0 0 C 50 -100 150 -100 200 0', {\n * strokeWidth: 1,\n * visible: false\n * }),\n * pathSide: 'left',\n * pathStartOffset: 0\n * });\n */\n declare path?: Path;\n\n /**\n * Text wrapping mode\n * @type string\n * @default 'word'\n */\n declare wrap: 'word' | 'char' | 'none';\n\n /**\n * Ellipsis truncation\n * @type boolean | string\n * @default false\n */\n declare ellipsis: boolean | string;\n\n /**\n * Letter spacing in pixels (Konva-style)\n * @type number\n * @default 0\n */\n declare letterSpacing: number;\n\n /**\n * Enable advanced text layout engine\n * @type boolean\n * @default false\n */\n declare enableAdvancedLayout: boolean;\n\n /**\n * Vertical text alignment\n * @type string\n * @default 'top'\n */\n declare verticalAlign: 'top' | 'middle' | 'bottom';\n\n /**\n * Use overlay editor for inline text editing instead of hidden textarea.\n * @default false\n */\n declare useOverlayEditing: boolean;\n\n /**\n * The text decoration tickness for underline, overline and strikethrough\n * The tickness is expressed in thousandths of fontSize ( em ).\n * The original value was 1/15 that translates to 66.6667 thousandths.\n * The choice of unit of measure is to align with charSpacing.\n * You can slim the tickness without issues, while large underline or overline may end up\n * outside the bounding box of the text. In order to fix that a bigger refactor of the code\n * is needed and is out of scope for now. If you need such large overline on the first line\n * of text or large underline on the last line of text, consider disabling caching as a\n * workaround\n * @default 66.667\n */\n declare textDecorationThickness: number;\n\n /**\n * Offset amount for text path starting position\n * Only used when text has a path\n */\n declare pathStartOffset: number;\n\n /**\n * Which side of the path the text should be drawn on.\n * Only used when text has a path\n * @type {TPathSide} 'left|right'\n */\n declare pathSide: TPathSide;\n\n /**\n * How text is aligned to the path. This property determines\n * the perpendicular position of each character relative to the path.\n * (one of \"baseline\", \"center\", \"ascender\", \"descender\")\n * This feature is in BETA, and its behavior may change\n * @type TPathAlign\n */\n declare pathAlign: TPathAlign;\n\n /**\n * @private\n */\n declare _fontSizeFraction: number;\n\n /**\n * @private\n */\n declare offsets: { underline: number; linethrough: number; overline: number };\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n */\n declare _fontSizeMult: number;\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n */\n declare charSpacing: number;\n\n /**\n * Baseline shift, styles only, keep at 0 for the main text object\n * @type {Number}\n */\n declare deltaY: number;\n\n /**\n * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\n * determine the direction of the text.\n * This has to be set manually together with textAlign and originX for proper\n * experience.\n * some interesting link for the future\n * https://www.w3.org/International/questions/qa-bidi-unicode-controls\n * @since 4.5.0\n * @type {CanvasDirection} 'ltr|rtl'\n */\n declare direction: CanvasDirection;\n\n /**\n * contains characters bounding boxes\n * This variable is considered to be protected.\n * But for how mixins are implemented right now, we can't leave it private\n * @protected\n */\n __charBounds: GraphemeBBox[][] = [];\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @readonly\n * @private\n */\n declare CACHE_FONT_SIZE: number;\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n */\n declare MIN_TEXT_WIDTH: number;\n\n /**\n * contains the the text of the object, divided in lines as they are displayed\n * on screen. Wrapping will divide the text independently of line breaks\n * @type {string[]}\n */\n declare textLines: string[];\n\n /**\n * same as textlines, but each line is an array of graphemes as split by splitByGrapheme\n * @type {string[]}\n */\n declare _textLines: string[][];\n\n declare _unwrappedTextLines: string[][];\n declare _text: string[];\n declare cursorWidth: number;\n declare __lineHeights: number[];\n declare __lineWidths: number[];\n declare initialized?: true;\n\n static cacheProperties = [...cacheProperties, ...additionalProps];\n\n static ownDefaults = textDefaultValues;\n\n static type = 'Text';\n\n static getDefaults(): Record<string, any> {\n return { ...super.getDefaults(), ...FabricText.ownDefaults };\n }\n\n constructor(text: string, options?: Props) {\n super();\n Object.assign(this, FabricText.ownDefaults);\n this.setOptions(options);\n if (!this.styles) {\n this.styles = {};\n }\n this.text = text;\n this.initialized = true;\n if (this.path) {\n this.setPathInfo();\n }\n this.initDimensions();\n this.setCoords();\n }\n\n /**\n * If text has a path, it will add the extra information needed\n * for path and text calculations\n */\n setPathInfo() {\n const path = this.path;\n if (path) {\n path.segmentsInfo = getPathSegmentsInfo(path.path);\n }\n }\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n * Uses browser lines when available for pixel-perfect consistency.\n */\n _splitText(): TextLinesInfo {\n // Check if we have valid browser lines and should use them\n const browserLines = getBrowserLines(this);\n if (browserLines && this.useOverlayEditing) {\n return this._splitTextFromBrowserLines(browserLines);\n }\n \n const newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n }\n\n /**\n * Create TextLinesInfo from browser-extracted lines\n * @private\n */\n _splitTextFromBrowserLines(browserLines: BrowserLine[]): TextLinesInfo {\n const lines: string[] = [];\n const graphemeLines: string[][] = [];\n const unwrappedLines: string[][] = [];\n let graphemeText: string[] = [];\n\n for (const browserLine of browserLines) {\n lines.push(browserLine.text);\n const lineGraphemes = this.graphemeSplit(browserLine.text);\n graphemeLines.push(lineGraphemes);\n unwrappedLines.push(lineGraphemes);\n graphemeText = graphemeText.concat(lineGraphemes);\n \n // Add newline separator between lines (except for the last line)\n if (browserLine !== browserLines[browserLines.length - 1]) {\n graphemeText.push('\\n');\n }\n }\n\n const result: TextLinesInfo = {\n lines,\n graphemeLines,\n graphemeText,\n _unwrappedLines: unwrappedLines,\n };\n\n // Update instance properties\n this.textLines = result.lines;\n this._textLines = result.graphemeLines;\n this._unwrappedTextLines = result._unwrappedLines;\n this._text = result.graphemeText;\n\n return result;\n }\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions(): void {\n // Use advanced layout if enabled\n if (this.enableAdvancedLayout && !this.path) {\n return this.initDimensionsAdvanced();\n }\n \n this._splitText();\n this._clearCache();\n this.dirty = true;\n if (this.path) {\n this.width = this.path.width;\n this.height = this.path.height;\n } else {\n this.width =\n this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n this.height = this.calcTextHeight();\n }\n if (this.textAlign.includes(JUSTIFY)) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n }\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces() {\n let diffSpace,\n currentLineWidth,\n numberOfSpaces,\n accumulatedSpace,\n line,\n charBound,\n spaces;\n const isRtl = this.direction === 'rtl';\n \n for (let i = 0, len = this._textLines.length; i < len; i++) {\n if (\n this.textAlign !== JUSTIFY &&\n (i === len - 1 || this.isEndOfWrapping(i))\n ) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (\n currentLineWidth < this.width &&\n (spaces = this.textLines[i].match(this._reSpacesAndTabs))\n ) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n \n if (isRtl) {\n // For RTL text, we need to redistribute spaces while maintaining correct visual order\n // The key insight is that RTL text is stored in logical order but displayed in visual order\n // We need to adjust bounds to account for the visual positioning\n \n // First, collect all space positions\n const spaceIndices = [];\n for (let j = 0; j < line.length; j++) {\n if (this._reSpaceAndTab.test(line[j])) {\n spaceIndices.push(j);\n }\n }\n \n // Calculate total expansion\n const totalExpansion = diffSpace * numberOfSpaces;\n \n // For RTL, we need to work backwards through the visual positions\n // but still update logical positions correctly\n let spaceCount = 0;\n for (let j = 0; j <= line.length; j++) {\n charBound = this.__charBounds[i][j];\n if (charBound) {\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n spaceCount++;\n }\n \n // For RTL, shift all characters to the right by the total expansion\n // minus the expansion that comes after this character\n const remainingSpaces = numberOfSpaces - spaceCount;\n const shiftAmount = remainingSpaces * diffSpace;\n charBound.left += shiftAmount;\n }\n }\n } else {\n // LTR processing (original logic)\n for (let j = 0; j <= line.length; j++) {\n charBound = this.__charBounds[i][j];\n if (charBound) {\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n } else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n }\n }\n }\n\n /**\n * Advanced layout using new text engine (Konva-compatible)\n * @private\n */\n _layoutTextAdvanced(): LayoutResult {\n const options = this._getAdvancedLayoutOptions();\n return layoutText(options);\n }\n\n /**\n * Get advanced layout options from current text properties\n * @private\n */\n _getAdvancedLayoutOptions(): TextLayoutOptions {\n return {\n text: this.text,\n width: this.width,\n height: this.height,\n wrap: this.wrap || 'word',\n align: this._mapTextAlignToAlign(this.textAlign),\n ellipsis: this.ellipsis || false,\n fontSize: this.fontSize,\n lineHeight: this.lineHeight,\n letterSpacing: this.letterSpacing || 0,\n charSpacing: this.charSpacing,\n direction: this.direction === 'inherit' ? 'ltr' : this.direction,\n fontFamily: this.fontFamily,\n fontStyle: this.fontStyle,\n fontWeight: this.fontWeight,\n verticalAlign: this.verticalAlign || 'top',\n };\n }\n\n /**\n * Map Fabric textAlign to Konva align format\n * @private\n */\n _mapTextAlignToAlign(textAlign: string): 'left' | 'center' | 'right' | 'justify' {\n switch (textAlign) {\n case 'center':\n case CENTER:\n return 'center';\n case 'right':\n case RIGHT:\n return 'right';\n case 'justify':\n case JUSTIFY:\n case JUSTIFY_LEFT:\n case JUSTIFY_RIGHT:\n case JUSTIFY_CENTER:\n return 'justify';\n default:\n return 'left';\n }\n }\n\n /**\n * Enhanced initDimensions that uses advanced layout when enabled\n */\n initDimensionsAdvanced(): void {\n if (!this.enableAdvancedLayout) {\n return this.initDimensions();\n }\n\n const layout = this._layoutTextAdvanced();\n \n // Update dimensions from layout\n this.width = layout.totalWidth || this.MIN_TEXT_WIDTH;\n this.height = layout.totalHeight;\n \n // Convert layout to legacy format for compatibility\n this._convertLayoutToLegacyFormat(layout);\n \n this.dirty = true;\n }\n\n /**\n * Convert new layout format to legacy _textLines and __charBounds format\n * @private\n */\n _convertLayoutToLegacyFormat(layout: LayoutResult): void {\n this._textLines = layout.lines.map(line => line.graphemes);\n (this as any).textLines = layout.lines.map(line => line.text);\n \n // Convert bounds to legacy format\n this.__charBounds = layout.lines.map(line => \n line.bounds.map(bound => ({\n left: bound.left,\n top: bound.y,\n width: bound.width,\n height: bound.height,\n kernedWidth: bound.kernedWidth,\n deltaY: bound.deltaY || 0,\n }))\n );\n \n // Update grapheme info for compatibility\n if (layout.lines.length > 0) {\n (this as any)._unwrappedTextLines = layout.lines.map(line => line.graphemes);\n }\n }\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping(lineIndex: number): boolean {\n return lineIndex === this._textLines.length - 1;\n }\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * It return always 1 for text and Itext. Textbox has its own implementation\n * @return Number\n */\n missingNewlineOffset(lineIndex: number, skipWrapping?: boolean): 0 | 1;\n missingNewlineOffset(_lineIndex: number): 1 {\n return 1;\n }\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor\n * @param {Number} selectionStart\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\n */\n get2DCursorLocation(selectionStart: number, skipWrapping?: boolean) {\n const lines = skipWrapping ? this._unwrappedTextLines : this._textLines;\n let i: number;\n for (i = 0; i < lines.length; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart,\n };\n }\n selectionStart -=\n lines[i].length + this.missingNewlineOffset(i, skipWrapping);\n }\n return {\n lineIndex: i - 1,\n charIndex:\n lines[i - 1].length < selectionStart\n ? lines[i - 1].length\n : selectionStart,\n };\n }\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString(): string {\n return `#<Text (${this.complexity()}): { \"text\": \"${\n this.text\n }\", \"fontFamily\": \"${this.fontFamily}\" }>`;\n }\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions(): TCacheCanvasDimensions {\n const dims = super._getCacheCanvasDimensions();\n const fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render(ctx: CanvasRenderingContext2D) {\n const path = this.path;\n path && !path.isNotVisible() && path._render(ctx);\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText(ctx: CanvasRenderingContext2D) {\n // Skip text rendering if in overlay editing mode\n if ((this as any).__overlayEditor) {\n return;\n }\n if (this.paintFirst === STROKE) {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n } else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n }\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles(\n ctx: CanvasRenderingContext2D,\n charStyle?: any,\n forMeasuring?: boolean,\n ) {\n ctx.textBaseline = 'alphabetic';\n if (this.path) {\n switch (this.pathAlign) {\n case CENTER:\n ctx.textBaseline = 'middle';\n break;\n case 'ascender':\n ctx.textBaseline = TOP;\n break;\n case 'descender':\n ctx.textBaseline = BOTTOM;\n break;\n }\n }\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n }\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of Text object\n */\n calcTextWidth(): number {\n let maxWidth = this.getLineWidth(0);\n\n for (let i = 1, len = this._textLines.length; i < len; i++) {\n const currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n }\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine(\n method: 'fillText' | 'strokeText',\n ctx: CanvasRenderingContext2D,\n line: string[],\n left: number,\n top: number,\n lineIndex: number,\n ) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n }\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground(ctx: CanvasRenderingContext2D) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n const originalFill = ctx.fillStyle,\n leftOffset = this._getLeftOffset();\n let lineTopOffset = this._getTopOffset();\n\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n const heightOfLine = this.getHeightOfLine(i);\n if (\n !this.textBackgroundColor &&\n !this.styleHas('textBackgroundColor', i)\n ) {\n lineTopOffset += heightOfLine;\n continue;\n }\n const jlen = this._textLines[i].length;\n const lineLeftOffset = this._getLineLeftOffset(i);\n let boxWidth = 0;\n let boxStart = 0;\n let drawStart;\n let currentColor;\n let lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (let j = 0; j < jlen; j++) {\n // at this point charbox are either standard or full with pathInfo if there is a path.\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (this.path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillStyle = currentColor;\n currentColor &&\n ctx.fillRect(\n -charBox.width / 2,\n (-heightOfLine / this.lineHeight) * (1 - this._fontSizeFraction),\n charBox.width,\n heightOfLine / this.lineHeight,\n );\n ctx.restore();\n } else if (currentColor !== lastColor) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = lastColor;\n lastColor &&\n ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight,\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n } else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor && !this.path) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight,\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n }\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} _char, char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar(\n _char: string,\n charStyle: CompleteTextStyleDeclaration,\n previousChar: string | undefined,\n prevCharStyle: CompleteTextStyleDeclaration | Record<string, never>,\n ) {\n const fontCache = cache.getFontCache(charStyle),\n fontDeclaration = this._getFontDeclaration(charStyle),\n couple = previousChar + _char,\n stylesAreEqual =\n previousChar &&\n fontDeclaration === this._getFontDeclaration(prevCharStyle),\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE;\n let width: number | undefined,\n coupleWidth: number | undefined,\n previousWidth: number | undefined,\n kernedWidth: number | undefined;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth!;\n }\n if (\n width === undefined ||\n previousWidth === undefined ||\n coupleWidth === undefined\n ) {\n const ctx = getMeasuringContext()!;\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n // safe to use the non-null since if undefined we defined it before.\n kernedWidth = coupleWidth - previousWidth!;\n }\n }\n return {\n width: width * fontMultiplier,\n kernedWidth: kernedWidth! * fontMultiplier,\n };\n }\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line index number\n * @param {Number} _char the character index number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar(line: number, _char: number): number {\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\n }\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n */\n measureLine(lineIndex: number) {\n const lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n }\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.numOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine(lineIndex: number) {\n let width = 0,\n prevGrapheme: string | undefined,\n graphemeInfo: GraphemeBBox | undefined;\n\n const reverse = this.pathSide === RIGHT,\n path = this.path,\n line = this._textLines[lineIndex],\n llength = line.length,\n lineBounds = new Array<GraphemeBBox>(llength);\n\n this.__charBounds[lineIndex] = lineBounds;\n for (let i = 0; i < llength; i++) {\n const grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[llength] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize,\n deltaY: 0,\n } as GraphemeBBox;\n if (path && path.segmentsInfo) {\n let positionInPath = 0;\n const totalPathLength =\n path.segmentsInfo[path.segmentsInfo.length - 1].length;\n switch (this.textAlign) {\n case LEFT:\n positionInPath = reverse ? totalPathLength - width : 0;\n break;\n case CENTER:\n positionInPath = (totalPathLength - width) / 2;\n break;\n case RIGHT:\n positionInPath = reverse ? 0 : totalPathLength - width;\n break;\n //todo - add support for justify\n }\n positionInPath += this.pathStartOffset * (reverse ? -1 : 1);\n for (\n let i = reverse ? llength - 1 : 0;\n reverse ? i >= 0 : i < llength;\n reverse ? i-- : i++\n ) {\n graphemeInfo = lineBounds[i];\n if (positionInPath > totalPathLength) {\n positionInPath %= totalPathLength;\n } else if (positionInPath < 0) {\n positionInPath += totalPathLength;\n }\n // it would probably much faster to send all the grapheme position for a line\n // and calculate path position/angle at once.\n this._setGraphemeOnPath(positionInPath, graphemeInfo);\n positionInPath += graphemeInfo.kernedWidth;\n }\n }\n return { width: width, numOfSpaces: 0 };\n }\n\n /**\n * Calculate the angle and the left,top position of the char that follow a path.\n * It appends it to graphemeInfo to be reused later at rendering\n * @private\n * @param {Number} positionInPath to be measured\n * @param {GraphemeBBox} graphemeInfo current grapheme box information\n * @param {Object} startingPoint position of the point\n */\n _setGraphemeOnPath(positionInPath: number, graphemeInfo: GraphemeBBox) {\n const centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\n path = this.path!;\n\n // we are at currentPositionOnPath. we want to know what point on the path is.\n const info = getPointOnPath(path.path, centerPosition, path.segmentsInfo)!;\n graphemeInfo.renderLeft = info.x - path.pathOffset.x;\n graphemeInfo.renderTop = info.y - path.pathOffset.y;\n graphemeInfo.angle = info.angle + (this.pathSide === RIGHT ? Math.PI : 0);\n }\n\n /**\n *\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n * @returns {GraphemeBBox} grapheme bbox\n */\n _getGraphemeBox(\n grapheme: string,\n lineIndex: number,\n charIndex: number,\n prevGrapheme?: string,\n skipLeft?: boolean,\n ): GraphemeBBox {\n const style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme\n ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1)\n : {},\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle);\n let kernedWidth = info.kernedWidth,\n width = info.width,\n charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n const box: GraphemeBBox = {\n width,\n left: 0,\n height: style.fontSize,\n kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n const previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left =\n previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n }\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine(lineIndex: number): number {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n // char 0 is measured before the line cycle because it needs to char\n // emptylines\n let maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (let i = 1, len = this._textLines[lineIndex].length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return (this.__lineHeights[lineIndex] =\n maxHeight * this.lineHeight * this._fontSizeMult);\n }\n\n /**\n * Calculate text box height\n */\n calcTextHeight() {\n let lineHeight,\n height = 0;\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += i === len - 1 ? lineHeight / this.lineHeight : lineHeight;\n }\n return height;\n }\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset(): number {\n return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\n }\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset(): number {\n return -this.height / 2;\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon(\n ctx: CanvasRenderingContext2D,\n method: 'fillText' | 'strokeText',\n ) {\n ctx.save();\n let lineHeights = 0;\n const left = this._getLeftOffset(),\n top = this._getTopOffset();\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n const heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset,\n top + lineHeights + maxHeight,\n i,\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill(ctx: CanvasRenderingContext2D) {\n if (!this.fill && !this.styleHas(FILL)) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke(ctx: CanvasRenderingContext2D) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n }\n\n /**\n * @private\n * @param {String} method fillText or strokeText.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} line Content of the line, splitted in an array by grapheme\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n */\n _renderChars(\n method: 'fillText' | 'strokeText',\n ctx: CanvasRenderingContext2D,\n line: Array<any>,\n left: number,\n top: number,\n lineIndex: number,\n ) {\n const lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.includes(JUSTIFY),\n path = this.path,\n shortCut =\n !isJustify &&\n this.charSpacing === 0 &&\n this.isEmptyStyles(lineIndex) &&\n !path,\n isLtr = this.direction === 'ltr',\n sign = this.direction === 'ltr' ? 1 : -1,\n // this was changed in the PR #7674\n // currentDirection = ctx.canvas.getAttribute('dir');\n currentDirection = ctx.direction;\n\n let actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n drawingLeft;\n\n ctx.save();\n if (currentDirection !== this.direction) {\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n ctx.direction = isLtr ? 'ltr' : 'rtl';\n \n // For justify alignments, we need to set the correct canvas text alignment\n // This is crucial for RTL text to render in the correct order\n if (isJustify) {\n // Justify uses LEFT alignment as a base, letting the character positioning handle justification\n ctx.textAlign = LEFT;\n } else {\n ctx.textAlign = isLtr ? LEFT : RIGHT;\n }\n }\n top -= (lineHeight * this._fontSizeFraction) / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\n this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top);\n ctx.restore();\n return;\n }\n for (let i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing || path;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i] as Required<GraphemeBBox>;\n if (boxWidth === 0) {\n left += sign * (charBox.kernedWidth - charBox.width);\n boxWidth += charBox.width;\n } else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle =\n actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = hasStyleChanged(actualStyle, nextStyle, false);\n }\n if (timeToRender) {\n if (path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n this._renderChar(\n method,\n ctx,\n lineIndex,\n i,\n charsToRender,\n -boxWidth / 2,\n 0,\n );\n ctx.restore();\n } else {\n drawingLeft = left;\n this._renderChar(\n method,\n ctx,\n lineIndex,\n i,\n charsToRender,\n drawingLeft,\n top,\n );\n }\n charsToRender = '';\n actualStyle = nextStyle;\n left += sign * boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n }\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {TFiller} filler a fabric gradient instance\n * @return {CanvasPattern} a pattern to use as fill/stroke style\n */\n _applyPatternGradientTransformText(filler: TFiller) {\n // TODO: verify compatibility with strokeUniform\n const width = this.width + this.strokeWidth,\n height = this.height + this.strokeWidth,\n pCanvas = createCanvasElementFor({\n width,\n height,\n }),\n pCtx = pCanvas.getContext('2d')!;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx.beginPath();\n pCtx.moveTo(0, 0);\n pCtx.lineTo(width, 0);\n pCtx.lineTo(width, height);\n pCtx.lineTo(0, height);\n pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.fillStyle = filler.toLive(pCtx)!;\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fill();\n return pCtx.createPattern(pCanvas, 'no-repeat')!;\n }\n\n handleFiller<T extends 'fill' | 'stroke'>(\n ctx: CanvasRenderingContext2D,\n property: `${T}Style`,\n filler: TFiller | string,\n ): { offsetX: number; offsetY: number } {\n let offsetX: number, offsetY: number;\n if (isFiller(filler)) {\n if (\n (filler as Gradient<'linear'>).gradientUnits === 'percentage' ||\n (filler as Gradient<'linear'>).gradientTransform ||\n (filler as Pattern).patternTransform\n ) {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n offsetX = -this.width / 2;\n offsetY = -this.height / 2;\n ctx.translate(offsetX, offsetY);\n ctx[property] = this._applyPatternGradientTransformText(filler);\n return { offsetX, offsetY };\n } else {\n // is a simple gradient or pattern\n ctx[property] = filler.toLive(ctx)!;\n return this._applyPatternGradientTransform(ctx, filler);\n }\n } else {\n // is a color\n ctx[property] = filler;\n }\n return { offsetX: 0, offsetY: 0 };\n }\n\n /**\n * This function prepare the canvas for a stroke style, and stroke and strokeWidth\n * need to be sent in as defined\n * @param {CanvasRenderingContext2D} ctx\n * @param {CompleteTextStyleDeclaration} style with stroke and strokeWidth defined\n * @returns\n */\n _setStrokeStyles(\n ctx: CanvasRenderingContext2D,\n {\n stroke,\n strokeWidth,\n }: Pick<CompleteTextStyleDeclaration, 'stroke' | 'strokeWidth'>,\n ) {\n ctx.lineWidth = strokeWidth;\n ctx.lineCap = this.strokeLineCap;\n ctx.lineDashOffset = this.strokeDashOffset;\n ctx.lineJoin = this.strokeLineJoin;\n ctx.miterLimit = this.strokeMiterLimit;\n return this.handleFiller(ctx, 'strokeStyle', stroke!);\n }\n\n /**\n * This function prepare the canvas for a ill style, and fill\n * need to be sent in as defined\n * @param {CanvasRenderingContext2D} ctx\n * @param {CompleteTextStyleDeclaration} style with ill defined\n * @returns\n */\n _setFillStyles(ctx: CanvasRenderingContext2D, { fill }: Pick<this, 'fill'>) {\n return this.handleFiller(ctx, 'fillStyle', fill!);\n }\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar(\n method: 'fillText' | 'strokeText',\n ctx: CanvasRenderingContext2D,\n lineIndex: number,\n charIndex: number,\n _char: string,\n left: number,\n top: number,\n ) {\n const decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke =\n method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n ctx.save();\n\n ctx.font = this._getFontDeclaration(fullDecl);\n\n if (decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl.deltaY) {\n top += decl.deltaY;\n }\n\n if (shouldFill) {\n const fillOffsets = this._setFillStyles(ctx, fullDecl);\n ctx.fillText(\n _char,\n left - fillOffsets.offsetX,\n top - fillOffsets.offsetY,\n );\n }\n\n if (shouldStroke) {\n const strokeOffsets = this._setStrokeStyles(ctx, fullDecl);\n ctx.strokeText(\n _char,\n left - strokeOffsets.offsetX,\n top - strokeOffsets.offsetY,\n );\n }\n\n ctx.restore();\n }\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n */\n setSuperscript(start: number, end: number) {\n this._setScript(start, end, this.superscript);\n }\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n */\n setSubscript(start: number, end: number) {\n this._setScript(start, end, this.subscript);\n }\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n */\n protected _setScript(\n start: number,\n end: number,\n schema: {\n size: number;\n baseline: number;\n },\n ) {\n const loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(\n loc.lineIndex,\n loc.charIndex,\n 'fontSize',\n ),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = {\n fontSize: fontSize * schema.size,\n deltaY: dy + fontSize * schema.baseline,\n };\n this.setSelectionStyles(style, start, end);\n }\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset(lineIndex: number): number {\n const lineWidth = this.getLineWidth(lineIndex),\n lineDiff = this.width - lineWidth,\n textAlign = this.textAlign,\n direction = this.direction,\n isEndOfWrapping = this.isEndOfWrapping(lineIndex);\n let leftOffset = 0;\n \n // Handle justify alignments (excluding last lines and wrapped line ends)\n const isJustifyLine = \n textAlign === JUSTIFY ||\n (textAlign === JUSTIFY_CENTER && !isEndOfWrapping) ||\n (textAlign === JUSTIFY_RIGHT && !isEndOfWrapping) ||\n (textAlign === JUSTIFY_LEFT && !isEndOfWrapping);\n \n if (isJustifyLine) {\n // Justify lines should start at the left edge for LTR and right edge for RTL\n // The space distribution is handled by enlargeSpaces()\n if (direction === 'rtl') {\n // For RTL justify, we need to account for the line being right-aligned\n return 0;\n } else {\n return 0;\n }\n }\n \n // Handle non-justify alignments\n if (textAlign === CENTER) {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === RIGHT) {\n leftOffset = lineDiff;\n }\n if (textAlign === JUSTIFY_CENTER) {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === JUSTIFY_RIGHT) {\n leftOffset = lineDiff;\n }\n \n // Apply RTL adjustments for non-justify alignments\n if (direction === 'rtl') {\n if (\n textAlign === RIGHT ||\n textAlign === JUSTIFY ||\n textAlign === JUSTIFY_RIGHT\n ) {\n leftOffset = 0;\n } else if (textAlign === LEFT || textAlign === JUSTIFY_LEFT) {\n leftOffset = -lineDiff;\n } else if (textAlign === CENTER || textAlign === JUSTIFY_CENTER) {\n leftOffset = -lineDiff / 2;\n }\n }\n return leftOffset;\n }\n\n /**\n * @private\n */\n _clearCache() {\n this._forceClearCache = false;\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n }\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth(lineIndex: number): number {\n if (this.__lineWidths[lineIndex] !== undefined) {\n return this.__lineWidths[lineIndex];\n }\n\n const { width } = this.measureLine(lineIndex);\n this.__lineWidths[lineIndex] = width;\n return width;\n }\n\n _getWidthOfCharSpacing() {\n if (this.charSpacing !== 0) {\n return (this.fontSize * this.charSpacing) / 1000;\n }\n return 0;\n }\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the character number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt<T extends StylePropertiesType>(\n lineIndex: number,\n charIndex: number,\n property: T,\n ): this[T] {\n const charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n return (charStyle[property] ?? this[property]) as this[T];\n }\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration(\n ctx: CanvasRenderingContext2D,\n type: 'underline' | 'linethrough' | 'overline',\n ) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n let topOffset = this._getTopOffset();\n const leftOffset = this._getLeftOffset(),\n path = this.path,\n charSpacing = this._getWidthOfCharSpacing(),\n offsetAligner =\n type === 'linethrough' ? 0.5 : type === 'overline' ? 1 : 0,\n offsetY = this.offsets[type];\n for (let i = 0, len = this._textLines.length; i < len; i++) {\n const heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n const line = this._textLines[i];\n const maxHeight = heightOfLine / this.lineHeight;\n const lineLeftOffset = this._getLineLeftOffset(i);\n let boxStart = 0;\n let boxWidth = 0;\n let lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n let lastFill = this.getValueOfPropertyAt(i, 0, FILL);\n let lastTickness = this.getValueOfPropertyAt(\n i,\n 0,\n TEXT_DECORATION_THICKNESS,\n );\n let currentDecoration = lastDecoration;\n let currentFill = lastFill;\n let currentTickness = lastTickness;\n const top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n let size = this.getHeightOfChar(i, 0);\n let dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (let j = 0, jlen = line.length; j < jlen; j++) {\n const charBox = this.__charBounds[i][j] as Required<GraphemeBBox>;\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, FILL);\n currentTickness = this.getValueOfPropertyAt(\n i,\n j,\n TEXT_DECORATION_THICKNESS,\n );\n const currentSize = this.getHeightOfChar(i, j);\n const currentDy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if (path && currentDecoration && currentFill) {\n const finalTickness = (this.fontSize * currentTickness) / 1000;\n ctx.save();\n // bug? verify lastFill is a valid fill here.\n ctx.fillStyle = lastFill as string;\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillRect(\n -charBox.kernedWidth / 2,\n offsetY * currentSize + currentDy - offsetAligner * finalTickness,\n charBox.kernedWidth,\n finalTickness,\n );\n ctx.restore();\n } else if (\n (currentDecoration !== lastDecoration ||\n currentFill !== lastFill ||\n currentSize !== size ||\n currentTickness !== lastTickness ||\n currentDy !== dy) &&\n boxWidth > 0\n ) {\n const finalTickness = (this.fontSize * lastTickness) / 1000;\n let drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n if (lastDecoration && lastFill && lastTickness) {\n // bug? verify lastFill is a valid fill here.\n ctx.fillStyle = lastFill as string;\n ctx.fillRect(\n drawStart,\n top + offsetY * size + dy - offsetAligner * finalTickness,\n boxWidth,\n finalTickness,\n );\n }\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastTickness = currentTickness;\n lastFill = currentFill;\n size = currentSize;\n dy = currentDy;\n } else {\n boxWidth += charBox.kernedWidth;\n }\n }\n let drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentFill as string;\n const finalTickness = (this.fontSize * currentTickness) / 1000;\n currentDecoration &&\n currentFill &&\n currentTickness &&\n ctx.fillRect(\n drawStart,\n top + offsetY * size + dy - offsetAligner * finalTickness,\n boxWidth - charSpacing,\n finalTickness,\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n }\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration(\n {\n fontFamily = this.fontFamily,\n fontStyle = this.fontStyle,\n fontWeight = this.fontWeight,\n fontSize = this.fontSize,\n }: Partial<\n Pick<\n TextStyleDeclaration,\n 'fontFamily' | 'fontStyle' | 'fontWeight' | 'fontSize'\n >\n > = {},\n forMeasuring?: boolean,\n ): string {\n const parsedFontFamily =\n fontFamily.includes(\"'\") ||\n fontFamily.includes('\"') ||\n fontFamily.includes(',') ||\n FabricText.genericFonts.includes(fontFamily.toLowerCase())\n ? fontFamily\n : `\"${fontFamily}\"`;\n return [\n fontStyle,\n fontWeight,\n `${forMeasuring ? this.CACHE_FONT_SIZE : fontSize}px`,\n parsedFontFamily,\n ].join(' ');\n }\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render(ctx: CanvasRenderingContext2D) {\n if (!this.visible) {\n return;\n }\n if (\n this.canvas &&\n this.canvas.skipOffscreen &&\n !this.group &&\n !this.isOnScreen()\n ) {\n return;\n }\n if (this._forceClearCache) {\n this.initDimensions();\n }\n super.render(ctx);\n }\n\n /**\n * Override this method to customize grapheme splitting\n * @todo the util `graphemeSplit` needs to be injectable in some way.\n * is more comfortable to inject the correct util rather than having to override text\n * in the middle of the prototype chain\n * @param {string} value\n * @returns {string[]} array of graphemes\n */\n graphemeSplit(value: string): string[] {\n return graphemeSplit(value);\n }\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns Lines in the text\n */\n _splitTextIntoLines(text: string): TextLinesInfo {\n const lines = text.split(this._reNewline),\n newLines = new Array<string[]>(lines.length),\n newLine = ['\\n'];\n let newText: string[] = [];\n for (let i = 0; i < lines.length; i++) {\n newLines[i] = this.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return {\n _unwrappedLines: newLines,\n lines: lines,\n graphemeText: newText,\n graphemeLines: newLines,\n };\n }\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject<\n T extends Omit<Props & TClassProperties<this>, keyof SProps>,\n K extends keyof T = never,\n >(propertiesToInclude: K[] = []): Pick<T, K> & SProps {\n return {\n ...super.toObject([...additionalProps, ...propertiesToInclude] as K[]),\n styles: stylesToArray(this.styles, this.text),\n ...(this.path ? { path: this.path.toObject() } : {}),\n };\n }\n\n set(key: string | any, value?: any) {\n const { textLayoutProperties } = this.constructor as typeof FabricText;\n super.set(key, value);\n let needsDims = false;\n let isAddingPath = false;\n if (typeof key === 'object') {\n for (const _key in key) {\n if (_key === 'path') {\n this.setPathInfo();\n }\n needsDims = needsDims || textLayoutProperties.includes(_key);\n isAddingPath = isAddingPath || _key === 'path';\n }\n } else {\n needsDims = textLayoutProperties.includes(key);\n isAddingPath = key === 'path';\n }\n if (isAddingPath) {\n this.setPathInfo();\n }\n if (needsDims && this.initialized) {\n // Clear browser lines when layout-affecting properties change\n clearBrowserLines(this);\n this.initDimensions();\n this.setCoords();\n }\n return this;\n }\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity(): number {\n return 1;\n }\n\n /**\n * List of generic font families\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/font-family#generic-name\n */\n static genericFonts = [\n 'serif',\n 'sans-serif',\n 'monospace',\n 'cursive',\n 'fantasy',\n 'system-ui',\n 'ui-serif',\n 'ui-sans-serif',\n 'ui-monospace',\n 'ui-rounded',\n 'math',\n 'emoji',\n 'fangsong',\n ];\n\n /* _FROM_SVG_START_ */\n\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link FabricText.fromElement})\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n static ATTRIBUTE_NAMES = SHARED_ATTRIBUTES.concat(\n 'x',\n 'y',\n 'dx',\n 'dy',\n 'font-family',\n 'font-style',\n 'font-weight',\n 'font-size',\n 'letter-spacing',\n 'text-decoration',\n 'text-anchor',\n );\n\n /**\n * Returns FabricText instance from an SVG element (<b>not yet implemented</b>)\n * @param {HTMLElement} element Element to parse\n * @param {Object} [options] Options object\n */\n static async fromElement(\n element: HTMLElement | SVGElement,\n options?: Abortable,\n cssRules?: CSSRules,\n ) {\n const parsedAttributes = parseAttributes(\n element,\n FabricText.ATTRIBUTE_NAMES,\n cssRules,\n );\n\n const {\n textAnchor = LEFT as typeof LEFT | typeof CENTER | typeof RIGHT,\n textDecoration = '',\n dx = 0,\n dy = 0,\n top = 0,\n left = 0,\n fontSize = DEFAULT_SVG_FONT_SIZE,\n strokeWidth = 1,\n ...restOfOptions\n } = { ...options, ...parsedAttributes };\n\n const textContent = (element.textContent || '')\n .replace(/^\\s+|\\s+$|\\n+/g, '')\n .replace(/\\s+/g, ' ');\n\n // this code here is probably the usual issue for SVG center find\n // this can later looked at again and probably removed.\n\n const text = new this(textContent, {\n left: left + dx,\n top: top + dy,\n underline: textDecoration.includes('underline'),\n overline: textDecoration.includes('overline'),\n linethrough: textDecoration.includes('line-through'),\n // we initialize this as 0\n strokeWidth: 0,\n fontSize,\n ...restOfOptions,\n }),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff =\n (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff;\n\n let offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (textAnchor === CENTER) {\n offX = text.getScaledWidth() / 2;\n }\n if (textAnchor === RIGHT) {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top:\n text.top -\n (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) /\n text.lineHeight,\n strokeWidth,\n });\n return text;\n }\n\n /* _FROM_SVG_END_ */\n\n /**\n * Returns FabricText instance from an object representation\n * @param {Object} object plain js Object to create an instance from\n * @returns {Promise<FabricText>}\n */\n static fromObject<\n T extends TOptions<SerializedTextProps>,\n S extends FabricText,\n >(object: T) {\n return this._fromObject<S>(\n {\n ...object,\n styles: stylesFromArray(object.styles || {}, object.text),\n },\n {\n extraParam: 'text',\n },\n );\n }\n}\n\napplyMixins(FabricText, [TextSVGExportMixin]);\nclassRegistry.setClass(FabricText);\nclassRegistry.setSVGClass(FabricText);\n"],"names":["measuringContext","FabricText","StyledText","getDefaults","super","ownDefaults","constructor","text","options","_defineProperty","Object","assign","this","setOptions","styles","initialized","path","setPathInfo","initDimensions","setCoords","segmentsInfo","getPathSegmentsInfo","_splitText","browserLines","getBrowserLines","useOverlayEditing","_splitTextFromBrowserLines","newLines","_splitTextIntoLines","textLines","lines","_textLines","graphemeLines","_unwrappedTextLines","_unwrappedLines","_text","graphemeText","unwrappedLines","browserLine","push","lineGraphemes","graphemeSplit","concat","length","result","enableAdvancedLayout","initDimensionsAdvanced","_clearCache","dirty","width","height","calcTextWidth","cursorWidth","MIN_TEXT_WIDTH","calcTextHeight","textAlign","includes","JUSTIFY","enlargeSpaces","diffSpace","currentLineWidth","numberOfSpaces","accumulatedSpace","line","charBound","spaces","isRtl","direction","i","len","isEndOfWrapping","getLineWidth","match","_reSpacesAndTabs","j","_reSpaceAndTab","test","spaceCount","__charBounds","kernedWidth","shiftAmount","left","_layoutTextAdvanced","_getAdvancedLayoutOptions","layoutText","wrap","align","_mapTextAlignToAlign","ellipsis","fontSize","lineHeight","letterSpacing","charSpacing","fontFamily","fontStyle","fontWeight","verticalAlign","CENTER","RIGHT","JUSTIFY_LEFT","JUSTIFY_RIGHT","JUSTIFY_CENTER","layout","totalWidth","totalHeight","_convertLayoutToLegacyFormat","map","graphemes","bounds","bound","top","y","deltaY","lineIndex","missingNewlineOffset","_lineIndex","get2DCursorLocation","selectionStart","skipWrapping","charIndex","toString","complexity","_getCacheCanvasDimensions","dims","zoomX","zoomY","_render","ctx","isNotVisible","_setTextStyles","_renderTextLinesBackground","_renderTextDecoration","_renderText","__overlayEditor","paintFirst","STROKE","_renderTextStroke","_renderTextFill","charStyle","forMeasuring","textBaseline","pathAlign","TOP","BOTTOM","font","_getFontDeclaration","maxWidth","_renderTextLine","method","_renderChars","textBackgroundColor","styleHas","originalFill","fillStyle","leftOffset","_getLeftOffset","lineTopOffset","_getTopOffset","heightOfLine","getHeightOfLine","jlen","lineLeftOffset","_getLineLeftOffset","drawStart","currentColor","boxWidth","boxStart","lastColor","getValueOfPropertyAt","charBox","save","translate","renderLeft","renderTop","rotate","angle","fillRect","_fontSizeFraction","restore","_removeShadow","_measureChar","_char","previousChar","prevCharStyle","fontCache","cache","getFontCache","fontDeclaration","couple","stylesAreEqual","fontMultiplier","CACHE_FONT_SIZE","coupleWidth","previousWidth","undefined","canvas","createCanvasElementFor","getContext","getMeasuringContext","measureText","getHeightOfChar","measureLine","lineInfo","_measureLine","_getWidthOfCharSpacing","prevGrapheme","graphemeInfo","reverse","pathSide","llength","lineBounds","Array","grapheme","_getGraphemeBox","positionInPath","totalPathLength","LEFT","pathStartOffset","_setGraphemeOnPath","numOfSpaces","centerPosition","info","getPointOnPath","x","pathOffset","Math","PI","skipLeft","style","getCompleteStyleDeclaration","prevStyle","box","previousBox","__lineHeights","maxHeight","max","_fontSizeMult","_renderTextCommon","lineHeights","fill","FILL","stroke","strokeWidth","isEmptyStyles","shadow","affectStroke","_setLineDash","strokeDashArray","beginPath","closePath","isJustify","shortCut","isLtr","sign","currentDirection","actualStyle","nextStyle","timeToRender","drawingLeft","charsToRender","setAttribute","_renderChar","join","hasStyleChanged","_applyPatternGradientTransformText","filler","pCanvas","pCtx","moveTo","lineTo","toLive","_applyPatternGradientTransform","createPattern","handleFiller","property","offsetX","offsetY","isFiller","gradientUnits","gradientTransform","patternTransform","_setStrokeStyles","_ref","lineWidth","lineCap","strokeLineCap","lineDashOffset","strokeDashOffset","lineJoin","strokeLineJoin","miterLimit","strokeMiterLimit","_setFillStyles","_ref2","decl","_getStyleDeclaration","fullDecl","shouldFill","shouldStroke","fillOffsets","fillText","strokeOffsets","strokeText","setSuperscript","start","end","_setScript","superscript","setSubscript","subscript","schema","loc","dy","size","baseline","setSelectionStyles","lineDiff","_forceClearCache","__lineWidths","_charStyle$property","type","topOffset","offsetAligner","offsets","lastDecoration","lastFill","lastTickness","TEXT_DECORATION_THICKNESS","currentDecoration","currentFill","currentTickness","currentSize","currentDy","finalTickness","arguments","parsedFontFamily","genericFonts","toLowerCase","render","visible","skipOffscreen","group","isOnScreen","value","split","_reNewline","newLine","newText","pop","toObject","propertiesToInclude","additionalProps","stylesToArray","set","key","textLayoutProperties","needsDims","isAddingPath","_key","clearBrowserLines","fromElement","element","cssRules","parsedAttributes","parseAttributes","ATTRIBUTE_NAMES","textAnchor","textDecoration","dx","DEFAULT_SVG_FONT_SIZE","restOfOptions","textContent","replace","underline","overline","linethrough","textHeightScaleFactor","getScaledHeight","scaledDiff","textHeight","offX","getScaledWidth","fromObject","object","_fromObject","stylesFromArray","extraParam","cacheProperties","textDefaultValues","SHARED_ATTRIBUTES","applyMixins","TextSVGExportMixin","classRegistry","setClass","setSVGClass"],"mappings":"g9CAwDA,IAAIA,EAmFG,MAAMC,UAKHC,EAkUR,kBAAOC,GACL,MAAO,IAAKC,MAAMD,iBAAkBF,EAAWI,YACjD,CAEAC,WAAAA,CAAYC,EAAcC,GACxBJ,QArDFK,sBAMiC,IAgD/BC,OAAOC,OAAOC,KAAMX,EAAWI,aAC/BO,KAAKC,WAAWL,GACXI,KAAKE,SACRF,KAAKE,OAAS,CAAA,GAEhBF,KAAKL,KAAOA,EACZK,KAAKG,aAAc,EACfH,KAAKI,MACPJ,KAAKK,cAEPL,KAAKM,iBACLN,KAAKO,WACP,CAMAF,WAAAA,GACE,MAAMD,EAAOJ,KAAKI,KACdA,IACFA,EAAKI,aAAeC,EAAoBL,EAAKA,MAEjD,CAOAM,UAAAA,GAEE,MAAMC,EAAeC,EAAgBZ,MACrC,GAAIW,GAAgBX,KAAKa,kBACvB,OAAOb,KAAKc,2BAA2BH,GAGzC,MAAMI,EAAWf,KAAKgB,oBAAoBhB,KAAKL,MAK/C,OAJAK,KAAKiB,UAAYF,EAASG,MAC1BlB,KAAKmB,WAAaJ,EAASK,cAC3BpB,KAAKqB,oBAAsBN,EAASO,gBACpCtB,KAAKuB,MAAQR,EAASS,aACfT,CACT,CAMAD,0BAAAA,CAA2BH,GACzB,MAAMO,EAAkB,GAClBE,EAA4B,GAC5BK,EAA6B,GACnC,IAAID,EAAyB,GAE7B,IAAK,MAAME,KAAef,EAAc,CACtCO,EAAMS,KAAKD,EAAY/B,MACvB,MAAMiC,EAAgB5B,KAAK6B,cAAcH,EAAY/B,MACrDyB,EAAcO,KAAKC,GACnBH,EAAeE,KAAKC,GACpBJ,EAAeA,EAAaM,OAAOF,GAG/BF,IAAgBf,EAAaA,EAAaoB,OAAS,IACrDP,EAAaG,KAAK,KAEtB,CAEA,MAAMK,EAAwB,CAC5Bd,QACAE,gBACAI,eACAF,gBAAiBG,GASnB,OALAzB,KAAKiB,UAAYe,EAAOd,MACxBlB,KAAKmB,WAAaa,EAAOZ,cACzBpB,KAAKqB,oBAAsBW,EAAOV,gBAClCtB,KAAKuB,MAAQS,EAAOR,aAEbQ,CACT,CAOA1B,cAAAA,GAEE,GAAIN,KAAKiC,uBAAyBjC,KAAKI,KACrC,OAAOJ,KAAKkC,yBAGdlC,KAAKU,aACLV,KAAKmC,cACLnC,KAAKoC,OAAQ,EACTpC,KAAKI,MACPJ,KAAKqC,MAAQrC,KAAKI,KAAKiC,MACvBrC,KAAKsC,OAAStC,KAAKI,KAAKkC,SAExBtC,KAAKqC,MACHrC,KAAKuC,iBAAmBvC,KAAKwC,aAAexC,KAAKyC,eACnDzC,KAAKsC,OAAStC,KAAK0C,kBAEjB1C,KAAK2C,UAAUC,SAASC,IAE1B7C,KAAK8C,eAET,CAKAA,aAAAA,GACE,IAAIC,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,EACF,MAAMC,EAA2B,QAAnBtD,KAAKuD,UAEnB,IAAK,IAAIC,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWY,OAAQyB,EAAIC,EAAKD,IACrD,IACExD,KAAK2C,YAAcE,GAClBW,IAAMC,EAAM,IAAKzD,KAAK0D,gBAAgBF,MAIzCN,EAAmB,EACnBC,EAAOnD,KAAKmB,WAAWqC,GACvBR,EAAmBhD,KAAK2D,aAAaH,GAEnCR,EAAmBhD,KAAKqC,QACvBgB,EAASrD,KAAKiB,UAAUuC,GAAGI,MAAM5D,KAAK6D,oBAKvC,GAHAZ,EAAiBI,EAAOtB,OACxBgB,GAAa/C,KAAKqC,MAAQW,GAAoBC,EAE1CK,EAAO,CAOT,IAAK,IAAIQ,EAAI,EAAGA,EAAIX,EAAKpB,OAAQ+B,IAC3B9D,KAAK+D,eAAeC,KAAKb,EAAKW,IAUpC,IAAIG,EAAa,EACjB,IAAK,IAAIH,EAAI,EAAGA,GAAKX,EAAKpB,OAAQ+B,IAEhC,GADAV,EAAYpD,KAAKkE,aAAaV,GAAGM,GAC7BV,EAAW,CACTpD,KAAK+D,eAAeC,KAAKb,EAAKW,MAChCV,EAAUf,OAASU,EACnBK,EAAUe,aAAepB,EACzBkB,KAKF,MACMG,GADkBnB,EAAiBgB,GACHlB,EACtCK,EAAUiB,MAAQD,CACpB,CAEJ,MAEE,IAAK,IAAIN,EAAI,EAAGA,GAAKX,EAAKpB,OAAQ+B,IAChCV,EAAYpD,KAAKkE,aAAaV,GAAGM,GAC7BV,IACEpD,KAAK+D,eAAeC,KAAKb,EAAKW,KAChCV,EAAUf,OAASU,EACnBK,EAAUe,aAAepB,EACzBK,EAAUiB,MAAQnB,EAClBA,GAAoBH,GAEpBK,EAAUiB,MAAQnB,EAOhC,CAMAoB,mBAAAA,GACE,MAAM1E,EAAUI,KAAKuE,4BACrB,OAAOC,EAAW5E,EACpB,CAMA2E,yBAAAA,GACE,MAAO,CACL5E,KAAMK,KAAKL,KACX0C,MAAOrC,KAAKqC,MACZC,OAAQtC,KAAKsC,OACbmC,KAAMzE,KAAKyE,MAAQ,OACnBC,MAAO1E,KAAK2E,qBAAqB3E,KAAK2C,WACtCiC,SAAU5E,KAAK4E,WAAY,EAC3BC,SAAU7E,KAAK6E,SACfC,WAAY9E,KAAK8E,WACjBC,cAAe/E,KAAK+E,eAAiB,EACrCC,YAAahF,KAAKgF,YAClBzB,UAA8B,YAAnBvD,KAAKuD,UAA0B,MAAQvD,KAAKuD,UACvD0B,WAAYjF,KAAKiF,WACjBC,UAAWlF,KAAKkF,UAChBC,WAAYnF,KAAKmF,WACjBC,cAAepF,KAAKoF,eAAiB,MAEzC,CAMAT,oBAAAA,CAAqBhC,GACnB,OAAQA,GACN,IAAK,SACL,KAAK0C,EACH,MAAO,SACT,IAAK,QACL,KAAKC,EACH,MAAO,QACT,IAAK,UACL,KAAKzC,EACL,KAAK0C,EACL,KAAKC,EACL,KAAKC,EACH,MAAO,UACT,QACE,MAAO,OAEb,CAKAvD,sBAAAA,GACE,IAAKlC,KAAKiC,qBACR,OAAOjC,KAAKM,iBAGd,MAAMoF,EAAS1F,KAAKsE,sBAGpBtE,KAAKqC,MAAQqD,EAAOC,YAAc3F,KAAKyC,eACvCzC,KAAKsC,OAASoD,EAAOE,YAGrB5F,KAAK6F,6BAA6BH,GAElC1F,KAAKoC,OAAQ,CACf,CAMAyD,4BAAAA,CAA6BH,GAC3B1F,KAAKmB,WAAauE,EAAOxE,MAAM4E,IAAI3C,GAAQA,EAAK4C,WAC/C/F,KAAaiB,UAAYyE,EAAOxE,MAAM4E,IAAI3C,GAAQA,EAAKxD,MAGxDK,KAAKkE,aAAewB,EAAOxE,MAAM4E,IAAI3C,GACnCA,EAAK6C,OAAOF,IAAIG,IAAK,CACnB5B,KAAM4B,EAAM5B,KACZ6B,IAAKD,EAAME,EACX9D,MAAO4D,EAAM5D,MACbC,OAAQ2D,EAAM3D,OACd6B,YAAa8B,EAAM9B,YACnBiC,OAAQH,EAAMG,QAAU,MAKxBV,EAAOxE,MAAMa,OAAS,IACvB/B,KAAaqB,oBAAsBqE,EAAOxE,MAAM4E,IAAI3C,GAAQA,EAAK4C,WAEtE,CAOArC,eAAAA,CAAgB2C,GACd,OAAOA,IAAcrG,KAAKmB,WAAWY,OAAS,CAChD,CASAuE,oBAAAA,CAAqBC,GACnB,OAAO,CACT,CAOAC,mBAAAA,CAAoBC,EAAwBC,GAC1C,MAAMxF,EAAQwF,EAAe1G,KAAKqB,oBAAsBrB,KAAKmB,WAC7D,IAAIqC,EACJ,IAAKA,EAAI,EAAGA,EAAItC,EAAMa,OAAQyB,IAAK,CACjC,GAAIiD,GAAkBvF,EAAMsC,GAAGzB,OAC7B,MAAO,CACLsE,UAAW7C,EACXmD,UAAWF,GAGfA,GACEvF,EAAMsC,GAAGzB,OAAS/B,KAAKsG,qBAAqB9C,EAAGkD,EACnD,CACA,MAAO,CACLL,UAAW7C,EAAI,EACfmD,UACEzF,EAAMsC,EAAI,GAAGzB,OAAS0E,EAClBvF,EAAMsC,EAAI,GAAGzB,OACb0E,EAEV,CAMAG,QAAAA,GACE,MAAO,WAAW5G,KAAK6G,6BACrB7G,KAAKL,yBACcK,KAAKiF,gBAC5B,CAaA6B,yBAAAA,GACE,MAAMC,EAAOvH,MAAMsH,4BACbjC,EAAW7E,KAAK6E,SAGtB,OAFAkC,EAAK1E,OAASwC,EAAWkC,EAAKC,MAC9BD,EAAKzE,QAAUuC,EAAWkC,EAAKE,MACxBF,CACT,CAMAG,OAAAA,CAAQC,GACN,MAAM/G,EAAOJ,KAAKI,KAClBA,IAASA,EAAKgH,gBAAkBhH,EAAK8G,QAAQC,GAC7CnH,KAAKqH,eAAeF,GACpBnH,KAAKsH,2BAA2BH,GAChCnH,KAAKuH,sBAAsBJ,EAAK,aAChCnH,KAAKwH,YAAYL,GACjBnH,KAAKuH,sBAAsBJ,EAAK,YAChCnH,KAAKuH,sBAAsBJ,EAAK,cAClC,CAMAK,WAAAA,CAAYL,GAELnH,KAAayH,kBAGdzH,KAAK0H,aAAeC,GACtB3H,KAAK4H,kBAAkBT,GACvBnH,KAAK6H,gBAAgBV,KAErBnH,KAAK6H,gBAAgBV,GACrBnH,KAAK4H,kBAAkBT,IAE3B,CAYAE,cAAAA,CACEF,EACAW,EACAC,GAGA,GADAZ,EAAIa,aAAe,aACfhI,KAAKI,KACP,OAAQJ,KAAKiI,WACX,KAAK5C,EACH8B,EAAIa,aAAe,SACnB,MACF,IAAK,WACHb,EAAIa,aAAeE,EACnB,MACF,IAAK,YACHf,EAAIa,aAAeG,EAIzBhB,EAAIiB,KAAOpI,KAAKqI,oBAAoBP,EAAWC,EACjD,CAQAxF,aAAAA,GACE,IAAI+F,EAAWtI,KAAK2D,aAAa,GAEjC,IAAK,IAAIH,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWY,OAAQyB,EAAIC,EAAKD,IAAK,CAC1D,MAAMR,EAAmBhD,KAAK2D,aAAaH,GACvCR,EAAmBsF,IACrBA,EAAWtF,EAEf,CACA,OAAOsF,CACT,CAWAC,eAAAA,CACEC,EACArB,EACAhE,EACAkB,EACA6B,EACAG,GAEArG,KAAKyI,aAAaD,EAAQrB,EAAKhE,EAAMkB,EAAM6B,EAAKG,EAClD,CAOAiB,0BAAAA,CAA2BH,GACzB,IAAKnH,KAAK0I,sBAAwB1I,KAAK2I,SAAS,uBAC9C,OAEF,MAAMC,EAAezB,EAAI0B,UACvBC,EAAa9I,KAAK+I,iBACpB,IAAIC,EAAgBhJ,KAAKiJ,gBAEzB,IAAK,IAAIzF,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWY,OAAQyB,EAAIC,EAAKD,IAAK,CAC1D,MAAM0F,EAAelJ,KAAKmJ,gBAAgB3F,GAC1C,IACGxD,KAAK0I,sBACL1I,KAAK2I,SAAS,sBAAuBnF,GACtC,CACAwF,GAAiBE,EACjB,QACF,CACA,MAAME,EAAOpJ,KAAKmB,WAAWqC,GAAGzB,OAC1BsH,EAAiBrJ,KAAKsJ,mBAAmB9F,GAC/C,IAEI+F,EACAC,EAHAC,EAAW,EACXC,EAAW,EAGXC,EAAY3J,KAAK4J,qBAAqBpG,EAAG,EAAG,uBAChD,IAAK,IAAIM,EAAI,EAAGA,EAAIsF,EAAMtF,IAAK,CAE7B,MAAM+F,EAAU7J,KAAKkE,aAAaV,GAAGM,GACrC0F,EAAexJ,KAAK4J,qBAAqBpG,EAAGM,EAAG,uBAC3C9D,KAAKI,MACP+G,EAAI2C,OACJ3C,EAAI4C,UAAUF,EAAQG,WAAYH,EAAQI,WAC1C9C,EAAI+C,OAAOL,EAAQM,OACnBhD,EAAI0B,UAAYW,EAChBA,GACErC,EAAIiD,UACDP,EAAQxH,MAAQ,GACf6G,EAAelJ,KAAK8E,YAAe,EAAI9E,KAAKqK,mBAC9CR,EAAQxH,MACR6G,EAAelJ,KAAK8E,YAExBqC,EAAImD,WACKd,IAAiBG,GAC1BJ,EAAYT,EAAaO,EAAiBK,EACnB,QAAnB1J,KAAKuD,YACPgG,EAAYvJ,KAAKqC,MAAQkH,EAAYE,GAEvCtC,EAAI0B,UAAYc,EAChBA,GACExC,EAAIiD,SACFb,EACAP,EACAS,EACAP,EAAelJ,KAAK8E,YAExB4E,EAAWG,EAAQxF,KACnBoF,EAAWI,EAAQxH,MACnBsH,EAAYH,GAEZC,GAAYI,EAAQ1F,WAExB,CACIqF,IAAiBxJ,KAAKI,OACxBmJ,EAAYT,EAAaO,EAAiBK,EACnB,QAAnB1J,KAAKuD,YACPgG,EAAYvJ,KAAKqC,MAAQkH,EAAYE,GAEvCtC,EAAI0B,UAAYW,EAChBrC,EAAIiD,SACFb,EACAP,EACAS,EACAP,EAAelJ,KAAK8E,aAGxBkE,GAAiBE,CACnB,CACA/B,EAAI0B,UAAYD,EAGhB5I,KAAKuK,cAAcpD,EACrB,CAYAqD,YAAAA,CACEC,EACA3C,EACA4C,EACAC,GAEA,MAAMC,EAAYC,EAAMC,aAAahD,GACnCiD,EAAkB/K,KAAKqI,oBAAoBP,GAC3CkD,EAASN,EAAeD,EACxBQ,EACEP,GACAK,IAAoB/K,KAAKqI,oBAAoBsC,GAC/CO,EAAiBpD,EAAUjD,SAAW7E,KAAKmL,gBAC7C,IAAI9I,EACF+I,EACAC,EACAlH,EAYF,GAVIuG,QAA4CY,IAA5BV,EAAUF,KAC5BW,EAAgBT,EAAUF,SAEHY,IAArBV,EAAUH,KACZtG,EAAc9B,EAAQuI,EAAUH,IAE9BQ,QAAwCK,IAAtBV,EAAUI,KAC9BI,EAAcR,EAAUI,GACxB7G,EAAciH,EAAcC,QAGlBC,IAAVjJ,QACkBiJ,IAAlBD,QACgBC,IAAhBF,EACA,CACA,MAAMjE,EA1/BZ,WACE,IAAK/H,EAAkB,CACrB,MAAMmM,EAASC,EAAuB,CACpCnJ,MAAO,EACPC,OAAQ,IAEVlD,EAAmBmM,EAAOE,WAAW,KACvC,CACA,OAAOrM,CACT,CAi/BkBsM,GAEZ1L,KAAKqH,eAAeF,EAAKW,GAAW,QACtBwD,IAAVjJ,IACF8B,EAAc9B,EAAQ8E,EAAIwE,YAAYlB,GAAOpI,MAC7CuI,EAAUH,GAASpI,QAECiJ,IAAlBD,GAA+BJ,GAAkBP,IACnDW,EAAgBlE,EAAIwE,YAAYjB,GAAcrI,MAC9CuI,EAAUF,GAAgBW,GAExBJ,QAAkCK,IAAhBF,IAEpBA,EAAcjE,EAAIwE,YAAYX,GAAQ3I,MACtCuI,EAAUI,GAAUI,EAEpBjH,EAAciH,EAAcC,EAEhC,CACA,MAAO,CACLhJ,MAAOA,EAAQ6I,EACf/G,YAAaA,EAAe+G,EAEhC,CAQAU,eAAAA,CAAgBzI,EAAcsH,GAC5B,OAAOzK,KAAK4J,qBAAqBzG,EAAMsH,EAAO,WAChD,CAMAoB,WAAAA,CAAYxF,GACV,MAAMyF,EAAW9L,KAAK+L,aAAa1F,GAOnC,OANyB,IAArBrG,KAAKgF,cACP8G,EAASzJ,OAASrC,KAAKgM,0BAErBF,EAASzJ,MAAQ,IACnByJ,EAASzJ,MAAQ,GAEZyJ,CACT,CAQAC,YAAAA,CAAa1F,GACX,IACE4F,EACAC,EAFE7J,EAAQ,EAIZ,MAAM8J,EAAUnM,KAAKoM,WAAa9G,EAChClF,EAAOJ,KAAKI,KACZ+C,EAAOnD,KAAKmB,WAAWkF,GACvBgG,EAAUlJ,EAAKpB,OACfuK,EAAa,IAAIC,MAAoBF,GAEvCrM,KAAKkE,aAAamC,GAAaiG,EAC/B,IAAK,IAAI9I,EAAI,EAAGA,EAAI6I,EAAS7I,IAAK,CAChC,MAAMgJ,EAAWrJ,EAAKK,GACtB0I,EAAelM,KAAKyM,gBAAgBD,EAAUnG,EAAW7C,EAAGyI,GAC5DK,EAAW9I,GAAK0I,EAChB7J,GAAS6J,EAAa/H,YACtB8H,EAAeO,CACjB,CAUA,GAPAF,EAAWD,GAAW,CACpBhI,KAAM6H,EAAeA,EAAa7H,KAAO6H,EAAa7J,MAAQ,EAC9DA,MAAO,EACP8B,YAAa,EACb7B,OAAQtC,KAAK6E,SACbuB,OAAQ,GAENhG,GAAQA,EAAKI,aAAc,CAC7B,IAAIkM,EAAiB,EACrB,MAAMC,EACJvM,EAAKI,aAAaJ,EAAKI,aAAauB,OAAS,GAAGA,OAClD,OAAQ/B,KAAK2C,WACX,KAAKiK,EACHF,EAAiBP,EAAUQ,EAAkBtK,EAAQ,EACrD,MACF,KAAKgD,EACHqH,GAAkBC,EAAkBtK,GAAS,EAC7C,MACF,KAAKiD,EACHoH,EAAiBP,EAAU,EAAIQ,EAAkBtK,EAIrDqK,GAAkB1M,KAAK6M,iBAAmBV,GAAU,EAAK,GACzD,IACE,IAAI3I,EAAI2I,EAAUE,EAAU,EAAI,EAChCF,EAAU3I,GAAK,EAAIA,EAAI6I,EACvBF,EAAU3I,IAAMA,IAEhB0I,EAAeI,EAAW9I,GACtBkJ,EAAiBC,EACnBD,GAAkBC,EACTD,EAAiB,IAC1BA,GAAkBC,GAIpB3M,KAAK8M,mBAAmBJ,EAAgBR,GACxCQ,GAAkBR,EAAa/H,WAEnC,CACA,MAAO,CAAE9B,MAAOA,EAAO0K,YAAa,EACtC,CAUAD,kBAAAA,CAAmBJ,EAAwBR,GACzC,MAAMc,EAAiBN,EAAiBR,EAAa/H,YAAc,EACjE/D,EAAOJ,KAAKI,KAGR6M,EAAOC,EAAe9M,EAAKA,KAAM4M,EAAgB5M,EAAKI,cAC5D0L,EAAalC,WAAaiD,EAAKE,EAAI/M,EAAKgN,WAAWD,EACnDjB,EAAajC,UAAYgD,EAAK9G,EAAI/F,EAAKgN,WAAWjH,EAClD+F,EAAa/B,MAAQ8C,EAAK9C,OAASnK,KAAKoM,WAAa9G,EAAQ+H,KAAKC,GAAK,EACzE,CAUAb,eAAAA,CACED,EACAnG,EACAM,EACAsF,EACAsB,GAEA,MAAMC,EAAQxN,KAAKyN,4BAA4BpH,EAAWM,GACxD+G,EAAYzB,EACRjM,KAAKyN,4BAA4BpH,EAAWM,EAAY,GACxD,CAAA,EACJsG,EAAOjN,KAAKwK,aAAagC,EAAUgB,EAAOvB,EAAcyB,GAC1D,IAEE1I,EAFEb,EAAc8I,EAAK9I,YACrB9B,EAAQ4K,EAAK5K,MAGU,IAArBrC,KAAKgF,cACPA,EAAchF,KAAKgM,yBACnB3J,GAAS2C,EACTb,GAAea,GAGjB,MAAM2I,EAAoB,CACxBtL,QACAgC,KAAM,EACN/B,OAAQkL,EAAM3I,SACdV,cACAiC,OAAQoH,EAAMpH,QAEhB,GAAIO,EAAY,IAAM4G,EAAU,CAC9B,MAAMK,EAAc5N,KAAKkE,aAAamC,GAAWM,EAAY,GAC7DgH,EAAItJ,KACFuJ,EAAYvJ,KAAOuJ,EAAYvL,MAAQ4K,EAAK9I,YAAc8I,EAAK5K,KACnE,CACA,OAAOsL,CACT,CAOAxE,eAAAA,CAAgB9C,GACd,GAAIrG,KAAK6N,cAAcxH,GACrB,OAAOrG,KAAK6N,cAAcxH,GAK5B,IAAIyH,EAAY9N,KAAK4L,gBAAgBvF,EAAW,GAChD,IAAK,IAAI7C,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWkF,GAAWtE,OAAQyB,EAAIC,EAAKD,IAChEsK,EAAYT,KAAKU,IAAI/N,KAAK4L,gBAAgBvF,EAAW7C,GAAIsK,GAG3D,OAAQ9N,KAAK6N,cAAcxH,GACzByH,EAAY9N,KAAK8E,WAAa9E,KAAKgO,aACvC,CAKAtL,cAAAA,GACE,IAAIoC,EACFxC,EAAS,EACX,IAAK,IAAIkB,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWY,OAAQyB,EAAIC,EAAKD,IACrDsB,EAAa9E,KAAKmJ,gBAAgB3F,GAClClB,GAAUkB,IAAMC,EAAM,EAAIqB,EAAa9E,KAAK8E,WAAaA,EAE3D,OAAOxC,CACT,CAMAyG,cAAAA,GACE,MAA0B,QAAnB/I,KAAKuD,WAAuBvD,KAAKqC,MAAQ,EAAIrC,KAAKqC,MAAQ,CACnE,CAMA4G,aAAAA,GACE,OAAQjJ,KAAKsC,OAAS,CACxB,CAOA2L,iBAAAA,CACE9G,EACAqB,GAEArB,EAAI2C,OACJ,IAAIoE,EAAc,EAClB,MAAM7J,EAAOrE,KAAK+I,iBAChB7C,EAAMlG,KAAKiJ,gBACb,IAAK,IAAIzF,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWY,OAAQyB,EAAIC,EAAKD,IAAK,CAC1D,MAAM0F,EAAelJ,KAAKmJ,gBAAgB3F,GACxCsK,EAAY5E,EAAelJ,KAAK8E,WAChCgE,EAAa9I,KAAKsJ,mBAAmB9F,GACvCxD,KAAKuI,gBACHC,EACArB,EACAnH,KAAKmB,WAAWqC,GAChBa,EAAOyE,EACP5C,EAAMgI,EAAcJ,EACpBtK,GAEF0K,GAAehF,CACjB,CACA/B,EAAImD,SACN,CAMAzC,eAAAA,CAAgBV,IACTnH,KAAKmO,MAASnO,KAAK2I,SAASyF,KAIjCpO,KAAKiO,kBAAkB9G,EAAK,WAC9B,CAMAS,iBAAAA,CAAkBT,IACVnH,KAAKqO,QAA+B,IAArBrO,KAAKsO,cAAsBtO,KAAKuO,mBAIjDvO,KAAKwO,SAAWxO,KAAKwO,OAAOC,cAC9BzO,KAAKuK,cAAcpD,GAGrBA,EAAI2C,OACJ9J,KAAK0O,aAAavH,EAAKnH,KAAK2O,iBAC5BxH,EAAIyH,YACJ5O,KAAKiO,kBAAkB9G,EAAK,cAC5BA,EAAI0H,YACJ1H,EAAImD,UACN,CAWA7B,YAAAA,CACED,EACArB,EACAhE,EACAkB,EACA6B,EACAG,GAEA,MAAMvB,EAAa9E,KAAKmJ,gBAAgB9C,GACtCyI,EAAY9O,KAAK2C,UAAUC,SAASC,GACpCzC,EAAOJ,KAAKI,KACZ2O,GACGD,GACoB,IAArB9O,KAAKgF,aACLhF,KAAKuO,cAAclI,KAClBjG,EACH4O,EAA2B,QAAnBhP,KAAKuD,UACb0L,EAA0B,QAAnBjP,KAAKuD,UAAsB,GAAI,EAGtC2L,EAAmB/H,EAAI5D,UAEzB,IAAI4L,EACFC,EAEAvF,EAEAwF,EACAC,EAJAC,EAAgB,GAEhB9F,EAAW,EAmBb,GAfAtC,EAAI2C,OACAoF,IAAqBlP,KAAKuD,YAC5B4D,EAAIoE,OAAOiE,aAAa,MAAOR,EAAQ,MAAQ,OAC/C7H,EAAI5D,UAAYyL,EAAQ,MAAQ,MAM9B7H,EAAIxE,UAFFmM,GAIcE,EAFApC,EAEetH,GAGnCY,GAAQpB,EAAa9E,KAAKqK,kBAAqBrK,KAAK8E,WAChDiK,EAKF,OAFA/O,KAAKyP,YAAYjH,EAAQrB,EAAKd,EAAW,EAAGlD,EAAKuM,KAAK,IAAKrL,EAAM6B,QACjEiB,EAAImD,UAGN,IAAK,IAAI9G,EAAI,EAAGC,EAAMN,EAAKpB,OAAS,EAAGyB,GAAKC,EAAKD,IAC/C6L,EAAe7L,IAAMC,GAAOzD,KAAKgF,aAAe5E,EAChDmP,GAAiBpM,EAAKK,GACtBqG,EAAU7J,KAAKkE,aAAamC,GAAW7C,GACtB,IAAbiG,GACFpF,GAAQ4K,GAAQpF,EAAQ1F,YAAc0F,EAAQxH,OAC9CoH,GAAYI,EAAQxH,OAEpBoH,GAAYI,EAAQ1F,YAElB2K,IAAcO,GACZrP,KAAK+D,eAAeC,KAAKb,EAAKK,MAChC6L,GAAe,GAGdA,IAEHF,EACEA,GAAenP,KAAKyN,4BAA4BpH,EAAW7C,GAC7D4L,EAAYpP,KAAKyN,4BAA4BpH,EAAW7C,EAAI,GAC5D6L,EAAeM,EAAgBR,EAAaC,GAAW,IAErDC,IACEjP,GACF+G,EAAI2C,OACJ3C,EAAI4C,UAAUF,EAAQG,WAAYH,EAAQI,WAC1C9C,EAAI+C,OAAOL,EAAQM,OACnBnK,KAAKyP,YACHjH,EACArB,EACAd,EACA7C,EACA+L,GACC9F,EAAW,EACZ,GAEFtC,EAAImD,YAEJgF,EAAcjL,EACdrE,KAAKyP,YACHjH,EACArB,EACAd,EACA7C,EACA+L,EACAD,EACApJ,IAGJqJ,EAAgB,GAChBJ,EAAcC,EACd/K,GAAQ4K,EAAOxF,EACfA,EAAW,GAGftC,EAAImD,SACN,CAaAsF,kCAAAA,CAAmCC,GAEjC,MAAMxN,EAAQrC,KAAKqC,MAAQrC,KAAKsO,YAC9BhM,EAAStC,KAAKsC,OAAStC,KAAKsO,YAC5BwB,EAAUtE,EAAuB,CAC/BnJ,QACAC,WAEFyN,EAAOD,EAAQrE,WAAW,MAa5B,OAZAqE,EAAQzN,MAAQA,EAChByN,EAAQxN,OAASA,EACjByN,EAAKnB,YACLmB,EAAKC,OAAO,EAAG,GACfD,EAAKE,OAAO5N,EAAO,GACnB0N,EAAKE,OAAO5N,EAAOC,GACnByN,EAAKE,OAAO,EAAG3N,GACfyN,EAAKlB,YACLkB,EAAKhG,UAAU1H,EAAQ,EAAGC,EAAS,GACnCyN,EAAKlH,UAAYgH,EAAOK,OAAOH,GAC/B/P,KAAKmQ,+BAA+BJ,EAAMF,GAC1CE,EAAK5B,OACE4B,EAAKK,cAAcN,EAAS,YACrC,CAEAO,YAAAA,CACElJ,EACAmJ,EACAT,GAEA,IAAIU,EAAiBC,EACrB,OAAIC,EAASZ,GAEwC,eAAhDA,EAA8Ba,eAC9Bb,EAA8Bc,mBAC9Bd,EAAmBe,kBAMpBL,GAAWvQ,KAAKqC,MAAQ,EACxBmO,GAAWxQ,KAAKsC,OAAS,EACzB6E,EAAI4C,UAAUwG,EAASC,GACvBrJ,EAAImJ,GAAYtQ,KAAK4P,mCAAmCC,GACjD,CAAEU,UAASC,aAGlBrJ,EAAImJ,GAAYT,EAAOK,OAAO/I,GACvBnH,KAAKmQ,+BAA+BhJ,EAAK0I,KAIlD1I,EAAImJ,GAAYT,EAEX,CAAEU,QAAS,EAAGC,QAAS,GAChC,CASAK,gBAAAA,CACE1J,EAA6B2J,GAK7B,IAJAzC,OACEA,EAAMC,YACNA,GAC6DwC,EAO/D,OALA3J,EAAI4J,UAAYzC,EAChBnH,EAAI6J,QAAUhR,KAAKiR,cACnB9J,EAAI+J,eAAiBlR,KAAKmR,iBAC1BhK,EAAIiK,SAAWpR,KAAKqR,eACpBlK,EAAImK,WAAatR,KAAKuR,iBACfvR,KAAKqQ,aAAalJ,EAAK,cAAekH,EAC/C,CASAmD,cAAAA,CAAerK,EAA6BsK,GAAgC,IAA9BtD,KAAEA,GAA0BsD,EACxE,OAAOzR,KAAKqQ,aAAalJ,EAAK,YAAagH,EAC7C,CAaAsB,WAAAA,CACEjH,EACArB,EACAd,EACAM,EACA8D,EACApG,EACA6B,GAEA,MAAMwL,EAAO1R,KAAK2R,qBAAqBtL,EAAWM,GAChDiL,EAAW5R,KAAKyN,4BAA4BpH,EAAWM,GACvDkL,EAAwB,aAAXrJ,GAAyBoJ,EAASzD,KAC/C2D,EACa,eAAXtJ,GAA2BoJ,EAASvD,QAAUuD,EAAStD,YAE3D,GAAKwD,GAAiBD,EAAtB,CAcA,GAXA1K,EAAI2C,OAEJ3C,EAAIiB,KAAOpI,KAAKqI,oBAAoBuJ,GAEhCF,EAAKhJ,qBACP1I,KAAKuK,cAAcpD,GAEjBuK,EAAKtL,SACPF,GAAOwL,EAAKtL,QAGVyL,EAAY,CACd,MAAME,EAAc/R,KAAKwR,eAAerK,EAAKyK,GAC7CzK,EAAI6K,SACFvH,EACApG,EAAO0N,EAAYxB,QACnBrK,EAAM6L,EAAYvB,QAEtB,CAEA,GAAIsB,EAAc,CAChB,MAAMG,EAAgBjS,KAAK6Q,iBAAiB1J,EAAKyK,GACjDzK,EAAI+K,WACFzH,EACApG,EAAO4N,EAAc1B,QACrBrK,EAAM+L,EAAczB,QAExB,CAEArJ,EAAImD,SA9BJ,CA+BF,CAOA6H,cAAAA,CAAeC,EAAeC,GAC5BrS,KAAKsS,WAAWF,EAAOC,EAAKrS,KAAKuS,YACnC,CAOAC,YAAAA,CAAaJ,EAAeC,GAC1BrS,KAAKsS,WAAWF,EAAOC,EAAKrS,KAAKyS,UACnC,CASUH,UAAAA,CACRF,EACAC,EACAK,GAKA,MAAMC,EAAM3S,KAAKwG,oBAAoB4L,GAAO,GAC1CvN,EAAW7E,KAAK4J,qBACd+I,EAAItM,UACJsM,EAAIhM,UACJ,YAEFiM,EAAK5S,KAAK4J,qBAAqB+I,EAAItM,UAAWsM,EAAIhM,UAAW,UAC7D6G,EAAQ,CACN3I,SAAUA,EAAW6N,EAAOG,KAC5BzM,OAAQwM,EAAK/N,EAAW6N,EAAOI,UAEnC9S,KAAK+S,mBAAmBvF,EAAO4E,EAAOC,EACxC,CAOA/I,kBAAAA,CAAmBjD,GACjB,MAAM0K,EAAY/Q,KAAK2D,aAAa0C,GAClC2M,EAAWhT,KAAKqC,MAAQ0O,EACxBpO,EAAY3C,KAAK2C,UACjBY,EAAYvD,KAAKuD,UACjBG,EAAkB1D,KAAK0D,gBAAgB2C,GACzC,IAAIyC,EAAa,EASjB,OALEnG,IAAcE,GACbF,IAAc8C,IAAmB/B,GACjCf,IAAc6C,IAAkB9B,GAChCf,IAAc4C,IAAiB7B,EAOvB,GAOPf,IAAc0C,IAChByD,EAAakK,EAAW,GAEtBrQ,IAAc2C,IAChBwD,EAAakK,GAEXrQ,IAAc8C,IAChBqD,EAAakK,EAAW,GAEtBrQ,IAAc6C,IAChBsD,EAAakK,GAIG,QAAdzP,IAEAZ,IAAc2C,GACd3C,IAAcE,GACdF,IAAc6C,EAEdsD,EAAa,EACJnG,IAAciK,GAAQjK,IAAc4C,EAC7CuD,GAAckK,EACLrQ,IAAc0C,GAAU1C,IAAc8C,IAC/CqD,GAAckK,EAAW,IAGtBlK,EACT,CAKA3G,WAAAA,GACEnC,KAAKiT,kBAAmB,EACxBjT,KAAKkT,aAAe,GACpBlT,KAAK6N,cAAgB,GACrB7N,KAAKkE,aAAe,EACtB,CASAP,YAAAA,CAAa0C,GACX,QAAqCiF,IAAjCtL,KAAKkT,aAAa7M,GACpB,OAAOrG,KAAKkT,aAAa7M,GAG3B,MAAMhE,MAAEA,GAAUrC,KAAK6L,YAAYxF,GAEnC,OADArG,KAAKkT,aAAa7M,GAAahE,EACxBA,CACT,CAEA2J,sBAAAA,GACE,OAAyB,IAArBhM,KAAKgF,YACChF,KAAK6E,SAAW7E,KAAKgF,YAAe,IAEvC,CACT,CASA4E,oBAAAA,CACEvD,EACAM,EACA2J,GACS,IAAA6C,EAET,OAA2B,QAA3BA,EADkBnT,KAAK2R,qBAAqBtL,EAAWM,GACrC2J,UAAS,IAAA6C,EAAAA,EAAInT,KAAKsQ,EACtC,CAMA/I,qBAAAA,CACEJ,EACAiM,GAEA,IAAKpT,KAAKoT,KAAUpT,KAAK2I,SAASyK,GAChC,OAEF,IAAIC,EAAYrT,KAAKiJ,gBACrB,MAAMH,EAAa9I,KAAK+I,iBACtB3I,EAAOJ,KAAKI,KACZ4E,EAAchF,KAAKgM,yBACnBsH,EACW,gBAATF,EAAyB,GAAe,aAATA,EAAsB,EAAI,EAC3D5C,EAAUxQ,KAAKuT,QAAQH,GACzB,IAAK,IAAI5P,EAAI,EAAGC,EAAMzD,KAAKmB,WAAWY,OAAQyB,EAAIC,EAAKD,IAAK,CAC1D,MAAM0F,EAAelJ,KAAKmJ,gBAAgB3F,GAC1C,IAAKxD,KAAKoT,KAAUpT,KAAK2I,SAASyK,EAAM5P,GAAI,CAC1C6P,GAAanK,EACb,QACF,CACA,MAAM/F,EAAOnD,KAAKmB,WAAWqC,GACvBsK,EAAY5E,EAAelJ,KAAK8E,WAChCuE,EAAiBrJ,KAAKsJ,mBAAmB9F,GAC/C,IAAIkG,EAAW,EACXD,EAAW,EACX+J,EAAiBxT,KAAK4J,qBAAqBpG,EAAG,EAAG4P,GACjDK,EAAWzT,KAAK4J,qBAAqBpG,EAAG,EAAG4K,GAC3CsF,EAAe1T,KAAK4J,qBACtBpG,EACA,EACAmQ,GAEEC,EAAoBJ,EACpBK,EAAcJ,EACdK,EAAkBJ,EACtB,MAAMxN,EAAMmN,EAAYvF,GAAa,EAAI9N,KAAKqK,mBAC9C,IAAIwI,EAAO7S,KAAK4L,gBAAgBpI,EAAG,GAC/BoP,EAAK5S,KAAK4J,qBAAqBpG,EAAG,EAAG,UACzC,IAAK,IAAIM,EAAI,EAAGsF,EAAOjG,EAAKpB,OAAQ+B,EAAIsF,EAAMtF,IAAK,CACjD,MAAM+F,EAAU7J,KAAKkE,aAAaV,GAAGM,GACrC8P,EAAoB5T,KAAK4J,qBAAqBpG,EAAGM,EAAGsP,GACpDS,EAAc7T,KAAK4J,qBAAqBpG,EAAGM,EAAGsK,GAC9C0F,EAAkB9T,KAAK4J,qBACrBpG,EACAM,EACA6P,GAEF,MAAMI,EAAc/T,KAAK4L,gBAAgBpI,EAAGM,GACtCkQ,EAAYhU,KAAK4J,qBAAqBpG,EAAGM,EAAG,UAClD,GAAI1D,GAAQwT,GAAqBC,EAAa,CAC5C,MAAMI,EAAiBjU,KAAK6E,SAAWiP,EAAmB,IAC1D3M,EAAI2C,OAEJ3C,EAAI0B,UAAY4K,EAChBtM,EAAI4C,UAAUF,EAAQG,WAAYH,EAAQI,WAC1C9C,EAAI+C,OAAOL,EAAQM,OACnBhD,EAAIiD,UACDP,EAAQ1F,YAAc,EACvBqM,EAAUuD,EAAcC,EAAYV,EAAgBW,EACpDpK,EAAQ1F,YACR8P,GAEF9M,EAAImD,SACN,MAAO,IACJsJ,IAAsBJ,GACrBK,IAAgBJ,GAChBM,IAAgBlB,GAChBiB,IAAoBJ,GACpBM,IAAcpB,IAChBnJ,EAAW,EACX,CACA,MAAMwK,EAAiBjU,KAAK6E,SAAW6O,EAAgB,IACvD,IAAInK,EAAYT,EAAaO,EAAiBK,EACvB,QAAnB1J,KAAKuD,YACPgG,EAAYvJ,KAAKqC,MAAQkH,EAAYE,GAEnC+J,GAAkBC,GAAYC,IAEhCvM,EAAI0B,UAAY4K,EAChBtM,EAAIiD,SACFb,EACArD,EAAMsK,EAAUqC,EAAOD,EAAKU,EAAgBW,EAC5CxK,EACAwK,IAGJvK,EAAWG,EAAQxF,KACnBoF,EAAWI,EAAQxH,MACnBmR,EAAiBI,EACjBF,EAAeI,EACfL,EAAWI,EACXhB,EAAOkB,EACPnB,EAAKoB,CACP,MACEvK,GAAYI,EAAQ1F,WAExB,CACA,IAAIoF,EAAYT,EAAaO,EAAiBK,EACvB,QAAnB1J,KAAKuD,YACPgG,EAAYvJ,KAAKqC,MAAQkH,EAAYE,GAEvCtC,EAAI0B,UAAYgL,EAChB,MAAMI,EAAiBjU,KAAK6E,SAAWiP,EAAmB,IAC1DF,GACEC,GACAC,GACA3M,EAAIiD,SACFb,EACArD,EAAMsK,EAAUqC,EAAOD,EAAKU,EAAgBW,EAC5CxK,EAAWzE,EACXiP,GAEJZ,GAAanK,CACf,CAGAlJ,KAAKuK,cAAcpD,EACrB,CAOAkB,mBAAAA,GAaU,IAZRpD,WACEA,EAAajF,KAAKiF,WAAUC,UAC5BA,EAAYlF,KAAKkF,UAASC,WAC1BA,EAAanF,KAAKmF,WAAUN,SAC5BA,EAAW7E,KAAK6E,UAMjBqP,UAAAnS,OAAA,QAAAuJ,IAAA4I,UAAA,GAAAA,UAAA,GAAG,CAAA,EACJnM,EAAsBmM,UAAAnS,OAAA,EAAAmS,kBAAA5I,EAEtB,MAAM6I,EACJlP,EAAWrC,SAAS,MACpBqC,EAAWrC,SAAS,MACpBqC,EAAWrC,SAAS,MACpBvD,EAAW+U,aAAaxR,SAASqC,EAAWoP,eACxCpP,EACA,IAAIA,KACV,MAAO,CACLC,EACAC,EACA,GAAG4C,EAAe/H,KAAKmL,gBAAkBtG,MACzCsP,GACAzE,KAAK,IACT,CAMA4E,MAAAA,CAAOnN,GACAnH,KAAKuU,UAIRvU,KAAKuL,QACLvL,KAAKuL,OAAOiJ,gBACXxU,KAAKyU,QACLzU,KAAK0U,eAIJ1U,KAAKiT,kBACPjT,KAAKM,iBAEPd,MAAM8U,OAAOnN,IACf,CAUAtF,aAAAA,CAAc8S,GACZ,OAAO9S,EAAc8S,EACvB,CAOA3T,mBAAAA,CAAoBrB,GAClB,MAAMuB,EAAQvB,EAAKiV,MAAM5U,KAAK6U,YAC5B9T,EAAW,IAAIwL,MAAgBrL,EAAMa,QACrC+S,EAAU,CAAC,MACb,IAAIC,EAAoB,GACxB,IAAK,IAAIvR,EAAI,EAAGA,EAAItC,EAAMa,OAAQyB,IAChCzC,EAASyC,GAAKxD,KAAK6B,cAAcX,EAAMsC,IACvCuR,EAAUA,EAAQjT,OAAOf,EAASyC,GAAIsR,GAGxC,OADAC,EAAQC,MACD,CACL1T,gBAAiBP,EACjBG,MAAOA,EACPM,aAAcuT,EACd3T,cAAeL,EAEnB,CAOAkU,QAAAA,GAGsD,IAApDC,EAAwBhB,UAAAnS,OAAA,QAAAuJ,IAAA4I,UAAA,GAAAA,UAAA,GAAG,GAC3B,MAAO,IACF1U,MAAMyV,SAAS,IAAIE,KAAoBD,IAC1ChV,OAAQkV,EAAcpV,KAAKE,OAAQF,KAAKL,SACpCK,KAAKI,KAAO,CAAEA,KAAMJ,KAAKI,KAAK6U,YAAe,CAAA,EAErD,CAEAI,GAAAA,CAAIC,EAAmBX,GACrB,MAAMY,qBAAEA,GAAyBvV,KAAKN,YACtCF,MAAM6V,IAAIC,EAAKX,GACf,IAAIa,GAAY,EACZC,GAAe,EACnB,GAAmB,iBAARH,EACT,IAAK,MAAMI,KAAQJ,EACJ,SAATI,GACF1V,KAAKK,cAEPmV,EAAYA,GAAaD,EAAqB3S,SAAS8S,GACvDD,EAAeA,GAAyB,SAATC,OAGjCF,EAAYD,EAAqB3S,SAAS0S,GAC1CG,EAAuB,SAARH,EAWjB,OATIG,GACFzV,KAAKK,cAEHmV,GAAaxV,KAAKG,cAEpBwV,EAAkB3V,MAClBA,KAAKM,iBACLN,KAAKO,aAEAP,IACT,CAMA6G,UAAAA,GACE,OAAO,CACT,CA+CA,wBAAa+O,CACXC,EACAjW,EACAkW,GAEA,MAAMC,EAAmBC,EACvBH,EACAxW,EAAW4W,gBACXH,IAGII,WACJA,EAAatJ,EAAkDuJ,eAC/DA,EAAiB,GAAEC,GACnBA,EAAK,EAACxD,GACNA,EAAK,EAAC1M,IACNA,EAAM,EAAC7B,KACPA,EAAO,EAACQ,SACRA,EAAWwR,EAAqB/H,YAChCA,EAAc,KACXgI,GACD,IAAK1W,KAAYmW,GASfpW,EAAO,IAAIK,MAPI6V,EAAQU,aAAe,IACzCC,QAAQ,iBAAkB,IAC1BA,QAAQ,OAAQ,KAKgB,CAC/BnS,KAAMA,EAAO+R,EACblQ,IAAKA,EAAM0M,EACX6D,UAAWN,EAAevT,SAAS,aACnC8T,SAAUP,EAAevT,SAAS,YAClC+T,YAAaR,EAAevT,SAAS,gBAErC0L,YAAa,EACbzJ,cACGyR,IAELM,EAAwBjX,EAAKkX,kBAAoBlX,EAAK2C,OAGtDwU,IADGnX,EAAK2C,OAAS3C,EAAK2O,aAAe3O,EAAKmF,WAAanF,EAAK2C,QAC9BsU,EAC9BG,EAAapX,EAAKkX,kBAAoBC,EAExC,IAAIE,EAAO,EAoBX,OAdId,IAAe7Q,IACjB2R,EAAOrX,EAAKsX,iBAAmB,GAE7Bf,IAAe5Q,IACjB0R,EAAOrX,EAAKsX,kBAEdtX,EAAK0V,IAAI,CACPhR,KAAM1E,EAAK0E,KAAO2S,EAClB9Q,IACEvG,EAAKuG,KACJ6Q,EAAapX,EAAKkF,UAAY,IAAOlF,EAAK0K,oBACzC1K,EAAKmF,WACTwJ,gBAEK3O,CACT,CASA,iBAAOuX,CAGLC,GACA,OAAOnX,KAAKoX,YACV,IACKD,EACHjX,OAAQmX,EAAgBF,EAAOjX,QAAU,CAAA,EAAIiX,EAAOxX,OAEtD,CACE2X,WAAY,QAGlB,EAzhEAzX,EARWR,EAAU,uBAamBkW,GAAoB1V,EAbjDR,EAAU,kBAiUI,IAAIkY,KAAoBpC,IAAgBtV,EAjUtDR,EAAU,cAmUAmY,GAAiB3X,EAnU3BR,EAAU,OAqUP,QAAMQ,EArUTR,EAAU,eA85DC,CACpB,QACA,aACA,YACA,UACA,UACA,YACA,WACA,gBACA,eACA,aACA,OACA,QACA,aAKFQ,EAh7DWR,EAAU,kBAo7DIoY,EAAkB3V,OACzC,IACA,IACA,KACA,KACA,cACA,aACA,cACA,YACA,iBACA,kBACA,gBAqGJ4V,EAAYrY,EAAY,CAACsY,IACzBC,EAAcC,SAASxY,GACvBuY,EAAcE,YAAYzY"}