fabric 7.3.1 → 7.4.0

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 (314) hide show
  1. package/CHANGELOG.md +40 -27
  2. package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/defineProperty.mjs +1 -1
  3. package/{dist-extensions/_virtual/_@oxc-project_runtime@0.122.0 → dist/_virtual/_@oxc-project_runtime@0.126.0}/helpers/toPrimitive.mjs +1 -1
  4. package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPropertyKey.mjs +1 -1
  5. package/{dist-extensions/_virtual/_@oxc-project_runtime@0.122.0 → dist/_virtual/_@oxc-project_runtime@0.126.0}/helpers/typeof.mjs +1 -1
  6. package/dist/index.js +88 -66
  7. package/dist/index.js.map +1 -1
  8. package/dist/index.min.js +35 -35
  9. package/dist/index.min.js.map +1 -1
  10. package/dist/index.min.mjs +37 -37
  11. package/dist/index.min.mjs.map +1 -1
  12. package/dist/index.mjs +88 -66
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/index.node.cjs +83 -62
  15. package/dist/index.node.cjs.map +1 -1
  16. package/dist/index.node.mjs +83 -62
  17. package/dist/index.node.mjs.map +1 -1
  18. package/dist/package.min.mjs +1 -1
  19. package/dist/package.mjs +1 -1
  20. package/dist/src/Collection.min.mjs +1 -1
  21. package/dist/src/Collection.mjs +1 -1
  22. package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
  23. package/dist/src/LayoutManager/LayoutManager.mjs +1 -1
  24. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +1 -1
  25. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +1 -1
  26. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.min.mjs +1 -1
  27. package/dist/src/LayoutManager/LayoutStrategies/FitContentLayout.mjs +1 -1
  28. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs +1 -1
  29. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs +1 -1
  30. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +1 -1
  31. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +1 -1
  32. package/dist/src/Observable.min.mjs +1 -1
  33. package/dist/src/Observable.mjs +1 -1
  34. package/dist/src/Pattern/Pattern.min.mjs +1 -1
  35. package/dist/src/Pattern/Pattern.mjs +1 -1
  36. package/dist/src/Shadow.min.mjs +1 -1
  37. package/dist/src/Shadow.mjs +1 -1
  38. package/dist/src/brushes/BaseBrush.min.mjs +1 -1
  39. package/dist/src/brushes/BaseBrush.mjs +1 -1
  40. package/dist/src/brushes/CircleBrush.min.mjs +1 -1
  41. package/dist/src/brushes/CircleBrush.mjs +1 -1
  42. package/dist/src/brushes/PencilBrush.min.mjs +1 -1
  43. package/dist/src/brushes/PencilBrush.mjs +1 -1
  44. package/dist/src/brushes/SprayBrush.min.mjs +1 -1
  45. package/dist/src/brushes/SprayBrush.mjs +1 -1
  46. package/dist/src/cache.min.mjs +1 -1
  47. package/dist/src/cache.mjs +1 -1
  48. package/dist/src/canvas/Canvas.min.mjs +1 -1
  49. package/dist/src/canvas/Canvas.mjs +1 -1
  50. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs +1 -1
  51. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs +1 -1
  52. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs +1 -1
  53. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs +1 -1
  54. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  55. package/dist/src/canvas/SelectableCanvas.mjs +1 -1
  56. package/dist/src/canvas/StaticCanvas.d.ts +1 -1
  57. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  58. package/dist/src/canvas/StaticCanvas.min.mjs +5 -5
  59. package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
  60. package/dist/src/canvas/StaticCanvas.mjs +4 -4
  61. package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
  62. package/dist/src/canvas/TextEditingManager.min.mjs +1 -1
  63. package/dist/src/canvas/TextEditingManager.mjs +1 -1
  64. package/dist/src/color/Color.min.mjs +1 -1
  65. package/dist/src/color/Color.mjs +1 -1
  66. package/dist/src/config.min.mjs +1 -1
  67. package/dist/src/config.mjs +1 -1
  68. package/dist/src/controls/Control.min.mjs +1 -1
  69. package/dist/src/controls/Control.mjs +1 -1
  70. package/dist/src/filters/BaseFilter.min.mjs +1 -1
  71. package/dist/src/filters/BaseFilter.mjs +1 -1
  72. package/dist/src/filters/BlendColor.min.mjs +1 -1
  73. package/dist/src/filters/BlendColor.mjs +1 -1
  74. package/dist/src/filters/BlendImage.min.mjs +1 -1
  75. package/dist/src/filters/BlendImage.mjs +1 -1
  76. package/dist/src/filters/Blur.min.mjs +1 -1
  77. package/dist/src/filters/Blur.mjs +1 -1
  78. package/dist/src/filters/Brightness.min.mjs +1 -1
  79. package/dist/src/filters/Brightness.mjs +1 -1
  80. package/dist/src/filters/Canvas2dFilterBackend.min.mjs +1 -1
  81. package/dist/src/filters/Canvas2dFilterBackend.mjs +1 -1
  82. package/dist/src/filters/ColorMatrix.min.mjs +1 -1
  83. package/dist/src/filters/ColorMatrix.mjs +1 -1
  84. package/dist/src/filters/ColorMatrixFilters.min.mjs +1 -1
  85. package/dist/src/filters/ColorMatrixFilters.mjs +1 -1
  86. package/dist/src/filters/Composed.min.mjs +1 -1
  87. package/dist/src/filters/Composed.mjs +1 -1
  88. package/dist/src/filters/Contrast.min.mjs +1 -1
  89. package/dist/src/filters/Contrast.mjs +1 -1
  90. package/dist/src/filters/Convolute.min.mjs +1 -1
  91. package/dist/src/filters/Convolute.min.mjs.map +1 -1
  92. package/dist/src/filters/Convolute.mjs +1 -1
  93. package/dist/src/filters/Gamma.min.mjs +1 -1
  94. package/dist/src/filters/Gamma.mjs +1 -1
  95. package/dist/src/filters/Grayscale.min.mjs +1 -1
  96. package/dist/src/filters/Grayscale.mjs +1 -1
  97. package/dist/src/filters/HueRotation.min.mjs +1 -1
  98. package/dist/src/filters/HueRotation.mjs +1 -1
  99. package/dist/src/filters/Invert.min.mjs +1 -1
  100. package/dist/src/filters/Invert.mjs +1 -1
  101. package/dist/src/filters/Noise.min.mjs +1 -1
  102. package/dist/src/filters/Noise.mjs +1 -1
  103. package/dist/src/filters/Pixelate.min.mjs +1 -1
  104. package/dist/src/filters/Pixelate.mjs +1 -1
  105. package/dist/src/filters/RemoveColor.min.mjs +1 -1
  106. package/dist/src/filters/RemoveColor.mjs +1 -1
  107. package/dist/src/filters/Resize.min.mjs +2 -2
  108. package/dist/src/filters/Resize.min.mjs.map +1 -1
  109. package/dist/src/filters/Resize.mjs +2 -2
  110. package/dist/src/filters/Resize.mjs.map +1 -1
  111. package/dist/src/filters/Saturation.min.mjs +1 -1
  112. package/dist/src/filters/Saturation.mjs +1 -1
  113. package/dist/src/filters/Vibrance.min.mjs +1 -1
  114. package/dist/src/filters/Vibrance.mjs +1 -1
  115. package/dist/src/filters/WebGLFilterBackend.min.mjs +1 -1
  116. package/dist/src/filters/WebGLFilterBackend.mjs +1 -1
  117. package/dist/src/gradient/Gradient.d.ts.map +1 -1
  118. package/dist/src/gradient/Gradient.min.mjs +4 -4
  119. package/dist/src/gradient/Gradient.min.mjs.map +1 -1
  120. package/dist/src/gradient/Gradient.mjs +6 -2
  121. package/dist/src/gradient/Gradient.mjs.map +1 -1
  122. package/dist/src/gradient/typedefs.d.ts +7 -7
  123. package/dist/src/parser/applyViewboxTransform.d.ts.map +1 -1
  124. package/dist/src/parser/applyViewboxTransform.min.mjs +1 -1
  125. package/dist/src/parser/applyViewboxTransform.min.mjs.map +1 -1
  126. package/dist/src/parser/applyViewboxTransform.mjs +2 -4
  127. package/dist/src/parser/applyViewboxTransform.mjs.map +1 -1
  128. package/dist/src/shapes/ActiveSelection.min.mjs +1 -1
  129. package/dist/src/shapes/ActiveSelection.mjs +1 -1
  130. package/dist/src/shapes/Circle.min.mjs +2 -2
  131. package/dist/src/shapes/Circle.min.mjs.map +1 -1
  132. package/dist/src/shapes/Circle.mjs +1 -1
  133. package/dist/src/shapes/Ellipse.min.mjs +1 -1
  134. package/dist/src/shapes/Ellipse.mjs +1 -1
  135. package/dist/src/shapes/Group.min.mjs +1 -1
  136. package/dist/src/shapes/Group.mjs +1 -1
  137. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +1 -1
  138. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +1 -1
  139. package/dist/src/shapes/IText/IText.d.ts.map +1 -1
  140. package/dist/src/shapes/IText/IText.min.mjs +1 -1
  141. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  142. package/dist/src/shapes/IText/IText.mjs +3 -3
  143. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  144. package/dist/src/shapes/IText/ITextBehavior.min.mjs +1 -1
  145. package/dist/src/shapes/IText/ITextBehavior.mjs +1 -1
  146. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs +1 -1
  147. package/dist/src/shapes/IText/ITextClickBehavior.mjs +1 -1
  148. package/dist/src/shapes/Image.min.mjs +1 -1
  149. package/dist/src/shapes/Image.mjs +1 -1
  150. package/dist/src/shapes/Line.min.mjs +1 -1
  151. package/dist/src/shapes/Line.mjs +1 -1
  152. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  153. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +2 -2
  154. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
  155. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +11 -26
  156. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
  157. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  158. package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
  159. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  160. package/dist/src/shapes/Object/InteractiveObject.mjs +7 -6
  161. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  162. package/dist/src/shapes/Object/Object.min.mjs +1 -1
  163. package/dist/src/shapes/Object/Object.mjs +1 -1
  164. package/dist/src/shapes/Object/ObjectGeometry.d.ts.map +1 -1
  165. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +1 -1
  166. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
  167. package/dist/src/shapes/Object/ObjectGeometry.mjs +6 -2
  168. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
  169. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts +1 -1
  170. package/dist/src/shapes/Path.min.mjs +1 -1
  171. package/dist/src/shapes/Path.mjs +1 -1
  172. package/dist/src/shapes/Polygon.min.mjs +1 -1
  173. package/dist/src/shapes/Polygon.mjs +1 -1
  174. package/dist/src/shapes/Polyline.min.mjs +1 -1
  175. package/dist/src/shapes/Polyline.mjs +1 -1
  176. package/dist/src/shapes/Rect.min.mjs +1 -1
  177. package/dist/src/shapes/Rect.mjs +1 -1
  178. package/dist/src/shapes/Text/StyledText.min.mjs +1 -1
  179. package/dist/src/shapes/Text/StyledText.mjs +1 -1
  180. package/dist/src/shapes/Text/Text.d.ts +4 -4
  181. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  182. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  183. package/dist/src/shapes/Text/Text.mjs +3 -3
  184. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  185. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
  186. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +2 -2
  187. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  188. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +14 -7
  189. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  190. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  191. package/dist/src/shapes/Textbox.min.mjs +2 -2
  192. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  193. package/dist/src/shapes/Textbox.mjs +2 -3
  194. package/dist/src/shapes/Textbox.mjs.map +1 -1
  195. package/dist/src/shapes/Triangle.min.mjs +1 -1
  196. package/dist/src/shapes/Triangle.mjs +1 -1
  197. package/dist/src/util/animation/AnimationBase.min.mjs +1 -1
  198. package/dist/src/util/animation/AnimationBase.mjs +1 -1
  199. package/dist/src/util/animation/easing.min.mjs +1 -1
  200. package/dist/src/util/animation/easing.min.mjs.map +1 -1
  201. package/dist/src/util/animation/easing.mjs +1 -1
  202. package/dist/src/util/animation/easing.mjs.map +1 -1
  203. package/dist/src/util/internals/applyCanvasTransform.d.ts +1 -1
  204. package/dist/src/util/internals/applyCanvasTransform.min.mjs.map +1 -1
  205. package/dist/src/util/internals/applyCanvasTransform.mjs +1 -1
  206. package/dist/src/util/internals/applyCanvasTransform.mjs.map +1 -1
  207. package/dist/src/util/internals/svgExportCheck.d.ts +4 -0
  208. package/dist/src/util/internals/svgExportCheck.d.ts.map +1 -0
  209. package/dist/src/util/internals/svgExportCheck.min.mjs +2 -0
  210. package/dist/src/util/internals/svgExportCheck.min.mjs.map +1 -0
  211. package/dist/src/util/internals/svgExportCheck.mjs +12 -0
  212. package/dist/src/util/internals/svgExportCheck.mjs.map +1 -0
  213. package/dist/src/util/misc/matrix.d.ts +14 -0
  214. package/dist/src/util/misc/matrix.d.ts.map +1 -1
  215. package/dist/src/util/misc/matrix.min.mjs +1 -1
  216. package/dist/src/util/misc/matrix.min.mjs.map +1 -1
  217. package/dist/src/util/misc/matrix.mjs +15 -1
  218. package/dist/src/util/misc/matrix.mjs.map +1 -1
  219. package/dist/src/util/misc/mergeClipPaths.d.ts +1 -1
  220. package/dist/src/util/misc/mergeClipPaths.min.mjs.map +1 -1
  221. package/dist/src/util/misc/mergeClipPaths.mjs +1 -1
  222. package/dist/src/util/misc/mergeClipPaths.mjs.map +1 -1
  223. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  224. package/dist/src/util/misc/objectEnlive.mjs +1 -1
  225. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  226. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs +1 -1
  227. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +1 -1
  228. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs +1 -1
  229. package/dist/src/util/misc/svgParsing.d.ts +2 -2
  230. package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
  231. package/dist/src/util/misc/svgParsing.min.mjs +1 -1
  232. package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
  233. package/dist/src/util/misc/svgParsing.mjs +8 -3
  234. package/dist/src/util/misc/svgParsing.mjs.map +1 -1
  235. package/dist/src/util/path/index.d.ts.map +1 -1
  236. package/dist/src/util/path/index.min.mjs +1 -1
  237. package/dist/src/util/path/index.min.mjs.map +1 -1
  238. package/dist/src/util/path/index.mjs +2 -1
  239. package/dist/src/util/path/index.mjs.map +1 -1
  240. package/dist/src/util/path/regex.min.mjs.map +1 -1
  241. package/dist/src/util/path/regex.mjs +1 -1
  242. package/dist/src/util/path/regex.mjs.map +1 -1
  243. package/dist-extensions/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/defineProperty.mjs +1 -1
  244. package/{dist/_virtual/_@oxc-project_runtime@0.122.0 → dist-extensions/_virtual/_@oxc-project_runtime@0.126.0}/helpers/toPrimitive.mjs +1 -1
  245. package/dist-extensions/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPropertyKey.mjs +1 -1
  246. package/{dist/_virtual/_@oxc-project_runtime@0.122.0 → dist-extensions/_virtual/_@oxc-project_runtime@0.126.0}/helpers/typeof.mjs +1 -1
  247. package/dist-extensions/aligning_guidelines/index.mjs +1 -1
  248. package/dist-extensions/cropping_controls/croppingHandlers.mjs +1 -7
  249. package/dist-extensions/cropping_controls/croppingHandlers.mjs.map +1 -1
  250. package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts.map +1 -1
  251. package/dist-extensions/fabric-extensions.min.js +1 -1
  252. package/dist-extensions/fabric-extensions.min.js.map +1 -1
  253. package/dist-extensions/src/canvas/StaticCanvas.d.ts +1 -1
  254. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -1
  255. package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -1
  256. package/dist-extensions/src/gradient/typedefs.d.ts +7 -7
  257. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +1 -1
  258. package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -1
  259. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  260. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  261. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +1 -1
  262. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +1 -1
  263. package/dist-extensions/src/shapes/Text/Text.d.ts +4 -4
  264. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
  265. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  266. package/dist-extensions/src/util/internals/applyCanvasTransform.d.ts +1 -1
  267. package/dist-extensions/src/util/internals/svgExportCheck.d.ts +4 -0
  268. package/dist-extensions/src/util/internals/svgExportCheck.d.ts.map +1 -0
  269. package/dist-extensions/src/util/misc/matrix.d.ts +14 -0
  270. package/dist-extensions/src/util/misc/matrix.d.ts.map +1 -1
  271. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +1 -1
  272. package/dist-extensions/src/util/misc/svgParsing.d.ts +2 -2
  273. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -1
  274. package/dist-extensions/src/util/path/index.d.ts.map +1 -1
  275. package/extensions/cropping_controls/croppingHandlers.ts +13 -19
  276. package/package.json +10 -10
  277. package/src/LayoutManager/README.md +3 -3
  278. package/src/canvas/StaticCanvas.spec.ts +19 -0
  279. package/src/canvas/StaticCanvas.ts +7 -3
  280. package/src/filters/Resize.ts +1 -1
  281. package/src/gradient/Gradient.spec.ts +60 -1
  282. package/src/gradient/Gradient.ts +9 -2
  283. package/src/gradient/typedefs.ts +7 -7
  284. package/src/parser/applyViewboxTransform.ts +2 -4
  285. package/src/shapes/IText/IText.ts +1 -2
  286. package/src/shapes/IText/ITextBehavior.test.ts +6 -6
  287. package/src/shapes/Object/FabricObject.spec.ts +3 -2
  288. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +47 -37
  289. package/src/shapes/Object/InteractiveObject.ts +13 -3
  290. package/src/shapes/Object/Object-interactivity.spec.ts +126 -7
  291. package/src/shapes/Object/ObjectGeometry.spec.ts +10 -1
  292. package/src/shapes/Object/ObjectGeometry.ts +10 -3
  293. package/src/shapes/Object/objectSvgExport.spec.ts +27 -0
  294. package/src/shapes/Object/types/FabricObjectProps.ts +1 -1
  295. package/src/shapes/Text/Text.spec.ts +25 -0
  296. package/src/shapes/Text/Text.ts +5 -5
  297. package/src/shapes/Text/TextSVGExportMixin.ts +25 -11
  298. package/src/shapes/Textbox.ts +1 -2
  299. package/src/util/animation/animations.spec.ts +1 -1
  300. package/src/util/animation/easing.ts +1 -1
  301. package/src/util/internals/applyCanvasTransform.ts +1 -1
  302. package/src/util/internals/svgExportCheck.ts +20 -0
  303. package/src/util/misc/matrix.spec.ts +52 -0
  304. package/src/util/misc/matrix.ts +16 -0
  305. package/src/util/misc/mergeClipPaths.ts +1 -1
  306. package/src/util/misc/objectEnlive.ts +1 -1
  307. package/src/util/misc/svgParsing.ts +22 -10
  308. package/src/util/path/index.ts +3 -2
  309. package/src/util/path/regex.ts +1 -1
  310. package/src/util/typeAssertions.spec.ts +1 -1
  311. /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/defineProperty.min.mjs +0 -0
  312. /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPrimitive.min.mjs +0 -0
  313. /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/toPropertyKey.min.mjs +0 -0
  314. /package/dist/_virtual/{_@oxc-project_runtime@0.122.0 → _@oxc-project_runtime@0.126.0}/helpers/typeof.min.mjs +0 -0
@@ -209,7 +209,7 @@ export class Textbox<
209
209
  return true;
210
210
  }
211
211
  let offset = 0,
212
- nextLineIndex = lineIndex + 1,
212
+ nextLineIndex: number,
213
213
  nextOffset: number,
214
214
  shouldLimit = false;
215
215
  const map = this._styleMap[lineIndex],
@@ -450,7 +450,6 @@ export class Textbox<
450
450
  );
451
451
  // layout words
452
452
  const data = wordsData[lineIndex];
453
- offset = 0;
454
453
  let i;
455
454
  for (i = 0; i < data.length; i++) {
456
455
  const { word, width: wordWidth } = data[i];
@@ -397,7 +397,7 @@ describe('animate', () => {
397
397
  expect(run).toBeGreaterThanOrEqual(3);
398
398
  vi.advanceTimersByTime(duration + 20);
399
399
  });
400
- it('abort function is calle with object as context', async () => {
400
+ it('abort function is called with object as context', async () => {
401
401
  const object = new FabricObject({ left: 123, top: 124 });
402
402
  let context: any;
403
403
  object.animate(
@@ -149,7 +149,7 @@ export const easeInOutExpo: TEasingFunction = (t, b, c, d) => {
149
149
  if (t < 1) {
150
150
  return (c / 2) * 2 ** (10 * (t - 1)) + b;
151
151
  }
152
- return (c / 2) * -(2 ** (-10 * --t) + 2) + b;
152
+ return (c / 2) * -(2 ** (-10 * (t - 1)) + 2) + b;
153
153
  };
154
154
 
155
155
  /**
@@ -4,7 +4,7 @@ import type { StaticCanvas } from '../../canvas/StaticCanvas';
4
4
  * Set the transform of the passed context to the same of a specific Canvas or StaticCanvas.
5
5
  * setTransform is used since this utility will RESET the ctx transform to the basic value
6
6
  * of retina scaling and viewport transform
7
- * It is not meant to be added to other transforms, it is used internally to preapre canvases to draw
7
+ * It is not meant to be added to other transforms, it is used internally to prepare canvases to draw
8
8
  * @param ctx
9
9
  * @param canvas
10
10
  */
@@ -0,0 +1,20 @@
1
+ const unsafeSvgStyleValueRegex = new RegExp(
2
+ String.raw`[\0-\x1F\x7F;<>\\]|\/\*|\*\/|url\s*\(|expression\s*\(|(?:java|vb)script\s*:|data\s*:|@import\b`,
3
+ 'iu',
4
+ );
5
+
6
+ export const isSafeSvgStyleValue = (value: unknown): value is string =>
7
+ typeof value === 'string' &&
8
+ value.trim().length > 0 &&
9
+ !unsafeSvgStyleValueRegex.test(value);
10
+
11
+ export const getSafeSvgStyleNumber = (
12
+ value: unknown,
13
+ fallback = '',
14
+ ): string => {
15
+ const numeric = Number(value);
16
+ return Number.isFinite(numeric) ? `${numeric}` : fallback;
17
+ };
18
+
19
+ export const getSafeSvgStyleToken = (value: unknown, fallback = ''): string =>
20
+ typeof value === 'string' && isSafeSvgStyleValue(value) ? value : fallback;
@@ -1,6 +1,8 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import {
3
3
  calcDimensionsMatrix,
4
+ calcPlaneZoom,
5
+ calcPlaneScaleY,
4
6
  composeMatrix,
5
7
  createRotateMatrix,
6
8
  invertTransform,
@@ -113,6 +115,56 @@ describe('matrix', () => {
113
115
  });
114
116
  });
115
117
 
118
+ describe('calcPlaneZoom', () => {
119
+ it('returns 1 for the identity matrix', () => {
120
+ expect(calcPlaneZoom(iMatrix)).toBe(1);
121
+ });
122
+
123
+ it('returns the scale factor of a pure scale matrix', () => {
124
+ expect(calcPlaneZoom([2, 0, 0, 2, 0, 0])).toBe(2);
125
+ });
126
+
127
+ it('returns the scale factor of a rotated matrix regardless of angle', () => {
128
+ const cos = Math.SQRT1_2,
129
+ sin = Math.SQRT1_2;
130
+ expect(calcPlaneZoom([cos, sin, -sin, cos, 0, 0])).toBeCloseTo(1);
131
+ expect(
132
+ calcPlaneZoom([2 * cos, 2 * sin, -2 * sin, 2 * cos, 0, 0]),
133
+ ).toBeCloseTo(2);
134
+ });
135
+
136
+ it('is independent of translation', () => {
137
+ expect(calcPlaneZoom([3, 0, 0, 3, 100, 200])).toBe(3);
138
+ });
139
+ });
140
+
141
+ describe('calcPlaneScaleY', () => {
142
+ it('returns 1 for the identity matrix', () => {
143
+ expect(calcPlaneScaleY(iMatrix)).toBe(1);
144
+ });
145
+
146
+ it('returns the scale factor of a pure uniform scale matrix', () => {
147
+ expect(calcPlaneScaleY([2, 0, 0, 2, 0, 0])).toBe(2);
148
+ });
149
+
150
+ it('returns the Y scale factor of a rotated matrix regardless of angle', () => {
151
+ const cos = Math.SQRT1_2,
152
+ sin = Math.SQRT1_2;
153
+ expect(calcPlaneScaleY([cos, sin, -sin, cos, 0, 0])).toBeCloseTo(1);
154
+ expect(
155
+ calcPlaneScaleY([2 * cos, 2 * sin, -2 * sin, 2 * cos, 0, 0]),
156
+ ).toBeCloseTo(2);
157
+ });
158
+
159
+ it('returns the Y-axis scale independently for a non-uniform scale matrix', () => {
160
+ expect(calcPlaneScaleY([2, 0, 0, 3, 0, 0])).toBe(3);
161
+ });
162
+
163
+ it('is independent of translation', () => {
164
+ expect(calcPlaneScaleY([3, 0, 0, 5, 100, 200])).toBe(5);
165
+ });
166
+ });
167
+
116
168
  describe('transformPoint', () => {
117
169
  it('transforms a point using a transformation matrix', () => {
118
170
  const point = new Point(2, 2);
@@ -108,6 +108,22 @@ export const multiplyTransformMatrixArray = (
108
108
  export const calcPlaneRotation = ([a, b]: TMat2D) =>
109
109
  Math.atan2(b, a) as TRadian;
110
110
 
111
+ /**
112
+ * Returns the uniform scale (zoom) magnitude of a 2D affine matrix,
113
+ * computed as the length of the image of the unit X basis vector.
114
+ */
115
+ export const calcPlaneZoom = ([a, b]: TMat2D) => Math.sqrt(a * a + b * b);
116
+
117
+ /**
118
+ * Returns the Y-axis scale magnitude of a 2D affine matrix,
119
+ * computed as the length of the image of the unit Y basis vector.
120
+ * We do not support non uniform zooming on the viewport but to make things work
121
+ * we need to have a function that can return the value on Y axis.
122
+ * Bug reports and features will be planned with zoom being just a number
123
+ * that is the same for both axis
124
+ */
125
+ export const calcPlaneScaleY = ([, , c, d]: TMat2D) => Math.sqrt(c * c + d * d);
126
+
111
127
  /**
112
128
  * Decomposes standard 2x3 matrix into transform components
113
129
  * @param {TMat2D} a transformMatrix
@@ -5,7 +5,7 @@ import { Group } from '../../shapes/Group';
5
5
  * Merges 2 clip paths into one visually equal clip path
6
6
  *
7
7
  * **IMPORTANT**:\
8
- * Does **NOT** clone the arguments, clone them proir if necessary.
8
+ * Does **NOT** clone the arguments, clone them prior if necessary.
9
9
  *
10
10
  * Creates a wrapper (group) that contains one clip path and is clipped by the other so content is kept where both overlap.
11
11
  * Use this method if both the clip paths may have nested clip paths of their own, so assigning one to the other's clip path property is not possible.
@@ -171,7 +171,7 @@ export const enlivenObjectEnlivables = <
171
171
  /**
172
172
  * clipPath or shadow or gradient or text on a path or a pattern,
173
173
  * or the backgroundImage or overlayImage of canvas
174
- * If we have a type and there is a classe registered for it, we enlive it.
174
+ * If we have a type and there is a class registered for it, we enlive it.
175
175
  * If there is no class registered for it we return the value as is
176
176
  * */
177
177
  if (value.type && classRegistry.has(value.type)) {
@@ -1,7 +1,13 @@
1
1
  import { Color } from '../../color/Color';
2
2
  import { config } from '../../config';
3
3
  import { DEFAULT_SVG_FONT_SIZE, FILL, NONE } from '../../constants';
4
- import type { TBBox, SVGElementName, SupportedSVGUnit } from '../../typedefs';
4
+ import type {
5
+ TBBox,
6
+ SVGElementName,
7
+ SupportedSVGUnit,
8
+ TFiller,
9
+ } from '../../typedefs';
10
+ import { isSafeSvgStyleValue } from '../internals/svgExportCheck';
5
11
  import { escapeXml } from '../lang_string';
6
12
  import { toFixed } from './toFixed';
7
13
 
@@ -126,24 +132,30 @@ export const parsePreserveAspectRatioAttribute = (
126
132
  */
127
133
  export const colorPropToSVG = (
128
134
  prop: string,
129
- value?: any,
135
+ value?: string | TFiller | null,
130
136
  inlineStyle = true,
131
137
  ) => {
132
138
  let colorValue;
133
139
  let opacityValue;
134
140
  if (!value) {
135
141
  colorValue = 'none';
136
- } else if (value.toLive) {
137
- colorValue = `url(#SVGID_${escapeXml(value.id)})`;
142
+ } else if ((value as TFiller).toLive) {
143
+ colorValue = `url(#SVGID_${escapeXml((value as TFiller).id)})`;
138
144
  } else {
139
- const color = new Color(value),
140
- opacity = color.getAlpha();
141
-
142
- colorValue = color.toRgb();
143
- if (opacity !== 1) {
144
- opacityValue = opacity.toString();
145
+ const rawValue = String(value);
146
+ if (!isSafeSvgStyleValue(rawValue)) {
147
+ colorValue = new Color('black').toRgb();
148
+ } else {
149
+ const color = new Color(rawValue),
150
+ opacity = color.getAlpha();
151
+
152
+ colorValue = color.toRgb();
153
+ if (opacity !== 1) {
154
+ opacityValue = opacity.toString();
155
+ }
145
156
  }
146
157
  }
158
+
147
159
  if (inlineStyle) {
148
160
  return `${prop}: ${colorValue}; ${
149
161
  opacityValue ? `${prop}-opacity: ${opacityValue}; ` : ''
@@ -355,7 +355,7 @@ export const makePathSimpler = (path: TComplexPathData): TSimplePathData => {
355
355
  let x = 0,
356
356
  y = 0;
357
357
  // x1 and y1 represent the last point of the subpath. the subpath is started with
358
- // m or M command. When a z or Z command is drawn, x and y need to be resetted to
358
+ // m or M command. When a z or Z command is drawn, x and y need to be reset to
359
359
  // the last x1 and y1.
360
360
  let x1 = 0,
361
361
  y1 = 0;
@@ -877,7 +877,8 @@ export const parsePath = (pathString: string): TComplexPathData => {
877
877
  // 00, 01, 10 or 11, making them identical to a plain number for the regex reMyNum
878
878
  // reset the regexp
879
879
  regExpArcCommandPoints.lastIndex = 0;
880
- for (let out = null; (out = regExpArcCommandPoints.exec(matchStr)); ) {
880
+ let out: RegExpExecArray | null;
881
+ while ((out = regExpArcCommandPoints.exec(matchStr))) {
881
882
  paramArr.push(...out.slice(1));
882
883
  }
883
884
  } else {
@@ -5,7 +5,7 @@ const commaWsp = `\\s*,?\\s*`;
5
5
  /**
6
6
  * p for param
7
7
  * using "bad naming" here because it makes the regex much easier to read
8
- * p is a number that is preceded by an arbitary number of spaces, maybe 0,
8
+ * p is a number that is preceded by an arbitrary number of spaces, maybe 0,
9
9
  * a comma or not, and then possibly more spaces or not.
10
10
  */
11
11
  const p = `${commaWsp}(${reNum})`;
@@ -41,7 +41,7 @@ describe('typeAssertions', () => {
41
41
  const newText = new NewText('hello world');
42
42
  expect(isTextObject(newText)).toBe(true);
43
43
  });
44
- test('can safeguard agains other FabricObjects', () => {
44
+ test('can safeguard against other FabricObjects', () => {
45
45
  const path = new Path('M 0 0 L 1 1');
46
46
  expect(isTextObject(path)).toBe(false);
47
47
  });