fabric 6.0.0 → 6.0.2

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 (269) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +8 -18
  3. package/dist/fabric.d.ts +4 -0
  4. package/dist/fabric.d.ts.map +1 -1
  5. package/dist/fabric.min.mjs +1 -1
  6. package/dist/fabric.mjs +1 -0
  7. package/dist/fabric.mjs.map +1 -1
  8. package/dist/index.js +146 -107
  9. package/dist/index.js.map +1 -1
  10. package/dist/index.min.js +1 -1
  11. package/dist/index.min.js.map +1 -1
  12. package/dist/index.min.mjs +1 -1
  13. package/dist/index.min.mjs.map +1 -1
  14. package/dist/index.mjs +146 -108
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/index.node.cjs +146 -107
  17. package/dist/index.node.cjs.map +1 -1
  18. package/dist/index.node.mjs +146 -108
  19. package/dist/index.node.mjs.map +1 -1
  20. package/dist/package.json.min.mjs +1 -1
  21. package/dist/package.json.mjs +1 -1
  22. package/dist/src/EventTypeDefs.d.ts +2 -1
  23. package/dist/src/EventTypeDefs.d.ts.map +1 -1
  24. package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
  25. package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
  26. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
  27. package/dist/src/LayoutManager/LayoutManager.mjs +13 -8
  28. package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
  29. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs +1 -1
  30. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.min.mjs.map +1 -1
  31. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs +3 -3
  32. package/dist/src/LayoutManager/LayoutStrategies/ClipPathLayout.mjs.map +1 -1
  33. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts +1 -1
  34. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.d.ts.map +1 -1
  35. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs +1 -1
  36. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.min.mjs.map +1 -1
  37. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs +15 -9
  38. package/dist/src/LayoutManager/LayoutStrategies/LayoutStrategy.mjs.map +1 -1
  39. package/dist/src/Observable.d.ts +8 -0
  40. package/dist/src/Observable.d.ts.map +1 -1
  41. package/dist/src/Observable.min.mjs.map +1 -1
  42. package/dist/src/Observable.mjs +8 -0
  43. package/dist/src/Observable.mjs.map +1 -1
  44. package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
  45. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  46. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  47. package/dist/src/canvas/SelectableCanvas.mjs +5 -5
  48. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  49. package/dist/src/canvas/StaticCanvas.d.ts +1 -1
  50. package/dist/src/constants.d.ts +16 -0
  51. package/dist/src/constants.d.ts.map +1 -1
  52. package/dist/src/constants.min.mjs +1 -1
  53. package/dist/src/constants.min.mjs.map +1 -1
  54. package/dist/src/constants.mjs +17 -1
  55. package/dist/src/constants.mjs.map +1 -1
  56. package/dist/src/controls/Control.d.ts.map +1 -1
  57. package/dist/src/controls/Control.min.mjs +1 -1
  58. package/dist/src/controls/Control.min.mjs.map +1 -1
  59. package/dist/src/controls/Control.mjs +2 -1
  60. package/dist/src/controls/Control.mjs.map +1 -1
  61. package/dist/src/controls/changeWidth.min.mjs +1 -1
  62. package/dist/src/controls/changeWidth.min.mjs.map +1 -1
  63. package/dist/src/controls/changeWidth.mjs +2 -2
  64. package/dist/src/controls/changeWidth.mjs.map +1 -1
  65. package/dist/src/controls/commonControls.d.ts.map +1 -1
  66. package/dist/src/controls/commonControls.min.mjs +1 -1
  67. package/dist/src/controls/commonControls.min.mjs.map +1 -1
  68. package/dist/src/controls/commonControls.mjs +4 -3
  69. package/dist/src/controls/commonControls.mjs.map +1 -1
  70. package/dist/src/controls/controlRendering.min.mjs +1 -1
  71. package/dist/src/controls/controlRendering.min.mjs.map +1 -1
  72. package/dist/src/controls/controlRendering.mjs +3 -3
  73. package/dist/src/controls/controlRendering.mjs.map +1 -1
  74. package/dist/src/controls/drag.min.mjs +1 -1
  75. package/dist/src/controls/drag.min.mjs.map +1 -1
  76. package/dist/src/controls/drag.mjs +2 -2
  77. package/dist/src/controls/drag.mjs.map +1 -1
  78. package/dist/src/controls/polyControl.d.ts.map +1 -1
  79. package/dist/src/controls/polyControl.min.mjs +1 -1
  80. package/dist/src/controls/polyControl.min.mjs.map +1 -1
  81. package/dist/src/controls/polyControl.mjs +2 -1
  82. package/dist/src/controls/polyControl.mjs.map +1 -1
  83. package/dist/src/controls/rotate.d.ts.map +1 -1
  84. package/dist/src/controls/rotate.min.mjs +1 -1
  85. package/dist/src/controls/rotate.min.mjs.map +1 -1
  86. package/dist/src/controls/rotate.mjs +2 -1
  87. package/dist/src/controls/rotate.mjs.map +1 -1
  88. package/dist/src/controls/scale.d.ts.map +1 -1
  89. package/dist/src/controls/scale.min.mjs +1 -1
  90. package/dist/src/controls/scale.min.mjs.map +1 -1
  91. package/dist/src/controls/scale.mjs +8 -7
  92. package/dist/src/controls/scale.mjs.map +1 -1
  93. package/dist/src/controls/scaleSkew.d.ts.map +1 -1
  94. package/dist/src/controls/scaleSkew.min.mjs +1 -1
  95. package/dist/src/controls/scaleSkew.min.mjs.map +1 -1
  96. package/dist/src/controls/scaleSkew.mjs +3 -2
  97. package/dist/src/controls/scaleSkew.mjs.map +1 -1
  98. package/dist/src/controls/skew.d.ts.map +1 -1
  99. package/dist/src/controls/skew.min.mjs +1 -1
  100. package/dist/src/controls/skew.min.mjs.map +1 -1
  101. package/dist/src/controls/skew.mjs +7 -7
  102. package/dist/src/controls/skew.mjs.map +1 -1
  103. package/dist/src/filters/Blur.min.mjs +1 -1
  104. package/dist/src/filters/Blur.min.mjs.map +1 -1
  105. package/dist/src/filters/Blur.mjs +1 -1
  106. package/dist/src/filters/Blur.mjs.map +1 -1
  107. package/dist/src/filters/Pixelate.min.mjs +1 -1
  108. package/dist/src/filters/Pixelate.min.mjs.map +1 -1
  109. package/dist/src/filters/Pixelate.mjs +1 -1
  110. package/dist/src/filters/Pixelate.mjs.map +1 -1
  111. package/dist/src/parser/attributes.d.ts.map +1 -1
  112. package/dist/src/parser/attributes.min.mjs +1 -1
  113. package/dist/src/parser/attributes.min.mjs.map +1 -1
  114. package/dist/src/parser/attributes.mjs +3 -1
  115. package/dist/src/parser/attributes.mjs.map +1 -1
  116. package/dist/src/parser/elements_parser.min.mjs +1 -1
  117. package/dist/src/parser/elements_parser.min.mjs.map +1 -1
  118. package/dist/src/parser/elements_parser.mjs +3 -3
  119. package/dist/src/parser/elements_parser.mjs.map +1 -1
  120. package/dist/src/parser/normalizeValue.min.mjs +1 -1
  121. package/dist/src/parser/normalizeValue.min.mjs.map +1 -1
  122. package/dist/src/parser/normalizeValue.mjs +7 -7
  123. package/dist/src/parser/normalizeValue.mjs.map +1 -1
  124. package/dist/src/parser/parseTransformAttribute.min.mjs +1 -1
  125. package/dist/src/parser/parseTransformAttribute.min.mjs.map +1 -1
  126. package/dist/src/parser/parseTransformAttribute.mjs +5 -5
  127. package/dist/src/parser/parseTransformAttribute.mjs.map +1 -1
  128. package/dist/src/shapes/Circle.d.ts.map +1 -1
  129. package/dist/src/shapes/Circle.min.mjs +1 -1
  130. package/dist/src/shapes/Circle.min.mjs.map +1 -1
  131. package/dist/src/shapes/Circle.mjs +3 -2
  132. package/dist/src/shapes/Circle.mjs.map +1 -1
  133. package/dist/src/shapes/Ellipse.min.mjs +1 -1
  134. package/dist/src/shapes/Ellipse.min.mjs.map +1 -1
  135. package/dist/src/shapes/Ellipse.mjs +3 -3
  136. package/dist/src/shapes/Ellipse.mjs.map +1 -1
  137. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs +1 -1
  138. package/dist/src/shapes/IText/DraggableTextDelegate.min.mjs.map +1 -1
  139. package/dist/src/shapes/IText/DraggableTextDelegate.mjs +3 -3
  140. package/dist/src/shapes/IText/DraggableTextDelegate.mjs.map +1 -1
  141. package/dist/src/shapes/IText/IText.min.mjs +1 -1
  142. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  143. package/dist/src/shapes/IText/IText.mjs +3 -3
  144. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  145. package/dist/src/shapes/IText/ITextBehavior.min.mjs +1 -1
  146. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  147. package/dist/src/shapes/IText/ITextBehavior.mjs +2 -2
  148. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  149. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs +1 -1
  150. package/dist/src/shapes/IText/ITextKeyBehavior.min.mjs.map +1 -1
  151. package/dist/src/shapes/IText/ITextKeyBehavior.mjs +2 -2
  152. package/dist/src/shapes/IText/ITextKeyBehavior.mjs.map +1 -1
  153. package/dist/src/shapes/Image.min.mjs +1 -1
  154. package/dist/src/shapes/Image.min.mjs.map +1 -1
  155. package/dist/src/shapes/Image.mjs +2 -2
  156. package/dist/src/shapes/Image.mjs.map +1 -1
  157. package/dist/src/shapes/Object/AnimatableObject.d.ts.map +1 -1
  158. package/dist/src/shapes/Object/AnimatableObject.min.mjs +1 -1
  159. package/dist/src/shapes/Object/AnimatableObject.min.mjs.map +1 -1
  160. package/dist/src/shapes/Object/AnimatableObject.mjs +2 -1
  161. package/dist/src/shapes/Object/AnimatableObject.mjs.map +1 -1
  162. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  163. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +1 -1
  164. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
  165. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +4 -4
  166. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
  167. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  168. package/dist/src/shapes/Object/InteractiveObject.min.mjs +1 -1
  169. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  170. package/dist/src/shapes/Object/InteractiveObject.mjs +2 -1
  171. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  172. package/dist/src/shapes/Object/Object.d.ts +9 -7
  173. package/dist/src/shapes/Object/Object.d.ts.map +1 -1
  174. package/dist/src/shapes/Object/Object.min.mjs +1 -1
  175. package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
  176. package/dist/src/shapes/Object/Object.mjs +14 -12
  177. package/dist/src/shapes/Object/Object.mjs.map +1 -1
  178. package/dist/src/shapes/Object/ObjectGeometry.min.mjs +1 -1
  179. package/dist/src/shapes/Object/ObjectGeometry.min.mjs.map +1 -1
  180. package/dist/src/shapes/Object/ObjectGeometry.mjs +3 -3
  181. package/dist/src/shapes/Object/ObjectGeometry.mjs.map +1 -1
  182. package/dist/src/shapes/Object/defaultValues.d.ts.map +1 -1
  183. package/dist/src/shapes/Object/defaultValues.min.mjs +1 -1
  184. package/dist/src/shapes/Object/defaultValues.min.mjs.map +1 -1
  185. package/dist/src/shapes/Object/defaultValues.mjs +4 -4
  186. package/dist/src/shapes/Object/defaultValues.mjs.map +1 -1
  187. package/dist/src/shapes/Object/types/ControlProps.d.ts +4 -3
  188. package/dist/src/shapes/Object/types/ControlProps.d.ts.map +1 -1
  189. package/dist/src/shapes/Polyline.d.ts.map +1 -1
  190. package/dist/src/shapes/Polyline.min.mjs +1 -1
  191. package/dist/src/shapes/Polyline.min.mjs.map +1 -1
  192. package/dist/src/shapes/Polyline.mjs +3 -3
  193. package/dist/src/shapes/Polyline.mjs.map +1 -1
  194. package/dist/src/shapes/Text/Text.d.ts +2 -2
  195. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  196. package/dist/src/shapes/Text/Text.min.mjs +1 -1
  197. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  198. package/dist/src/shapes/Text/Text.mjs +5 -5
  199. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  200. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
  201. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +1 -1
  202. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  203. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +2 -1
  204. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  205. package/dist/src/shapes/Text/constants.min.mjs +1 -1
  206. package/dist/src/shapes/Text/constants.min.mjs.map +1 -1
  207. package/dist/src/shapes/Text/constants.mjs +2 -2
  208. package/dist/src/shapes/Text/constants.mjs.map +1 -1
  209. package/dist/src/util/misc/objectEnlive.d.ts +1 -0
  210. package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
  211. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  212. package/dist/src/util/misc/objectEnlive.mjs +1 -0
  213. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  214. package/dist/src/util/misc/svgParsing.min.mjs +1 -1
  215. package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
  216. package/dist/src/util/misc/svgParsing.mjs +2 -2
  217. package/dist/src/util/misc/svgParsing.mjs.map +1 -1
  218. package/dist/src/util/transform_matrix_removal.min.mjs +1 -1
  219. package/dist/src/util/transform_matrix_removal.min.mjs.map +1 -1
  220. package/dist/src/util/transform_matrix_removal.mjs +3 -3
  221. package/dist/src/util/transform_matrix_removal.mjs.map +1 -1
  222. package/fabric.ts +4 -0
  223. package/package.json +1 -1
  224. package/src/EventTypeDefs.ts +14 -6
  225. package/src/LayoutManager/LayoutManager.ts +28 -19
  226. package/src/LayoutManager/LayoutStrategies/ClipPathLayout.ts +2 -2
  227. package/src/LayoutManager/LayoutStrategies/LayoutStrategy.ts +7 -7
  228. package/src/Observable.ts +8 -0
  229. package/src/canvas/SelectableCanvas.ts +25 -11
  230. package/src/canvas/canvas_gestures.mixin.ts +6 -5
  231. package/src/constants.ts +17 -0
  232. package/src/controls/Control.ts +2 -1
  233. package/src/controls/changeWidth.ts +2 -2
  234. package/src/controls/commonControls.ts +4 -3
  235. package/src/controls/controlRendering.ts +3 -3
  236. package/src/controls/drag.ts +2 -2
  237. package/src/controls/polyControl.ts +2 -1
  238. package/src/controls/rotate.ts +2 -1
  239. package/src/controls/scale.ts +8 -7
  240. package/src/controls/scaleSkew.ts +3 -2
  241. package/src/controls/skew.ts +14 -7
  242. package/src/filters/Blur.ts +1 -1
  243. package/src/filters/Pixelate.ts +1 -1
  244. package/src/parser/attributes.ts +4 -2
  245. package/src/parser/elements_parser.ts +3 -3
  246. package/src/parser/normalizeValue.ts +7 -7
  247. package/src/parser/parseTransformAttribute.ts +5 -5
  248. package/src/shapes/Circle.ts +3 -2
  249. package/src/shapes/Ellipse.ts +3 -3
  250. package/src/shapes/IText/DraggableTextDelegate.ts +3 -3
  251. package/src/shapes/IText/IText.ts +3 -3
  252. package/src/shapes/IText/ITextBehavior.ts +2 -2
  253. package/src/shapes/IText/ITextKeyBehavior.ts +2 -2
  254. package/src/shapes/Image.ts +2 -2
  255. package/src/shapes/Object/AnimatableObject.ts +2 -1
  256. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +4 -6
  257. package/src/shapes/Object/InteractiveObject.ts +2 -1
  258. package/src/shapes/Object/Object.ts +16 -11
  259. package/src/shapes/Object/ObjectGeometry.ts +3 -3
  260. package/src/shapes/Object/defaultValues.ts +17 -8
  261. package/src/shapes/Object/types/ControlProps.ts +4 -3
  262. package/src/shapes/Polyline.spec.ts +0 -1
  263. package/src/shapes/Polyline.ts +12 -4
  264. package/src/shapes/Text/Text.ts +7 -7
  265. package/src/shapes/Text/TextSVGExportMixin.ts +3 -2
  266. package/src/shapes/Text/constants.ts +3 -3
  267. package/src/util/misc/objectEnlive.ts +1 -0
  268. package/src/util/misc/svgParsing.ts +2 -2
  269. package/src/util/transform_matrix_removal.ts +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGeometry.min.mjs","sources":["../../../../src/shapes/Object/ObjectGeometry.ts"],"sourcesContent":["import type {\n TBBox,\n TCornerPoint,\n TDegree,\n TMat2D,\n TOriginX,\n TOriginY,\n} from '../../typedefs';\nimport { iMatrix } from '../../constants';\nimport { Intersection } from '../../Intersection';\nimport { Point } from '../../Point';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n createRotateMatrix,\n createTranslateMatrix,\n composeMatrix,\n invertTransform,\n multiplyTransformMatrices,\n transformPoint,\n calcPlaneRotation,\n} from '../../util/misc/matrix';\nimport { radiansToDegrees } from '../../util/misc/radiansDegreesConversion';\nimport type { Canvas } from '../../canvas/Canvas';\nimport type { StaticCanvas } from '../../canvas/StaticCanvas';\nimport { ObjectOrigin } from './ObjectOrigin';\nimport type { ObjectEvents } from '../../EventTypeDefs';\nimport type { ControlProps } from './types/ControlProps';\nimport { resolveOrigin } from '../../util/misc/resolveOrigin';\n\ntype TMatrixCache = {\n key: number[];\n value: TMat2D;\n};\n\ntype TACoords = TCornerPoint;\n\nexport class ObjectGeometry<EventSpec extends ObjectEvents = ObjectEvents>\n extends ObjectOrigin<EventSpec>\n implements Pick<ControlProps, 'padding'>\n{\n declare padding: number;\n\n /**\n * Describe object's corner position in scene coordinates.\n * The coordinates are derived from the following:\n * left, top, width, height, scaleX, scaleY, skewX, skewY, angle, strokeWidth.\n * The coordinates do not depend on viewport changes.\n * The coordinates get updated with {@link setCoords}.\n * You can calculate them without updating with {@link calcACoords()}\n */\n declare aCoords: TACoords;\n\n /**\n * storage cache for object transform matrix\n */\n declare ownMatrixCache?: TMatrixCache;\n\n /**\n * storage cache for object full transform matrix\n */\n declare matrixCache?: TMatrixCache;\n\n /**\n * A Reference of the Canvas where the object is actually added\n * @type StaticCanvas | Canvas;\n * @default undefined\n * @private\n */\n declare canvas?: StaticCanvas | Canvas;\n\n /**\n * @returns {number} x position according to object's {@link originX} property in canvas coordinate plane\n */\n getX(): number {\n return this.getXY().x;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in canvas coordinate plane\n */\n setX(value: number) {\n this.setXY(this.getXY().setX(value));\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in canvas coordinate plane\n */\n getY(): number {\n return this.getXY().y;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in canvas coordinate plane\n */\n setY(value: number) {\n this.setXY(this.getXY().setY(value));\n }\n\n /**\n * @returns {number} x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getX}\n */\n getRelativeX(): number {\n return this.left;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this method is identical to {@link setX}\n */\n setRelativeX(value: number) {\n this.left = value;\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getY}\n */\n getRelativeY(): number {\n return this.top;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link setY}\n */\n setRelativeY(value: number) {\n this.top = value;\n }\n\n /**\n * @returns {Point} x position according to object's {@link originX} {@link originY} properties in canvas coordinate plane\n */\n getXY(): Point {\n const relativePosition = this.getRelativeXY();\n return this.group\n ? transformPoint(relativePosition, this.group.calcTransformMatrix())\n : relativePosition;\n }\n\n /**\n * Set an object position to a particular point, the point is intended in absolute ( canvas ) coordinate.\n * You can specify {@link originX} and {@link originY} values,\n * that otherwise are the object's current values.\n * @example <caption>Set object's bottom left corner to point (5,5) on canvas</caption>\n * object.setXY(new Point(5, 5), 'left', 'bottom').\n * @param {Point} point position in canvas coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setXY(point: Point, originX?: TOriginX, originY?: TOriginY) {\n if (this.group) {\n point = transformPoint(\n point,\n invertTransform(this.group.calcTransformMatrix())\n );\n }\n this.setRelativeXY(point, originX, originY);\n }\n\n /**\n * @returns {Point} x,y position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n */\n getRelativeXY(): Point {\n return new Point(this.left, this.top);\n }\n\n /**\n * As {@link setXY}, but in current parent's coordinate plane (the current group if any or the canvas)\n * @param {Point} point position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setRelativeXY(\n point: Point,\n originX: TOriginX = this.originX,\n originY: TOriginY = this.originY\n ) {\n this.setPositionByOrigin(point, originX, originY);\n }\n\n /**\n * @deprecated intermidiate method to be removed, do not use\n */\n protected isStrokeAccountedForInDimensions() {\n return false;\n }\n\n /**\n * @return {Point[]} [tl, tr, br, bl] in the scene plane\n */\n getCoords(): Point[] {\n const { tl, tr, br, bl } =\n this.aCoords || (this.aCoords = this.calcACoords());\n const coords = [tl, tr, br, bl];\n if (this.group) {\n const t = this.group.calcTransformMatrix();\n return coords.map((p) => transformPoint(p, t));\n }\n return coords;\n }\n\n /**\n * Checks if object intersects with the scene rect formed by {@link tl} and {@link br}\n */\n intersectsWithRect(tl: Point, br: Point): boolean {\n const intersection = Intersection.intersectPolygonRectangle(\n this.getCoords(),\n tl,\n br\n );\n return intersection.status === 'Intersection';\n }\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject(other: ObjectGeometry): boolean {\n const intersection = Intersection.intersectPolygonPolygon(\n this.getCoords(),\n other.getCoords()\n );\n\n return (\n intersection.status === 'Intersection' ||\n intersection.status === 'Coincident' ||\n other.isContainedWithinObject(this) ||\n this.isContainedWithinObject(other)\n );\n }\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject(other: ObjectGeometry): boolean {\n const points = this.getCoords();\n return points.every((point) => other.containsPoint(point));\n }\n\n /**\n * Checks if object is fully contained within the scene rect formed by {@link tl} and {@link br}\n */\n isContainedWithinRect(tl: Point, br: Point): boolean {\n const { left, top, width, height } = this.getBoundingRect();\n return (\n left >= tl.x &&\n left + width <= br.x &&\n top >= tl.y &&\n top + height <= br.y\n );\n }\n\n isOverlapping<T extends ObjectGeometry>(other: T): boolean {\n return (\n this.intersectsWithObject(other) ||\n this.isContainedWithinObject(other) ||\n other.isContainedWithinObject(this)\n );\n }\n\n /**\n * Checks if point is inside the object\n * @param {Point} point Point to check against\n * @return {Boolean} true if point is inside the object\n */\n containsPoint(point: Point): boolean {\n return Intersection.isPointInPolygon(point, this.getCoords());\n }\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n const points = this.getCoords();\n // if some point is on screen, the object is on screen.\n if (\n points.some(\n (point) =>\n point.x <= br.x &&\n point.x >= tl.x &&\n point.y <= br.y &&\n point.y >= tl.y\n )\n ) {\n return true;\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n // check if the object is so big that it contains the entire viewport\n return this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n const allPointsAreOutside = this.getCoords().every(\n (point) =>\n (point.x >= br.x || point.x <= tl.x) &&\n (point.y >= br.y || point.y <= tl.y)\n );\n // check if the object is so big that it contains the entire viewport\n return allPointsAreOutside && this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect(): TBBox {\n return makeBoundingBoxFromPoints(this.getCoords());\n }\n\n /**\n * Returns width of an object's bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} width value\n */\n getScaledWidth(): number {\n return this._getTransformedDimensions().x;\n }\n\n /**\n * Returns height of an object bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} height value\n */\n getScaledHeight(): number {\n return this._getTransformedDimensions().y;\n }\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {void}\n */\n scale(value: number): void {\n this._set('scaleX', value);\n this._set('scaleY', value);\n this.setCoords();\n }\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @return {void}\n */\n scaleToWidth(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n }\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @return {void}\n */\n scaleToHeight(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n }\n\n getCanvasRetinaScaling() {\n return this.canvas?.getRetinaScaling() || 1;\n }\n\n /**\n * Returns the object angle relative to canvas counting also the group property\n * @returns {TDegree}\n */\n getTotalAngle(): TDegree {\n return this.group\n ? radiansToDegrees(calcPlaneRotation(this.calcTransformMatrix()))\n : this.angle;\n }\n\n /**\n * Retrieves viewportTransform from Object's canvas if available\n * @return {TMat2D}\n */\n getViewportTransform(): TMat2D {\n return this.canvas?.viewportTransform || (iMatrix.concat() as TMat2D);\n }\n\n /**\n * Calculates the coordinates of the 4 corner of the bbox, in absolute coordinates.\n * those never change with zoom or viewport changes.\n * @return {TCornerPoint}\n */\n calcACoords(): TCornerPoint {\n const rotateMatrix = createRotateMatrix({ angle: this.angle }),\n { x, y } = this.getRelativeCenterPoint(),\n tMatrix = createTranslateMatrix(x, y),\n finalMatrix = multiplyTransformMatrices(tMatrix, rotateMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2,\n h = dim.y / 2;\n return {\n // corners\n tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n tr: transformPoint({ x: w, y: -h }, finalMatrix),\n bl: transformPoint({ x: -w, y: h }, finalMatrix),\n br: transformPoint({ x: w, y: h }, finalMatrix),\n };\n }\n\n /**\n * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n * aCoords are used to quickly find an object on the canvas.\n * See {@link https://github.com/fabricjs/fabric.js/wiki/When-to-call-setCoords} and {@link http://fabricjs.com/fabric-gotchas}\n */\n setCoords(): void {\n this.aCoords = this.calcACoords();\n }\n\n transformMatrixKey(skipGroup = false): number[] {\n let prefix: number[] = [];\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup);\n }\n prefix.push(\n this.top,\n this.left,\n this.width,\n this.height,\n this.scaleX,\n this.scaleY,\n this.angle,\n this.strokeWidth,\n this.skewX,\n this.skewY,\n +this.flipX,\n +this.flipY,\n resolveOrigin(this.originX),\n resolveOrigin(this.originY)\n );\n\n return prefix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * There are some situation in which this is useful to avoid the fake rotation.\n * @return {TMat2D} transform matrix for the object\n */\n calcTransformMatrix(skipGroup = false): TMat2D {\n let matrix = this.calcOwnMatrix();\n if (skipGroup || !this.group) {\n return matrix;\n }\n const key = this.transformMatrixKey(skipGroup),\n cache = this.matrixCache;\n if (cache && cache.key.every((x, i) => x === key[i])) {\n return cache.value;\n }\n if (this.group) {\n matrix = multiplyTransformMatrices(\n this.group.calcTransformMatrix(false),\n matrix\n );\n }\n this.matrixCache = {\n key,\n value: matrix,\n };\n return matrix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {TMat2D} transform matrix for the object\n */\n calcOwnMatrix(): TMat2D {\n const key = this.transformMatrixKey(true),\n cache = this.ownMatrixCache;\n if (cache && cache.key === key) {\n return cache.value;\n }\n const center = this.getRelativeCenterPoint(),\n options = {\n angle: this.angle,\n translateX: center.x,\n translateY: center.y,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: this.skewX,\n skewY: this.skewY,\n flipX: this.flipX,\n flipY: this.flipY,\n },\n value = composeMatrix(options);\n this.ownMatrixCache = {\n key,\n value,\n };\n return value;\n }\n\n /**\n * Calculate object dimensions from its properties\n * @private\n * @returns {Point} dimensions\n */\n _getNonTransformedDimensions(): Point {\n return new Point(this.width, this.height).scalarAdd(this.strokeWidth);\n }\n\n /**\n * Calculate object dimensions for controls box, including padding and canvas zoom.\n * and active selection\n * @private\n * @param {object} [options] transform options\n * @returns {Point} dimensions\n */\n _calculateCurrentDimensions(options?: any): Point {\n return this._getTransformedDimensions(options)\n .transform(this.getViewportTransform(), true)\n .scalarAdd(2 * this.padding);\n }\n}\n"],"names":["ObjectGeometry","ObjectOrigin","getX","this","getXY","x","setX","value","setXY","getY","y","setY","getRelativeX","left","setRelativeX","getRelativeY","top","setRelativeY","relativePosition","getRelativeXY","group","transformPoint","calcTransformMatrix","point","originX","originY","invertTransform","setRelativeXY","Point","arguments","length","undefined","setPositionByOrigin","isStrokeAccountedForInDimensions","getCoords","tl","tr","br","bl","aCoords","calcACoords","coords","t","map","p","intersectsWithRect","Intersection","intersectPolygonRectangle","status","intersectsWithObject","other","intersection","intersectPolygonPolygon","isContainedWithinObject","every","containsPoint","isContainedWithinRect","width","height","getBoundingRect","isOverlapping","isPointInPolygon","isOnScreen","canvas","vptCoords","some","midPointFrom","isPartiallyOnScreen","makeBoundingBoxFromPoints","getScaledWidth","_getTransformedDimensions","getScaledHeight","scale","_set","setCoords","scaleToWidth","boundingRectFactor","scaleToHeight","getCanvasRetinaScaling","_this$canvas","getRetinaScaling","getTotalAngle","radiansToDegrees","calcPlaneRotation","angle","getViewportTransform","_this$canvas2","viewportTransform","iMatrix","concat","rotateMatrix","createRotateMatrix","getRelativeCenterPoint","tMatrix","createTranslateMatrix","finalMatrix","multiplyTransformMatrices","dim","w","h","transformMatrixKey","skipGroup","prefix","push","scaleX","scaleY","strokeWidth","skewX","skewY","flipX","flipY","resolveOrigin","matrix","calcOwnMatrix","key","cache","matrixCache","i","ownMatrixCache","center","options","translateX","translateY","composeMatrix","_getNonTransformedDimensions","scalarAdd","_calculateCurrentDimensions","transform","padding"],"mappings":"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"}
1
+ {"version":3,"file":"ObjectGeometry.min.mjs","sources":["../../../../src/shapes/Object/ObjectGeometry.ts"],"sourcesContent":["import type {\n TBBox,\n TCornerPoint,\n TDegree,\n TMat2D,\n TOriginX,\n TOriginY,\n} from '../../typedefs';\nimport { SCALE_X, SCALE_Y, iMatrix } from '../../constants';\nimport { Intersection } from '../../Intersection';\nimport { Point } from '../../Point';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n createRotateMatrix,\n createTranslateMatrix,\n composeMatrix,\n invertTransform,\n multiplyTransformMatrices,\n transformPoint,\n calcPlaneRotation,\n} from '../../util/misc/matrix';\nimport { radiansToDegrees } from '../../util/misc/radiansDegreesConversion';\nimport type { Canvas } from '../../canvas/Canvas';\nimport type { StaticCanvas } from '../../canvas/StaticCanvas';\nimport { ObjectOrigin } from './ObjectOrigin';\nimport type { ObjectEvents } from '../../EventTypeDefs';\nimport type { ControlProps } from './types/ControlProps';\nimport { resolveOrigin } from '../../util/misc/resolveOrigin';\n\ntype TMatrixCache = {\n key: number[];\n value: TMat2D;\n};\n\ntype TACoords = TCornerPoint;\n\nexport class ObjectGeometry<EventSpec extends ObjectEvents = ObjectEvents>\n extends ObjectOrigin<EventSpec>\n implements Pick<ControlProps, 'padding'>\n{\n declare padding: number;\n\n /**\n * Describe object's corner position in scene coordinates.\n * The coordinates are derived from the following:\n * left, top, width, height, scaleX, scaleY, skewX, skewY, angle, strokeWidth.\n * The coordinates do not depend on viewport changes.\n * The coordinates get updated with {@link setCoords}.\n * You can calculate them without updating with {@link calcACoords()}\n */\n declare aCoords: TACoords;\n\n /**\n * storage cache for object transform matrix\n */\n declare ownMatrixCache?: TMatrixCache;\n\n /**\n * storage cache for object full transform matrix\n */\n declare matrixCache?: TMatrixCache;\n\n /**\n * A Reference of the Canvas where the object is actually added\n * @type StaticCanvas | Canvas;\n * @default undefined\n * @private\n */\n declare canvas?: StaticCanvas | Canvas;\n\n /**\n * @returns {number} x position according to object's {@link originX} property in canvas coordinate plane\n */\n getX(): number {\n return this.getXY().x;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in canvas coordinate plane\n */\n setX(value: number) {\n this.setXY(this.getXY().setX(value));\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in canvas coordinate plane\n */\n getY(): number {\n return this.getXY().y;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in canvas coordinate plane\n */\n setY(value: number) {\n this.setXY(this.getXY().setY(value));\n }\n\n /**\n * @returns {number} x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getX}\n */\n getRelativeX(): number {\n return this.left;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this method is identical to {@link setX}\n */\n setRelativeX(value: number) {\n this.left = value;\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getY}\n */\n getRelativeY(): number {\n return this.top;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link setY}\n */\n setRelativeY(value: number) {\n this.top = value;\n }\n\n /**\n * @returns {Point} x position according to object's {@link originX} {@link originY} properties in canvas coordinate plane\n */\n getXY(): Point {\n const relativePosition = this.getRelativeXY();\n return this.group\n ? transformPoint(relativePosition, this.group.calcTransformMatrix())\n : relativePosition;\n }\n\n /**\n * Set an object position to a particular point, the point is intended in absolute ( canvas ) coordinate.\n * You can specify {@link originX} and {@link originY} values,\n * that otherwise are the object's current values.\n * @example <caption>Set object's bottom left corner to point (5,5) on canvas</caption>\n * object.setXY(new Point(5, 5), 'left', 'bottom').\n * @param {Point} point position in canvas coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setXY(point: Point, originX?: TOriginX, originY?: TOriginY) {\n if (this.group) {\n point = transformPoint(\n point,\n invertTransform(this.group.calcTransformMatrix())\n );\n }\n this.setRelativeXY(point, originX, originY);\n }\n\n /**\n * @returns {Point} x,y position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n */\n getRelativeXY(): Point {\n return new Point(this.left, this.top);\n }\n\n /**\n * As {@link setXY}, but in current parent's coordinate plane (the current group if any or the canvas)\n * @param {Point} point position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setRelativeXY(\n point: Point,\n originX: TOriginX = this.originX,\n originY: TOriginY = this.originY\n ) {\n this.setPositionByOrigin(point, originX, originY);\n }\n\n /**\n * @deprecated intermidiate method to be removed, do not use\n */\n protected isStrokeAccountedForInDimensions() {\n return false;\n }\n\n /**\n * @return {Point[]} [tl, tr, br, bl] in the scene plane\n */\n getCoords(): Point[] {\n const { tl, tr, br, bl } =\n this.aCoords || (this.aCoords = this.calcACoords());\n const coords = [tl, tr, br, bl];\n if (this.group) {\n const t = this.group.calcTransformMatrix();\n return coords.map((p) => transformPoint(p, t));\n }\n return coords;\n }\n\n /**\n * Checks if object intersects with the scene rect formed by {@link tl} and {@link br}\n */\n intersectsWithRect(tl: Point, br: Point): boolean {\n const intersection = Intersection.intersectPolygonRectangle(\n this.getCoords(),\n tl,\n br\n );\n return intersection.status === 'Intersection';\n }\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject(other: ObjectGeometry): boolean {\n const intersection = Intersection.intersectPolygonPolygon(\n this.getCoords(),\n other.getCoords()\n );\n\n return (\n intersection.status === 'Intersection' ||\n intersection.status === 'Coincident' ||\n other.isContainedWithinObject(this) ||\n this.isContainedWithinObject(other)\n );\n }\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject(other: ObjectGeometry): boolean {\n const points = this.getCoords();\n return points.every((point) => other.containsPoint(point));\n }\n\n /**\n * Checks if object is fully contained within the scene rect formed by {@link tl} and {@link br}\n */\n isContainedWithinRect(tl: Point, br: Point): boolean {\n const { left, top, width, height } = this.getBoundingRect();\n return (\n left >= tl.x &&\n left + width <= br.x &&\n top >= tl.y &&\n top + height <= br.y\n );\n }\n\n isOverlapping<T extends ObjectGeometry>(other: T): boolean {\n return (\n this.intersectsWithObject(other) ||\n this.isContainedWithinObject(other) ||\n other.isContainedWithinObject(this)\n );\n }\n\n /**\n * Checks if point is inside the object\n * @param {Point} point Point to check against\n * @return {Boolean} true if point is inside the object\n */\n containsPoint(point: Point): boolean {\n return Intersection.isPointInPolygon(point, this.getCoords());\n }\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n const points = this.getCoords();\n // if some point is on screen, the object is on screen.\n if (\n points.some(\n (point) =>\n point.x <= br.x &&\n point.x >= tl.x &&\n point.y <= br.y &&\n point.y >= tl.y\n )\n ) {\n return true;\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n // check if the object is so big that it contains the entire viewport\n return this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n const allPointsAreOutside = this.getCoords().every(\n (point) =>\n (point.x >= br.x || point.x <= tl.x) &&\n (point.y >= br.y || point.y <= tl.y)\n );\n // check if the object is so big that it contains the entire viewport\n return allPointsAreOutside && this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect(): TBBox {\n return makeBoundingBoxFromPoints(this.getCoords());\n }\n\n /**\n * Returns width of an object's bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} width value\n */\n getScaledWidth(): number {\n return this._getTransformedDimensions().x;\n }\n\n /**\n * Returns height of an object bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} height value\n */\n getScaledHeight(): number {\n return this._getTransformedDimensions().y;\n }\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {void}\n */\n scale(value: number): void {\n this._set(SCALE_X, value);\n this._set(SCALE_Y, value);\n this.setCoords();\n }\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @return {void}\n */\n scaleToWidth(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n }\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @return {void}\n */\n scaleToHeight(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n }\n\n getCanvasRetinaScaling() {\n return this.canvas?.getRetinaScaling() || 1;\n }\n\n /**\n * Returns the object angle relative to canvas counting also the group property\n * @returns {TDegree}\n */\n getTotalAngle(): TDegree {\n return this.group\n ? radiansToDegrees(calcPlaneRotation(this.calcTransformMatrix()))\n : this.angle;\n }\n\n /**\n * Retrieves viewportTransform from Object's canvas if available\n * @return {TMat2D}\n */\n getViewportTransform(): TMat2D {\n return this.canvas?.viewportTransform || (iMatrix.concat() as TMat2D);\n }\n\n /**\n * Calculates the coordinates of the 4 corner of the bbox, in absolute coordinates.\n * those never change with zoom or viewport changes.\n * @return {TCornerPoint}\n */\n calcACoords(): TCornerPoint {\n const rotateMatrix = createRotateMatrix({ angle: this.angle }),\n { x, y } = this.getRelativeCenterPoint(),\n tMatrix = createTranslateMatrix(x, y),\n finalMatrix = multiplyTransformMatrices(tMatrix, rotateMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2,\n h = dim.y / 2;\n return {\n // corners\n tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n tr: transformPoint({ x: w, y: -h }, finalMatrix),\n bl: transformPoint({ x: -w, y: h }, finalMatrix),\n br: transformPoint({ x: w, y: h }, finalMatrix),\n };\n }\n\n /**\n * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n * aCoords are used to quickly find an object on the canvas.\n * See {@link https://github.com/fabricjs/fabric.js/wiki/When-to-call-setCoords} and {@link http://fabricjs.com/fabric-gotchas}\n */\n setCoords(): void {\n this.aCoords = this.calcACoords();\n }\n\n transformMatrixKey(skipGroup = false): number[] {\n let prefix: number[] = [];\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup);\n }\n prefix.push(\n this.top,\n this.left,\n this.width,\n this.height,\n this.scaleX,\n this.scaleY,\n this.angle,\n this.strokeWidth,\n this.skewX,\n this.skewY,\n +this.flipX,\n +this.flipY,\n resolveOrigin(this.originX),\n resolveOrigin(this.originY)\n );\n\n return prefix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * There are some situation in which this is useful to avoid the fake rotation.\n * @return {TMat2D} transform matrix for the object\n */\n calcTransformMatrix(skipGroup = false): TMat2D {\n let matrix = this.calcOwnMatrix();\n if (skipGroup || !this.group) {\n return matrix;\n }\n const key = this.transformMatrixKey(skipGroup),\n cache = this.matrixCache;\n if (cache && cache.key.every((x, i) => x === key[i])) {\n return cache.value;\n }\n if (this.group) {\n matrix = multiplyTransformMatrices(\n this.group.calcTransformMatrix(false),\n matrix\n );\n }\n this.matrixCache = {\n key,\n value: matrix,\n };\n return matrix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {TMat2D} transform matrix for the object\n */\n calcOwnMatrix(): TMat2D {\n const key = this.transformMatrixKey(true),\n cache = this.ownMatrixCache;\n if (cache && cache.key === key) {\n return cache.value;\n }\n const center = this.getRelativeCenterPoint(),\n options = {\n angle: this.angle,\n translateX: center.x,\n translateY: center.y,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: this.skewX,\n skewY: this.skewY,\n flipX: this.flipX,\n flipY: this.flipY,\n },\n value = composeMatrix(options);\n this.ownMatrixCache = {\n key,\n value,\n };\n return value;\n }\n\n /**\n * Calculate object dimensions from its properties\n * @private\n * @returns {Point} dimensions\n */\n _getNonTransformedDimensions(): Point {\n return new Point(this.width, this.height).scalarAdd(this.strokeWidth);\n }\n\n /**\n * Calculate object dimensions for controls box, including padding and canvas zoom.\n * and active selection\n * @private\n * @param {object} [options] transform options\n * @returns {Point} dimensions\n */\n _calculateCurrentDimensions(options?: any): Point {\n return this._getTransformedDimensions(options)\n .transform(this.getViewportTransform(), true)\n .scalarAdd(2 * this.padding);\n }\n}\n"],"names":["ObjectGeometry","ObjectOrigin","getX","this","getXY","x","setX","value","setXY","getY","y","setY","getRelativeX","left","setRelativeX","getRelativeY","top","setRelativeY","relativePosition","getRelativeXY","group","transformPoint","calcTransformMatrix","point","originX","originY","invertTransform","setRelativeXY","Point","arguments","length","undefined","setPositionByOrigin","isStrokeAccountedForInDimensions","getCoords","tl","tr","br","bl","aCoords","calcACoords","coords","t","map","p","intersectsWithRect","Intersection","intersectPolygonRectangle","status","intersectsWithObject","other","intersection","intersectPolygonPolygon","isContainedWithinObject","every","containsPoint","isContainedWithinRect","width","height","getBoundingRect","isOverlapping","isPointInPolygon","isOnScreen","canvas","vptCoords","some","midPointFrom","isPartiallyOnScreen","makeBoundingBoxFromPoints","getScaledWidth","_getTransformedDimensions","getScaledHeight","scale","_set","SCALE_X","SCALE_Y","setCoords","scaleToWidth","boundingRectFactor","scaleToHeight","getCanvasRetinaScaling","_this$canvas","getRetinaScaling","getTotalAngle","radiansToDegrees","calcPlaneRotation","angle","getViewportTransform","_this$canvas2","viewportTransform","iMatrix","concat","rotateMatrix","createRotateMatrix","getRelativeCenterPoint","tMatrix","createTranslateMatrix","finalMatrix","multiplyTransformMatrices","dim","w","h","transformMatrixKey","skipGroup","prefix","push","scaleX","scaleY","strokeWidth","skewX","skewY","flipX","flipY","resolveOrigin","matrix","calcOwnMatrix","key","cache","matrixCache","i","ownMatrixCache","center","options","translateX","translateY","composeMatrix","_getNonTransformedDimensions","scalarAdd","_calculateCurrentDimensions","transform","padding"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { iMatrix } from '../../constants.mjs';
1
+ import { SCALE_X, SCALE_Y, iMatrix } from '../../constants.mjs';
2
2
  import { Intersection } from '../../Intersection.mjs';
3
3
  import { Point } from '../../Point.mjs';
4
4
  import { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints.mjs';
@@ -293,8 +293,8 @@ class ObjectGeometry extends ObjectOrigin {
293
293
  * @return {void}
294
294
  */
295
295
  scale(value) {
296
- this._set('scaleX', value);
297
- this._set('scaleY', value);
296
+ this._set(SCALE_X, value);
297
+ this._set(SCALE_Y, value);
298
298
  this.setCoords();
299
299
  }
300
300
 
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGeometry.mjs","sources":["../../../../src/shapes/Object/ObjectGeometry.ts"],"sourcesContent":["import type {\n TBBox,\n TCornerPoint,\n TDegree,\n TMat2D,\n TOriginX,\n TOriginY,\n} from '../../typedefs';\nimport { iMatrix } from '../../constants';\nimport { Intersection } from '../../Intersection';\nimport { Point } from '../../Point';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n createRotateMatrix,\n createTranslateMatrix,\n composeMatrix,\n invertTransform,\n multiplyTransformMatrices,\n transformPoint,\n calcPlaneRotation,\n} from '../../util/misc/matrix';\nimport { radiansToDegrees } from '../../util/misc/radiansDegreesConversion';\nimport type { Canvas } from '../../canvas/Canvas';\nimport type { StaticCanvas } from '../../canvas/StaticCanvas';\nimport { ObjectOrigin } from './ObjectOrigin';\nimport type { ObjectEvents } from '../../EventTypeDefs';\nimport type { ControlProps } from './types/ControlProps';\nimport { resolveOrigin } from '../../util/misc/resolveOrigin';\n\ntype TMatrixCache = {\n key: number[];\n value: TMat2D;\n};\n\ntype TACoords = TCornerPoint;\n\nexport class ObjectGeometry<EventSpec extends ObjectEvents = ObjectEvents>\n extends ObjectOrigin<EventSpec>\n implements Pick<ControlProps, 'padding'>\n{\n declare padding: number;\n\n /**\n * Describe object's corner position in scene coordinates.\n * The coordinates are derived from the following:\n * left, top, width, height, scaleX, scaleY, skewX, skewY, angle, strokeWidth.\n * The coordinates do not depend on viewport changes.\n * The coordinates get updated with {@link setCoords}.\n * You can calculate them without updating with {@link calcACoords()}\n */\n declare aCoords: TACoords;\n\n /**\n * storage cache for object transform matrix\n */\n declare ownMatrixCache?: TMatrixCache;\n\n /**\n * storage cache for object full transform matrix\n */\n declare matrixCache?: TMatrixCache;\n\n /**\n * A Reference of the Canvas where the object is actually added\n * @type StaticCanvas | Canvas;\n * @default undefined\n * @private\n */\n declare canvas?: StaticCanvas | Canvas;\n\n /**\n * @returns {number} x position according to object's {@link originX} property in canvas coordinate plane\n */\n getX(): number {\n return this.getXY().x;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in canvas coordinate plane\n */\n setX(value: number) {\n this.setXY(this.getXY().setX(value));\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in canvas coordinate plane\n */\n getY(): number {\n return this.getXY().y;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in canvas coordinate plane\n */\n setY(value: number) {\n this.setXY(this.getXY().setY(value));\n }\n\n /**\n * @returns {number} x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getX}\n */\n getRelativeX(): number {\n return this.left;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this method is identical to {@link setX}\n */\n setRelativeX(value: number) {\n this.left = value;\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getY}\n */\n getRelativeY(): number {\n return this.top;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link setY}\n */\n setRelativeY(value: number) {\n this.top = value;\n }\n\n /**\n * @returns {Point} x position according to object's {@link originX} {@link originY} properties in canvas coordinate plane\n */\n getXY(): Point {\n const relativePosition = this.getRelativeXY();\n return this.group\n ? transformPoint(relativePosition, this.group.calcTransformMatrix())\n : relativePosition;\n }\n\n /**\n * Set an object position to a particular point, the point is intended in absolute ( canvas ) coordinate.\n * You can specify {@link originX} and {@link originY} values,\n * that otherwise are the object's current values.\n * @example <caption>Set object's bottom left corner to point (5,5) on canvas</caption>\n * object.setXY(new Point(5, 5), 'left', 'bottom').\n * @param {Point} point position in canvas coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setXY(point: Point, originX?: TOriginX, originY?: TOriginY) {\n if (this.group) {\n point = transformPoint(\n point,\n invertTransform(this.group.calcTransformMatrix())\n );\n }\n this.setRelativeXY(point, originX, originY);\n }\n\n /**\n * @returns {Point} x,y position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n */\n getRelativeXY(): Point {\n return new Point(this.left, this.top);\n }\n\n /**\n * As {@link setXY}, but in current parent's coordinate plane (the current group if any or the canvas)\n * @param {Point} point position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setRelativeXY(\n point: Point,\n originX: TOriginX = this.originX,\n originY: TOriginY = this.originY\n ) {\n this.setPositionByOrigin(point, originX, originY);\n }\n\n /**\n * @deprecated intermidiate method to be removed, do not use\n */\n protected isStrokeAccountedForInDimensions() {\n return false;\n }\n\n /**\n * @return {Point[]} [tl, tr, br, bl] in the scene plane\n */\n getCoords(): Point[] {\n const { tl, tr, br, bl } =\n this.aCoords || (this.aCoords = this.calcACoords());\n const coords = [tl, tr, br, bl];\n if (this.group) {\n const t = this.group.calcTransformMatrix();\n return coords.map((p) => transformPoint(p, t));\n }\n return coords;\n }\n\n /**\n * Checks if object intersects with the scene rect formed by {@link tl} and {@link br}\n */\n intersectsWithRect(tl: Point, br: Point): boolean {\n const intersection = Intersection.intersectPolygonRectangle(\n this.getCoords(),\n tl,\n br\n );\n return intersection.status === 'Intersection';\n }\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject(other: ObjectGeometry): boolean {\n const intersection = Intersection.intersectPolygonPolygon(\n this.getCoords(),\n other.getCoords()\n );\n\n return (\n intersection.status === 'Intersection' ||\n intersection.status === 'Coincident' ||\n other.isContainedWithinObject(this) ||\n this.isContainedWithinObject(other)\n );\n }\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject(other: ObjectGeometry): boolean {\n const points = this.getCoords();\n return points.every((point) => other.containsPoint(point));\n }\n\n /**\n * Checks if object is fully contained within the scene rect formed by {@link tl} and {@link br}\n */\n isContainedWithinRect(tl: Point, br: Point): boolean {\n const { left, top, width, height } = this.getBoundingRect();\n return (\n left >= tl.x &&\n left + width <= br.x &&\n top >= tl.y &&\n top + height <= br.y\n );\n }\n\n isOverlapping<T extends ObjectGeometry>(other: T): boolean {\n return (\n this.intersectsWithObject(other) ||\n this.isContainedWithinObject(other) ||\n other.isContainedWithinObject(this)\n );\n }\n\n /**\n * Checks if point is inside the object\n * @param {Point} point Point to check against\n * @return {Boolean} true if point is inside the object\n */\n containsPoint(point: Point): boolean {\n return Intersection.isPointInPolygon(point, this.getCoords());\n }\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n const points = this.getCoords();\n // if some point is on screen, the object is on screen.\n if (\n points.some(\n (point) =>\n point.x <= br.x &&\n point.x >= tl.x &&\n point.y <= br.y &&\n point.y >= tl.y\n )\n ) {\n return true;\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n // check if the object is so big that it contains the entire viewport\n return this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n const allPointsAreOutside = this.getCoords().every(\n (point) =>\n (point.x >= br.x || point.x <= tl.x) &&\n (point.y >= br.y || point.y <= tl.y)\n );\n // check if the object is so big that it contains the entire viewport\n return allPointsAreOutside && this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect(): TBBox {\n return makeBoundingBoxFromPoints(this.getCoords());\n }\n\n /**\n * Returns width of an object's bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} width value\n */\n getScaledWidth(): number {\n return this._getTransformedDimensions().x;\n }\n\n /**\n * Returns height of an object bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} height value\n */\n getScaledHeight(): number {\n return this._getTransformedDimensions().y;\n }\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {void}\n */\n scale(value: number): void {\n this._set('scaleX', value);\n this._set('scaleY', value);\n this.setCoords();\n }\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @return {void}\n */\n scaleToWidth(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n }\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @return {void}\n */\n scaleToHeight(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n }\n\n getCanvasRetinaScaling() {\n return this.canvas?.getRetinaScaling() || 1;\n }\n\n /**\n * Returns the object angle relative to canvas counting also the group property\n * @returns {TDegree}\n */\n getTotalAngle(): TDegree {\n return this.group\n ? radiansToDegrees(calcPlaneRotation(this.calcTransformMatrix()))\n : this.angle;\n }\n\n /**\n * Retrieves viewportTransform from Object's canvas if available\n * @return {TMat2D}\n */\n getViewportTransform(): TMat2D {\n return this.canvas?.viewportTransform || (iMatrix.concat() as TMat2D);\n }\n\n /**\n * Calculates the coordinates of the 4 corner of the bbox, in absolute coordinates.\n * those never change with zoom or viewport changes.\n * @return {TCornerPoint}\n */\n calcACoords(): TCornerPoint {\n const rotateMatrix = createRotateMatrix({ angle: this.angle }),\n { x, y } = this.getRelativeCenterPoint(),\n tMatrix = createTranslateMatrix(x, y),\n finalMatrix = multiplyTransformMatrices(tMatrix, rotateMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2,\n h = dim.y / 2;\n return {\n // corners\n tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n tr: transformPoint({ x: w, y: -h }, finalMatrix),\n bl: transformPoint({ x: -w, y: h }, finalMatrix),\n br: transformPoint({ x: w, y: h }, finalMatrix),\n };\n }\n\n /**\n * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n * aCoords are used to quickly find an object on the canvas.\n * See {@link https://github.com/fabricjs/fabric.js/wiki/When-to-call-setCoords} and {@link http://fabricjs.com/fabric-gotchas}\n */\n setCoords(): void {\n this.aCoords = this.calcACoords();\n }\n\n transformMatrixKey(skipGroup = false): number[] {\n let prefix: number[] = [];\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup);\n }\n prefix.push(\n this.top,\n this.left,\n this.width,\n this.height,\n this.scaleX,\n this.scaleY,\n this.angle,\n this.strokeWidth,\n this.skewX,\n this.skewY,\n +this.flipX,\n +this.flipY,\n resolveOrigin(this.originX),\n resolveOrigin(this.originY)\n );\n\n return prefix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * There are some situation in which this is useful to avoid the fake rotation.\n * @return {TMat2D} transform matrix for the object\n */\n calcTransformMatrix(skipGroup = false): TMat2D {\n let matrix = this.calcOwnMatrix();\n if (skipGroup || !this.group) {\n return matrix;\n }\n const key = this.transformMatrixKey(skipGroup),\n cache = this.matrixCache;\n if (cache && cache.key.every((x, i) => x === key[i])) {\n return cache.value;\n }\n if (this.group) {\n matrix = multiplyTransformMatrices(\n this.group.calcTransformMatrix(false),\n matrix\n );\n }\n this.matrixCache = {\n key,\n value: matrix,\n };\n return matrix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {TMat2D} transform matrix for the object\n */\n calcOwnMatrix(): TMat2D {\n const key = this.transformMatrixKey(true),\n cache = this.ownMatrixCache;\n if (cache && cache.key === key) {\n return cache.value;\n }\n const center = this.getRelativeCenterPoint(),\n options = {\n angle: this.angle,\n translateX: center.x,\n translateY: center.y,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: this.skewX,\n skewY: this.skewY,\n flipX: this.flipX,\n flipY: this.flipY,\n },\n value = composeMatrix(options);\n this.ownMatrixCache = {\n key,\n value,\n };\n return value;\n }\n\n /**\n * Calculate object dimensions from its properties\n * @private\n * @returns {Point} dimensions\n */\n _getNonTransformedDimensions(): Point {\n return new Point(this.width, this.height).scalarAdd(this.strokeWidth);\n }\n\n /**\n * Calculate object dimensions for controls box, including padding and canvas zoom.\n * and active selection\n * @private\n * @param {object} [options] transform options\n * @returns {Point} dimensions\n */\n _calculateCurrentDimensions(options?: any): Point {\n return this._getTransformedDimensions(options)\n .transform(this.getViewportTransform(), true)\n .scalarAdd(2 * this.padding);\n }\n}\n"],"names":["ObjectGeometry","ObjectOrigin","getX","getXY","x","setX","value","setXY","getY","y","setY","getRelativeX","left","setRelativeX","getRelativeY","top","setRelativeY","relativePosition","getRelativeXY","group","transformPoint","calcTransformMatrix","point","originX","originY","invertTransform","setRelativeXY","Point","arguments","length","undefined","setPositionByOrigin","isStrokeAccountedForInDimensions","getCoords","tl","tr","br","bl","aCoords","calcACoords","coords","t","map","p","intersectsWithRect","intersection","Intersection","intersectPolygonRectangle","status","intersectsWithObject","other","intersectPolygonPolygon","isContainedWithinObject","points","every","containsPoint","isContainedWithinRect","width","height","getBoundingRect","isOverlapping","isPointInPolygon","isOnScreen","canvas","vptCoords","some","midPointFrom","isPartiallyOnScreen","allPointsAreOutside","makeBoundingBoxFromPoints","getScaledWidth","_getTransformedDimensions","getScaledHeight","scale","_set","setCoords","scaleToWidth","boundingRectFactor","scaleToHeight","getCanvasRetinaScaling","_this$canvas","getRetinaScaling","getTotalAngle","radiansToDegrees","calcPlaneRotation","angle","getViewportTransform","_this$canvas2","viewportTransform","iMatrix","concat","rotateMatrix","createRotateMatrix","getRelativeCenterPoint","tMatrix","createTranslateMatrix","finalMatrix","multiplyTransformMatrices","dim","w","h","transformMatrixKey","skipGroup","prefix","push","scaleX","scaleY","strokeWidth","skewX","skewY","flipX","flipY","resolveOrigin","matrix","calcOwnMatrix","key","cache","matrixCache","i","ownMatrixCache","center","options","translateX","translateY","composeMatrix","_getNonTransformedDimensions","scalarAdd","_calculateCurrentDimensions","transform","padding"],"mappings":"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"}
1
+ {"version":3,"file":"ObjectGeometry.mjs","sources":["../../../../src/shapes/Object/ObjectGeometry.ts"],"sourcesContent":["import type {\n TBBox,\n TCornerPoint,\n TDegree,\n TMat2D,\n TOriginX,\n TOriginY,\n} from '../../typedefs';\nimport { SCALE_X, SCALE_Y, iMatrix } from '../../constants';\nimport { Intersection } from '../../Intersection';\nimport { Point } from '../../Point';\nimport { makeBoundingBoxFromPoints } from '../../util/misc/boundingBoxFromPoints';\nimport {\n createRotateMatrix,\n createTranslateMatrix,\n composeMatrix,\n invertTransform,\n multiplyTransformMatrices,\n transformPoint,\n calcPlaneRotation,\n} from '../../util/misc/matrix';\nimport { radiansToDegrees } from '../../util/misc/radiansDegreesConversion';\nimport type { Canvas } from '../../canvas/Canvas';\nimport type { StaticCanvas } from '../../canvas/StaticCanvas';\nimport { ObjectOrigin } from './ObjectOrigin';\nimport type { ObjectEvents } from '../../EventTypeDefs';\nimport type { ControlProps } from './types/ControlProps';\nimport { resolveOrigin } from '../../util/misc/resolveOrigin';\n\ntype TMatrixCache = {\n key: number[];\n value: TMat2D;\n};\n\ntype TACoords = TCornerPoint;\n\nexport class ObjectGeometry<EventSpec extends ObjectEvents = ObjectEvents>\n extends ObjectOrigin<EventSpec>\n implements Pick<ControlProps, 'padding'>\n{\n declare padding: number;\n\n /**\n * Describe object's corner position in scene coordinates.\n * The coordinates are derived from the following:\n * left, top, width, height, scaleX, scaleY, skewX, skewY, angle, strokeWidth.\n * The coordinates do not depend on viewport changes.\n * The coordinates get updated with {@link setCoords}.\n * You can calculate them without updating with {@link calcACoords()}\n */\n declare aCoords: TACoords;\n\n /**\n * storage cache for object transform matrix\n */\n declare ownMatrixCache?: TMatrixCache;\n\n /**\n * storage cache for object full transform matrix\n */\n declare matrixCache?: TMatrixCache;\n\n /**\n * A Reference of the Canvas where the object is actually added\n * @type StaticCanvas | Canvas;\n * @default undefined\n * @private\n */\n declare canvas?: StaticCanvas | Canvas;\n\n /**\n * @returns {number} x position according to object's {@link originX} property in canvas coordinate plane\n */\n getX(): number {\n return this.getXY().x;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in canvas coordinate plane\n */\n setX(value: number) {\n this.setXY(this.getXY().setX(value));\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in canvas coordinate plane\n */\n getY(): number {\n return this.getXY().y;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in canvas coordinate plane\n */\n setY(value: number) {\n this.setXY(this.getXY().setY(value));\n }\n\n /**\n * @returns {number} x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getX}\n */\n getRelativeX(): number {\n return this.left;\n }\n\n /**\n * @param {number} value x position according to object's {@link originX} property in parent's coordinate plane\\\n * if parent is canvas then this method is identical to {@link setX}\n */\n setRelativeX(value: number) {\n this.left = value;\n }\n\n /**\n * @returns {number} y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link getY}\n */\n getRelativeY(): number {\n return this.top;\n }\n\n /**\n * @param {number} value y position according to object's {@link originY} property in parent's coordinate plane\\\n * if parent is canvas then this property is identical to {@link setY}\n */\n setRelativeY(value: number) {\n this.top = value;\n }\n\n /**\n * @returns {Point} x position according to object's {@link originX} {@link originY} properties in canvas coordinate plane\n */\n getXY(): Point {\n const relativePosition = this.getRelativeXY();\n return this.group\n ? transformPoint(relativePosition, this.group.calcTransformMatrix())\n : relativePosition;\n }\n\n /**\n * Set an object position to a particular point, the point is intended in absolute ( canvas ) coordinate.\n * You can specify {@link originX} and {@link originY} values,\n * that otherwise are the object's current values.\n * @example <caption>Set object's bottom left corner to point (5,5) on canvas</caption>\n * object.setXY(new Point(5, 5), 'left', 'bottom').\n * @param {Point} point position in canvas coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setXY(point: Point, originX?: TOriginX, originY?: TOriginY) {\n if (this.group) {\n point = transformPoint(\n point,\n invertTransform(this.group.calcTransformMatrix())\n );\n }\n this.setRelativeXY(point, originX, originY);\n }\n\n /**\n * @returns {Point} x,y position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n */\n getRelativeXY(): Point {\n return new Point(this.left, this.top);\n }\n\n /**\n * As {@link setXY}, but in current parent's coordinate plane (the current group if any or the canvas)\n * @param {Point} point position according to object's {@link originX} {@link originY} properties in parent's coordinate plane\n * @param {TOriginX} [originX] Horizontal origin: 'left', 'center' or 'right'\n * @param {TOriginY} [originY] Vertical origin: 'top', 'center' or 'bottom'\n */\n setRelativeXY(\n point: Point,\n originX: TOriginX = this.originX,\n originY: TOriginY = this.originY\n ) {\n this.setPositionByOrigin(point, originX, originY);\n }\n\n /**\n * @deprecated intermidiate method to be removed, do not use\n */\n protected isStrokeAccountedForInDimensions() {\n return false;\n }\n\n /**\n * @return {Point[]} [tl, tr, br, bl] in the scene plane\n */\n getCoords(): Point[] {\n const { tl, tr, br, bl } =\n this.aCoords || (this.aCoords = this.calcACoords());\n const coords = [tl, tr, br, bl];\n if (this.group) {\n const t = this.group.calcTransformMatrix();\n return coords.map((p) => transformPoint(p, t));\n }\n return coords;\n }\n\n /**\n * Checks if object intersects with the scene rect formed by {@link tl} and {@link br}\n */\n intersectsWithRect(tl: Point, br: Point): boolean {\n const intersection = Intersection.intersectPolygonRectangle(\n this.getCoords(),\n tl,\n br\n );\n return intersection.status === 'Intersection';\n }\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject(other: ObjectGeometry): boolean {\n const intersection = Intersection.intersectPolygonPolygon(\n this.getCoords(),\n other.getCoords()\n );\n\n return (\n intersection.status === 'Intersection' ||\n intersection.status === 'Coincident' ||\n other.isContainedWithinObject(this) ||\n this.isContainedWithinObject(other)\n );\n }\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject(other: ObjectGeometry): boolean {\n const points = this.getCoords();\n return points.every((point) => other.containsPoint(point));\n }\n\n /**\n * Checks if object is fully contained within the scene rect formed by {@link tl} and {@link br}\n */\n isContainedWithinRect(tl: Point, br: Point): boolean {\n const { left, top, width, height } = this.getBoundingRect();\n return (\n left >= tl.x &&\n left + width <= br.x &&\n top >= tl.y &&\n top + height <= br.y\n );\n }\n\n isOverlapping<T extends ObjectGeometry>(other: T): boolean {\n return (\n this.intersectsWithObject(other) ||\n this.isContainedWithinObject(other) ||\n other.isContainedWithinObject(this)\n );\n }\n\n /**\n * Checks if point is inside the object\n * @param {Point} point Point to check against\n * @return {Boolean} true if point is inside the object\n */\n containsPoint(point: Point): boolean {\n return Intersection.isPointInPolygon(point, this.getCoords());\n }\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n const points = this.getCoords();\n // if some point is on screen, the object is on screen.\n if (\n points.some(\n (point) =>\n point.x <= br.x &&\n point.x >= tl.x &&\n point.y <= br.y &&\n point.y >= tl.y\n )\n ) {\n return true;\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n // check if the object is so big that it contains the entire viewport\n return this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen(): boolean {\n if (!this.canvas) {\n return false;\n }\n const { tl, br } = this.canvas.vptCoords;\n if (this.intersectsWithRect(tl, br)) {\n return true;\n }\n const allPointsAreOutside = this.getCoords().every(\n (point) =>\n (point.x >= br.x || point.x <= tl.x) &&\n (point.y >= br.y || point.y <= tl.y)\n );\n // check if the object is so big that it contains the entire viewport\n return allPointsAreOutside && this.containsPoint(tl.midPointFrom(br));\n }\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect(): TBBox {\n return makeBoundingBoxFromPoints(this.getCoords());\n }\n\n /**\n * Returns width of an object's bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} width value\n */\n getScaledWidth(): number {\n return this._getTransformedDimensions().x;\n }\n\n /**\n * Returns height of an object bounding box counting transformations\n * @todo shouldn't this account for group transform and return the actual size in canvas coordinate plane?\n * @return {Number} height value\n */\n getScaledHeight(): number {\n return this._getTransformedDimensions().y;\n }\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {void}\n */\n scale(value: number): void {\n this._set(SCALE_X, value);\n this._set(SCALE_Y, value);\n this.setCoords();\n }\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @return {void}\n */\n scaleToWidth(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n }\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @return {void}\n */\n scaleToHeight(value: number) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n const boundingRectFactor =\n this.getBoundingRect().height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n }\n\n getCanvasRetinaScaling() {\n return this.canvas?.getRetinaScaling() || 1;\n }\n\n /**\n * Returns the object angle relative to canvas counting also the group property\n * @returns {TDegree}\n */\n getTotalAngle(): TDegree {\n return this.group\n ? radiansToDegrees(calcPlaneRotation(this.calcTransformMatrix()))\n : this.angle;\n }\n\n /**\n * Retrieves viewportTransform from Object's canvas if available\n * @return {TMat2D}\n */\n getViewportTransform(): TMat2D {\n return this.canvas?.viewportTransform || (iMatrix.concat() as TMat2D);\n }\n\n /**\n * Calculates the coordinates of the 4 corner of the bbox, in absolute coordinates.\n * those never change with zoom or viewport changes.\n * @return {TCornerPoint}\n */\n calcACoords(): TCornerPoint {\n const rotateMatrix = createRotateMatrix({ angle: this.angle }),\n { x, y } = this.getRelativeCenterPoint(),\n tMatrix = createTranslateMatrix(x, y),\n finalMatrix = multiplyTransformMatrices(tMatrix, rotateMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2,\n h = dim.y / 2;\n return {\n // corners\n tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n tr: transformPoint({ x: w, y: -h }, finalMatrix),\n bl: transformPoint({ x: -w, y: h }, finalMatrix),\n br: transformPoint({ x: w, y: h }, finalMatrix),\n };\n }\n\n /**\n * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n * aCoords are used to quickly find an object on the canvas.\n * See {@link https://github.com/fabricjs/fabric.js/wiki/When-to-call-setCoords} and {@link http://fabricjs.com/fabric-gotchas}\n */\n setCoords(): void {\n this.aCoords = this.calcACoords();\n }\n\n transformMatrixKey(skipGroup = false): number[] {\n let prefix: number[] = [];\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup);\n }\n prefix.push(\n this.top,\n this.left,\n this.width,\n this.height,\n this.scaleX,\n this.scaleY,\n this.angle,\n this.strokeWidth,\n this.skewX,\n this.skewY,\n +this.flipX,\n +this.flipY,\n resolveOrigin(this.originX),\n resolveOrigin(this.originY)\n );\n\n return prefix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * There are some situation in which this is useful to avoid the fake rotation.\n * @return {TMat2D} transform matrix for the object\n */\n calcTransformMatrix(skipGroup = false): TMat2D {\n let matrix = this.calcOwnMatrix();\n if (skipGroup || !this.group) {\n return matrix;\n }\n const key = this.transformMatrixKey(skipGroup),\n cache = this.matrixCache;\n if (cache && cache.key.every((x, i) => x === key[i])) {\n return cache.value;\n }\n if (this.group) {\n matrix = multiplyTransformMatrices(\n this.group.calcTransformMatrix(false),\n matrix\n );\n }\n this.matrixCache = {\n key,\n value: matrix,\n };\n return matrix;\n }\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {TMat2D} transform matrix for the object\n */\n calcOwnMatrix(): TMat2D {\n const key = this.transformMatrixKey(true),\n cache = this.ownMatrixCache;\n if (cache && cache.key === key) {\n return cache.value;\n }\n const center = this.getRelativeCenterPoint(),\n options = {\n angle: this.angle,\n translateX: center.x,\n translateY: center.y,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: this.skewX,\n skewY: this.skewY,\n flipX: this.flipX,\n flipY: this.flipY,\n },\n value = composeMatrix(options);\n this.ownMatrixCache = {\n key,\n value,\n };\n return value;\n }\n\n /**\n * Calculate object dimensions from its properties\n * @private\n * @returns {Point} dimensions\n */\n _getNonTransformedDimensions(): Point {\n return new Point(this.width, this.height).scalarAdd(this.strokeWidth);\n }\n\n /**\n * Calculate object dimensions for controls box, including padding and canvas zoom.\n * and active selection\n * @private\n * @param {object} [options] transform options\n * @returns {Point} dimensions\n */\n _calculateCurrentDimensions(options?: any): Point {\n return this._getTransformedDimensions(options)\n .transform(this.getViewportTransform(), true)\n .scalarAdd(2 * this.padding);\n }\n}\n"],"names":["ObjectGeometry","ObjectOrigin","getX","getXY","x","setX","value","setXY","getY","y","setY","getRelativeX","left","setRelativeX","getRelativeY","top","setRelativeY","relativePosition","getRelativeXY","group","transformPoint","calcTransformMatrix","point","originX","originY","invertTransform","setRelativeXY","Point","arguments","length","undefined","setPositionByOrigin","isStrokeAccountedForInDimensions","getCoords","tl","tr","br","bl","aCoords","calcACoords","coords","t","map","p","intersectsWithRect","intersection","Intersection","intersectPolygonRectangle","status","intersectsWithObject","other","intersectPolygonPolygon","isContainedWithinObject","points","every","containsPoint","isContainedWithinRect","width","height","getBoundingRect","isOverlapping","isPointInPolygon","isOnScreen","canvas","vptCoords","some","midPointFrom","isPartiallyOnScreen","allPointsAreOutside","makeBoundingBoxFromPoints","getScaledWidth","_getTransformedDimensions","getScaledHeight","scale","_set","SCALE_X","SCALE_Y","setCoords","scaleToWidth","boundingRectFactor","scaleToHeight","getCanvasRetinaScaling","_this$canvas","getRetinaScaling","getTotalAngle","radiansToDegrees","calcPlaneRotation","angle","getViewportTransform","_this$canvas2","viewportTransform","iMatrix","concat","rotateMatrix","createRotateMatrix","getRelativeCenterPoint","tMatrix","createTranslateMatrix","finalMatrix","multiplyTransformMatrices","dim","w","h","transformMatrixKey","skipGroup","prefix","push","scaleX","scaleY","strokeWidth","skewX","skewY","flipX","flipY","resolveOrigin","matrix","calcOwnMatrix","key","cache","matrixCache","i","ownMatrixCache","center","options","translateX","translateY","composeMatrix","_getNonTransformedDimensions","scalarAdd","_calculateCurrentDimensions","transform","padding"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defaultValues.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/defaultValues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAEF,eAAO,MAAM,eAAe,UAe3B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,gBAAgB,CAAC,YAAY,CAAC,CA2CtB,CAAC;AAEX,eAAO,MAAM,8BAA8B,EAAE,OAAO,CAClD,gBAAgB,CAAC,uBAAuB,CAAC,CA+B1C,CAAC"}
1
+ {"version":3,"file":"defaultValues.d.ts","sourceRoot":"","sources":["../../../../src/shapes/Object/defaultValues.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,eAAO,MAAM,eAAe,UAgB3B,CAAC;AAEF,eAAO,MAAM,eAAe,UAe3B,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,OAAO,CAC7C,gBAAgB,CAAC,YAAY,CAAC,CA2CtB,CAAC;AAEX,eAAO,MAAM,8BAA8B,EAAE,OAAO,CAClD,gBAAgB,CAAC,uBAAuB,CAAC,CA+B1C,CAAC"}
@@ -1,2 +1,2 @@
1
- import{TOP as e,LEFT as o}from"../../constants.min.mjs";const r=[e,o,"scaleX","scaleY","flipX","flipY","originX","originY","angle","opacity","globalCompositeOperation","shadow","visible","skewX","skewY"],i=["fill","stroke","strokeWidth","strokeDashArray","width","height","paintFirst","strokeUniform","strokeLineCap","strokeDashOffset","strokeLineJoin","strokeMiterLimit","backgroundColor","clipPath"],t={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:o,originY:e,strokeWidth:1,strokeUniform:!1,padding:0,opacity:1,paintFirst:"fill",fill:"rgb(0,0,0)",fillRule:"nonzero",stroke:null,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,globalCompositeOperation:"source-over",backgroundColor:"",shadow:null,visible:!0,includeDefaultValues:!0,excludeFromExport:!1,objectCaching:!0,clipPath:void 0,inverted:!1,absolutePositioned:!1,centeredRotation:!0,centeredScaling:!1,dirty:!0},l={noScaleCache:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,cornerSize:13,touchCornerSize:24,transparentCorners:!0,cornerColor:"rgb(178,204,255)",cornerStrokeColor:"",cornerStyle:"rect",cornerDashArray:null,hasControls:!0,borderColor:"rgb(178,204,255)",borderDashArray:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,hasBorders:!0,selectionBackgroundColor:"",selectable:!0,evented:!0,perPixelTargetFind:!1,activeOn:"down",hoverCursor:null,moveCursor:null};export{i as cacheProperties,t as fabricObjectDefaultValues,l as interactiveObjectDefaultValues,r as stateProperties};
1
+ import{TOP as o,LEFT as e,SCALE_X as r,SCALE_Y as i,SKEW_X as t,SKEW_Y as n,FILL as l,STROKE as a}from"../../constants.min.mjs";const s=[o,e,r,i,"flipX","flipY","originX","originY","angle","opacity","globalCompositeOperation","shadow","visible",t,n],c=[l,a,"strokeWidth","strokeDashArray","width","height","paintFirst","strokeUniform","strokeLineCap","strokeDashOffset","strokeLineJoin","strokeMiterLimit","backgroundColor","clipPath"],k={top:0,left:0,width:0,height:0,angle:0,flipX:!1,flipY:!1,scaleX:1,scaleY:1,minScaleLimit:0,skewX:0,skewY:0,originX:e,originY:o,strokeWidth:1,strokeUniform:!1,padding:0,opacity:1,paintFirst:l,fill:"rgb(0,0,0)",fillRule:"nonzero",stroke:null,strokeDashArray:null,strokeDashOffset:0,strokeLineCap:"butt",strokeLineJoin:"miter",strokeMiterLimit:4,globalCompositeOperation:"source-over",backgroundColor:"",shadow:null,visible:!0,includeDefaultValues:!0,excludeFromExport:!1,objectCaching:!0,clipPath:void 0,inverted:!1,absolutePositioned:!1,centeredRotation:!0,centeredScaling:!1,dirty:!0},d={noScaleCache:!0,lockMovementX:!1,lockMovementY:!1,lockRotation:!1,lockScalingX:!1,lockScalingY:!1,lockSkewingX:!1,lockSkewingY:!1,lockScalingFlip:!1,cornerSize:13,touchCornerSize:24,transparentCorners:!0,cornerColor:"rgb(178,204,255)",cornerStrokeColor:"",cornerStyle:"rect",cornerDashArray:null,hasControls:!0,borderColor:"rgb(178,204,255)",borderDashArray:null,borderOpacityWhenMoving:.4,borderScaleFactor:1,hasBorders:!0,selectionBackgroundColor:"",selectable:!0,evented:!0,perPixelTargetFind:!1,activeOn:"down",hoverCursor:null,moveCursor:null};export{c as cacheProperties,k as fabricObjectDefaultValues,d as interactiveObjectDefaultValues,s as stateProperties};
2
2
  //# sourceMappingURL=defaultValues.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"defaultValues.min.mjs","sources":["../../../../src/shapes/Object/defaultValues.ts"],"sourcesContent":["import { TOP, LEFT } from '../../constants';\nimport type { TClassProperties } from '../../typedefs';\nimport type { InteractiveFabricObject } from './InteractiveObject';\nimport type { FabricObject } from './Object';\n\nexport const stateProperties = [\n TOP,\n LEFT,\n 'scaleX',\n 'scaleY',\n 'flipX',\n 'flipY',\n 'originX',\n 'originY',\n 'angle',\n 'opacity',\n 'globalCompositeOperation',\n 'shadow',\n 'visible',\n 'skewX',\n 'skewY',\n];\n\nexport const cacheProperties = [\n 'fill',\n 'stroke',\n 'strokeWidth',\n 'strokeDashArray',\n 'width',\n 'height',\n 'paintFirst',\n 'strokeUniform',\n 'strokeLineCap',\n 'strokeDashOffset',\n 'strokeLineJoin',\n 'strokeMiterLimit',\n 'backgroundColor',\n 'clipPath',\n];\n\nexport const fabricObjectDefaultValues: Partial<\n TClassProperties<FabricObject>\n> = {\n // see composeMatrix() to see order of transforms. First defaults listed based on this\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n angle: 0,\n flipX: false,\n flipY: false,\n scaleX: 1,\n scaleY: 1,\n minScaleLimit: 0,\n skewX: 0,\n skewY: 0,\n originX: LEFT,\n originY: TOP,\n strokeWidth: 1,\n strokeUniform: false,\n padding: 0,\n opacity: 1,\n paintFirst: 'fill',\n fill: 'rgb(0,0,0)',\n fillRule: 'nonzero',\n stroke: null,\n strokeDashArray: null,\n strokeDashOffset: 0,\n strokeLineCap: 'butt',\n strokeLineJoin: 'miter',\n strokeMiterLimit: 4,\n globalCompositeOperation: 'source-over',\n backgroundColor: '',\n shadow: null,\n visible: true,\n includeDefaultValues: true,\n excludeFromExport: false,\n objectCaching: true,\n clipPath: undefined,\n inverted: false,\n absolutePositioned: false,\n centeredRotation: true,\n centeredScaling: false,\n dirty: true,\n} as const;\n\nexport const interactiveObjectDefaultValues: Partial<\n TClassProperties<InteractiveFabricObject>\n> = {\n noScaleCache: true,\n lockMovementX: false,\n lockMovementY: false,\n lockRotation: false,\n lockScalingX: false,\n lockScalingY: false,\n lockSkewingX: false,\n lockSkewingY: false,\n lockScalingFlip: false,\n cornerSize: 13,\n touchCornerSize: 24,\n transparentCorners: true,\n cornerColor: 'rgb(178,204,255)',\n cornerStrokeColor: '',\n cornerStyle: 'rect',\n cornerDashArray: null,\n hasControls: true,\n borderColor: 'rgb(178,204,255)',\n borderDashArray: null,\n borderOpacityWhenMoving: 0.4,\n borderScaleFactor: 1,\n hasBorders: true,\n selectionBackgroundColor: '',\n selectable: true,\n evented: true,\n perPixelTargetFind: false,\n activeOn: 'down',\n hoverCursor: null,\n moveCursor: null,\n};\n"],"names":["stateProperties","TOP","LEFT","cacheProperties","fabricObjectDefaultValues","top","left","width","height","angle","flipX","flipY","scaleX","scaleY","minScaleLimit","skewX","skewY","originX","originY","strokeWidth","strokeUniform","padding","opacity","paintFirst","fill","fillRule","stroke","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","globalCompositeOperation","backgroundColor","shadow","visible","includeDefaultValues","excludeFromExport","objectCaching","clipPath","undefined","inverted","absolutePositioned","centeredRotation","centeredScaling","dirty","interactiveObjectDefaultValues","noScaleCache","lockMovementX","lockMovementY","lockRotation","lockScalingX","lockScalingY","lockSkewingX","lockSkewingY","lockScalingFlip","cornerSize","touchCornerSize","transparentCorners","cornerColor","cornerStrokeColor","cornerStyle","cornerDashArray","hasControls","borderColor","borderDashArray","borderOpacityWhenMoving","borderScaleFactor","hasBorders","selectionBackgroundColor","selectable","evented","perPixelTargetFind","activeOn","hoverCursor","moveCursor"],"mappings":"wDAKaA,MAAAA,EAAkB,CAC7BC,EACAC,EACA,SACA,SACA,QACA,QACA,UACA,UACA,QACA,UACA,2BACA,SACA,UACA,QACA,SAGWC,EAAkB,CAC7B,OACA,SACA,cACA,kBACA,QACA,SACA,aACA,gBACA,gBACA,mBACA,iBACA,mBACA,kBACA,YAGWC,EAET,CAEFC,IAAK,EACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRC,MAAO,EACPC,OAAO,EACPC,OAAO,EACPC,OAAQ,EACRC,OAAQ,EACRC,cAAe,EACfC,MAAO,EACPC,MAAO,EACPC,QAASf,EACTgB,QAASjB,EACTkB,YAAa,EACbC,eAAe,EACfC,QAAS,EACTC,QAAS,EACTC,WAAY,OACZC,KAAM,aACNC,SAAU,UACVC,OAAQ,KACRC,gBAAiB,KACjBC,iBAAkB,EAClBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,EAClBC,yBAA0B,cAC1BC,gBAAiB,GACjBC,OAAQ,KACRC,SAAS,EACTC,sBAAsB,EACtBC,mBAAmB,EACnBC,eAAe,EACfC,cAAUC,EACVC,UAAU,EACVC,oBAAoB,EACpBC,kBAAkB,EAClBC,iBAAiB,EACjBC,OAAO,GAGIC,EAET,CACFC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,WAAY,GACZC,gBAAiB,GACjBC,oBAAoB,EACpBC,YAAa,mBACbC,kBAAmB,GACnBC,YAAa,OACbC,gBAAiB,KACjBC,aAAa,EACbC,YAAa,mBACbC,gBAAiB,KACjBC,wBAAyB,GACzBC,kBAAmB,EACnBC,YAAY,EACZC,yBAA0B,GAC1BC,YAAY,EACZC,SAAS,EACTC,oBAAoB,EACpBC,SAAU,OACVC,YAAa,KACbC,WAAY"}
1
+ {"version":3,"file":"defaultValues.min.mjs","sources":["../../../../src/shapes/Object/defaultValues.ts"],"sourcesContent":["import {\n TOP,\n LEFT,\n SCALE_Y,\n SCALE_X,\n SKEW_X,\n SKEW_Y,\n FILL,\n STROKE,\n} from '../../constants';\nimport type { TClassProperties } from '../../typedefs';\nimport type { InteractiveFabricObject } from './InteractiveObject';\nimport type { FabricObject } from './Object';\n\nexport const stateProperties = [\n TOP,\n LEFT,\n SCALE_X,\n SCALE_Y,\n 'flipX',\n 'flipY',\n 'originX',\n 'originY',\n 'angle',\n 'opacity',\n 'globalCompositeOperation',\n 'shadow',\n 'visible',\n SKEW_X,\n SKEW_Y,\n];\n\nexport const cacheProperties = [\n FILL,\n STROKE,\n 'strokeWidth',\n 'strokeDashArray',\n 'width',\n 'height',\n 'paintFirst',\n 'strokeUniform',\n 'strokeLineCap',\n 'strokeDashOffset',\n 'strokeLineJoin',\n 'strokeMiterLimit',\n 'backgroundColor',\n 'clipPath',\n];\n\nexport const fabricObjectDefaultValues: Partial<\n TClassProperties<FabricObject>\n> = {\n // see composeMatrix() to see order of transforms. First defaults listed based on this\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n angle: 0,\n flipX: false,\n flipY: false,\n scaleX: 1,\n scaleY: 1,\n minScaleLimit: 0,\n skewX: 0,\n skewY: 0,\n originX: LEFT,\n originY: TOP,\n strokeWidth: 1,\n strokeUniform: false,\n padding: 0,\n opacity: 1,\n paintFirst: FILL,\n fill: 'rgb(0,0,0)',\n fillRule: 'nonzero',\n stroke: null,\n strokeDashArray: null,\n strokeDashOffset: 0,\n strokeLineCap: 'butt',\n strokeLineJoin: 'miter',\n strokeMiterLimit: 4,\n globalCompositeOperation: 'source-over',\n backgroundColor: '',\n shadow: null,\n visible: true,\n includeDefaultValues: true,\n excludeFromExport: false,\n objectCaching: true,\n clipPath: undefined,\n inverted: false,\n absolutePositioned: false,\n centeredRotation: true,\n centeredScaling: false,\n dirty: true,\n} as const;\n\nexport const interactiveObjectDefaultValues: Partial<\n TClassProperties<InteractiveFabricObject>\n> = {\n noScaleCache: true,\n lockMovementX: false,\n lockMovementY: false,\n lockRotation: false,\n lockScalingX: false,\n lockScalingY: false,\n lockSkewingX: false,\n lockSkewingY: false,\n lockScalingFlip: false,\n cornerSize: 13,\n touchCornerSize: 24,\n transparentCorners: true,\n cornerColor: 'rgb(178,204,255)',\n cornerStrokeColor: '',\n cornerStyle: 'rect',\n cornerDashArray: null,\n hasControls: true,\n borderColor: 'rgb(178,204,255)',\n borderDashArray: null,\n borderOpacityWhenMoving: 0.4,\n borderScaleFactor: 1,\n hasBorders: true,\n selectionBackgroundColor: '',\n selectable: true,\n evented: true,\n perPixelTargetFind: false,\n activeOn: 'down',\n hoverCursor: null,\n moveCursor: null,\n};\n"],"names":["stateProperties","TOP","LEFT","SCALE_X","SCALE_Y","SKEW_X","SKEW_Y","cacheProperties","FILL","STROKE","fabricObjectDefaultValues","top","left","width","height","angle","flipX","flipY","scaleX","scaleY","minScaleLimit","skewX","skewY","originX","originY","strokeWidth","strokeUniform","padding","opacity","paintFirst","fill","fillRule","stroke","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","globalCompositeOperation","backgroundColor","shadow","visible","includeDefaultValues","excludeFromExport","objectCaching","clipPath","undefined","inverted","absolutePositioned","centeredRotation","centeredScaling","dirty","interactiveObjectDefaultValues","noScaleCache","lockMovementX","lockMovementY","lockRotation","lockScalingX","lockScalingY","lockSkewingX","lockSkewingY","lockScalingFlip","cornerSize","touchCornerSize","transparentCorners","cornerColor","cornerStrokeColor","cornerStyle","cornerDashArray","hasControls","borderColor","borderDashArray","borderOpacityWhenMoving","borderScaleFactor","hasBorders","selectionBackgroundColor","selectable","evented","perPixelTargetFind","activeOn","hoverCursor","moveCursor"],"mappings":"gIAcaA,MAAAA,EAAkB,CAC7BC,EACAC,EACAC,EACAC,EACA,QACA,QACA,UACA,UACA,QACA,UACA,2BACA,SACA,UACAC,EACAC,GAGWC,EAAkB,CAC7BC,EACAC,EACA,cACA,kBACA,QACA,SACA,aACA,gBACA,gBACA,mBACA,iBACA,mBACA,kBACA,YAGWC,EAET,CAEFC,IAAK,EACLC,KAAM,EACNC,MAAO,EACPC,OAAQ,EACRC,MAAO,EACPC,OAAO,EACPC,OAAO,EACPC,OAAQ,EACRC,OAAQ,EACRC,cAAe,EACfC,MAAO,EACPC,MAAO,EACPC,QAASrB,EACTsB,QAASvB,EACTwB,YAAa,EACbC,eAAe,EACfC,QAAS,EACTC,QAAS,EACTC,WAAYrB,EACZsB,KAAM,aACNC,SAAU,UACVC,OAAQ,KACRC,gBAAiB,KACjBC,iBAAkB,EAClBC,cAAe,OACfC,eAAgB,QAChBC,iBAAkB,EAClBC,yBAA0B,cAC1BC,gBAAiB,GACjBC,OAAQ,KACRC,SAAS,EACTC,sBAAsB,EACtBC,mBAAmB,EACnBC,eAAe,EACfC,cAAUC,EACVC,UAAU,EACVC,oBAAoB,EACpBC,kBAAkB,EAClBC,iBAAiB,EACjBC,OAAO,GAGIC,EAET,CACFC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,cAAc,EACdC,iBAAiB,EACjBC,WAAY,GACZC,gBAAiB,GACjBC,oBAAoB,EACpBC,YAAa,mBACbC,kBAAmB,GACnBC,YAAa,OACbC,gBAAiB,KACjBC,aAAa,EACbC,YAAa,mBACbC,gBAAiB,KACjBC,wBAAyB,GACzBC,kBAAmB,EACnBC,YAAY,EACZC,yBAA0B,GAC1BC,YAAY,EACZC,SAAS,EACTC,oBAAoB,EACpBC,SAAU,OACVC,YAAa,KACbC,WAAY"}
@@ -1,7 +1,7 @@
1
- import { TOP, LEFT } from '../../constants.mjs';
1
+ import { TOP, LEFT, SCALE_X, SCALE_Y, SKEW_X, SKEW_Y, FILL, STROKE } from '../../constants.mjs';
2
2
 
3
- const stateProperties = [TOP, LEFT, 'scaleX', 'scaleY', 'flipX', 'flipY', 'originX', 'originY', 'angle', 'opacity', 'globalCompositeOperation', 'shadow', 'visible', 'skewX', 'skewY'];
4
- const cacheProperties = ['fill', 'stroke', 'strokeWidth', 'strokeDashArray', 'width', 'height', 'paintFirst', 'strokeUniform', 'strokeLineCap', 'strokeDashOffset', 'strokeLineJoin', 'strokeMiterLimit', 'backgroundColor', 'clipPath'];
3
+ const stateProperties = [TOP, LEFT, SCALE_X, SCALE_Y, 'flipX', 'flipY', 'originX', 'originY', 'angle', 'opacity', 'globalCompositeOperation', 'shadow', 'visible', SKEW_X, SKEW_Y];
4
+ const cacheProperties = [FILL, STROKE, 'strokeWidth', 'strokeDashArray', 'width', 'height', 'paintFirst', 'strokeUniform', 'strokeLineCap', 'strokeDashOffset', 'strokeLineJoin', 'strokeMiterLimit', 'backgroundColor', 'clipPath'];
5
5
  const fabricObjectDefaultValues = {
6
6
  // see composeMatrix() to see order of transforms. First defaults listed based on this
7
7
  top: 0,
@@ -22,7 +22,7 @@ const fabricObjectDefaultValues = {
22
22
  strokeUniform: false,
23
23
  padding: 0,
24
24
  opacity: 1,
25
- paintFirst: 'fill',
25
+ paintFirst: FILL,
26
26
  fill: 'rgb(0,0,0)',
27
27
  fillRule: 'nonzero',
28
28
  stroke: null,
@@ -1 +1 @@
1
- {"version":3,"file":"defaultValues.mjs","sources":["../../../../src/shapes/Object/defaultValues.ts"],"sourcesContent":["import { TOP, LEFT } from '../../constants';\nimport type { TClassProperties } from '../../typedefs';\nimport type { InteractiveFabricObject } from './InteractiveObject';\nimport type { FabricObject } from './Object';\n\nexport const stateProperties = [\n TOP,\n LEFT,\n 'scaleX',\n 'scaleY',\n 'flipX',\n 'flipY',\n 'originX',\n 'originY',\n 'angle',\n 'opacity',\n 'globalCompositeOperation',\n 'shadow',\n 'visible',\n 'skewX',\n 'skewY',\n];\n\nexport const cacheProperties = [\n 'fill',\n 'stroke',\n 'strokeWidth',\n 'strokeDashArray',\n 'width',\n 'height',\n 'paintFirst',\n 'strokeUniform',\n 'strokeLineCap',\n 'strokeDashOffset',\n 'strokeLineJoin',\n 'strokeMiterLimit',\n 'backgroundColor',\n 'clipPath',\n];\n\nexport const fabricObjectDefaultValues: Partial<\n TClassProperties<FabricObject>\n> = {\n // see composeMatrix() to see order of transforms. First defaults listed based on this\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n angle: 0,\n flipX: false,\n flipY: false,\n scaleX: 1,\n scaleY: 1,\n minScaleLimit: 0,\n skewX: 0,\n skewY: 0,\n originX: LEFT,\n originY: TOP,\n strokeWidth: 1,\n strokeUniform: false,\n padding: 0,\n opacity: 1,\n paintFirst: 'fill',\n fill: 'rgb(0,0,0)',\n fillRule: 'nonzero',\n stroke: null,\n strokeDashArray: null,\n strokeDashOffset: 0,\n strokeLineCap: 'butt',\n strokeLineJoin: 'miter',\n strokeMiterLimit: 4,\n globalCompositeOperation: 'source-over',\n backgroundColor: '',\n shadow: null,\n visible: true,\n includeDefaultValues: true,\n excludeFromExport: false,\n objectCaching: true,\n clipPath: undefined,\n inverted: false,\n absolutePositioned: false,\n centeredRotation: true,\n centeredScaling: false,\n dirty: true,\n} as const;\n\nexport const interactiveObjectDefaultValues: Partial<\n TClassProperties<InteractiveFabricObject>\n> = {\n noScaleCache: true,\n lockMovementX: false,\n lockMovementY: false,\n lockRotation: false,\n lockScalingX: false,\n lockScalingY: false,\n lockSkewingX: false,\n lockSkewingY: false,\n lockScalingFlip: false,\n cornerSize: 13,\n touchCornerSize: 24,\n transparentCorners: true,\n cornerColor: 'rgb(178,204,255)',\n cornerStrokeColor: '',\n cornerStyle: 'rect',\n cornerDashArray: null,\n hasControls: true,\n borderColor: 'rgb(178,204,255)',\n borderDashArray: null,\n borderOpacityWhenMoving: 0.4,\n borderScaleFactor: 1,\n hasBorders: true,\n selectionBackgroundColor: '',\n selectable: true,\n evented: true,\n perPixelTargetFind: false,\n activeOn: 'down',\n hoverCursor: null,\n moveCursor: null,\n};\n"],"names":["stateProperties","TOP","LEFT","cacheProperties","fabricObjectDefaultValues","top","left","width","height","angle","flipX","flipY","scaleX","scaleY","minScaleLimit","skewX","skewY","originX","originY","strokeWidth","strokeUniform","padding","opacity","paintFirst","fill","fillRule","stroke","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","globalCompositeOperation","backgroundColor","shadow","visible","includeDefaultValues","excludeFromExport","objectCaching","clipPath","undefined","inverted","absolutePositioned","centeredRotation","centeredScaling","dirty","interactiveObjectDefaultValues","noScaleCache","lockMovementX","lockMovementY","lockRotation","lockScalingX","lockScalingY","lockSkewingX","lockSkewingY","lockScalingFlip","cornerSize","touchCornerSize","transparentCorners","cornerColor","cornerStrokeColor","cornerStyle","cornerDashArray","hasControls","borderColor","borderDashArray","borderOpacityWhenMoving","borderScaleFactor","hasBorders","selectionBackgroundColor","selectable","evented","perPixelTargetFind","activeOn","hoverCursor","moveCursor"],"mappings":";;AAKaA,MAAAA,eAAe,GAAG,CAC7BC,GAAG,EACHC,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,SAAS,EACT,OAAO,EACP,SAAS,EACT,0BAA0B,EAC1B,QAAQ,EACR,SAAS,EACT,OAAO,EACP,OAAO,EACR;AAEYC,MAAAA,eAAe,GAAG,CAC7B,MAAM,EACN,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACX;AAEM,MAAMC,yBAEZ,GAAG;AACF;AACAC,EAAAA,GAAG,EAAE,CAAC;AACNC,EAAAA,IAAI,EAAE,CAAC;AACPC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,MAAM,EAAE,CAAC;AACTC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,KAAK,EAAE,KAAK;AACZC,EAAAA,MAAM,EAAE,CAAC;AACTC,EAAAA,MAAM,EAAE,CAAC;AACTC,EAAAA,aAAa,EAAE,CAAC;AAChBC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,KAAK,EAAE,CAAC;AACRC,EAAAA,OAAO,EAAEf,IAAI;AACbgB,EAAAA,OAAO,EAAEjB,GAAG;AACZkB,EAAAA,WAAW,EAAE,CAAC;AACdC,EAAAA,aAAa,EAAE,KAAK;AACpBC,EAAAA,OAAO,EAAE,CAAC;AACVC,EAAAA,OAAO,EAAE,CAAC;AACVC,EAAAA,UAAU,EAAE,MAAM;AAClBC,EAAAA,IAAI,EAAE,YAAY;AAClBC,EAAAA,QAAQ,EAAE,SAAS;AACnBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,eAAe,EAAE,IAAI;AACrBC,EAAAA,gBAAgB,EAAE,CAAC;AACnBC,EAAAA,aAAa,EAAE,MAAM;AACrBC,EAAAA,cAAc,EAAE,OAAO;AACvBC,EAAAA,gBAAgB,EAAE,CAAC;AACnBC,EAAAA,wBAAwB,EAAE,aAAa;AACvCC,EAAAA,eAAe,EAAE,EAAE;AACnBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,oBAAoB,EAAE,IAAI;AAC1BC,EAAAA,iBAAiB,EAAE,KAAK;AACxBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,QAAQ,EAAEC,SAAS;AACnBC,EAAAA,QAAQ,EAAE,KAAK;AACfC,EAAAA,kBAAkB,EAAE,KAAK;AACzBC,EAAAA,gBAAgB,EAAE,IAAI;AACtBC,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,KAAK,EAAE,IAAA;AACT,EAAU;AAEH,MAAMC,8BAEZ,GAAG;AACFC,EAAAA,YAAY,EAAE,IAAI;AAClBC,EAAAA,aAAa,EAAE,KAAK;AACpBC,EAAAA,aAAa,EAAE,KAAK;AACpBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,YAAY,EAAE,KAAK;AACnBC,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,UAAU,EAAE,EAAE;AACdC,EAAAA,eAAe,EAAE,EAAE;AACnBC,EAAAA,kBAAkB,EAAE,IAAI;AACxBC,EAAAA,WAAW,EAAE,kBAAkB;AAC/BC,EAAAA,iBAAiB,EAAE,EAAE;AACrBC,EAAAA,WAAW,EAAE,MAAM;AACnBC,EAAAA,eAAe,EAAE,IAAI;AACrBC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,WAAW,EAAE,kBAAkB;AAC/BC,EAAAA,eAAe,EAAE,IAAI;AACrBC,EAAAA,uBAAuB,EAAE,GAAG;AAC5BC,EAAAA,iBAAiB,EAAE,CAAC;AACpBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,wBAAwB,EAAE,EAAE;AAC5BC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,kBAAkB,EAAE,KAAK;AACzBC,EAAAA,QAAQ,EAAE,MAAM;AAChBC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,UAAU,EAAE,IAAA;AACd;;;;"}
1
+ {"version":3,"file":"defaultValues.mjs","sources":["../../../../src/shapes/Object/defaultValues.ts"],"sourcesContent":["import {\n TOP,\n LEFT,\n SCALE_Y,\n SCALE_X,\n SKEW_X,\n SKEW_Y,\n FILL,\n STROKE,\n} from '../../constants';\nimport type { TClassProperties } from '../../typedefs';\nimport type { InteractiveFabricObject } from './InteractiveObject';\nimport type { FabricObject } from './Object';\n\nexport const stateProperties = [\n TOP,\n LEFT,\n SCALE_X,\n SCALE_Y,\n 'flipX',\n 'flipY',\n 'originX',\n 'originY',\n 'angle',\n 'opacity',\n 'globalCompositeOperation',\n 'shadow',\n 'visible',\n SKEW_X,\n SKEW_Y,\n];\n\nexport const cacheProperties = [\n FILL,\n STROKE,\n 'strokeWidth',\n 'strokeDashArray',\n 'width',\n 'height',\n 'paintFirst',\n 'strokeUniform',\n 'strokeLineCap',\n 'strokeDashOffset',\n 'strokeLineJoin',\n 'strokeMiterLimit',\n 'backgroundColor',\n 'clipPath',\n];\n\nexport const fabricObjectDefaultValues: Partial<\n TClassProperties<FabricObject>\n> = {\n // see composeMatrix() to see order of transforms. First defaults listed based on this\n top: 0,\n left: 0,\n width: 0,\n height: 0,\n angle: 0,\n flipX: false,\n flipY: false,\n scaleX: 1,\n scaleY: 1,\n minScaleLimit: 0,\n skewX: 0,\n skewY: 0,\n originX: LEFT,\n originY: TOP,\n strokeWidth: 1,\n strokeUniform: false,\n padding: 0,\n opacity: 1,\n paintFirst: FILL,\n fill: 'rgb(0,0,0)',\n fillRule: 'nonzero',\n stroke: null,\n strokeDashArray: null,\n strokeDashOffset: 0,\n strokeLineCap: 'butt',\n strokeLineJoin: 'miter',\n strokeMiterLimit: 4,\n globalCompositeOperation: 'source-over',\n backgroundColor: '',\n shadow: null,\n visible: true,\n includeDefaultValues: true,\n excludeFromExport: false,\n objectCaching: true,\n clipPath: undefined,\n inverted: false,\n absolutePositioned: false,\n centeredRotation: true,\n centeredScaling: false,\n dirty: true,\n} as const;\n\nexport const interactiveObjectDefaultValues: Partial<\n TClassProperties<InteractiveFabricObject>\n> = {\n noScaleCache: true,\n lockMovementX: false,\n lockMovementY: false,\n lockRotation: false,\n lockScalingX: false,\n lockScalingY: false,\n lockSkewingX: false,\n lockSkewingY: false,\n lockScalingFlip: false,\n cornerSize: 13,\n touchCornerSize: 24,\n transparentCorners: true,\n cornerColor: 'rgb(178,204,255)',\n cornerStrokeColor: '',\n cornerStyle: 'rect',\n cornerDashArray: null,\n hasControls: true,\n borderColor: 'rgb(178,204,255)',\n borderDashArray: null,\n borderOpacityWhenMoving: 0.4,\n borderScaleFactor: 1,\n hasBorders: true,\n selectionBackgroundColor: '',\n selectable: true,\n evented: true,\n perPixelTargetFind: false,\n activeOn: 'down',\n hoverCursor: null,\n moveCursor: null,\n};\n"],"names":["stateProperties","TOP","LEFT","SCALE_X","SCALE_Y","SKEW_X","SKEW_Y","cacheProperties","FILL","STROKE","fabricObjectDefaultValues","top","left","width","height","angle","flipX","flipY","scaleX","scaleY","minScaleLimit","skewX","skewY","originX","originY","strokeWidth","strokeUniform","padding","opacity","paintFirst","fill","fillRule","stroke","strokeDashArray","strokeDashOffset","strokeLineCap","strokeLineJoin","strokeMiterLimit","globalCompositeOperation","backgroundColor","shadow","visible","includeDefaultValues","excludeFromExport","objectCaching","clipPath","undefined","inverted","absolutePositioned","centeredRotation","centeredScaling","dirty","interactiveObjectDefaultValues","noScaleCache","lockMovementX","lockMovementY","lockRotation","lockScalingX","lockScalingY","lockSkewingX","lockSkewingY","lockScalingFlip","cornerSize","touchCornerSize","transparentCorners","cornerColor","cornerStrokeColor","cornerStyle","cornerDashArray","hasControls","borderColor","borderDashArray","borderOpacityWhenMoving","borderScaleFactor","hasBorders","selectionBackgroundColor","selectable","evented","perPixelTargetFind","activeOn","hoverCursor","moveCursor"],"mappings":"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"}
@@ -27,7 +27,7 @@ export interface ControlProps {
27
27
  * Color of controlling corners of an object (when it's active and transparentCorners false)
28
28
  * @since 1.6.2
29
29
  * @type String
30
- * @default null
30
+ * @default ''
31
31
  */
32
32
  cornerStrokeColor: string;
33
33
  /**
@@ -36,7 +36,7 @@ export interface ControlProps {
36
36
  * And you can swap it with one of the alternative proposed with the control api
37
37
  * @since 1.6.2
38
38
  * @type 'rect' | 'circle'
39
- * @default rect
39
+ * @default 'rect'
40
40
  * @deprecated
41
41
  */
42
42
  cornerStyle: 'rect' | 'circle';
@@ -44,6 +44,7 @@ export interface ControlProps {
44
44
  * Array specifying dash pattern of an object's control (hasBorder must be true)
45
45
  * @since 1.6.2
46
46
  * @type Array | null
47
+ * @default null
47
48
  */
48
49
  cornerDashArray: number[] | null;
49
50
  /**
@@ -55,7 +56,7 @@ export interface ControlProps {
55
56
  /**
56
57
  * When set to `false`, object's controls are not displayed and can not be used to manipulate object
57
58
  * @type Boolean
58
- * @default
59
+ * @default true
59
60
  */
60
61
  hasControls: boolean;
61
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ControlProps.d.ts","sourceRoot":"","sources":["../../../../../src/shapes/Object/types/ControlProps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;;;;OAQG;IACH,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE/B;;;;OAIG;IACH,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"ControlProps.d.ts","sourceRoot":"","sources":["../../../../../src/shapes/Object/types/ControlProps.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAE5B;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;;;;;;;OAQG;IACH,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC;IAE/B;;;;;OAKG;IACH,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAEjC;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../src/shapes/Polyline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Polyline.d.ts","sourceRoot":"","sources":["../../../src/shapes/Polyline.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{defineProperty as t,objectSpread2 as s,objectWithoutProperties as i}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as e}from"../config.min.mjs";import{SHARED_ATTRIBUTES as o}from"../parser/attributes.min.mjs";import{parseAttributes as n}from"../parser/parseAttributes.min.mjs";import{parsePointsAttribute as r}from"../parser/parsePointsAttribute.min.mjs";import{Point as h}from"../Point.min.mjs";import{classRegistry as m}from"../ClassRegistry.min.mjs";import{makeBoundingBoxFromPoints as a}from"../util/misc/boundingBoxFromPoints.min.mjs";import{calcDimensionsMatrix as p,transformPoint as l}from"../util/misc/matrix.min.mjs";import{projectStrokeOnPoints as c}from"../util/misc/projectStroke/index.min.mjs";import{degreesToRadians as f}from"../util/misc/radiansDegreesConversion.min.mjs";import{toFixed as u}from"../util/misc/toFixed.min.mjs";import{FabricObject as d}from"./Object/FabricObject.min.mjs";import{cloneDeep as g}from"../util/internals/cloneDeep.min.mjs";import{LEFT as k,TOP as w,CENTER as j}from"../constants.min.mjs";import{cacheProperties as O}from"./Object/defaultValues.min.mjs";const x=["left","top"],B={exactBoundingBox:!1};class y extends d{static getDefaults(){return s(s({},super.getDefaults()),y.ownDefaults)}constructor(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),t(this,"strokeDiff",void 0),Object.assign(this,y.ownDefaults),this.setOptions(i),this.points=s;const{left:e,top:o}=i;this.initialized=!0,this.setBoundingBox(!0),"number"==typeof e&&this.set(k,e),"number"==typeof o&&this.set(w,o)}isOpen(){return!0}_projectStrokeOnPoints(t){return c(this.points,t,this.isOpen())}_calcDimensions(t){t=s({scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:this.strokeMiterLimit,strokeUniform:this.strokeUniform,strokeWidth:this.strokeWidth},t||{});const i=this.exactBoundingBox?this._projectStrokeOnPoints(t).map((t=>t.projectedPoint)):this.points;if(0===i.length)return{left:0,top:0,width:0,height:0,pathOffset:new h,strokeOffset:new h,strokeDiff:new h};const e=a(i),o=p(s(s({},t),{},{scaleX:1,scaleY:1})),n=a(this.points.map((t=>l(t,o,!0)))),r=new h(this.scaleX,this.scaleY);let m=e.left+e.width/2,c=e.top+e.height/2;return this.exactBoundingBox&&(m-=c*Math.tan(f(this.skewX)),c-=m*Math.tan(f(this.skewY))),s(s({},e),{},{pathOffset:new h(m,c),strokeOffset:new h(n.left,n.top).subtract(new h(e.left,e.top)).multiply(r),strokeDiff:new h(e.width,e.height).subtract(new h(n.width,n.height)).multiply(r)})}_findCenterFromElement(){const t=a(this.points);return new h(t.left+t.width/2,t.top+t.height/2)}setDimensions(){this.setBoundingBox()}setBoundingBox(t){const{left:s,top:i,width:e,height:o,pathOffset:n,strokeOffset:r,strokeDiff:m}=this._calcDimensions();this.set({width:e,height:o,pathOffset:n,strokeOffset:r,strokeDiff:m}),t&&this.setPositionByOrigin(new h(s+e/2,i+o/2),j,j)}isStrokeAccountedForInDimensions(){return this.exactBoundingBox}_getNonTransformedDimensions(){return this.exactBoundingBox?new h(this.width,this.height):super._getNonTransformedDimensions()}_getTransformedDimensions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.exactBoundingBox){let n;if(Object.keys(t).some((t=>this.strokeUniform||this.constructor.layoutProperties.includes(t)))){var s,i;const{width:e,height:o}=this._calcDimensions(t);n=new h(null!==(s=t.width)&&void 0!==s?s:e,null!==(i=t.height)&&void 0!==i?i:o)}else{var e,o;n=new h(null!==(e=t.width)&&void 0!==e?e:this.width,null!==(o=t.height)&&void 0!==o?o:this.height)}return n.multiply(new h(t.scaleX||this.scaleX,t.scaleY||this.scaleY))}return super._getTransformedDimensions(t)}_set(t,s){const i=this.initialized&&this[t]!==s,e=super._set(t,s);return this.exactBoundingBox&&i&&(("scaleX"===t||"scaleY"===t)&&this.strokeUniform&&this.constructor.layoutProperties.includes("strokeUniform")||this.constructor.layoutProperties.includes(t))&&this.setDimensions(),e}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return s(s({},super.toObject(t)),{},{points:g(this.points)})}_toSVG(){const t=[],s=this.pathOffset.x,i=this.pathOffset.y,o=e.NUM_FRACTION_DIGITS;for(let e=0,n=this.points.length;e<n;e++)t.push(u(this.points[e].x-s,o),",",u(this.points[e].y-i,o)," ");return["<".concat(this.constructor.type.toLowerCase()," "),"COMMON_PARTS",'points="'.concat(t.join(""),'" />\n')]}_render(t){const s=this.points.length,i=this.pathOffset.x,e=this.pathOffset.y;if(s&&!isNaN(this.points[s-1].y)){t.beginPath(),t.moveTo(this.points[0].x-i,this.points[0].y-e);for(let o=0;o<s;o++){const s=this.points[o];t.lineTo(s.x-i,s.y-e)}!this.isOpen()&&t.closePath(),this._renderPaintInOrder(t)}}complexity(){return this.points.length}static async fromElement(t,e,o){const h=r(t.getAttribute("points")),m=n(t,this.ATTRIBUTE_NAMES,o),a=i(m,x);return new this(h,s(s({},a),e))}static fromObject(t){return this._fromObject(t,{extraParam:"points"})}}t(y,"ownDefaults",B),t(y,"type","Polyline"),t(y,"layoutProperties",["skewX","skewY","strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeWidth","strokeUniform","points"]),t(y,"cacheProperties",[...O,"points"]),t(y,"ATTRIBUTE_NAMES",[...o]),m.setClass(y),m.setSVGClass(y);export{y as Polyline,B as polylineDefaultValues};
1
+ import{defineProperty as t,objectSpread2 as i,objectWithoutProperties as s}from"../../_virtual/_rollupPluginBabelHelpers.min.mjs";import{config as e}from"../config.min.mjs";import{SHARED_ATTRIBUTES as o}from"../parser/attributes.min.mjs";import{parseAttributes as n}from"../parser/parseAttributes.min.mjs";import{parsePointsAttribute as r}from"../parser/parsePointsAttribute.min.mjs";import{Point as h}from"../Point.min.mjs";import{classRegistry as m}from"../ClassRegistry.min.mjs";import{makeBoundingBoxFromPoints as a}from"../util/misc/boundingBoxFromPoints.min.mjs";import{calcDimensionsMatrix as p,transformPoint as l}from"../util/misc/matrix.min.mjs";import{projectStrokeOnPoints as c}from"../util/misc/projectStroke/index.min.mjs";import{degreesToRadians as f}from"../util/misc/radiansDegreesConversion.min.mjs";import{toFixed as u}from"../util/misc/toFixed.min.mjs";import{FabricObject as d}from"./Object/FabricObject.min.mjs";import{cloneDeep as g}from"../util/internals/cloneDeep.min.mjs";import{LEFT as k,TOP as w,CENTER as j,SCALE_X as O,SCALE_Y as x,SKEW_X as B,SKEW_Y as y}from"../constants.min.mjs";import{cacheProperties as b}from"./Object/defaultValues.min.mjs";const D=["left","top"],_={exactBoundingBox:!1};class P extends d{static getDefaults(){return i(i({},super.getDefaults()),P.ownDefaults)}constructor(){let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(),t(this,"strokeDiff",void 0),Object.assign(this,P.ownDefaults),this.setOptions(s),this.points=i;const{left:e,top:o}=s;this.initialized=!0,this.setBoundingBox(!0),"number"==typeof e&&this.set(k,e),"number"==typeof o&&this.set(w,o)}isOpen(){return!0}_projectStrokeOnPoints(t){return c(this.points,t,this.isOpen())}_calcDimensions(t){t=i({scaleX:this.scaleX,scaleY:this.scaleY,skewX:this.skewX,skewY:this.skewY,strokeLineCap:this.strokeLineCap,strokeLineJoin:this.strokeLineJoin,strokeMiterLimit:this.strokeMiterLimit,strokeUniform:this.strokeUniform,strokeWidth:this.strokeWidth},t||{});const s=this.exactBoundingBox?this._projectStrokeOnPoints(t).map((t=>t.projectedPoint)):this.points;if(0===s.length)return{left:0,top:0,width:0,height:0,pathOffset:new h,strokeOffset:new h,strokeDiff:new h};const e=a(s),o=p(i(i({},t),{},{scaleX:1,scaleY:1})),n=a(this.points.map((t=>l(t,o,!0)))),r=new h(this.scaleX,this.scaleY);let m=e.left+e.width/2,c=e.top+e.height/2;return this.exactBoundingBox&&(m-=c*Math.tan(f(this.skewX)),c-=m*Math.tan(f(this.skewY))),i(i({},e),{},{pathOffset:new h(m,c),strokeOffset:new h(n.left,n.top).subtract(new h(e.left,e.top)).multiply(r),strokeDiff:new h(e.width,e.height).subtract(new h(n.width,n.height)).multiply(r)})}_findCenterFromElement(){const t=a(this.points);return new h(t.left+t.width/2,t.top+t.height/2)}setDimensions(){this.setBoundingBox()}setBoundingBox(t){const{left:i,top:s,width:e,height:o,pathOffset:n,strokeOffset:r,strokeDiff:m}=this._calcDimensions();this.set({width:e,height:o,pathOffset:n,strokeOffset:r,strokeDiff:m}),t&&this.setPositionByOrigin(new h(i+e/2,s+o/2),j,j)}isStrokeAccountedForInDimensions(){return this.exactBoundingBox}_getNonTransformedDimensions(){return this.exactBoundingBox?new h(this.width,this.height):super._getNonTransformedDimensions()}_getTransformedDimensions(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this.exactBoundingBox){let n;if(Object.keys(t).some((t=>this.strokeUniform||this.constructor.layoutProperties.includes(t)))){var i,s;const{width:e,height:o}=this._calcDimensions(t);n=new h(null!==(i=t.width)&&void 0!==i?i:e,null!==(s=t.height)&&void 0!==s?s:o)}else{var e,o;n=new h(null!==(e=t.width)&&void 0!==e?e:this.width,null!==(o=t.height)&&void 0!==o?o:this.height)}return n.multiply(new h(t.scaleX||this.scaleX,t.scaleY||this.scaleY))}return super._getTransformedDimensions(t)}_set(t,i){const s=this.initialized&&this[t]!==i,e=super._set(t,i);return this.exactBoundingBox&&s&&((t===O||t===x)&&this.strokeUniform&&this.constructor.layoutProperties.includes("strokeUniform")||this.constructor.layoutProperties.includes(t))&&this.setDimensions(),e}toObject(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return i(i({},super.toObject(t)),{},{points:g(this.points)})}_toSVG(){const t=[],i=this.pathOffset.x,s=this.pathOffset.y,o=e.NUM_FRACTION_DIGITS;for(let e=0,n=this.points.length;e<n;e++)t.push(u(this.points[e].x-i,o),",",u(this.points[e].y-s,o)," ");return["<".concat(this.constructor.type.toLowerCase()," "),"COMMON_PARTS",'points="'.concat(t.join(""),'" />\n')]}_render(t){const i=this.points.length,s=this.pathOffset.x,e=this.pathOffset.y;if(i&&!isNaN(this.points[i-1].y)){t.beginPath(),t.moveTo(this.points[0].x-s,this.points[0].y-e);for(let o=0;o<i;o++){const i=this.points[o];t.lineTo(i.x-s,i.y-e)}!this.isOpen()&&t.closePath(),this._renderPaintInOrder(t)}}complexity(){return this.points.length}static async fromElement(t,e,o){const h=r(t.getAttribute("points")),m=n(t,this.ATTRIBUTE_NAMES,o),a=s(m,D);return new this(h,i(i({},a),e))}static fromObject(t){return this._fromObject(t,{extraParam:"points"})}}t(P,"ownDefaults",_),t(P,"type","Polyline"),t(P,"layoutProperties",[B,y,"strokeLineCap","strokeLineJoin","strokeMiterLimit","strokeWidth","strokeUniform","points"]),t(P,"cacheProperties",[...b,"points"]),t(P,"ATTRIBUTE_NAMES",[...o]),m.setClass(P),m.setSVGClass(P);export{P as Polyline,_ as polylineDefaultValues};
2
2
  //# sourceMappingURL=Polyline.min.mjs.map