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":"LayoutManager.mjs","sources":["../../../src/LayoutManager/LayoutManager.ts"],"sourcesContent":["import { Point } from '../Point';\nimport {\n CENTER,\n CHANGED,\n MODIFIED,\n MODIFY_PATH,\n MODIFY_POLY,\n MOVING,\n RESIZING,\n ROTATING,\n SCALING,\n SKEWING,\n iMatrix,\n} from '../constants';\nimport type { Group } from '../shapes/Group';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { invertTransform } from '../util/misc/matrix';\nimport { resolveOrigin } from '../util/misc/resolveOrigin';\nimport { FitContentLayout } from './LayoutStrategies/FitContentLayout';\nimport type { LayoutStrategy } from './LayoutStrategies/LayoutStrategy';\nimport {\n LAYOUT_TYPE_INITIALIZATION,\n LAYOUT_TYPE_ADDED,\n LAYOUT_TYPE_REMOVED,\n LAYOUT_TYPE_IMPERATIVE,\n LAYOUT_TYPE_OBJECT_MODIFIED,\n LAYOUT_TYPE_OBJECT_MODIFYING,\n} from './constants';\nimport type {\n LayoutContext,\n LayoutResult,\n RegistrationContext,\n StrictLayoutContext,\n} from './types';\nimport { classRegistry } from '../ClassRegistry';\nimport type { TModificationEvents } from '../EventTypeDefs';\n\nconst LAYOUT_MANAGER = 'layoutManager';\n\nexport type SerializedLayoutManager = {\n type: string;\n strategy: string;\n};\n\nexport class LayoutManager {\n private declare _prevLayoutStrategy?: LayoutStrategy;\n protected declare _subscriptions: Map<FabricObject, VoidFunction[]>;\n\n strategy: LayoutStrategy;\n\n constructor(strategy: LayoutStrategy = new FitContentLayout()) {\n this.strategy = strategy;\n this._subscriptions = new Map();\n }\n\n public performLayout(context: LayoutContext) {\n const strictContext: StrictLayoutContext = {\n bubbles: true,\n strategy: this.strategy,\n ...context,\n prevStrategy: this._prevLayoutStrategy,\n stopPropagation() {\n this.bubbles = false;\n },\n };\n\n this.onBeforeLayout(strictContext);\n\n const layoutResult = this.getLayoutResult(strictContext);\n if (layoutResult) {\n this.commitLayout(strictContext, layoutResult);\n }\n\n this.onAfterLayout(strictContext, layoutResult);\n this._prevLayoutStrategy = strictContext.strategy;\n }\n\n /**\n * Attach handlers for events that we know will invalidate the layout when\n * performed on child objects ( general transforms ).\n * Returns the disposers for later unsubscribing and cleanup\n * @param {FabricObject} object\n * @param {RegistrationContext & Partial<StrictLayoutContext>} context\n * @returns {VoidFunction[]} disposers remove the handlers\n */\n protected attachHandlers(\n object: FabricObject,\n context: RegistrationContext & Partial<StrictLayoutContext>\n ): VoidFunction[] {\n const { target } = context;\n return (\n [\n MODIFIED,\n MOVING,\n RESIZING,\n ROTATING,\n SCALING,\n SKEWING,\n CHANGED,\n MODIFY_POLY,\n MODIFY_PATH,\n ] as (TModificationEvents & 'modified')[]\n ).map((key) =>\n object.on(key, (e) =>\n this.performLayout(\n key === MODIFIED\n ? {\n type: LAYOUT_TYPE_OBJECT_MODIFIED,\n trigger: key,\n e,\n target,\n }\n : {\n type: LAYOUT_TYPE_OBJECT_MODIFYING,\n trigger: key,\n e,\n target,\n }\n )\n )\n );\n }\n\n /**\n * Subscribe an object to transform events that will trigger a layout change on the parent\n * This is important only for interactive groups.\n * @param object\n * @param context\n */\n protected subscribe(\n object: FabricObject,\n context: RegistrationContext & Partial<StrictLayoutContext>\n ) {\n this.unsubscribe(object, context);\n const disposers = this.attachHandlers(object, context);\n this._subscriptions.set(object, disposers);\n }\n\n /**\n * unsubscribe object layout triggers\n */\n protected unsubscribe(\n object: FabricObject,\n context?: RegistrationContext & Partial<StrictLayoutContext>\n ) {\n (this._subscriptions.get(object) || []).forEach((d) => d());\n this._subscriptions.delete(object);\n }\n\n unsubscribeTargets(\n context: RegistrationContext & Partial<StrictLayoutContext>\n ) {\n context.targets.forEach((object) => this.unsubscribe(object, context));\n }\n\n subscribeTargets(\n context: RegistrationContext & Partial<StrictLayoutContext>\n ) {\n context.targets.forEach((object) => this.subscribe(object, context));\n }\n\n protected onBeforeLayout(context: StrictLayoutContext) {\n const { target, type } = context;\n const { canvas } = target;\n // handle layout triggers subscription\n // @TODO: gate the registration when the group is interactive\n if (type === LAYOUT_TYPE_INITIALIZATION || type === LAYOUT_TYPE_ADDED) {\n this.subscribeTargets(context);\n } else if (type === LAYOUT_TYPE_REMOVED) {\n this.unsubscribeTargets(context);\n }\n // fire layout event (event will fire only for layouts after initialization layout)\n target.fire('layout:before', {\n context,\n });\n canvas &&\n canvas.fire('object:layout:before', {\n target,\n context,\n });\n\n if (type === LAYOUT_TYPE_IMPERATIVE && context.deep) {\n const { strategy: _, ...tricklingContext } = context;\n // traverse the tree\n target.forEachObject(\n (object) =>\n (object as Group).layoutManager &&\n (object as Group).layoutManager.performLayout({\n ...tricklingContext,\n bubbles: false,\n target: object as Group,\n })\n );\n }\n }\n\n protected getLayoutResult(\n context: StrictLayoutContext\n ): Required<LayoutResult> | undefined {\n const { target, strategy, type } = context;\n\n const result = strategy.calcLayoutResult(context, target.getObjects());\n\n if (!result) {\n return;\n }\n\n const prevCenter =\n type === LAYOUT_TYPE_INITIALIZATION\n ? new Point()\n : target.getRelativeCenterPoint();\n\n const {\n center: nextCenter,\n correction = new Point(),\n relativeCorrection = new Point(),\n } = result;\n const offset = prevCenter\n .subtract(nextCenter)\n .add(correction)\n .transform(\n // in `initialization` we do not account for target's transformation matrix\n type === LAYOUT_TYPE_INITIALIZATION\n ? iMatrix\n : invertTransform(target.calcOwnMatrix()),\n true\n )\n .add(relativeCorrection);\n\n return {\n result,\n prevCenter,\n nextCenter,\n offset,\n };\n }\n\n protected commitLayout(\n context: StrictLayoutContext,\n layoutResult: Required<LayoutResult>\n ) {\n const { target } = context;\n const {\n result: { size },\n nextCenter,\n } = layoutResult;\n // set dimensions\n target.set({ width: size.x, height: size.y });\n // layout descendants\n this.layoutObjects(context, layoutResult);\n // set position\n // in `initialization` we do not account for target's transformation matrix\n if (context.type === LAYOUT_TYPE_INITIALIZATION) {\n // TODO: what about strokeWidth?\n target.set({\n left:\n context.x ?? nextCenter.x + size.x * resolveOrigin(target.originX),\n top: context.y ?? nextCenter.y + size.y * resolveOrigin(target.originY),\n });\n } else {\n target.setPositionByOrigin(nextCenter, CENTER, CENTER);\n // invalidate\n target.setCoords();\n target.set('dirty', true);\n }\n }\n\n protected layoutObjects(\n context: StrictLayoutContext,\n layoutResult: Required<LayoutResult>\n ) {\n const { target } = context;\n // adjust objects to account for new center\n target.forEachObject((object) => {\n object.group === target &&\n this.layoutObject(context, layoutResult, object);\n });\n // adjust clip path to account for new center\n context.strategy.shouldLayoutClipPath(context) &&\n this.layoutObject(context, layoutResult, target.clipPath as FabricObject);\n }\n\n /**\n * @param {FabricObject} object\n * @param {Point} offset\n */\n protected layoutObject(\n context: StrictLayoutContext,\n { offset }: Required<LayoutResult>,\n object: FabricObject\n ) {\n // TODO: this is here for cache invalidation.\n // verify if this is necessary since we have explicit\n // cache invalidation at the end of commitLayout\n object.set({\n left: object.left + offset.x,\n top: object.top + offset.y,\n });\n }\n\n protected onAfterLayout(\n context: StrictLayoutContext,\n layoutResult?: LayoutResult\n ) {\n const {\n target,\n strategy,\n bubbles,\n prevStrategy: _,\n ...bubblingContext\n } = context;\n const { canvas } = target;\n\n // fire layout event (event will fire only for layouts after initialization layout)\n target.fire('layout:after', {\n context,\n result: layoutResult,\n });\n canvas &&\n canvas.fire('object:layout:after', {\n context,\n result: layoutResult,\n target,\n });\n\n // bubble\n const parent = target.parent;\n if (bubbles && parent?.layoutManager) {\n // add target to context#path\n (bubblingContext.path || (bubblingContext.path = [])).push(target);\n // all parents should invalidate their layout\n parent.layoutManager.performLayout({\n ...bubblingContext,\n target: parent,\n });\n }\n target.set('dirty', true);\n }\n\n dispose() {\n const { _subscriptions } = this;\n _subscriptions.forEach((disposers) => disposers.forEach((d) => d()));\n _subscriptions.clear();\n }\n\n toObject() {\n return {\n type: LAYOUT_MANAGER,\n strategy: (this.strategy.constructor as typeof LayoutStrategy).type,\n };\n }\n\n toJSON() {\n return this.toObject();\n }\n}\n\nclassRegistry.setClass(LayoutManager, LAYOUT_MANAGER);\n"],"names":["LAYOUT_MANAGER","LayoutManager","constructor","strategy","arguments","length","undefined","FitContentLayout","_defineProperty","_subscriptions","Map","performLayout","context","strictContext","_objectSpread","bubbles","prevStrategy","_prevLayoutStrategy","stopPropagation","onBeforeLayout","layoutResult","getLayoutResult","commitLayout","onAfterLayout","attachHandlers","object","target","MODIFIED","MOVING","RESIZING","ROTATING","SCALING","SKEWING","CHANGED","MODIFY_POLY","MODIFY_PATH","map","key","on","e","type","LAYOUT_TYPE_OBJECT_MODIFIED","trigger","LAYOUT_TYPE_OBJECT_MODIFYING","subscribe","unsubscribe","disposers","set","get","forEach","d","delete","unsubscribeTargets","targets","subscribeTargets","canvas","LAYOUT_TYPE_INITIALIZATION","LAYOUT_TYPE_ADDED","LAYOUT_TYPE_REMOVED","fire","LAYOUT_TYPE_IMPERATIVE","deep","tricklingContext","_objectWithoutProperties","_excluded","forEachObject","layoutManager","result","calcLayoutResult","getObjects","prevCenter","Point","getRelativeCenterPoint","center","nextCenter","correction","relativeCorrection","offset","subtract","add","transform","iMatrix","invertTransform","calcOwnMatrix","size","width","x","height","y","layoutObjects","_context$x","_context$y","left","resolveOrigin","originX","top","originY","setPositionByOrigin","CENTER","setCoords","group","layoutObject","shouldLayoutClipPath","clipPath","_ref","_","bubblingContext","_excluded2","parent","path","push","dispose","clear","toObject","toJSON","classRegistry","setClass"],"mappings":"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"}
1
+ {"version":3,"file":"LayoutManager.mjs","sources":["../../../src/LayoutManager/LayoutManager.ts"],"sourcesContent":["import { Point } from '../Point';\nimport {\n CENTER,\n CHANGED,\n MODIFIED,\n MODIFY_PATH,\n MODIFY_POLY,\n MOVING,\n RESIZING,\n ROTATING,\n SCALING,\n SKEWING,\n iMatrix,\n} from '../constants';\nimport type { Group } from '../shapes/Group';\nimport type { FabricObject } from '../shapes/Object/FabricObject';\nimport { invertTransform } from '../util/misc/matrix';\nimport { resolveOrigin } from '../util/misc/resolveOrigin';\nimport { FitContentLayout } from './LayoutStrategies/FitContentLayout';\nimport type { LayoutStrategy } from './LayoutStrategies/LayoutStrategy';\nimport {\n LAYOUT_TYPE_INITIALIZATION,\n LAYOUT_TYPE_ADDED,\n LAYOUT_TYPE_REMOVED,\n LAYOUT_TYPE_IMPERATIVE,\n LAYOUT_TYPE_OBJECT_MODIFIED,\n LAYOUT_TYPE_OBJECT_MODIFYING,\n} from './constants';\nimport type {\n LayoutContext,\n LayoutResult,\n RegistrationContext,\n StrictLayoutContext,\n} from './types';\nimport { classRegistry } from '../ClassRegistry';\nimport type { TModificationEvents } from '../EventTypeDefs';\n\nconst LAYOUT_MANAGER = 'layoutManager';\n\nexport type SerializedLayoutManager = {\n type: string;\n strategy: string;\n};\n\nexport class LayoutManager {\n private declare _prevLayoutStrategy?: LayoutStrategy;\n protected declare _subscriptions: Map<FabricObject, VoidFunction[]>;\n\n strategy: LayoutStrategy;\n\n constructor(strategy: LayoutStrategy = new FitContentLayout()) {\n this.strategy = strategy;\n this._subscriptions = new Map();\n }\n\n public performLayout(context: LayoutContext) {\n const strictContext: StrictLayoutContext = {\n bubbles: true,\n strategy: this.strategy,\n ...context,\n prevStrategy: this._prevLayoutStrategy,\n stopPropagation() {\n this.bubbles = false;\n },\n };\n\n this.onBeforeLayout(strictContext);\n\n const layoutResult = this.getLayoutResult(strictContext);\n if (layoutResult) {\n this.commitLayout(strictContext, layoutResult);\n }\n\n this.onAfterLayout(strictContext, layoutResult);\n this._prevLayoutStrategy = strictContext.strategy;\n }\n\n /**\n * Attach handlers for events that we know will invalidate the layout when\n * performed on child objects ( general transforms ).\n * Returns the disposers for later unsubscribing and cleanup\n * @param {FabricObject} object\n * @param {RegistrationContext & Partial<StrictLayoutContext>} context\n * @returns {VoidFunction[]} disposers remove the handlers\n */\n protected attachHandlers(\n object: FabricObject,\n context: RegistrationContext & Partial<StrictLayoutContext>,\n ): VoidFunction[] {\n const { target } = context;\n return (\n [\n MODIFIED,\n MOVING,\n RESIZING,\n ROTATING,\n SCALING,\n SKEWING,\n CHANGED,\n MODIFY_POLY,\n MODIFY_PATH,\n ] as (TModificationEvents & 'modified')[]\n ).map((key) =>\n object.on(key, (e) =>\n this.performLayout(\n key === MODIFIED\n ? {\n type: LAYOUT_TYPE_OBJECT_MODIFIED,\n trigger: key,\n e,\n target,\n }\n : {\n type: LAYOUT_TYPE_OBJECT_MODIFYING,\n trigger: key,\n e,\n target,\n },\n ),\n ),\n );\n }\n\n /**\n * Subscribe an object to transform events that will trigger a layout change on the parent\n * This is important only for interactive groups.\n * @param object\n * @param context\n */\n protected subscribe(\n object: FabricObject,\n context: RegistrationContext & Partial<StrictLayoutContext>,\n ) {\n this.unsubscribe(object, context);\n const disposers = this.attachHandlers(object, context);\n this._subscriptions.set(object, disposers);\n }\n\n /**\n * unsubscribe object layout triggers\n */\n protected unsubscribe(\n object: FabricObject,\n _context?: RegistrationContext & Partial<StrictLayoutContext>,\n ) {\n (this._subscriptions.get(object) || []).forEach((d) => d());\n this._subscriptions.delete(object);\n }\n\n unsubscribeTargets(\n context: RegistrationContext & Partial<StrictLayoutContext>,\n ) {\n context.targets.forEach((object) => this.unsubscribe(object, context));\n }\n\n subscribeTargets(\n context: RegistrationContext & Partial<StrictLayoutContext>,\n ) {\n context.targets.forEach((object) => this.subscribe(object, context));\n }\n\n protected onBeforeLayout(context: StrictLayoutContext) {\n const { target, type } = context;\n const { canvas } = target;\n // handle layout triggers subscription\n // @TODO: gate the registration when the group is interactive\n if (type === LAYOUT_TYPE_INITIALIZATION || type === LAYOUT_TYPE_ADDED) {\n this.subscribeTargets(context);\n } else if (type === LAYOUT_TYPE_REMOVED) {\n this.unsubscribeTargets(context);\n }\n // fire layout event (event will fire only for layouts after initialization layout)\n target.fire('layout:before', {\n context,\n });\n canvas &&\n canvas.fire('object:layout:before', {\n target,\n context,\n });\n\n if (type === LAYOUT_TYPE_IMPERATIVE && context.deep) {\n const { strategy: _, ...tricklingContext } = context;\n // traverse the tree\n target.forEachObject(\n (object) =>\n (object as Group).layoutManager &&\n (object as Group).layoutManager.performLayout({\n ...tricklingContext,\n bubbles: false,\n target: object as Group,\n }),\n );\n }\n }\n\n protected getLayoutResult(\n context: StrictLayoutContext,\n ): Required<LayoutResult> | undefined {\n const { target, strategy, type } = context;\n\n const result = strategy.calcLayoutResult(context, target.getObjects());\n\n if (!result) {\n return;\n }\n\n const prevCenter =\n type === LAYOUT_TYPE_INITIALIZATION\n ? new Point()\n : target.getRelativeCenterPoint();\n\n const {\n center: nextCenter,\n correction = new Point(),\n relativeCorrection = new Point(),\n } = result;\n const offset = prevCenter\n .subtract(nextCenter)\n .add(correction)\n .transform(\n // in `initialization` we do not account for target's transformation matrix\n type === LAYOUT_TYPE_INITIALIZATION\n ? iMatrix\n : invertTransform(target.calcOwnMatrix()),\n true,\n )\n .add(relativeCorrection);\n\n return {\n result,\n prevCenter,\n nextCenter,\n offset,\n };\n }\n\n protected commitLayout(\n context: StrictLayoutContext,\n layoutResult: Required<LayoutResult>,\n ) {\n const { target } = context;\n const {\n result: { size },\n nextCenter,\n } = layoutResult;\n // set dimensions\n target.set({ width: size.x, height: size.y });\n // layout descendants\n this.layoutObjects(context, layoutResult);\n // set position\n // in `initialization` we do not account for target's transformation matrix\n if (context.type === LAYOUT_TYPE_INITIALIZATION) {\n // TODO: what about strokeWidth?\n target.set({\n left:\n context.x ?? nextCenter.x + size.x * resolveOrigin(target.originX),\n top: context.y ?? nextCenter.y + size.y * resolveOrigin(target.originY),\n });\n } else {\n target.setPositionByOrigin(nextCenter, CENTER, CENTER);\n // invalidate\n target.setCoords();\n target.set('dirty', true);\n }\n }\n\n protected layoutObjects(\n context: StrictLayoutContext,\n layoutResult: Required<LayoutResult>,\n ) {\n const { target } = context;\n // adjust objects to account for new center\n target.forEachObject((object) => {\n object.group === target &&\n this.layoutObject(context, layoutResult, object);\n });\n // adjust clip path to account for new center\n context.strategy.shouldLayoutClipPath(context) &&\n this.layoutObject(context, layoutResult, target.clipPath as FabricObject);\n }\n\n /**\n * @param {FabricObject} object\n * @param {Point} offset\n */\n protected layoutObject(\n context: StrictLayoutContext,\n { offset }: Required<LayoutResult>,\n object: FabricObject,\n ) {\n // TODO: this is here for cache invalidation.\n // verify if this is necessary since we have explicit\n // cache invalidation at the end of commitLayout\n object.set({\n left: object.left + offset.x,\n top: object.top + offset.y,\n });\n }\n\n protected onAfterLayout(\n context: StrictLayoutContext,\n layoutResult?: LayoutResult,\n ) {\n const {\n target,\n strategy,\n bubbles,\n prevStrategy: _,\n ...bubblingContext\n } = context;\n const { canvas } = target;\n\n // fire layout event (event will fire only for layouts after initialization layout)\n target.fire('layout:after', {\n context,\n result: layoutResult,\n });\n canvas &&\n canvas.fire('object:layout:after', {\n context,\n result: layoutResult,\n target,\n });\n\n // bubble\n const parent = target.parent;\n if (bubbles && parent?.layoutManager) {\n // add target to context#path\n (bubblingContext.path || (bubblingContext.path = [])).push(target);\n // all parents should invalidate their layout\n parent.layoutManager.performLayout({\n ...bubblingContext,\n target: parent,\n });\n }\n target.set('dirty', true);\n }\n\n dispose() {\n const { _subscriptions } = this;\n _subscriptions.forEach((disposers) => disposers.forEach((d) => d()));\n _subscriptions.clear();\n }\n\n toObject() {\n return {\n type: LAYOUT_MANAGER,\n strategy: (this.strategy.constructor as typeof LayoutStrategy).type,\n };\n }\n\n toJSON() {\n return this.toObject();\n }\n}\n\nclassRegistry.setClass(LayoutManager, LAYOUT_MANAGER);\n"],"names":["LAYOUT_MANAGER","LayoutManager","constructor","strategy","arguments","length","undefined","FitContentLayout","_defineProperty","_subscriptions","Map","performLayout","context","strictContext","_objectSpread","bubbles","prevStrategy","_prevLayoutStrategy","stopPropagation","onBeforeLayout","layoutResult","getLayoutResult","commitLayout","onAfterLayout","attachHandlers","object","target","MODIFIED","MOVING","RESIZING","ROTATING","SCALING","SKEWING","CHANGED","MODIFY_POLY","MODIFY_PATH","map","key","on","e","type","LAYOUT_TYPE_OBJECT_MODIFIED","trigger","LAYOUT_TYPE_OBJECT_MODIFYING","subscribe","unsubscribe","disposers","set","_context","get","forEach","d","delete","unsubscribeTargets","targets","subscribeTargets","canvas","LAYOUT_TYPE_INITIALIZATION","LAYOUT_TYPE_ADDED","LAYOUT_TYPE_REMOVED","fire","LAYOUT_TYPE_IMPERATIVE","deep","tricklingContext","_objectWithoutProperties","_excluded","forEachObject","layoutManager","result","calcLayoutResult","getObjects","prevCenter","Point","getRelativeCenterPoint","center","nextCenter","correction","relativeCorrection","offset","subtract","add","transform","iMatrix","invertTransform","calcOwnMatrix","size","width","x","height","y","layoutObjects","_context$x","_context$y","left","resolveOrigin","originX","top","originY","setPositionByOrigin","CENTER","setCoords","group","layoutObject","shouldLayoutClipPath","clipPath","_ref","_","bubblingContext","_excluded2","parent","path","push","dispose","clear","toObject","toJSON","classRegistry","setClass"],"mappings":";;;;;;;;;;;AAqCA,MAAMA,cAAc,GAAG,eAAe,CAAA;AAO/B,MAAMC,aAAa,CAAC;AAMzBC,EAAAA,WAAWA,GAAoD;AAAA,IAAA,IAAnDC,QAAwB,GAAAC,SAAA,CAAAC,MAAA,GAAAD,CAAAA,IAAAA,SAAA,CAAAE,CAAAA,CAAAA,KAAAA,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAG,IAAIG,gBAAgB,EAAE,CAAA;IAAAC,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAC3D,IAAI,CAACL,QAAQ,GAAGA,QAAQ,CAAA;AACxB,IAAA,IAAI,CAACM,cAAc,GAAG,IAAIC,GAAG,EAAE,CAAA;AACjC,GAAA;EAEOC,aAAaA,CAACC,OAAsB,EAAE;AAC3C,IAAA,MAAMC,aAAkC,GAAAC,cAAA,CAAAA,cAAA,CAAA;AACtCC,MAAAA,OAAO,EAAE,IAAI;MACbZ,QAAQ,EAAE,IAAI,CAACA,QAAAA;AAAQ,KAAA,EACpBS,OAAO,CAAA,EAAA,EAAA,EAAA;MACVI,YAAY,EAAE,IAAI,CAACC,mBAAmB;AACtCC,MAAAA,eAAeA,GAAG;QAChB,IAAI,CAACH,OAAO,GAAG,KAAK,CAAA;AACtB,OAAA;KACD,CAAA,CAAA;AAED,IAAA,IAAI,CAACI,cAAc,CAACN,aAAa,CAAC,CAAA;AAElC,IAAA,MAAMO,YAAY,GAAG,IAAI,CAACC,eAAe,CAACR,aAAa,CAAC,CAAA;AACxD,IAAA,IAAIO,YAAY,EAAE;AAChB,MAAA,IAAI,CAACE,YAAY,CAACT,aAAa,EAAEO,YAAY,CAAC,CAAA;AAChD,KAAA;AAEA,IAAA,IAAI,CAACG,aAAa,CAACV,aAAa,EAAEO,YAAY,CAAC,CAAA;AAC/C,IAAA,IAAI,CAACH,mBAAmB,GAAGJ,aAAa,CAACV,QAAQ,CAAA;AACnD,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACYqB,EAAAA,cAAcA,CACtBC,MAAoB,EACpBb,OAA2D,EAC3C;IAChB,MAAM;AAAEc,MAAAA,MAAAA;AAAO,KAAC,GAAGd,OAAO,CAAA;AAC1B,IAAA,OACE,CACEe,QAAQ,EACRC,MAAM,EACNC,QAAQ,EACRC,QAAQ,EACRC,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,WAAW,EACXC,WAAW,CACZ,CACDC,GAAG,CAAEC,GAAG,IACRZ,MAAM,CAACa,EAAE,CAACD,GAAG,EAAGE,CAAC,IACf,IAAI,CAAC5B,aAAa,CAChB0B,GAAG,KAAKV,QAAQ,GACZ;AACEa,MAAAA,IAAI,EAAEC,2BAA2B;AACjCC,MAAAA,OAAO,EAAEL,GAAG;MACZE,CAAC;AACDb,MAAAA,MAAAA;AACF,KAAC,GACD;AACEc,MAAAA,IAAI,EAAEG,4BAA4B;AAClCD,MAAAA,OAAO,EAAEL,GAAG;MACZE,CAAC;AACDb,MAAAA,MAAAA;KAER,CACF,CACF,CAAC,CAAA;AACH,GAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACYkB,EAAAA,SAASA,CACjBnB,MAAoB,EACpBb,OAA2D,EAC3D;AACA,IAAA,IAAI,CAACiC,WAAW,CAACpB,MAAM,EAAEb,OAAO,CAAC,CAAA;IACjC,MAAMkC,SAAS,GAAG,IAAI,CAACtB,cAAc,CAACC,MAAM,EAAEb,OAAO,CAAC,CAAA;IACtD,IAAI,CAACH,cAAc,CAACsC,GAAG,CAACtB,MAAM,EAAEqB,SAAS,CAAC,CAAA;AAC5C,GAAA;;AAEA;AACF;AACA;AACYD,EAAAA,WAAWA,CACnBpB,MAAoB,EACpBuB,QAA6D,EAC7D;AACA,IAAA,CAAC,IAAI,CAACvC,cAAc,CAACwC,GAAG,CAACxB,MAAM,CAAC,IAAI,EAAE,EAAEyB,OAAO,CAAEC,CAAC,IAAKA,CAAC,EAAE,CAAC,CAAA;AAC3D,IAAA,IAAI,CAAC1C,cAAc,CAAC2C,MAAM,CAAC3B,MAAM,CAAC,CAAA;AACpC,GAAA;EAEA4B,kBAAkBA,CAChBzC,OAA2D,EAC3D;AACAA,IAAAA,OAAO,CAAC0C,OAAO,CAACJ,OAAO,CAAEzB,MAAM,IAAK,IAAI,CAACoB,WAAW,CAACpB,MAAM,EAAEb,OAAO,CAAC,CAAC,CAAA;AACxE,GAAA;EAEA2C,gBAAgBA,CACd3C,OAA2D,EAC3D;AACAA,IAAAA,OAAO,CAAC0C,OAAO,CAACJ,OAAO,CAAEzB,MAAM,IAAK,IAAI,CAACmB,SAAS,CAACnB,MAAM,EAAEb,OAAO,CAAC,CAAC,CAAA;AACtE,GAAA;EAEUO,cAAcA,CAACP,OAA4B,EAAE;IACrD,MAAM;MAAEc,MAAM;AAAEc,MAAAA,IAAAA;AAAK,KAAC,GAAG5B,OAAO,CAAA;IAChC,MAAM;AAAE4C,MAAAA,MAAAA;AAAO,KAAC,GAAG9B,MAAM,CAAA;AACzB;AACA;AACA,IAAA,IAAIc,IAAI,KAAKiB,0BAA0B,IAAIjB,IAAI,KAAKkB,iBAAiB,EAAE;AACrE,MAAA,IAAI,CAACH,gBAAgB,CAAC3C,OAAO,CAAC,CAAA;AAChC,KAAC,MAAM,IAAI4B,IAAI,KAAKmB,mBAAmB,EAAE;AACvC,MAAA,IAAI,CAACN,kBAAkB,CAACzC,OAAO,CAAC,CAAA;AAClC,KAAA;AACA;AACAc,IAAAA,MAAM,CAACkC,IAAI,CAAC,eAAe,EAAE;AAC3BhD,MAAAA,OAAAA;AACF,KAAC,CAAC,CAAA;AACF4C,IAAAA,MAAM,IACJA,MAAM,CAACI,IAAI,CAAC,sBAAsB,EAAE;MAClClC,MAAM;AACNd,MAAAA,OAAAA;AACF,KAAC,CAAC,CAAA;AAEJ,IAAA,IAAI4B,IAAI,KAAKqB,sBAAsB,IAAIjD,OAAO,CAACkD,IAAI,EAAE;MAC7C,MAAkBC,gBAAgB,GAAAC,wBAAA,CAAKpD,OAAO,EAAAqD,SAAA,EAAA;AACpD;AACAvC,MAAAA,MAAM,CAACwC,aAAa,CACjBzC,MAAM,IACJA,MAAM,CAAW0C,aAAa,IAC9B1C,MAAM,CAAW0C,aAAa,CAACxD,aAAa,CAAAG,cAAA,CAAAA,cAAA,KACxCiD,gBAAgB,CAAA,EAAA,EAAA,EAAA;AACnBhD,QAAAA,OAAO,EAAE,KAAK;AACdW,QAAAA,MAAM,EAAED,MAAAA;AAAe,OAAA,CACxB,CACL,CAAC,CAAA;AACH,KAAA;AACF,GAAA;EAEUJ,eAAeA,CACvBT,OAA4B,EACQ;IACpC,MAAM;MAAEc,MAAM;MAAEvB,QAAQ;AAAEqC,MAAAA,IAAAA;AAAK,KAAC,GAAG5B,OAAO,CAAA;AAE1C,IAAA,MAAMwD,MAAM,GAAGjE,QAAQ,CAACkE,gBAAgB,CAACzD,OAAO,EAAEc,MAAM,CAAC4C,UAAU,EAAE,CAAC,CAAA;IAEtE,IAAI,CAACF,MAAM,EAAE;AACX,MAAA,OAAA;AACF,KAAA;AAEA,IAAA,MAAMG,UAAU,GACd/B,IAAI,KAAKiB,0BAA0B,GAC/B,IAAIe,KAAK,EAAE,GACX9C,MAAM,CAAC+C,sBAAsB,EAAE,CAAA;IAErC,MAAM;AACJC,MAAAA,MAAM,EAAEC,UAAU;AAClBC,MAAAA,UAAU,GAAG,IAAIJ,KAAK,EAAE;MACxBK,kBAAkB,GAAG,IAAIL,KAAK,EAAC;AACjC,KAAC,GAAGJ,MAAM,CAAA;AACV,IAAA,MAAMU,MAAM,GAAGP,UAAU,CACtBQ,QAAQ,CAACJ,UAAU,CAAC,CACpBK,GAAG,CAACJ,UAAU,CAAC,CACfK,SAAS;AACR;IACAzC,IAAI,KAAKiB,0BAA0B,GAC/ByB,OAAO,GACPC,eAAe,CAACzD,MAAM,CAAC0D,aAAa,EAAE,CAAC,EAC3C,IACF,CAAC,CACAJ,GAAG,CAACH,kBAAkB,CAAC,CAAA;IAE1B,OAAO;MACLT,MAAM;MACNG,UAAU;MACVI,UAAU;AACVG,MAAAA,MAAAA;KACD,CAAA;AACH,GAAA;AAEUxD,EAAAA,YAAYA,CACpBV,OAA4B,EAC5BQ,YAAoC,EACpC;IACA,MAAM;AAAEM,MAAAA,MAAAA;AAAO,KAAC,GAAGd,OAAO,CAAA;IAC1B,MAAM;AACJwD,MAAAA,MAAM,EAAE;AAAEiB,QAAAA,IAAAA;OAAM;AAChBV,MAAAA,UAAAA;AACF,KAAC,GAAGvD,YAAY,CAAA;AAChB;IACAM,MAAM,CAACqB,GAAG,CAAC;MAAEuC,KAAK,EAAED,IAAI,CAACE,CAAC;MAAEC,MAAM,EAAEH,IAAI,CAACI,CAAAA;AAAE,KAAC,CAAC,CAAA;AAC7C;AACA,IAAA,IAAI,CAACC,aAAa,CAAC9E,OAAO,EAAEQ,YAAY,CAAC,CAAA;AACzC;AACA;AACA,IAAA,IAAIR,OAAO,CAAC4B,IAAI,KAAKiB,0BAA0B,EAAE;MAAA,IAAAkC,UAAA,EAAAC,UAAA,CAAA;AAC/C;MACAlE,MAAM,CAACqB,GAAG,CAAC;QACT8C,IAAI,EAAA,CAAAF,UAAA,GACF/E,OAAO,CAAC2E,CAAC,MAAAI,IAAAA,IAAAA,UAAA,KAAAA,KAAAA,CAAAA,GAAAA,UAAA,GAAIhB,UAAU,CAACY,CAAC,GAAGF,IAAI,CAACE,CAAC,GAAGO,aAAa,CAACpE,MAAM,CAACqE,OAAO,CAAC;QACpEC,GAAG,EAAA,CAAAJ,UAAA,GAAEhF,OAAO,CAAC6E,CAAC,MAAA,IAAA,IAAAG,UAAA,KAAA,KAAA,CAAA,GAAAA,UAAA,GAAIjB,UAAU,CAACc,CAAC,GAAGJ,IAAI,CAACI,CAAC,GAAGK,aAAa,CAACpE,MAAM,CAACuE,OAAO,CAAA;AACxE,OAAC,CAAC,CAAA;AACJ,KAAC,MAAM;MACLvE,MAAM,CAACwE,mBAAmB,CAACvB,UAAU,EAAEwB,MAAM,EAAEA,MAAM,CAAC,CAAA;AACtD;MACAzE,MAAM,CAAC0E,SAAS,EAAE,CAAA;AAClB1E,MAAAA,MAAM,CAACqB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAC3B,KAAA;AACF,GAAA;AAEU2C,EAAAA,aAAaA,CACrB9E,OAA4B,EAC5BQ,YAAoC,EACpC;IACA,MAAM;AAAEM,MAAAA,MAAAA;AAAO,KAAC,GAAGd,OAAO,CAAA;AAC1B;AACAc,IAAAA,MAAM,CAACwC,aAAa,CAAEzC,MAAM,IAAK;AAC/BA,MAAAA,MAAM,CAAC4E,KAAK,KAAK3E,MAAM,IACrB,IAAI,CAAC4E,YAAY,CAAC1F,OAAO,EAAEQ,YAAY,EAAEK,MAAM,CAAC,CAAA;AACpD,KAAC,CAAC,CAAA;AACF;AACAb,IAAAA,OAAO,CAACT,QAAQ,CAACoG,oBAAoB,CAAC3F,OAAO,CAAC,IAC5C,IAAI,CAAC0F,YAAY,CAAC1F,OAAO,EAAEQ,YAAY,EAAEM,MAAM,CAAC8E,QAAwB,CAAC,CAAA;AAC7E,GAAA;;AAEA;AACF;AACA;AACA;AACYF,EAAAA,YAAYA,CACpB1F,OAA4B,EAAA6F,IAAA,EAE5BhF,MAAoB,EACpB;IAAA,IAFA;AAAEqD,MAAAA,MAAAA;AAA+B,KAAC,GAAA2B,IAAA,CAAA;AAGlC;AACA;AACA;IACAhF,MAAM,CAACsB,GAAG,CAAC;AACT8C,MAAAA,IAAI,EAAEpE,MAAM,CAACoE,IAAI,GAAGf,MAAM,CAACS,CAAC;AAC5BS,MAAAA,GAAG,EAAEvE,MAAM,CAACuE,GAAG,GAAGlB,MAAM,CAACW,CAAAA;AAC3B,KAAC,CAAC,CAAA;AACJ,GAAA;AAEUlE,EAAAA,aAAaA,CACrBX,OAA4B,EAC5BQ,YAA2B,EAC3B;IACA,MAAM;QACJM,MAAM;QACNvB,QAAQ;QACRY,OAAO;AACPC,QAAAA,YAAY,EAAE0F,CAAAA;AAEhB,OAAC,GAAG9F,OAAO;AADN+F,MAAAA,eAAe,GAAA3C,wBAAA,CAChBpD,OAAO,EAAAgG,UAAA,CAAA,CAAA;IACX,MAAM;AAAEpD,MAAAA,MAAAA;AAAO,KAAC,GAAG9B,MAAM,CAAA;;AAEzB;AACAA,IAAAA,MAAM,CAACkC,IAAI,CAAC,cAAc,EAAE;MAC1BhD,OAAO;AACPwD,MAAAA,MAAM,EAAEhD,YAAAA;AACV,KAAC,CAAC,CAAA;AACFoC,IAAAA,MAAM,IACJA,MAAM,CAACI,IAAI,CAAC,qBAAqB,EAAE;MACjChD,OAAO;AACPwD,MAAAA,MAAM,EAAEhD,YAAY;AACpBM,MAAAA,MAAAA;AACF,KAAC,CAAC,CAAA;;AAEJ;AACA,IAAA,MAAMmF,MAAM,GAAGnF,MAAM,CAACmF,MAAM,CAAA;IAC5B,IAAI9F,OAAO,IAAI8F,MAAM,KAAA,IAAA,IAANA,MAAM,KAANA,KAAAA,CAAAA,IAAAA,MAAM,CAAE1C,aAAa,EAAE;AACpC;AACA,MAAA,CAACwC,eAAe,CAACG,IAAI,KAAKH,eAAe,CAACG,IAAI,GAAG,EAAE,CAAC,EAAEC,IAAI,CAACrF,MAAM,CAAC,CAAA;AAClE;MACAmF,MAAM,CAAC1C,aAAa,CAACxD,aAAa,CAAAG,cAAA,CAAAA,cAAA,CAAA,EAAA,EAC7B6F,eAAe,CAAA,EAAA,EAAA,EAAA;AAClBjF,QAAAA,MAAM,EAAEmF,MAAAA;AAAM,OAAA,CACf,CAAC,CAAA;AACJ,KAAA;AACAnF,IAAAA,MAAM,CAACqB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;AAC3B,GAAA;AAEAiE,EAAAA,OAAOA,GAAG;IACR,MAAM;AAAEvG,MAAAA,cAAAA;AAAe,KAAC,GAAG,IAAI,CAAA;AAC/BA,IAAAA,cAAc,CAACyC,OAAO,CAAEJ,SAAS,IAAKA,SAAS,CAACI,OAAO,CAAEC,CAAC,IAAKA,CAAC,EAAE,CAAC,CAAC,CAAA;IACpE1C,cAAc,CAACwG,KAAK,EAAE,CAAA;AACxB,GAAA;AAEAC,EAAAA,QAAQA,GAAG;IACT,OAAO;AACL1E,MAAAA,IAAI,EAAExC,cAAc;AACpBG,MAAAA,QAAQ,EAAG,IAAI,CAACA,QAAQ,CAACD,WAAW,CAA2BsC,IAAAA;KAChE,CAAA;AACH,GAAA;AAEA2E,EAAAA,MAAMA,GAAG;AACP,IAAA,OAAO,IAAI,CAACD,QAAQ,EAAE,CAAA;AACxB,GAAA;AACF,CAAA;AAEAE,aAAa,CAACC,QAAQ,CAACpH,aAAa,EAAED,cAAc,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClipPathLayout.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/ClipPathLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport { sendPointToPlane } from '../../util/misc/planeChange';\nimport type { LayoutStrategyResult, StrictLayoutContext } from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { getObjectBounds } from './utils';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will adjust the bounding box to match the clip path bounding box.\n */\nexport class ClipPathLayout extends LayoutStrategy {\n static readonly type = 'clip-path';\n\n shouldPerformLayout(context: StrictLayoutContext): boolean {\n return !!context.target.clipPath && super.shouldPerformLayout(context);\n }\n\n shouldLayoutClipPath() {\n return false;\n }\n\n calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[]\n ): LayoutStrategyResult | undefined {\n const { target } = context;\n const { clipPath, group } = target;\n if (!clipPath || !this.shouldPerformLayout(context)) {\n return;\n }\n // TODO: remove stroke calculation from this case\n const { width, height } = makeBoundingBoxFromPoints(\n getObjectBounds(target, clipPath as FabricObject)\n );\n const size = new Point(width, height);\n if (clipPath.absolutePositioned) {\n // we want the center point to exist in group's containing plane\n const clipPathCenter = sendPointToPlane(\n clipPath.getRelativeCenterPoint(),\n undefined,\n group ? group.calcTransformMatrix() : undefined\n );\n return {\n center: clipPathCenter,\n size,\n };\n } else {\n // we want the center point to exist in group's containing plane, so we send it upwards\n const clipPathCenter = clipPath\n .getRelativeCenterPoint()\n .transform(target.calcOwnMatrix(), true);\n if (this.shouldPerformLayout(context)) {\n // the clip path is positioned relative to the group's center which is affected by the bbox\n // so we first calculate the bbox\n const { center = new Point(), correction = new Point() } =\n this.calcBoundingBox(objects, context) || {};\n return {\n center: center.add(clipPathCenter),\n correction: correction.subtract(clipPathCenter),\n size,\n };\n } else {\n return {\n center: target.getRelativeCenterPoint().add(clipPathCenter),\n size,\n };\n }\n }\n }\n}\n\nclassRegistry.setClass(ClipPathLayout);\n"],"names":["ClipPathLayout","LayoutStrategy","shouldPerformLayout","context","target","clipPath","super","shouldLayoutClipPath","calcLayoutResult","objects","group","this","width","height","makeBoundingBoxFromPoints","getObjectBounds","size","Point","absolutePositioned","center","sendPointToPlane","getRelativeCenterPoint","undefined","calcTransformMatrix","clipPathCenter","transform","calcOwnMatrix","correction","calcBoundingBox","add","subtract","_defineProperty","classRegistry","setClass"],"mappings":"0cAYO,MAAMA,UAAuBC,EAGlCC,mBAAAA,CAAoBC,GAClB,QAASA,EAAQC,OAAOC,UAAYC,MAAMJ,oBAAoBC,EAChE,CAEAI,oBAAAA,GACE,OAAO,CACT,CAEAC,gBAAAA,CACEL,EACAM,GAEA,MAAML,OAAEA,GAAWD,GACbE,SAAEA,EAAQK,MAAEA,GAAUN,EAC5B,IAAKC,IAAaM,KAAKT,oBAAoBC,GACzC,OAGF,MAAMS,MAAEA,EAAKC,OAAEA,GAAWC,EACxBC,EAAgBX,EAAQC,IAEpBW,EAAO,IAAIC,EAAML,EAAOC,GAC9B,GAAIR,EAASa,mBAAoB,CAO/B,MAAO,CACLC,OANqBC,EACrBf,EAASgB,8BACTC,EACAZ,EAAQA,EAAMa,2BAAwBD,GAItCN,OAEJ,CAAO,CAEL,MAAMQ,EAAiBnB,EACpBgB,yBACAI,UAAUrB,EAAOsB,iBAAiB,GACrC,GAAIf,KAAKT,oBAAoBC,GAAU,CAGrC,MAAMgB,OAAEA,EAAS,IAAIF,EAAOU,WAAEA,EAAa,IAAIV,GAC7CN,KAAKiB,gBAAgBnB,EAASN,IAAY,CAAA,EAC5C,MAAO,CACLgB,OAAQA,EAAOU,IAAIL,GACnBG,WAAYA,EAAWG,SAASN,GAChCR,OAEJ,CACE,MAAO,CACLG,OAAQf,EAAOiB,yBAAyBQ,IAAIL,GAC5CR,OAGN,CACF,EACDe,EA3DY/B,EAAc,OACF,aA4DzBgC,EAAcC,SAASjC"}
1
+ {"version":3,"file":"ClipPathLayout.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/ClipPathLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport { sendPointToPlane } from '../../util/misc/planeChange';\nimport type { LayoutStrategyResult, StrictLayoutContext } from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { getObjectBounds } from './utils';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will adjust the bounding box to match the clip path bounding box.\n */\nexport class ClipPathLayout extends LayoutStrategy {\n static readonly type = 'clip-path';\n\n shouldPerformLayout(context: StrictLayoutContext): boolean {\n return !!context.target.clipPath && super.shouldPerformLayout(context);\n }\n\n shouldLayoutClipPath() {\n return false;\n }\n\n calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[],\n ): LayoutStrategyResult | undefined {\n const { target } = context;\n const { clipPath, group } = target;\n if (!clipPath || !this.shouldPerformLayout(context)) {\n return;\n }\n // TODO: remove stroke calculation from this case\n const { width, height } = makeBoundingBoxFromPoints(\n getObjectBounds(target, clipPath as FabricObject),\n );\n const size = new Point(width, height);\n if (clipPath.absolutePositioned) {\n // we want the center point to exist in group's containing plane\n const clipPathCenter = sendPointToPlane(\n clipPath.getRelativeCenterPoint(),\n undefined,\n group ? group.calcTransformMatrix() : undefined,\n );\n return {\n center: clipPathCenter,\n size,\n };\n } else {\n // we want the center point to exist in group's containing plane, so we send it upwards\n const clipPathCenter = clipPath\n .getRelativeCenterPoint()\n .transform(target.calcOwnMatrix(), true);\n if (this.shouldPerformLayout(context)) {\n // the clip path is positioned relative to the group's center which is affected by the bbox\n // so we first calculate the bbox\n const { center = new Point(), correction = new Point() } =\n this.calcBoundingBox(objects, context) || {};\n return {\n center: center.add(clipPathCenter),\n correction: correction.subtract(clipPathCenter),\n size,\n };\n } else {\n return {\n center: target.getRelativeCenterPoint().add(clipPathCenter),\n size,\n };\n }\n }\n }\n}\n\nclassRegistry.setClass(ClipPathLayout);\n"],"names":["ClipPathLayout","LayoutStrategy","shouldPerformLayout","context","target","clipPath","super","shouldLayoutClipPath","calcLayoutResult","objects","group","this","width","height","makeBoundingBoxFromPoints","getObjectBounds","size","Point","absolutePositioned","center","sendPointToPlane","getRelativeCenterPoint","undefined","calcTransformMatrix","clipPathCenter","transform","calcOwnMatrix","correction","calcBoundingBox","add","subtract","_defineProperty","classRegistry","setClass"],"mappings":"0cAYO,MAAMA,UAAuBC,EAGlCC,mBAAAA,CAAoBC,GAClB,QAASA,EAAQC,OAAOC,UAAYC,MAAMJ,oBAAoBC,EAChE,CAEAI,oBAAAA,GACE,OAAO,CACT,CAEAC,gBAAAA,CACEL,EACAM,GAEA,MAAML,OAAEA,GAAWD,GACbE,SAAEA,EAAQK,MAAEA,GAAUN,EAC5B,IAAKC,IAAaM,KAAKT,oBAAoBC,GACzC,OAGF,MAAMS,MAAEA,EAAKC,OAAEA,GAAWC,EACxBC,EAAgBX,EAAQC,IAEpBW,EAAO,IAAIC,EAAML,EAAOC,GAC9B,GAAIR,EAASa,mBAAoB,CAO/B,MAAO,CACLC,OANqBC,EACrBf,EAASgB,8BACTC,EACAZ,EAAQA,EAAMa,2BAAwBD,GAItCN,OAEJ,CAAO,CAEL,MAAMQ,EAAiBnB,EACpBgB,yBACAI,UAAUrB,EAAOsB,iBAAiB,GACrC,GAAIf,KAAKT,oBAAoBC,GAAU,CAGrC,MAAMgB,OAAEA,EAAS,IAAIF,EAAOU,WAAEA,EAAa,IAAIV,GAC7CN,KAAKiB,gBAAgBnB,EAASN,IAAY,CAAA,EAC5C,MAAO,CACLgB,OAAQA,EAAOU,IAAIL,GACnBG,WAAYA,EAAWG,SAASN,GAChCR,OAEJ,CACE,MAAO,CACLG,OAAQf,EAAOiB,yBAAyBQ,IAAIL,GAC5CR,OAGN,CACF,EACDe,EA3DY/B,EAAc,OACF,aA4DzBgC,EAAcC,SAASjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ClipPathLayout.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/ClipPathLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport { sendPointToPlane } from '../../util/misc/planeChange';\nimport type { LayoutStrategyResult, StrictLayoutContext } from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { getObjectBounds } from './utils';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will adjust the bounding box to match the clip path bounding box.\n */\nexport class ClipPathLayout extends LayoutStrategy {\n static readonly type = 'clip-path';\n\n shouldPerformLayout(context: StrictLayoutContext): boolean {\n return !!context.target.clipPath && super.shouldPerformLayout(context);\n }\n\n shouldLayoutClipPath() {\n return false;\n }\n\n calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[]\n ): LayoutStrategyResult | undefined {\n const { target } = context;\n const { clipPath, group } = target;\n if (!clipPath || !this.shouldPerformLayout(context)) {\n return;\n }\n // TODO: remove stroke calculation from this case\n const { width, height } = makeBoundingBoxFromPoints(\n getObjectBounds(target, clipPath as FabricObject)\n );\n const size = new Point(width, height);\n if (clipPath.absolutePositioned) {\n // we want the center point to exist in group's containing plane\n const clipPathCenter = sendPointToPlane(\n clipPath.getRelativeCenterPoint(),\n undefined,\n group ? group.calcTransformMatrix() : undefined\n );\n return {\n center: clipPathCenter,\n size,\n };\n } else {\n // we want the center point to exist in group's containing plane, so we send it upwards\n const clipPathCenter = clipPath\n .getRelativeCenterPoint()\n .transform(target.calcOwnMatrix(), true);\n if (this.shouldPerformLayout(context)) {\n // the clip path is positioned relative to the group's center which is affected by the bbox\n // so we first calculate the bbox\n const { center = new Point(), correction = new Point() } =\n this.calcBoundingBox(objects, context) || {};\n return {\n center: center.add(clipPathCenter),\n correction: correction.subtract(clipPathCenter),\n size,\n };\n } else {\n return {\n center: target.getRelativeCenterPoint().add(clipPathCenter),\n size,\n };\n }\n }\n }\n}\n\nclassRegistry.setClass(ClipPathLayout);\n"],"names":["ClipPathLayout","LayoutStrategy","shouldPerformLayout","context","target","clipPath","shouldLayoutClipPath","calcLayoutResult","objects","group","width","height","makeBoundingBoxFromPoints","getObjectBounds","size","Point","absolutePositioned","clipPathCenter","sendPointToPlane","getRelativeCenterPoint","undefined","calcTransformMatrix","center","transform","calcOwnMatrix","correction","calcBoundingBox","add","subtract","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;;;AASA;AACA;AACA;AACO,MAAMA,cAAc,SAASC,cAAc,CAAC;EAGjDC,mBAAmBA,CAACC,OAA4B,EAAW;AACzD,IAAA,OAAO,CAAC,CAACA,OAAO,CAACC,MAAM,CAACC,QAAQ,IAAI,KAAK,CAACH,mBAAmB,CAACC,OAAO,CAAC,CAAA;AACxE,GAAA;AAEAG,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEAC,EAAAA,gBAAgBA,CACdJ,OAA4B,EAC5BK,OAAuB,EACW;IAClC,MAAM;AAAEJ,MAAAA,MAAAA;AAAO,KAAC,GAAGD,OAAO,CAAA;IAC1B,MAAM;MAAEE,QAAQ;AAAEI,MAAAA,KAAAA;AAAM,KAAC,GAAGL,MAAM,CAAA;IAClC,IAAI,CAACC,QAAQ,IAAI,CAAC,IAAI,CAACH,mBAAmB,CAACC,OAAO,CAAC,EAAE;AACnD,MAAA,OAAA;AACF,KAAA;AACA;IACA,MAAM;MAAEO,KAAK;AAAEC,MAAAA,MAAAA;KAAQ,GAAGC,yBAAyB,CACjDC,eAAe,CAACT,MAAM,EAAEC,QAAwB,CAClD,CAAC,CAAA;IACD,MAAMS,IAAI,GAAG,IAAIC,KAAK,CAACL,KAAK,EAAEC,MAAM,CAAC,CAAA;IACrC,IAAIN,QAAQ,CAACW,kBAAkB,EAAE;AAC/B;MACA,MAAMC,cAAc,GAAGC,gBAAgB,CACrCb,QAAQ,CAACc,sBAAsB,EAAE,EACjCC,SAAS,EACTX,KAAK,GAAGA,KAAK,CAACY,mBAAmB,EAAE,GAAGD,SACxC,CAAC,CAAA;MACD,OAAO;AACLE,QAAAA,MAAM,EAAEL,cAAc;AACtBH,QAAAA,IAAAA;OACD,CAAA;AACH,KAAC,MAAM;AACL;AACA,MAAA,MAAMG,cAAc,GAAGZ,QAAQ,CAC5Bc,sBAAsB,EAAE,CACxBI,SAAS,CAACnB,MAAM,CAACoB,aAAa,EAAE,EAAE,IAAI,CAAC,CAAA;AAC1C,MAAA,IAAI,IAAI,CAACtB,mBAAmB,CAACC,OAAO,CAAC,EAAE;AACrC;AACA;QACA,MAAM;AAAEmB,UAAAA,MAAM,GAAG,IAAIP,KAAK,EAAE;UAAEU,UAAU,GAAG,IAAIV,KAAK,EAAC;SAAG,GACtD,IAAI,CAACW,eAAe,CAAClB,OAAO,EAAEL,OAAO,CAAC,IAAI,EAAE,CAAA;QAC9C,OAAO;AACLmB,UAAAA,MAAM,EAAEA,MAAM,CAACK,GAAG,CAACV,cAAc,CAAC;AAClCQ,UAAAA,UAAU,EAAEA,UAAU,CAACG,QAAQ,CAACX,cAAc,CAAC;AAC/CH,UAAAA,IAAAA;SACD,CAAA;AACH,OAAC,MAAM;QACL,OAAO;UACLQ,MAAM,EAAElB,MAAM,CAACe,sBAAsB,EAAE,CAACQ,GAAG,CAACV,cAAc,CAAC;AAC3DH,UAAAA,IAAAA;SACD,CAAA;AACH,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAA;AAACe,eAAA,CA3DY7B,cAAc,EAAA,MAAA,EACF,WAAW,CAAA,CAAA;AA4DpC8B,aAAa,CAACC,QAAQ,CAAC/B,cAAc,CAAC;;;;"}
1
+ {"version":3,"file":"ClipPathLayout.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/ClipPathLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport { sendPointToPlane } from '../../util/misc/planeChange';\nimport type { LayoutStrategyResult, StrictLayoutContext } from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { getObjectBounds } from './utils';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will adjust the bounding box to match the clip path bounding box.\n */\nexport class ClipPathLayout extends LayoutStrategy {\n static readonly type = 'clip-path';\n\n shouldPerformLayout(context: StrictLayoutContext): boolean {\n return !!context.target.clipPath && super.shouldPerformLayout(context);\n }\n\n shouldLayoutClipPath() {\n return false;\n }\n\n calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[],\n ): LayoutStrategyResult | undefined {\n const { target } = context;\n const { clipPath, group } = target;\n if (!clipPath || !this.shouldPerformLayout(context)) {\n return;\n }\n // TODO: remove stroke calculation from this case\n const { width, height } = makeBoundingBoxFromPoints(\n getObjectBounds(target, clipPath as FabricObject),\n );\n const size = new Point(width, height);\n if (clipPath.absolutePositioned) {\n // we want the center point to exist in group's containing plane\n const clipPathCenter = sendPointToPlane(\n clipPath.getRelativeCenterPoint(),\n undefined,\n group ? group.calcTransformMatrix() : undefined,\n );\n return {\n center: clipPathCenter,\n size,\n };\n } else {\n // we want the center point to exist in group's containing plane, so we send it upwards\n const clipPathCenter = clipPath\n .getRelativeCenterPoint()\n .transform(target.calcOwnMatrix(), true);\n if (this.shouldPerformLayout(context)) {\n // the clip path is positioned relative to the group's center which is affected by the bbox\n // so we first calculate the bbox\n const { center = new Point(), correction = new Point() } =\n this.calcBoundingBox(objects, context) || {};\n return {\n center: center.add(clipPathCenter),\n correction: correction.subtract(clipPathCenter),\n size,\n };\n } else {\n return {\n center: target.getRelativeCenterPoint().add(clipPathCenter),\n size,\n };\n }\n }\n }\n}\n\nclassRegistry.setClass(ClipPathLayout);\n"],"names":["ClipPathLayout","LayoutStrategy","shouldPerformLayout","context","target","clipPath","shouldLayoutClipPath","calcLayoutResult","objects","group","width","height","makeBoundingBoxFromPoints","getObjectBounds","size","Point","absolutePositioned","clipPathCenter","sendPointToPlane","getRelativeCenterPoint","undefined","calcTransformMatrix","center","transform","calcOwnMatrix","correction","calcBoundingBox","add","subtract","_defineProperty","classRegistry","setClass"],"mappings":";;;;;;;;AASA;AACA;AACA;AACO,MAAMA,cAAc,SAASC,cAAc,CAAC;EAGjDC,mBAAmBA,CAACC,OAA4B,EAAW;AACzD,IAAA,OAAO,CAAC,CAACA,OAAO,CAACC,MAAM,CAACC,QAAQ,IAAI,KAAK,CAACH,mBAAmB,CAACC,OAAO,CAAC,CAAA;AACxE,GAAA;AAEAG,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;AAEAC,EAAAA,gBAAgBA,CACdJ,OAA4B,EAC5BK,OAAuB,EACW;IAClC,MAAM;AAAEJ,MAAAA,MAAAA;AAAO,KAAC,GAAGD,OAAO,CAAA;IAC1B,MAAM;MAAEE,QAAQ;AAAEI,MAAAA,KAAAA;AAAM,KAAC,GAAGL,MAAM,CAAA;IAClC,IAAI,CAACC,QAAQ,IAAI,CAAC,IAAI,CAACH,mBAAmB,CAACC,OAAO,CAAC,EAAE;AACnD,MAAA,OAAA;AACF,KAAA;AACA;IACA,MAAM;MAAEO,KAAK;AAAEC,MAAAA,MAAAA;KAAQ,GAAGC,yBAAyB,CACjDC,eAAe,CAACT,MAAM,EAAEC,QAAwB,CAClD,CAAC,CAAA;IACD,MAAMS,IAAI,GAAG,IAAIC,KAAK,CAACL,KAAK,EAAEC,MAAM,CAAC,CAAA;IACrC,IAAIN,QAAQ,CAACW,kBAAkB,EAAE;AAC/B;MACA,MAAMC,cAAc,GAAGC,gBAAgB,CACrCb,QAAQ,CAACc,sBAAsB,EAAE,EACjCC,SAAS,EACTX,KAAK,GAAGA,KAAK,CAACY,mBAAmB,EAAE,GAAGD,SACxC,CAAC,CAAA;MACD,OAAO;AACLE,QAAAA,MAAM,EAAEL,cAAc;AACtBH,QAAAA,IAAAA;OACD,CAAA;AACH,KAAC,MAAM;AACL;AACA,MAAA,MAAMG,cAAc,GAAGZ,QAAQ,CAC5Bc,sBAAsB,EAAE,CACxBI,SAAS,CAACnB,MAAM,CAACoB,aAAa,EAAE,EAAE,IAAI,CAAC,CAAA;AAC1C,MAAA,IAAI,IAAI,CAACtB,mBAAmB,CAACC,OAAO,CAAC,EAAE;AACrC;AACA;QACA,MAAM;AAAEmB,UAAAA,MAAM,GAAG,IAAIP,KAAK,EAAE;UAAEU,UAAU,GAAG,IAAIV,KAAK,EAAC;SAAG,GACtD,IAAI,CAACW,eAAe,CAAClB,OAAO,EAAEL,OAAO,CAAC,IAAI,EAAE,CAAA;QAC9C,OAAO;AACLmB,UAAAA,MAAM,EAAEA,MAAM,CAACK,GAAG,CAACV,cAAc,CAAC;AAClCQ,UAAAA,UAAU,EAAEA,UAAU,CAACG,QAAQ,CAACX,cAAc,CAAC;AAC/CH,UAAAA,IAAAA;SACD,CAAA;AACH,OAAC,MAAM;QACL,OAAO;UACLQ,MAAM,EAAElB,MAAM,CAACe,sBAAsB,EAAE,CAACQ,GAAG,CAACV,cAAc,CAAC;AAC3DH,UAAAA,IAAAA;SACD,CAAA;AACH,OAAA;AACF,KAAA;AACF,GAAA;AACF,CAAA;AAACe,eAAA,CA3DY7B,cAAc,EAAA,MAAA,EACF,WAAW,CAAA,CAAA;AA4DpC8B,aAAa,CAACC,QAAQ,CAAC/B,cAAc,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FixedLayout.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/FixedLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will keep target's initial size.\n */\nexport class FixedLayout extends LayoutStrategy {\n static readonly type = 'fixed';\n\n /**\n * @override respect target's initial size\n */\n getInitialSize(\n { target }: StrictLayoutContext & InitializationLayoutContext,\n { size }: Pick<LayoutStrategyResult, 'center' | 'size'>\n ): Point {\n return new Point(target.width || size.x, target.height || size.y);\n }\n}\n\nclassRegistry.setClass(FixedLayout);\n"],"names":["FixedLayout","LayoutStrategy","getInitialSize","_ref","_ref2","target","size","Point","width","x","height","y","_defineProperty","classRegistry","setClass"],"mappings":"uPAYO,MAAMA,UAAoBC,EAM/BC,cAAAA,CAAcC,EAAAC,GAGL,IAFPC,OAAEA,GAA2DF,GAC7DG,KAAEA,GAAqDF,EAEvD,OAAO,IAAIG,EAAMF,EAAOG,OAASF,EAAKG,EAAGJ,EAAOK,QAAUJ,EAAKK,EACjE,EACDC,EAZYZ,EAAW,OACC,SAazBa,EAAcC,SAASd"}
1
+ {"version":3,"file":"FixedLayout.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/FixedLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will keep target's initial size.\n */\nexport class FixedLayout extends LayoutStrategy {\n static readonly type = 'fixed';\n\n /**\n * @override respect target's initial size\n */\n getInitialSize(\n { target }: StrictLayoutContext & InitializationLayoutContext,\n { size }: Pick<LayoutStrategyResult, 'center' | 'size'>,\n ): Point {\n return new Point(target.width || size.x, target.height || size.y);\n }\n}\n\nclassRegistry.setClass(FixedLayout);\n"],"names":["FixedLayout","LayoutStrategy","getInitialSize","_ref","_ref2","target","size","Point","width","x","height","y","_defineProperty","classRegistry","setClass"],"mappings":"uPAYO,MAAMA,UAAoBC,EAM/BC,cAAAA,CAAcC,EAAAC,GAGL,IAFPC,OAAEA,GAA2DF,GAC7DG,KAAEA,GAAqDF,EAEvD,OAAO,IAAIG,EAAMF,EAAOG,OAASF,EAAKG,EAAGJ,EAAOK,QAAUJ,EAAKK,EACjE,EACDC,EAZYZ,EAAW,OACC,SAazBa,EAAcC,SAASd"}
@@ -1 +1 @@
1
- {"version":3,"file":"FixedLayout.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/FixedLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will keep target's initial size.\n */\nexport class FixedLayout extends LayoutStrategy {\n static readonly type = 'fixed';\n\n /**\n * @override respect target's initial size\n */\n getInitialSize(\n { target }: StrictLayoutContext & InitializationLayoutContext,\n { size }: Pick<LayoutStrategyResult, 'center' | 'size'>\n ): Point {\n return new Point(target.width || size.x, target.height || size.y);\n }\n}\n\nclassRegistry.setClass(FixedLayout);\n"],"names":["FixedLayout","LayoutStrategy","getInitialSize","_ref","_ref2","target","size","Point","width","x","height","y","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASA;AACA;AACA;AACO,MAAMA,WAAW,SAASC,cAAc,CAAC;AAG9C;AACF;AACA;AACEC,EAAAA,cAAcA,CAAAC,IAAA,EAAAC,KAAA,EAGL;IAAA,IAFP;AAAEC,MAAAA,MAAAA;AAA0D,KAAC,GAAAF,IAAA,CAAA;IAAA,IAC7D;AAAEG,MAAAA,IAAAA;AAAoD,KAAC,GAAAF,KAAA,CAAA;AAEvD,IAAA,OAAO,IAAIG,KAAK,CAACF,MAAM,CAACG,KAAK,IAAIF,IAAI,CAACG,CAAC,EAAEJ,MAAM,CAACK,MAAM,IAAIJ,IAAI,CAACK,CAAC,CAAC,CAAA;AACnE,GAAA;AACF,CAAA;AAACC,eAAA,CAZYZ,WAAW,EAAA,MAAA,EACC,OAAO,CAAA,CAAA;AAahCa,aAAa,CAACC,QAAQ,CAACd,WAAW,CAAC;;;;"}
1
+ {"version":3,"file":"FixedLayout.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/FixedLayout.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { LayoutStrategy } from './LayoutStrategy';\nimport { classRegistry } from '../../ClassRegistry';\n\n/**\n * Layout will keep target's initial size.\n */\nexport class FixedLayout extends LayoutStrategy {\n static readonly type = 'fixed';\n\n /**\n * @override respect target's initial size\n */\n getInitialSize(\n { target }: StrictLayoutContext & InitializationLayoutContext,\n { size }: Pick<LayoutStrategyResult, 'center' | 'size'>,\n ): Point {\n return new Point(target.width || size.x, target.height || size.y);\n }\n}\n\nclassRegistry.setClass(FixedLayout);\n"],"names":["FixedLayout","LayoutStrategy","getInitialSize","_ref","_ref2","target","size","Point","width","x","height","y","_defineProperty","classRegistry","setClass"],"mappings":";;;;;AASA;AACA;AACA;AACO,MAAMA,WAAW,SAASC,cAAc,CAAC;AAG9C;AACF;AACA;AACEC,EAAAA,cAAcA,CAAAC,IAAA,EAAAC,KAAA,EAGL;IAAA,IAFP;AAAEC,MAAAA,MAAAA;AAA0D,KAAC,GAAAF,IAAA,CAAA;IAAA,IAC7D;AAAEG,MAAAA,IAAAA;AAAoD,KAAC,GAAAF,KAAA,CAAA;AAEvD,IAAA,OAAO,IAAIG,KAAK,CAACF,MAAM,CAACG,KAAK,IAAIF,IAAI,CAACG,CAAC,EAAEJ,MAAM,CAACK,MAAM,IAAIJ,IAAI,CAACK,CAAC,CAAC,CAAA;AACnE,GAAA;AACF,CAAA;AAACC,eAAA,CAZYZ,WAAW,EAAA,MAAA,EACC,OAAO,CAAA,CAAA;AAahCa,aAAa,CAACC,QAAQ,CAACd,WAAW,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutStrategy.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/LayoutStrategy.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n LAYOUT_TYPE_INITIALIZATION,\n LAYOUT_TYPE_IMPERATIVE,\n} from '../constants';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { getObjectBounds } from './utils';\n\n/**\n * Exposes a main public method {@link calcLayoutResult} that is used by the `LayoutManager` to perform layout.\n * Returning `undefined` signals the `LayoutManager` to skip the layout.\n *\n * In charge of calculating the bounding box of the passed objects.\n */\nexport abstract class LayoutStrategy {\n /**\n * override by subclass for persistence (TS does not support `static abstract`)\n */\n static type = 'strategy';\n\n /**\n * Used by the `LayoutManager` to perform layout\n * @TODO/fix: if this method is calcResult, should calc unconditionally.\n * the condition to not calc should be evaluated by the layoutManager.\n * @returns layout result **OR** `undefined` to skip layout\n */\n public calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[]\n ): LayoutStrategyResult | undefined {\n if (this.shouldPerformLayout(context)) {\n return this.calcBoundingBox(objects, context);\n }\n }\n\n shouldPerformLayout({ type, prevStrategy, strategy }: StrictLayoutContext) {\n return (\n type === LAYOUT_TYPE_INITIALIZATION ||\n type === LAYOUT_TYPE_IMPERATIVE ||\n (!!prevStrategy && strategy !== prevStrategy)\n );\n }\n\n shouldLayoutClipPath({ type, target: { clipPath } }: StrictLayoutContext) {\n return (\n type !== LAYOUT_TYPE_INITIALIZATION &&\n clipPath &&\n !clipPath.absolutePositioned\n );\n }\n\n getInitialSize(\n context: StrictLayoutContext & InitializationLayoutContext,\n result: Pick<LayoutStrategyResult, 'center' | 'size'>\n ) {\n return result.size;\n }\n\n /**\n * Override this method to customize layout.\n */\n calcBoundingBox(\n objects: FabricObject[],\n context: StrictLayoutContext\n ): LayoutStrategyResult | undefined {\n const { type, target } = context;\n if (type === LAYOUT_TYPE_IMPERATIVE && context.overrides) {\n return context.overrides;\n }\n if (objects.length === 0) {\n return;\n }\n const { left, top, width, height } = makeBoundingBoxFromPoints(\n objects\n .map((object) => getObjectBounds(target, object))\n .reduce<Point[]>((coords, curr) => coords.concat(curr), [])\n );\n const bboxSize = new Point(width, height);\n const bboxLeftTop = new Point(left, top);\n const bboxCenter = bboxLeftTop.add(bboxSize.scalarDivide(2));\n\n if (type === LAYOUT_TYPE_INITIALIZATION) {\n const actualSize = this.getInitialSize(context, {\n size: bboxSize,\n center: bboxCenter,\n });\n return {\n // in `initialization` we do not account for target's transformation matrix\n center: bboxCenter,\n // TODO: investigate if this is still necessary\n relativeCorrection: new Point(0, 0),\n size: actualSize,\n };\n } else {\n // we send `relativeCenter` up to group's containing plane\n const center = bboxCenter.transform(target.calcOwnMatrix());\n return {\n center,\n size: bboxSize,\n };\n }\n }\n}\n"],"names":["LayoutStrategy","calcLayoutResult","context","objects","this","shouldPerformLayout","calcBoundingBox","_ref","type","prevStrategy","strategy","LAYOUT_TYPE_INITIALIZATION","LAYOUT_TYPE_IMPERATIVE","shouldLayoutClipPath","_ref2","target","clipPath","absolutePositioned","getInitialSize","result","size","overrides","length","left","top","width","height","makeBoundingBoxFromPoints","map","object","getObjectBounds","reduce","coords","curr","concat","bboxSize","Point","bboxCenter","add","scalarDivide","actualSize","center","relativeCorrection","transform","calcOwnMatrix","_defineProperty"],"mappings":"2WAoBO,MAAeA,EAYbC,gBAAAA,CACLC,EACAC,GAEA,GAAIC,KAAKC,oBAAoBH,GAC3B,OAAOE,KAAKE,gBAAgBH,EAASD,EAEzC,CAEAG,mBAAAA,CAAmBE,GAAwD,IAAvDC,KAAEA,EAAIC,aAAEA,EAAYC,SAAEA,GAA+BH,EACvE,OACEC,IAASG,GACTH,IAASI,KACNH,GAAgBC,IAAaD,CAEpC,CAEAI,oBAAAA,CAAoBC,GAAsD,IAArDN,KAAEA,EAAMO,QAAQC,SAAEA,IAAiCF,EACtE,OACEN,IAASG,GACTK,IACCA,EAASC,kBAEd,CAEAC,cAAAA,CACEhB,EACAiB,GAEA,OAAOA,EAAOC,IAChB,CAKAd,eAAAA,CACEH,EACAD,GAEA,MAAMM,KAAEA,EAAIO,OAAEA,GAAWb,EACzB,GAAIM,IAASI,GAA0BV,EAAQmB,UAC7C,OAAOnB,EAAQmB,UAEjB,GAAuB,IAAnBlB,EAAQmB,OACV,OAEF,MAAMC,KAAEA,EAAIC,IAAEA,EAAGC,MAAEA,EAAKC,OAAEA,GAAWC,EACnCxB,EACGyB,KAAKC,GAAWC,EAAgBf,EAAQc,KACxCE,QAAgB,CAACC,EAAQC,IAASD,EAAOE,OAAOD,IAAO,KAEtDE,EAAW,IAAIC,EAAMX,EAAOC,GAE5BW,EADc,IAAID,EAAMb,EAAMC,GACLc,IAAIH,EAASI,aAAa,IAEzD,GAAI/B,IAASG,EAA4B,CACvC,MAAM6B,EAAapC,KAAKc,eAAehB,EAAS,CAC9CkB,KAAMe,EACNM,OAAQJ,IAEV,MAAO,CAELI,OAAQJ,EAERK,mBAAoB,IAAIN,EAAM,EAAG,GACjChB,KAAMoB,EAEV,CAGE,MAAO,CACLC,OAFaJ,EAAWM,UAAU5B,EAAO6B,iBAGzCxB,KAAMe,EAGZ,EAtFAU,EADoB7C,EAAc,OAIpB"}
1
+ {"version":3,"file":"LayoutStrategy.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/LayoutStrategy.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n LAYOUT_TYPE_INITIALIZATION,\n LAYOUT_TYPE_IMPERATIVE,\n} from '../constants';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { getObjectBounds } from './utils';\n\n/**\n * Exposes a main public method {@link calcLayoutResult} that is used by the `LayoutManager` to perform layout.\n * Returning `undefined` signals the `LayoutManager` to skip the layout.\n *\n * In charge of calculating the bounding box of the passed objects.\n */\nexport abstract class LayoutStrategy {\n /**\n * override by subclass for persistence (TS does not support `static abstract`)\n */\n static type = 'strategy';\n\n /**\n * Used by the `LayoutManager` to perform layout\n * @TODO/fix: if this method is calcResult, should calc unconditionally.\n * the condition to not calc should be evaluated by the layoutManager.\n * @returns layout result **OR** `undefined` to skip layout\n */\n public calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[],\n ): LayoutStrategyResult | undefined {\n if (this.shouldPerformLayout(context)) {\n return this.calcBoundingBox(objects, context);\n }\n }\n\n shouldPerformLayout({ type, prevStrategy, strategy }: StrictLayoutContext) {\n return (\n type === LAYOUT_TYPE_INITIALIZATION ||\n type === LAYOUT_TYPE_IMPERATIVE ||\n (!!prevStrategy && strategy !== prevStrategy)\n );\n }\n\n shouldLayoutClipPath({ type, target: { clipPath } }: StrictLayoutContext) {\n return (\n type !== LAYOUT_TYPE_INITIALIZATION &&\n clipPath &&\n !clipPath.absolutePositioned\n );\n }\n\n getInitialSize(\n context: StrictLayoutContext & InitializationLayoutContext,\n result: Pick<LayoutStrategyResult, 'center' | 'size'>,\n ) {\n return result.size;\n }\n\n /**\n * Override this method to customize layout.\n */\n calcBoundingBox(\n objects: FabricObject[],\n context: StrictLayoutContext,\n ): LayoutStrategyResult | undefined {\n const { type, target } = context;\n if (type === LAYOUT_TYPE_IMPERATIVE && context.overrides) {\n return context.overrides;\n }\n if (objects.length === 0) {\n return;\n }\n const { left, top, width, height } = makeBoundingBoxFromPoints(\n objects\n .map((object) => getObjectBounds(target, object))\n .reduce<Point[]>((coords, curr) => coords.concat(curr), []),\n );\n const bboxSize = new Point(width, height);\n const bboxLeftTop = new Point(left, top);\n const bboxCenter = bboxLeftTop.add(bboxSize.scalarDivide(2));\n\n if (type === LAYOUT_TYPE_INITIALIZATION) {\n const actualSize = this.getInitialSize(context, {\n size: bboxSize,\n center: bboxCenter,\n });\n return {\n // in `initialization` we do not account for target's transformation matrix\n center: bboxCenter,\n // TODO: investigate if this is still necessary\n relativeCorrection: new Point(0, 0),\n size: actualSize,\n };\n } else {\n // we send `relativeCenter` up to group's containing plane\n const center = bboxCenter.transform(target.calcOwnMatrix());\n return {\n center,\n size: bboxSize,\n };\n }\n }\n}\n"],"names":["LayoutStrategy","calcLayoutResult","context","objects","this","shouldPerformLayout","calcBoundingBox","_ref","type","prevStrategy","strategy","LAYOUT_TYPE_INITIALIZATION","LAYOUT_TYPE_IMPERATIVE","shouldLayoutClipPath","_ref2","target","clipPath","absolutePositioned","getInitialSize","result","size","overrides","length","left","top","width","height","makeBoundingBoxFromPoints","map","object","getObjectBounds","reduce","coords","curr","concat","bboxSize","Point","bboxCenter","add","scalarDivide","actualSize","center","relativeCorrection","transform","calcOwnMatrix","_defineProperty"],"mappings":"2WAoBO,MAAeA,EAYbC,gBAAAA,CACLC,EACAC,GAEA,GAAIC,KAAKC,oBAAoBH,GAC3B,OAAOE,KAAKE,gBAAgBH,EAASD,EAEzC,CAEAG,mBAAAA,CAAmBE,GAAwD,IAAvDC,KAAEA,EAAIC,aAAEA,EAAYC,SAAEA,GAA+BH,EACvE,OACEC,IAASG,GACTH,IAASI,KACNH,GAAgBC,IAAaD,CAEpC,CAEAI,oBAAAA,CAAoBC,GAAsD,IAArDN,KAAEA,EAAMO,QAAQC,SAAEA,IAAiCF,EACtE,OACEN,IAASG,GACTK,IACCA,EAASC,kBAEd,CAEAC,cAAAA,CACEhB,EACAiB,GAEA,OAAOA,EAAOC,IAChB,CAKAd,eAAAA,CACEH,EACAD,GAEA,MAAMM,KAAEA,EAAIO,OAAEA,GAAWb,EACzB,GAAIM,IAASI,GAA0BV,EAAQmB,UAC7C,OAAOnB,EAAQmB,UAEjB,GAAuB,IAAnBlB,EAAQmB,OACV,OAEF,MAAMC,KAAEA,EAAIC,IAAEA,EAAGC,MAAEA,EAAKC,OAAEA,GAAWC,EACnCxB,EACGyB,KAAKC,GAAWC,EAAgBf,EAAQc,KACxCE,QAAgB,CAACC,EAAQC,IAASD,EAAOE,OAAOD,IAAO,KAEtDE,EAAW,IAAIC,EAAMX,EAAOC,GAE5BW,EADc,IAAID,EAAMb,EAAMC,GACLc,IAAIH,EAASI,aAAa,IAEzD,GAAI/B,IAASG,EAA4B,CACvC,MAAM6B,EAAapC,KAAKc,eAAehB,EAAS,CAC9CkB,KAAMe,EACNM,OAAQJ,IAEV,MAAO,CAELI,OAAQJ,EAERK,mBAAoB,IAAIN,EAAM,EAAG,GACjChB,KAAMoB,EAEV,CAGE,MAAO,CACLC,OAFaJ,EAAWM,UAAU5B,EAAO6B,iBAGzCxB,KAAMe,EAGZ,EAtFAU,EADoB7C,EAAc,OAIpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutStrategy.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/LayoutStrategy.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n LAYOUT_TYPE_INITIALIZATION,\n LAYOUT_TYPE_IMPERATIVE,\n} from '../constants';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { getObjectBounds } from './utils';\n\n/**\n * Exposes a main public method {@link calcLayoutResult} that is used by the `LayoutManager` to perform layout.\n * Returning `undefined` signals the `LayoutManager` to skip the layout.\n *\n * In charge of calculating the bounding box of the passed objects.\n */\nexport abstract class LayoutStrategy {\n /**\n * override by subclass for persistence (TS does not support `static abstract`)\n */\n static type = 'strategy';\n\n /**\n * Used by the `LayoutManager` to perform layout\n * @TODO/fix: if this method is calcResult, should calc unconditionally.\n * the condition to not calc should be evaluated by the layoutManager.\n * @returns layout result **OR** `undefined` to skip layout\n */\n public calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[]\n ): LayoutStrategyResult | undefined {\n if (this.shouldPerformLayout(context)) {\n return this.calcBoundingBox(objects, context);\n }\n }\n\n shouldPerformLayout({ type, prevStrategy, strategy }: StrictLayoutContext) {\n return (\n type === LAYOUT_TYPE_INITIALIZATION ||\n type === LAYOUT_TYPE_IMPERATIVE ||\n (!!prevStrategy && strategy !== prevStrategy)\n );\n }\n\n shouldLayoutClipPath({ type, target: { clipPath } }: StrictLayoutContext) {\n return (\n type !== LAYOUT_TYPE_INITIALIZATION &&\n clipPath &&\n !clipPath.absolutePositioned\n );\n }\n\n getInitialSize(\n context: StrictLayoutContext & InitializationLayoutContext,\n result: Pick<LayoutStrategyResult, 'center' | 'size'>\n ) {\n return result.size;\n }\n\n /**\n * Override this method to customize layout.\n */\n calcBoundingBox(\n objects: FabricObject[],\n context: StrictLayoutContext\n ): LayoutStrategyResult | undefined {\n const { type, target } = context;\n if (type === LAYOUT_TYPE_IMPERATIVE && context.overrides) {\n return context.overrides;\n }\n if (objects.length === 0) {\n return;\n }\n const { left, top, width, height } = makeBoundingBoxFromPoints(\n objects\n .map((object) => getObjectBounds(target, object))\n .reduce<Point[]>((coords, curr) => coords.concat(curr), [])\n );\n const bboxSize = new Point(width, height);\n const bboxLeftTop = new Point(left, top);\n const bboxCenter = bboxLeftTop.add(bboxSize.scalarDivide(2));\n\n if (type === LAYOUT_TYPE_INITIALIZATION) {\n const actualSize = this.getInitialSize(context, {\n size: bboxSize,\n center: bboxCenter,\n });\n return {\n // in `initialization` we do not account for target's transformation matrix\n center: bboxCenter,\n // TODO: investigate if this is still necessary\n relativeCorrection: new Point(0, 0),\n size: actualSize,\n };\n } else {\n // we send `relativeCenter` up to group's containing plane\n const center = bboxCenter.transform(target.calcOwnMatrix());\n return {\n center,\n size: bboxSize,\n };\n }\n }\n}\n"],"names":["LayoutStrategy","calcLayoutResult","context","objects","shouldPerformLayout","calcBoundingBox","_ref","type","prevStrategy","strategy","LAYOUT_TYPE_INITIALIZATION","LAYOUT_TYPE_IMPERATIVE","shouldLayoutClipPath","_ref2","target","clipPath","absolutePositioned","getInitialSize","result","size","overrides","length","left","top","width","height","makeBoundingBoxFromPoints","map","object","getObjectBounds","reduce","coords","curr","concat","bboxSize","Point","bboxLeftTop","bboxCenter","add","scalarDivide","actualSize","center","relativeCorrection","transform","calcOwnMatrix","_defineProperty"],"mappings":"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"}
1
+ {"version":3,"file":"LayoutStrategy.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/LayoutStrategy.ts"],"sourcesContent":["import { Point } from '../../Point';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n LAYOUT_TYPE_INITIALIZATION,\n LAYOUT_TYPE_IMPERATIVE,\n} from '../constants';\nimport type {\n InitializationLayoutContext,\n LayoutStrategyResult,\n StrictLayoutContext,\n} from '../types';\nimport { getObjectBounds } from './utils';\n\n/**\n * Exposes a main public method {@link calcLayoutResult} that is used by the `LayoutManager` to perform layout.\n * Returning `undefined` signals the `LayoutManager` to skip the layout.\n *\n * In charge of calculating the bounding box of the passed objects.\n */\nexport abstract class LayoutStrategy {\n /**\n * override by subclass for persistence (TS does not support `static abstract`)\n */\n static type = 'strategy';\n\n /**\n * Used by the `LayoutManager` to perform layout\n * @TODO/fix: if this method is calcResult, should calc unconditionally.\n * the condition to not calc should be evaluated by the layoutManager.\n * @returns layout result **OR** `undefined` to skip layout\n */\n public calcLayoutResult(\n context: StrictLayoutContext,\n objects: FabricObject[],\n ): LayoutStrategyResult | undefined {\n if (this.shouldPerformLayout(context)) {\n return this.calcBoundingBox(objects, context);\n }\n }\n\n shouldPerformLayout({ type, prevStrategy, strategy }: StrictLayoutContext) {\n return (\n type === LAYOUT_TYPE_INITIALIZATION ||\n type === LAYOUT_TYPE_IMPERATIVE ||\n (!!prevStrategy && strategy !== prevStrategy)\n );\n }\n\n shouldLayoutClipPath({ type, target: { clipPath } }: StrictLayoutContext) {\n return (\n type !== LAYOUT_TYPE_INITIALIZATION &&\n clipPath &&\n !clipPath.absolutePositioned\n );\n }\n\n getInitialSize(\n context: StrictLayoutContext & InitializationLayoutContext,\n result: Pick<LayoutStrategyResult, 'center' | 'size'>,\n ) {\n return result.size;\n }\n\n /**\n * Override this method to customize layout.\n */\n calcBoundingBox(\n objects: FabricObject[],\n context: StrictLayoutContext,\n ): LayoutStrategyResult | undefined {\n const { type, target } = context;\n if (type === LAYOUT_TYPE_IMPERATIVE && context.overrides) {\n return context.overrides;\n }\n if (objects.length === 0) {\n return;\n }\n const { left, top, width, height } = makeBoundingBoxFromPoints(\n objects\n .map((object) => getObjectBounds(target, object))\n .reduce<Point[]>((coords, curr) => coords.concat(curr), []),\n );\n const bboxSize = new Point(width, height);\n const bboxLeftTop = new Point(left, top);\n const bboxCenter = bboxLeftTop.add(bboxSize.scalarDivide(2));\n\n if (type === LAYOUT_TYPE_INITIALIZATION) {\n const actualSize = this.getInitialSize(context, {\n size: bboxSize,\n center: bboxCenter,\n });\n return {\n // in `initialization` we do not account for target's transformation matrix\n center: bboxCenter,\n // TODO: investigate if this is still necessary\n relativeCorrection: new Point(0, 0),\n size: actualSize,\n };\n } else {\n // we send `relativeCenter` up to group's containing plane\n const center = bboxCenter.transform(target.calcOwnMatrix());\n return {\n center,\n size: bboxSize,\n };\n }\n }\n}\n"],"names":["LayoutStrategy","calcLayoutResult","context","objects","shouldPerformLayout","calcBoundingBox","_ref","type","prevStrategy","strategy","LAYOUT_TYPE_INITIALIZATION","LAYOUT_TYPE_IMPERATIVE","shouldLayoutClipPath","_ref2","target","clipPath","absolutePositioned","getInitialSize","result","size","overrides","length","left","top","width","height","makeBoundingBoxFromPoints","map","object","getObjectBounds","reduce","coords","curr","concat","bboxSize","Point","bboxLeftTop","bboxCenter","add","scalarDivide","actualSize","center","relativeCorrection","transform","calcOwnMatrix","_defineProperty"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/utils.ts"],"sourcesContent":["import { Point, ZERO } from '../../Point';\nimport type { Group } from '../../shapes/Group';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { multiplyTransformMatrixArray } from '../../util/misc/matrix';\nimport { sizeAfterTransform } from '../../util/misc/objectTransforms';\nimport {\n calcPlaneChangeMatrix,\n sendVectorToPlane,\n} from '../../util/misc/planeChange';\n\n/**\n * @returns 2 points, the tl and br corners of the non rotated bounding box of an object\n * in the {@link group} plane, taking into account objects that {@link group} is their parent\n * but also belong to the active selection.\n */\nexport const getObjectBounds = (\n destinationGroup: Group,\n object: FabricObject\n): Point[] => {\n const {\n strokeUniform,\n strokeWidth,\n width,\n height,\n group: currentGroup,\n } = object;\n const t =\n currentGroup && currentGroup !== destinationGroup\n ? calcPlaneChangeMatrix(\n currentGroup.calcTransformMatrix(),\n destinationGroup.calcTransformMatrix()\n )\n : null;\n const objectCenter = t\n ? object.getRelativeCenterPoint().transform(t)\n : object.getRelativeCenterPoint();\n const accountForStroke = !object['isStrokeAccountedForInDimensions']();\n const strokeUniformVector =\n strokeUniform && accountForStroke\n ? sendVectorToPlane(\n new Point(strokeWidth, strokeWidth),\n undefined,\n destinationGroup.calcTransformMatrix()\n )\n : ZERO;\n const scalingStrokeWidth =\n !strokeUniform && accountForStroke ? strokeWidth : 0;\n const sizeVector = sizeAfterTransform(\n width + scalingStrokeWidth,\n height + scalingStrokeWidth,\n multiplyTransformMatrixArray([t, object.calcOwnMatrix()], true)\n )\n .add(strokeUniformVector)\n .scalarDivide(2);\n return [objectCenter.subtract(sizeVector), objectCenter.add(sizeVector)];\n};\n"],"names":["getObjectBounds","destinationGroup","object","strokeUniform","strokeWidth","width","height","group","currentGroup","t","calcPlaneChangeMatrix","calcTransformMatrix","objectCenter","getRelativeCenterPoint","transform","accountForStroke","strokeUniformVector","sendVectorToPlane","Point","undefined","ZERO","scalingStrokeWidth","sizeVector","sizeAfterTransform","multiplyTransformMatrixArray","calcOwnMatrix","add","scalarDivide","subtract"],"mappings":"2TAeaA,EAAkBA,CAC7BC,EACAC,KAEA,MAAMC,cACJA,EAAaC,YACbA,EAAWC,MACXA,EAAKC,OACLA,EACAC,MAAOC,GACLN,EACEO,EACJD,GAAgBA,IAAiBP,EAC7BS,EACEF,EAAaG,sBACbV,EAAiBU,uBAEnB,KACAC,EAAeH,EACjBP,EAAOW,yBAAyBC,UAAUL,GAC1CP,EAAOW,yBACLE,GAAoBb,EAAyC,mCAC7Dc,EACJb,GAAiBY,EACbE,EACE,IAAIC,EAAMd,EAAaA,QACvBe,EACAlB,EAAiBU,uBAEnBS,EACAC,GACHlB,GAAiBY,EAAmBX,EAAc,EAC/CkB,EAAaC,EACjBlB,EAAQgB,EACRf,EAASe,EACTG,EAA6B,CAACf,EAAGP,EAAOuB,kBAAkB,IAEzDC,IAAIV,GACJW,aAAa,GAChB,MAAO,CAACf,EAAagB,SAASN,GAAaV,EAAac,IAAIJ,GAAY"}
1
+ {"version":3,"file":"utils.min.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/utils.ts"],"sourcesContent":["import { Point, ZERO } from '../../Point';\nimport type { Group } from '../../shapes/Group';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { multiplyTransformMatrixArray } from '../../util/misc/matrix';\nimport { sizeAfterTransform } from '../../util/misc/objectTransforms';\nimport {\n calcPlaneChangeMatrix,\n sendVectorToPlane,\n} from '../../util/misc/planeChange';\n\n/**\n * @returns 2 points, the tl and br corners of the non rotated bounding box of an object\n * in the {@link group} plane, taking into account objects that {@link group} is their parent\n * but also belong to the active selection.\n */\nexport const getObjectBounds = (\n destinationGroup: Group,\n object: FabricObject,\n): Point[] => {\n const {\n strokeUniform,\n strokeWidth,\n width,\n height,\n group: currentGroup,\n } = object;\n const t =\n currentGroup && currentGroup !== destinationGroup\n ? calcPlaneChangeMatrix(\n currentGroup.calcTransformMatrix(),\n destinationGroup.calcTransformMatrix(),\n )\n : null;\n const objectCenter = t\n ? object.getRelativeCenterPoint().transform(t)\n : object.getRelativeCenterPoint();\n const accountForStroke = !object['isStrokeAccountedForInDimensions']();\n const strokeUniformVector =\n strokeUniform && accountForStroke\n ? sendVectorToPlane(\n new Point(strokeWidth, strokeWidth),\n undefined,\n destinationGroup.calcTransformMatrix(),\n )\n : ZERO;\n const scalingStrokeWidth =\n !strokeUniform && accountForStroke ? strokeWidth : 0;\n const sizeVector = sizeAfterTransform(\n width + scalingStrokeWidth,\n height + scalingStrokeWidth,\n multiplyTransformMatrixArray([t, object.calcOwnMatrix()], true),\n )\n .add(strokeUniformVector)\n .scalarDivide(2);\n return [objectCenter.subtract(sizeVector), objectCenter.add(sizeVector)];\n};\n"],"names":["getObjectBounds","destinationGroup","object","strokeUniform","strokeWidth","width","height","group","currentGroup","t","calcPlaneChangeMatrix","calcTransformMatrix","objectCenter","getRelativeCenterPoint","transform","accountForStroke","strokeUniformVector","sendVectorToPlane","Point","undefined","ZERO","scalingStrokeWidth","sizeVector","sizeAfterTransform","multiplyTransformMatrixArray","calcOwnMatrix","add","scalarDivide","subtract"],"mappings":"2TAeaA,EAAkBA,CAC7BC,EACAC,KAEA,MAAMC,cACJA,EAAaC,YACbA,EAAWC,MACXA,EAAKC,OACLA,EACAC,MAAOC,GACLN,EACEO,EACJD,GAAgBA,IAAiBP,EAC7BS,EACEF,EAAaG,sBACbV,EAAiBU,uBAEnB,KACAC,EAAeH,EACjBP,EAAOW,yBAAyBC,UAAUL,GAC1CP,EAAOW,yBACLE,GAAoBb,EAAyC,mCAC7Dc,EACJb,GAAiBY,EACbE,EACE,IAAIC,EAAMd,EAAaA,QACvBe,EACAlB,EAAiBU,uBAEnBS,EACAC,GACHlB,GAAiBY,EAAmBX,EAAc,EAC/CkB,EAAaC,EACjBlB,EAAQgB,EACRf,EAASe,EACTG,EAA6B,CAACf,EAAGP,EAAOuB,kBAAkB,IAEzDC,IAAIV,GACJW,aAAa,GAChB,MAAO,CAACf,EAAagB,SAASN,GAAaV,EAAac,IAAIJ,GAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/utils.ts"],"sourcesContent":["import { Point, ZERO } from '../../Point';\nimport type { Group } from '../../shapes/Group';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { multiplyTransformMatrixArray } from '../../util/misc/matrix';\nimport { sizeAfterTransform } from '../../util/misc/objectTransforms';\nimport {\n calcPlaneChangeMatrix,\n sendVectorToPlane,\n} from '../../util/misc/planeChange';\n\n/**\n * @returns 2 points, the tl and br corners of the non rotated bounding box of an object\n * in the {@link group} plane, taking into account objects that {@link group} is their parent\n * but also belong to the active selection.\n */\nexport const getObjectBounds = (\n destinationGroup: Group,\n object: FabricObject\n): Point[] => {\n const {\n strokeUniform,\n strokeWidth,\n width,\n height,\n group: currentGroup,\n } = object;\n const t =\n currentGroup && currentGroup !== destinationGroup\n ? calcPlaneChangeMatrix(\n currentGroup.calcTransformMatrix(),\n destinationGroup.calcTransformMatrix()\n )\n : null;\n const objectCenter = t\n ? object.getRelativeCenterPoint().transform(t)\n : object.getRelativeCenterPoint();\n const accountForStroke = !object['isStrokeAccountedForInDimensions']();\n const strokeUniformVector =\n strokeUniform && accountForStroke\n ? sendVectorToPlane(\n new Point(strokeWidth, strokeWidth),\n undefined,\n destinationGroup.calcTransformMatrix()\n )\n : ZERO;\n const scalingStrokeWidth =\n !strokeUniform && accountForStroke ? strokeWidth : 0;\n const sizeVector = sizeAfterTransform(\n width + scalingStrokeWidth,\n height + scalingStrokeWidth,\n multiplyTransformMatrixArray([t, object.calcOwnMatrix()], true)\n )\n .add(strokeUniformVector)\n .scalarDivide(2);\n return [objectCenter.subtract(sizeVector), objectCenter.add(sizeVector)];\n};\n"],"names":["getObjectBounds","destinationGroup","object","strokeUniform","strokeWidth","width","height","group","currentGroup","t","calcPlaneChangeMatrix","calcTransformMatrix","objectCenter","getRelativeCenterPoint","transform","accountForStroke","strokeUniformVector","sendVectorToPlane","Point","undefined","ZERO","scalingStrokeWidth","sizeVector","sizeAfterTransform","multiplyTransformMatrixArray","calcOwnMatrix","add","scalarDivide","subtract"],"mappings":";;;;;AAUA;AACA;AACA;AACA;AACA;MACaA,eAAe,GAAGA,CAC7BC,gBAAuB,EACvBC,MAAoB,KACR;EACZ,MAAM;IACJC,aAAa;IACbC,WAAW;IACXC,KAAK;IACLC,MAAM;AACNC,IAAAA,KAAK,EAAEC,YAAAA;AACT,GAAC,GAAGN,MAAM,CAAA;EACV,MAAMO,CAAC,GACLD,YAAY,IAAIA,YAAY,KAAKP,gBAAgB,GAC7CS,qBAAqB,CACnBF,YAAY,CAACG,mBAAmB,EAAE,EAClCV,gBAAgB,CAACU,mBAAmB,EACtC,CAAC,GACD,IAAI,CAAA;AACV,EAAA,MAAMC,YAAY,GAAGH,CAAC,GAClBP,MAAM,CAACW,sBAAsB,EAAE,CAACC,SAAS,CAACL,CAAC,CAAC,GAC5CP,MAAM,CAACW,sBAAsB,EAAE,CAAA;EACnC,MAAME,gBAAgB,GAAG,CAACb,MAAM,CAAC,kCAAkC,CAAC,EAAE,CAAA;EACtE,MAAMc,mBAAmB,GACvBb,aAAa,IAAIY,gBAAgB,GAC7BE,iBAAiB,CACf,IAAIC,KAAK,CAACd,WAAW,EAAEA,WAAW,CAAC,EACnCe,SAAS,EACTlB,gBAAgB,CAACU,mBAAmB,EACtC,CAAC,GACDS,IAAI,CAAA;EACV,MAAMC,kBAAkB,GACtB,CAAClB,aAAa,IAAIY,gBAAgB,GAAGX,WAAW,GAAG,CAAC,CAAA;AACtD,EAAA,MAAMkB,UAAU,GAAGC,kBAAkB,CACnClB,KAAK,GAAGgB,kBAAkB,EAC1Bf,MAAM,GAAGe,kBAAkB,EAC3BG,4BAA4B,CAAC,CAACf,CAAC,EAAEP,MAAM,CAACuB,aAAa,EAAE,CAAC,EAAE,IAAI,CAChE,CAAC,CACEC,GAAG,CAACV,mBAAmB,CAAC,CACxBW,YAAY,CAAC,CAAC,CAAC,CAAA;AAClB,EAAA,OAAO,CAACf,YAAY,CAACgB,QAAQ,CAACN,UAAU,CAAC,EAAEV,YAAY,CAACc,GAAG,CAACJ,UAAU,CAAC,CAAC,CAAA;AAC1E;;;;"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../src/LayoutManager/LayoutStrategies/utils.ts"],"sourcesContent":["import { Point, ZERO } from '../../Point';\nimport type { Group } from '../../shapes/Group';\nimport type { FabricObject } from '../../shapes/Object/FabricObject';\nimport { multiplyTransformMatrixArray } from '../../util/misc/matrix';\nimport { sizeAfterTransform } from '../../util/misc/objectTransforms';\nimport {\n calcPlaneChangeMatrix,\n sendVectorToPlane,\n} from '../../util/misc/planeChange';\n\n/**\n * @returns 2 points, the tl and br corners of the non rotated bounding box of an object\n * in the {@link group} plane, taking into account objects that {@link group} is their parent\n * but also belong to the active selection.\n */\nexport const getObjectBounds = (\n destinationGroup: Group,\n object: FabricObject,\n): Point[] => {\n const {\n strokeUniform,\n strokeWidth,\n width,\n height,\n group: currentGroup,\n } = object;\n const t =\n currentGroup && currentGroup !== destinationGroup\n ? calcPlaneChangeMatrix(\n currentGroup.calcTransformMatrix(),\n destinationGroup.calcTransformMatrix(),\n )\n : null;\n const objectCenter = t\n ? object.getRelativeCenterPoint().transform(t)\n : object.getRelativeCenterPoint();\n const accountForStroke = !object['isStrokeAccountedForInDimensions']();\n const strokeUniformVector =\n strokeUniform && accountForStroke\n ? sendVectorToPlane(\n new Point(strokeWidth, strokeWidth),\n undefined,\n destinationGroup.calcTransformMatrix(),\n )\n : ZERO;\n const scalingStrokeWidth =\n !strokeUniform && accountForStroke ? strokeWidth : 0;\n const sizeVector = sizeAfterTransform(\n width + scalingStrokeWidth,\n height + scalingStrokeWidth,\n multiplyTransformMatrixArray([t, object.calcOwnMatrix()], true),\n )\n .add(strokeUniformVector)\n .scalarDivide(2);\n return [objectCenter.subtract(sizeVector), objectCenter.add(sizeVector)];\n};\n"],"names":["getObjectBounds","destinationGroup","object","strokeUniform","strokeWidth","width","height","group","currentGroup","t","calcPlaneChangeMatrix","calcTransformMatrix","objectCenter","getRelativeCenterPoint","transform","accountForStroke","strokeUniformVector","sendVectorToPlane","Point","undefined","ZERO","scalingStrokeWidth","sizeVector","sizeAfterTransform","multiplyTransformMatrixArray","calcOwnMatrix","add","scalarDivide","subtract"],"mappings":";;;;;AAUA;AACA;AACA;AACA;AACA;MACaA,eAAe,GAAGA,CAC7BC,gBAAuB,EACvBC,MAAoB,KACR;EACZ,MAAM;IACJC,aAAa;IACbC,WAAW;IACXC,KAAK;IACLC,MAAM;AACNC,IAAAA,KAAK,EAAEC,YAAAA;AACT,GAAC,GAAGN,MAAM,CAAA;EACV,MAAMO,CAAC,GACLD,YAAY,IAAIA,YAAY,KAAKP,gBAAgB,GAC7CS,qBAAqB,CACnBF,YAAY,CAACG,mBAAmB,EAAE,EAClCV,gBAAgB,CAACU,mBAAmB,EACtC,CAAC,GACD,IAAI,CAAA;AACV,EAAA,MAAMC,YAAY,GAAGH,CAAC,GAClBP,MAAM,CAACW,sBAAsB,EAAE,CAACC,SAAS,CAACL,CAAC,CAAC,GAC5CP,MAAM,CAACW,sBAAsB,EAAE,CAAA;EACnC,MAAME,gBAAgB,GAAG,CAACb,MAAM,CAAC,kCAAkC,CAAC,EAAE,CAAA;EACtE,MAAMc,mBAAmB,GACvBb,aAAa,IAAIY,gBAAgB,GAC7BE,iBAAiB,CACf,IAAIC,KAAK,CAACd,WAAW,EAAEA,WAAW,CAAC,EACnCe,SAAS,EACTlB,gBAAgB,CAACU,mBAAmB,EACtC,CAAC,GACDS,IAAI,CAAA;EACV,MAAMC,kBAAkB,GACtB,CAAClB,aAAa,IAAIY,gBAAgB,GAAGX,WAAW,GAAG,CAAC,CAAA;AACtD,EAAA,MAAMkB,UAAU,GAAGC,kBAAkB,CACnClB,KAAK,GAAGgB,kBAAkB,EAC1Bf,MAAM,GAAGe,kBAAkB,EAC3BG,4BAA4B,CAAC,CAACf,CAAC,EAAEP,MAAM,CAACuB,aAAa,EAAE,CAAC,EAAE,IAAI,CAChE,CAAC,CACEC,GAAG,CAACV,mBAAmB,CAAC,CACxBW,YAAY,CAAC,CAAC,CAAC,CAAA;AAClB,EAAA,OAAO,CAACf,YAAY,CAACgB,QAAQ,CAACN,UAAU,CAAC,EAAEV,YAAY,CAACc,GAAG,CAACJ,UAAU,CAAC,CAAC,CAAA;AAC1E;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/LayoutManager/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/LayoutManager/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.min.mjs","sources":["../../src/Observable.ts"],"sourcesContent":["export type TEventCallback<T = any> = (options: T) => any;\n\ntype EventRegistryObject<E> = {\n [K in keyof E]?: TEventCallback<E[K]>;\n};\n\n/**\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\nexport class Observable<EventSpec> {\n private __eventListeners: Record<keyof EventSpec, TEventCallback[]> =\n {} as Record<keyof EventSpec, TEventCallback[]>;\n\n /**\n * Observes specified event\n * @alias on\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>\n ): VoidFunction;\n on(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>\n ): VoidFunction {\n if (!this.__eventListeners) {\n this.__eventListeners = {} as Record<keyof EventSpec, TEventCallback[]>;\n }\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this.on(eventName as K, handler as TEventCallback);\n });\n return () => this.off(arg0);\n } else if (handler) {\n const eventName = arg0;\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n return () => this.off(eventName, handler);\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * Observes specified event **once**\n * @alias once\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>\n ): VoidFunction;\n once(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>\n ): VoidFunction {\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n const disposers: VoidFunction[] = [];\n Object.entries(arg0).forEach(([eventName, handler]) => {\n disposers.push(this.once(eventName as K, handler as TEventCallback));\n });\n return () => disposers.forEach((d) => d());\n } else if (handler) {\n const disposer = this.on<K, E>(\n arg0,\n function onceHandler(this: Observable<EventSpec>, ...args) {\n handler.call(this, ...args);\n disposer();\n }\n );\n return disposer;\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * @private\n * @param {string} eventName\n * @param {Function} [handler]\n */\n private _removeEventListener<K extends keyof EventSpec>(\n eventName: K,\n handler?: TEventCallback\n ) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n\n if (handler) {\n const eventListener = this.__eventListeners[eventName];\n const index = eventListener.indexOf(handler);\n index > -1 && eventListener.splice(index, 1);\n } else {\n this.__eventListeners[eventName] = [];\n }\n }\n\n /**\n * Unsubscribe all event listeners for eventname.\n * Do not use this pattern. You could kill internal fabricJS events.\n * We know we should have protected events for internal flows, but we don't have yet\n * @deprecated\n * @param {string} eventName event name (eg. 'after:render')\n */\n off<K extends keyof EventSpec>(eventName: K): void;\n /**\n * unsubscribe an event listener\n * @param {string} eventName event name (eg. 'after:render')\n * @param {TEventCallback} handler event listener to unsubscribe\n */\n off<K extends keyof EventSpec>(eventName: K, handler: TEventCallback): void;\n /**\n * unsubscribe event listeners\n * @param handlers handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n */\n off(handlers: EventRegistryObject<EventSpec>): void;\n /**\n * unsubscribe all event listeners\n */\n off(): void;\n off<K extends keyof EventSpec>(\n arg0?: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback\n ) {\n if (!this.__eventListeners) {\n return;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (typeof arg0 === 'undefined') {\n for (const eventName in this.__eventListeners) {\n this._removeEventListener(eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (typeof arg0 === 'object') {\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this._removeEventListener(eventName as K, handler as TEventCallback);\n });\n } else {\n this._removeEventListener(arg0, handler);\n }\n }\n\n /**\n * Fires event with an optional options object\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n */\n fire<K extends keyof EventSpec>(eventName: K, options?: EventSpec[K]) {\n if (!this.__eventListeners) {\n return;\n }\n\n const listenersForEvent = this.__eventListeners[eventName]?.concat();\n if (listenersForEvent) {\n for (let i = 0; i < listenersForEvent.length; i++) {\n listenersForEvent[i].call(this, options || {});\n }\n }\n }\n}\n"],"names":["Observable","constructor","_defineProperty","this","on","arg0","handler","__eventListeners","Object","entries","forEach","_ref","eventName","off","push","once","disposers","_ref2","d","disposer","_len","arguments","length","args","Array","_key","call","_removeEventListener","eventListener","index","indexOf","splice","_ref3","fire","options","_this$__eventListener","listenersForEvent","concat","i"],"mappings":"+EAUO,MAAMA,EAAsBC,WAAAA,GAAAC,EAAAC,KAAA,mBAE/B,CAAA,EAAE,CAeJC,EAAAA,CACEC,EACAC,GAKA,GAHKH,KAAKI,mBACRJ,KAAKI,iBAAmB,IAEN,iBAATF,EAKT,OAHAG,OAAOC,QAAQJ,GAAMK,SAAQC,IAA0B,IAAxBC,EAAWN,GAAQK,EAChDR,KAAKC,GAAGQ,EAAgBN,EAA0B,IAE7C,IAAMH,KAAKU,IAAIR,GACjB,GAAIC,EAAS,CAClB,MAAMM,EAAYP,EAKlB,OAJKF,KAAKI,iBAAiBK,KACzBT,KAAKI,iBAAiBK,GAAa,IAErCT,KAAKI,iBAAiBK,GAAWE,KAAKR,GAC/B,IAAMH,KAAKU,IAAID,EAAWN,EACnC,CAEE,MAAO,KAAM,CAEjB,CAeAS,IAAAA,CACEV,EACAC,GAEA,GAAoB,iBAATD,EAAmB,CAE5B,MAAMW,EAA4B,GAIlC,OAHAR,OAAOC,QAAQJ,GAAMK,SAAQO,IAA0B,IAAxBL,EAAWN,GAAQW,EAChDD,EAAUF,KAAKX,KAAKY,KAAKH,EAAgBN,GAA2B,IAE/D,IAAMU,EAAUN,SAASQ,GAAMA,KACvC,CAAM,GAAIZ,EAAS,CAClB,MAAMa,EAAWhB,KAAKC,GACpBC,GACA,WAA2D,IAAA,IAAAe,EAAAC,UAAAC,OAANC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GACvDnB,EAAQoB,KAAKvB,QAASoB,GACtBJ,GACF,IAEF,OAAOA,CACT,CAEE,MAAO,KAAM,CAEjB,CAOQQ,oBAAAA,CACNf,EACAN,GAEA,GAAKH,KAAKI,iBAAiBK,GAI3B,GAAIN,EAAS,CACX,MAAMsB,EAAgBzB,KAAKI,iBAAiBK,GACtCiB,EAAQD,EAAcE,QAAQxB,GACpCuB,GAAS,GAAKD,EAAcG,OAAOF,EAAO,EAC5C,MACE1B,KAAKI,iBAAiBK,GAAa,EAEvC,CAyBAC,GAAAA,CACER,EACAC,GAEA,GAAKH,KAAKI,iBAKV,QAAoB,IAATF,EACT,IAAK,MAAMO,KAAaT,KAAKI,iBAC3BJ,KAAKwB,qBAAqBf,OAIL,iBAATP,EACdG,OAAOC,QAAQJ,GAAMK,SAAQsB,IAA0B,IAAxBpB,EAAWN,GAAQ0B,EAChD7B,KAAKwB,qBAAqBf,EAAgBN,EAA0B,IAGtEH,KAAKwB,qBAAqBtB,EAAMC,EAEpC,CAOA2B,IAAAA,CAAgCrB,EAAcsB,GAAwB,IAAAC,EACpE,IAAKhC,KAAKI,iBACR,OAGF,MAAM6B,UAAiBD,EAAGhC,KAAKI,iBAAiBK,UAAU,IAAAuB,OAAA,EAAhCA,EAAkCE,SAC5D,GAAID,EACF,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAkBd,OAAQgB,IAC5CF,EAAkBE,GAAGZ,KAAKvB,KAAM+B,GAAW,CAAA,EAGjD"}
1
+ {"version":3,"file":"Observable.min.mjs","sources":["../../src/Observable.ts"],"sourcesContent":["export type TEventCallback<T = any> = (options: T) => any;\n\ntype EventRegistryObject<E> = {\n [K in keyof E]?: TEventCallback<E[K]>;\n};\n\n/**\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\nexport class Observable<EventSpec> {\n private __eventListeners: Record<keyof EventSpec, TEventCallback[]> =\n {} as Record<keyof EventSpec, TEventCallback[]>;\n\n /**\n * Observes specified event\n * @alias on\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>,\n ): VoidFunction;\n on(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>,\n ): VoidFunction {\n if (!this.__eventListeners) {\n this.__eventListeners = {} as Record<keyof EventSpec, TEventCallback[]>;\n }\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this.on(eventName as K, handler as TEventCallback);\n });\n return () => this.off(arg0);\n } else if (handler) {\n const eventName = arg0;\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n return () => this.off(eventName, handler);\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * Observes specified event **once**\n * @alias once\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>,\n ): VoidFunction;\n once(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>,\n ): VoidFunction {\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n const disposers: VoidFunction[] = [];\n Object.entries(arg0).forEach(([eventName, handler]) => {\n disposers.push(this.once(eventName as K, handler as TEventCallback));\n });\n return () => disposers.forEach((d) => d());\n } else if (handler) {\n const disposer = this.on<K, E>(\n arg0,\n function onceHandler(this: Observable<EventSpec>, ...args) {\n handler.call(this, ...args);\n disposer();\n },\n );\n return disposer;\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * @private\n * @param {string} eventName\n * @param {Function} [handler]\n */\n private _removeEventListener<K extends keyof EventSpec>(\n eventName: K,\n handler?: TEventCallback,\n ) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n\n if (handler) {\n const eventListener = this.__eventListeners[eventName];\n const index = eventListener.indexOf(handler);\n index > -1 && eventListener.splice(index, 1);\n } else {\n this.__eventListeners[eventName] = [];\n }\n }\n\n /**\n * Unsubscribe all event listeners for eventname.\n * Do not use this pattern. You could kill internal fabricJS events.\n * We know we should have protected events for internal flows, but we don't have yet\n * @deprecated\n * @param {string} eventName event name (eg. 'after:render')\n */\n off<K extends keyof EventSpec>(eventName: K): void;\n /**\n * unsubscribe an event listener\n * @param {string} eventName event name (eg. 'after:render')\n * @param {TEventCallback} handler event listener to unsubscribe\n */\n off<K extends keyof EventSpec>(eventName: K, handler: TEventCallback): void;\n /**\n * unsubscribe event listeners\n * @param handlers handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n */\n off(handlers: EventRegistryObject<EventSpec>): void;\n /**\n * unsubscribe all event listeners\n */\n off(): void;\n off<K extends keyof EventSpec>(\n arg0?: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback,\n ) {\n if (!this.__eventListeners) {\n return;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (typeof arg0 === 'undefined') {\n for (const eventName in this.__eventListeners) {\n this._removeEventListener(eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (typeof arg0 === 'object') {\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this._removeEventListener(eventName as K, handler as TEventCallback);\n });\n } else {\n this._removeEventListener(arg0, handler);\n }\n }\n\n /**\n * Fires event with an optional options object\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n */\n fire<K extends keyof EventSpec>(eventName: K, options?: EventSpec[K]) {\n if (!this.__eventListeners) {\n return;\n }\n\n const listenersForEvent = this.__eventListeners[eventName]?.concat();\n if (listenersForEvent) {\n for (let i = 0; i < listenersForEvent.length; i++) {\n listenersForEvent[i].call(this, options || {});\n }\n }\n }\n}\n"],"names":["Observable","constructor","_defineProperty","this","on","arg0","handler","__eventListeners","Object","entries","forEach","_ref","eventName","off","push","once","disposers","_ref2","d","disposer","_len","arguments","length","args","Array","_key","call","_removeEventListener","eventListener","index","indexOf","splice","_ref3","fire","options","_this$__eventListener","listenersForEvent","concat","i"],"mappings":"+EAUO,MAAMA,EAAsBC,WAAAA,GAAAC,EAAAC,KAAA,mBAE/B,CAAA,EAAE,CAeJC,EAAAA,CACEC,EACAC,GAKA,GAHKH,KAAKI,mBACRJ,KAAKI,iBAAmB,IAEN,iBAATF,EAKT,OAHAG,OAAOC,QAAQJ,GAAMK,SAAQC,IAA0B,IAAxBC,EAAWN,GAAQK,EAChDR,KAAKC,GAAGQ,EAAgBN,EAA0B,IAE7C,IAAMH,KAAKU,IAAIR,GACjB,GAAIC,EAAS,CAClB,MAAMM,EAAYP,EAKlB,OAJKF,KAAKI,iBAAiBK,KACzBT,KAAKI,iBAAiBK,GAAa,IAErCT,KAAKI,iBAAiBK,GAAWE,KAAKR,GAC/B,IAAMH,KAAKU,IAAID,EAAWN,EACnC,CAEE,MAAO,KAAM,CAEjB,CAeAS,IAAAA,CACEV,EACAC,GAEA,GAAoB,iBAATD,EAAmB,CAE5B,MAAMW,EAA4B,GAIlC,OAHAR,OAAOC,QAAQJ,GAAMK,SAAQO,IAA0B,IAAxBL,EAAWN,GAAQW,EAChDD,EAAUF,KAAKX,KAAKY,KAAKH,EAAgBN,GAA2B,IAE/D,IAAMU,EAAUN,SAASQ,GAAMA,KACvC,CAAM,GAAIZ,EAAS,CAClB,MAAMa,EAAWhB,KAAKC,GACpBC,GACA,WAA2D,IAAA,IAAAe,EAAAC,UAAAC,OAANC,EAAIC,IAAAA,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GACvDnB,EAAQoB,KAAKvB,QAASoB,GACtBJ,GACF,IAEF,OAAOA,CACT,CAEE,MAAO,KAAM,CAEjB,CAOQQ,oBAAAA,CACNf,EACAN,GAEA,GAAKH,KAAKI,iBAAiBK,GAI3B,GAAIN,EAAS,CACX,MAAMsB,EAAgBzB,KAAKI,iBAAiBK,GACtCiB,EAAQD,EAAcE,QAAQxB,GACpCuB,GAAS,GAAKD,EAAcG,OAAOF,EAAO,EAC5C,MACE1B,KAAKI,iBAAiBK,GAAa,EAEvC,CAyBAC,GAAAA,CACER,EACAC,GAEA,GAAKH,KAAKI,iBAKV,QAAoB,IAATF,EACT,IAAK,MAAMO,KAAaT,KAAKI,iBAC3BJ,KAAKwB,qBAAqBf,OAIL,iBAATP,EACdG,OAAOC,QAAQJ,GAAMK,SAAQsB,IAA0B,IAAxBpB,EAAWN,GAAQ0B,EAChD7B,KAAKwB,qBAAqBf,EAAgBN,EAA0B,IAGtEH,KAAKwB,qBAAqBtB,EAAMC,EAEpC,CAOA2B,IAAAA,CAAgCrB,EAAcsB,GAAwB,IAAAC,EACpE,IAAKhC,KAAKI,iBACR,OAGF,MAAM6B,UAAiBD,EAAGhC,KAAKI,iBAAiBK,UAAU,IAAAuB,OAAA,EAAhCA,EAAkCE,SAC5D,GAAID,EACF,IAAK,IAAIE,EAAI,EAAGA,EAAIF,EAAkBd,OAAQgB,IAC5CF,EAAkBE,GAAGZ,KAAKvB,KAAM+B,GAAW,CAAA,EAGjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Observable.mjs","sources":["../../src/Observable.ts"],"sourcesContent":["export type TEventCallback<T = any> = (options: T) => any;\n\ntype EventRegistryObject<E> = {\n [K in keyof E]?: TEventCallback<E[K]>;\n};\n\n/**\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\nexport class Observable<EventSpec> {\n private __eventListeners: Record<keyof EventSpec, TEventCallback[]> =\n {} as Record<keyof EventSpec, TEventCallback[]>;\n\n /**\n * Observes specified event\n * @alias on\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>\n ): VoidFunction;\n on(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>\n ): VoidFunction {\n if (!this.__eventListeners) {\n this.__eventListeners = {} as Record<keyof EventSpec, TEventCallback[]>;\n }\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this.on(eventName as K, handler as TEventCallback);\n });\n return () => this.off(arg0);\n } else if (handler) {\n const eventName = arg0;\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n return () => this.off(eventName, handler);\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * Observes specified event **once**\n * @alias once\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>\n ): VoidFunction;\n once(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>\n ): VoidFunction {\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n const disposers: VoidFunction[] = [];\n Object.entries(arg0).forEach(([eventName, handler]) => {\n disposers.push(this.once(eventName as K, handler as TEventCallback));\n });\n return () => disposers.forEach((d) => d());\n } else if (handler) {\n const disposer = this.on<K, E>(\n arg0,\n function onceHandler(this: Observable<EventSpec>, ...args) {\n handler.call(this, ...args);\n disposer();\n }\n );\n return disposer;\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * @private\n * @param {string} eventName\n * @param {Function} [handler]\n */\n private _removeEventListener<K extends keyof EventSpec>(\n eventName: K,\n handler?: TEventCallback\n ) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n\n if (handler) {\n const eventListener = this.__eventListeners[eventName];\n const index = eventListener.indexOf(handler);\n index > -1 && eventListener.splice(index, 1);\n } else {\n this.__eventListeners[eventName] = [];\n }\n }\n\n /**\n * Unsubscribe all event listeners for eventname.\n * Do not use this pattern. You could kill internal fabricJS events.\n * We know we should have protected events for internal flows, but we don't have yet\n * @deprecated\n * @param {string} eventName event name (eg. 'after:render')\n */\n off<K extends keyof EventSpec>(eventName: K): void;\n /**\n * unsubscribe an event listener\n * @param {string} eventName event name (eg. 'after:render')\n * @param {TEventCallback} handler event listener to unsubscribe\n */\n off<K extends keyof EventSpec>(eventName: K, handler: TEventCallback): void;\n /**\n * unsubscribe event listeners\n * @param handlers handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n */\n off(handlers: EventRegistryObject<EventSpec>): void;\n /**\n * unsubscribe all event listeners\n */\n off(): void;\n off<K extends keyof EventSpec>(\n arg0?: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback\n ) {\n if (!this.__eventListeners) {\n return;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (typeof arg0 === 'undefined') {\n for (const eventName in this.__eventListeners) {\n this._removeEventListener(eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (typeof arg0 === 'object') {\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this._removeEventListener(eventName as K, handler as TEventCallback);\n });\n } else {\n this._removeEventListener(arg0, handler);\n }\n }\n\n /**\n * Fires event with an optional options object\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n */\n fire<K extends keyof EventSpec>(eventName: K, options?: EventSpec[K]) {\n if (!this.__eventListeners) {\n return;\n }\n\n const listenersForEvent = this.__eventListeners[eventName]?.concat();\n if (listenersForEvent) {\n for (let i = 0; i < listenersForEvent.length; i++) {\n listenersForEvent[i].call(this, options || {});\n }\n }\n }\n}\n"],"names":["Observable","constructor","_defineProperty","on","arg0","handler","__eventListeners","Object","entries","forEach","_ref","eventName","off","push","once","disposers","_ref2","d","disposer","onceHandler","_len","arguments","length","args","Array","_key","call","_removeEventListener","eventListener","index","indexOf","splice","_ref3","fire","options","_this$__eventListener","listenersForEvent","concat","i"],"mappings":"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"}
1
+ {"version":3,"file":"Observable.mjs","sources":["../../src/Observable.ts"],"sourcesContent":["export type TEventCallback<T = any> = (options: T) => any;\n\ntype EventRegistryObject<E> = {\n [K in keyof E]?: TEventCallback<E[K]>;\n};\n\n/**\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\nexport class Observable<EventSpec> {\n private __eventListeners: Record<keyof EventSpec, TEventCallback[]> =\n {} as Record<keyof EventSpec, TEventCallback[]>;\n\n /**\n * Observes specified event\n * @alias on\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>,\n ): VoidFunction;\n on(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n on<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>,\n ): VoidFunction {\n if (!this.__eventListeners) {\n this.__eventListeners = {} as Record<keyof EventSpec, TEventCallback[]>;\n }\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this.on(eventName as K, handler as TEventCallback);\n });\n return () => this.off(arg0);\n } else if (handler) {\n const eventName = arg0;\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n return () => this.off(eventName, handler);\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * Observes specified event **once**\n * @alias once\n * @param {string} eventName Event name (eg. 'after:render')\n * @param {EventRegistryObject} handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Function} disposer\n */\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n eventName: K,\n handler: TEventCallback<E>,\n ): VoidFunction;\n once(handlers: EventRegistryObject<EventSpec>): VoidFunction;\n once<K extends keyof EventSpec, E extends EventSpec[K]>(\n arg0: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback<E>,\n ): VoidFunction {\n if (typeof arg0 === 'object') {\n // one object with key/value pairs was passed\n const disposers: VoidFunction[] = [];\n Object.entries(arg0).forEach(([eventName, handler]) => {\n disposers.push(this.once(eventName as K, handler as TEventCallback));\n });\n return () => disposers.forEach((d) => d());\n } else if (handler) {\n const disposer = this.on<K, E>(\n arg0,\n function onceHandler(this: Observable<EventSpec>, ...args) {\n handler.call(this, ...args);\n disposer();\n },\n );\n return disposer;\n } else {\n // noop\n return () => false;\n }\n }\n\n /**\n * @private\n * @param {string} eventName\n * @param {Function} [handler]\n */\n private _removeEventListener<K extends keyof EventSpec>(\n eventName: K,\n handler?: TEventCallback,\n ) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n\n if (handler) {\n const eventListener = this.__eventListeners[eventName];\n const index = eventListener.indexOf(handler);\n index > -1 && eventListener.splice(index, 1);\n } else {\n this.__eventListeners[eventName] = [];\n }\n }\n\n /**\n * Unsubscribe all event listeners for eventname.\n * Do not use this pattern. You could kill internal fabricJS events.\n * We know we should have protected events for internal flows, but we don't have yet\n * @deprecated\n * @param {string} eventName event name (eg. 'after:render')\n */\n off<K extends keyof EventSpec>(eventName: K): void;\n /**\n * unsubscribe an event listener\n * @param {string} eventName event name (eg. 'after:render')\n * @param {TEventCallback} handler event listener to unsubscribe\n */\n off<K extends keyof EventSpec>(eventName: K, handler: TEventCallback): void;\n /**\n * unsubscribe event listeners\n * @param handlers handlers key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n */\n off(handlers: EventRegistryObject<EventSpec>): void;\n /**\n * unsubscribe all event listeners\n */\n off(): void;\n off<K extends keyof EventSpec>(\n arg0?: K | EventRegistryObject<EventSpec>,\n handler?: TEventCallback,\n ) {\n if (!this.__eventListeners) {\n return;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (typeof arg0 === 'undefined') {\n for (const eventName in this.__eventListeners) {\n this._removeEventListener(eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (typeof arg0 === 'object') {\n Object.entries(arg0).forEach(([eventName, handler]) => {\n this._removeEventListener(eventName as K, handler as TEventCallback);\n });\n } else {\n this._removeEventListener(arg0, handler);\n }\n }\n\n /**\n * Fires event with an optional options object\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n */\n fire<K extends keyof EventSpec>(eventName: K, options?: EventSpec[K]) {\n if (!this.__eventListeners) {\n return;\n }\n\n const listenersForEvent = this.__eventListeners[eventName]?.concat();\n if (listenersForEvent) {\n for (let i = 0; i < listenersForEvent.length; i++) {\n listenersForEvent[i].call(this, options || {});\n }\n }\n }\n}\n"],"names":["Observable","constructor","_defineProperty","on","arg0","handler","__eventListeners","Object","entries","forEach","_ref","eventName","off","push","once","disposers","_ref2","d","disposer","onceHandler","_len","arguments","length","args","Array","_key","call","_removeEventListener","eventListener","index","indexOf","splice","_ref3","fire","options","_this$__eventListener","listenersForEvent","concat","i"],"mappings":"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"}
@@ -44,7 +44,7 @@ export declare class Pattern {
44
44
  * @type Array
45
45
  * @default
46
46
  */
47
- patternTransform: TMat2D | null;
47
+ patternTransform?: TMat2D;
48
48
  /**
49
49
  * The actual pixel source of the pattern
50
50
  */
@@ -94,6 +94,6 @@ export declare class Pattern {
94
94
  * Returns SVG representation of a pattern
95
95
  */
96
96
  toSVG({ width, height }: TSize): string;
97
- static fromObject({ type, source, ...serialized }: SerializedPatternOptions, options?: Abortable): Promise<Pattern>;
97
+ static fromObject({ type, source, patternTransform, ...otherOptions }: SerializedPatternOptions, options?: Abortable): Promise<Pattern>;
98
98
  }
99
99
  //# sourceMappingURL=Pattern.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pattern.d.ts","sourceRoot":"","sources":["../../../src/Pattern/Pattern.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAO1E,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,qBAAa,OAAO;IAClB,MAAM,CAAC,IAAI,SAAa;IAExB;;;;;;;OAOG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,CAAC,KAAK,QAAA,EAEb;IAED;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAY;IAEjC;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;OAGG;IACH,WAAW,EAAE,YAAY,CAAM;IAE/B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEvC;;OAEG;IACK,MAAM,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACK,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,SAAiB,EAAE,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;gBACS,OAAO,EAAE,cAAc;IAKnC;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,gBAAgB,CAAA;KAAE;IAMrD;;OAEG;IACH,cAAc,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,iBAAiB,CAAA;KAAE;IAIvD,cAAc,IAAI,MAAM;IAQxB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,aAAa,GAAG,IAAI;IAgB3D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,GAAE,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBjE;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,MAAM;WAgC1B,UAAU,CACrB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,EAAE,wBAAwB,EACzD,OAAO,CAAC,EAAE,SAAS,GAClB,OAAO,CAAC,OAAO,CAAC;CAOpB"}
1
+ {"version":3,"file":"Pattern.d.ts","sourceRoot":"","sources":["../../../src/Pattern/Pattern.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAO1E,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAGjB;;;GAGG;AACH,qBAAa,OAAO;IAClB,MAAM,CAAC,IAAI,SAAa;IAExB;;;;;;;OAOG;IACH,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,CAAC,KAAK,QAAA,EAEb;IAED;;;OAGG;IACH,MAAM,EAAE,aAAa,CAAY;IAEjC;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;;OAIG;IACH,OAAO,SAAK;IAEZ;;;OAGG;IACH,WAAW,EAAE,YAAY,CAAM;IAE/B;;;;;OAKG;IACK,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAElC;;OAEG;IACK,MAAM,EAAE,iBAAiB,CAAC;IAElC;;;OAGG;IACK,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,SAAiB,EAAE,EAAE,MAAM,CAAC;IAE5B;;;;OAIG;gBACS,OAAO,EAAE,cAAc;IAKnC;;OAEG;IACH,aAAa,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,gBAAgB,CAAA;KAAE;IAMrD;;OAEG;IACH,cAAc,IAAI,IAAI,IAAI;QAAE,MAAM,EAAE,iBAAiB,CAAA;KAAE;IAIvD,cAAc,IAAI,MAAM;IAQxB;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,wBAAwB,GAAG,aAAa,GAAG,IAAI;IAgB3D;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,GAAE,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAiBjE;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,KAAK,GAAG,MAAM;WAgC1B,UAAU,CACrB,EACE,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,GAAG,YAAY,EAChB,EAAE,wBAAwB,EAC3B,OAAO,CAAC,EAAE,SAAS,GAClB,OAAO,CAAC,OAAO,CAAC;CAYpB"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t,objectSpread2 as e,objectWithoutProperties as s}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as r}from"../config.min.mjs";import{ifNaN as i}from"../util/internals/ifNaN.min.mjs";import{uid as o}from"../util/internals/uid.min.mjs";import{loadImage as n}from"../util/misc/objectEnlive.min.mjs";import{pick as a}from"../util/misc/pick.min.mjs";import{toFixed as c}from"../util/misc/toFixed.min.mjs";import{classRegistry as h}from"../ClassRegistry.min.mjs";import{log as m}from"../util/internals/console.min.mjs";const u=["type","source"];class p{get type(){return"pattern"}set type(t){m("warn","Setting type has no effect",t)}constructor(e){t(this,"repeat","repeat"),t(this,"offsetX",0),t(this,"offsetY",0),t(this,"crossOrigin",""),t(this,"patternTransform",null),this.id=o(),Object.assign(this,e)}isImageSource(){return!!this.source&&"string"==typeof this.source.src}isCanvasSource(){return!!this.source&&!!this.source.toDataURL}sourceToString(){return this.isImageSource()?this.source.src:this.isCanvasSource()?this.source.toDataURL():""}toLive(t){return this.source&&(!this.isImageSource()||this.source.complete&&0!==this.source.naturalWidth&&0!==this.source.naturalHeight)?t.createPattern(this.source,this.repeat):null}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{repeat:s,crossOrigin:i}=this;return e(e({},a(this,t)),{},{type:"pattern",source:this.sourceToString(),repeat:s,crossOrigin:i,offsetX:c(this.offsetX,r.NUM_FRACTION_DIGITS),offsetY:c(this.offsetY,r.NUM_FRACTION_DIGITS),patternTransform:this.patternTransform?[...this.patternTransform]:null})}toSVG(t){let{width:e,height:s}=t;const{source:r,repeat:o,id:n}=this,a=i(this.offsetX/e,0),c=i(this.offsetY/s,0),h="repeat-y"===o||"no-repeat"===o?1+Math.abs(a||0):i(r.width/e,0),m="repeat-x"===o||"no-repeat"===o?1+Math.abs(c||0):i(r.height/s,0);return['<pattern id="SVGID_'.concat(n,'" x="').concat(a,'" y="').concat(c,'" width="').concat(h,'" height="').concat(m,'">'),'<image x="0" y="0" width="'.concat(r.width,'" height="').concat(r.height,'" xlink:href="').concat(this.sourceToString(),'"></image>'),"</pattern>",""].join("\n")}static async fromObject(t,r){let{type:i,source:o}=t,a=s(t,u);const c=await n(o,e(e({},r),{},{crossOrigin:a.crossOrigin}));return new this(e(e({},a),{},{source:c}))}}t(p,"type","Pattern"),h.setClass(p),h.setClass(p,"pattern");export{p as Pattern};
1
+ import{defineProperty as t,objectSpread2 as e,objectWithoutProperties as s}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as r}from"../config.min.mjs";import{ifNaN as i}from"../util/internals/ifNaN.min.mjs";import{uid as o}from"../util/internals/uid.min.mjs";import{loadImage as n}from"../util/misc/objectEnlive.min.mjs";import{pick as a}from"../util/misc/pick.min.mjs";import{toFixed as c}from"../util/misc/toFixed.min.mjs";import{classRegistry as h}from"../ClassRegistry.min.mjs";import{log as m}from"../util/internals/console.min.mjs";const u=["type","source","patternTransform"];class p{get type(){return"pattern"}set type(t){m("warn","Setting type has no effect",t)}constructor(e){t(this,"repeat","repeat"),t(this,"offsetX",0),t(this,"offsetY",0),t(this,"crossOrigin",""),this.id=o(),Object.assign(this,e)}isImageSource(){return!!this.source&&"string"==typeof this.source.src}isCanvasSource(){return!!this.source&&!!this.source.toDataURL}sourceToString(){return this.isImageSource()?this.source.src:this.isCanvasSource()?this.source.toDataURL():""}toLive(t){return this.source&&(!this.isImageSource()||this.source.complete&&0!==this.source.naturalWidth&&0!==this.source.naturalHeight)?t.createPattern(this.source,this.repeat):null}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const{repeat:s,crossOrigin:i}=this;return e(e({},a(this,t)),{},{type:"pattern",source:this.sourceToString(),repeat:s,crossOrigin:i,offsetX:c(this.offsetX,r.NUM_FRACTION_DIGITS),offsetY:c(this.offsetY,r.NUM_FRACTION_DIGITS),patternTransform:this.patternTransform?[...this.patternTransform]:null})}toSVG(t){let{width:e,height:s}=t;const{source:r,repeat:o,id:n}=this,a=i(this.offsetX/e,0),c=i(this.offsetY/s,0),h="repeat-y"===o||"no-repeat"===o?1+Math.abs(a||0):i(r.width/e,0),m="repeat-x"===o||"no-repeat"===o?1+Math.abs(c||0):i(r.height/s,0);return['<pattern id="SVGID_'.concat(n,'" x="').concat(a,'" y="').concat(c,'" width="').concat(h,'" height="').concat(m,'">'),'<image x="0" y="0" width="'.concat(r.width,'" height="').concat(r.height,'" xlink:href="').concat(this.sourceToString(),'"></image>'),"</pattern>",""].join("\n")}static async fromObject(t,r){let{type:i,source:o,patternTransform:a}=t,c=s(t,u);const h=await n(o,e(e({},r),{},{crossOrigin:c.crossOrigin}));return new this(e(e({},c),{},{patternTransform:a&&a.slice(0),source:h}))}}t(p,"type","Pattern"),h.setClass(p),h.setClass(p,"pattern");export{p as Pattern};
2
2
  //# sourceMappingURL=Pattern.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Pattern.min.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n patternTransform: TMat2D | null = null;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\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\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n { type, source, ...serialized }: SerializedPatternOptions,\n options?: Abortable\n ): Promise<Pattern> {\n const img = await loadImage(source, {\n ...options,\n crossOrigin: serialized.crossOrigin,\n });\n return new this({ ...serialized, source: img });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","this","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","_objectSpread","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","patternWidth","Math","abs","patternHeight","concat","join","fromObject","_ref2","serialized","_objectWithoutProperties","_excluded","img","loadImage","classRegistry","setClass"],"mappings":"0kBAmBO,MAAMA,EAWX,QAAIC,GACF,MAAO,SACT,CAEA,QAAIA,CAAKC,GACPC,EAAI,OAAQ,6BAA8BD,EAC5C,CA0DAE,WAAAA,CAAYC,GAAyBC,gBApDb,UAExBA,iBAKU,GAEVA,iBAKU,GAEVA,qBAI4B,IAE5BA,0BAMkC,MAyBhCC,KAAKC,GAAKC,IACVC,OAAOC,OAAOJ,KAAMF,EACtB,CAKAO,aAAAA,GACE,QACIL,KAAKM,QAA2D,iBAAzCN,KAAKM,OAA4BC,GAE9D,CAKAC,cAAAA,GACE,QAASR,KAAKM,UAAaN,KAAKM,OAA6BG,SAC/D,CAEAC,cAAAA,GACE,OAAOV,KAAKK,gBACRL,KAAKM,OAAOC,IACZP,KAAKQ,iBACLR,KAAKM,OAAOG,YACZ,EACN,CAOAE,MAAAA,CAAOC,GACL,OAEGZ,KAAKM,UAELN,KAAKK,iBACFL,KAAKM,OAAOO,UACiB,IAA7Bb,KAAKM,OAAOQ,cACkB,IAA9Bd,KAAKM,OAAOS,eAKXH,EAAII,cAAchB,KAAKM,OAAQN,KAAKiB,QAHlC,IAIX,CAOAC,QAAAA,GAAkE,IAAzDC,EAA6BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACvC,MAAMH,OAAEA,EAAMM,YAAEA,GAAgBvB,KAChC,OAAAwB,EAAAA,EAAA,GACKC,EAAKzB,KAAMmB,IAAsC,GAAA,CACpDzB,KAAM,UACNY,OAAQN,KAAKU,iBACbO,SACAM,cACAG,QAASC,EAAQ3B,KAAK0B,QAASE,EAAOC,qBACtCC,QAASH,EAAQ3B,KAAK8B,QAASF,EAAOC,qBACtCE,iBAAkB/B,KAAK+B,iBACnB,IAAI/B,KAAK+B,kBACT,MAER,CAMAC,KAAAA,CAAKC,GAAmC,IAAlCC,MAAEA,EAAKC,OAAEA,GAAeF,EAC5B,MAAQ3B,OAAQ8B,EAAanB,OAAEA,EAAMhB,GAAEA,GAAOD,KAC5CqC,EAAiBC,EAAMtC,KAAK0B,QAAUQ,EAAO,GAC7CK,EAAiBD,EAAMtC,KAAK8B,QAAUK,EAAQ,GAC9CK,EACa,aAAXvB,GAAoC,cAAXA,EACrB,EAAIwB,KAAKC,IAAIL,GAAkB,GAC/BC,EACIF,EAAmCF,MAAmBA,EACxD,GAERS,EACa,aAAX1B,GAAoC,cAAXA,EACrB,EAAIwB,KAAKC,IAAIH,GAAkB,GAC/BD,EACIF,EAAmCD,OAAoBA,EACzD,GAGV,MAAO,CAAA,sBAAAS,OACiB3C,WAAE2C,OAAQP,EAAcO,SAAAA,OAAQL,EAAc,aAAAK,OAAYJ,gBAAYI,OAAaD,EAAa,MAAA,6BAAAC,OAEnHR,EAAmCF,oBAAKU,OAExCR,EAAmCD,OAAMS,kBAAAA,OAC3B5C,KAAKU,iBAEtB,cAAA,aAAA,IACAmC,KAAK,KACT,CAGA,uBAAaC,CAAUC,EAErBjD,GACkB,IAFlBJ,KAAEA,EAAIY,OAAEA,GAAiDyC,EAAtCC,EAAUC,EAAAF,EAAAG,GAG7B,MAAMC,QAAYC,EAAU9C,EAAMkB,EAAAA,EAAA,CAAA,EAC7B1B,GAAO,GAAA,CACVyB,YAAayB,EAAWzB,eAE1B,OAAO,IAAIvB,KAAIwB,EAAAA,KAAMwB,GAAU,GAAA,CAAE1C,OAAQ6C,IAC3C,EACDpD,EAhMYN,EAAO,OACJ,WAiMhB4D,EAAcC,SAAS7D,GAEvB4D,EAAcC,SAAS7D,EAAS"}
1
+ {"version":3,"file":"Pattern.min.mjs","sources":["../../../src/Pattern/Pattern.ts"],"sourcesContent":["import { config } from '../config';\nimport type { Abortable, TCrossOrigin, TMat2D, TSize } from '../typedefs';\nimport { ifNaN } from '../util/internals/ifNaN';\nimport { uid } from '../util/internals/uid';\nimport { loadImage } from '../util/misc/objectEnlive';\nimport { pick } from '../util/misc/pick';\nimport { toFixed } from '../util/misc/toFixed';\nimport { classRegistry } from '../ClassRegistry';\nimport type {\n PatternRepeat,\n PatternOptions,\n SerializedPatternOptions,\n} from './types';\nimport { log } from '../util/internals/console';\n\n/**\n * @see {@link http://fabricjs.com/patterns demo}\n * @see {@link http://fabricjs.com/dynamic-patterns demo}\n */\nexport class Pattern {\n static type = 'Pattern';\n\n /**\n * Legacy identifier of the class. Prefer using this.constructor.type 'Pattern'\n * or utils like isPattern, or instance of to indentify a pattern in your code.\n * Will be removed in future versiones\n * @TODO add sustainable warning message\n * @type string\n * @deprecated\n */\n get type() {\n return 'pattern';\n }\n\n set type(value) {\n log('warn', 'Setting type has no effect', value);\n }\n\n /**\n * @type PatternRepeat\n * @defaults\n */\n repeat: PatternRepeat = 'repeat';\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX = 0;\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY = 0;\n\n /**\n * @type TCrossOrigin\n * @default\n */\n crossOrigin: TCrossOrigin = '';\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @todo verify if using the identity matrix as default makes the rest of the code more easy\n * @type Array\n * @default\n */\n declare patternTransform?: TMat2D;\n\n /**\n * The actual pixel source of the pattern\n */\n declare source: CanvasImageSource;\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\n */\n declare readonly id: number;\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {option.source} [source] the pattern source, eventually empty or a drawable\n */\n constructor(options: PatternOptions) {\n this.id = uid();\n Object.assign(this, options);\n }\n\n /**\n * @returns true if {@link source} is an <img> element\n */\n isImageSource(): this is { source: HTMLImageElement } {\n return (\n !!this.source && typeof (this.source as HTMLImageElement).src === 'string'\n );\n }\n\n /**\n * @returns true if {@link source} is a <canvas> element\n */\n isCanvasSource(): this is { source: HTMLCanvasElement } {\n return !!this.source && !!(this.source as HTMLCanvasElement).toDataURL;\n }\n\n sourceToString(): string {\n return this.isImageSource()\n ? this.source.src\n : this.isCanvasSource()\n ? this.source.toDataURL()\n : '';\n }\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive(ctx: CanvasRenderingContext2D): CanvasPattern | null {\n if (\n // if the image failed to load, return, and allow rest to continue loading\n !this.source ||\n // if an image\n (this.isImageSource() &&\n (!this.source.complete ||\n this.source.naturalWidth === 0 ||\n this.source.naturalHeight === 0))\n ) {\n return null;\n }\n\n return ctx.createPattern(this.source, this.repeat)!;\n }\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {object} Object representation of a pattern instance\n */\n toObject(propertiesToInclude: string[] = []): Record<string, any> {\n const { repeat, crossOrigin } = this;\n return {\n ...pick(this, propertiesToInclude as (keyof this)[]),\n type: 'pattern',\n source: this.sourceToString(),\n repeat,\n crossOrigin,\n offsetX: toFixed(this.offsetX, config.NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, config.NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform\n ? [...this.patternTransform]\n : null,\n };\n }\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n */\n toSVG({ width, height }: TSize): string {\n const { source: patternSource, repeat, id } = this,\n patternOffsetX = ifNaN(this.offsetX / width, 0),\n patternOffsetY = ifNaN(this.offsetY / height, 0),\n patternWidth =\n repeat === 'repeat-y' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetX || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).width as number) / width,\n 0,\n ),\n patternHeight =\n repeat === 'repeat-x' || repeat === 'no-repeat'\n ? 1 + Math.abs(patternOffsetY || 0)\n : ifNaN(\n ((patternSource as HTMLImageElement).height as number) / height,\n 0,\n );\n\n return [\n `<pattern id=\"SVGID_${id}\" x=\"${patternOffsetX}\" y=\"${patternOffsetY}\" width=\"${patternWidth}\" height=\"${patternHeight}\">`,\n `<image x=\"0\" y=\"0\" width=\"${\n (patternSource as HTMLImageElement).width\n }\" height=\"${\n (patternSource as HTMLImageElement).height\n }\" xlink:href=\"${this.sourceToString()}\"></image>`,\n `</pattern>`,\n '',\n ].join('\\n');\n }\n /* _TO_SVG_END_ */\n\n static async fromObject(\n {\n type,\n source,\n patternTransform,\n ...otherOptions\n }: SerializedPatternOptions,\n options?: Abortable,\n ): Promise<Pattern> {\n const img = await loadImage(source, {\n ...options,\n crossOrigin: otherOptions.crossOrigin,\n });\n return new this({\n ...otherOptions,\n patternTransform:\n patternTransform && (patternTransform.slice(0) as TMat2D),\n source: img,\n });\n }\n}\n\nclassRegistry.setClass(Pattern);\n// kept for compatibility reason\nclassRegistry.setClass(Pattern, 'pattern');\n"],"names":["Pattern","type","value","log","constructor","options","_defineProperty","this","id","uid","Object","assign","isImageSource","source","src","isCanvasSource","toDataURL","sourceToString","toLive","ctx","complete","naturalWidth","naturalHeight","createPattern","repeat","toObject","propertiesToInclude","arguments","length","undefined","crossOrigin","_objectSpread","pick","offsetX","toFixed","config","NUM_FRACTION_DIGITS","offsetY","patternTransform","toSVG","_ref","width","height","patternSource","patternOffsetX","ifNaN","patternOffsetY","patternWidth","Math","abs","patternHeight","concat","join","fromObject","_ref2","otherOptions","_objectWithoutProperties","_excluded","img","loadImage","slice","classRegistry","setClass"],"mappings":"6lBAmBO,MAAMA,EAWX,QAAIC,GACF,MAAO,SACT,CAEA,QAAIA,CAAKC,GACPC,EAAI,OAAQ,6BAA8BD,EAC5C,CA0DAE,WAAAA,CAAYC,GAAyBC,gBApDb,UAExBA,iBAKU,GAEVA,iBAKU,GAEVA,qBAI4B,IAiC1BC,KAAKC,GAAKC,IACVC,OAAOC,OAAOJ,KAAMF,EACtB,CAKAO,aAAAA,GACE,QACIL,KAAKM,QAA2D,iBAAzCN,KAAKM,OAA4BC,GAE9D,CAKAC,cAAAA,GACE,QAASR,KAAKM,UAAaN,KAAKM,OAA6BG,SAC/D,CAEAC,cAAAA,GACE,OAAOV,KAAKK,gBACRL,KAAKM,OAAOC,IACZP,KAAKQ,iBACHR,KAAKM,OAAOG,YACZ,EACR,CAOAE,MAAAA,CAAOC,GACL,OAEGZ,KAAKM,UAELN,KAAKK,iBACFL,KAAKM,OAAOO,UACiB,IAA7Bb,KAAKM,OAAOQ,cACkB,IAA9Bd,KAAKM,OAAOS,eAKXH,EAAII,cAAchB,KAAKM,OAAQN,KAAKiB,QAHlC,IAIX,CAOAC,QAAAA,GAAkE,IAAzDC,EAA6BC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAG,GACvC,MAAMH,OAAEA,EAAMM,YAAEA,GAAgBvB,KAChC,OAAAwB,EAAAA,EAAA,GACKC,EAAKzB,KAAMmB,IAAsC,GAAA,CACpDzB,KAAM,UACNY,OAAQN,KAAKU,iBACbO,SACAM,cACAG,QAASC,EAAQ3B,KAAK0B,QAASE,EAAOC,qBACtCC,QAASH,EAAQ3B,KAAK8B,QAASF,EAAOC,qBACtCE,iBAAkB/B,KAAK+B,iBACnB,IAAI/B,KAAK+B,kBACT,MAER,CAMAC,KAAAA,CAAKC,GAAmC,IAAlCC,MAAEA,EAAKC,OAAEA,GAAeF,EAC5B,MAAQ3B,OAAQ8B,EAAanB,OAAEA,EAAMhB,GAAEA,GAAOD,KAC5CqC,EAAiBC,EAAMtC,KAAK0B,QAAUQ,EAAO,GAC7CK,EAAiBD,EAAMtC,KAAK8B,QAAUK,EAAQ,GAC9CK,EACa,aAAXvB,GAAoC,cAAXA,EACrB,EAAIwB,KAAKC,IAAIL,GAAkB,GAC/BC,EACIF,EAAmCF,MAAmBA,EACxD,GAERS,EACa,aAAX1B,GAAoC,cAAXA,EACrB,EAAIwB,KAAKC,IAAIH,GAAkB,GAC/BD,EACIF,EAAmCD,OAAoBA,EACzD,GAGV,MAAO,CAAA,sBAAAS,OACiB3C,WAAE2C,OAAQP,EAAcO,SAAAA,OAAQL,EAAc,aAAAK,OAAYJ,gBAAYI,OAAaD,EAAa,MAAA,6BAAAC,OAEnHR,EAAmCF,oBAAKU,OAExCR,EAAmCD,OAAMS,kBAAAA,OAC3B5C,KAAKU,iBAEtB,cAAA,aAAA,IACAmC,KAAK,KACT,CAGA,uBAAaC,CAAUC,EAOrBjD,GACkB,IAPlBJ,KACEA,EAAIY,OACJA,EAAMyB,iBACNA,GAEyBgB,EADtBC,EAAYC,EAAAF,EAAAG,GAIjB,MAAMC,QAAYC,EAAU9C,EAAMkB,EAAAA,EAAA,CAAA,EAC7B1B,GAAO,GAAA,CACVyB,YAAayB,EAAazB,eAE5B,OAAO,IAAIvB,KAAIwB,EAAAA,KACVwB,GAAY,GAAA,CACfjB,iBACEA,GAAqBA,EAAiBsB,MAAM,GAC9C/C,OAAQ6C,IAEZ,EACDpD,EA1MYN,EAAO,OACJ,WA2MhB6D,EAAcC,SAAS9D,GAEvB6D,EAAcC,SAAS9D,EAAS"}
@@ -8,7 +8,7 @@ import { toFixed } from '../util/misc/toFixed.mjs';
8
8
  import { classRegistry } from '../ClassRegistry.mjs';
9
9
  import { log } from '../util/internals/console.mjs';
10
10
 
11
- const _excluded = ["type", "source"];
11
+ const _excluded = ["type", "source", "patternTransform"];
12
12
 
13
13
  /**
14
14
  * @see {@link http://fabricjs.com/patterns demo}
@@ -35,6 +35,13 @@ class Pattern {
35
35
  * @defaults
36
36
  */
37
37
 
38
+ /**
39
+ * transform matrix to change the pattern, imported from svgs.
40
+ * @todo verify if using the identity matrix as default makes the rest of the code more easy
41
+ * @type Array
42
+ * @default
43
+ */
44
+
38
45
  /**
39
46
  * The actual pixel source of the pattern
40
47
  */
@@ -73,13 +80,6 @@ class Pattern {
73
80
  * @default
74
81
  */
75
82
  _defineProperty(this, "crossOrigin", '');
76
- /**
77
- * transform matrix to change the pattern, imported from svgs.
78
- * @todo verify if using the identity matrix as default makes the rest of the code more easy
79
- * @type Array
80
- * @default
81
- */
82
- _defineProperty(this, "patternTransform", null);
83
83
  this.id = uid();
84
84
  Object.assign(this, options);
85
85
  }
@@ -164,13 +164,15 @@ class Pattern {
164
164
  static async fromObject(_ref2, options) {
165
165
  let {
166
166
  type,
167
- source
167
+ source,
168
+ patternTransform
168
169
  } = _ref2,
169
- serialized = _objectWithoutProperties(_ref2, _excluded);
170
+ otherOptions = _objectWithoutProperties(_ref2, _excluded);
170
171
  const img = await loadImage(source, _objectSpread2(_objectSpread2({}, options), {}, {
171
- crossOrigin: serialized.crossOrigin
172
+ crossOrigin: otherOptions.crossOrigin
172
173
  }));
173
- return new this(_objectSpread2(_objectSpread2({}, serialized), {}, {
174
+ return new this(_objectSpread2(_objectSpread2({}, otherOptions), {}, {
175
+ patternTransform: patternTransform && patternTransform.slice(0),
174
176
  source: img
175
177
  }));
176
178
  }