fabric 6.2.0 → 6.3.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 (1161) hide show
  1. package/.prettierignore +1 -0
  2. package/CHANGELOG.md +12 -4
  3. package/README.md +1 -1
  4. package/dist/extensions/aligning_guidelines/constant.d.ts +3 -0
  5. package/dist/extensions/aligning_guidelines/constant.d.ts.map +1 -0
  6. package/dist/extensions/aligning_guidelines/index.d.ts +5 -0
  7. package/dist/extensions/aligning_guidelines/index.d.ts.map +1 -0
  8. package/dist/extensions/aligning_guidelines/typedefs.d.ts +33 -0
  9. package/dist/extensions/aligning_guidelines/typedefs.d.ts.map +1 -0
  10. package/dist/extensions/aligning_guidelines/util/basic.d.ts +4 -0
  11. package/dist/extensions/aligning_guidelines/util/basic.d.ts.map +1 -0
  12. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts +13 -0
  13. package/dist/extensions/aligning_guidelines/util/collect-line.d.ts.map +1 -0
  14. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts +20 -0
  15. package/dist/extensions/aligning_guidelines/util/collect-point.d.ts.map +1 -0
  16. package/dist/extensions/aligning_guidelines/util/draw.d.ts +6 -0
  17. package/dist/extensions/aligning_guidelines/util/draw.d.ts.map +1 -0
  18. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +3 -0
  19. package/dist/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +1 -0
  20. package/dist/extensions/index.d.ts +2 -0
  21. package/dist/extensions/index.d.ts.map +1 -0
  22. package/dist/index.js +140 -108
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.min.js +1 -1
  25. package/dist/index.min.js.map +1 -1
  26. package/dist/index.min.mjs +1 -1
  27. package/dist/index.min.mjs.map +1 -1
  28. package/dist/index.mjs +140 -108
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/index.node.cjs +140 -108
  31. package/dist/index.node.cjs.map +1 -1
  32. package/dist/index.node.mjs +140 -108
  33. package/dist/index.node.mjs.map +1 -1
  34. package/dist/package.json.min.mjs +1 -1
  35. package/dist/package.json.mjs +1 -1
  36. package/dist/src/ClassRegistry.min.mjs.map +1 -1
  37. package/dist/src/ClassRegistry.mjs.map +1 -1
  38. package/dist/src/Collection.min.mjs.map +1 -1
  39. package/dist/src/Collection.mjs.map +1 -1
  40. package/dist/src/Intersection.min.mjs.map +1 -1
  41. package/dist/src/Intersection.mjs.map +1 -1
  42. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.min.mjs.map +1 -1
  43. package/dist/src/LayoutManager/ActiveSelectionLayoutManager.mjs.map +1 -1
  44. package/dist/src/LayoutManager/LayoutManager.d.ts +1 -1
  45. package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
  46. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
  47. package/dist/src/LayoutManager/LayoutManager.mjs +1 -1
  48. package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
  49. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +1 -1
  50. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +1 -1
  51. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.min.mjs.map +1 -1
  52. package/dist/src/LayoutManager/LayoutStrategies/FixedLayout.mjs.map +1 -1
  53. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +1 -1
  54. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +1 -1
  55. package/dist/src/LayoutManager/LayoutStrategies/utils.min.mjs.map +1 -1
  56. package/dist/src/LayoutManager/LayoutStrategies/utils.mjs.map +1 -1
  57. package/dist/src/LayoutManager/types.d.ts.map +1 -1
  58. package/dist/src/Observable.min.mjs.map +1 -1
  59. package/dist/src/Observable.mjs.map +1 -1
  60. package/dist/src/Pattern/Pattern.d.ts +2 -2
  61. package/dist/src/Pattern/Pattern.d.ts.map +1 -1
  62. package/dist/src/Pattern/Pattern.min.mjs +1 -1
  63. package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
  64. package/dist/src/Pattern/Pattern.mjs +14 -12
  65. package/dist/src/Pattern/Pattern.mjs.map +1 -1
  66. package/dist/src/Point.min.mjs.map +1 -1
  67. package/dist/src/Point.mjs.map +1 -1
  68. package/dist/src/Shadow.min.mjs.map +1 -1
  69. package/dist/src/Shadow.mjs.map +1 -1
  70. package/dist/src/brushes/CircleBrush.min.mjs.map +1 -1
  71. package/dist/src/brushes/CircleBrush.mjs.map +1 -1
  72. package/dist/src/brushes/PatternBrush.min.mjs.map +1 -1
  73. package/dist/src/brushes/PatternBrush.mjs.map +1 -1
  74. package/dist/src/brushes/PencilBrush.min.mjs.map +1 -1
  75. package/dist/src/brushes/PencilBrush.mjs.map +1 -1
  76. package/dist/src/brushes/SprayBrush.min.mjs.map +1 -1
  77. package/dist/src/brushes/SprayBrush.mjs.map +1 -1
  78. package/dist/src/canvas/Canvas.d.ts +1 -1
  79. package/dist/src/canvas/Canvas.d.ts.map +1 -1
  80. package/dist/src/canvas/Canvas.min.mjs.map +1 -1
  81. package/dist/src/canvas/Canvas.mjs +2 -1
  82. package/dist/src/canvas/Canvas.mjs.map +1 -1
  83. package/dist/src/canvas/DOMManagers/CanvasDOMManager.min.mjs.map +1 -1
  84. package/dist/src/canvas/DOMManagers/CanvasDOMManager.mjs.map +1 -1
  85. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.min.mjs.map +1 -1
  86. package/dist/src/canvas/DOMManagers/StaticCanvasDOMManager.mjs.map +1 -1
  87. package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
  88. package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
  89. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  90. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  91. package/dist/src/canvas/StaticCanvas.d.ts +1 -1
  92. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  93. package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
  94. package/dist/src/canvas/StaticCanvas.mjs +1 -1
  95. package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
  96. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
  97. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +1 -1
  98. package/dist/src/canvas/StaticCanvasOptions.mjs.map +1 -1
  99. package/dist/src/canvas/TextEditingManager.min.mjs.map +1 -1
  100. package/dist/src/canvas/TextEditingManager.mjs.map +1 -1
  101. package/dist/src/color/Color.d.ts.map +1 -1
  102. package/dist/src/color/Color.min.mjs.map +1 -1
  103. package/dist/src/color/Color.mjs +1 -0
  104. package/dist/src/color/Color.mjs.map +1 -1
  105. package/dist/src/color/util.min.mjs.map +1 -1
  106. package/dist/src/color/util.mjs.map +1 -1
  107. package/dist/src/config.min.mjs.map +1 -1
  108. package/dist/src/config.mjs.map +1 -1
  109. package/dist/src/controls/Control.min.mjs.map +1 -1
  110. package/dist/src/controls/Control.mjs.map +1 -1
  111. package/dist/src/controls/changeWidth.min.mjs.map +1 -1
  112. package/dist/src/controls/changeWidth.mjs.map +1 -1
  113. package/dist/src/controls/controlRendering.min.mjs.map +1 -1
  114. package/dist/src/controls/controlRendering.mjs.map +1 -1
  115. package/dist/src/controls/drag.min.mjs.map +1 -1
  116. package/dist/src/controls/drag.mjs.map +1 -1
  117. package/dist/src/controls/fireEvent.min.mjs.map +1 -1
  118. package/dist/src/controls/fireEvent.mjs.map +1 -1
  119. package/dist/src/controls/pathControl.min.mjs.map +1 -1
  120. package/dist/src/controls/pathControl.mjs.map +1 -1
  121. package/dist/src/controls/polyControl.min.mjs.map +1 -1
  122. package/dist/src/controls/polyControl.mjs.map +1 -1
  123. package/dist/src/controls/rotate.min.mjs.map +1 -1
  124. package/dist/src/controls/rotate.mjs.map +1 -1
  125. package/dist/src/controls/scale.min.mjs.map +1 -1
  126. package/dist/src/controls/scale.mjs.map +1 -1
  127. package/dist/src/controls/scaleSkew.min.mjs.map +1 -1
  128. package/dist/src/controls/scaleSkew.mjs.map +1 -1
  129. package/dist/src/controls/skew.min.mjs.map +1 -1
  130. package/dist/src/controls/skew.mjs.map +1 -1
  131. package/dist/src/controls/util.min.mjs.map +1 -1
  132. package/dist/src/controls/util.mjs.map +1 -1
  133. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
  134. package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
  135. package/dist/src/controls/wrapWithFixedAnchor.min.mjs.map +1 -1
  136. package/dist/src/controls/wrapWithFixedAnchor.mjs.map +1 -1
  137. package/dist/src/filters/BaseFilter.d.ts +5 -5
  138. package/dist/src/filters/BaseFilter.d.ts.map +1 -1
  139. package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
  140. package/dist/src/filters/BaseFilter.mjs +5 -5
  141. package/dist/src/filters/BaseFilter.mjs.map +1 -1
  142. package/dist/src/filters/BlendColor.min.mjs.map +1 -1
  143. package/dist/src/filters/BlendColor.mjs.map +1 -1
  144. package/dist/src/filters/BlendImage.min.mjs.map +1 -1
  145. package/dist/src/filters/BlendImage.mjs.map +1 -1
  146. package/dist/src/filters/Blur.min.mjs.map +1 -1
  147. package/dist/src/filters/Blur.mjs.map +1 -1
  148. package/dist/src/filters/Brightness.min.mjs.map +1 -1
  149. package/dist/src/filters/Brightness.mjs.map +1 -1
  150. package/dist/src/filters/Canvas2dFilterBackend.min.mjs.map +1 -1
  151. package/dist/src/filters/Canvas2dFilterBackend.mjs.map +1 -1
  152. package/dist/src/filters/ColorMatrix.min.mjs.map +1 -1
  153. package/dist/src/filters/ColorMatrix.mjs.map +1 -1
  154. package/dist/src/filters/ColorMatrixFilters.min.mjs.map +1 -1
  155. package/dist/src/filters/ColorMatrixFilters.mjs.map +1 -1
  156. package/dist/src/filters/Composed.min.mjs.map +1 -1
  157. package/dist/src/filters/Composed.mjs.map +1 -1
  158. package/dist/src/filters/Contrast.min.mjs.map +1 -1
  159. package/dist/src/filters/Contrast.mjs.map +1 -1
  160. package/dist/src/filters/Convolute.min.mjs.map +1 -1
  161. package/dist/src/filters/Convolute.mjs.map +1 -1
  162. package/dist/src/filters/GLProbes/WebGLProbe.min.mjs.map +1 -1
  163. package/dist/src/filters/GLProbes/WebGLProbe.mjs.map +1 -1
  164. package/dist/src/filters/Gamma.min.mjs.map +1 -1
  165. package/dist/src/filters/Gamma.mjs.map +1 -1
  166. package/dist/src/filters/Grayscale.min.mjs.map +1 -1
  167. package/dist/src/filters/Grayscale.mjs.map +1 -1
  168. package/dist/src/filters/Invert.min.mjs.map +1 -1
  169. package/dist/src/filters/Invert.mjs.map +1 -1
  170. package/dist/src/filters/Noise.min.mjs.map +1 -1
  171. package/dist/src/filters/Noise.mjs.map +1 -1
  172. package/dist/src/filters/Pixelate.min.mjs.map +1 -1
  173. package/dist/src/filters/Pixelate.mjs.map +1 -1
  174. package/dist/src/filters/RemoveColor.min.mjs.map +1 -1
  175. package/dist/src/filters/RemoveColor.mjs.map +1 -1
  176. package/dist/src/filters/Resize.min.mjs.map +1 -1
  177. package/dist/src/filters/Resize.mjs.map +1 -1
  178. package/dist/src/filters/Saturation.min.mjs.map +1 -1
  179. package/dist/src/filters/Saturation.mjs.map +1 -1
  180. package/dist/src/filters/Vibrance.min.mjs.map +1 -1
  181. package/dist/src/filters/Vibrance.mjs.map +1 -1
  182. package/dist/src/filters/WebGLFilterBackend.min.mjs.map +1 -1
  183. package/dist/src/filters/WebGLFilterBackend.mjs.map +1 -1
  184. package/dist/src/filters/typedefs.d.ts +0 -1
  185. package/dist/src/filters/typedefs.d.ts.map +1 -1
  186. package/dist/src/filters/utils.min.mjs.map +1 -1
  187. package/dist/src/filters/utils.mjs.map +1 -1
  188. package/dist/src/gradient/Gradient.d.ts +7 -3
  189. package/dist/src/gradient/Gradient.d.ts.map +1 -1
  190. package/dist/src/gradient/Gradient.min.mjs +1 -1
  191. package/dist/src/gradient/Gradient.min.mjs.map +1 -1
  192. package/dist/src/gradient/Gradient.mjs +36 -24
  193. package/dist/src/gradient/Gradient.mjs.map +1 -1
  194. package/dist/src/gradient/parser/parseColorStops.min.mjs.map +1 -1
  195. package/dist/src/gradient/parser/parseColorStops.mjs.map +1 -1
  196. package/dist/src/gradient/parser/parseCoords.d.ts.map +1 -1
  197. package/dist/src/gradient/parser/parseCoords.min.mjs.map +1 -1
  198. package/dist/src/gradient/parser/parseCoords.mjs.map +1 -1
  199. package/dist/src/parser/applyViewboxTransform.min.mjs.map +1 -1
  200. package/dist/src/parser/applyViewboxTransform.mjs.map +1 -1
  201. package/dist/src/parser/constants.min.mjs.map +1 -1
  202. package/dist/src/parser/constants.mjs.map +1 -1
  203. package/dist/src/parser/elements_parser.min.mjs.map +1 -1
  204. package/dist/src/parser/elements_parser.mjs.map +1 -1
  205. package/dist/src/parser/getCSSRules.min.mjs.map +1 -1
  206. package/dist/src/parser/getCSSRules.mjs.map +1 -1
  207. package/dist/src/parser/getGlobalStylesForElement.min.mjs.map +1 -1
  208. package/dist/src/parser/getGlobalStylesForElement.mjs.map +1 -1
  209. package/dist/src/parser/getGradientDefs.min.mjs.map +1 -1
  210. package/dist/src/parser/getGradientDefs.mjs.map +1 -1
  211. package/dist/src/parser/getMultipleNodes.min.mjs.map +1 -1
  212. package/dist/src/parser/getMultipleNodes.mjs.map +1 -1
  213. package/dist/src/parser/loadSVGFromString.min.mjs.map +1 -1
  214. package/dist/src/parser/loadSVGFromString.mjs.map +1 -1
  215. package/dist/src/parser/loadSVGFromURL.min.mjs.map +1 -1
  216. package/dist/src/parser/loadSVGFromURL.mjs.map +1 -1
  217. package/dist/src/parser/normalizeAttr.min.mjs.map +1 -1
  218. package/dist/src/parser/normalizeAttr.mjs.map +1 -1
  219. package/dist/src/parser/normalizeValue.min.mjs.map +1 -1
  220. package/dist/src/parser/normalizeValue.mjs.map +1 -1
  221. package/dist/src/parser/parseAttributes.min.mjs.map +1 -1
  222. package/dist/src/parser/parseAttributes.mjs.map +1 -1
  223. package/dist/src/parser/parseFontDeclaration.min.mjs.map +1 -1
  224. package/dist/src/parser/parseFontDeclaration.mjs.map +1 -1
  225. package/dist/src/parser/parseSVGDocument.min.mjs.map +1 -1
  226. package/dist/src/parser/parseSVGDocument.mjs.map +1 -1
  227. package/dist/src/parser/parseStyleObject.min.mjs.map +1 -1
  228. package/dist/src/parser/parseStyleObject.mjs.map +1 -1
  229. package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
  230. package/dist/src/parser/parseStyleString.mjs.map +1 -1
  231. package/dist/src/parser/parseTransformAttribute.min.mjs.map +1 -1
  232. package/dist/src/parser/parseTransformAttribute.mjs.map +1 -1
  233. package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
  234. package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
  235. package/dist/src/parser/percent.min.mjs.map +1 -1
  236. package/dist/src/parser/percent.mjs.map +1 -1
  237. package/dist/src/parser/recursivelyParseGradientsXlink.min.mjs.map +1 -1
  238. package/dist/src/parser/recursivelyParseGradientsXlink.mjs.map +1 -1
  239. package/dist/src/parser/setStrokeFillOpacity.min.mjs.map +1 -1
  240. package/dist/src/parser/setStrokeFillOpacity.mjs.map +1 -1
  241. package/dist/src/shapes/ActiveSelection.min.mjs.map +1 -1
  242. package/dist/src/shapes/ActiveSelection.mjs.map +1 -1
  243. package/dist/src/shapes/Circle.min.mjs.map +1 -1
  244. package/dist/src/shapes/Circle.mjs.map +1 -1
  245. package/dist/src/shapes/Ellipse.min.mjs.map +1 -1
  246. package/dist/src/shapes/Ellipse.mjs.map +1 -1
  247. package/dist/src/shapes/Group.d.ts +2 -2
  248. package/dist/src/shapes/Group.d.ts.map +1 -1
  249. package/dist/src/shapes/Group.min.mjs.map +1 -1
  250. package/dist/src/shapes/Group.mjs.map +1 -1
  251. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
  252. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +1 -1
  253. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +1 -1
  254. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +2 -2
  255. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +1 -1
  256. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  257. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  258. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  259. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  260. package/dist/src/shapes/IText/ITextClickBehavior.min.mjs.map +1 -1
  261. package/dist/src/shapes/IText/ITextClickBehavior.mjs.map +1 -1
  262. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  263. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
  264. package/dist/src/shapes/Image.min.mjs.map +1 -1
  265. package/dist/src/shapes/Image.mjs.map +1 -1
  266. package/dist/src/shapes/Line.min.mjs.map +1 -1
  267. package/dist/src/shapes/Line.mjs.map +1 -1
  268. package/dist/src/shapes/Object/AnimatableObject.d.ts.map +1 -1
  269. package/dist/src/shapes/Object/AnimatableObject.min.mjs.map +1 -1
  270. package/dist/src/shapes/Object/AnimatableObject.mjs.map +1 -1
  271. package/dist/src/shapes/Object/FabricObject.d.ts.map +1 -1
  272. package/dist/src/shapes/Object/FabricObject.min.mjs.map +1 -1
  273. package/dist/src/shapes/Object/FabricObject.mjs +2 -1
  274. package/dist/src/shapes/Object/FabricObject.mjs.map +1 -1
  275. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +1 -1
  276. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  277. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
  278. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +1 -1
  279. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
  280. package/dist/src/shapes/Object/InteractiveObject.d.ts +13 -13
  281. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  282. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  283. package/dist/src/shapes/Object/InteractiveObject.mjs +13 -13
  284. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  285. package/dist/src/shapes/Object/Object.d.ts +4 -4
  286. package/dist/src/shapes/Object/Object.d.ts.map +1 -1
  287. package/dist/src/shapes/Object/Object.min.mjs +1 -1
  288. package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
  289. package/dist/src/shapes/Object/Object.mjs +10 -14
  290. package/dist/src/shapes/Object/Object.mjs.map +1 -1
  291. package/dist/src/shapes/Object/ObjectGeometry.d.ts +1 -1
  292. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
  293. package/dist/src/shapes/Object/ObjectGeometry.mjs +1 -1
  294. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
  295. package/dist/src/shapes/Object/ObjectOrigin.min.mjs.map +1 -1
  296. package/dist/src/shapes/Object/ObjectOrigin.mjs.map +1 -1
  297. package/dist/src/shapes/Object/StackedObject.d.ts.map +1 -1
  298. package/dist/src/shapes/Object/StackedObject.min.mjs.map +1 -1
  299. package/dist/src/shapes/Object/StackedObject.mjs.map +1 -1
  300. package/dist/src/shapes/Path.min.mjs.map +1 -1
  301. package/dist/src/shapes/Path.mjs.map +1 -1
  302. package/dist/src/shapes/Polyline.d.ts.map +1 -1
  303. package/dist/src/shapes/Polyline.min.mjs +1 -1
  304. package/dist/src/shapes/Polyline.min.mjs.map +1 -1
  305. package/dist/src/shapes/Polyline.mjs +10 -2
  306. package/dist/src/shapes/Polyline.mjs.map +1 -1
  307. package/dist/src/shapes/Rect.min.mjs.map +1 -1
  308. package/dist/src/shapes/Rect.mjs.map +1 -1
  309. package/dist/src/shapes/Text/StyledText.min.mjs.map +1 -1
  310. package/dist/src/shapes/Text/StyledText.mjs.map +1 -1
  311. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  312. package/dist/src/shapes/Text/Text.mjs +1 -1
  313. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  314. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  315. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  316. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  317. package/dist/src/shapes/Textbox.mjs.map +1 -1
  318. package/dist/src/shapes/Triangle.min.mjs.map +1 -1
  319. package/dist/src/shapes/Triangle.mjs.map +1 -1
  320. package/dist/src/util/animation/AnimationBase.min.mjs.map +1 -1
  321. package/dist/src/util/animation/AnimationBase.mjs.map +1 -1
  322. package/dist/src/util/animation/AnimationRegistry.min.mjs.map +1 -1
  323. package/dist/src/util/animation/AnimationRegistry.mjs.map +1 -1
  324. package/dist/src/util/animation/ArrayAnimation.min.mjs.map +1 -1
  325. package/dist/src/util/animation/ArrayAnimation.mjs.map +1 -1
  326. package/dist/src/util/animation/ColorAnimation.min.mjs.map +1 -1
  327. package/dist/src/util/animation/ColorAnimation.mjs.map +1 -1
  328. package/dist/src/util/animation/ValueAnimation.min.mjs.map +1 -1
  329. package/dist/src/util/animation/ValueAnimation.mjs.map +1 -1
  330. package/dist/src/util/animation/animate.d.ts.map +1 -1
  331. package/dist/src/util/animation/animate.min.mjs.map +1 -1
  332. package/dist/src/util/animation/animate.mjs.map +1 -1
  333. package/dist/src/util/animation/easing.min.mjs.map +1 -1
  334. package/dist/src/util/animation/easing.mjs.map +1 -1
  335. package/dist/src/util/animation/types.d.ts.map +1 -1
  336. package/dist/src/util/applyMixins.min.mjs.map +1 -1
  337. package/dist/src/util/applyMixins.mjs.map +1 -1
  338. package/dist/src/util/dom_style.min.mjs.map +1 -1
  339. package/dist/src/util/dom_style.mjs.map +1 -1
  340. package/dist/src/util/internals/cloneDeep.d.ts +6 -0
  341. package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
  342. package/dist/src/util/internals/cloneStyles.d.ts +3 -0
  343. package/dist/src/util/internals/cloneStyles.d.ts.map +1 -0
  344. package/dist/src/util/internals/cloneStyles.min.mjs +2 -0
  345. package/dist/src/util/internals/cloneStyles.min.mjs.map +1 -0
  346. package/dist/src/util/internals/cloneStyles.mjs +15 -0
  347. package/dist/src/util/internals/cloneStyles.mjs.map +1 -0
  348. package/dist/src/util/internals/findRight.min.mjs.map +1 -1
  349. package/dist/src/util/internals/findRight.mjs.map +1 -1
  350. package/dist/src/util/misc/boundingBoxFromPoints.min.mjs.map +1 -1
  351. package/dist/src/util/misc/boundingBoxFromPoints.mjs.map +1 -1
  352. package/dist/src/util/misc/dom.min.mjs.map +1 -1
  353. package/dist/src/util/misc/dom.mjs.map +1 -1
  354. package/dist/src/util/misc/findScaleTo.min.mjs.map +1 -1
  355. package/dist/src/util/misc/findScaleTo.mjs.map +1 -1
  356. package/dist/src/util/misc/groupSVGElements.min.mjs.map +1 -1
  357. package/dist/src/util/misc/groupSVGElements.mjs.map +1 -1
  358. package/dist/src/util/misc/isTransparent.min.mjs.map +1 -1
  359. package/dist/src/util/misc/isTransparent.mjs.map +1 -1
  360. package/dist/src/util/misc/matrix.min.mjs.map +1 -1
  361. package/dist/src/util/misc/matrix.mjs.map +1 -1
  362. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  363. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  364. package/dist/src/util/misc/objectTransforms.min.mjs.map +1 -1
  365. package/dist/src/util/misc/objectTransforms.mjs.map +1 -1
  366. package/dist/src/util/misc/pick.min.mjs.map +1 -1
  367. package/dist/src/util/misc/pick.mjs.map +1 -1
  368. package/dist/src/util/misc/planeChange.min.mjs.map +1 -1
  369. package/dist/src/util/misc/planeChange.mjs.map +1 -1
  370. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.min.mjs.map +1 -1
  371. package/dist/src/util/misc/projectStroke/StrokeLineCapProjections.mjs.map +1 -1
  372. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.min.mjs.map +1 -1
  373. package/dist/src/util/misc/projectStroke/StrokeLineJoinProjections.mjs.map +1 -1
  374. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.min.mjs.map +1 -1
  375. package/dist/src/util/misc/projectStroke/StrokeProjectionsBase.mjs.map +1 -1
  376. package/dist/src/util/misc/projectStroke/index.min.mjs.map +1 -1
  377. package/dist/src/util/misc/projectStroke/index.mjs.map +1 -1
  378. package/dist/src/util/misc/resolveOrigin.min.mjs.map +1 -1
  379. package/dist/src/util/misc/resolveOrigin.mjs.map +1 -1
  380. package/dist/src/util/misc/rotatePoint.min.mjs.map +1 -1
  381. package/dist/src/util/misc/rotatePoint.mjs.map +1 -1
  382. package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
  383. package/dist/src/util/misc/svgParsing.mjs.map +1 -1
  384. package/dist/src/util/misc/textStyles.min.mjs +1 -1
  385. package/dist/src/util/misc/textStyles.min.mjs.map +1 -1
  386. package/dist/src/util/misc/textStyles.mjs +3 -3
  387. package/dist/src/util/misc/textStyles.mjs.map +1 -1
  388. package/dist/src/util/misc/vectors.min.mjs.map +1 -1
  389. package/dist/src/util/misc/vectors.mjs.map +1 -1
  390. package/dist/src/util/path/index.min.mjs.map +1 -1
  391. package/dist/src/util/path/index.mjs.map +1 -1
  392. package/dist/src/util/path/typedefs.d.ts.map +1 -1
  393. package/dist/src/util/transform_matrix_removal.min.mjs.map +1 -1
  394. package/dist/src/util/transform_matrix_removal.mjs.map +1 -1
  395. package/dist/src/util/typeAssertions.min.mjs.map +1 -1
  396. package/dist/src/util/typeAssertions.mjs.map +1 -1
  397. package/dist-extensions/aligning_guidelines/constant.mjs +11 -0
  398. package/dist-extensions/aligning_guidelines/constant.mjs.map +1 -0
  399. package/dist-extensions/aligning_guidelines/index.mjs +130 -0
  400. package/dist-extensions/aligning_guidelines/index.mjs.map +1 -0
  401. package/dist-extensions/aligning_guidelines/util/basic.mjs +11 -0
  402. package/dist-extensions/aligning_guidelines/util/basic.mjs.map +1 -0
  403. package/dist-extensions/aligning_guidelines/util/collect-line.mjs +193 -0
  404. package/dist-extensions/aligning_guidelines/util/collect-line.mjs.map +1 -0
  405. package/dist-extensions/aligning_guidelines/util/collect-point.mjs +102 -0
  406. package/dist-extensions/aligning_guidelines/util/collect-point.mjs.map +1 -0
  407. package/dist-extensions/aligning_guidelines/util/draw.mjs +75 -0
  408. package/dist-extensions/aligning_guidelines/util/draw.mjs.map +1 -0
  409. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs +42 -0
  410. package/dist-extensions/aligning_guidelines/util/get-objects-by-target.mjs.map +1 -0
  411. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts +3 -0
  412. package/dist-extensions/extensions/aligning_guidelines/constant.d.ts.map +1 -0
  413. package/dist-extensions/extensions/aligning_guidelines/index.d.ts +5 -0
  414. package/dist-extensions/extensions/aligning_guidelines/index.d.ts.map +1 -0
  415. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts +33 -0
  416. package/dist-extensions/extensions/aligning_guidelines/typedefs.d.ts.map +1 -0
  417. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts +4 -0
  418. package/dist-extensions/extensions/aligning_guidelines/util/basic.d.ts.map +1 -0
  419. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts +13 -0
  420. package/dist-extensions/extensions/aligning_guidelines/util/collect-line.d.ts.map +1 -0
  421. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts +20 -0
  422. package/dist-extensions/extensions/aligning_guidelines/util/collect-point.d.ts.map +1 -0
  423. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts +6 -0
  424. package/dist-extensions/extensions/aligning_guidelines/util/draw.d.ts.map +1 -0
  425. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts +3 -0
  426. package/dist-extensions/extensions/aligning_guidelines/util/get-objects-by-target.d.ts.map +1 -0
  427. package/dist-extensions/extensions/index.d.ts +2 -0
  428. package/dist-extensions/extensions/index.d.ts.map +1 -0
  429. package/dist-extensions/fabric-extensions.min.js +2 -0
  430. package/dist-extensions/fabric-extensions.min.js.map +1 -0
  431. package/dist-extensions/fabric.d.ts +119 -0
  432. package/dist-extensions/fabric.d.ts.map +1 -0
  433. package/dist-extensions/index.d.ts +2 -0
  434. package/dist-extensions/index.d.ts.map +1 -0
  435. package/dist-extensions/index.mjs +2 -0
  436. package/dist-extensions/index.mjs.map +1 -0
  437. package/dist-extensions/src/ClassRegistry.d.ts +14 -0
  438. package/dist-extensions/src/ClassRegistry.d.ts.map +1 -0
  439. package/dist-extensions/src/Collection.d.ts +141 -0
  440. package/dist-extensions/src/Collection.d.ts.map +1 -0
  441. package/dist-extensions/src/CommonMethods.d.ts +32 -0
  442. package/dist-extensions/src/CommonMethods.d.ts.map +1 -0
  443. package/dist-extensions/src/EventTypeDefs.d.ts +286 -0
  444. package/dist-extensions/src/EventTypeDefs.d.ts.map +1 -0
  445. package/dist-extensions/src/Intersection.d.ts +120 -0
  446. package/dist-extensions/src/Intersection.d.ts.map +1 -0
  447. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts +22 -0
  448. package/dist-extensions/src/LayoutManager/ActiveSelectionLayoutManager.d.ts.map +1 -0
  449. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts +56 -0
  450. package/dist-extensions/src/LayoutManager/LayoutManager.d.ts.map +1 -0
  451. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts +13 -0
  452. package/dist-extensions/src/LayoutManager/LayoutStrategies/ClipPathLayout.d.ts.map +1 -0
  453. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts +14 -0
  454. package/dist-extensions/src/LayoutManager/LayoutStrategies/FitContentLayout.d.ts.map +1 -0
  455. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts +14 -0
  456. package/dist-extensions/src/LayoutManager/LayoutStrategies/FixedLayout.d.ts.map +1 -0
  457. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +30 -0
  458. package/dist-extensions/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +1 -0
  459. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts +10 -0
  460. package/dist-extensions/src/LayoutManager/LayoutStrategies/utils.d.ts.map +1 -0
  461. package/dist-extensions/src/LayoutManager/constants.d.ts +7 -0
  462. package/dist-extensions/src/LayoutManager/constants.d.ts.map +1 -0
  463. package/dist-extensions/src/LayoutManager/index.d.ts +7 -0
  464. package/dist-extensions/src/LayoutManager/index.d.ts.map +1 -0
  465. package/dist-extensions/src/LayoutManager/types.d.ts +106 -0
  466. package/dist-extensions/src/LayoutManager/types.d.ts.map +1 -0
  467. package/dist-extensions/src/Observable.d.ts +68 -0
  468. package/dist-extensions/src/Observable.d.ts.map +1 -0
  469. package/dist-extensions/src/Pattern/Pattern.d.ts +99 -0
  470. package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -0
  471. package/dist-extensions/src/Pattern/index.d.ts +3 -0
  472. package/dist-extensions/src/Pattern/index.d.ts.map +1 -0
  473. package/dist-extensions/src/Pattern/types.d.ts +12 -0
  474. package/dist-extensions/src/Pattern/types.d.ts.map +1 -0
  475. package/dist-extensions/src/Point.d.ts +233 -0
  476. package/dist-extensions/src/Point.d.ts.map +1 -0
  477. package/dist-extensions/src/Shadow.d.ts +95 -0
  478. package/dist-extensions/src/Shadow.d.ts.map +1 -0
  479. package/dist-extensions/src/brushes/BaseBrush.d.ts +101 -0
  480. package/dist-extensions/src/brushes/BaseBrush.d.ts.map +1 -0
  481. package/dist-extensions/src/brushes/CircleBrush.d.ts +44 -0
  482. package/dist-extensions/src/brushes/CircleBrush.d.ts.map +1 -0
  483. package/dist-extensions/src/brushes/PatternBrush.d.ts +23 -0
  484. package/dist-extensions/src/brushes/PatternBrush.d.ts.map +1 -0
  485. package/dist-extensions/src/brushes/PencilBrush.d.ts +92 -0
  486. package/dist-extensions/src/brushes/PencilBrush.d.ts.map +1 -0
  487. package/dist-extensions/src/brushes/SprayBrush.d.ts +74 -0
  488. package/dist-extensions/src/brushes/SprayBrush.d.ts.map +1 -0
  489. package/dist-extensions/src/brushes/typedefs.d.ts +18 -0
  490. package/dist-extensions/src/brushes/typedefs.d.ts.map +1 -0
  491. package/dist-extensions/src/cache.d.ts +47 -0
  492. package/dist-extensions/src/cache.d.ts.map +1 -0
  493. package/dist-extensions/src/canvas/Canvas.d.ts +339 -0
  494. package/dist-extensions/src/canvas/Canvas.d.ts.map +1 -0
  495. package/dist-extensions/src/canvas/CanvasOptions.d.ts +229 -0
  496. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +1 -0
  497. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts +29 -0
  498. package/dist-extensions/src/canvas/DOMManagers/CanvasDOMManager.d.ts.map +1 -0
  499. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts +29 -0
  500. package/dist-extensions/src/canvas/DOMManagers/StaticCanvasDOMManager.d.ts.map +1 -0
  501. package/dist-extensions/src/canvas/DOMManagers/util.d.ts +24 -0
  502. package/dist-extensions/src/canvas/DOMManagers/util.d.ts.map +1 -0
  503. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +534 -0
  504. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +1 -0
  505. package/dist-extensions/src/canvas/StaticCanvas.d.ts +639 -0
  506. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -0
  507. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts +153 -0
  508. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +1 -0
  509. package/dist-extensions/src/canvas/TextEditingManager.d.ts +21 -0
  510. package/dist-extensions/src/canvas/TextEditingManager.d.ts.map +1 -0
  511. package/dist-extensions/src/color/Color.d.ts +162 -0
  512. package/dist-extensions/src/color/Color.d.ts.map +1 -0
  513. package/dist-extensions/src/color/color_map.d.ts +155 -0
  514. package/dist-extensions/src/color/color_map.d.ts.map +1 -0
  515. package/dist-extensions/src/color/constants.d.ts +111 -0
  516. package/dist-extensions/src/color/constants.d.ts.map +1 -0
  517. package/dist-extensions/src/color/typedefs.d.ts +16 -0
  518. package/dist-extensions/src/color/typedefs.d.ts.map +1 -0
  519. package/dist-extensions/src/color/util.d.ts +27 -0
  520. package/dist-extensions/src/color/util.d.ts.map +1 -0
  521. package/dist-extensions/src/config.d.ts +115 -0
  522. package/dist-extensions/src/config.d.ts.map +1 -0
  523. package/dist-extensions/src/constants.d.ts +35 -0
  524. package/dist-extensions/src/constants.d.ts.map +1 -0
  525. package/dist-extensions/src/controls/Control.d.ts +229 -0
  526. package/dist-extensions/src/controls/Control.d.ts.map +1 -0
  527. package/dist-extensions/src/controls/changeWidth.d.ts +13 -0
  528. package/dist-extensions/src/controls/changeWidth.d.ts.map +1 -0
  529. package/dist-extensions/src/controls/commonControls.d.ts +28 -0
  530. package/dist-extensions/src/controls/commonControls.d.ts.map +1 -0
  531. package/dist-extensions/src/controls/controlRendering.d.ts +29 -0
  532. package/dist-extensions/src/controls/controlRendering.d.ts.map +1 -0
  533. package/dist-extensions/src/controls/drag.d.ts +12 -0
  534. package/dist-extensions/src/controls/drag.d.ts.map +1 -0
  535. package/dist-extensions/src/controls/fireEvent.d.ts +3 -0
  536. package/dist-extensions/src/controls/fireEvent.d.ts.map +1 -0
  537. package/dist-extensions/src/controls/index.d.ts +14 -0
  538. package/dist-extensions/src/controls/index.d.ts.map +1 -0
  539. package/dist-extensions/src/controls/pathControl.d.ts +12 -0
  540. package/dist-extensions/src/controls/pathControl.d.ts.map +1 -0
  541. package/dist-extensions/src/controls/polyControl.d.ts +30 -0
  542. package/dist-extensions/src/controls/polyControl.d.ts.map +1 -0
  543. package/dist-extensions/src/controls/rotate.d.ts +12 -0
  544. package/dist-extensions/src/controls/rotate.d.ts.map +1 -0
  545. package/dist-extensions/src/controls/scale.d.ts +47 -0
  546. package/dist-extensions/src/controls/scale.d.ts.map +1 -0
  547. package/dist-extensions/src/controls/scaleSkew.d.ts +39 -0
  548. package/dist-extensions/src/controls/scaleSkew.d.ts.map +1 -0
  549. package/dist-extensions/src/controls/skew.d.ts +33 -0
  550. package/dist-extensions/src/controls/skew.d.ts.map +1 -0
  551. package/dist-extensions/src/controls/util.d.ts +41 -0
  552. package/dist-extensions/src/controls/util.d.ts.map +1 -0
  553. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts +10 -0
  554. package/dist-extensions/src/controls/wrapWithFireEvent.d.ts.map +1 -0
  555. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts +9 -0
  556. package/dist-extensions/src/controls/wrapWithFixedAnchor.d.ts.map +1 -0
  557. package/dist-extensions/src/env/browser.d.ts +3 -0
  558. package/dist-extensions/src/env/browser.d.ts.map +1 -0
  559. package/dist-extensions/src/env/index.d.ts +34 -0
  560. package/dist-extensions/src/env/index.d.ts.map +1 -0
  561. package/dist-extensions/src/env/types.d.ts +16 -0
  562. package/dist-extensions/src/env/types.d.ts.map +1 -0
  563. package/dist-extensions/src/filters/BaseFilter.d.ts +153 -0
  564. package/dist-extensions/src/filters/BaseFilter.d.ts.map +1 -0
  565. package/dist-extensions/src/filters/BlendColor.d.ts +68 -0
  566. package/dist-extensions/src/filters/BlendColor.d.ts.map +1 -0
  567. package/dist-extensions/src/filters/BlendImage.d.ts +99 -0
  568. package/dist-extensions/src/filters/BlendImage.d.ts.map +1 -0
  569. package/dist-extensions/src/filters/Blur.d.ts +50 -0
  570. package/dist-extensions/src/filters/Blur.d.ts.map +1 -0
  571. package/dist-extensions/src/filters/Brightness.d.ts +46 -0
  572. package/dist-extensions/src/filters/Brightness.d.ts.map +1 -0
  573. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts +27 -0
  574. package/dist-extensions/src/filters/Canvas2dFilterBackend.d.ts.map +1 -0
  575. package/dist-extensions/src/filters/ColorMatrix.d.ts +66 -0
  576. package/dist-extensions/src/filters/ColorMatrix.d.ts.map +1 -0
  577. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts +15 -0
  578. package/dist-extensions/src/filters/ColorMatrixFilters.d.ts.map +1 -0
  579. package/dist-extensions/src/filters/Composed.d.ts +47 -0
  580. package/dist-extensions/src/filters/Composed.d.ts.map +1 -0
  581. package/dist-extensions/src/filters/Contrast.d.ts +44 -0
  582. package/dist-extensions/src/filters/Contrast.d.ts.map +1 -0
  583. package/dist-extensions/src/filters/Convolute.d.ts +81 -0
  584. package/dist-extensions/src/filters/Convolute.d.ts.map +1 -0
  585. package/dist-extensions/src/filters/FilterBackend.d.ts +15 -0
  586. package/dist-extensions/src/filters/FilterBackend.d.ts.map +1 -0
  587. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts +7 -0
  588. package/dist-extensions/src/filters/GLProbes/GLProbe.d.ts.map +1 -0
  589. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts +20 -0
  590. package/dist-extensions/src/filters/GLProbes/WebGLProbe.d.ts.map +1 -0
  591. package/dist-extensions/src/filters/Gamma.d.ts +58 -0
  592. package/dist-extensions/src/filters/Gamma.d.ts.map +1 -0
  593. package/dist-extensions/src/filters/Grayscale.d.ts +44 -0
  594. package/dist-extensions/src/filters/Grayscale.d.ts.map +1 -0
  595. package/dist-extensions/src/filters/HueRotation.d.ts +31 -0
  596. package/dist-extensions/src/filters/HueRotation.d.ts.map +1 -0
  597. package/dist-extensions/src/filters/Invert.d.ts +53 -0
  598. package/dist-extensions/src/filters/Invert.d.ts.map +1 -0
  599. package/dist-extensions/src/filters/Noise.d.ts +44 -0
  600. package/dist-extensions/src/filters/Noise.d.ts.map +1 -0
  601. package/dist-extensions/src/filters/Pixelate.d.ts +41 -0
  602. package/dist-extensions/src/filters/Pixelate.d.ts.map +1 -0
  603. package/dist-extensions/src/filters/RemoveColor.d.ts +53 -0
  604. package/dist-extensions/src/filters/RemoveColor.d.ts.map +1 -0
  605. package/dist-extensions/src/filters/Resize.d.ts +137 -0
  606. package/dist-extensions/src/filters/Resize.d.ts.map +1 -0
  607. package/dist-extensions/src/filters/Saturation.d.ts +46 -0
  608. package/dist-extensions/src/filters/Saturation.d.ts.map +1 -0
  609. package/dist-extensions/src/filters/Vibrance.d.ts +46 -0
  610. package/dist-extensions/src/filters/Vibrance.d.ts.map +1 -0
  611. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts +131 -0
  612. package/dist-extensions/src/filters/WebGLFilterBackend.d.ts.map +1 -0
  613. package/dist-extensions/src/filters/filters.d.ts +23 -0
  614. package/dist-extensions/src/filters/filters.d.ts.map +1 -0
  615. package/dist-extensions/src/filters/index.d.ts +7 -0
  616. package/dist-extensions/src/filters/index.d.ts.map +1 -0
  617. package/dist-extensions/src/filters/shaders/baseFilter.d.ts +4 -0
  618. package/dist-extensions/src/filters/shaders/baseFilter.d.ts.map +1 -0
  619. package/dist-extensions/src/filters/shaders/blendColor.d.ts +13 -0
  620. package/dist-extensions/src/filters/shaders/blendColor.d.ts.map +1 -0
  621. package/dist-extensions/src/filters/shaders/blendImage.d.ts +4 -0
  622. package/dist-extensions/src/filters/shaders/blendImage.d.ts.map +1 -0
  623. package/dist-extensions/src/filters/shaders/blur.d.ts +2 -0
  624. package/dist-extensions/src/filters/shaders/blur.d.ts.map +1 -0
  625. package/dist-extensions/src/filters/shaders/brightness.d.ts +2 -0
  626. package/dist-extensions/src/filters/shaders/brightness.d.ts.map +1 -0
  627. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts +2 -0
  628. package/dist-extensions/src/filters/shaders/colorMatrix.d.ts.map +1 -0
  629. package/dist-extensions/src/filters/shaders/constrast.d.ts +2 -0
  630. package/dist-extensions/src/filters/shaders/constrast.d.ts.map +1 -0
  631. package/dist-extensions/src/filters/shaders/convolute.d.ts +11 -0
  632. package/dist-extensions/src/filters/shaders/convolute.d.ts.map +1 -0
  633. package/dist-extensions/src/filters/shaders/gamma.d.ts +2 -0
  634. package/dist-extensions/src/filters/shaders/gamma.d.ts.map +1 -0
  635. package/dist-extensions/src/filters/shaders/grayscale.d.ts +3 -0
  636. package/dist-extensions/src/filters/shaders/grayscale.d.ts.map +1 -0
  637. package/dist-extensions/src/filters/shaders/invert.d.ts +2 -0
  638. package/dist-extensions/src/filters/shaders/invert.d.ts.map +1 -0
  639. package/dist-extensions/src/filters/shaders/noise.d.ts +2 -0
  640. package/dist-extensions/src/filters/shaders/noise.d.ts.map +1 -0
  641. package/dist-extensions/src/filters/shaders/pixelate.d.ts +2 -0
  642. package/dist-extensions/src/filters/shaders/pixelate.d.ts.map +1 -0
  643. package/dist-extensions/src/filters/shaders/removeColor.d.ts +2 -0
  644. package/dist-extensions/src/filters/shaders/removeColor.d.ts.map +1 -0
  645. package/dist-extensions/src/filters/shaders/saturation.d.ts +2 -0
  646. package/dist-extensions/src/filters/shaders/saturation.d.ts.map +1 -0
  647. package/dist-extensions/src/filters/shaders/vibrance.d.ts +2 -0
  648. package/dist-extensions/src/filters/shaders/vibrance.d.ts.map +1 -0
  649. package/dist-extensions/src/filters/typedefs.d.ts +70 -0
  650. package/dist-extensions/src/filters/typedefs.d.ts.map +1 -0
  651. package/dist-extensions/src/filters/utils.d.ts +10 -0
  652. package/dist-extensions/src/filters/utils.d.ts.map +1 -0
  653. package/dist-extensions/src/gradient/Gradient.d.ts +156 -0
  654. package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -0
  655. package/dist-extensions/src/gradient/constants.d.ts +15 -0
  656. package/dist-extensions/src/gradient/constants.d.ts.map +1 -0
  657. package/dist-extensions/src/gradient/index.d.ts +3 -0
  658. package/dist-extensions/src/gradient/index.d.ts.map +1 -0
  659. package/dist-extensions/src/gradient/parser/misc.d.ts +4 -0
  660. package/dist-extensions/src/gradient/parser/misc.d.ts.map +1 -0
  661. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts +3 -0
  662. package/dist-extensions/src/gradient/parser/parseColorStops.d.ts.map +1 -0
  663. package/dist-extensions/src/gradient/parser/parseCoords.d.ts +17 -0
  664. package/dist-extensions/src/gradient/parser/parseCoords.d.ts.map +1 -0
  665. package/dist-extensions/src/gradient/typedefs.d.ts +93 -0
  666. package/dist-extensions/src/gradient/typedefs.d.ts.map +1 -0
  667. package/dist-extensions/src/parser/applyViewboxTransform.d.ts +13 -0
  668. package/dist-extensions/src/parser/applyViewboxTransform.d.ts.map +1 -0
  669. package/dist-extensions/src/parser/attributes.d.ts +6 -0
  670. package/dist-extensions/src/parser/attributes.d.ts.map +1 -0
  671. package/dist-extensions/src/parser/constants.d.ts +41 -0
  672. package/dist-extensions/src/parser/constants.d.ts.map +1 -0
  673. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts +2 -0
  674. package/dist-extensions/src/parser/doesSomeParentMatch.d.ts.map +1 -0
  675. package/dist-extensions/src/parser/elementMatchesRule.d.ts +5 -0
  676. package/dist-extensions/src/parser/elementMatchesRule.d.ts.map +1 -0
  677. package/dist-extensions/src/parser/elements_parser.d.ts +33 -0
  678. package/dist-extensions/src/parser/elements_parser.d.ts.map +1 -0
  679. package/dist-extensions/src/parser/getCSSRules.d.ts +8 -0
  680. package/dist-extensions/src/parser/getCSSRules.d.ts.map +1 -0
  681. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts +6 -0
  682. package/dist-extensions/src/parser/getGlobalStylesForElement.d.ts.map +1 -0
  683. package/dist-extensions/src/parser/getGradientDefs.d.ts +7 -0
  684. package/dist-extensions/src/parser/getGradientDefs.d.ts.map +1 -0
  685. package/dist-extensions/src/parser/getMultipleNodes.d.ts +2 -0
  686. package/dist-extensions/src/parser/getMultipleNodes.d.ts.map +1 -0
  687. package/dist-extensions/src/parser/getSvgRegex.d.ts +2 -0
  688. package/dist-extensions/src/parser/getSvgRegex.d.ts.map +1 -0
  689. package/dist-extensions/src/parser/getTagName.d.ts +2 -0
  690. package/dist-extensions/src/parser/getTagName.d.ts.map +1 -0
  691. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts +2 -0
  692. package/dist-extensions/src/parser/hasInvalidAncestor.d.ts.map +1 -0
  693. package/dist-extensions/src/parser/loadSVGFromString.d.ts +18 -0
  694. package/dist-extensions/src/parser/loadSVGFromString.d.ts.map +1 -0
  695. package/dist-extensions/src/parser/loadSVGFromURL.d.ts +19 -0
  696. package/dist-extensions/src/parser/loadSVGFromURL.d.ts.map +1 -0
  697. package/dist-extensions/src/parser/normalizeAttr.d.ts +3 -0
  698. package/dist-extensions/src/parser/normalizeAttr.d.ts.map +1 -0
  699. package/dist-extensions/src/parser/normalizeValue.d.ts +2 -0
  700. package/dist-extensions/src/parser/normalizeValue.d.ts.map +1 -0
  701. package/dist-extensions/src/parser/parseAttributes.d.ts +10 -0
  702. package/dist-extensions/src/parser/parseAttributes.d.ts.map +1 -0
  703. package/dist-extensions/src/parser/parseFontDeclaration.d.ts +10 -0
  704. package/dist-extensions/src/parser/parseFontDeclaration.d.ts.map +1 -0
  705. package/dist-extensions/src/parser/parsePointsAttribute.d.ts +10 -0
  706. package/dist-extensions/src/parser/parsePointsAttribute.d.ts.map +1 -0
  707. package/dist-extensions/src/parser/parseSVGDocument.d.ts +22 -0
  708. package/dist-extensions/src/parser/parseSVGDocument.d.ts.map +1 -0
  709. package/dist-extensions/src/parser/parseStyleAttribute.d.ts +9 -0
  710. package/dist-extensions/src/parser/parseStyleAttribute.d.ts.map +1 -0
  711. package/dist-extensions/src/parser/parseStyleObject.d.ts +8 -0
  712. package/dist-extensions/src/parser/parseStyleObject.d.ts.map +1 -0
  713. package/dist-extensions/src/parser/parseStyleString.d.ts +8 -0
  714. package/dist-extensions/src/parser/parseStyleString.d.ts.map +1 -0
  715. package/dist-extensions/src/parser/parseTransformAttribute.d.ts +11 -0
  716. package/dist-extensions/src/parser/parseTransformAttribute.d.ts.map +1 -0
  717. package/dist-extensions/src/parser/parseUseDirectives.d.ts +2 -0
  718. package/dist-extensions/src/parser/parseUseDirectives.d.ts.map +1 -0
  719. package/dist-extensions/src/parser/percent.d.ts +9 -0
  720. package/dist-extensions/src/parser/percent.d.ts.map +1 -0
  721. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts +2 -0
  722. package/dist-extensions/src/parser/recursivelyParseGradientsXlink.d.ts.map +1 -0
  723. package/dist-extensions/src/parser/selectorMatches.d.ts +2 -0
  724. package/dist-extensions/src/parser/selectorMatches.d.ts.map +1 -0
  725. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts +6 -0
  726. package/dist-extensions/src/parser/setStrokeFillOpacity.d.ts.map +1 -0
  727. package/dist-extensions/src/parser/typedefs.d.ts +10 -0
  728. package/dist-extensions/src/parser/typedefs.d.ts.map +1 -0
  729. package/dist-extensions/src/shapes/ActiveSelection.d.ts +109 -0
  730. package/dist-extensions/src/shapes/ActiveSelection.d.ts.map +1 -0
  731. package/dist-extensions/src/shapes/Circle.d.ts +111 -0
  732. package/dist-extensions/src/shapes/Circle.d.ts.map +1 -0
  733. package/dist-extensions/src/shapes/Ellipse.d.ts +88 -0
  734. package/dist-extensions/src/shapes/Ellipse.d.ts.map +1 -0
  735. package/dist-extensions/src/shapes/Group.d.ts +303 -0
  736. package/dist-extensions/src/shapes/Group.d.ts.map +1 -0
  737. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts +78 -0
  738. package/dist-extensions/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -0
  739. package/dist-extensions/src/shapes/IText/IText.d.ts +314 -0
  740. package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -0
  741. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts +299 -0
  742. package/dist-extensions/src/shapes/IText/ITextBehavior.d.ts.map +1 -0
  743. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts +81 -0
  744. package/dist-extensions/src/shapes/IText/ITextClickBehavior.d.ts.map +1 -0
  745. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts +198 -0
  746. package/dist-extensions/src/shapes/IText/ITextKeyBehavior.d.ts.map +1 -0
  747. package/dist-extensions/src/shapes/IText/constants.d.ts +13 -0
  748. package/dist-extensions/src/shapes/IText/constants.d.ts.map +1 -0
  749. package/dist-extensions/src/shapes/Image.d.ts +312 -0
  750. package/dist-extensions/src/shapes/Image.d.ts.map +1 -0
  751. package/dist-extensions/src/shapes/Line.d.ts +122 -0
  752. package/dist-extensions/src/shapes/Line.d.ts.map +1 -0
  753. package/dist-extensions/src/shapes/Object/AnimatableObject.d.ts +33 -0
  754. package/dist-extensions/src/shapes/Object/AnimatableObject.d.ts.map +1 -0
  755. package/dist-extensions/src/shapes/Object/FabricObject.d.ts +11 -0
  756. package/dist-extensions/src/shapes/Object/FabricObject.d.ts.map +1 -0
  757. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts +72 -0
  758. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -0
  759. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts +317 -0
  760. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -0
  761. package/dist-extensions/src/shapes/Object/Object.d.ts +614 -0
  762. package/dist-extensions/src/shapes/Object/Object.d.ts.map +1 -0
  763. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts +237 -0
  764. package/dist-extensions/src/shapes/Object/ObjectGeometry.d.ts.map +1 -0
  765. package/dist-extensions/src/shapes/Object/ObjectOrigin.d.ts +96 -0
  766. package/dist-extensions/src/shapes/Object/ObjectOrigin.d.ts.map +1 -0
  767. package/dist-extensions/src/shapes/Object/StackedObject.d.ts +60 -0
  768. package/dist-extensions/src/shapes/Object/StackedObject.d.ts.map +1 -0
  769. package/dist-extensions/src/shapes/Object/defaultValues.d.ts +8 -0
  770. package/dist-extensions/src/shapes/Object/defaultValues.d.ts.map +1 -0
  771. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts +88 -0
  772. package/dist-extensions/src/shapes/Object/types/BaseProps.d.ts.map +1 -0
  773. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts +37 -0
  774. package/dist-extensions/src/shapes/Object/types/BorderProps.d.ts.map +1 -0
  775. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts +63 -0
  776. package/dist-extensions/src/shapes/Object/types/ControlProps.d.ts.map +1 -0
  777. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts +66 -0
  778. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -0
  779. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts +80 -0
  780. package/dist-extensions/src/shapes/Object/types/FillStrokeProps.d.ts.map +1 -0
  781. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts +51 -0
  782. package/dist-extensions/src/shapes/Object/types/LockInteractionProps.d.ts.map +1 -0
  783. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts +43 -0
  784. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +1 -0
  785. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts +34 -0
  786. package/dist-extensions/src/shapes/Object/types/ObjectTransformProps.d.ts.map +1 -0
  787. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts +66 -0
  788. package/dist-extensions/src/shapes/Object/types/SerializedObjectProps.d.ts.map +1 -0
  789. package/dist-extensions/src/shapes/Object/types/index.d.ts +6 -0
  790. package/dist-extensions/src/shapes/Object/types/index.d.ts.map +1 -0
  791. package/dist-extensions/src/shapes/Path.d.ts +215 -0
  792. package/dist-extensions/src/shapes/Path.d.ts.map +1 -0
  793. package/dist-extensions/src/shapes/Polygon.d.ts +7 -0
  794. package/dist-extensions/src/shapes/Polygon.d.ts.map +1 -0
  795. package/dist-extensions/src/shapes/Polyline.d.ts +156 -0
  796. package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -0
  797. package/dist-extensions/src/shapes/Rect.d.ts +83 -0
  798. package/dist-extensions/src/shapes/Rect.d.ts.map +1 -0
  799. package/dist-extensions/src/shapes/Text/StyledText.d.ts +128 -0
  800. package/dist-extensions/src/shapes/Text/StyledText.d.ts.map +1 -0
  801. package/dist-extensions/src/shapes/Text/Text.d.ts +697 -0
  802. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -0
  803. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts +47 -0
  804. package/dist-extensions/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -0
  805. package/dist-extensions/src/shapes/Text/constants.d.ts +13 -0
  806. package/dist-extensions/src/shapes/Text/constants.d.ts.map +1 -0
  807. package/dist-extensions/src/shapes/Textbox.d.ts +226 -0
  808. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -0
  809. package/dist-extensions/src/shapes/Triangle.d.ts +27 -0
  810. package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -0
  811. package/dist-extensions/src/typedefs.d.ts +97 -0
  812. package/dist-extensions/src/typedefs.d.ts.map +1 -0
  813. package/dist-extensions/src/util/animation/AnimationBase.d.ts +54 -0
  814. package/dist-extensions/src/util/animation/AnimationBase.d.ts.map +1 -0
  815. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts +3 -0
  816. package/dist-extensions/src/util/animation/AnimationFrameProvider.d.ts.map +1 -0
  817. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts +29 -0
  818. package/dist-extensions/src/util/animation/AnimationRegistry.d.ts.map +1 -0
  819. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts +10 -0
  820. package/dist-extensions/src/util/animation/ArrayAnimation.d.ts.map +1 -0
  821. package/dist-extensions/src/util/animation/ColorAnimation.d.ts +11 -0
  822. package/dist-extensions/src/util/animation/ColorAnimation.d.ts.map +1 -0
  823. package/dist-extensions/src/util/animation/ValueAnimation.d.ts +10 -0
  824. package/dist-extensions/src/util/animation/ValueAnimation.d.ts.map +1 -0
  825. package/dist-extensions/src/util/animation/animate.d.ts +37 -0
  826. package/dist-extensions/src/util/animation/animate.d.ts.map +1 -0
  827. package/dist-extensions/src/util/animation/easing.d.ts +130 -0
  828. package/dist-extensions/src/util/animation/easing.d.ts.map +1 -0
  829. package/dist-extensions/src/util/animation/index.d.ts +3 -0
  830. package/dist-extensions/src/util/animation/index.d.ts.map +1 -0
  831. package/dist-extensions/src/util/animation/types.d.ts +87 -0
  832. package/dist-extensions/src/util/animation/types.d.ts.map +1 -0
  833. package/dist-extensions/src/util/applyMixins.d.ts +8 -0
  834. package/dist-extensions/src/util/applyMixins.d.ts.map +1 -0
  835. package/dist-extensions/src/util/dom_event.d.ts +6 -0
  836. package/dist-extensions/src/util/dom_event.d.ts.map +1 -0
  837. package/dist-extensions/src/util/dom_misc.d.ts +12 -0
  838. package/dist-extensions/src/util/dom_misc.d.ts.map +1 -0
  839. package/dist-extensions/src/util/dom_style.d.ts +7 -0
  840. package/dist-extensions/src/util/dom_style.d.ts.map +1 -0
  841. package/dist-extensions/src/util/index.d.ts +37 -0
  842. package/dist-extensions/src/util/index.d.ts.map +1 -0
  843. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts +2 -0
  844. package/dist-extensions/src/util/internals/cleanupSvgAttribute.d.ts.map +1 -0
  845. package/dist-extensions/src/util/internals/cloneStyles.d.ts +3 -0
  846. package/dist-extensions/src/util/internals/cloneStyles.d.ts.map +1 -0
  847. package/dist-extensions/src/util/internals/console.d.ts +8 -0
  848. package/dist-extensions/src/util/internals/console.d.ts.map +1 -0
  849. package/dist-extensions/src/util/internals/dom_request.d.ts +16 -0
  850. package/dist-extensions/src/util/internals/dom_request.d.ts.map +1 -0
  851. package/dist-extensions/src/util/internals/findRight.d.ts +2 -0
  852. package/dist-extensions/src/util/internals/findRight.d.ts.map +1 -0
  853. package/dist-extensions/src/util/internals/getRandomInt.d.ts +8 -0
  854. package/dist-extensions/src/util/internals/getRandomInt.d.ts.map +1 -0
  855. package/dist-extensions/src/util/internals/ifNaN.d.ts +8 -0
  856. package/dist-extensions/src/util/internals/ifNaN.d.ts.map +1 -0
  857. package/dist-extensions/src/util/internals/removeFromArray.d.ts +9 -0
  858. package/dist-extensions/src/util/internals/removeFromArray.d.ts.map +1 -0
  859. package/dist-extensions/src/util/internals/uid.d.ts +2 -0
  860. package/dist-extensions/src/util/internals/uid.d.ts.map +1 -0
  861. package/dist-extensions/src/util/lang_string.d.ts +22 -0
  862. package/dist-extensions/src/util/lang_string.d.ts.map +1 -0
  863. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts +9 -0
  864. package/dist-extensions/src/util/misc/boundingBoxFromPoints.d.ts.map +1 -0
  865. package/dist-extensions/src/util/misc/capValue.d.ts +2 -0
  866. package/dist-extensions/src/util/misc/capValue.d.ts.map +1 -0
  867. package/dist-extensions/src/util/misc/cos.d.ts +10 -0
  868. package/dist-extensions/src/util/misc/cos.d.ts.map +1 -0
  869. package/dist-extensions/src/util/misc/dom.d.ts +28 -0
  870. package/dist-extensions/src/util/misc/dom.d.ts.map +1 -0
  871. package/dist-extensions/src/util/misc/findScaleTo.d.ts +20 -0
  872. package/dist-extensions/src/util/misc/findScaleTo.d.ts.map +1 -0
  873. package/dist-extensions/src/util/misc/groupSVGElements.d.ts +11 -0
  874. package/dist-extensions/src/util/misc/groupSVGElements.d.ts.map +1 -0
  875. package/dist-extensions/src/util/misc/isTransparent.d.ts +11 -0
  876. package/dist-extensions/src/util/misc/isTransparent.d.ts.map +1 -0
  877. package/dist-extensions/src/util/misc/matrix.d.ts +170 -0
  878. package/dist-extensions/src/util/misc/matrix.d.ts.map +1 -0
  879. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts +23 -0
  880. package/dist-extensions/src/util/misc/mergeClipPaths.d.ts.map +1 -0
  881. package/dist-extensions/src/util/misc/objectEnlive.d.ts +45 -0
  882. package/dist-extensions/src/util/misc/objectEnlive.d.ts.map +1 -0
  883. package/dist-extensions/src/util/misc/objectTransforms.d.ts +62 -0
  884. package/dist-extensions/src/util/misc/objectTransforms.d.ts.map +1 -0
  885. package/dist-extensions/src/util/misc/pick.d.ts +9 -0
  886. package/dist-extensions/src/util/misc/pick.d.ts.map +1 -0
  887. package/dist-extensions/src/util/misc/planeChange.d.ts +64 -0
  888. package/dist-extensions/src/util/misc/planeChange.d.ts.map +1 -0
  889. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts +52 -0
  890. package/dist-extensions/src/util/misc/projectStroke/StrokeLineCapProjections.d.ts.map +1 -0
  891. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts +90 -0
  892. package/dist-extensions/src/util/misc/projectStroke/StrokeLineJoinProjections.d.ts.map +1 -0
  893. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts +27 -0
  894. package/dist-extensions/src/util/misc/projectStroke/StrokeProjectionsBase.d.ts.map +1 -0
  895. package/dist-extensions/src/util/misc/projectStroke/index.d.ts +12 -0
  896. package/dist-extensions/src/util/misc/projectStroke/index.d.ts.map +1 -0
  897. package/dist-extensions/src/util/misc/projectStroke/types.d.ts +23 -0
  898. package/dist-extensions/src/util/misc/projectStroke/types.d.ts.map +1 -0
  899. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts +14 -0
  900. package/dist-extensions/src/util/misc/radiansDegreesConversion.d.ts.map +1 -0
  901. package/dist-extensions/src/util/misc/resolveOrigin.d.ts +9 -0
  902. package/dist-extensions/src/util/misc/resolveOrigin.d.ts.map +1 -0
  903. package/dist-extensions/src/util/misc/rotatePoint.d.ts +12 -0
  904. package/dist-extensions/src/util/misc/rotatePoint.d.ts.map +1 -0
  905. package/dist-extensions/src/util/misc/sin.d.ts +10 -0
  906. package/dist-extensions/src/util/misc/sin.d.ts.map +1 -0
  907. package/dist-extensions/src/util/misc/svgParsing.d.ts +46 -0
  908. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -0
  909. package/dist-extensions/src/util/misc/textStyles.d.ts +32 -0
  910. package/dist-extensions/src/util/misc/textStyles.d.ts.map +1 -0
  911. package/dist-extensions/src/util/misc/toFixed.d.ts +8 -0
  912. package/dist-extensions/src/util/misc/toFixed.d.ts.map +1 -0
  913. package/dist-extensions/src/util/misc/vectors.d.ts +72 -0
  914. package/dist-extensions/src/util/misc/vectors.d.ts.map +1 -0
  915. package/dist-extensions/src/util/path/index.d.ts +95 -0
  916. package/dist-extensions/src/util/path/index.d.ts.map +1 -0
  917. package/dist-extensions/src/util/path/regex.d.ts +2 -0
  918. package/dist-extensions/src/util/path/regex.d.ts.map +1 -0
  919. package/dist-extensions/src/util/path/typedefs.d.ts +221 -0
  920. package/dist-extensions/src/util/path/typedefs.d.ts.map +1 -0
  921. package/dist-extensions/src/util/transform_matrix_removal.d.ts +14 -0
  922. package/dist-extensions/src/util/transform_matrix_removal.d.ts.map +1 -0
  923. package/dist-extensions/src/util/typeAssertions.d.ts +13 -0
  924. package/dist-extensions/src/util/typeAssertions.d.ts.map +1 -0
  925. package/eslint.config.mjs +108 -0
  926. package/extensions/README.MD +27 -0
  927. package/extensions/aligning_guidelines/README.MD +22 -0
  928. package/extensions/aligning_guidelines/constant.ts +10 -0
  929. package/extensions/aligning_guidelines/index.ts +166 -0
  930. package/extensions/aligning_guidelines/typedefs.ts +36 -0
  931. package/extensions/aligning_guidelines/util/basic.spec.ts +31 -0
  932. package/extensions/aligning_guidelines/util/basic.ts +20 -0
  933. package/extensions/aligning_guidelines/util/collect-line.ts +172 -0
  934. package/extensions/aligning_guidelines/util/collect-point.ts +83 -0
  935. package/extensions/aligning_guidelines/util/draw.ts +74 -0
  936. package/extensions/aligning_guidelines/util/get-objects-by-target.ts +45 -0
  937. package/extensions/index.ts +4 -0
  938. package/jest.config.js +1 -1
  939. package/jest.extend.ts +14 -15
  940. package/package.json +17 -12
  941. package/playwright.setup.ts +5 -5
  942. package/rollup.config.mjs +46 -4
  943. package/scripts/build.mjs +1 -1
  944. package/scripts/buildLock.mjs +5 -5
  945. package/scripts/buildStats.mjs +2 -2
  946. package/scripts/git.mjs +1 -1
  947. package/scripts/index.mjs +34 -32
  948. package/scripts/sandbox.mjs +15 -15
  949. package/src/ClassRegistry.spec.ts +1 -1
  950. package/src/ClassRegistry.ts +1 -1
  951. package/src/Collection.ts +9 -9
  952. package/src/EventTypeDefs.ts +2 -2
  953. package/src/Intersection.spec.ts +2 -2
  954. package/src/Intersection.ts +11 -11
  955. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +3 -3
  956. package/src/LayoutManager/ActiveSelectionLayoutManager.ts +2 -2
  957. package/src/LayoutManager/LayoutManager.spec.ts +17 -17
  958. package/src/LayoutManager/LayoutManager.ts +15 -15
  959. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +3 -3
  960. package/src/LayoutManager/LayoutStrategies/FixedLayout.ts +1 -1
  961. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +4 -4
  962. package/src/LayoutManager/LayoutStrategies/utils.ts +4 -4
  963. package/src/LayoutManager/types.ts +12 -13
  964. package/src/Observable.ts +7 -7
  965. package/src/Pattern/Pattern.ts +20 -10
  966. package/src/Point.ts +3 -3
  967. package/src/Shadow.ts +7 -7
  968. package/src/brushes/CircleBrush.ts +1 -1
  969. package/src/brushes/PatternBrush.ts +1 -1
  970. package/src/brushes/PencilBrush.ts +1 -1
  971. package/src/brushes/SprayBrush.ts +3 -3
  972. package/src/canvas/Canvas.ts +38 -35
  973. package/src/canvas/DOMManagers/CanvasDOMManager.ts +2 -2
  974. package/src/canvas/DOMManagers/StaticCanvasDOMManager.ts +1 -1
  975. package/src/canvas/DOMManagers/util.ts +2 -2
  976. package/src/canvas/SelectableCanvas.spec.ts +8 -8
  977. package/src/canvas/SelectableCanvas.ts +20 -20
  978. package/src/canvas/StaticCanvas.ts +44 -43
  979. package/src/canvas/StaticCanvasOptions.ts +0 -1
  980. package/src/canvas/TextEditingManager.ts +1 -1
  981. package/src/canvas/__tests__/eventData.test.ts +17 -17
  982. package/src/color/Color.ts +3 -2
  983. package/src/color/color.test.ts +2 -2
  984. package/src/color/typedefs.ts +1 -1
  985. package/src/color/util.ts +1 -1
  986. package/src/config.ts +1 -1
  987. package/src/controls/Control.spec.ts +8 -8
  988. package/src/controls/Control.ts +14 -14
  989. package/src/controls/changeWidth.test.ts +2 -2
  990. package/src/controls/changeWidth.ts +4 -4
  991. package/src/controls/controlRendering.ts +4 -4
  992. package/src/controls/drag.ts +1 -1
  993. package/src/controls/fireEvent.ts +1 -1
  994. package/src/controls/pathControl.spec.ts +9 -9
  995. package/src/controls/pathControl.ts +20 -20
  996. package/src/controls/polyControl.spec.ts +6 -6
  997. package/src/controls/polyControl.ts +11 -11
  998. package/src/controls/rotate.ts +4 -4
  999. package/src/controls/scale.test.ts +9 -9
  1000. package/src/controls/scale.ts +13 -13
  1001. package/src/controls/scaleSkew.ts +3 -3
  1002. package/src/controls/skew.ts +8 -8
  1003. package/src/controls/util.ts +6 -6
  1004. package/src/controls/wrapWithFireEvent.ts +2 -2
  1005. package/src/controls/wrapWithFixedAnchor.spec.ts +5 -5
  1006. package/src/controls/wrapWithFixedAnchor.ts +2 -2
  1007. package/src/env/node.ts +2 -2
  1008. package/src/filters/BaseFilter.ts +27 -25
  1009. package/src/filters/BlendColor.ts +1 -1
  1010. package/src/filters/BlendImage.ts +4 -4
  1011. package/src/filters/Blur.ts +1 -1
  1012. package/src/filters/Boilerplate.ts +1 -1
  1013. package/src/filters/Brightness.ts +1 -1
  1014. package/src/filters/Canvas2dFilterBackend.ts +1 -1
  1015. package/src/filters/ColorMatrix.ts +2 -2
  1016. package/src/filters/ColorMatrixFilters.ts +7 -7
  1017. package/src/filters/Composed.ts +5 -5
  1018. package/src/filters/Contrast.ts +1 -1
  1019. package/src/filters/Convolute.ts +1 -1
  1020. package/src/filters/GLProbes/WebGLProbe.ts +2 -2
  1021. package/src/filters/Gamma.ts +1 -1
  1022. package/src/filters/Grayscale.ts +1 -1
  1023. package/src/filters/Invert.ts +1 -1
  1024. package/src/filters/Noise.ts +1 -1
  1025. package/src/filters/Pixelate.ts +1 -1
  1026. package/src/filters/RemoveColor.ts +1 -1
  1027. package/src/filters/Resize.ts +9 -9
  1028. package/src/filters/Saturation.ts +1 -1
  1029. package/src/filters/Vibrance.ts +1 -1
  1030. package/src/filters/WebGLFilterBackend.ts +10 -10
  1031. package/src/filters/typedefs.ts +1 -3
  1032. package/src/filters/utils.ts +3 -3
  1033. package/src/gradient/Gradient.spec.ts +19 -19
  1034. package/src/gradient/Gradient.ts +51 -50
  1035. package/src/gradient/parser/parseColorStops.ts +3 -3
  1036. package/src/gradient/parser/parseCoords.ts +28 -25
  1037. package/src/mixins/eraser_brush.mixin.ts +21 -21
  1038. package/src/parkinglot/straighten.ts +1 -1
  1039. package/src/parser/applyViewboxTransform.ts +2 -2
  1040. package/src/parser/constants.ts +2 -2
  1041. package/src/parser/elements_parser.ts +13 -13
  1042. package/src/parser/getCSSRules.ts +1 -1
  1043. package/src/parser/getGlobalStylesForElement.ts +1 -1
  1044. package/src/parser/getGradientDefs.ts +1 -1
  1045. package/src/parser/getMultipleNodes.ts +2 -2
  1046. package/src/parser/loadSVGFromString.test.ts +1 -4
  1047. package/src/parser/loadSVGFromString.ts +1 -1
  1048. package/src/parser/loadSVGFromURL.ts +1 -1
  1049. package/src/parser/normalizeAttr.ts +1 -1
  1050. package/src/parser/normalizeValue.ts +2 -2
  1051. package/src/parser/parseAttributes.ts +3 -3
  1052. package/src/parser/parseFontDeclaration.ts +1 -1
  1053. package/src/parser/parseSVGDocument.ts +3 -3
  1054. package/src/parser/parseStyleObject.ts +1 -1
  1055. package/src/parser/parseStyleString.ts +1 -1
  1056. package/src/parser/parseTransformAttribute.ts +1 -1
  1057. package/src/parser/parseUseDirectives.ts +1 -1
  1058. package/src/parser/percent.ts +4 -4
  1059. package/src/parser/recursivelyParseGradientsXlink.ts +1 -1
  1060. package/src/parser/setStrokeFillOpacity.ts +1 -1
  1061. package/src/parser/typedefs.ts +1 -1
  1062. package/src/shapes/ActiveSelection.spec.ts +1 -1
  1063. package/src/shapes/ActiveSelection.ts +4 -4
  1064. package/src/shapes/Circle.ts +5 -5
  1065. package/src/shapes/Ellipse.ts +4 -4
  1066. package/src/shapes/Group.spec.ts +5 -5
  1067. package/src/shapes/Group.ts +19 -17
  1068. package/src/shapes/IText/DraggableTextDelegate.ts +9 -10
  1069. package/src/shapes/IText/IText.test.ts +1 -1
  1070. package/src/shapes/IText/IText.ts +12 -12
  1071. package/src/shapes/IText/ITextBehavior.test.ts +2 -2
  1072. package/src/shapes/IText/ITextBehavior.ts +21 -21
  1073. package/src/shapes/IText/ITextClickBehavior.ts +2 -2
  1074. package/src/shapes/IText/ITextKeyBehavior.test.ts +2 -2
  1075. package/src/shapes/IText/ITextKeyBehavior.ts +13 -13
  1076. package/src/shapes/Image.ts +16 -16
  1077. package/src/shapes/Line.ts +4 -4
  1078. package/src/shapes/Object/AnimatableObject.ts +13 -10
  1079. package/src/shapes/Object/FabricObject.ts +7 -3
  1080. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +9 -9
  1081. package/src/shapes/Object/InteractiveObject.spec.ts +3 -3
  1082. package/src/shapes/Object/InteractiveObject.ts +32 -32
  1083. package/src/shapes/Object/Object.ts +33 -31
  1084. package/src/shapes/Object/ObjectGeometry.ts +9 -9
  1085. package/src/shapes/Object/ObjectOrigin.ts +11 -11
  1086. package/src/shapes/Object/StackedObject.ts +3 -4
  1087. package/src/shapes/Path.ts +14 -14
  1088. package/src/shapes/Polyline.spec.ts +1 -1
  1089. package/src/shapes/Polyline.ts +15 -16
  1090. package/src/shapes/Rect.ts +6 -6
  1091. package/src/shapes/Text/StyledText.spec.ts +2 -2
  1092. package/src/shapes/Text/StyledText.ts +7 -7
  1093. package/src/shapes/Text/Text.spec.ts +1 -1
  1094. package/src/shapes/Text/Text.ts +33 -33
  1095. package/src/shapes/Text/TextSVGExportMixin.spec.ts +1 -1
  1096. package/src/shapes/Text/TextSVGExportMixin.ts +23 -23
  1097. package/src/shapes/Textbox.ts +7 -7
  1098. package/src/shapes/Triangle.ts +1 -1
  1099. package/src/typedefs.ts +3 -3
  1100. package/src/util/animation/AnimationBase.ts +2 -2
  1101. package/src/util/animation/AnimationRegistry.ts +1 -1
  1102. package/src/util/animation/ArrayAnimation.ts +2 -2
  1103. package/src/util/animation/ColorAnimation.ts +5 -5
  1104. package/src/util/animation/ValueAnimation.ts +1 -1
  1105. package/src/util/animation/animate.ts +6 -6
  1106. package/src/util/animation/animations.spec.ts +7 -7
  1107. package/src/util/animation/easing.ts +1 -1
  1108. package/src/util/animation/types.ts +5 -6
  1109. package/src/util/applyMixins.ts +2 -2
  1110. package/src/util/dom_style.ts +2 -2
  1111. package/src/util/internals/cloneDeep.ts +6 -0
  1112. package/src/util/internals/cloneStyles.spec.ts +46 -0
  1113. package/src/util/internals/cloneStyles.ts +12 -0
  1114. package/src/util/internals/findRight.ts +1 -1
  1115. package/src/util/internals/getRandomInt.test.ts +1 -1
  1116. package/src/util/misc/boundingBoxFromPoints.ts +1 -1
  1117. package/src/util/misc/dom.ts +3 -3
  1118. package/src/util/misc/findScaleTo.ts +2 -2
  1119. package/src/util/misc/groupSVGElements.ts +1 -1
  1120. package/src/util/misc/isTransparent.ts +1 -1
  1121. package/src/util/misc/matrix.ts +6 -6
  1122. package/src/util/misc/objectEnlive.ts +9 -9
  1123. package/src/util/misc/objectTransforms.ts +5 -5
  1124. package/src/util/misc/pick.ts +2 -2
  1125. package/src/util/misc/planeChange.spec.ts +9 -9
  1126. package/src/util/misc/planeChange.ts +5 -5
  1127. package/src/util/misc/projectStroke/StrokeLineCapProjections.ts +7 -7
  1128. package/src/util/misc/projectStroke/StrokeLineJoinProjections.ts +16 -16
  1129. package/src/util/misc/projectStroke/StrokeProjectionsBase.ts +2 -2
  1130. package/src/util/misc/projectStroke/index.ts +7 -7
  1131. package/src/util/misc/resolveOrigin.ts +1 -1
  1132. package/src/util/misc/rotatePoint.ts +1 -1
  1133. package/src/util/misc/svgParsing.ts +5 -5
  1134. package/src/util/misc/textStyles.ts +6 -6
  1135. package/src/util/misc/vectors.ts +1 -1
  1136. package/src/util/path/index.spec.ts +3 -3
  1137. package/src/util/path/index.ts +30 -30
  1138. package/src/util/path/typechecks.ts +22 -22
  1139. package/src/util/path/typedefs.ts +14 -17
  1140. package/src/util/transform_matrix_removal.ts +3 -3
  1141. package/src/util/typeAssertions.ts +4 -4
  1142. package/tsconfig-extensions.json +108 -0
  1143. package/tsconfig.json +4 -3
  1144. package/.eslintignore +0 -3
  1145. package/.eslintrc.js +0 -60
  1146. package/.eslintrc.json +0 -143
  1147. package/.eslintrc_tests +0 -58
  1148. package/dist/src/util/internals/cloneDeep.min.mjs +0 -2
  1149. package/dist/src/util/internals/cloneDeep.min.mjs.map +0 -1
  1150. package/dist/src/util/internals/cloneDeep.mjs +0 -4
  1151. package/dist/src/util/internals/cloneDeep.mjs.map +0 -1
  1152. package/dist/src/util/internals/index.d.ts +0 -5
  1153. package/dist/src/util/internals/index.d.ts.map +0 -1
  1154. package/src/benchmarks/README.md +0 -7
  1155. package/src/benchmarks/calcCornerCoords.mjs +0 -117
  1156. package/src/benchmarks/calcTransformMatrix.mjs +0 -104
  1157. package/src/benchmarks/pathCloning.mjs +0 -111
  1158. package/src/benchmarks/pathData.mjs +0 -5
  1159. package/src/benchmarks/raycasting.mjs +0 -152
  1160. package/src/benchmarks/transformMatrixKey.mjs +0 -97
  1161. package/src/util/internals/index.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Gradient.mjs","sources":["../../../src/gradient/Gradient.ts"],"sourcesContent":["import { Color } from '../color/Color';\nimport { iMatrix } from '../constants';\nimport { parseTransformAttribute } from '../parser/parseTransformAttribute';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TMat2D } from '../typedefs';\nimport { uid } from '../util/internals/uid';\nimport { pick } from '../util/misc/pick';\nimport { matrixToSVG } from '../util/misc/svgParsing';\nimport { linearDefaultCoords, radialDefaultCoords } from './constants';\nimport { parseColorStops } from './parser/parseColorStops';\nimport { parseCoords } from './parser/parseCoords';\nimport { parseType, parseGradientUnits } from './parser/misc';\nimport type {\n ColorStop,\n GradientCoords,\n GradientOptions,\n GradientType,\n GradientUnits,\n SVGOptions,\n} from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { isPath } from '../util/typeAssertions';\n\n/**\n * Gradient class\n * @class Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n */\nexport class Gradient<\n S,\n T extends GradientType = S extends GradientType ? S : 'linear'\n> {\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n declare offsetX: number;\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n declare offsetY: number;\n\n /**\n * A transform matrix to apply to the gradient before painting.\n * Imported from svg gradients, is not applied with the current transform in the center.\n * Before this transform is applied, the origin point is at the top left corner of the object\n * plus the addition of offsetY and offsetX.\n * @type Number[]\n * @default null\n */\n declare gradientTransform?: TMat2D;\n\n /**\n * coordinates units for coords.\n * If `pixels`, the number of coords are in the same unit of width / height.\n * If set as `percentage` the coords are still a number, but 1 means 100% of width\n * for the X and 100% of the height for the y. It can be bigger than 1 and negative.\n * allowed values pixels or percentage.\n * @type GradientUnits\n * @default 'pixels'\n */\n declare gradientUnits: GradientUnits;\n\n /**\n * Gradient type linear or radial\n * @type GradientType\n * @default 'linear'\n */\n declare type: T;\n\n /**\n * Defines how the gradient is located in space and spread\n * @type GradientCoords\n */\n declare coords: GradientCoords<T>;\n\n /**\n * Defines how many colors a gradient has and how they are located on the axis\n * defined by coords\n * @type GradientCoords\n */\n declare colorStops: ColorStop[];\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number | string\n */\n declare readonly id: string | number;\n\n static type = 'Gradient';\n\n constructor({\n type = 'linear' as T,\n gradientUnits = 'pixels',\n coords = {},\n colorStops = [],\n offsetX = 0,\n offsetY = 0,\n gradientTransform,\n id,\n }: GradientOptions<T>) {\n this.id = id ? `${id}_${uid()}` : uid();\n this.type = type;\n this.gradientUnits = gradientUnits;\n this.gradientTransform = gradientTransform;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n this.coords = {\n ...(this.type === 'radial' ? radialDefaultCoords : linearDefaultCoords),\n ...coords,\n } as GradientCoords<T>;\n this.colorStops = colorStops.slice();\n }\n\n // isType<S extends GradientType>(type: S): this is Gradient<S> {\n // return (this.type as GradientType) === type;\n // }\n\n /**\n * Adds another colorStop\n * @param {Record<string, string>} colorStop Object with offset and color\n * @return {Gradient} thisArg\n */\n addColorStop(colorStops: Record<string, string>) {\n for (const position in colorStops) {\n const color = new Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha(),\n });\n }\n return this;\n }\n\n /**\n * Returns object representation of a gradient\n * @param {string[]} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object}\n */\n toObject(propertiesToInclude?: (keyof this | string)[]) {\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: this.type,\n coords: this.coords,\n colorStops: this.colorStops,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientUnits: this.gradientUnits,\n gradientTransform: this.gradientTransform\n ? [...this.gradientTransform]\n : undefined,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {FabricObject} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG(\n object: FabricObject,\n { additionalTransform: preTransform }: { additionalTransform?: string } = {}\n ) {\n const markup = [],\n transform = (\n this.gradientTransform\n ? this.gradientTransform.concat()\n : iMatrix.concat()\n ) as TMat2D,\n gradientUnits =\n this.gradientUnits === 'pixels'\n ? 'userSpaceOnUse'\n : 'objectBoundingBox';\n // colorStops must be sorted ascending, and guarded against deep mutations\n const colorStops = this.colorStops\n .map((colorStop) => ({ ...colorStop }))\n .sort((a, b) => {\n return a.offset - b.offset;\n });\n\n let offsetX = -this.offsetX,\n offsetY = -this.offsetY;\n if (gradientUnits === 'objectBoundingBox') {\n offsetX /= object.width;\n offsetY /= object.height;\n } else {\n offsetX += object.width / 2;\n offsetY += object.height / 2;\n }\n // todo what about polygon/polyline?\n if (isPath(object) && this.gradientUnits !== 'percentage') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n transform[4] -= offsetX;\n transform[5] -= offsetY;\n\n const commonAttributes = [\n `id=\"SVGID_${this.id}\"`,\n `gradientUnits=\"${gradientUnits}\"`,\n `gradientTransform=\"${\n preTransform ? preTransform + ' ' : ''\n }${matrixToSVG(transform)}\"`,\n '',\n ].join(' ');\n\n if (this.type === 'linear') {\n const { x1, y1, x2, y2 } = this.coords;\n markup.push(\n '<linearGradient ',\n commonAttributes,\n ' x1=\"',\n x1,\n '\" y1=\"',\n y1,\n '\" x2=\"',\n x2,\n '\" y2=\"',\n y2,\n '\">\\n'\n );\n } else if (this.type === 'radial') {\n const { x1, y1, x2, y2, r1, r2 } = this\n .coords as GradientCoords<'radial'>;\n const needsSwap = r1 > r2;\n // svg radial gradient has just 1 radius. the biggest.\n markup.push(\n '<radialGradient ',\n commonAttributes,\n ' cx=\"',\n needsSwap ? x1 : x2,\n '\" cy=\"',\n needsSwap ? y1 : y2,\n '\" r=\"',\n needsSwap ? r1 : r2,\n '\" fx=\"',\n needsSwap ? x2 : x1,\n '\" fy=\"',\n needsSwap ? y2 : y1,\n '\">\\n'\n );\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops.reverse(); // mutates array\n colorStops.forEach((colorStop) => {\n colorStop.offset = 1 - colorStop.offset;\n });\n }\n const minRadius = Math.min(r1, r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n const maxRadius = Math.max(r1, r2),\n percentageShift = minRadius / maxRadius;\n colorStops.forEach((colorStop) => {\n colorStop.offset += percentageShift * (1 - colorStop.offset);\n });\n }\n }\n\n colorStops.forEach(({ color, offset, opacity }) => {\n markup.push(\n '<stop ',\n 'offset=\"',\n offset * 100 + '%',\n '\" style=\"stop-color:',\n color,\n typeof opacity !== 'undefined' ? ';stop-opacity: ' + opacity : ';',\n '\"/>\\n'\n );\n });\n\n markup.push(\n this.type === 'linear' ? '</linearGradient>' : '</radialGradient>',\n '\\n'\n );\n\n return markup.join('');\n }\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasGradient {\n const coords = this.coords as GradientCoords<'radial'>;\n const gradient =\n this.type === 'linear'\n ? ctx.createLinearGradient(coords.x1, coords.y1, coords.x2, coords.y2)\n : ctx.createRadialGradient(\n coords.x1,\n coords.y1,\n coords.r1,\n coords.x2,\n coords.y2,\n coords.r2\n );\n\n this.colorStops.forEach(({ color, opacity, offset }) => {\n gradient.addColorStop(\n offset,\n typeof opacity !== 'undefined'\n ? new Color(color).setAlpha(opacity).toRgba()\n : color\n );\n });\n\n return gradient;\n }\n\n static async fromObject(\n options: GradientOptions<'linear'>\n ): Promise<Gradient<'radial'>>;\n static async fromObject(\n options: GradientOptions<'radial'>\n ): Promise<Gradient<'radial'>>;\n static async fromObject(\n options: GradientOptions<'linear'> | GradientOptions<'radial'>\n ) {\n return new this(options);\n }\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link Gradient} instance from an SVG element\n * @static\n * @memberOf Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {FabricObject} instance\n * @param {String} opacity A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity.\n * @param {SVGOptions} svgOptions an object containing the size of the SVG in order to parse correctly gradients\n * that uses gradientUnits as 'userSpaceOnUse' and percentages.\n * @return {Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n *\n * @example\n *\n * <linearGradient id=\"linearGrad1\">\n * <stop offset=\"0%\" stop-color=\"white\"/>\n * <stop offset=\"100%\" stop-color=\"black\"/>\n * </linearGradient>\n *\n * OR\n *\n * <linearGradient id=\"linearGrad2\">\n * <stop offset=\"0\" style=\"stop-color:rgb(255,255,255)\"/>\n * <stop offset=\"1\" style=\"stop-color:rgb(0,0,0)\"/>\n * </linearGradient>\n *\n * OR\n *\n * <radialGradient id=\"radialGrad1\">\n * <stop offset=\"0%\" stop-color=\"white\" stop-opacity=\"1\" />\n * <stop offset=\"50%\" stop-color=\"black\" stop-opacity=\"0.5\" />\n * <stop offset=\"100%\" stop-color=\"white\" stop-opacity=\"1\" />\n * </radialGradient>\n *\n * OR\n *\n * <radialGradient id=\"radialGrad2\">\n * <stop offset=\"0\" stop-color=\"rgb(255,255,255)\" />\n * <stop offset=\"0.5\" stop-color=\"rgb(0,0,0)\" />\n * <stop offset=\"1\" stop-color=\"rgb(255,255,255)\" />\n * </radialGradient>\n *\n */\n static fromElement(\n el: SVGGradientElement,\n instance: FabricObject,\n svgOptions: SVGOptions\n ): Gradient<GradientType> {\n const gradientUnits = parseGradientUnits(el);\n const center = instance._findCenterFromElement();\n return new this({\n id: el.getAttribute('id') || undefined,\n type: parseType(el),\n coords: parseCoords(el, {\n width: svgOptions.viewBoxWidth || svgOptions.width,\n height: svgOptions.viewBoxHeight || svgOptions.height,\n }),\n colorStops: parseColorStops(el, svgOptions.opacity),\n gradientUnits,\n gradientTransform: parseTransformAttribute(\n el.getAttribute('gradientTransform') || ''\n ),\n ...(gradientUnits === 'pixels'\n ? {\n offsetX: instance.width / 2 - center.x,\n offsetY: instance.height / 2 - center.y,\n }\n : {\n offsetX: 0,\n offsetY: 0,\n }),\n });\n }\n /* _FROM_SVG_END_ */\n}\n\nclassRegistry.setClass(Gradient, 'gradient');\nclassRegistry.setClass(Gradient, 'linear');\nclassRegistry.setClass(Gradient, 'radial');\n"],"names":["Gradient","constructor","_ref","type","gradientUnits","coords","colorStops","offsetX","offsetY","gradientTransform","id","concat","uid","_objectSpread","radialDefaultCoords","linearDefaultCoords","slice","addColorStop","position","color","Color","push","offset","parseFloat","toRgb","opacity","getAlpha","toObject","propertiesToInclude","pick","undefined","toSVG","object","additionalTransform","preTransform","arguments","length","markup","transform","iMatrix","map","colorStop","sort","a","b","width","height","isPath","pathOffset","x","y","commonAttributes","matrixToSVG","join","x1","y1","x2","y2","r1","r2","needsSwap","reverse","forEach","minRadius","Math","min","maxRadius","max","percentageShift","_ref2","toLive","ctx","gradient","createLinearGradient","createRadialGradient","_ref3","setAlpha","toRgba","fromObject","options","fromElement","el","instance","svgOptions","parseGradientUnits","center","_findCenterFromElement","getAttribute","parseType","parseCoords","viewBoxWidth","viewBoxHeight","parseColorStops","parseTransformAttribute","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;;;;;;;;;AAuBA;AACA;AACA;AACA;AACA;AACO,MAAMA,QAAQ,CAGnB;EAsEAC,WAAWA,CAAAC,IAAA,EASY;IAAA,IATX;AACVC,MAAAA,IAAI,GAAG,QAAa;AACpBC,MAAAA,aAAa,GAAG,QAAQ;MACxBC,MAAM,GAAG,EAAE;AACXC,MAAAA,UAAU,GAAG,EAAE;AACfC,MAAAA,OAAO,GAAG,CAAC;AACXC,MAAAA,OAAO,GAAG,CAAC;MACXC,iBAAiB;AACjBC,MAAAA,EAAAA;AACkB,KAAC,GAAAR,IAAA,CAAA;AACnB,IAAA,IAAI,CAACQ,EAAE,GAAGA,EAAE,GAAA,EAAA,CAAAC,MAAA,CAAMD,EAAE,EAAAC,GAAAA,CAAAA,CAAAA,MAAA,CAAIC,GAAG,EAAE,CAAKA,GAAAA,GAAG,EAAE,CAAA;IACvC,IAAI,CAACT,IAAI,GAAGA,IAAI,CAAA;IAChB,IAAI,CAACC,aAAa,GAAGA,aAAa,CAAA;IAClC,IAAI,CAACK,iBAAiB,GAAGA,iBAAiB,CAAA;IAC1C,IAAI,CAACF,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;AACtB,IAAA,IAAI,CAACH,MAAM,GAAAQ,cAAA,CAAAA,cAAA,KACL,IAAI,CAACV,IAAI,KAAK,QAAQ,GAAGW,mBAAmB,GAAGC,mBAAmB,CAAA,EACnEV,MAAM,CACW,CAAA;AACtB,IAAA,IAAI,CAACC,UAAU,GAAGA,UAAU,CAACU,KAAK,EAAE,CAAA;AACtC,GAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACA;EACEC,YAAYA,CAACX,UAAkC,EAAE;AAC/C,IAAA,KAAK,MAAMY,QAAQ,IAAIZ,UAAU,EAAE;MACjC,MAAMa,KAAK,GAAG,IAAIC,KAAK,CAACd,UAAU,CAACY,QAAQ,CAAC,CAAC,CAAA;AAC7C,MAAA,IAAI,CAACZ,UAAU,CAACe,IAAI,CAAC;AACnBC,QAAAA,MAAM,EAAEC,UAAU,CAACL,QAAQ,CAAC;AAC5BC,QAAAA,KAAK,EAAEA,KAAK,CAACK,KAAK,EAAE;AACpBC,QAAAA,OAAO,EAAEN,KAAK,CAACO,QAAQ,EAAC;AAC1B,OAAC,CAAC,CAAA;AACJ,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;;AAEA;AACF;AACA;AACA;AACA;EACEC,QAAQA,CAACC,mBAA6C,EAAE;IACtD,OAAAf,cAAA,CAAAA,cAAA,CAAA,EAAA,EACKgB,IAAI,CAAC,IAAI,EAAED,mBAAqC,CAAC,CAAA,EAAA,EAAA,EAAA;MACpDzB,IAAI,EAAE,IAAI,CAACA,IAAI;MACfE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBC,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBJ,aAAa,EAAE,IAAI,CAACA,aAAa;MACjCK,iBAAiB,EAAE,IAAI,CAACA,iBAAiB,GACrC,CAAC,GAAG,IAAI,CAACA,iBAAiB,CAAC,GAC3BqB,SAAAA;AAAS,KAAA,CAAA,CAAA;AAEjB,GAAA;;AAEA;AACA;AACF;AACA;AACA;AACA;EACEC,KAAKA,CACHC,MAAoB,EAEpB;IAAA,IADA;AAAEC,MAAAA,mBAAmB,EAAEC,YAAAA;AAA+C,KAAC,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAL,CAAAA,CAAAA,KAAAA,SAAA,GAAAK,SAAA,CAAG,CAAA,CAAA,GAAA,EAAE,CAAA;IAE5E,MAAME,MAAM,GAAG,EAAE;AACfC,MAAAA,SAAS,GACP,IAAI,CAAC7B,iBAAiB,GAClB,IAAI,CAACA,iBAAiB,CAACE,MAAM,EAAE,GAC/B4B,OAAO,CAAC5B,MAAM,EACT;MACXP,aAAa,GACX,IAAI,CAACA,aAAa,KAAK,QAAQ,GAC3B,gBAAgB,GAChB,mBAAmB,CAAA;AAC3B;IACA,MAAME,UAAU,GAAG,IAAI,CAACA,UAAU,CAC/BkC,GAAG,CAAEC,SAAS,IAAA5B,cAAA,KAAW4B,SAAS,CAAG,CAAC,CACtCC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAK;AACd,MAAA,OAAOD,CAAC,CAACrB,MAAM,GAAGsB,CAAC,CAACtB,MAAM,CAAA;AAC5B,KAAC,CAAC,CAAA;AAEJ,IAAA,IAAIf,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO;AACzBC,MAAAA,OAAO,GAAG,CAAC,IAAI,CAACA,OAAO,CAAA;IACzB,IAAIJ,aAAa,KAAK,mBAAmB,EAAE;MACzCG,OAAO,IAAIyB,MAAM,CAACa,KAAK,CAAA;MACvBrC,OAAO,IAAIwB,MAAM,CAACc,MAAM,CAAA;AAC1B,KAAC,MAAM;AACLvC,MAAAA,OAAO,IAAIyB,MAAM,CAACa,KAAK,GAAG,CAAC,CAAA;AAC3BrC,MAAAA,OAAO,IAAIwB,MAAM,CAACc,MAAM,GAAG,CAAC,CAAA;AAC9B,KAAA;AACA;IACA,IAAIC,MAAM,CAACf,MAAM,CAAC,IAAI,IAAI,CAAC5B,aAAa,KAAK,YAAY,EAAE;AACzDG,MAAAA,OAAO,IAAIyB,MAAM,CAACgB,UAAU,CAACC,CAAC,CAAA;AAC9BzC,MAAAA,OAAO,IAAIwB,MAAM,CAACgB,UAAU,CAACE,CAAC,CAAA;AAChC,KAAA;AACAZ,IAAAA,SAAS,CAAC,CAAC,CAAC,IAAI/B,OAAO,CAAA;AACvB+B,IAAAA,SAAS,CAAC,CAAC,CAAC,IAAI9B,OAAO,CAAA;AAEvB,IAAA,MAAM2C,gBAAgB,GAAG,CAAA,aAAA,CAAAxC,MAAA,CACV,IAAI,CAACD,EAAE,EAAAC,IAAAA,CAAAA,EAAAA,kBAAAA,CAAAA,MAAA,CACFP,aAAa,EAAA,IAAA,CAAA,EAAA,sBAAA,CAAAO,MAAA,CAE7BuB,YAAY,GAAGA,YAAY,GAAG,GAAG,GAAG,EAAE,CAAA,CAAAvB,MAAA,CACrCyC,WAAW,CAACd,SAAS,CAAC,EAAA,IAAA,CAAA,EACzB,EAAE,CACH,CAACe,IAAI,CAAC,GAAG,CAAC,CAAA;AAEX,IAAA,IAAI,IAAI,CAAClD,IAAI,KAAK,QAAQ,EAAE;MAC1B,MAAM;QAAEmD,EAAE;QAAEC,EAAE;QAAEC,EAAE;AAAEC,QAAAA,EAAAA;OAAI,GAAG,IAAI,CAACpD,MAAM,CAAA;MACtCgC,MAAM,CAAChB,IAAI,CACT,kBAAkB,EAClB8B,gBAAgB,EAChB,OAAO,EACPG,EAAE,EACF,QAAQ,EACRC,EAAE,EACF,QAAQ,EACRC,EAAE,EACF,QAAQ,EACRC,EAAE,EACF,MACF,CAAC,CAAA;AACH,KAAC,MAAM,IAAI,IAAI,CAACtD,IAAI,KAAK,QAAQ,EAAE;MACjC,MAAM;QAAEmD,EAAE;QAAEC,EAAE;QAAEC,EAAE;QAAEC,EAAE;QAAEC,EAAE;AAAEC,QAAAA,EAAAA;OAAI,GAAG,IAAI,CACpCtD,MAAkC,CAAA;AACrC,MAAA,MAAMuD,SAAS,GAAGF,EAAE,GAAGC,EAAE,CAAA;AACzB;MACAtB,MAAM,CAAChB,IAAI,CACT,kBAAkB,EAClB8B,gBAAgB,EAChB,OAAO,EACPS,SAAS,GAAGN,EAAE,GAAGE,EAAE,EACnB,QAAQ,EACRI,SAAS,GAAGL,EAAE,GAAGE,EAAE,EACnB,OAAO,EACPG,SAAS,GAAGF,EAAE,GAAGC,EAAE,EACnB,QAAQ,EACRC,SAAS,GAAGJ,EAAE,GAAGF,EAAE,EACnB,QAAQ,EACRM,SAAS,GAAGH,EAAE,GAAGF,EAAE,EACnB,MACF,CAAC,CAAA;AACD,MAAA,IAAIK,SAAS,EAAE;AACb;AACAtD,QAAAA,UAAU,CAACuD,OAAO,EAAE,CAAC;AACrBvD,QAAAA,UAAU,CAACwD,OAAO,CAAErB,SAAS,IAAK;AAChCA,UAAAA,SAAS,CAACnB,MAAM,GAAG,CAAC,GAAGmB,SAAS,CAACnB,MAAM,CAAA;AACzC,SAAC,CAAC,CAAA;AACJ,OAAA;MACA,MAAMyC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAACP,EAAE,EAAEC,EAAE,CAAC,CAAA;MAClC,IAAII,SAAS,GAAG,CAAC,EAAE;AACjB;QACA,MAAMG,SAAS,GAAGF,IAAI,CAACG,GAAG,CAACT,EAAE,EAAEC,EAAE,CAAC;UAChCS,eAAe,GAAGL,SAAS,GAAGG,SAAS,CAAA;AACzC5D,QAAAA,UAAU,CAACwD,OAAO,CAAErB,SAAS,IAAK;UAChCA,SAAS,CAACnB,MAAM,IAAI8C,eAAe,IAAI,CAAC,GAAG3B,SAAS,CAACnB,MAAM,CAAC,CAAA;AAC9D,SAAC,CAAC,CAAA;AACJ,OAAA;AACF,KAAA;AAEAhB,IAAAA,UAAU,CAACwD,OAAO,CAACO,KAAA,IAAgC;MAAA,IAA/B;QAAElD,KAAK;QAAEG,MAAM;AAAEG,QAAAA,OAAAA;AAAQ,OAAC,GAAA4C,KAAA,CAAA;AAC5ChC,MAAAA,MAAM,CAAChB,IAAI,CACT,QAAQ,EACR,UAAU,EACVC,MAAM,GAAG,GAAG,GAAG,GAAG,EAClB,sBAAsB,EACtBH,KAAK,EACL,OAAOM,OAAO,KAAK,WAAW,GAAG,iBAAiB,GAAGA,OAAO,GAAG,GAAG,EAClE,OACF,CAAC,CAAA;AACH,KAAC,CAAC,CAAA;AAEFY,IAAAA,MAAM,CAAChB,IAAI,CACT,IAAI,CAAClB,IAAI,KAAK,QAAQ,GAAG,mBAAmB,GAAG,mBAAmB,EAClE,IACF,CAAC,CAAA;AAED,IAAA,OAAOkC,MAAM,CAACgB,IAAI,CAAC,EAAE,CAAC,CAAA;AACxB,GAAA;AACA;;AAEA;AACF;AACA;AACA;AACA;EACEiB,MAAMA,CAACC,GAA6B,EAAkB;AACpD,IAAA,MAAMlE,MAAM,GAAG,IAAI,CAACA,MAAkC,CAAA;IACtD,MAAMmE,QAAQ,GACZ,IAAI,CAACrE,IAAI,KAAK,QAAQ,GAClBoE,GAAG,CAACE,oBAAoB,CAACpE,MAAM,CAACiD,EAAE,EAAEjD,MAAM,CAACkD,EAAE,EAAElD,MAAM,CAACmD,EAAE,EAAEnD,MAAM,CAACoD,EAAE,CAAC,GACpEc,GAAG,CAACG,oBAAoB,CACtBrE,MAAM,CAACiD,EAAE,EACTjD,MAAM,CAACkD,EAAE,EACTlD,MAAM,CAACqD,EAAE,EACTrD,MAAM,CAACmD,EAAE,EACTnD,MAAM,CAACoD,EAAE,EACTpD,MAAM,CAACsD,EACT,CAAC,CAAA;AAEP,IAAA,IAAI,CAACrD,UAAU,CAACwD,OAAO,CAACa,KAAA,IAAgC;MAAA,IAA/B;QAAExD,KAAK;QAAEM,OAAO;AAAEH,QAAAA,MAAAA;AAAO,OAAC,GAAAqD,KAAA,CAAA;MACjDH,QAAQ,CAACvD,YAAY,CACnBK,MAAM,EACN,OAAOG,OAAO,KAAK,WAAW,GAC1B,IAAIL,KAAK,CAACD,KAAK,CAAC,CAACyD,QAAQ,CAACnD,OAAO,CAAC,CAACoD,MAAM,EAAE,GAC3C1D,KACN,CAAC,CAAA;AACH,KAAC,CAAC,CAAA;AAEF,IAAA,OAAOqD,QAAQ,CAAA;AACjB,GAAA;EAQA,aAAaM,UAAUA,CACrBC,OAA8D,EAC9D;AACA,IAAA,OAAO,IAAI,IAAI,CAACA,OAAO,CAAC,CAAA;AAC1B,GAAA;;AAEA;AACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOC,WAAWA,CAChBC,EAAsB,EACtBC,QAAsB,EACtBC,UAAsB,EACE;AACxB,IAAA,MAAM/E,aAAa,GAAGgF,kBAAkB,CAACH,EAAE,CAAC,CAAA;AAC5C,IAAA,MAAMI,MAAM,GAAGH,QAAQ,CAACI,sBAAsB,EAAE,CAAA;IAChD,OAAO,IAAI,IAAI,CAAAzE,cAAA,CAAA;MACbH,EAAE,EAAEuE,EAAE,CAACM,YAAY,CAAC,IAAI,CAAC,IAAIzD,SAAS;AACtC3B,MAAAA,IAAI,EAAEqF,SAAS,CAACP,EAAE,CAAC;AACnB5E,MAAAA,MAAM,EAAEoF,WAAW,CAACR,EAAE,EAAE;AACtBpC,QAAAA,KAAK,EAAEsC,UAAU,CAACO,YAAY,IAAIP,UAAU,CAACtC,KAAK;AAClDC,QAAAA,MAAM,EAAEqC,UAAU,CAACQ,aAAa,IAAIR,UAAU,CAACrC,MAAAA;AACjD,OAAC,CAAC;MACFxC,UAAU,EAAEsF,eAAe,CAACX,EAAE,EAAEE,UAAU,CAAC1D,OAAO,CAAC;MACnDrB,aAAa;MACbK,iBAAiB,EAAEoF,uBAAuB,CACxCZ,EAAE,CAACM,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAC1C,CAAA;KACInF,EAAAA,aAAa,KAAK,QAAQ,GAC1B;MACEG,OAAO,EAAE2E,QAAQ,CAACrC,KAAK,GAAG,CAAC,GAAGwC,MAAM,CAACpC,CAAC;MACtCzC,OAAO,EAAE0E,QAAQ,CAACpC,MAAM,GAAG,CAAC,GAAGuC,MAAM,CAACnC,CAAAA;AACxC,KAAC,GACD;AACE3C,MAAAA,OAAO,EAAE,CAAC;AACVC,MAAAA,OAAO,EAAE,CAAA;AACX,KAAC,CACN,CAAC,CAAA;AACJ,GAAA;AACA;AACF,CAAA;AA3XE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AACA;AAGE;AACF;AACA;AACA;AAGE;AACF;AACA;AACA;AAHEsF,eAAA,CAjEW9F,QAAQ,EAAA,MAAA,EAuEL,UAAU,CAAA,CAAA;AA0T1B+F,aAAa,CAACC,QAAQ,CAAChG,QAAQ,EAAE,UAAU,CAAC,CAAA;AAC5C+F,aAAa,CAACC,QAAQ,CAAChG,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC1C+F,aAAa,CAACC,QAAQ,CAAChG,QAAQ,EAAE,QAAQ,CAAC;;;;"}
1
+ {"version":3,"file":"Gradient.mjs","sources":["../../../src/gradient/Gradient.ts"],"sourcesContent":["import { Color } from '../color/Color';\nimport { iMatrix } from '../constants';\nimport { parseTransformAttribute } from '../parser/parseTransformAttribute';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport type { TMat2D } from '../typedefs';\nimport { uid } from '../util/internals/uid';\nimport { pick } from '../util/misc/pick';\nimport { matrixToSVG } from '../util/misc/svgParsing';\nimport { linearDefaultCoords, radialDefaultCoords } from './constants';\nimport { parseColorStops } from './parser/parseColorStops';\nimport { parseCoords } from './parser/parseCoords';\nimport { parseType, parseGradientUnits } from './parser/misc';\nimport type {\n ColorStop,\n GradientCoords,\n GradientOptions,\n GradientType,\n GradientUnits,\n SVGOptions,\n} from './typedefs';\nimport { classRegistry } from '../ClassRegistry';\nimport { isPath } from '../util/typeAssertions';\n\n/**\n * Gradient class\n * @class Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n */\nexport class Gradient<\n S,\n T extends GradientType = S extends GradientType ? S : 'linear',\n> {\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n declare offsetX: number;\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n declare offsetY: number;\n\n /**\n * A transform matrix to apply to the gradient before painting.\n * Imported from svg gradients, is not applied with the current transform in the center.\n * Before this transform is applied, the origin point is at the top left corner of the object\n * plus the addition of offsetY and offsetX.\n * @type Number[]\n * @default null\n */\n declare gradientTransform?: TMat2D;\n\n /**\n * coordinates units for coords.\n * If `pixels`, the number of coords are in the same unit of width / height.\n * If set as `percentage` the coords are still a number, but 1 means 100% of width\n * for the X and 100% of the height for the y. It can be bigger than 1 and negative.\n * allowed values pixels or percentage.\n * @type GradientUnits\n * @default 'pixels'\n */\n declare gradientUnits: GradientUnits;\n\n /**\n * Gradient type linear or radial\n * @type GradientType\n * @default 'linear'\n */\n declare type: T;\n\n /**\n * Defines how the gradient is located in space and spread\n * @type GradientCoords\n */\n declare coords: GradientCoords<T>;\n\n /**\n * Defines how many colors a gradient has and how they are located on the axis\n * defined by coords\n * @type GradientCoords\n */\n declare colorStops: ColorStop[];\n\n /**\n * If true, this object will not be exported during the serialization of a canvas\n * @type boolean\n */\n declare excludeFromExport?: boolean;\n\n /**\n * ID used for SVG export functionalities\n * @type number | string\n */\n declare readonly id: string | number;\n\n static type = 'Gradient';\n\n constructor(options: GradientOptions<T>) {\n const {\n type = 'linear' as T,\n gradientUnits = 'pixels',\n coords = {},\n colorStops = [],\n offsetX = 0,\n offsetY = 0,\n gradientTransform,\n id,\n } = options || {};\n Object.assign(this, {\n type,\n gradientUnits,\n coords: {\n ...(type === 'radial' ? radialDefaultCoords : linearDefaultCoords),\n ...coords,\n },\n colorStops,\n offsetX,\n offsetY,\n gradientTransform,\n id: id ? `${id}_${uid()}` : uid(),\n });\n }\n\n /**\n * Adds another colorStop\n * @param {Record<string, string>} colorStop Object with offset and color\n * @return {Gradient} thisArg\n */\n addColorStop(colorStops: Record<string, string>) {\n for (const position in colorStops) {\n const color = new Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha(),\n });\n }\n return this;\n }\n\n /**\n * Returns object representation of a gradient\n * @param {string[]} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object}\n */\n toObject(propertiesToInclude?: (keyof this | string)[]) {\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: this.type,\n coords: { ...this.coords },\n colorStops: this.colorStops.map((colorStop) => ({ ...colorStop })),\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientUnits: this.gradientUnits,\n gradientTransform: this.gradientTransform\n ? [...this.gradientTransform]\n : undefined,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {FabricObject} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG(\n object: FabricObject,\n {\n additionalTransform: preTransform,\n }: { additionalTransform?: string } = {},\n ) {\n const markup = [],\n transform = (\n this.gradientTransform\n ? this.gradientTransform.concat()\n : iMatrix.concat()\n ) as TMat2D,\n gradientUnits =\n this.gradientUnits === 'pixels'\n ? 'userSpaceOnUse'\n : 'objectBoundingBox';\n // colorStops must be sorted ascending, and guarded against deep mutations\n const colorStops = this.colorStops\n .map((colorStop) => ({ ...colorStop }))\n .sort((a, b) => {\n return a.offset - b.offset;\n });\n\n let offsetX = -this.offsetX,\n offsetY = -this.offsetY;\n if (gradientUnits === 'objectBoundingBox') {\n offsetX /= object.width;\n offsetY /= object.height;\n } else {\n offsetX += object.width / 2;\n offsetY += object.height / 2;\n }\n // todo what about polygon/polyline?\n if (isPath(object) && this.gradientUnits !== 'percentage') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n transform[4] -= offsetX;\n transform[5] -= offsetY;\n\n const commonAttributes = [\n `id=\"SVGID_${this.id}\"`,\n `gradientUnits=\"${gradientUnits}\"`,\n `gradientTransform=\"${\n preTransform ? preTransform + ' ' : ''\n }${matrixToSVG(transform)}\"`,\n '',\n ].join(' ');\n\n if (this.type === 'linear') {\n const { x1, y1, x2, y2 } = this.coords;\n markup.push(\n '<linearGradient ',\n commonAttributes,\n ' x1=\"',\n x1,\n '\" y1=\"',\n y1,\n '\" x2=\"',\n x2,\n '\" y2=\"',\n y2,\n '\">\\n',\n );\n } else if (this.type === 'radial') {\n const { x1, y1, x2, y2, r1, r2 } = this\n .coords as GradientCoords<'radial'>;\n const needsSwap = r1 > r2;\n // svg radial gradient has just 1 radius. the biggest.\n markup.push(\n '<radialGradient ',\n commonAttributes,\n ' cx=\"',\n needsSwap ? x1 : x2,\n '\" cy=\"',\n needsSwap ? y1 : y2,\n '\" r=\"',\n needsSwap ? r1 : r2,\n '\" fx=\"',\n needsSwap ? x2 : x1,\n '\" fy=\"',\n needsSwap ? y2 : y1,\n '\">\\n',\n );\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops.reverse(); // mutates array\n colorStops.forEach((colorStop) => {\n colorStop.offset = 1 - colorStop.offset;\n });\n }\n const minRadius = Math.min(r1, r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n const maxRadius = Math.max(r1, r2),\n percentageShift = minRadius / maxRadius;\n colorStops.forEach((colorStop) => {\n colorStop.offset += percentageShift * (1 - colorStop.offset);\n });\n }\n }\n\n colorStops.forEach(({ color, offset, opacity }) => {\n markup.push(\n '<stop ',\n 'offset=\"',\n offset * 100 + '%',\n '\" style=\"stop-color:',\n color,\n typeof opacity !== 'undefined' ? ';stop-opacity: ' + opacity : ';',\n '\"/>\\n',\n );\n });\n\n markup.push(\n this.type === 'linear' ? '</linearGradient>' : '</radialGradient>',\n '\\n',\n );\n\n return markup.join('');\n }\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasGradient {\n const { x1, y1, x2, y2, r1, r2 } = this.coords as GradientCoords<'radial'>;\n const gradient =\n this.type === 'linear'\n ? ctx.createLinearGradient(x1, y1, x2, y2)\n : ctx.createRadialGradient(x1, y1, r1, x2, y2, r2);\n\n this.colorStops.forEach(({ color, opacity, offset }) => {\n gradient.addColorStop(\n offset,\n typeof opacity !== 'undefined'\n ? new Color(color).setAlpha(opacity).toRgba()\n : color,\n );\n });\n\n return gradient;\n }\n\n static async fromObject(\n options: GradientOptions<'linear'>,\n ): Promise<Gradient<'radial'>>;\n static async fromObject(\n options: GradientOptions<'radial'>,\n ): Promise<Gradient<'radial'>>;\n static async fromObject(\n options: GradientOptions<'linear'> | GradientOptions<'radial'>,\n ) {\n const { colorStops, gradientTransform } = options;\n return new this({\n ...options,\n colorStops: colorStops\n ? colorStops.map((colorStop) => ({ ...colorStop }))\n : undefined,\n gradientTransform: gradientTransform ? [...gradientTransform] : undefined,\n });\n }\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link Gradient} instance from an SVG element\n * @static\n * @memberOf Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {FabricObject} instance\n * @param {String} opacity A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity.\n * @param {SVGOptions} svgOptions an object containing the size of the SVG in order to parse correctly gradients\n * that uses gradientUnits as 'userSpaceOnUse' and percentages.\n * @return {Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n *\n * @example\n *\n * <linearGradient id=\"linearGrad1\">\n * <stop offset=\"0%\" stop-color=\"white\"/>\n * <stop offset=\"100%\" stop-color=\"black\"/>\n * </linearGradient>\n *\n * OR\n *\n * <linearGradient id=\"linearGrad2\">\n * <stop offset=\"0\" style=\"stop-color:rgb(255,255,255)\"/>\n * <stop offset=\"1\" style=\"stop-color:rgb(0,0,0)\"/>\n * </linearGradient>\n *\n * OR\n *\n * <radialGradient id=\"radialGrad1\">\n * <stop offset=\"0%\" stop-color=\"white\" stop-opacity=\"1\" />\n * <stop offset=\"50%\" stop-color=\"black\" stop-opacity=\"0.5\" />\n * <stop offset=\"100%\" stop-color=\"white\" stop-opacity=\"1\" />\n * </radialGradient>\n *\n * OR\n *\n * <radialGradient id=\"radialGrad2\">\n * <stop offset=\"0\" stop-color=\"rgb(255,255,255)\" />\n * <stop offset=\"0.5\" stop-color=\"rgb(0,0,0)\" />\n * <stop offset=\"1\" stop-color=\"rgb(255,255,255)\" />\n * </radialGradient>\n *\n */\n static fromElement(\n el: SVGGradientElement,\n instance: FabricObject,\n svgOptions: SVGOptions,\n ): Gradient<GradientType> {\n const gradientUnits = parseGradientUnits(el);\n const center = instance._findCenterFromElement();\n return new this({\n id: el.getAttribute('id') || undefined,\n type: parseType(el),\n coords: parseCoords(el, {\n width: svgOptions.viewBoxWidth || svgOptions.width,\n height: svgOptions.viewBoxHeight || svgOptions.height,\n }),\n colorStops: parseColorStops(el, svgOptions.opacity),\n gradientUnits,\n gradientTransform: parseTransformAttribute(\n el.getAttribute('gradientTransform') || '',\n ),\n ...(gradientUnits === 'pixels'\n ? {\n offsetX: instance.width / 2 - center.x,\n offsetY: instance.height / 2 - center.y,\n }\n : {\n offsetX: 0,\n offsetY: 0,\n }),\n });\n }\n /* _FROM_SVG_END_ */\n}\n\nclassRegistry.setClass(Gradient, 'gradient');\nclassRegistry.setClass(Gradient, 'linear');\nclassRegistry.setClass(Gradient, 'radial');\n"],"names":["Gradient","constructor","options","type","gradientUnits","coords","colorStops","offsetX","offsetY","gradientTransform","id","Object","assign","_objectSpread","radialDefaultCoords","linearDefaultCoords","concat","uid","addColorStop","position","color","Color","push","offset","parseFloat","toRgb","opacity","getAlpha","toObject","propertiesToInclude","pick","map","colorStop","undefined","toSVG","object","additionalTransform","preTransform","arguments","length","markup","transform","iMatrix","sort","a","b","width","height","isPath","pathOffset","x","y","commonAttributes","matrixToSVG","join","x1","y1","x2","y2","r1","r2","needsSwap","reverse","forEach","minRadius","Math","min","maxRadius","max","percentageShift","_ref","toLive","ctx","gradient","createLinearGradient","createRadialGradient","_ref2","setAlpha","toRgba","fromObject","fromElement","el","instance","svgOptions","parseGradientUnits","center","_findCenterFromElement","getAttribute","parseType","parseCoords","viewBoxWidth","viewBoxHeight","parseColorStops","parseTransformAttribute","_defineProperty","classRegistry","setClass"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseColorStops.min.mjs","sources":["../../../../src/gradient/parser/parseColorStops.ts"],"sourcesContent":["import { Color } from '../../color/Color';\nimport { parsePercent } from '../../parser/percent';\nimport { ifNaN } from '../../util/internals';\nimport type { ColorStop } from '../typedefs';\n\nconst RE_KEY_VALUE_PAIRS = /\\s*;\\s*/;\nconst RE_KEY_VALUE = /\\s*:\\s*/;\n\nfunction parseColorStop(el: SVGStopElement, multiplier: number) {\n let colorValue, opacity;\n const style = el.getAttribute('style');\n if (style) {\n const keyValuePairs = style.split(RE_KEY_VALUE_PAIRS);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (let i = keyValuePairs.length; i--; ) {\n const [key, value] = keyValuePairs[i]\n .split(RE_KEY_VALUE)\n .map((s) => s.trim());\n if (key === 'stop-color') {\n colorValue = value;\n } else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n const color = new Color(\n colorValue || el.getAttribute('stop-color') || 'rgb(0,0,0)'\n );\n\n return {\n offset: parsePercent(el.getAttribute('offset'), 0),\n color: color.toRgb(),\n opacity:\n ifNaN(parseFloat(opacity || el.getAttribute('stop-opacity') || ''), 1) *\n color.getAlpha() *\n multiplier,\n };\n}\n\nexport function parseColorStops(\n el: SVGGradientElement,\n opacityAttr: string | null\n) {\n const colorStops: ColorStop[] = [],\n colorStopEls = el.getElementsByTagName('stop'),\n multiplier = parsePercent(opacityAttr, 1);\n for (let i = colorStopEls.length; i--; ) {\n colorStops.push(parseColorStop(colorStopEls[i], multiplier));\n }\n return colorStops;\n}\n"],"names":["RE_KEY_VALUE_PAIRS","RE_KEY_VALUE","parseColorStop","el","multiplier","colorValue","opacity","style","getAttribute","keyValuePairs","split","length","pop","i","key","value","map","s","trim","color","Color","offset","parsePercent","toRgb","ifNaN","parseFloat","getAlpha","parseColorStops","opacityAttr","colorStops","colorStopEls","getElementsByTagName","push"],"mappings":"yKAKA,MAAMA,EAAqB,UACrBC,EAAe,UAErB,SAASC,EAAeC,EAAoBC,GAC1C,IAAIC,EAAYC,EAChB,MAAMC,EAAQJ,EAAGK,aAAa,SAC9B,GAAID,EAAO,CACT,MAAME,EAAgBF,EAAMG,MAAMV,GAEc,KAA5CS,EAAcA,EAAcE,OAAS,IACvCF,EAAcG,MAGhB,IAAK,IAAIC,EAAIJ,EAAcE,OAAQE,KAAO,CACxC,MAAOC,EAAKC,GAASN,EAAcI,GAChCH,MAAMT,GACNe,KAAKC,GAAMA,EAAEC,SACJ,eAARJ,EACFT,EAAaU,EACI,iBAARD,IACTR,EAAUS,EAEd,CACF,CAEA,MAAMI,EAAQ,IAAIC,EAChBf,GAAcF,EAAGK,aAAa,eAAiB,cAGjD,MAAO,CACLa,OAAQC,EAAanB,EAAGK,aAAa,UAAW,GAChDW,MAAOA,EAAMI,QACbjB,QACEkB,EAAMC,WAAWnB,GAAWH,EAAGK,aAAa,iBAAmB,IAAK,GACpEW,EAAMO,WACNtB,EAEN,CAEO,SAASuB,EACdxB,EACAyB,GAEA,MAAMC,EAA0B,GAC9BC,EAAe3B,EAAG4B,qBAAqB,QACvC3B,EAAakB,EAAaM,EAAa,GACzC,IAAK,IAAIf,EAAIiB,EAAanB,OAAQE,KAChCgB,EAAWG,KAAK9B,EAAe4B,EAAajB,GAAIT,IAElD,OAAOyB,CACT"}
1
+ {"version":3,"file":"parseColorStops.min.mjs","sources":["../../../../src/gradient/parser/parseColorStops.ts"],"sourcesContent":["import { Color } from '../../color/Color';\nimport { parsePercent } from '../../parser/percent';\nimport { ifNaN } from '../../util/internals/ifNaN';\nimport type { ColorStop } from '../typedefs';\n\nconst RE_KEY_VALUE_PAIRS = /\\s*;\\s*/;\nconst RE_KEY_VALUE = /\\s*:\\s*/;\n\nfunction parseColorStop(el: SVGStopElement, multiplier: number) {\n let colorValue, opacity;\n const style = el.getAttribute('style');\n if (style) {\n const keyValuePairs = style.split(RE_KEY_VALUE_PAIRS);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (let i = keyValuePairs.length; i--; ) {\n const [key, value] = keyValuePairs[i]\n .split(RE_KEY_VALUE)\n .map((s) => s.trim());\n if (key === 'stop-color') {\n colorValue = value;\n } else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n const color = new Color(\n colorValue || el.getAttribute('stop-color') || 'rgb(0,0,0)',\n );\n\n return {\n offset: parsePercent(el.getAttribute('offset'), 0),\n color: color.toRgb(),\n opacity:\n ifNaN(parseFloat(opacity || el.getAttribute('stop-opacity') || ''), 1) *\n color.getAlpha() *\n multiplier,\n };\n}\n\nexport function parseColorStops(\n el: SVGGradientElement,\n opacityAttr: string | null,\n) {\n const colorStops: ColorStop[] = [],\n colorStopEls = el.getElementsByTagName('stop'),\n multiplier = parsePercent(opacityAttr, 1);\n for (let i = colorStopEls.length; i--; ) {\n colorStops.push(parseColorStop(colorStopEls[i], multiplier));\n }\n return colorStops;\n}\n"],"names":["RE_KEY_VALUE_PAIRS","RE_KEY_VALUE","parseColorStop","el","multiplier","colorValue","opacity","style","getAttribute","keyValuePairs","split","length","pop","i","key","value","map","s","trim","color","Color","offset","parsePercent","toRgb","ifNaN","parseFloat","getAlpha","parseColorStops","opacityAttr","colorStops","colorStopEls","getElementsByTagName","push"],"mappings":"yKAKA,MAAMA,EAAqB,UACrBC,EAAe,UAErB,SAASC,EAAeC,EAAoBC,GAC1C,IAAIC,EAAYC,EAChB,MAAMC,EAAQJ,EAAGK,aAAa,SAC9B,GAAID,EAAO,CACT,MAAME,EAAgBF,EAAMG,MAAMV,GAEc,KAA5CS,EAAcA,EAAcE,OAAS,IACvCF,EAAcG,MAGhB,IAAK,IAAIC,EAAIJ,EAAcE,OAAQE,KAAO,CACxC,MAAOC,EAAKC,GAASN,EAAcI,GAChCH,MAAMT,GACNe,KAAKC,GAAMA,EAAEC,SACJ,eAARJ,EACFT,EAAaU,EACI,iBAARD,IACTR,EAAUS,EAEd,CACF,CAEA,MAAMI,EAAQ,IAAIC,EAChBf,GAAcF,EAAGK,aAAa,eAAiB,cAGjD,MAAO,CACLa,OAAQC,EAAanB,EAAGK,aAAa,UAAW,GAChDW,MAAOA,EAAMI,QACbjB,QACEkB,EAAMC,WAAWnB,GAAWH,EAAGK,aAAa,iBAAmB,IAAK,GACpEW,EAAMO,WACNtB,EAEN,CAEO,SAASuB,EACdxB,EACAyB,GAEA,MAAMC,EAA0B,GAC9BC,EAAe3B,EAAG4B,qBAAqB,QACvC3B,EAAakB,EAAaM,EAAa,GACzC,IAAK,IAAIf,EAAIiB,EAAanB,OAAQE,KAChCgB,EAAWG,KAAK9B,EAAe4B,EAAajB,GAAIT,IAElD,OAAOyB,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseColorStops.mjs","sources":["../../../../src/gradient/parser/parseColorStops.ts"],"sourcesContent":["import { Color } from '../../color/Color';\nimport { parsePercent } from '../../parser/percent';\nimport { ifNaN } from '../../util/internals';\nimport type { ColorStop } from '../typedefs';\n\nconst RE_KEY_VALUE_PAIRS = /\\s*;\\s*/;\nconst RE_KEY_VALUE = /\\s*:\\s*/;\n\nfunction parseColorStop(el: SVGStopElement, multiplier: number) {\n let colorValue, opacity;\n const style = el.getAttribute('style');\n if (style) {\n const keyValuePairs = style.split(RE_KEY_VALUE_PAIRS);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (let i = keyValuePairs.length; i--; ) {\n const [key, value] = keyValuePairs[i]\n .split(RE_KEY_VALUE)\n .map((s) => s.trim());\n if (key === 'stop-color') {\n colorValue = value;\n } else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n const color = new Color(\n colorValue || el.getAttribute('stop-color') || 'rgb(0,0,0)'\n );\n\n return {\n offset: parsePercent(el.getAttribute('offset'), 0),\n color: color.toRgb(),\n opacity:\n ifNaN(parseFloat(opacity || el.getAttribute('stop-opacity') || ''), 1) *\n color.getAlpha() *\n multiplier,\n };\n}\n\nexport function parseColorStops(\n el: SVGGradientElement,\n opacityAttr: string | null\n) {\n const colorStops: ColorStop[] = [],\n colorStopEls = el.getElementsByTagName('stop'),\n multiplier = parsePercent(opacityAttr, 1);\n for (let i = colorStopEls.length; i--; ) {\n colorStops.push(parseColorStop(colorStopEls[i], multiplier));\n }\n return colorStops;\n}\n"],"names":["RE_KEY_VALUE_PAIRS","RE_KEY_VALUE","parseColorStop","el","multiplier","colorValue","opacity","style","getAttribute","keyValuePairs","split","length","pop","i","key","value","map","s","trim","color","Color","offset","parsePercent","toRgb","ifNaN","parseFloat","getAlpha","parseColorStops","opacityAttr","colorStops","colorStopEls","getElementsByTagName","push"],"mappings":";;;;AAKA,MAAMA,kBAAkB,GAAG,SAAS,CAAA;AACpC,MAAMC,YAAY,GAAG,SAAS,CAAA;AAE9B,SAASC,cAAcA,CAACC,EAAkB,EAAEC,UAAkB,EAAE;EAC9D,IAAIC,UAAU,EAAEC,OAAO,CAAA;AACvB,EAAA,MAAMC,KAAK,GAAGJ,EAAE,CAACK,YAAY,CAAC,OAAO,CAAC,CAAA;AACtC,EAAA,IAAID,KAAK,EAAE;AACT,IAAA,MAAME,aAAa,GAAGF,KAAK,CAACG,KAAK,CAACV,kBAAkB,CAAC,CAAA;IAErD,IAAIS,aAAa,CAACA,aAAa,CAACE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;MAClDF,aAAa,CAACG,GAAG,EAAE,CAAA;AACrB,KAAA;IAEA,KAAK,IAAIC,CAAC,GAAGJ,aAAa,CAACE,MAAM,EAAEE,CAAC,EAAE,GAAI;MACxC,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAGN,aAAa,CAACI,CAAC,CAAC,CAClCH,KAAK,CAACT,YAAY,CAAC,CACnBe,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAE,CAAC,CAAA;MACvB,IAAIJ,GAAG,KAAK,YAAY,EAAE;AACxBT,QAAAA,UAAU,GAAGU,KAAK,CAAA;AACpB,OAAC,MAAM,IAAID,GAAG,KAAK,cAAc,EAAE;AACjCR,QAAAA,OAAO,GAAGS,KAAK,CAAA;AACjB,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,MAAMI,KAAK,GAAG,IAAIC,KAAK,CACrBf,UAAU,IAAIF,EAAE,CAACK,YAAY,CAAC,YAAY,CAAC,IAAI,YACjD,CAAC,CAAA;EAED,OAAO;IACLa,MAAM,EAAEC,YAAY,CAACnB,EAAE,CAACK,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClDW,IAAAA,KAAK,EAAEA,KAAK,CAACI,KAAK,EAAE;IACpBjB,OAAO,EACLkB,KAAK,CAACC,UAAU,CAACnB,OAAO,IAAIH,EAAE,CAACK,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GACtEW,KAAK,CAACO,QAAQ,EAAE,GAChBtB,UAAAA;GACH,CAAA;AACH,CAAA;AAEO,SAASuB,eAAeA,CAC7BxB,EAAsB,EACtByB,WAA0B,EAC1B;EACA,MAAMC,UAAuB,GAAG,EAAE;AAChCC,IAAAA,YAAY,GAAG3B,EAAE,CAAC4B,oBAAoB,CAAC,MAAM,CAAC;AAC9C3B,IAAAA,UAAU,GAAGkB,YAAY,CAACM,WAAW,EAAE,CAAC,CAAC,CAAA;EAC3C,KAAK,IAAIf,CAAC,GAAGiB,YAAY,CAACnB,MAAM,EAAEE,CAAC,EAAE,GAAI;AACvCgB,IAAAA,UAAU,CAACG,IAAI,CAAC9B,cAAc,CAAC4B,YAAY,CAACjB,CAAC,CAAC,EAAET,UAAU,CAAC,CAAC,CAAA;AAC9D,GAAA;AACA,EAAA,OAAOyB,UAAU,CAAA;AACnB;;;;"}
1
+ {"version":3,"file":"parseColorStops.mjs","sources":["../../../../src/gradient/parser/parseColorStops.ts"],"sourcesContent":["import { Color } from '../../color/Color';\nimport { parsePercent } from '../../parser/percent';\nimport { ifNaN } from '../../util/internals/ifNaN';\nimport type { ColorStop } from '../typedefs';\n\nconst RE_KEY_VALUE_PAIRS = /\\s*;\\s*/;\nconst RE_KEY_VALUE = /\\s*:\\s*/;\n\nfunction parseColorStop(el: SVGStopElement, multiplier: number) {\n let colorValue, opacity;\n const style = el.getAttribute('style');\n if (style) {\n const keyValuePairs = style.split(RE_KEY_VALUE_PAIRS);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (let i = keyValuePairs.length; i--; ) {\n const [key, value] = keyValuePairs[i]\n .split(RE_KEY_VALUE)\n .map((s) => s.trim());\n if (key === 'stop-color') {\n colorValue = value;\n } else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n const color = new Color(\n colorValue || el.getAttribute('stop-color') || 'rgb(0,0,0)',\n );\n\n return {\n offset: parsePercent(el.getAttribute('offset'), 0),\n color: color.toRgb(),\n opacity:\n ifNaN(parseFloat(opacity || el.getAttribute('stop-opacity') || ''), 1) *\n color.getAlpha() *\n multiplier,\n };\n}\n\nexport function parseColorStops(\n el: SVGGradientElement,\n opacityAttr: string | null,\n) {\n const colorStops: ColorStop[] = [],\n colorStopEls = el.getElementsByTagName('stop'),\n multiplier = parsePercent(opacityAttr, 1);\n for (let i = colorStopEls.length; i--; ) {\n colorStops.push(parseColorStop(colorStopEls[i], multiplier));\n }\n return colorStops;\n}\n"],"names":["RE_KEY_VALUE_PAIRS","RE_KEY_VALUE","parseColorStop","el","multiplier","colorValue","opacity","style","getAttribute","keyValuePairs","split","length","pop","i","key","value","map","s","trim","color","Color","offset","parsePercent","toRgb","ifNaN","parseFloat","getAlpha","parseColorStops","opacityAttr","colorStops","colorStopEls","getElementsByTagName","push"],"mappings":";;;;AAKA,MAAMA,kBAAkB,GAAG,SAAS,CAAA;AACpC,MAAMC,YAAY,GAAG,SAAS,CAAA;AAE9B,SAASC,cAAcA,CAACC,EAAkB,EAAEC,UAAkB,EAAE;EAC9D,IAAIC,UAAU,EAAEC,OAAO,CAAA;AACvB,EAAA,MAAMC,KAAK,GAAGJ,EAAE,CAACK,YAAY,CAAC,OAAO,CAAC,CAAA;AACtC,EAAA,IAAID,KAAK,EAAE;AACT,IAAA,MAAME,aAAa,GAAGF,KAAK,CAACG,KAAK,CAACV,kBAAkB,CAAC,CAAA;IAErD,IAAIS,aAAa,CAACA,aAAa,CAACE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;MAClDF,aAAa,CAACG,GAAG,EAAE,CAAA;AACrB,KAAA;IAEA,KAAK,IAAIC,CAAC,GAAGJ,aAAa,CAACE,MAAM,EAAEE,CAAC,EAAE,GAAI;MACxC,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAGN,aAAa,CAACI,CAAC,CAAC,CAClCH,KAAK,CAACT,YAAY,CAAC,CACnBe,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAE,CAAC,CAAA;MACvB,IAAIJ,GAAG,KAAK,YAAY,EAAE;AACxBT,QAAAA,UAAU,GAAGU,KAAK,CAAA;AACpB,OAAC,MAAM,IAAID,GAAG,KAAK,cAAc,EAAE;AACjCR,QAAAA,OAAO,GAAGS,KAAK,CAAA;AACjB,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,MAAMI,KAAK,GAAG,IAAIC,KAAK,CACrBf,UAAU,IAAIF,EAAE,CAACK,YAAY,CAAC,YAAY,CAAC,IAAI,YACjD,CAAC,CAAA;EAED,OAAO;IACLa,MAAM,EAAEC,YAAY,CAACnB,EAAE,CAACK,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClDW,IAAAA,KAAK,EAAEA,KAAK,CAACI,KAAK,EAAE;IACpBjB,OAAO,EACLkB,KAAK,CAACC,UAAU,CAACnB,OAAO,IAAIH,EAAE,CAACK,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GACtEW,KAAK,CAACO,QAAQ,EAAE,GAChBtB,UAAAA;GACH,CAAA;AACH,CAAA;AAEO,SAASuB,eAAeA,CAC7BxB,EAAsB,EACtByB,WAA0B,EAC1B;EACA,MAAMC,UAAuB,GAAG,EAAE;AAChCC,IAAAA,YAAY,GAAG3B,EAAE,CAAC4B,oBAAoB,CAAC,MAAM,CAAC;AAC9C3B,IAAAA,UAAU,GAAGkB,YAAY,CAACM,WAAW,EAAE,CAAC,CAAC,CAAA;EAC3C,KAAK,IAAIf,CAAC,GAAGiB,YAAY,CAACnB,MAAM,EAAEE,CAAC,EAAE,GAAI;AACvCgB,IAAAA,UAAU,CAACG,IAAI,CAAC9B,cAAc,CAAC4B,YAAY,CAACjB,CAAC,CAAC,EAAET,UAAU,CAAC,CAAC,CAAA;AAC9D,GAAA;AACA,EAAA,OAAOyB,UAAU,CAAA;AACnB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseCoords.d.ts","sourceRoot":"","sources":["../../../../src/gradient/parser/parseCoords.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AA2C5C,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB;;;;;EAOvD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB;;;;;;;EASvD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,6CAQ9D"}
1
+ {"version":3,"file":"parseCoords.d.ts","sourceRoot":"","sources":["../../../../src/gradient/parser/parseCoords.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AA8C5C,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB;;;;;EAOvD;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,kBAAkB;;;;;;;EASvD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,KAAK,6CAQ9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseCoords.min.mjs","sources":["../../../../src/gradient/parser/parseCoords.ts"],"sourcesContent":["import { isPercent } from '../../parser/percent';\nimport type { TSize } from '../../typedefs';\nimport type { GradientCoords, GradientType, GradientUnits } from '../typedefs';\nimport { parseGradientUnits, parseType } from './misc';\n\nfunction convertPercentUnitsToValues<\n T extends GradientType,\n K extends keyof GradientCoords<T>\n>(\n valuesToConvert: Record<K, string | number>,\n { width, height, gradientUnits }: TSize & { gradientUnits: GradientUnits }\n) {\n let finalValue;\n return (Object.keys(valuesToConvert) as K[]).reduce((acc, prop) => {\n const propValue = valuesToConvert[prop];\n if (propValue === 'Infinity') {\n finalValue = 1;\n } else if (propValue === '-Infinity') {\n finalValue = 0;\n } else {\n finalValue =\n typeof propValue === 'string' ? parseFloat(propValue) : propValue;\n if (typeof propValue === 'string' && isPercent(propValue)) {\n finalValue *= 0.01;\n if (gradientUnits === 'pixels') {\n // then we need to fix those percentages here in svg parsing\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n finalValue *= width;\n }\n if (prop === 'y1' || prop === 'y2') {\n finalValue *= height;\n }\n }\n }\n }\n acc[prop] = finalValue;\n return acc;\n }, {} as Record<K, number>);\n}\n\nfunction getValue(el: SVGGradientElement, key: string) {\n return el.getAttribute(key);\n}\n\nexport function parseLinearCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'x1') || 0,\n y1: getValue(el, 'y1') || 0,\n x2: getValue(el, 'x2') || '100%',\n y2: getValue(el, 'y2') || 0,\n };\n}\n\nexport function parseRadialCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'fx') || getValue(el, 'cx') || '50%',\n y1: getValue(el, 'fy') || getValue(el, 'cy') || '50%',\n r1: 0,\n x2: getValue(el, 'cx') || '50%',\n y2: getValue(el, 'cy') || '50%',\n r2: getValue(el, 'r') || '50%',\n };\n}\n\nexport function parseCoords(el: SVGGradientElement, size: TSize) {\n return convertPercentUnitsToValues(\n parseType(el) === 'linear' ? parseLinearCoords(el) : parseRadialCoords(el),\n {\n ...size,\n gradientUnits: parseGradientUnits(el),\n }\n );\n}\n"],"names":["getValue","el","key","getAttribute","parseLinearCoords","x1","y1","x2","y2","parseRadialCoords","r1","r2","parseCoords","size","valuesToConvert","_ref","finalValue","width","height","gradientUnits","Object","keys","reduce","acc","prop","propValue","parseFloat","isPercent","convertPercentUnitsToValues","parseType","_objectSpread","parseGradientUnits"],"mappings":"gNAwCA,SAASA,EAASC,EAAwBC,GACxC,OAAOD,EAAGE,aAAaD,EACzB,CAEO,SAASE,EAAkBH,GAChC,MAAO,CACLI,GAAIL,EAASC,EAAI,OAAS,EAC1BK,GAAIN,EAASC,EAAI,OAAS,EAC1BM,GAAIP,EAASC,EAAI,OAAS,OAC1BO,GAAIR,EAASC,EAAI,OAAS,EAE9B,CAEO,SAASQ,EAAkBR,GAChC,MAAO,CACLI,GAAIL,EAASC,EAAI,OAASD,EAASC,EAAI,OAAS,MAChDK,GAAIN,EAASC,EAAI,OAASD,EAASC,EAAI,OAAS,MAChDS,GAAI,EACJH,GAAIP,EAASC,EAAI,OAAS,MAC1BO,GAAIR,EAASC,EAAI,OAAS,MAC1BU,GAAIX,EAASC,EAAI,MAAQ,MAE7B,CAEO,SAASW,EAAYX,EAAwBY,GAClD,OA5DF,SAIEC,EAA2CC,GAE3C,IACIC,GAFJC,MAAEA,EAAKC,OAAEA,EAAMC,cAAEA,GAAyDJ,EAG1E,OAAQK,OAAOC,KAAKP,GAAyBQ,QAAO,CAACC,EAAKC,KACxD,MAAMC,EAAYX,EAAgBU,GAsBlC,MArBkB,aAAdC,EACFT,EAAa,EACU,cAAdS,EACTT,EAAa,GAEbA,EACuB,iBAAdS,EAAyBC,WAAWD,GAAaA,EACjC,iBAAdA,GAA0BE,EAAUF,KAC7CT,GAAc,IACQ,WAAlBG,IAEW,OAATK,GAA0B,OAATA,GAA0B,OAATA,IACpCR,GAAcC,GAEH,OAATO,GAA0B,OAATA,IACnBR,GAAcE,MAKtBK,EAAIC,GAAQR,EACLO,CAAG,GACT,CAAuB,EAC5B,CA2BSK,CACa,WAAlBC,EAAU5B,GAAmBG,EAAkBH,GAAMQ,EAAkBR,GAAG6B,EAAAA,EAAA,CAAA,EAErEjB,GAAI,GAAA,CACPM,cAAeY,EAAmB9B,KAGxC"}
1
+ {"version":3,"file":"parseCoords.min.mjs","sources":["../../../../src/gradient/parser/parseCoords.ts"],"sourcesContent":["import { isPercent } from '../../parser/percent';\nimport type { TSize } from '../../typedefs';\nimport type { GradientCoords, GradientType, GradientUnits } from '../typedefs';\nimport { parseGradientUnits, parseType } from './misc';\n\nfunction convertPercentUnitsToValues<\n T extends GradientType,\n K extends keyof GradientCoords<T>,\n>(\n valuesToConvert: Record<K, string | number>,\n { width, height, gradientUnits }: TSize & { gradientUnits: GradientUnits },\n) {\n let finalValue;\n return (Object.keys(valuesToConvert) as K[]).reduce(\n (acc, prop) => {\n const propValue = valuesToConvert[prop];\n if (propValue === 'Infinity') {\n finalValue = 1;\n } else if (propValue === '-Infinity') {\n finalValue = 0;\n } else {\n finalValue =\n typeof propValue === 'string' ? parseFloat(propValue) : propValue;\n if (typeof propValue === 'string' && isPercent(propValue)) {\n finalValue *= 0.01;\n if (gradientUnits === 'pixels') {\n // then we need to fix those percentages here in svg parsing\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n finalValue *= width;\n }\n if (prop === 'y1' || prop === 'y2') {\n finalValue *= height;\n }\n }\n }\n }\n acc[prop] = finalValue;\n return acc;\n },\n {} as Record<K, number>,\n );\n}\n\nfunction getValue(el: SVGGradientElement, key: string) {\n return el.getAttribute(key);\n}\n\nexport function parseLinearCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'x1') || 0,\n y1: getValue(el, 'y1') || 0,\n x2: getValue(el, 'x2') || '100%',\n y2: getValue(el, 'y2') || 0,\n };\n}\n\nexport function parseRadialCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'fx') || getValue(el, 'cx') || '50%',\n y1: getValue(el, 'fy') || getValue(el, 'cy') || '50%',\n r1: 0,\n x2: getValue(el, 'cx') || '50%',\n y2: getValue(el, 'cy') || '50%',\n r2: getValue(el, 'r') || '50%',\n };\n}\n\nexport function parseCoords(el: SVGGradientElement, size: TSize) {\n return convertPercentUnitsToValues(\n parseType(el) === 'linear' ? parseLinearCoords(el) : parseRadialCoords(el),\n {\n ...size,\n gradientUnits: parseGradientUnits(el),\n },\n );\n}\n"],"names":["getValue","el","key","getAttribute","parseLinearCoords","x1","y1","x2","y2","parseRadialCoords","r1","r2","parseCoords","size","valuesToConvert","_ref","finalValue","width","height","gradientUnits","Object","keys","reduce","acc","prop","propValue","parseFloat","isPercent","convertPercentUnitsToValues","parseType","_objectSpread","parseGradientUnits"],"mappings":"gNA2CA,SAASA,EAASC,EAAwBC,GACxC,OAAOD,EAAGE,aAAaD,EACzB,CAEO,SAASE,EAAkBH,GAChC,MAAO,CACLI,GAAIL,EAASC,EAAI,OAAS,EAC1BK,GAAIN,EAASC,EAAI,OAAS,EAC1BM,GAAIP,EAASC,EAAI,OAAS,OAC1BO,GAAIR,EAASC,EAAI,OAAS,EAE9B,CAEO,SAASQ,EAAkBR,GAChC,MAAO,CACLI,GAAIL,EAASC,EAAI,OAASD,EAASC,EAAI,OAAS,MAChDK,GAAIN,EAASC,EAAI,OAASD,EAASC,EAAI,OAAS,MAChDS,GAAI,EACJH,GAAIP,EAASC,EAAI,OAAS,MAC1BO,GAAIR,EAASC,EAAI,OAAS,MAC1BU,GAAIX,EAASC,EAAI,MAAQ,MAE7B,CAEO,SAASW,EAAYX,EAAwBY,GAClD,OA/DF,SAIEC,EAA2CC,GAE3C,IACIC,GAFJC,MAAEA,EAAKC,OAAEA,EAAMC,cAAEA,GAAyDJ,EAG1E,OAAQK,OAAOC,KAAKP,GAAyBQ,QAC3C,CAACC,EAAKC,KACJ,MAAMC,EAAYX,EAAgBU,GAsBlC,MArBkB,aAAdC,EACFT,EAAa,EACU,cAAdS,EACTT,EAAa,GAEbA,EACuB,iBAAdS,EAAyBC,WAAWD,GAAaA,EACjC,iBAAdA,GAA0BE,EAAUF,KAC7CT,GAAc,IACQ,WAAlBG,IAEW,OAATK,GAA0B,OAATA,GAA0B,OAATA,IACpCR,GAAcC,GAEH,OAATO,GAA0B,OAATA,IACnBR,GAAcE,MAKtBK,EAAIC,GAAQR,EACLO,CAAG,GAEZ,CACF,EACF,CA2BSK,CACa,WAAlBC,EAAU5B,GAAmBG,EAAkBH,GAAMQ,EAAkBR,GAAG6B,EAAAA,EAAA,CAAA,EAErEjB,GAAI,GAAA,CACPM,cAAeY,EAAmB9B,KAGxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parseCoords.mjs","sources":["../../../../src/gradient/parser/parseCoords.ts"],"sourcesContent":["import { isPercent } from '../../parser/percent';\nimport type { TSize } from '../../typedefs';\nimport type { GradientCoords, GradientType, GradientUnits } from '../typedefs';\nimport { parseGradientUnits, parseType } from './misc';\n\nfunction convertPercentUnitsToValues<\n T extends GradientType,\n K extends keyof GradientCoords<T>\n>(\n valuesToConvert: Record<K, string | number>,\n { width, height, gradientUnits }: TSize & { gradientUnits: GradientUnits }\n) {\n let finalValue;\n return (Object.keys(valuesToConvert) as K[]).reduce((acc, prop) => {\n const propValue = valuesToConvert[prop];\n if (propValue === 'Infinity') {\n finalValue = 1;\n } else if (propValue === '-Infinity') {\n finalValue = 0;\n } else {\n finalValue =\n typeof propValue === 'string' ? parseFloat(propValue) : propValue;\n if (typeof propValue === 'string' && isPercent(propValue)) {\n finalValue *= 0.01;\n if (gradientUnits === 'pixels') {\n // then we need to fix those percentages here in svg parsing\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n finalValue *= width;\n }\n if (prop === 'y1' || prop === 'y2') {\n finalValue *= height;\n }\n }\n }\n }\n acc[prop] = finalValue;\n return acc;\n }, {} as Record<K, number>);\n}\n\nfunction getValue(el: SVGGradientElement, key: string) {\n return el.getAttribute(key);\n}\n\nexport function parseLinearCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'x1') || 0,\n y1: getValue(el, 'y1') || 0,\n x2: getValue(el, 'x2') || '100%',\n y2: getValue(el, 'y2') || 0,\n };\n}\n\nexport function parseRadialCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'fx') || getValue(el, 'cx') || '50%',\n y1: getValue(el, 'fy') || getValue(el, 'cy') || '50%',\n r1: 0,\n x2: getValue(el, 'cx') || '50%',\n y2: getValue(el, 'cy') || '50%',\n r2: getValue(el, 'r') || '50%',\n };\n}\n\nexport function parseCoords(el: SVGGradientElement, size: TSize) {\n return convertPercentUnitsToValues(\n parseType(el) === 'linear' ? parseLinearCoords(el) : parseRadialCoords(el),\n {\n ...size,\n gradientUnits: parseGradientUnits(el),\n }\n );\n}\n"],"names":["convertPercentUnitsToValues","valuesToConvert","_ref","width","height","gradientUnits","finalValue","Object","keys","reduce","acc","prop","propValue","parseFloat","isPercent","getValue","el","key","getAttribute","parseLinearCoords","x1","y1","x2","y2","parseRadialCoords","r1","r2","parseCoords","size","parseType","_objectSpread","parseGradientUnits"],"mappings":"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"}
1
+ {"version":3,"file":"parseCoords.mjs","sources":["../../../../src/gradient/parser/parseCoords.ts"],"sourcesContent":["import { isPercent } from '../../parser/percent';\nimport type { TSize } from '../../typedefs';\nimport type { GradientCoords, GradientType, GradientUnits } from '../typedefs';\nimport { parseGradientUnits, parseType } from './misc';\n\nfunction convertPercentUnitsToValues<\n T extends GradientType,\n K extends keyof GradientCoords<T>,\n>(\n valuesToConvert: Record<K, string | number>,\n { width, height, gradientUnits }: TSize & { gradientUnits: GradientUnits },\n) {\n let finalValue;\n return (Object.keys(valuesToConvert) as K[]).reduce(\n (acc, prop) => {\n const propValue = valuesToConvert[prop];\n if (propValue === 'Infinity') {\n finalValue = 1;\n } else if (propValue === '-Infinity') {\n finalValue = 0;\n } else {\n finalValue =\n typeof propValue === 'string' ? parseFloat(propValue) : propValue;\n if (typeof propValue === 'string' && isPercent(propValue)) {\n finalValue *= 0.01;\n if (gradientUnits === 'pixels') {\n // then we need to fix those percentages here in svg parsing\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n finalValue *= width;\n }\n if (prop === 'y1' || prop === 'y2') {\n finalValue *= height;\n }\n }\n }\n }\n acc[prop] = finalValue;\n return acc;\n },\n {} as Record<K, number>,\n );\n}\n\nfunction getValue(el: SVGGradientElement, key: string) {\n return el.getAttribute(key);\n}\n\nexport function parseLinearCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'x1') || 0,\n y1: getValue(el, 'y1') || 0,\n x2: getValue(el, 'x2') || '100%',\n y2: getValue(el, 'y2') || 0,\n };\n}\n\nexport function parseRadialCoords(el: SVGGradientElement) {\n return {\n x1: getValue(el, 'fx') || getValue(el, 'cx') || '50%',\n y1: getValue(el, 'fy') || getValue(el, 'cy') || '50%',\n r1: 0,\n x2: getValue(el, 'cx') || '50%',\n y2: getValue(el, 'cy') || '50%',\n r2: getValue(el, 'r') || '50%',\n };\n}\n\nexport function parseCoords(el: SVGGradientElement, size: TSize) {\n return convertPercentUnitsToValues(\n parseType(el) === 'linear' ? parseLinearCoords(el) : parseRadialCoords(el),\n {\n ...size,\n gradientUnits: parseGradientUnits(el),\n },\n );\n}\n"],"names":["convertPercentUnitsToValues","valuesToConvert","_ref","width","height","gradientUnits","finalValue","Object","keys","reduce","acc","prop","propValue","parseFloat","isPercent","getValue","el","key","getAttribute","parseLinearCoords","x1","y1","x2","y2","parseRadialCoords","r1","r2","parseCoords","size","parseType","_objectSpread","parseGradientUnits"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"applyViewboxTransform.min.mjs","sources":["../../../src/parser/applyViewboxTransform.ts"],"sourcesContent":["import { svgNS } from './constants';\nimport {\n parsePreserveAspectRatioAttribute,\n parseUnit,\n} from '../util/misc/svgParsing';\nimport { svgViewBoxElementsRegEx, reViewBoxAttrValue } from './constants';\nimport { NONE } from '../constants';\n\nexport type ParsedViewboxTransform = Partial<{\n width: number;\n height: number;\n minX: number;\n minY: number;\n viewBoxWidth: number;\n viewBoxHeight: number;\n}>;\n\n/**\n * Add a <g> element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\nexport function applyViewboxTransform(\n element: Element\n): ParsedViewboxTransform {\n if (!svgViewBoxElementsRegEx.test(element.nodeName)) {\n return {};\n }\n const viewBoxAttr: string | null = element.getAttribute('viewBox');\n let scaleX = 1;\n let scaleY = 1;\n let minX = 0;\n let minY = 0;\n let matrix;\n let el;\n const widthAttr = element.getAttribute('width');\n const heightAttr = element.getAttribute('height');\n const x = element.getAttribute('x') || 0;\n const y = element.getAttribute('y') || 0;\n const goodViewbox = viewBoxAttr && reViewBoxAttrValue.test(viewBoxAttr);\n const missingViewBox = !goodViewbox;\n const missingDimAttr =\n !widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%';\n\n let translateMatrix = '';\n let widthDiff = 0;\n let heightDiff = 0;\n\n if (missingViewBox) {\n if (\n (x || y) &&\n element.parentNode &&\n element.parentNode.nodeName !== '#document'\n ) {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n matrix = (element.getAttribute('transform') || '') + translateMatrix;\n element.setAttribute('transform', matrix);\n element.removeAttribute('x');\n element.removeAttribute('y');\n }\n }\n\n if (missingViewBox && missingDimAttr) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n const parsedDim: ParsedViewboxTransform = {\n width: 0,\n height: 0,\n };\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr!);\n parsedDim.height = parseUnit(heightAttr!);\n // set a transform for elements that have x y and are inner(only) SVGs\n return parsedDim;\n }\n\n const pasedViewBox = viewBoxAttr.match(reViewBoxAttrValue)!;\n minX = -parseFloat(pasedViewBox[1]);\n minY = -parseFloat(pasedViewBox[2]);\n const viewBoxWidth = parseFloat(pasedViewBox[3]);\n const viewBoxHeight = parseFloat(pasedViewBox[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n } else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n const preserveAspectRatio = parsePreserveAspectRatioAttribute(\n element.getAttribute('preserveAspectRatio') || ''\n );\n if (preserveAspectRatio.alignX !== NONE) {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = scaleX > scaleY ? scaleY : scaleX;\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = scaleX > scaleY ? scaleX : scaleY;\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (\n scaleX === 1 &&\n scaleY === 1 &&\n minX === 0 &&\n minY === 0 &&\n x === 0 &&\n y === 0\n ) {\n return parsedDim;\n }\n if ((x || y) && element.parentNode!.nodeName !== '#document') {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n }\n\n matrix =\n translateMatrix +\n ' matrix(' +\n scaleX +\n ' 0' +\n ' 0 ' +\n scaleY +\n ' ' +\n (minX * scaleX + widthDiff) +\n ' ' +\n (minY * scaleY + heightDiff) +\n ') ';\n // seems unused.\n // parsedDim.viewboxTransform = parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n } else {\n el = element;\n el.removeAttribute('x');\n el.removeAttribute('y');\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n}\n"],"names":["applyViewboxTransform","element","svgViewBoxElementsRegEx","test","nodeName","viewBoxAttr","getAttribute","matrix","el","scaleX","scaleY","minX","minY","widthAttr","heightAttr","x","y","missingViewBox","reViewBoxAttrValue","missingDimAttr","translateMatrix","widthDiff","heightDiff","parentNode","parseUnit","setAttribute","removeAttribute","width","height","parsedDim","pasedViewBox","match","parseFloat","viewBoxWidth","viewBoxHeight","preserveAspectRatio","parsePreserveAspectRatioAttribute","alignX","NONE","meetOrSlice","alignY","ownerDocument","createElementNS","svgNS","firstChild","appendChild"],"mappings":"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"}
1
+ {"version":3,"file":"applyViewboxTransform.min.mjs","sources":["../../../src/parser/applyViewboxTransform.ts"],"sourcesContent":["import { svgNS } from './constants';\nimport {\n parsePreserveAspectRatioAttribute,\n parseUnit,\n} from '../util/misc/svgParsing';\nimport { svgViewBoxElementsRegEx, reViewBoxAttrValue } from './constants';\nimport { NONE } from '../constants';\n\nexport type ParsedViewboxTransform = Partial<{\n width: number;\n height: number;\n minX: number;\n minY: number;\n viewBoxWidth: number;\n viewBoxHeight: number;\n}>;\n\n/**\n * Add a <g> element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\nexport function applyViewboxTransform(\n element: Element,\n): ParsedViewboxTransform {\n if (!svgViewBoxElementsRegEx.test(element.nodeName)) {\n return {};\n }\n const viewBoxAttr: string | null = element.getAttribute('viewBox');\n let scaleX = 1;\n let scaleY = 1;\n let minX = 0;\n let minY = 0;\n let matrix;\n let el;\n const widthAttr = element.getAttribute('width');\n const heightAttr = element.getAttribute('height');\n const x = element.getAttribute('x') || 0;\n const y = element.getAttribute('y') || 0;\n const goodViewbox = viewBoxAttr && reViewBoxAttrValue.test(viewBoxAttr);\n const missingViewBox = !goodViewbox;\n const missingDimAttr =\n !widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%';\n\n let translateMatrix = '';\n let widthDiff = 0;\n let heightDiff = 0;\n\n if (missingViewBox) {\n if (\n (x || y) &&\n element.parentNode &&\n element.parentNode.nodeName !== '#document'\n ) {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n matrix = (element.getAttribute('transform') || '') + translateMatrix;\n element.setAttribute('transform', matrix);\n element.removeAttribute('x');\n element.removeAttribute('y');\n }\n }\n\n if (missingViewBox && missingDimAttr) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n const parsedDim: ParsedViewboxTransform = {\n width: 0,\n height: 0,\n };\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr!);\n parsedDim.height = parseUnit(heightAttr!);\n // set a transform for elements that have x y and are inner(only) SVGs\n return parsedDim;\n }\n\n const pasedViewBox = viewBoxAttr.match(reViewBoxAttrValue)!;\n minX = -parseFloat(pasedViewBox[1]);\n minY = -parseFloat(pasedViewBox[2]);\n const viewBoxWidth = parseFloat(pasedViewBox[3]);\n const viewBoxHeight = parseFloat(pasedViewBox[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n } else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n const preserveAspectRatio = parsePreserveAspectRatioAttribute(\n element.getAttribute('preserveAspectRatio') || '',\n );\n if (preserveAspectRatio.alignX !== NONE) {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = scaleX > scaleY ? scaleY : scaleX;\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = scaleX > scaleY ? scaleX : scaleY;\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (\n scaleX === 1 &&\n scaleY === 1 &&\n minX === 0 &&\n minY === 0 &&\n x === 0 &&\n y === 0\n ) {\n return parsedDim;\n }\n if ((x || y) && element.parentNode!.nodeName !== '#document') {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n }\n\n matrix =\n translateMatrix +\n ' matrix(' +\n scaleX +\n ' 0' +\n ' 0 ' +\n scaleY +\n ' ' +\n (minX * scaleX + widthDiff) +\n ' ' +\n (minY * scaleY + heightDiff) +\n ') ';\n // seems unused.\n // parsedDim.viewboxTransform = parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n } else {\n el = element;\n el.removeAttribute('x');\n el.removeAttribute('y');\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n}\n"],"names":["applyViewboxTransform","element","svgViewBoxElementsRegEx","test","nodeName","viewBoxAttr","getAttribute","matrix","el","scaleX","scaleY","minX","minY","widthAttr","heightAttr","x","y","missingViewBox","reViewBoxAttrValue","missingDimAttr","translateMatrix","widthDiff","heightDiff","parentNode","parseUnit","setAttribute","removeAttribute","width","height","parsedDim","pasedViewBox","match","parseFloat","viewBoxWidth","viewBoxHeight","preserveAspectRatio","parsePreserveAspectRatioAttribute","alignX","NONE","meetOrSlice","alignY","ownerDocument","createElementNS","svgNS","firstChild","appendChild"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"applyViewboxTransform.mjs","sources":["../../../src/parser/applyViewboxTransform.ts"],"sourcesContent":["import { svgNS } from './constants';\nimport {\n parsePreserveAspectRatioAttribute,\n parseUnit,\n} from '../util/misc/svgParsing';\nimport { svgViewBoxElementsRegEx, reViewBoxAttrValue } from './constants';\nimport { NONE } from '../constants';\n\nexport type ParsedViewboxTransform = Partial<{\n width: number;\n height: number;\n minX: number;\n minY: number;\n viewBoxWidth: number;\n viewBoxHeight: number;\n}>;\n\n/**\n * Add a <g> element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\nexport function applyViewboxTransform(\n element: Element\n): ParsedViewboxTransform {\n if (!svgViewBoxElementsRegEx.test(element.nodeName)) {\n return {};\n }\n const viewBoxAttr: string | null = element.getAttribute('viewBox');\n let scaleX = 1;\n let scaleY = 1;\n let minX = 0;\n let minY = 0;\n let matrix;\n let el;\n const widthAttr = element.getAttribute('width');\n const heightAttr = element.getAttribute('height');\n const x = element.getAttribute('x') || 0;\n const y = element.getAttribute('y') || 0;\n const goodViewbox = viewBoxAttr && reViewBoxAttrValue.test(viewBoxAttr);\n const missingViewBox = !goodViewbox;\n const missingDimAttr =\n !widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%';\n\n let translateMatrix = '';\n let widthDiff = 0;\n let heightDiff = 0;\n\n if (missingViewBox) {\n if (\n (x || y) &&\n element.parentNode &&\n element.parentNode.nodeName !== '#document'\n ) {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n matrix = (element.getAttribute('transform') || '') + translateMatrix;\n element.setAttribute('transform', matrix);\n element.removeAttribute('x');\n element.removeAttribute('y');\n }\n }\n\n if (missingViewBox && missingDimAttr) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n const parsedDim: ParsedViewboxTransform = {\n width: 0,\n height: 0,\n };\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr!);\n parsedDim.height = parseUnit(heightAttr!);\n // set a transform for elements that have x y and are inner(only) SVGs\n return parsedDim;\n }\n\n const pasedViewBox = viewBoxAttr.match(reViewBoxAttrValue)!;\n minX = -parseFloat(pasedViewBox[1]);\n minY = -parseFloat(pasedViewBox[2]);\n const viewBoxWidth = parseFloat(pasedViewBox[3]);\n const viewBoxHeight = parseFloat(pasedViewBox[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n } else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n const preserveAspectRatio = parsePreserveAspectRatioAttribute(\n element.getAttribute('preserveAspectRatio') || ''\n );\n if (preserveAspectRatio.alignX !== NONE) {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = scaleX > scaleY ? scaleY : scaleX;\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = scaleX > scaleY ? scaleX : scaleY;\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (\n scaleX === 1 &&\n scaleY === 1 &&\n minX === 0 &&\n minY === 0 &&\n x === 0 &&\n y === 0\n ) {\n return parsedDim;\n }\n if ((x || y) && element.parentNode!.nodeName !== '#document') {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n }\n\n matrix =\n translateMatrix +\n ' matrix(' +\n scaleX +\n ' 0' +\n ' 0 ' +\n scaleY +\n ' ' +\n (minX * scaleX + widthDiff) +\n ' ' +\n (minY * scaleY + heightDiff) +\n ') ';\n // seems unused.\n // parsedDim.viewboxTransform = parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n } else {\n el = element;\n el.removeAttribute('x');\n el.removeAttribute('y');\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n}\n"],"names":["applyViewboxTransform","element","svgViewBoxElementsRegEx","test","nodeName","viewBoxAttr","getAttribute","scaleX","scaleY","minX","minY","matrix","el","widthAttr","heightAttr","x","y","goodViewbox","reViewBoxAttrValue","missingViewBox","missingDimAttr","translateMatrix","widthDiff","heightDiff","parentNode","parseUnit","setAttribute","removeAttribute","width","height","parsedDim","pasedViewBox","match","parseFloat","viewBoxWidth","viewBoxHeight","preserveAspectRatio","parsePreserveAspectRatioAttribute","alignX","NONE","meetOrSlice","alignY","ownerDocument","createElementNS","svgNS","firstChild","appendChild"],"mappings":"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"}
1
+ {"version":3,"file":"applyViewboxTransform.mjs","sources":["../../../src/parser/applyViewboxTransform.ts"],"sourcesContent":["import { svgNS } from './constants';\nimport {\n parsePreserveAspectRatioAttribute,\n parseUnit,\n} from '../util/misc/svgParsing';\nimport { svgViewBoxElementsRegEx, reViewBoxAttrValue } from './constants';\nimport { NONE } from '../constants';\n\nexport type ParsedViewboxTransform = Partial<{\n width: number;\n height: number;\n minX: number;\n minY: number;\n viewBoxWidth: number;\n viewBoxHeight: number;\n}>;\n\n/**\n * Add a <g> element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\nexport function applyViewboxTransform(\n element: Element,\n): ParsedViewboxTransform {\n if (!svgViewBoxElementsRegEx.test(element.nodeName)) {\n return {};\n }\n const viewBoxAttr: string | null = element.getAttribute('viewBox');\n let scaleX = 1;\n let scaleY = 1;\n let minX = 0;\n let minY = 0;\n let matrix;\n let el;\n const widthAttr = element.getAttribute('width');\n const heightAttr = element.getAttribute('height');\n const x = element.getAttribute('x') || 0;\n const y = element.getAttribute('y') || 0;\n const goodViewbox = viewBoxAttr && reViewBoxAttrValue.test(viewBoxAttr);\n const missingViewBox = !goodViewbox;\n const missingDimAttr =\n !widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%';\n\n let translateMatrix = '';\n let widthDiff = 0;\n let heightDiff = 0;\n\n if (missingViewBox) {\n if (\n (x || y) &&\n element.parentNode &&\n element.parentNode.nodeName !== '#document'\n ) {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n matrix = (element.getAttribute('transform') || '') + translateMatrix;\n element.setAttribute('transform', matrix);\n element.removeAttribute('x');\n element.removeAttribute('y');\n }\n }\n\n if (missingViewBox && missingDimAttr) {\n return {\n width: 0,\n height: 0,\n };\n }\n\n const parsedDim: ParsedViewboxTransform = {\n width: 0,\n height: 0,\n };\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr!);\n parsedDim.height = parseUnit(heightAttr!);\n // set a transform for elements that have x y and are inner(only) SVGs\n return parsedDim;\n }\n\n const pasedViewBox = viewBoxAttr.match(reViewBoxAttrValue)!;\n minX = -parseFloat(pasedViewBox[1]);\n minY = -parseFloat(pasedViewBox[2]);\n const viewBoxWidth = parseFloat(pasedViewBox[3]);\n const viewBoxHeight = parseFloat(pasedViewBox[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n } else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n const preserveAspectRatio = parsePreserveAspectRatioAttribute(\n element.getAttribute('preserveAspectRatio') || '',\n );\n if (preserveAspectRatio.alignX !== NONE) {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = scaleX > scaleY ? scaleY : scaleX;\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = scaleX > scaleY ? scaleX : scaleY;\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (\n scaleX === 1 &&\n scaleY === 1 &&\n minX === 0 &&\n minY === 0 &&\n x === 0 &&\n y === 0\n ) {\n return parsedDim;\n }\n if ((x || y) && element.parentNode!.nodeName !== '#document') {\n translateMatrix =\n ' translate(' + parseUnit(x || '0') + ' ' + parseUnit(y || '0') + ') ';\n }\n\n matrix =\n translateMatrix +\n ' matrix(' +\n scaleX +\n ' 0' +\n ' 0 ' +\n scaleY +\n ' ' +\n (minX * scaleX + widthDiff) +\n ' ' +\n (minY * scaleY + heightDiff) +\n ') ';\n // seems unused.\n // parsedDim.viewboxTransform = parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n } else {\n el = element;\n el.removeAttribute('x');\n el.removeAttribute('y');\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n}\n"],"names":["applyViewboxTransform","element","svgViewBoxElementsRegEx","test","nodeName","viewBoxAttr","getAttribute","scaleX","scaleY","minX","minY","matrix","el","widthAttr","heightAttr","x","y","goodViewbox","reViewBoxAttrValue","missingViewBox","missingDimAttr","translateMatrix","widthDiff","heightDiff","parentNode","parseUnit","setAttribute","removeAttribute","width","height","parsedDim","pasedViewBox","match","parseFloat","viewBoxWidth","viewBoxHeight","preserveAspectRatio","parsePreserveAspectRatioAttribute","alignX","NONE","meetOrSlice","alignY","ownerDocument","createElementNS","svgNS","firstChild","appendChild"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.min.mjs","sources":["../../../src/parser/constants.ts"],"sourcesContent":["import { getSvgRegex } from './getSvgRegex';\nimport { LEFT, TOP } from '../constants';\n\nexport const reNum = String.raw`(?:[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?)`;\n\nexport const svgNS = 'http://www.w3.org/2000/svg';\n\nexport const commaWsp = String.raw`(?:\\s+,?\\s*|,\\s*|$)`;\n\nexport const reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' +\n reNum +\n '))?\\\\s+(.*)'\n);\n\nexport const svgValidTagNames = [\n 'path',\n 'circle',\n 'polygon',\n 'polyline',\n 'ellipse',\n 'rect',\n 'line',\n 'image',\n 'text',\n ],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = [\n 'pattern',\n 'defs',\n 'symbol',\n 'metadata',\n 'clipPath',\n 'mask',\n 'desc',\n ],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n attributesMap = {\n cx: LEFT,\n x: LEFT,\n r: 'radius',\n cy: TOP,\n y: TOP,\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform',\n 'image-rendering': 'imageSmoothing',\n },\n fSize = 'font-size',\n cPath = 'clip-path';\n\nexport const svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n\nexport const svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n\nexport const svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n// http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n// matches, e.g.: +14.56e-12, etc.\nexport const reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*' +\n '$'\n);\n"],"names":["reNum","String","raw","_templateObject","_taggedTemplateLiteral","svgNS","_templateObject2","reFontDeclaration","RegExp","svgValidTagNames","svgViewBoxElements","svgInvalidAncestors","svgValidParents","attributesMap","cx","LEFT","x","r","cy","TOP","y","display","visibility","transform","opacity","fSize","cPath","svgValidTagNamesRegEx","getSvgRegex","svgViewBoxElementsRegEx","svgValidParentsRegEx","reViewBoxAttrValue"],"mappings":"0MAGaA,MAAAA,EAAQC,OAAOC,IAAGC,IAAAA,EAAAC,EAA+C,CAAA,2CAAA,CAAA,0DAEjEC,EAAQ,6BAEGJ,OAAOC,IAAGI,IAAAA,EAAAF,EAAqB,CAAA,oBAAA,CAAA,mCAE1CG,EAAoB,IAAIC,OACnC,qHAEER,EACA,2CACAA,EACA,eAGSS,EAAmB,CAC5B,OACA,SACA,UACA,WACA,UACA,OACA,OACA,QACA,QAEFC,EAAqB,CAAC,SAAU,QAAS,SAAU,UAAW,OAAQ,OACtEC,EAAsB,CACpB,UACA,OACA,SACA,WACA,WACA,OACA,QAEFC,EAAkB,CAAC,SAAU,IAAK,IAAK,MAAO,WAAY,QAC1DC,EAAgB,CACdC,GAAIC,EACJC,EAAGD,EACHE,EAAG,SACHC,GAAIC,EACJC,EAAGD,EACHE,QAAS,UACTC,WAAY,UACZC,UAAW,kBACX,eAAgB,cAChB,YAAa,WACb,cAAe,aACf,YAAa,WACb,aAAc,YACd,cAAe,aACf,iBAAkB,cAClB,cAAe,aACf,mBAAoB,kBACpB,oBAAqB,mBACrB,iBAAkB,gBAClB,kBAAmB,iBACnB,oBAAqB,mBACrB,iBAAkB,gBAClB,eAAgB,cAChB,kBAAmB,iBACnB,cAAe,aACfC,QAAS,UACT,YAAa,WACb,YAAa,WACb,gBAAiB,gBACjB,kBAAmB,kBAErBC,EAAQ,YACRC,EAAQ,YAEGC,EAAwBC,EAAYnB,GAEpCoB,EAA0BD,EAAYlB,GAEtCoB,EAAuBF,EAAYhB,GAInCmB,EAAqB,IAAIvB,OACpC,SAEER,EAFF,gBAKEA,EALF,gBAQEA,EARF,gBAWEA,EAXF"}
1
+ {"version":3,"file":"constants.min.mjs","sources":["../../../src/parser/constants.ts"],"sourcesContent":["import { getSvgRegex } from './getSvgRegex';\nimport { LEFT, TOP } from '../constants';\n\nexport const reNum = String.raw`(?:[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?)`;\n\nexport const svgNS = 'http://www.w3.org/2000/svg';\n\nexport const commaWsp = String.raw`(?:\\s+,?\\s*|,\\s*|$)`;\n\nexport const reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' +\n reNum +\n '))?\\\\s+(.*)',\n);\n\nexport const svgValidTagNames = [\n 'path',\n 'circle',\n 'polygon',\n 'polyline',\n 'ellipse',\n 'rect',\n 'line',\n 'image',\n 'text',\n ],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = [\n 'pattern',\n 'defs',\n 'symbol',\n 'metadata',\n 'clipPath',\n 'mask',\n 'desc',\n ],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n attributesMap = {\n cx: LEFT,\n x: LEFT,\n r: 'radius',\n cy: TOP,\n y: TOP,\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform',\n 'image-rendering': 'imageSmoothing',\n },\n fSize = 'font-size',\n cPath = 'clip-path';\n\nexport const svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n\nexport const svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n\nexport const svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n// http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n// matches, e.g.: +14.56e-12, etc.\nexport const reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*' +\n '$',\n);\n"],"names":["reNum","String","raw","_templateObject","_taggedTemplateLiteral","svgNS","_templateObject2","reFontDeclaration","RegExp","svgValidTagNames","svgViewBoxElements","svgInvalidAncestors","svgValidParents","attributesMap","cx","LEFT","x","r","cy","TOP","y","display","visibility","transform","opacity","fSize","cPath","svgValidTagNamesRegEx","getSvgRegex","svgViewBoxElementsRegEx","svgValidParentsRegEx","reViewBoxAttrValue"],"mappings":"0MAGaA,MAAAA,EAAQC,OAAOC,IAAGC,IAAAA,EAAAC,EAA+C,CAAA,2CAAA,CAAA,0DAEjEC,EAAQ,6BAEGJ,OAAOC,IAAGI,IAAAA,EAAAF,EAAqB,CAAA,oBAAA,CAAA,mCAE1CG,EAAoB,IAAIC,OACnC,qHAEER,EACA,2CACAA,EACA,eAGSS,EAAmB,CAC5B,OACA,SACA,UACA,WACA,UACA,OACA,OACA,QACA,QAEFC,EAAqB,CAAC,SAAU,QAAS,SAAU,UAAW,OAAQ,OACtEC,EAAsB,CACpB,UACA,OACA,SACA,WACA,WACA,OACA,QAEFC,EAAkB,CAAC,SAAU,IAAK,IAAK,MAAO,WAAY,QAC1DC,EAAgB,CACdC,GAAIC,EACJC,EAAGD,EACHE,EAAG,SACHC,GAAIC,EACJC,EAAGD,EACHE,QAAS,UACTC,WAAY,UACZC,UAAW,kBACX,eAAgB,cAChB,YAAa,WACb,cAAe,aACf,YAAa,WACb,aAAc,YACd,cAAe,aACf,iBAAkB,cAClB,cAAe,aACf,mBAAoB,kBACpB,oBAAqB,mBACrB,iBAAkB,gBAClB,kBAAmB,iBACnB,oBAAqB,mBACrB,iBAAkB,gBAClB,eAAgB,cAChB,kBAAmB,iBACnB,cAAe,aACfC,QAAS,UACT,YAAa,WACb,YAAa,WACb,gBAAiB,gBACjB,kBAAmB,kBAErBC,EAAQ,YACRC,EAAQ,YAEGC,EAAwBC,EAAYnB,GAEpCoB,EAA0BD,EAAYlB,GAEtCoB,EAAuBF,EAAYhB,GAInCmB,EAAqB,IAAIvB,OACpC,SAEER,EAFF,gBAKEA,EALF,gBAQEA,EARF,gBAWEA,EAXF"}
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sources":["../../../src/parser/constants.ts"],"sourcesContent":["import { getSvgRegex } from './getSvgRegex';\nimport { LEFT, TOP } from '../constants';\n\nexport const reNum = String.raw`(?:[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?)`;\n\nexport const svgNS = 'http://www.w3.org/2000/svg';\n\nexport const commaWsp = String.raw`(?:\\s+,?\\s*|,\\s*|$)`;\n\nexport const reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' +\n reNum +\n '))?\\\\s+(.*)'\n);\n\nexport const svgValidTagNames = [\n 'path',\n 'circle',\n 'polygon',\n 'polyline',\n 'ellipse',\n 'rect',\n 'line',\n 'image',\n 'text',\n ],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = [\n 'pattern',\n 'defs',\n 'symbol',\n 'metadata',\n 'clipPath',\n 'mask',\n 'desc',\n ],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n attributesMap = {\n cx: LEFT,\n x: LEFT,\n r: 'radius',\n cy: TOP,\n y: TOP,\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform',\n 'image-rendering': 'imageSmoothing',\n },\n fSize = 'font-size',\n cPath = 'clip-path';\n\nexport const svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n\nexport const svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n\nexport const svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n// http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n// matches, e.g.: +14.56e-12, etc.\nexport const reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*' +\n '$'\n);\n"],"names":["reNum","String","raw","_templateObject","_taggedTemplateLiteral","svgNS","_templateObject2","reFontDeclaration","RegExp","svgValidTagNames","svgViewBoxElements","svgInvalidAncestors","svgValidParents","attributesMap","cx","LEFT","x","r","cy","TOP","y","display","visibility","transform","opacity","fSize","cPath","svgValidTagNamesRegEx","getSvgRegex","svgViewBoxElementsRegEx","svgValidParentsRegEx","reViewBoxAttrValue"],"mappings":"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"}
1
+ {"version":3,"file":"constants.mjs","sources":["../../../src/parser/constants.ts"],"sourcesContent":["import { getSvgRegex } from './getSvgRegex';\nimport { LEFT, TOP } from '../constants';\n\nexport const reNum = String.raw`(?:[-+]?(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][-+]?\\d+)?)`;\n\nexport const svgNS = 'http://www.w3.org/2000/svg';\n\nexport const commaWsp = String.raw`(?:\\s+,?\\s*|,\\s*|$)`;\n\nexport const reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' +\n reNum +\n '))?\\\\s+(.*)',\n);\n\nexport const svgValidTagNames = [\n 'path',\n 'circle',\n 'polygon',\n 'polyline',\n 'ellipse',\n 'rect',\n 'line',\n 'image',\n 'text',\n ],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = [\n 'pattern',\n 'defs',\n 'symbol',\n 'metadata',\n 'clipPath',\n 'mask',\n 'desc',\n ],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n attributesMap = {\n cx: LEFT,\n x: LEFT,\n r: 'radius',\n cy: TOP,\n y: TOP,\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform',\n 'image-rendering': 'imageSmoothing',\n },\n fSize = 'font-size',\n cPath = 'clip-path';\n\nexport const svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n\nexport const svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n\nexport const svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n// http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n// matches, e.g.: +14.56e-12, etc.\nexport const reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*,?' +\n '\\\\s*(' +\n reNum +\n '+)\\\\s*' +\n '$',\n);\n"],"names":["reNum","String","raw","_templateObject","_taggedTemplateLiteral","svgNS","_templateObject2","reFontDeclaration","RegExp","svgValidTagNames","svgViewBoxElements","svgInvalidAncestors","svgValidParents","attributesMap","cx","LEFT","x","r","cy","TOP","y","display","visibility","transform","opacity","fSize","cPath","svgValidTagNamesRegEx","getSvgRegex","svgViewBoxElementsRegEx","svgValidParentsRegEx","reViewBoxAttrValue"],"mappings":";;;;;AAGaA,MAAAA,KAAK,GAAGC,MAAM,CAACC,GAAG,CAAAC,eAAA,KAAAA,eAAA,GAAAC,sBAAA,CAA+C,CAAA,yCAAA,CAAA,EAAA,CAAA,qDAAA,CAAA,CAAA,CAAA,EAAA;AAEvE,MAAMC,KAAK,GAAG,6BAA4B;AAEzBJ,MAAM,CAACC,GAAG,CAAAI,gBAAA,KAAAA,gBAAA,GAAAF,sBAAA,CAAqB,CAAA,kBAAA,CAAA,EAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAA;MAE1CG,iBAAiB,GAAG,IAAIC,MAAM,CACzC,8CAA8C,GAC5C,wEAAwE,GACxER,KAAK,GACL,0CAA0C,GAC1CA,KAAK,GACL,aACJ,EAAC;AAEM,MAAMS,gBAAgB,GAAG,CAC5B,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,CACP,CAAA;AACDC,EAAAA,kBAAkB,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AAC5EC,EAAAA,mBAAmB,GAAG,CACpB,SAAS,EACT,MAAM,EACN,QAAQ,EACR,UAAU,EACV,UAAU,EACV,MAAM,EACN,MAAM,CACP,CAAA;AACDC,EAAAA,eAAe,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AACjEC,EAAAA,aAAa,GAAG;AACdC,IAAAA,EAAE,EAAEC,IAAI;AACRC,IAAAA,CAAC,EAAED,IAAI;AACPE,IAAAA,CAAC,EAAE,QAAQ;AACXC,IAAAA,EAAE,EAAEC,GAAG;AACPC,IAAAA,CAAC,EAAED,GAAG;AACNE,IAAAA,OAAO,EAAE,SAAS;AAClBC,IAAAA,UAAU,EAAE,SAAS;AACrBC,IAAAA,SAAS,EAAE,iBAAiB;AAC5B,IAAA,cAAc,EAAE,aAAa;AAC7B,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,aAAa,EAAE,YAAY;AAC3B,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,aAAa,EAAE,YAAY;AAC3B,IAAA,gBAAgB,EAAE,aAAa;AAC/B,IAAA,aAAa,EAAE,YAAY;AAC3B,IAAA,kBAAkB,EAAE,iBAAiB;AACrC,IAAA,mBAAmB,EAAE,kBAAkB;AACvC,IAAA,gBAAgB,EAAE,eAAe;AACjC,IAAA,iBAAiB,EAAE,gBAAgB;AACnC,IAAA,mBAAmB,EAAE,kBAAkB;AACvC,IAAA,gBAAgB,EAAE,eAAe;AACjC,IAAA,cAAc,EAAE,aAAa;AAC7B,IAAA,iBAAiB,EAAE,gBAAgB;AACnC,IAAA,aAAa,EAAE,YAAY;AAC3BC,IAAAA,OAAO,EAAE,SAAS;AAClB,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,WAAW,EAAE,UAAU;AACvB,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,iBAAiB,EAAE,gBAAA;GACpB,CAAA;AACDC,EAAAA,KAAK,GAAG,WAAW,CAAA;AACnBC,EAAAA,KAAK,GAAG,YAAW;MAERC,qBAAqB,GAAGC,WAAW,CAACnB,gBAAgB,EAAC;MAErDoB,uBAAuB,GAAGD,WAAW,CAAClB,kBAAkB,EAAC;MAEzDoB,oBAAoB,GAAGF,WAAW,CAAChB,eAAe,EAAC;;AAEhE;AACA;AACamB,MAAAA,kBAAkB,GAAG,IAAIvB,MAAM,CAC1C,GAAG,GACD,OAAO,GACPR,KAAK,GACL,UAAU,GACV,OAAO,GACPA,KAAK,GACL,UAAU,GACV,OAAO,GACPA,KAAK,GACL,UAAU,GACV,OAAO,GACPA,KAAK,GACL,QAAQ,GACR,GACJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"elements_parser.min.mjs","sources":["../../../src/parser/elements_parser.ts"],"sourcesContent":["import { Gradient } from '../gradient/Gradient';\nimport { Group } from '../shapes/Group';\nimport { FabricImage } from '../shapes/Image';\nimport { classRegistry } from '../ClassRegistry';\nimport {\n invertTransform,\n multiplyTransformMatrices,\n qrDecompose,\n} from '../util/misc/matrix';\nimport { removeTransformMatrixForSvgParsing } from '../util/transform_matrix_removal';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { Point } from '../Point';\nimport { CENTER, FILL, STROKE } from '../constants';\nimport { getGradientDefs } from './getGradientDefs';\nimport { getCSSRules } from './getCSSRules';\nimport type { LoadImageOptions } from '../util';\nimport type { CSSRules, TSvgReviverCallback } from './typedefs';\nimport type { ParsedViewboxTransform } from './applyViewboxTransform';\nimport type { SVGOptions } from '../gradient';\nimport { getTagName } from './getTagName';\nimport { parseTransformAttribute } from './parseTransformAttribute';\n\nconst findTag = (el: Element) =>\n classRegistry.getSVGClass(getTagName(el).toLowerCase());\n\ntype StorageType = {\n fill: SVGGradientElement;\n stroke: SVGGradientElement;\n clipPath: Element[];\n};\n\ntype NotParsedFabricObject = FabricObject & {\n fill: string;\n stroke: string;\n clipPath?: string;\n clipRule?: CanvasFillRule;\n};\n\nexport class ElementsParser {\n declare elements: Element[];\n declare options: LoadImageOptions & ParsedViewboxTransform;\n declare reviver?: TSvgReviverCallback;\n declare regexUrl: RegExp;\n declare doc: Document;\n declare clipPaths: Record<string, Element[]>;\n declare gradientDefs: Record<string, SVGGradientElement>;\n declare cssRules: CSSRules;\n\n constructor(\n elements: Element[],\n options: LoadImageOptions & ParsedViewboxTransform,\n reviver: TSvgReviverCallback | undefined,\n doc: Document,\n clipPaths: Record<string, Element[]>\n ) {\n this.elements = elements;\n this.options = options;\n this.reviver = reviver;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n this.doc = doc;\n this.clipPaths = clipPaths;\n this.gradientDefs = getGradientDefs(doc);\n this.cssRules = getCSSRules(doc);\n }\n\n parse(): Promise<Array<FabricObject | null>> {\n return Promise.all(\n this.elements.map((element) => this.createObject(element))\n );\n }\n\n async createObject(el: Element): Promise<FabricObject | null> {\n const klass = findTag(el);\n if (klass) {\n const obj: NotParsedFabricObject = await klass.fromElement(\n el,\n this.options,\n this.cssRules\n );\n this.resolveGradient(obj, el, FILL);\n this.resolveGradient(obj, el, STROKE);\n if (obj instanceof FabricImage && obj._originalElement) {\n removeTransformMatrixForSvgParsing(\n obj,\n obj.parsePreserveAspectRatioAttribute()\n );\n } else {\n removeTransformMatrixForSvgParsing(obj);\n }\n await this.resolveClipPath(obj, el);\n this.reviver && this.reviver(el, obj);\n return obj;\n }\n return null;\n }\n\n extractPropertyDefinition(\n obj: NotParsedFabricObject,\n property: 'fill' | 'stroke' | 'clipPath',\n storage: Record<string, StorageType[typeof property]>\n ): StorageType[typeof property] | undefined {\n const value = obj[property]!,\n regex = this.regexUrl;\n if (!regex.test(value)) {\n return undefined;\n }\n // verify: can we remove the 'g' flag? and remove lastIndex changes?\n regex.lastIndex = 0;\n // we passed the regex test, so we know is not null;\n const id = regex.exec(value)![1];\n regex.lastIndex = 0;\n // @todo fix this\n return storage[id];\n }\n\n resolveGradient(\n obj: NotParsedFabricObject,\n el: Element,\n property: 'fill' | 'stroke'\n ) {\n const gradientDef = this.extractPropertyDefinition(\n obj,\n property,\n this.gradientDefs\n ) as SVGGradientElement;\n if (gradientDef) {\n const opacityAttr = el.getAttribute(property + '-opacity');\n const gradient = Gradient.fromElement(gradientDef, obj, {\n ...this.options,\n opacity: opacityAttr,\n } as SVGOptions);\n obj.set(property, gradient);\n }\n }\n\n // TODO: resolveClipPath could be run once per clippath with minor work per object.\n // is a refactor that i m not sure is worth on this code\n async resolveClipPath(obj: NotParsedFabricObject, usingElement: Element) {\n const clipPathElements = this.extractPropertyDefinition(\n obj,\n 'clipPath',\n this.clipPaths\n ) as Element[];\n if (clipPathElements) {\n const objTransformInv = invertTransform(obj.calcTransformMatrix());\n const clipPathTag = clipPathElements[0].parentElement!;\n let clipPathOwner = usingElement;\n while (\n clipPathOwner.parentElement &&\n clipPathOwner.getAttribute('clip-path') !== obj.clipPath\n ) {\n clipPathOwner = clipPathOwner.parentElement;\n }\n // move the clipPath tag as sibling to the real element that is using it\n clipPathOwner.parentElement!.appendChild(clipPathTag!);\n\n // this multiplication order could be opposite.\n // but i don't have an svg to test it\n // at the first SVG that has a transform on both places and is misplaced\n // try to invert this multiplication order\n const finalTransform = parseTransformAttribute(\n `${clipPathOwner.getAttribute('transform') || ''} ${\n clipPathTag.getAttribute('originalTransform') || ''\n }`\n );\n\n clipPathTag.setAttribute(\n 'transform',\n `matrix(${finalTransform.join(',')})`\n );\n\n const container = await Promise.all(\n clipPathElements.map((clipPathElement) => {\n return findTag(clipPathElement)\n .fromElement(clipPathElement, this.options, this.cssRules)\n .then((enlivedClippath: NotParsedFabricObject) => {\n removeTransformMatrixForSvgParsing(enlivedClippath);\n enlivedClippath.fillRule = enlivedClippath.clipRule!;\n delete enlivedClippath.clipRule;\n return enlivedClippath;\n });\n })\n );\n const clipPath =\n container.length === 1 ? container[0] : new Group(container);\n const gTransform = multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix()\n );\n if (clipPath.clipPath) {\n await this.resolveClipPath(clipPath, clipPathOwner);\n }\n const { scaleX, scaleY, angle, skewX, translateX, translateY } =\n qrDecompose(gTransform);\n clipPath.set({\n flipX: false,\n flipY: false,\n });\n clipPath.set({\n scaleX,\n scaleY,\n angle,\n skewX,\n skewY: 0,\n });\n clipPath.setPositionByOrigin(\n new Point(translateX, translateY),\n CENTER,\n CENTER\n );\n obj.clipPath = clipPath;\n } else {\n // if clip-path does not resolve to any element, delete the property.\n delete obj.clipPath;\n return;\n }\n }\n}\n"],"names":["findTag","el","classRegistry","getSVGClass","getTagName","toLowerCase","ElementsParser","constructor","elements","options","reviver","doc","clipPaths","this","regexUrl","gradientDefs","getGradientDefs","cssRules","getCSSRules","parse","Promise","all","map","element","createObject","klass","obj","fromElement","resolveGradient","FILL","STROKE","FabricImage","_originalElement","removeTransformMatrixForSvgParsing","parsePreserveAspectRatioAttribute","resolveClipPath","extractPropertyDefinition","property","storage","value","regex","test","lastIndex","id","exec","gradientDef","opacityAttr","getAttribute","gradient","Gradient","_objectSpread","opacity","set","usingElement","clipPathElements","objTransformInv","invertTransform","calcTransformMatrix","clipPathTag","parentElement","clipPathOwner","clipPath","appendChild","finalTransform","parseTransformAttribute","concat","setAttribute","join","container","clipPathElement","then","enlivedClippath","fillRule","clipRule","length","Group","gTransform","multiplyTransformMatrices","scaleX","scaleY","angle","skewX","translateX","translateY","qrDecompose","flipX","flipY","skewY","setPositionByOrigin","Point","CENTER"],"mappings":"+0BAsBA,MAAMA,EAAWC,GACfC,EAAcC,YAAYC,EAAWH,GAAII,eAepC,MAAMC,EAUXC,WAAAA,CACEC,EACAC,EACAC,EACAC,EACAC,GAEAC,KAAKL,SAAWA,EAChBK,KAAKJ,QAAUA,EACfI,KAAKH,QAAUA,EACfG,KAAKC,SAAW,+BAChBD,KAAKF,IAAMA,EACXE,KAAKD,UAAYA,EACjBC,KAAKE,aAAeC,EAAgBL,GACpCE,KAAKI,SAAWC,EAAYP,EAC9B,CAEAQ,KAAAA,GACE,OAAOC,QAAQC,IACbR,KAAKL,SAASc,KAAKC,GAAYV,KAAKW,aAAaD,KAErD,CAEA,kBAAMC,CAAavB,GACjB,MAAMwB,EAAQzB,EAAQC,GACtB,GAAIwB,EAAO,CACT,MAAMC,QAAmCD,EAAME,YAC7C1B,EACAY,KAAKJ,QACLI,KAAKI,UAcP,OAZAJ,KAAKe,gBAAgBF,EAAKzB,EAAI4B,GAC9BhB,KAAKe,gBAAgBF,EAAKzB,EAAI6B,GAC1BJ,aAAeK,GAAeL,EAAIM,iBACpCC,EACEP,EACAA,EAAIQ,qCAGND,EAAmCP,SAE/Bb,KAAKsB,gBAAgBT,EAAKzB,GAChCY,KAAKH,SAAWG,KAAKH,QAAQT,EAAIyB,GAC1BA,CACT,CACA,OAAO,IACT,CAEAU,yBAAAA,CACEV,EACAW,EACAC,GAEA,MAAMC,EAAQb,EAAIW,GAChBG,EAAQ3B,KAAKC,SACf,IAAK0B,EAAMC,KAAKF,GACd,OAGFC,EAAME,UAAY,EAElB,MAAMC,EAAKH,EAAMI,KAAKL,GAAQ,GAG9B,OAFAC,EAAME,UAAY,EAEXJ,EAAQK,EACjB,CAEAf,eAAAA,CACEF,EACAzB,EACAoC,GAEA,MAAMQ,EAAchC,KAAKuB,0BACvBV,EACAW,EACAxB,KAAKE,cAEP,GAAI8B,EAAa,CACf,MAAMC,EAAc7C,EAAG8C,aAAaV,EAAW,YACzCW,EAAWC,EAAStB,YAAYkB,EAAanB,EAAGwB,EAAAA,EACjD,CAAA,EAAArC,KAAKJ,SAAO,CAAA,EAAA,CACf0C,QAASL,KAEXpB,EAAI0B,IAAIf,EAAUW,EACpB,CACF,CAIA,qBAAMb,CAAgBT,EAA4B2B,GAChD,MAAMC,EAAmBzC,KAAKuB,0BAC5BV,EACA,WACAb,KAAKD,WAEP,GAAI0C,EAAkB,CACpB,MAAMC,EAAkBC,EAAgB9B,EAAI+B,uBACtCC,EAAcJ,EAAiB,GAAGK,cACxC,IAAIC,EAAgBP,EACpB,KACEO,EAAcD,eACdC,EAAcb,aAAa,eAAiBrB,EAAImC,UAEhDD,EAAgBA,EAAcD,cAGhCC,EAAcD,cAAeG,YAAYJ,GAMzC,MAAMK,EAAiBC,EAAuBC,GAAAA,OACzCL,EAAcb,aAAa,cAAgB,GAAEkB,KAAAA,OAC9CP,EAAYX,aAAa,sBAAwB,KAIrDW,EAAYQ,aACV,sBAAWD,OACDF,EAAeI,KAAK,WAGhC,MAAMC,QAAkBhD,QAAQC,IAC9BiC,EAAiBhC,KAAK+C,GACbrE,EAAQqE,GACZ1C,YAAY0C,EAAiBxD,KAAKJ,QAASI,KAAKI,UAChDqD,MAAMC,IACLtC,EAAmCsC,GACnCA,EAAgBC,SAAWD,EAAgBE,gBACpCF,EAAgBE,SAChBF,QAITV,EACiB,IAArBO,EAAUM,OAAeN,EAAU,GAAK,IAAIO,EAAMP,GAC9CQ,EAAaC,EACjBtB,EACAM,EAASJ,uBAEPI,EAASA,gBACLhD,KAAKsB,gBAAgB0B,EAAUD,GAEvC,MAAMkB,OAAEA,EAAMC,OAAEA,EAAMC,MAAEA,EAAKC,MAAEA,EAAKC,WAAEA,EAAUC,WAAEA,GAChDC,EAAYR,GACdf,EAAST,IAAI,CACXiC,OAAO,EACPC,OAAO,IAETzB,EAAST,IAAI,CACX0B,SACAC,SACAC,QACAC,QACAM,MAAO,IAET1B,EAAS2B,oBACP,IAAIC,EAAMP,EAAYC,GACtBO,EACAA,GAEFhE,EAAImC,SAAWA,CACjB,aAESnC,EAAImC,QAGf"}
1
+ {"version":3,"file":"elements_parser.min.mjs","sources":["../../../src/parser/elements_parser.ts"],"sourcesContent":["import { Gradient } from '../gradient/Gradient';\nimport { Group } from '../shapes/Group';\nimport { FabricImage } from '../shapes/Image';\nimport { classRegistry } from '../ClassRegistry';\nimport {\n invertTransform,\n multiplyTransformMatrices,\n qrDecompose,\n} from '../util/misc/matrix';\nimport { removeTransformMatrixForSvgParsing } from '../util/transform_matrix_removal';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { Point } from '../Point';\nimport { CENTER, FILL, STROKE } from '../constants';\nimport { getGradientDefs } from './getGradientDefs';\nimport { getCSSRules } from './getCSSRules';\nimport type { LoadImageOptions } from '../util';\nimport type { CSSRules, TSvgReviverCallback } from './typedefs';\nimport type { ParsedViewboxTransform } from './applyViewboxTransform';\nimport type { SVGOptions } from '../gradient';\nimport { getTagName } from './getTagName';\nimport { parseTransformAttribute } from './parseTransformAttribute';\n\nconst findTag = (el: Element) =>\n classRegistry.getSVGClass(getTagName(el).toLowerCase());\n\ntype StorageType = {\n fill: SVGGradientElement;\n stroke: SVGGradientElement;\n clipPath: Element[];\n};\n\ntype NotParsedFabricObject = FabricObject & {\n fill: string;\n stroke: string;\n clipPath?: string;\n clipRule?: CanvasFillRule;\n};\n\nexport class ElementsParser {\n declare elements: Element[];\n declare options: LoadImageOptions & ParsedViewboxTransform;\n declare reviver?: TSvgReviverCallback;\n declare regexUrl: RegExp;\n declare doc: Document;\n declare clipPaths: Record<string, Element[]>;\n declare gradientDefs: Record<string, SVGGradientElement>;\n declare cssRules: CSSRules;\n\n constructor(\n elements: Element[],\n options: LoadImageOptions & ParsedViewboxTransform,\n reviver: TSvgReviverCallback | undefined,\n doc: Document,\n clipPaths: Record<string, Element[]>,\n ) {\n this.elements = elements;\n this.options = options;\n this.reviver = reviver;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n this.doc = doc;\n this.clipPaths = clipPaths;\n this.gradientDefs = getGradientDefs(doc);\n this.cssRules = getCSSRules(doc);\n }\n\n parse(): Promise<Array<FabricObject | null>> {\n return Promise.all(\n this.elements.map((element) => this.createObject(element)),\n );\n }\n\n async createObject(el: Element): Promise<FabricObject | null> {\n const klass = findTag(el);\n if (klass) {\n const obj: NotParsedFabricObject = await klass.fromElement(\n el,\n this.options,\n this.cssRules,\n );\n this.resolveGradient(obj, el, FILL);\n this.resolveGradient(obj, el, STROKE);\n if (obj instanceof FabricImage && obj._originalElement) {\n removeTransformMatrixForSvgParsing(\n obj,\n obj.parsePreserveAspectRatioAttribute(),\n );\n } else {\n removeTransformMatrixForSvgParsing(obj);\n }\n await this.resolveClipPath(obj, el);\n this.reviver && this.reviver(el, obj);\n return obj;\n }\n return null;\n }\n\n extractPropertyDefinition(\n obj: NotParsedFabricObject,\n property: 'fill' | 'stroke' | 'clipPath',\n storage: Record<string, StorageType[typeof property]>,\n ): StorageType[typeof property] | undefined {\n const value = obj[property]!,\n regex = this.regexUrl;\n if (!regex.test(value)) {\n return undefined;\n }\n // verify: can we remove the 'g' flag? and remove lastIndex changes?\n regex.lastIndex = 0;\n // we passed the regex test, so we know is not null;\n const id = regex.exec(value)![1];\n regex.lastIndex = 0;\n // @todo fix this\n return storage[id];\n }\n\n resolveGradient(\n obj: NotParsedFabricObject,\n el: Element,\n property: 'fill' | 'stroke',\n ) {\n const gradientDef = this.extractPropertyDefinition(\n obj,\n property,\n this.gradientDefs,\n ) as SVGGradientElement;\n if (gradientDef) {\n const opacityAttr = el.getAttribute(property + '-opacity');\n const gradient = Gradient.fromElement(gradientDef, obj, {\n ...this.options,\n opacity: opacityAttr,\n } as SVGOptions);\n obj.set(property, gradient);\n }\n }\n\n // TODO: resolveClipPath could be run once per clippath with minor work per object.\n // is a refactor that i m not sure is worth on this code\n async resolveClipPath(obj: NotParsedFabricObject, usingElement: Element) {\n const clipPathElements = this.extractPropertyDefinition(\n obj,\n 'clipPath',\n this.clipPaths,\n ) as Element[];\n if (clipPathElements) {\n const objTransformInv = invertTransform(obj.calcTransformMatrix());\n const clipPathTag = clipPathElements[0].parentElement!;\n let clipPathOwner = usingElement;\n while (\n clipPathOwner.parentElement &&\n clipPathOwner.getAttribute('clip-path') !== obj.clipPath\n ) {\n clipPathOwner = clipPathOwner.parentElement;\n }\n // move the clipPath tag as sibling to the real element that is using it\n clipPathOwner.parentElement!.appendChild(clipPathTag!);\n\n // this multiplication order could be opposite.\n // but i don't have an svg to test it\n // at the first SVG that has a transform on both places and is misplaced\n // try to invert this multiplication order\n const finalTransform = parseTransformAttribute(\n `${clipPathOwner.getAttribute('transform') || ''} ${\n clipPathTag.getAttribute('originalTransform') || ''\n }`,\n );\n\n clipPathTag.setAttribute(\n 'transform',\n `matrix(${finalTransform.join(',')})`,\n );\n\n const container = await Promise.all(\n clipPathElements.map((clipPathElement) => {\n return findTag(clipPathElement)\n .fromElement(clipPathElement, this.options, this.cssRules)\n .then((enlivedClippath: NotParsedFabricObject) => {\n removeTransformMatrixForSvgParsing(enlivedClippath);\n enlivedClippath.fillRule = enlivedClippath.clipRule!;\n delete enlivedClippath.clipRule;\n return enlivedClippath;\n });\n }),\n );\n const clipPath =\n container.length === 1 ? container[0] : new Group(container);\n const gTransform = multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix(),\n );\n if (clipPath.clipPath) {\n await this.resolveClipPath(clipPath, clipPathOwner);\n }\n const { scaleX, scaleY, angle, skewX, translateX, translateY } =\n qrDecompose(gTransform);\n clipPath.set({\n flipX: false,\n flipY: false,\n });\n clipPath.set({\n scaleX,\n scaleY,\n angle,\n skewX,\n skewY: 0,\n });\n clipPath.setPositionByOrigin(\n new Point(translateX, translateY),\n CENTER,\n CENTER,\n );\n obj.clipPath = clipPath;\n } else {\n // if clip-path does not resolve to any element, delete the property.\n delete obj.clipPath;\n return;\n }\n }\n}\n"],"names":["findTag","el","classRegistry","getSVGClass","getTagName","toLowerCase","ElementsParser","constructor","elements","options","reviver","doc","clipPaths","this","regexUrl","gradientDefs","getGradientDefs","cssRules","getCSSRules","parse","Promise","all","map","element","createObject","klass","obj","fromElement","resolveGradient","FILL","STROKE","FabricImage","_originalElement","removeTransformMatrixForSvgParsing","parsePreserveAspectRatioAttribute","resolveClipPath","extractPropertyDefinition","property","storage","value","regex","test","lastIndex","id","exec","gradientDef","opacityAttr","getAttribute","gradient","Gradient","_objectSpread","opacity","set","usingElement","clipPathElements","objTransformInv","invertTransform","calcTransformMatrix","clipPathTag","parentElement","clipPathOwner","clipPath","appendChild","finalTransform","parseTransformAttribute","concat","setAttribute","join","container","clipPathElement","then","enlivedClippath","fillRule","clipRule","length","Group","gTransform","multiplyTransformMatrices","scaleX","scaleY","angle","skewX","translateX","translateY","qrDecompose","flipX","flipY","skewY","setPositionByOrigin","Point","CENTER"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"elements_parser.mjs","sources":["../../../src/parser/elements_parser.ts"],"sourcesContent":["import { Gradient } from '../gradient/Gradient';\nimport { Group } from '../shapes/Group';\nimport { FabricImage } from '../shapes/Image';\nimport { classRegistry } from '../ClassRegistry';\nimport {\n invertTransform,\n multiplyTransformMatrices,\n qrDecompose,\n} from '../util/misc/matrix';\nimport { removeTransformMatrixForSvgParsing } from '../util/transform_matrix_removal';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { Point } from '../Point';\nimport { CENTER, FILL, STROKE } from '../constants';\nimport { getGradientDefs } from './getGradientDefs';\nimport { getCSSRules } from './getCSSRules';\nimport type { LoadImageOptions } from '../util';\nimport type { CSSRules, TSvgReviverCallback } from './typedefs';\nimport type { ParsedViewboxTransform } from './applyViewboxTransform';\nimport type { SVGOptions } from '../gradient';\nimport { getTagName } from './getTagName';\nimport { parseTransformAttribute } from './parseTransformAttribute';\n\nconst findTag = (el: Element) =>\n classRegistry.getSVGClass(getTagName(el).toLowerCase());\n\ntype StorageType = {\n fill: SVGGradientElement;\n stroke: SVGGradientElement;\n clipPath: Element[];\n};\n\ntype NotParsedFabricObject = FabricObject & {\n fill: string;\n stroke: string;\n clipPath?: string;\n clipRule?: CanvasFillRule;\n};\n\nexport class ElementsParser {\n declare elements: Element[];\n declare options: LoadImageOptions & ParsedViewboxTransform;\n declare reviver?: TSvgReviverCallback;\n declare regexUrl: RegExp;\n declare doc: Document;\n declare clipPaths: Record<string, Element[]>;\n declare gradientDefs: Record<string, SVGGradientElement>;\n declare cssRules: CSSRules;\n\n constructor(\n elements: Element[],\n options: LoadImageOptions & ParsedViewboxTransform,\n reviver: TSvgReviverCallback | undefined,\n doc: Document,\n clipPaths: Record<string, Element[]>\n ) {\n this.elements = elements;\n this.options = options;\n this.reviver = reviver;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n this.doc = doc;\n this.clipPaths = clipPaths;\n this.gradientDefs = getGradientDefs(doc);\n this.cssRules = getCSSRules(doc);\n }\n\n parse(): Promise<Array<FabricObject | null>> {\n return Promise.all(\n this.elements.map((element) => this.createObject(element))\n );\n }\n\n async createObject(el: Element): Promise<FabricObject | null> {\n const klass = findTag(el);\n if (klass) {\n const obj: NotParsedFabricObject = await klass.fromElement(\n el,\n this.options,\n this.cssRules\n );\n this.resolveGradient(obj, el, FILL);\n this.resolveGradient(obj, el, STROKE);\n if (obj instanceof FabricImage && obj._originalElement) {\n removeTransformMatrixForSvgParsing(\n obj,\n obj.parsePreserveAspectRatioAttribute()\n );\n } else {\n removeTransformMatrixForSvgParsing(obj);\n }\n await this.resolveClipPath(obj, el);\n this.reviver && this.reviver(el, obj);\n return obj;\n }\n return null;\n }\n\n extractPropertyDefinition(\n obj: NotParsedFabricObject,\n property: 'fill' | 'stroke' | 'clipPath',\n storage: Record<string, StorageType[typeof property]>\n ): StorageType[typeof property] | undefined {\n const value = obj[property]!,\n regex = this.regexUrl;\n if (!regex.test(value)) {\n return undefined;\n }\n // verify: can we remove the 'g' flag? and remove lastIndex changes?\n regex.lastIndex = 0;\n // we passed the regex test, so we know is not null;\n const id = regex.exec(value)![1];\n regex.lastIndex = 0;\n // @todo fix this\n return storage[id];\n }\n\n resolveGradient(\n obj: NotParsedFabricObject,\n el: Element,\n property: 'fill' | 'stroke'\n ) {\n const gradientDef = this.extractPropertyDefinition(\n obj,\n property,\n this.gradientDefs\n ) as SVGGradientElement;\n if (gradientDef) {\n const opacityAttr = el.getAttribute(property + '-opacity');\n const gradient = Gradient.fromElement(gradientDef, obj, {\n ...this.options,\n opacity: opacityAttr,\n } as SVGOptions);\n obj.set(property, gradient);\n }\n }\n\n // TODO: resolveClipPath could be run once per clippath with minor work per object.\n // is a refactor that i m not sure is worth on this code\n async resolveClipPath(obj: NotParsedFabricObject, usingElement: Element) {\n const clipPathElements = this.extractPropertyDefinition(\n obj,\n 'clipPath',\n this.clipPaths\n ) as Element[];\n if (clipPathElements) {\n const objTransformInv = invertTransform(obj.calcTransformMatrix());\n const clipPathTag = clipPathElements[0].parentElement!;\n let clipPathOwner = usingElement;\n while (\n clipPathOwner.parentElement &&\n clipPathOwner.getAttribute('clip-path') !== obj.clipPath\n ) {\n clipPathOwner = clipPathOwner.parentElement;\n }\n // move the clipPath tag as sibling to the real element that is using it\n clipPathOwner.parentElement!.appendChild(clipPathTag!);\n\n // this multiplication order could be opposite.\n // but i don't have an svg to test it\n // at the first SVG that has a transform on both places and is misplaced\n // try to invert this multiplication order\n const finalTransform = parseTransformAttribute(\n `${clipPathOwner.getAttribute('transform') || ''} ${\n clipPathTag.getAttribute('originalTransform') || ''\n }`\n );\n\n clipPathTag.setAttribute(\n 'transform',\n `matrix(${finalTransform.join(',')})`\n );\n\n const container = await Promise.all(\n clipPathElements.map((clipPathElement) => {\n return findTag(clipPathElement)\n .fromElement(clipPathElement, this.options, this.cssRules)\n .then((enlivedClippath: NotParsedFabricObject) => {\n removeTransformMatrixForSvgParsing(enlivedClippath);\n enlivedClippath.fillRule = enlivedClippath.clipRule!;\n delete enlivedClippath.clipRule;\n return enlivedClippath;\n });\n })\n );\n const clipPath =\n container.length === 1 ? container[0] : new Group(container);\n const gTransform = multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix()\n );\n if (clipPath.clipPath) {\n await this.resolveClipPath(clipPath, clipPathOwner);\n }\n const { scaleX, scaleY, angle, skewX, translateX, translateY } =\n qrDecompose(gTransform);\n clipPath.set({\n flipX: false,\n flipY: false,\n });\n clipPath.set({\n scaleX,\n scaleY,\n angle,\n skewX,\n skewY: 0,\n });\n clipPath.setPositionByOrigin(\n new Point(translateX, translateY),\n CENTER,\n CENTER\n );\n obj.clipPath = clipPath;\n } else {\n // if clip-path does not resolve to any element, delete the property.\n delete obj.clipPath;\n return;\n }\n }\n}\n"],"names":["findTag","el","classRegistry","getSVGClass","getTagName","toLowerCase","ElementsParser","constructor","elements","options","reviver","doc","clipPaths","regexUrl","gradientDefs","getGradientDefs","cssRules","getCSSRules","parse","Promise","all","map","element","createObject","klass","obj","fromElement","resolveGradient","FILL","STROKE","FabricImage","_originalElement","removeTransformMatrixForSvgParsing","parsePreserveAspectRatioAttribute","resolveClipPath","extractPropertyDefinition","property","storage","value","regex","test","undefined","lastIndex","id","exec","gradientDef","opacityAttr","getAttribute","gradient","Gradient","_objectSpread","opacity","set","usingElement","clipPathElements","objTransformInv","invertTransform","calcTransformMatrix","clipPathTag","parentElement","clipPathOwner","clipPath","appendChild","finalTransform","parseTransformAttribute","concat","setAttribute","join","container","clipPathElement","then","enlivedClippath","fillRule","clipRule","length","Group","gTransform","multiplyTransformMatrices","scaleX","scaleY","angle","skewX","translateX","translateY","qrDecompose","flipX","flipY","skewY","setPositionByOrigin","Point","CENTER"],"mappings":"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"}
1
+ {"version":3,"file":"elements_parser.mjs","sources":["../../../src/parser/elements_parser.ts"],"sourcesContent":["import { Gradient } from '../gradient/Gradient';\nimport { Group } from '../shapes/Group';\nimport { FabricImage } from '../shapes/Image';\nimport { classRegistry } from '../ClassRegistry';\nimport {\n invertTransform,\n multiplyTransformMatrices,\n qrDecompose,\n} from '../util/misc/matrix';\nimport { removeTransformMatrixForSvgParsing } from '../util/transform_matrix_removal';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { Point } from '../Point';\nimport { CENTER, FILL, STROKE } from '../constants';\nimport { getGradientDefs } from './getGradientDefs';\nimport { getCSSRules } from './getCSSRules';\nimport type { LoadImageOptions } from '../util';\nimport type { CSSRules, TSvgReviverCallback } from './typedefs';\nimport type { ParsedViewboxTransform } from './applyViewboxTransform';\nimport type { SVGOptions } from '../gradient';\nimport { getTagName } from './getTagName';\nimport { parseTransformAttribute } from './parseTransformAttribute';\n\nconst findTag = (el: Element) =>\n classRegistry.getSVGClass(getTagName(el).toLowerCase());\n\ntype StorageType = {\n fill: SVGGradientElement;\n stroke: SVGGradientElement;\n clipPath: Element[];\n};\n\ntype NotParsedFabricObject = FabricObject & {\n fill: string;\n stroke: string;\n clipPath?: string;\n clipRule?: CanvasFillRule;\n};\n\nexport class ElementsParser {\n declare elements: Element[];\n declare options: LoadImageOptions & ParsedViewboxTransform;\n declare reviver?: TSvgReviverCallback;\n declare regexUrl: RegExp;\n declare doc: Document;\n declare clipPaths: Record<string, Element[]>;\n declare gradientDefs: Record<string, SVGGradientElement>;\n declare cssRules: CSSRules;\n\n constructor(\n elements: Element[],\n options: LoadImageOptions & ParsedViewboxTransform,\n reviver: TSvgReviverCallback | undefined,\n doc: Document,\n clipPaths: Record<string, Element[]>,\n ) {\n this.elements = elements;\n this.options = options;\n this.reviver = reviver;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n this.doc = doc;\n this.clipPaths = clipPaths;\n this.gradientDefs = getGradientDefs(doc);\n this.cssRules = getCSSRules(doc);\n }\n\n parse(): Promise<Array<FabricObject | null>> {\n return Promise.all(\n this.elements.map((element) => this.createObject(element)),\n );\n }\n\n async createObject(el: Element): Promise<FabricObject | null> {\n const klass = findTag(el);\n if (klass) {\n const obj: NotParsedFabricObject = await klass.fromElement(\n el,\n this.options,\n this.cssRules,\n );\n this.resolveGradient(obj, el, FILL);\n this.resolveGradient(obj, el, STROKE);\n if (obj instanceof FabricImage && obj._originalElement) {\n removeTransformMatrixForSvgParsing(\n obj,\n obj.parsePreserveAspectRatioAttribute(),\n );\n } else {\n removeTransformMatrixForSvgParsing(obj);\n }\n await this.resolveClipPath(obj, el);\n this.reviver && this.reviver(el, obj);\n return obj;\n }\n return null;\n }\n\n extractPropertyDefinition(\n obj: NotParsedFabricObject,\n property: 'fill' | 'stroke' | 'clipPath',\n storage: Record<string, StorageType[typeof property]>,\n ): StorageType[typeof property] | undefined {\n const value = obj[property]!,\n regex = this.regexUrl;\n if (!regex.test(value)) {\n return undefined;\n }\n // verify: can we remove the 'g' flag? and remove lastIndex changes?\n regex.lastIndex = 0;\n // we passed the regex test, so we know is not null;\n const id = regex.exec(value)![1];\n regex.lastIndex = 0;\n // @todo fix this\n return storage[id];\n }\n\n resolveGradient(\n obj: NotParsedFabricObject,\n el: Element,\n property: 'fill' | 'stroke',\n ) {\n const gradientDef = this.extractPropertyDefinition(\n obj,\n property,\n this.gradientDefs,\n ) as SVGGradientElement;\n if (gradientDef) {\n const opacityAttr = el.getAttribute(property + '-opacity');\n const gradient = Gradient.fromElement(gradientDef, obj, {\n ...this.options,\n opacity: opacityAttr,\n } as SVGOptions);\n obj.set(property, gradient);\n }\n }\n\n // TODO: resolveClipPath could be run once per clippath with minor work per object.\n // is a refactor that i m not sure is worth on this code\n async resolveClipPath(obj: NotParsedFabricObject, usingElement: Element) {\n const clipPathElements = this.extractPropertyDefinition(\n obj,\n 'clipPath',\n this.clipPaths,\n ) as Element[];\n if (clipPathElements) {\n const objTransformInv = invertTransform(obj.calcTransformMatrix());\n const clipPathTag = clipPathElements[0].parentElement!;\n let clipPathOwner = usingElement;\n while (\n clipPathOwner.parentElement &&\n clipPathOwner.getAttribute('clip-path') !== obj.clipPath\n ) {\n clipPathOwner = clipPathOwner.parentElement;\n }\n // move the clipPath tag as sibling to the real element that is using it\n clipPathOwner.parentElement!.appendChild(clipPathTag!);\n\n // this multiplication order could be opposite.\n // but i don't have an svg to test it\n // at the first SVG that has a transform on both places and is misplaced\n // try to invert this multiplication order\n const finalTransform = parseTransformAttribute(\n `${clipPathOwner.getAttribute('transform') || ''} ${\n clipPathTag.getAttribute('originalTransform') || ''\n }`,\n );\n\n clipPathTag.setAttribute(\n 'transform',\n `matrix(${finalTransform.join(',')})`,\n );\n\n const container = await Promise.all(\n clipPathElements.map((clipPathElement) => {\n return findTag(clipPathElement)\n .fromElement(clipPathElement, this.options, this.cssRules)\n .then((enlivedClippath: NotParsedFabricObject) => {\n removeTransformMatrixForSvgParsing(enlivedClippath);\n enlivedClippath.fillRule = enlivedClippath.clipRule!;\n delete enlivedClippath.clipRule;\n return enlivedClippath;\n });\n }),\n );\n const clipPath =\n container.length === 1 ? container[0] : new Group(container);\n const gTransform = multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix(),\n );\n if (clipPath.clipPath) {\n await this.resolveClipPath(clipPath, clipPathOwner);\n }\n const { scaleX, scaleY, angle, skewX, translateX, translateY } =\n qrDecompose(gTransform);\n clipPath.set({\n flipX: false,\n flipY: false,\n });\n clipPath.set({\n scaleX,\n scaleY,\n angle,\n skewX,\n skewY: 0,\n });\n clipPath.setPositionByOrigin(\n new Point(translateX, translateY),\n CENTER,\n CENTER,\n );\n obj.clipPath = clipPath;\n } else {\n // if clip-path does not resolve to any element, delete the property.\n delete obj.clipPath;\n return;\n }\n }\n}\n"],"names":["findTag","el","classRegistry","getSVGClass","getTagName","toLowerCase","ElementsParser","constructor","elements","options","reviver","doc","clipPaths","regexUrl","gradientDefs","getGradientDefs","cssRules","getCSSRules","parse","Promise","all","map","element","createObject","klass","obj","fromElement","resolveGradient","FILL","STROKE","FabricImage","_originalElement","removeTransformMatrixForSvgParsing","parsePreserveAspectRatioAttribute","resolveClipPath","extractPropertyDefinition","property","storage","value","regex","test","undefined","lastIndex","id","exec","gradientDef","opacityAttr","getAttribute","gradient","Gradient","_objectSpread","opacity","set","usingElement","clipPathElements","objTransformInv","invertTransform","calcTransformMatrix","clipPathTag","parentElement","clipPathOwner","clipPath","appendChild","finalTransform","parseTransformAttribute","concat","setAttribute","join","container","clipPathElement","then","enlivedClippath","fillRule","clipRule","length","Group","gTransform","multiplyTransformMatrices","scaleX","scaleY","angle","skewX","translateX","translateY","qrDecompose","flipX","flipY","skewY","setPositionByOrigin","Point","CENTER"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAMA,OAAO,GAAIC,EAAW,IAC1BC,aAAa,CAACC,WAAW,CAACC,UAAU,CAACH,EAAE,CAAC,CAACI,WAAW,EAAE,CAAC,CAAA;AAelD,MAAMC,cAAc,CAAC;EAU1BC,WAAWA,CACTC,QAAmB,EACnBC,OAAkD,EAClDC,OAAwC,EACxCC,GAAa,EACbC,SAAoC,EACpC;IACA,IAAI,CAACJ,QAAQ,GAAGA,QAAQ,CAAA;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAACC,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAACG,QAAQ,GAAG,8BAA8B,CAAA;IAC9C,IAAI,CAACF,GAAG,GAAGA,GAAG,CAAA;IACd,IAAI,CAACC,SAAS,GAAGA,SAAS,CAAA;AAC1B,IAAA,IAAI,CAACE,YAAY,GAAGC,eAAe,CAACJ,GAAG,CAAC,CAAA;AACxC,IAAA,IAAI,CAACK,QAAQ,GAAGC,WAAW,CAACN,GAAG,CAAC,CAAA;AAClC,GAAA;AAEAO,EAAAA,KAAKA,GAAwC;AAC3C,IAAA,OAAOC,OAAO,CAACC,GAAG,CAChB,IAAI,CAACZ,QAAQ,CAACa,GAAG,CAAEC,OAAO,IAAK,IAAI,CAACC,YAAY,CAACD,OAAO,CAAC,CAC3D,CAAC,CAAA;AACH,GAAA;EAEA,MAAMC,YAAYA,CAACtB,EAAW,EAAgC;AAC5D,IAAA,MAAMuB,KAAK,GAAGxB,OAAO,CAACC,EAAE,CAAC,CAAA;AACzB,IAAA,IAAIuB,KAAK,EAAE;AACT,MAAA,MAAMC,GAA0B,GAAG,MAAMD,KAAK,CAACE,WAAW,CACxDzB,EAAE,EACF,IAAI,CAACQ,OAAO,EACZ,IAAI,CAACO,QACP,CAAC,CAAA;MACD,IAAI,CAACW,eAAe,CAACF,GAAG,EAAExB,EAAE,EAAE2B,IAAI,CAAC,CAAA;MACnC,IAAI,CAACD,eAAe,CAACF,GAAG,EAAExB,EAAE,EAAE4B,MAAM,CAAC,CAAA;AACrC,MAAA,IAAIJ,GAAG,YAAYK,WAAW,IAAIL,GAAG,CAACM,gBAAgB,EAAE;QACtDC,kCAAkC,CAChCP,GAAG,EACHA,GAAG,CAACQ,iCAAiC,EACvC,CAAC,CAAA;AACH,OAAC,MAAM;QACLD,kCAAkC,CAACP,GAAG,CAAC,CAAA;AACzC,OAAA;AACA,MAAA,MAAM,IAAI,CAACS,eAAe,CAACT,GAAG,EAAExB,EAAE,CAAC,CAAA;MACnC,IAAI,CAACS,OAAO,IAAI,IAAI,CAACA,OAAO,CAACT,EAAE,EAAEwB,GAAG,CAAC,CAAA;AACrC,MAAA,OAAOA,GAAG,CAAA;AACZ,KAAA;AACA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEAU,EAAAA,yBAAyBA,CACvBV,GAA0B,EAC1BW,QAAwC,EACxCC,OAAqD,EACX;AAC1C,IAAA,MAAMC,KAAK,GAAGb,GAAG,CAACW,QAAQ,CAAE;MAC1BG,KAAK,GAAG,IAAI,CAAC1B,QAAQ,CAAA;AACvB,IAAA,IAAI,CAAC0B,KAAK,CAACC,IAAI,CAACF,KAAK,CAAC,EAAE;AACtB,MAAA,OAAOG,SAAS,CAAA;AAClB,KAAA;AACA;IACAF,KAAK,CAACG,SAAS,GAAG,CAAC,CAAA;AACnB;IACA,MAAMC,EAAE,GAAGJ,KAAK,CAACK,IAAI,CAACN,KAAK,CAAC,CAAE,CAAC,CAAC,CAAA;IAChCC,KAAK,CAACG,SAAS,GAAG,CAAC,CAAA;AACnB;IACA,OAAOL,OAAO,CAACM,EAAE,CAAC,CAAA;AACpB,GAAA;AAEAhB,EAAAA,eAAeA,CACbF,GAA0B,EAC1BxB,EAAW,EACXmC,QAA2B,EAC3B;AACA,IAAA,MAAMS,WAAW,GAAG,IAAI,CAACV,yBAAyB,CAChDV,GAAG,EACHW,QAAQ,EACR,IAAI,CAACtB,YACP,CAAuB,CAAA;AACvB,IAAA,IAAI+B,WAAW,EAAE;MACf,MAAMC,WAAW,GAAG7C,EAAE,CAAC8C,YAAY,CAACX,QAAQ,GAAG,UAAU,CAAC,CAAA;AAC1D,MAAA,MAAMY,QAAQ,GAAGC,QAAQ,CAACvB,WAAW,CAACmB,WAAW,EAAEpB,GAAG,EAAAyB,cAAA,CAAAA,cAAA,CACjD,EAAA,EAAA,IAAI,CAACzC,OAAO,CAAA,EAAA,EAAA,EAAA;AACf0C,QAAAA,OAAO,EAAEL,WAAAA;AAAW,OAAA,CACP,CAAC,CAAA;AAChBrB,MAAAA,GAAG,CAAC2B,GAAG,CAAChB,QAAQ,EAAEY,QAAQ,CAAC,CAAA;AAC7B,KAAA;AACF,GAAA;;AAEA;AACA;AACA,EAAA,MAAMd,eAAeA,CAACT,GAA0B,EAAE4B,YAAqB,EAAE;AACvE,IAAA,MAAMC,gBAAgB,GAAG,IAAI,CAACnB,yBAAyB,CACrDV,GAAG,EACH,UAAU,EACV,IAAI,CAACb,SACP,CAAc,CAAA;AACd,IAAA,IAAI0C,gBAAgB,EAAE;MACpB,MAAMC,eAAe,GAAGC,eAAe,CAAC/B,GAAG,CAACgC,mBAAmB,EAAE,CAAC,CAAA;AAClE,MAAA,MAAMC,WAAW,GAAGJ,gBAAgB,CAAC,CAAC,CAAC,CAACK,aAAc,CAAA;MACtD,IAAIC,aAAa,GAAGP,YAAY,CAAA;AAChC,MAAA,OACEO,aAAa,CAACD,aAAa,IAC3BC,aAAa,CAACb,YAAY,CAAC,WAAW,CAAC,KAAKtB,GAAG,CAACoC,QAAQ,EACxD;QACAD,aAAa,GAAGA,aAAa,CAACD,aAAa,CAAA;AAC7C,OAAA;AACA;AACAC,MAAAA,aAAa,CAACD,aAAa,CAAEG,WAAW,CAACJ,WAAY,CAAC,CAAA;;AAEtD;AACA;AACA;AACA;MACA,MAAMK,cAAc,GAAGC,uBAAuB,CAAAC,EAAAA,CAAAA,MAAA,CACzCL,aAAa,CAACb,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE,EAAAkB,GAAAA,CAAAA,CAAAA,MAAA,CAC9CP,WAAW,CAACX,YAAY,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAEvD,CAAC,CAAA;AAEDW,MAAAA,WAAW,CAACQ,YAAY,CACtB,WAAW,YAAAD,MAAA,CACDF,cAAc,CAACI,IAAI,CAAC,GAAG,CAAC,MACpC,CAAC,CAAA;AAED,MAAA,MAAMC,SAAS,GAAG,MAAMjD,OAAO,CAACC,GAAG,CACjCkC,gBAAgB,CAACjC,GAAG,CAAEgD,eAAe,IAAK;QACxC,OAAOrE,OAAO,CAACqE,eAAe,CAAC,CAC5B3C,WAAW,CAAC2C,eAAe,EAAE,IAAI,CAAC5D,OAAO,EAAE,IAAI,CAACO,QAAQ,CAAC,CACzDsD,IAAI,CAAEC,eAAsC,IAAK;UAChDvC,kCAAkC,CAACuC,eAAe,CAAC,CAAA;AACnDA,UAAAA,eAAe,CAACC,QAAQ,GAAGD,eAAe,CAACE,QAAS,CAAA;UACpD,OAAOF,eAAe,CAACE,QAAQ,CAAA;AAC/B,UAAA,OAAOF,eAAe,CAAA;AACxB,SAAC,CAAC,CAAA;AACN,OAAC,CACH,CAAC,CAAA;AACD,MAAA,MAAMV,QAAQ,GACZO,SAAS,CAACM,MAAM,KAAK,CAAC,GAAGN,SAAS,CAAC,CAAC,CAAC,GAAG,IAAIO,KAAK,CAACP,SAAS,CAAC,CAAA;MAC9D,MAAMQ,UAAU,GAAGC,yBAAyB,CAC1CtB,eAAe,EACfM,QAAQ,CAACJ,mBAAmB,EAC9B,CAAC,CAAA;MACD,IAAII,QAAQ,CAACA,QAAQ,EAAE;AACrB,QAAA,MAAM,IAAI,CAAC3B,eAAe,CAAC2B,QAAQ,EAAED,aAAa,CAAC,CAAA;AACrD,OAAA;MACA,MAAM;QAAEkB,MAAM;QAAEC,MAAM;QAAEC,KAAK;QAAEC,KAAK;QAAEC,UAAU;AAAEC,QAAAA,UAAAA;AAAW,OAAC,GAC5DC,WAAW,CAACR,UAAU,CAAC,CAAA;MACzBf,QAAQ,CAACT,GAAG,CAAC;AACXiC,QAAAA,KAAK,EAAE,KAAK;AACZC,QAAAA,KAAK,EAAE,KAAA;AACT,OAAC,CAAC,CAAA;MACFzB,QAAQ,CAACT,GAAG,CAAC;QACX0B,MAAM;QACNC,MAAM;QACNC,KAAK;QACLC,KAAK;AACLM,QAAAA,KAAK,EAAE,CAAA;AACT,OAAC,CAAC,CAAA;AACF1B,MAAAA,QAAQ,CAAC2B,mBAAmB,CAC1B,IAAIC,KAAK,CAACP,UAAU,EAAEC,UAAU,CAAC,EACjCO,MAAM,EACNA,MACF,CAAC,CAAA;MACDjE,GAAG,CAACoC,QAAQ,GAAGA,QAAQ,CAAA;AACzB,KAAC,MAAM;AACL;MACA,OAAOpC,GAAG,CAACoC,QAAQ,CAAA;AACnB,MAAA,OAAA;AACF,KAAA;AACF,GAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCSSRules.min.mjs","sources":["../../../src/parser/getCSSRules.ts"],"sourcesContent":["import type { CSSRules } from './typedefs';\n\n/**\n * Returns CSS rules for a given SVG document\n * @param {HTMLElement} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\nexport function getCSSRules(doc: Document) {\n const styles = doc.getElementsByTagName('style');\n let i;\n let len;\n const allRules: CSSRules = {};\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n const styleContents = (styles[i].textContent || '').replace(\n // remove comments\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n\n if (styleContents.trim() === '') {\n continue;\n }\n // recovers all the rule in this form `body { style code... }`\n // rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n styleContents\n .split('}')\n // remove empty rules and remove everything if we didn't split in at least 2 pieces\n .filter((rule, index, array) => array.length > 1 && rule.trim())\n // at this point we have hopefully an array of rules `body { style code... `\n .forEach((rule) => {\n // if there is more than one opening bracket and the rule starts with '@', it is likely\n // a nested at-rule like @media, @supports, @scope, etc. Ignore these as the code below\n // can not handle it.\n if (\n (rule.match(/{/g) || []).length > 1 &&\n rule.trim().startsWith('@')\n ) {\n return;\n }\n\n const match = rule.split('{'),\n ruleObj: Record<string, string> = {},\n declaration = match[1].trim(),\n propertyValuePairs = declaration.split(';').filter(function (pair) {\n return pair.trim();\n });\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n const pair = propertyValuePairs[i].split(':'),\n property = pair[0].trim(),\n value = pair[1].trim();\n ruleObj[property] = value;\n }\n rule = match[0].trim();\n rule.split(',').forEach((_rule) => {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n allRules[_rule] = {\n ...(allRules[_rule] || {}),\n ...ruleObj,\n };\n });\n });\n }\n return allRules;\n}\n"],"names":["getCSSRules","doc","styles","getElementsByTagName","i","len","allRules","length","styleContents","textContent","replace","trim","split","filter","rule","index","array","forEach","match","startsWith","ruleObj","propertyValuePairs","pair","property","value","_rule","_objectSpread"],"mappings":"iFAOO,SAASA,EAAYC,GAC1B,MAAMC,EAASD,EAAIE,qBAAqB,SACxC,IAAIC,EACAC,EACJ,MAAMC,EAAqB,CAAA,EAG3B,IAAKF,EAAI,EAAGC,EAAMH,EAAOK,OAAQH,EAAIC,EAAKD,IAAK,CAC7C,MAAMI,GAAiBN,EAAOE,GAAGK,aAAe,IAAIC,QAElD,oBACA,IAG2B,KAAzBF,EAAcG,QAKlBH,EACGI,MAAM,KAENC,QAAO,CAACC,EAAMC,EAAOC,IAAUA,EAAMT,OAAS,GAAKO,EAAKH,SAExDM,SAASH,IAIR,IACGA,EAAKI,MAAM,OAAS,IAAIX,OAAS,GAClCO,EAAKH,OAAOQ,WAAW,KAEvB,OAGF,MAAMD,EAAQJ,EAAKF,MAAM,KACvBQ,EAAkC,CAAE,EAEpCC,EADcH,EAAM,GAAGP,OACUC,MAAM,KAAKC,QAAO,SAAUS,GAC3D,OAAOA,EAAKX,MACd,IAEF,IAAKP,EAAI,EAAGC,EAAMgB,EAAmBd,OAAQH,EAAIC,EAAKD,IAAK,CACzD,MAAMkB,EAAOD,EAAmBjB,GAAGQ,MAAM,KACvCW,EAAWD,EAAK,GAAGX,OACnBa,EAAQF,EAAK,GAAGX,OAClBS,EAAQG,GAAYC,CACtB,EACAV,EAAOI,EAAM,GAAGP,QACXC,MAAM,KAAKK,SAASQ,IAET,MADdA,EAAQA,EAAMf,QAAQ,QAAS,IAAIC,UAInCL,EAASmB,GAAMC,EAAAA,EAAA,CAAA,EACTpB,EAASmB,IAAU,IACpBL,GACJ,GACD,GAER,CACA,OAAOd,CACT"}
1
+ {"version":3,"file":"getCSSRules.min.mjs","sources":["../../../src/parser/getCSSRules.ts"],"sourcesContent":["import type { CSSRules } from './typedefs';\n\n/**\n * Returns CSS rules for a given SVG document\n * @param {HTMLElement} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\nexport function getCSSRules(doc: Document) {\n const styles = doc.getElementsByTagName('style');\n let i;\n let len;\n const allRules: CSSRules = {};\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n const styleContents = (styles[i].textContent || '').replace(\n // remove comments\n /\\/\\*[\\s\\S]*?\\*\\//g,\n '',\n );\n\n if (styleContents.trim() === '') {\n continue;\n }\n // recovers all the rule in this form `body { style code... }`\n // rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n styleContents\n .split('}')\n // remove empty rules and remove everything if we didn't split in at least 2 pieces\n .filter((rule, index, array) => array.length > 1 && rule.trim())\n // at this point we have hopefully an array of rules `body { style code... `\n .forEach((rule) => {\n // if there is more than one opening bracket and the rule starts with '@', it is likely\n // a nested at-rule like @media, @supports, @scope, etc. Ignore these as the code below\n // can not handle it.\n if (\n (rule.match(/{/g) || []).length > 1 &&\n rule.trim().startsWith('@')\n ) {\n return;\n }\n\n const match = rule.split('{'),\n ruleObj: Record<string, string> = {},\n declaration = match[1].trim(),\n propertyValuePairs = declaration.split(';').filter(function (pair) {\n return pair.trim();\n });\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n const pair = propertyValuePairs[i].split(':'),\n property = pair[0].trim(),\n value = pair[1].trim();\n ruleObj[property] = value;\n }\n rule = match[0].trim();\n rule.split(',').forEach((_rule) => {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n allRules[_rule] = {\n ...(allRules[_rule] || {}),\n ...ruleObj,\n };\n });\n });\n }\n return allRules;\n}\n"],"names":["getCSSRules","doc","styles","getElementsByTagName","i","len","allRules","length","styleContents","textContent","replace","trim","split","filter","rule","index","array","forEach","match","startsWith","ruleObj","propertyValuePairs","pair","property","value","_rule","_objectSpread"],"mappings":"iFAOO,SAASA,EAAYC,GAC1B,MAAMC,EAASD,EAAIE,qBAAqB,SACxC,IAAIC,EACAC,EACJ,MAAMC,EAAqB,CAAA,EAG3B,IAAKF,EAAI,EAAGC,EAAMH,EAAOK,OAAQH,EAAIC,EAAKD,IAAK,CAC7C,MAAMI,GAAiBN,EAAOE,GAAGK,aAAe,IAAIC,QAElD,oBACA,IAG2B,KAAzBF,EAAcG,QAKlBH,EACGI,MAAM,KAENC,QAAO,CAACC,EAAMC,EAAOC,IAAUA,EAAMT,OAAS,GAAKO,EAAKH,SAExDM,SAASH,IAIR,IACGA,EAAKI,MAAM,OAAS,IAAIX,OAAS,GAClCO,EAAKH,OAAOQ,WAAW,KAEvB,OAGF,MAAMD,EAAQJ,EAAKF,MAAM,KACvBQ,EAAkC,CAAE,EAEpCC,EADcH,EAAM,GAAGP,OACUC,MAAM,KAAKC,QAAO,SAAUS,GAC3D,OAAOA,EAAKX,MACd,IAEF,IAAKP,EAAI,EAAGC,EAAMgB,EAAmBd,OAAQH,EAAIC,EAAKD,IAAK,CACzD,MAAMkB,EAAOD,EAAmBjB,GAAGQ,MAAM,KACvCW,EAAWD,EAAK,GAAGX,OACnBa,EAAQF,EAAK,GAAGX,OAClBS,EAAQG,GAAYC,CACtB,EACAV,EAAOI,EAAM,GAAGP,QACXC,MAAM,KAAKK,SAASQ,IAET,MADdA,EAAQA,EAAMf,QAAQ,QAAS,IAAIC,UAInCL,EAASmB,GAAMC,EAAAA,EAAA,CAAA,EACTpB,EAASmB,IAAU,IACpBL,GACJ,GACD,GAER,CACA,OAAOd,CACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCSSRules.mjs","sources":["../../../src/parser/getCSSRules.ts"],"sourcesContent":["import type { CSSRules } from './typedefs';\n\n/**\n * Returns CSS rules for a given SVG document\n * @param {HTMLElement} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\nexport function getCSSRules(doc: Document) {\n const styles = doc.getElementsByTagName('style');\n let i;\n let len;\n const allRules: CSSRules = {};\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n const styleContents = (styles[i].textContent || '').replace(\n // remove comments\n /\\/\\*[\\s\\S]*?\\*\\//g,\n ''\n );\n\n if (styleContents.trim() === '') {\n continue;\n }\n // recovers all the rule in this form `body { style code... }`\n // rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n styleContents\n .split('}')\n // remove empty rules and remove everything if we didn't split in at least 2 pieces\n .filter((rule, index, array) => array.length > 1 && rule.trim())\n // at this point we have hopefully an array of rules `body { style code... `\n .forEach((rule) => {\n // if there is more than one opening bracket and the rule starts with '@', it is likely\n // a nested at-rule like @media, @supports, @scope, etc. Ignore these as the code below\n // can not handle it.\n if (\n (rule.match(/{/g) || []).length > 1 &&\n rule.trim().startsWith('@')\n ) {\n return;\n }\n\n const match = rule.split('{'),\n ruleObj: Record<string, string> = {},\n declaration = match[1].trim(),\n propertyValuePairs = declaration.split(';').filter(function (pair) {\n return pair.trim();\n });\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n const pair = propertyValuePairs[i].split(':'),\n property = pair[0].trim(),\n value = pair[1].trim();\n ruleObj[property] = value;\n }\n rule = match[0].trim();\n rule.split(',').forEach((_rule) => {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n allRules[_rule] = {\n ...(allRules[_rule] || {}),\n ...ruleObj,\n };\n });\n });\n }\n return allRules;\n}\n"],"names":["getCSSRules","doc","styles","getElementsByTagName","i","len","allRules","length","styleContents","textContent","replace","trim","split","filter","rule","index","array","forEach","match","startsWith","ruleObj","declaration","propertyValuePairs","pair","property","value","_rule","_objectSpread"],"mappings":"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"}
1
+ {"version":3,"file":"getCSSRules.mjs","sources":["../../../src/parser/getCSSRules.ts"],"sourcesContent":["import type { CSSRules } from './typedefs';\n\n/**\n * Returns CSS rules for a given SVG document\n * @param {HTMLElement} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\nexport function getCSSRules(doc: Document) {\n const styles = doc.getElementsByTagName('style');\n let i;\n let len;\n const allRules: CSSRules = {};\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n const styleContents = (styles[i].textContent || '').replace(\n // remove comments\n /\\/\\*[\\s\\S]*?\\*\\//g,\n '',\n );\n\n if (styleContents.trim() === '') {\n continue;\n }\n // recovers all the rule in this form `body { style code... }`\n // rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n styleContents\n .split('}')\n // remove empty rules and remove everything if we didn't split in at least 2 pieces\n .filter((rule, index, array) => array.length > 1 && rule.trim())\n // at this point we have hopefully an array of rules `body { style code... `\n .forEach((rule) => {\n // if there is more than one opening bracket and the rule starts with '@', it is likely\n // a nested at-rule like @media, @supports, @scope, etc. Ignore these as the code below\n // can not handle it.\n if (\n (rule.match(/{/g) || []).length > 1 &&\n rule.trim().startsWith('@')\n ) {\n return;\n }\n\n const match = rule.split('{'),\n ruleObj: Record<string, string> = {},\n declaration = match[1].trim(),\n propertyValuePairs = declaration.split(';').filter(function (pair) {\n return pair.trim();\n });\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n const pair = propertyValuePairs[i].split(':'),\n property = pair[0].trim(),\n value = pair[1].trim();\n ruleObj[property] = value;\n }\n rule = match[0].trim();\n rule.split(',').forEach((_rule) => {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n allRules[_rule] = {\n ...(allRules[_rule] || {}),\n ...ruleObj,\n };\n });\n });\n }\n return allRules;\n}\n"],"names":["getCSSRules","doc","styles","getElementsByTagName","i","len","allRules","length","styleContents","textContent","replace","trim","split","filter","rule","index","array","forEach","match","startsWith","ruleObj","declaration","propertyValuePairs","pair","property","value","_rule","_objectSpread"],"mappings":"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"}