fabric 6.0.2 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/index.js +250 -101
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.min.js +1 -1
  5. package/dist/index.min.js.map +1 -1
  6. package/dist/index.min.mjs +1 -1
  7. package/dist/index.min.mjs.map +1 -1
  8. package/dist/index.mjs +250 -101
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/index.node.cjs +250 -101
  11. package/dist/index.node.cjs.map +1 -1
  12. package/dist/index.node.mjs +250 -101
  13. package/dist/index.node.mjs.map +1 -1
  14. package/dist/package.json.min.mjs +1 -1
  15. package/dist/package.json.mjs +1 -1
  16. package/dist/src/ClassRegistry.d.ts +1 -0
  17. package/dist/src/ClassRegistry.d.ts.map +1 -1
  18. package/dist/src/ClassRegistry.min.mjs +1 -1
  19. package/dist/src/ClassRegistry.min.mjs.map +1 -1
  20. package/dist/src/ClassRegistry.mjs +3 -0
  21. package/dist/src/ClassRegistry.mjs.map +1 -1
  22. package/dist/src/Collection.d.ts +3 -3
  23. package/dist/src/Collection.d.ts.map +1 -1
  24. package/dist/src/EventTypeDefs.d.ts +19 -11
  25. package/dist/src/EventTypeDefs.d.ts.map +1 -1
  26. package/dist/src/LayoutManager/LayoutManager.d.ts.map +1 -1
  27. package/dist/src/LayoutManager/LayoutManager.min.mjs +1 -1
  28. package/dist/src/LayoutManager/LayoutManager.min.mjs.map +1 -1
  29. package/dist/src/LayoutManager/LayoutManager.mjs +2 -2
  30. package/dist/src/LayoutManager/LayoutManager.mjs.map +1 -1
  31. package/dist/src/Shadow.d.ts.map +1 -1
  32. package/dist/src/Shadow.min.mjs +1 -1
  33. package/dist/src/Shadow.min.mjs.map +1 -1
  34. package/dist/src/Shadow.mjs +1 -5
  35. package/dist/src/Shadow.mjs.map +1 -1
  36. package/dist/src/canvas/DOMManagers/util.d.ts.map +1 -1
  37. package/dist/src/canvas/DOMManagers/util.min.mjs +1 -1
  38. package/dist/src/canvas/DOMManagers/util.min.mjs.map +1 -1
  39. package/dist/src/canvas/DOMManagers/util.mjs +9 -15
  40. package/dist/src/canvas/DOMManagers/util.mjs.map +1 -1
  41. package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
  42. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  43. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  44. package/dist/src/canvas/SelectableCanvas.mjs +3 -0
  45. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  46. package/dist/src/canvas/StaticCanvas.d.ts +20 -24
  47. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  48. package/dist/src/color/util.d.ts.map +1 -1
  49. package/dist/src/constants.d.ts +1 -0
  50. package/dist/src/constants.d.ts.map +1 -1
  51. package/dist/src/constants.min.mjs +1 -1
  52. package/dist/src/constants.min.mjs.map +1 -1
  53. package/dist/src/constants.mjs +2 -1
  54. package/dist/src/constants.mjs.map +1 -1
  55. package/dist/src/controls/controlRendering.d.ts +1 -1
  56. package/dist/src/controls/controlRendering.d.ts.map +1 -1
  57. package/dist/src/controls/controlRendering.min.mjs.map +1 -1
  58. package/dist/src/controls/controlRendering.mjs.map +1 -1
  59. package/dist/src/controls/fireEvent.d.ts +2 -2
  60. package/dist/src/controls/fireEvent.d.ts.map +1 -1
  61. package/dist/src/controls/fireEvent.min.mjs.map +1 -1
  62. package/dist/src/controls/fireEvent.mjs.map +1 -1
  63. package/dist/src/controls/index.d.ts +1 -0
  64. package/dist/src/controls/index.d.ts.map +1 -1
  65. package/dist/src/controls/index.min.mjs +1 -1
  66. package/dist/src/controls/index.mjs +1 -0
  67. package/dist/src/controls/index.mjs.map +1 -1
  68. package/dist/src/controls/pathControl.d.ts +12 -0
  69. package/dist/src/controls/pathControl.d.ts.map +1 -0
  70. package/dist/src/controls/pathControl.min.mjs +2 -0
  71. package/dist/src/controls/pathControl.min.mjs.map +1 -0
  72. package/dist/src/controls/pathControl.mjs +156 -0
  73. package/dist/src/controls/pathControl.mjs.map +1 -0
  74. package/dist/src/controls/polyControl.d.ts.map +1 -1
  75. package/dist/src/controls/polyControl.min.mjs +1 -1
  76. package/dist/src/controls/polyControl.min.mjs.map +1 -1
  77. package/dist/src/controls/polyControl.mjs +1 -9
  78. package/dist/src/controls/polyControl.mjs.map +1 -1
  79. package/dist/src/controls/util.d.ts +1 -1
  80. package/dist/src/controls/wrapWithFireEvent.d.ts +5 -3
  81. package/dist/src/controls/wrapWithFireEvent.d.ts.map +1 -1
  82. package/dist/src/controls/wrapWithFireEvent.min.mjs +1 -1
  83. package/dist/src/controls/wrapWithFireEvent.min.mjs.map +1 -1
  84. package/dist/src/controls/wrapWithFireEvent.mjs +7 -4
  85. package/dist/src/controls/wrapWithFireEvent.mjs.map +1 -1
  86. package/dist/src/controls/wrapWithFixedAnchor.d.ts.map +1 -1
  87. package/dist/src/env/index.d.ts.map +1 -1
  88. package/dist/src/env/node.d.ts.map +1 -1
  89. package/dist/src/filters/BaseFilter.d.ts.map +1 -1
  90. package/dist/src/filters/BaseFilter.min.mjs.map +1 -1
  91. package/dist/src/filters/BaseFilter.mjs +0 -1
  92. package/dist/src/filters/BaseFilter.mjs.map +1 -1
  93. package/dist/src/filters/ColorMatrix.d.ts.map +1 -1
  94. package/dist/src/filters/ColorMatrixFilters.d.ts +8 -96
  95. package/dist/src/filters/ColorMatrixFilters.d.ts.map +1 -1
  96. package/dist/src/filters/Convolute.d.ts +2 -1
  97. package/dist/src/filters/Convolute.d.ts.map +1 -1
  98. package/dist/src/filters/shaders/baseFilter.d.ts +1 -1
  99. package/dist/src/filters/shaders/baseFilter.d.ts.map +1 -1
  100. package/dist/src/filters/utils.d.ts.map +1 -1
  101. package/dist/src/parser/normalizeAttr.d.ts.map +1 -1
  102. package/dist/src/parser/parseStyleString.d.ts.map +1 -1
  103. package/dist/src/parser/parseStyleString.min.mjs +1 -1
  104. package/dist/src/parser/parseStyleString.min.mjs.map +1 -1
  105. package/dist/src/parser/parseStyleString.mjs +1 -0
  106. package/dist/src/parser/parseStyleString.mjs.map +1 -1
  107. package/dist/src/parser/parseUseDirectives.d.ts.map +1 -1
  108. package/dist/src/parser/parseUseDirectives.min.mjs +1 -1
  109. package/dist/src/parser/parseUseDirectives.min.mjs.map +1 -1
  110. package/dist/src/parser/parseUseDirectives.mjs +61 -43
  111. package/dist/src/parser/parseUseDirectives.mjs.map +1 -1
  112. package/dist/src/shapes/Group.d.ts +20 -20
  113. package/dist/src/shapes/Group.d.ts.map +1 -1
  114. package/dist/src/shapes/IText/DraggableTextDelegate.d.ts.map +1 -1
  115. package/dist/src/shapes/IText/ITextBehavior.d.ts.map +1 -1
  116. package/dist/src/shapes/IText/ITextBehavior.min.mjs.map +1 -1
  117. package/dist/src/shapes/IText/ITextBehavior.mjs +0 -1
  118. package/dist/src/shapes/IText/ITextBehavior.mjs.map +1 -1
  119. package/dist/src/shapes/Image.d.ts.map +1 -1
  120. package/dist/src/shapes/Image.min.mjs.map +1 -1
  121. package/dist/src/shapes/Image.mjs +0 -2
  122. package/dist/src/shapes/Image.mjs.map +1 -1
  123. package/dist/src/shapes/Path.d.ts +9 -9
  124. package/dist/src/shapes/Path.d.ts.map +1 -1
  125. package/dist/src/shapes/Polyline.d.ts +1 -1
  126. package/dist/src/shapes/Rect.d.ts +1 -1
  127. package/dist/src/shapes/Text/Text.d.ts +1 -1
  128. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  129. package/dist/src/shapes/Text/TextSVGExportMixin.d.ts.map +1 -1
  130. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  131. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +0 -2
  132. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  133. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  134. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  135. package/dist/src/shapes/Textbox.mjs +0 -2
  136. package/dist/src/shapes/Textbox.mjs.map +1 -1
  137. package/dist/src/util/applyMixins.d.ts.map +1 -1
  138. package/dist/src/util/dom_misc.d.ts.map +1 -1
  139. package/dist/src/util/dom_misc.min.mjs +1 -1
  140. package/dist/src/util/dom_misc.min.mjs.map +1 -1
  141. package/dist/src/util/dom_misc.mjs +7 -9
  142. package/dist/src/util/dom_misc.mjs.map +1 -1
  143. package/dist/src/util/internals/cloneDeep.d.ts.map +1 -1
  144. package/dist/src/util/internals/console.d.ts +1 -1
  145. package/dist/src/util/internals/findRight.d.ts.map +1 -1
  146. package/dist/src/util/internals/removeFromArray.d.ts.map +1 -1
  147. package/dist/src/util/misc/dom.d.ts.map +1 -1
  148. package/dist/src/util/misc/groupSVGElements.d.ts.map +1 -1
  149. package/dist/src/util/misc/matrix.d.ts.map +1 -1
  150. package/dist/src/util/misc/objectEnlive.d.ts +1 -1
  151. package/dist/src/util/misc/objectEnlive.d.ts.map +1 -1
  152. package/dist/src/util/misc/objectEnlive.min.mjs +1 -1
  153. package/dist/src/util/misc/objectEnlive.min.mjs.map +1 -1
  154. package/dist/src/util/misc/objectEnlive.mjs +7 -11
  155. package/dist/src/util/misc/objectEnlive.mjs.map +1 -1
  156. package/dist/src/util/misc/objectTransforms.d.ts.map +1 -1
  157. package/dist/src/util/misc/pick.d.ts.map +1 -1
  158. package/dist/src/util/misc/planeChange.d.ts.map +1 -1
  159. package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
  160. package/dist/src/util/misc/textStyles.d.ts.map +1 -1
  161. package/dist/src/util/path/index.d.ts +0 -1
  162. package/dist/src/util/path/index.d.ts.map +1 -1
  163. package/dist/src/util/path/index.min.mjs +1 -1
  164. package/dist/src/util/path/index.min.mjs.map +1 -1
  165. package/dist/src/util/path/index.mjs +1 -2
  166. package/dist/src/util/path/index.mjs.map +1 -1
  167. package/dist/src/util/path/typedefs.d.ts +1 -0
  168. package/dist/src/util/path/typedefs.d.ts.map +1 -1
  169. package/dist/src/util/typeAssertions.d.ts +2 -2
  170. package/dist/src/util/typeAssertions.d.ts.map +1 -1
  171. package/lib/aligning_guidelines.js +76 -1
  172. package/lib/centering_guidelines.js +3 -1
  173. package/package.json +3 -3
  174. package/src/ClassRegistry.spec.ts +39 -0
  175. package/src/ClassRegistry.ts +4 -0
  176. package/src/EventTypeDefs.ts +22 -10
  177. package/src/LayoutManager/ActiveSelectionLayoutManager.spec.ts +1 -0
  178. package/src/LayoutManager/LayoutManager.spec.ts +1 -0
  179. package/src/LayoutManager/LayoutManager.ts +2 -0
  180. package/src/Shadow.ts +1 -6
  181. package/src/canvas/DOMManagers/util.ts +11 -15
  182. package/src/canvas/SelectableCanvas.spec.ts +18 -0
  183. package/src/canvas/SelectableCanvas.ts +3 -0
  184. package/src/constants.ts +1 -0
  185. package/src/controls/controlRendering.ts +4 -2
  186. package/src/controls/fireEvent.ts +2 -2
  187. package/src/controls/index.ts +1 -0
  188. package/src/controls/pathControl.spec.ts +75 -0
  189. package/src/controls/pathControl.ts +293 -0
  190. package/src/controls/polyControl.ts +1 -1
  191. package/src/controls/wrapWithFireEvent.ts +14 -5
  192. package/src/filters/BaseFilter.ts +1 -2
  193. package/src/parser/parseStyleString.ts +1 -0
  194. package/src/parser/parseUseDirectives.test.ts +113 -0
  195. package/src/parser/parseUseDirectives.ts +64 -58
  196. package/src/shapes/IText/ITextBehavior.ts +4 -2
  197. package/src/shapes/Image.ts +0 -2
  198. package/src/shapes/Text/TextSVGExportMixin.ts +0 -2
  199. package/src/shapes/Textbox.ts +0 -2
  200. package/src/util/dom_misc.ts +17 -10
  201. package/src/util/misc/objectEnlive.spec.ts +68 -0
  202. package/src/util/misc/objectEnlive.ts +7 -13
  203. package/src/util/path/__snapshots__/index.spec.ts.snap +327 -0
  204. package/src/util/path/index.spec.ts +13 -2
  205. package/src/util/path/index.ts +2 -4
  206. package/src/util/path/typedefs.ts +2 -0
  207. package/.gitmodules +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"typedefs.d.ts","sourceRoot":"","sources":["../../../../src/util/path/typedefs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typedefs.d.ts","sourceRoot":"","sources":["../../../../src/util/path/typedefs.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import type { ActiveSelection } from '../shapes/ActiveSelection';
7
7
  export declare const isFiller: (filler: TFiller | string | null) => filler is TFiller;
8
8
  export declare const isSerializableFiller: (filler: TFiller | string | null) => filler is TFiller;
9
9
  export declare const isPattern: (filler: TFiller) => filler is Pattern;
10
- export declare const isTextObject: (fabricObject?: FabricObject) => fabricObject is FabricText<Partial<import("../shapes/Text/Text").TextProps>, import("../shapes/Text/Text").SerializedTextProps, import("../EventTypeDefs").ObjectEvents>;
11
- export declare const isPath: (fabricObject?: FabricObject) => fabricObject is Path<Partial<import("../shapes/Path").PathProps>, import("../shapes/Path").SerializedPathProps, import("../EventTypeDefs").ObjectEvents>;
10
+ export declare const isTextObject: (fabricObject?: FabricObject) => fabricObject is FabricText;
11
+ export declare const isPath: (fabricObject?: FabricObject) => fabricObject is Path;
12
12
  export declare const isActiveSelection: (fabricObject?: FabricObject) => fabricObject is ActiveSelection;
13
13
  //# sourceMappingURL=typeAssertions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typeAssertions.d.ts","sourceRoot":"","sources":["../../../src/util/typeAssertions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,eAAO,MAAM,QAAQ,WACX,OAAO,GAAG,MAAM,GAAG,IAAI,sBAGhC,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,OAAO,GAAG,MAAM,GAAG,IAAI,sBAGhC,CAAC;AAEF,eAAO,MAAM,SAAS,WAAY,OAAO,sBAIxC,CAAC;AAEF,eAAO,MAAM,YAAY,kBACR,YAAY,6KAM5B,CAAC;AAEF,eAAO,MAAM,MAAM,kBAAmB,YAAY,6JAOjD,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBACb,YAAY,oCAE+B,CAAC"}
1
+ {"version":3,"file":"typeAssertions.d.ts","sourceRoot":"","sources":["../../../src/util/typeAssertions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEjE,eAAO,MAAM,QAAQ,WACX,OAAO,GAAG,MAAM,GAAG,IAAI,KAC9B,MAAM,IAAI,OAEZ,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,OAAO,GAAG,MAAM,GAAG,IAAI,KAC9B,MAAM,IAAI,OAEZ,CAAC;AAEF,eAAO,MAAM,SAAS,WAAY,OAAO,KAAG,MAAM,IAAI,OAIrD,CAAC;AAEF,eAAO,MAAM,YAAY,kBACR,YAAY,KAC1B,YAAY,IAAI,UAKlB,CAAC;AAEF,eAAO,MAAM,MAAM,kBAAmB,YAAY,KAAG,YAAY,IAAI,IAOpE,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBACb,YAAY,KAC1B,YAAY,IAAI,eACyC,CAAC"}
@@ -89,6 +89,79 @@ function initAligningGuidelines(canvas) {
89
89
  objectHeight = objectBoundingRect.height / viewportTransform[3],
90
90
  objectWidth = objectBoundingRect.width / viewportTransform[0];
91
91
 
92
+
93
+ // snaps if the right side of the active object touches the left side of the object
94
+ if (isInRange(activeObjectLeft + activeObjectWidth / 2, objectLeft - objectWidth / 2)) {
95
+
96
+ verticalInTheRange = true;
97
+ verticalLines.push({
98
+ x: objectLeft - objectWidth / 2,
99
+ y1: (objectTop < activeObjectTop)
100
+ ? (objectTop - objectHeight / 2 - aligningLineOffset)
101
+ : (objectTop + objectHeight / 2 + aligningLineOffset),
102
+ y2: (activeObjectTop > objectTop)
103
+ ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset)
104
+ : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset)
105
+ });
106
+
107
+ activeObject.setPositionByOrigin(new fabric.Point(objectLeft - objectWidth / 2 - activeObjectWidth / 2, activeObjectTop), 'center', 'center');
108
+ }
109
+
110
+
111
+
112
+ // snaps if the left side of the active object touches the right side of the object
113
+ if (isInRange(activeObjectLeft - activeObjectWidth / 2, objectLeft + objectWidth / 2)) {
114
+
115
+ verticalInTheRange = true;
116
+ verticalLines.push({
117
+ x: objectLeft + objectWidth / 2,
118
+ y1: (objectTop < activeObjectTop)
119
+ ? (objectTop - objectHeight / 2 - aligningLineOffset)
120
+ : (objectTop + objectHeight / 2 + aligningLineOffset),
121
+ y2: (activeObjectTop > objectTop)
122
+ ? (activeObjectTop + activeObjectHeight / 2 + aligningLineOffset)
123
+ : (activeObjectTop - activeObjectHeight / 2 - aligningLineOffset)
124
+ });
125
+
126
+ activeObject.setPositionByOrigin(new fabric.Point(objectLeft + objectWidth / 2 + activeObjectWidth / 2, activeObjectTop), 'center', 'center');
127
+ }
128
+
129
+
130
+ // snaps if the bottom of the object touches the top of the active object
131
+ if (isInRange(objectTop + objectHeight / 2, activeObjectTop - activeObjectHeight / 2)) {
132
+
133
+ horizontalInTheRange = true;
134
+ horizontalLines.push({
135
+ y: objectTop + objectHeight / 2,
136
+ x1: (objectLeft < activeObjectLeft)
137
+ ? (objectLeft - objectWidth / 2 - aligningLineOffset)
138
+ : (objectLeft + objectWidth / 2 + aligningLineOffset),
139
+ x2: (activeObjectLeft > objectLeft)
140
+ ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset)
141
+ : (activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset)
142
+ });
143
+
144
+ activeObject.setPositionByOrigin(new fabric.Point(activeObjectLeft, objectTop + objectHeight / 2 + activeObjectHeight / 2), 'center', 'center');
145
+ }
146
+
147
+
148
+ // snaps if the top of the object touches the bottom of the active object
149
+ if (isInRange(objectTop - objectHeight / 2, activeObjectTop + activeObjectHeight / 2)) {
150
+
151
+ horizontalInTheRange = true;
152
+ horizontalLines.push({
153
+ y: objectTop - objectHeight / 2,
154
+ x1: (objectLeft < activeObjectLeft)
155
+ ? (objectLeft - objectWidth / 2 - aligningLineOffset)
156
+ : (objectLeft + objectWidth / 2 + aligningLineOffset),
157
+ x2: (activeObjectLeft > objectLeft)
158
+ ? (activeObjectLeft + activeObjectWidth / 2 + aligningLineOffset)
159
+ : (activeObjectLeft - activeObjectWidth / 2 - aligningLineOffset)
160
+ });
161
+
162
+ activeObject.setPositionByOrigin(new fabric.Point(activeObjectLeft, objectTop - objectHeight / 2 - activeObjectHeight / 2), 'center', 'center');
163
+ }
164
+
92
165
  // snap by the horizontal center line
93
166
  if (isInRange(objectLeft, activeObjectLeft)) {
94
167
  verticalInTheRange = true;
@@ -190,7 +263,9 @@ function initAligningGuidelines(canvas) {
190
263
  });
191
264
 
192
265
  canvas.on('before:render', function() {
193
- canvas.clearContext(canvas.contextTop);
266
+ if (canvas.contextTop) {
267
+ canvas.clearContext(canvas.contextTop);
268
+ }
194
269
  });
195
270
 
196
271
  canvas.on('after:render', function() {
@@ -68,7 +68,9 @@ function initCenteringGuidelines(canvas) {
68
68
  });
69
69
 
70
70
  canvas.on('before:render', function() {
71
- canvas.clearContext(canvas.contextTop);
71
+ if (canvas.contextTop) {
72
+ canvas.clearContext(canvas.contextTop);
73
+ }
72
74
  });
73
75
 
74
76
  canvas.on('after:render', function() {
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "fabric",
3
3
  "description": "Object model for HTML5 canvas, and SVG-to-canvas parser. Backed by jsdom and node-canvas.",
4
4
  "homepage": "http://fabricjs.com/",
5
- "version": "6.0.2",
5
+ "version": "6.2.0",
6
6
  "author": "Juriy Zaytsev <kangax@gmail.com>",
7
7
  "contributors": [
8
8
  {
@@ -117,12 +117,12 @@
117
117
  "prettier": "2.7.1",
118
118
  "ps-list": "^8.1.0",
119
119
  "qunit": "^2.17.2",
120
- "rollup": "^4.9.5",
120
+ "rollup": "^4.20.0",
121
121
  "semver": "^7.3.8",
122
122
  "source-map-support": "^0.5.21",
123
123
  "testem": "^3.8.0",
124
124
  "tslib": "^2.4.1",
125
- "typescript": "^4.9.4",
125
+ "typescript": "^5.5.4",
126
126
  "v8-to-istanbul": "^9.1.0"
127
127
  },
128
128
  "engines": {
@@ -0,0 +1,39 @@
1
+ import { ClassRegistry } from './ClassRegistry';
2
+
3
+ describe('ClassRegistry', () => {
4
+ let classRegistry: ClassRegistry;
5
+ beforeEach(() => {
6
+ classRegistry = new ClassRegistry();
7
+ });
8
+ it('will error if a class is request that is not registered', () => {
9
+ expect(() => classRegistry.getClass('any')).toThrow(
10
+ 'No class registered for any'
11
+ );
12
+ });
13
+ it('will return a class previously registered', () => {
14
+ classRegistry.setClass(Set, 'any');
15
+ expect(classRegistry.getClass('any')).toBe(Set);
16
+ });
17
+ it('will check if a class was previously registered', () => {
18
+ expect(classRegistry.has('any')).toBe(false);
19
+ classRegistry.setClass(Set, 'any');
20
+ expect(classRegistry.has('any')).toBe(true);
21
+ });
22
+ it('not specified will register the class using the type static prop', () => {
23
+ class Set2 extends Set {
24
+ static type = 'SETABC';
25
+ }
26
+ classRegistry.setClass(Set2);
27
+ expect(classRegistry.has('SETABC')).toBe(true);
28
+ expect(classRegistry.getClass('SETABC')).toBe(Set2);
29
+ expect(classRegistry.getClass('setabc')).toBe(Set2);
30
+ });
31
+ it('has a method for SVG parsing classes', () => {
32
+ class Set2 extends Set {
33
+ static type = 'SETABC';
34
+ }
35
+ classRegistry.setSVGClass(Set2);
36
+ expect(classRegistry.getSVGClass('SETABC')).toBe(undefined);
37
+ expect(classRegistry.getSVGClass('setabc')).toBe(Set2);
38
+ });
39
+ });
@@ -24,6 +24,10 @@ export class ClassRegistry {
24
24
  this[SVG] = new Map();
25
25
  }
26
26
 
27
+ has(classType: string): boolean {
28
+ return this[JSON].has(classType);
29
+ }
30
+
27
31
  getClass<T>(classType: string): T {
28
32
  const constructor = this[JSON].get(classType);
29
33
  if (!constructor) {
@@ -12,6 +12,8 @@ import type {
12
12
  LayoutAfterEvent,
13
13
  } from './LayoutManager/types';
14
14
  import type {
15
+ MODIFIED,
16
+ MODIFY_PATH,
15
17
  MODIFY_POLY,
16
18
  MOVING,
17
19
  RESIZING,
@@ -110,7 +112,8 @@ export type TModificationEvents =
110
112
  | typeof ROTATING
111
113
  | typeof SKEWING
112
114
  | typeof RESIZING
113
- | typeof MODIFY_POLY;
115
+ | typeof MODIFY_POLY
116
+ | typeof MODIFY_PATH;
114
117
 
115
118
  export interface ModifiedEvent<E extends Event = TPointerEvent> {
116
119
  e?: E;
@@ -119,14 +122,20 @@ export interface ModifiedEvent<E extends Event = TPointerEvent> {
119
122
  action?: string;
120
123
  }
121
124
 
122
- type ObjectModificationEvents = {
123
- moving: BasicTransformEvent;
124
- scaling: BasicTransformEvent;
125
- rotating: BasicTransformEvent;
126
- skewing: BasicTransformEvent;
127
- resizing: BasicTransformEvent;
128
- modifyPoly: BasicTransformEvent;
129
- modified: ModifiedEvent;
125
+ export interface ModifyPathEvent {
126
+ commandIndex: number;
127
+ pointIndex: number;
128
+ }
129
+
130
+ export type ObjectModificationEvents = {
131
+ [MOVING]: BasicTransformEvent;
132
+ [SCALING]: BasicTransformEvent;
133
+ [ROTATING]: BasicTransformEvent;
134
+ [SKEWING]: BasicTransformEvent;
135
+ [RESIZING]: BasicTransformEvent;
136
+ [MODIFY_POLY]: BasicTransformEvent;
137
+ [MODIFY_PATH]: BasicTransformEvent & ModifyPathEvent;
138
+ [MODIFIED]: ModifiedEvent;
130
139
  };
131
140
 
132
141
  type CanvasModificationEvents = {
@@ -137,6 +146,9 @@ type CanvasModificationEvents = {
137
146
  'object:skewing': BasicTransformEvent & { target: FabricObject };
138
147
  'object:resizing': BasicTransformEvent & { target: FabricObject };
139
148
  'object:modifyPoly': BasicTransformEvent & { target: FabricObject };
149
+ 'object:modifyPath': BasicTransformEvent & {
150
+ target: FabricObject;
151
+ } & ModifyPathEvent;
140
152
  'object:modified': ModifiedEvent;
141
153
  };
142
154
 
@@ -336,6 +348,6 @@ export interface CanvasEvents
336
348
  // IText
337
349
  'text:selection:changed': { target: IText };
338
350
  'text:changed': { target: IText };
339
- 'text:editing:entered': { target: IText };
351
+ 'text:editing:entered': { target: IText } & Partial<TEvent>;
340
352
  'text:editing:exited': { target: IText };
341
353
  }
@@ -16,6 +16,7 @@ describe('ActiveSelectionLayoutManager', () => {
16
16
  'skewing',
17
17
  'changed',
18
18
  'modifyPoly',
19
+ 'modifyPath',
19
20
  ];
20
21
 
21
22
  it('should subscribe activeSelection that contains object', () => {
@@ -119,6 +119,7 @@ describe('Layout Manager', () => {
119
119
  'skewing',
120
120
  'changed',
121
121
  'modifyPoly',
122
+ 'modifyPath',
122
123
  ];
123
124
 
124
125
  it('should subscribe object', () => {
@@ -3,6 +3,7 @@ import {
3
3
  CENTER,
4
4
  CHANGED,
5
5
  MODIFIED,
6
+ MODIFY_PATH,
6
7
  MODIFY_POLY,
7
8
  MOVING,
8
9
  RESIZING,
@@ -97,6 +98,7 @@ export class LayoutManager {
97
98
  SKEWING,
98
99
  CHANGED,
99
100
  MODIFY_POLY,
101
+ MODIFY_PATH,
100
102
  ] as (TModificationEvents & 'modified')[]
101
103
  ).map((key) =>
102
104
  object.on(key, (e) =>
package/src/Shadow.ts CHANGED
@@ -126,12 +126,7 @@ export class Shadow {
126
126
  constructor(arg0: string | Partial<TClassProperties<Shadow>>) {
127
127
  const options: Partial<TClassProperties<Shadow>> =
128
128
  typeof arg0 === 'string' ? Shadow.parseShadow(arg0) : arg0;
129
- Object.assign(this, Shadow.ownDefaults);
130
- for (const prop in options) {
131
- // @ts-expect-error for loops are so messy in TS
132
- this[prop] = options[prop];
133
- }
134
-
129
+ Object.assign(this, Shadow.ownDefaults, options);
135
130
  this.id = uid();
136
131
  }
137
132
 
@@ -1,4 +1,4 @@
1
- import { LEFT, NONE, TOP } from '../../constants';
1
+ import { NONE } from '../../constants';
2
2
  import type { TSize } from '../../typedefs';
3
3
  import {
4
4
  getDocumentFromElement,
@@ -50,25 +50,21 @@ export const setCSSDimensions = (
50
50
  * @return {Object} Object with "left" and "top" properties
51
51
  */
52
52
  export function getElementOffset(element: HTMLElement) {
53
- let box = { left: 0, top: 0 };
54
53
  const doc = element && getDocumentFromElement(element),
55
- offset = { left: 0, top: 0 },
56
- offsetAttributes = {
57
- borderLeftWidth: LEFT,
58
- borderTopWidth: TOP,
59
- paddingLeft: LEFT,
60
- paddingTop: TOP,
61
- } as const;
54
+ offset = { left: 0, top: 0 };
62
55
 
63
56
  if (!doc) {
64
57
  return offset;
65
58
  }
66
- const elemStyle =
67
- getWindowFromElement(element)?.getComputedStyle(element, null) || {};
68
- for (const attr in offsetAttributes) {
69
- // @ts-expect-error TS learn to iterate!
70
- offset[offsetAttributes[attr]] += parseInt(elemStyle[attr], 10) || 0;
71
- }
59
+ const elemStyle: CSSStyleDeclaration =
60
+ getWindowFromElement(element)?.getComputedStyle(element, null) ||
61
+ ({} as CSSStyleDeclaration);
62
+ offset.left += parseInt(elemStyle.borderLeftWidth, 10) || 0;
63
+ offset.top += parseInt(elemStyle.borderTopWidth, 10) || 0;
64
+ offset.left += parseInt(elemStyle.paddingLeft, 10) || 0;
65
+ offset.top += parseInt(elemStyle.paddingTop, 10) || 0;
66
+
67
+ let box = { left: 0, top: 0 };
72
68
 
73
69
  const docElem = doc.documentElement;
74
70
  if (typeof element.getBoundingClientRect !== 'undefined') {
@@ -2,6 +2,7 @@ import { FabricObject } from '../shapes/Object/FabricObject';
2
2
  import { Point } from '../Point';
3
3
  import { Canvas } from './Canvas';
4
4
  import { Group } from '../shapes/Group';
5
+ import { ActiveSelection } from '../shapes/ActiveSelection';
5
6
 
6
7
  describe('Selectable Canvas', () => {
7
8
  describe('_pointIsInObjectSelectionArea', () => {
@@ -481,4 +482,21 @@ describe('Selectable Canvas', () => {
481
482
  expect(spy).toHaveBeenCalledTimes(1);
482
483
  });
483
484
  });
485
+
486
+ describe('_discardActiveObject', () => {
487
+ test('will clear hovered target if the target is the active selection', () => {
488
+ const objects = [new FabricObject(), new FabricObject()];
489
+ const canvas = new Canvas();
490
+ canvas.add(...objects);
491
+ const as = new ActiveSelection(objects);
492
+ as.canvas = canvas;
493
+ canvas._hoveredTarget = as;
494
+ canvas.setActiveObject(as);
495
+ expect(canvas._activeObject).toBe(as);
496
+ expect(canvas._hoveredTarget).toBe(as);
497
+ canvas.discardActiveObject();
498
+ expect(canvas._activeObject).toBe(undefined);
499
+ expect(canvas._hoveredTarget).toBe(undefined);
500
+ });
501
+ });
484
502
  });
@@ -1189,6 +1189,9 @@ export class SelectableCanvas<EventSpec extends CanvasEvents = CanvasEvents>
1189
1189
  if (this._currentTransform && this._currentTransform.target === obj) {
1190
1190
  this.endCurrentTransform(e);
1191
1191
  }
1192
+ if (isActiveSelection(obj) && obj === this._hoveredTarget) {
1193
+ this._hoveredTarget = undefined;
1194
+ }
1192
1195
  this._activeObject = undefined;
1193
1196
  return true;
1194
1197
  }
package/src/constants.ts CHANGED
@@ -33,6 +33,7 @@ export const ROTATE = 'rotate';
33
33
  export const SKEWING = 'skewing';
34
34
  export const RESIZING = 'resizing';
35
35
  export const MODIFY_POLY = 'modifyPoly';
36
+ export const MODIFY_PATH = 'modifyPath';
36
37
  export const CHANGED = 'changed';
37
38
  export const SCALE = 'scale';
38
39
  export const SCALE_X = 'scaleX';
@@ -15,12 +15,14 @@ export type ControlRenderingStyleOverride = Partial<
15
15
  >
16
16
  >;
17
17
 
18
- export type ControlRenderer = (
18
+ export type ControlRenderer<
19
+ O extends InteractiveFabricObject = InteractiveFabricObject
20
+ > = (
19
21
  ctx: CanvasRenderingContext2D,
20
22
  left: number,
21
23
  top: number,
22
24
  styleOverride: ControlRenderingStyleOverride,
23
- fabricObject: InteractiveFabricObject
25
+ fabricObject: O
24
26
  ) => void;
25
27
 
26
28
  /**
@@ -1,11 +1,11 @@
1
1
  import type {
2
- BasicTransformEvent,
2
+ ObjectModificationEvents,
3
3
  TModificationEvents,
4
4
  } from '../EventTypeDefs';
5
5
 
6
6
  export const fireEvent = (
7
7
  eventName: TModificationEvents,
8
- options: BasicTransformEvent
8
+ options: ObjectModificationEvents[typeof eventName]
9
9
  ) => {
10
10
  const {
11
11
  transform: { target },
@@ -20,3 +20,4 @@ export { skewCursorStyleHandler, skewHandlerX, skewHandlerY } from './skew';
20
20
  export { getLocalPoint } from './util';
21
21
  export { wrapWithFireEvent } from './wrapWithFireEvent';
22
22
  export { wrapWithFixedAnchor } from './wrapWithFixedAnchor';
23
+ export * from './pathControl';
@@ -0,0 +1,75 @@
1
+ /* eslint-disable no-restricted-globals */
2
+ import { Canvas } from '../canvas/Canvas';
3
+ import { Path } from '../shapes/Path';
4
+ import { createPathControls } from './pathControl';
5
+
6
+ describe('pathControls', () => {
7
+ it('should fire events', () => {
8
+ const path = new Path('M 50 50 C 150 100, 50 100, 50 150');
9
+ path.controls = createPathControls(path);
10
+ expect(Object.keys(path.controls)).toEqual([
11
+ 'c_0_M',
12
+ 'c_1_C',
13
+ 'c_1_C_CP_1',
14
+ 'c_1_C_CP_2',
15
+ ]);
16
+ const canvas = new Canvas();
17
+ canvas.add(path);
18
+ canvas.setActiveObject(path);
19
+ const spyModifyPath = jest.fn();
20
+ const spyModified = jest.fn();
21
+ path.on('modifyPath', spyModifyPath);
22
+ path.on('modified', spyModified);
23
+ canvas
24
+ .getSelectionElement()
25
+ .dispatchEvent(new MouseEvent('mousedown', { clientX: 50, clientY: 50 }));
26
+ canvas._setupCurrentTransform(
27
+ new MouseEvent('mousedown', { clientX: 50, clientY: 50 }),
28
+ path,
29
+ true
30
+ );
31
+ document.dispatchEvent(
32
+ new MouseEvent('mousemove', { clientX: 55, clientY: 55 })
33
+ );
34
+ document.dispatchEvent(
35
+ new MouseEvent('mouseup', { clientX: 55, clientY: 55 })
36
+ );
37
+
38
+ expect(spyModifyPath).toHaveBeenCalledWith(
39
+ expect.objectContaining({
40
+ commandIndex: 0,
41
+ pointIndex: 1,
42
+ transform: expect.objectContaining({
43
+ action: 'modifyPath',
44
+ }),
45
+ })
46
+ );
47
+
48
+ canvas
49
+ .getSelectionElement()
50
+ .dispatchEvent(
51
+ new MouseEvent('mousedown', { clientX: 50, clientY: 150 })
52
+ );
53
+ canvas._setupCurrentTransform(
54
+ new MouseEvent('mousedown', { clientX: 50, clientY: 150 }),
55
+ path,
56
+ true
57
+ );
58
+ document.dispatchEvent(
59
+ new MouseEvent('mousemove', { clientX: 55, clientY: 155 })
60
+ );
61
+ document.dispatchEvent(
62
+ new MouseEvent('mouseup', { clientX: 55, clientY: 155 })
63
+ );
64
+
65
+ expect(spyModifyPath).toHaveBeenCalledWith(
66
+ expect.objectContaining({
67
+ commandIndex: 1,
68
+ pointIndex: 5,
69
+ transform: expect.objectContaining({
70
+ action: 'modifyPath',
71
+ }),
72
+ })
73
+ );
74
+ });
75
+ });