fabric 7.1.0 → 7.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 (253) hide show
  1. package/.husky/pre-commit +1 -0
  2. package/CHANGELOG.md +13 -0
  3. package/dist/extensions/cropping_controls/croppingControls.d.ts +12 -8
  4. package/dist/extensions/cropping_controls/croppingControls.d.ts.map +1 -1
  5. package/dist/extensions/cropping_controls/croppingHandlers.d.ts +19 -1
  6. package/dist/extensions/cropping_controls/croppingHandlers.d.ts.map +1 -1
  7. package/dist/extensions/cropping_controls/enterCropMode.d.ts.map +1 -1
  8. package/dist/index.js +189 -160
  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 +189 -160
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/index.node.cjs +189 -160
  17. package/dist/index.node.cjs.map +1 -1
  18. package/dist/index.node.mjs +189 -160
  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 +3 -0
  23. package/dist/src/EventTypeDefs.d.ts.map +1 -1
  24. package/dist/src/Pattern/Pattern.d.ts.map +1 -1
  25. package/dist/src/Pattern/Pattern.min.mjs +1 -1
  26. package/dist/src/Pattern/Pattern.min.mjs.map +1 -1
  27. package/dist/src/Pattern/Pattern.mjs +2 -1
  28. package/dist/src/Pattern/Pattern.mjs.map +1 -1
  29. package/dist/src/Shadow.d.ts +1 -1
  30. package/dist/src/Shadow.d.ts.map +1 -1
  31. package/dist/src/Shadow.min.mjs +1 -1
  32. package/dist/src/Shadow.min.mjs.map +1 -1
  33. package/dist/src/Shadow.mjs +5 -4
  34. package/dist/src/Shadow.mjs.map +1 -1
  35. package/dist/src/canvas/CanvasOptions.d.ts.map +1 -1
  36. package/dist/src/canvas/CanvasOptions.min.mjs.map +1 -1
  37. package/dist/src/canvas/CanvasOptions.mjs.map +1 -1
  38. package/dist/src/canvas/SelectableCanvas.d.ts +2 -0
  39. package/dist/src/canvas/SelectableCanvas.d.ts.map +1 -1
  40. package/dist/src/canvas/SelectableCanvas.min.mjs +1 -1
  41. package/dist/src/canvas/SelectableCanvas.min.mjs.map +1 -1
  42. package/dist/src/canvas/SelectableCanvas.mjs +6 -1
  43. package/dist/src/canvas/SelectableCanvas.mjs.map +1 -1
  44. package/dist/src/canvas/StaticCanvas.d.ts.map +1 -1
  45. package/dist/src/canvas/StaticCanvas.min.mjs +1 -1
  46. package/dist/src/canvas/StaticCanvas.min.mjs.map +1 -1
  47. package/dist/src/canvas/StaticCanvas.mjs +3 -1
  48. package/dist/src/canvas/StaticCanvas.mjs.map +1 -1
  49. package/dist/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
  50. package/dist/src/canvas/StaticCanvasOptions.min.mjs.map +1 -1
  51. package/dist/src/canvas/StaticCanvasOptions.mjs.map +1 -1
  52. package/dist/src/controls/Control.d.ts +9 -1
  53. package/dist/src/controls/Control.d.ts.map +1 -1
  54. package/dist/src/controls/Control.min.mjs +1 -1
  55. package/dist/src/controls/Control.min.mjs.map +1 -1
  56. package/dist/src/controls/Control.mjs +8 -0
  57. package/dist/src/controls/Control.mjs.map +1 -1
  58. package/dist/src/gradient/Gradient.d.ts.map +1 -1
  59. package/dist/src/gradient/Gradient.min.mjs +1 -1
  60. package/dist/src/gradient/Gradient.min.mjs.map +1 -1
  61. package/dist/src/gradient/Gradient.mjs +19 -6
  62. package/dist/src/gradient/Gradient.mjs.map +1 -1
  63. package/dist/src/shapes/Circle.d.ts.map +1 -1
  64. package/dist/src/shapes/Circle.min.mjs +1 -1
  65. package/dist/src/shapes/Circle.min.mjs.map +1 -1
  66. package/dist/src/shapes/Circle.mjs +10 -7
  67. package/dist/src/shapes/Circle.mjs.map +1 -1
  68. package/dist/src/shapes/Ellipse.d.ts.map +1 -1
  69. package/dist/src/shapes/Ellipse.min.mjs +1 -1
  70. package/dist/src/shapes/Ellipse.min.mjs.map +1 -1
  71. package/dist/src/shapes/Ellipse.mjs +2 -1
  72. package/dist/src/shapes/Ellipse.mjs.map +1 -1
  73. package/dist/src/shapes/Group.d.ts.map +1 -1
  74. package/dist/src/shapes/Group.min.mjs +1 -1
  75. package/dist/src/shapes/Group.min.mjs.map +1 -1
  76. package/dist/src/shapes/Group.mjs +2 -1
  77. package/dist/src/shapes/Group.mjs.map +1 -1
  78. package/dist/src/shapes/IText/IText.d.ts.map +1 -1
  79. package/dist/src/shapes/IText/IText.min.mjs.map +1 -1
  80. package/dist/src/shapes/IText/IText.mjs.map +1 -1
  81. package/dist/src/shapes/Image.d.ts +1 -1
  82. package/dist/src/shapes/Image.d.ts.map +1 -1
  83. package/dist/src/shapes/Image.min.mjs +1 -1
  84. package/dist/src/shapes/Image.min.mjs.map +1 -1
  85. package/dist/src/shapes/Image.mjs +4 -3
  86. package/dist/src/shapes/Image.mjs.map +1 -1
  87. package/dist/src/shapes/Line.d.ts.map +1 -1
  88. package/dist/src/shapes/Line.min.mjs +1 -1
  89. package/dist/src/shapes/Line.min.mjs.map +1 -1
  90. package/dist/src/shapes/Line.mjs +6 -10
  91. package/dist/src/shapes/Line.mjs.map +1 -1
  92. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  93. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs +1 -1
  94. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.min.mjs.map +1 -1
  95. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs +5 -4
  96. package/dist/src/shapes/Object/FabricObjectSVGExportMixin.mjs.map +1 -1
  97. package/dist/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  98. package/dist/src/shapes/Object/InteractiveObject.min.mjs.map +1 -1
  99. package/dist/src/shapes/Object/InteractiveObject.mjs.map +1 -1
  100. package/dist/src/shapes/Object/Object.d.ts.map +1 -1
  101. package/dist/src/shapes/Object/Object.min.mjs +1 -1
  102. package/dist/src/shapes/Object/Object.min.mjs.map +1 -1
  103. package/dist/src/shapes/Object/Object.mjs +3 -0
  104. package/dist/src/shapes/Object/Object.mjs.map +1 -1
  105. package/dist/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -1
  106. package/dist/src/shapes/Object/types/ObjectProps.d.ts.map +1 -1
  107. package/dist/src/shapes/Path.d.ts.map +1 -1
  108. package/dist/src/shapes/Path.min.mjs.map +1 -1
  109. package/dist/src/shapes/Path.mjs +1 -2
  110. package/dist/src/shapes/Path.mjs.map +1 -1
  111. package/dist/src/shapes/Polyline.d.ts.map +1 -1
  112. package/dist/src/shapes/Polyline.min.mjs +1 -1
  113. package/dist/src/shapes/Polyline.min.mjs.map +1 -1
  114. package/dist/src/shapes/Polyline.mjs +10 -6
  115. package/dist/src/shapes/Polyline.mjs.map +1 -1
  116. package/dist/src/shapes/Rect.d.ts.map +1 -1
  117. package/dist/src/shapes/Rect.min.mjs +1 -1
  118. package/dist/src/shapes/Rect.min.mjs.map +1 -1
  119. package/dist/src/shapes/Rect.mjs +2 -1
  120. package/dist/src/shapes/Rect.mjs.map +1 -1
  121. package/dist/src/shapes/Text/Text.d.ts.map +1 -1
  122. package/dist/src/shapes/Text/Text.min.mjs.map +1 -1
  123. package/dist/src/shapes/Text/Text.mjs.map +1 -1
  124. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs +1 -1
  125. package/dist/src/shapes/Text/TextSVGExportMixin.min.mjs.map +1 -1
  126. package/dist/src/shapes/Text/TextSVGExportMixin.mjs +5 -5
  127. package/dist/src/shapes/Text/TextSVGExportMixin.mjs.map +1 -1
  128. package/dist/src/shapes/Textbox.d.ts.map +1 -1
  129. package/dist/src/shapes/Textbox.min.mjs.map +1 -1
  130. package/dist/src/shapes/Textbox.mjs.map +1 -1
  131. package/dist/src/shapes/Triangle.d.ts.map +1 -1
  132. package/dist/src/shapes/Triangle.min.mjs.map +1 -1
  133. package/dist/src/shapes/Triangle.mjs.map +1 -1
  134. package/dist/src/util/lang_string.d.ts +1 -1
  135. package/dist/src/util/lang_string.d.ts.map +1 -1
  136. package/dist/src/util/lang_string.min.mjs +1 -1
  137. package/dist/src/util/lang_string.min.mjs.map +1 -1
  138. package/dist/src/util/lang_string.mjs +1 -1
  139. package/dist/src/util/lang_string.mjs.map +1 -1
  140. package/dist/src/util/misc/svgParsing.d.ts.map +1 -1
  141. package/dist/src/util/misc/svgParsing.min.mjs +1 -1
  142. package/dist/src/util/misc/svgParsing.min.mjs.map +1 -1
  143. package/dist/src/util/misc/svgParsing.mjs +2 -1
  144. package/dist/src/util/misc/svgParsing.mjs.map +1 -1
  145. package/dist-extensions/cropping_controls/croppingControls.mjs +39 -9
  146. package/dist-extensions/cropping_controls/croppingControls.mjs.map +1 -1
  147. package/dist-extensions/cropping_controls/croppingHandlers.mjs +84 -2
  148. package/dist-extensions/cropping_controls/croppingHandlers.mjs.map +1 -1
  149. package/dist-extensions/cropping_controls/enterCropMode.mjs +7 -2
  150. package/dist-extensions/cropping_controls/enterCropMode.mjs.map +1 -1
  151. package/dist-extensions/extensions/cropping_controls/croppingControls.d.ts +12 -8
  152. package/dist-extensions/extensions/cropping_controls/croppingControls.d.ts.map +1 -1
  153. package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts +19 -1
  154. package/dist-extensions/extensions/cropping_controls/croppingHandlers.d.ts.map +1 -1
  155. package/dist-extensions/extensions/cropping_controls/enterCropMode.d.ts.map +1 -1
  156. package/dist-extensions/fabric-extensions.min.js +1 -1
  157. package/dist-extensions/fabric-extensions.min.js.map +1 -1
  158. package/dist-extensions/src/EventTypeDefs.d.ts +3 -0
  159. package/dist-extensions/src/EventTypeDefs.d.ts.map +1 -1
  160. package/dist-extensions/src/Pattern/Pattern.d.ts.map +1 -1
  161. package/dist-extensions/src/Shadow.d.ts +1 -1
  162. package/dist-extensions/src/Shadow.d.ts.map +1 -1
  163. package/dist-extensions/src/canvas/CanvasOptions.d.ts.map +1 -1
  164. package/dist-extensions/src/canvas/SelectableCanvas.d.ts +2 -0
  165. package/dist-extensions/src/canvas/SelectableCanvas.d.ts.map +1 -1
  166. package/dist-extensions/src/canvas/StaticCanvas.d.ts.map +1 -1
  167. package/dist-extensions/src/canvas/StaticCanvasOptions.d.ts.map +1 -1
  168. package/dist-extensions/src/controls/Control.d.ts +9 -1
  169. package/dist-extensions/src/controls/Control.d.ts.map +1 -1
  170. package/dist-extensions/src/gradient/Gradient.d.ts.map +1 -1
  171. package/dist-extensions/src/shapes/Circle.d.ts.map +1 -1
  172. package/dist-extensions/src/shapes/Ellipse.d.ts.map +1 -1
  173. package/dist-extensions/src/shapes/Group.d.ts.map +1 -1
  174. package/dist-extensions/src/shapes/IText/IText.d.ts.map +1 -1
  175. package/dist-extensions/src/shapes/Image.d.ts.map +1 -1
  176. package/dist-extensions/src/shapes/Line.d.ts.map +1 -1
  177. package/dist-extensions/src/shapes/Object/FabricObjectSVGExportMixin.d.ts.map +1 -1
  178. package/dist-extensions/src/shapes/Object/InteractiveObject.d.ts.map +1 -1
  179. package/dist-extensions/src/shapes/Object/Object.d.ts.map +1 -1
  180. package/dist-extensions/src/shapes/Object/types/FabricObjectProps.d.ts.map +1 -1
  181. package/dist-extensions/src/shapes/Object/types/ObjectProps.d.ts.map +1 -1
  182. package/dist-extensions/src/shapes/Path.d.ts +1 -1
  183. package/dist-extensions/src/shapes/Path.d.ts.map +1 -1
  184. package/dist-extensions/src/shapes/Polyline.d.ts.map +1 -1
  185. package/dist-extensions/src/shapes/Rect.d.ts.map +1 -1
  186. package/dist-extensions/src/shapes/Text/Text.d.ts.map +1 -1
  187. package/dist-extensions/src/shapes/Textbox.d.ts.map +1 -1
  188. package/dist-extensions/src/shapes/Triangle.d.ts.map +1 -1
  189. package/dist-extensions/src/util/lang_string.d.ts +1 -1
  190. package/dist-extensions/src/util/lang_string.d.ts.map +1 -1
  191. package/dist-extensions/src/util/misc/svgParsing.d.ts.map +1 -1
  192. package/eslint.config.mjs +2 -0
  193. package/extensions/cropping_controls/croppingControls.spec.ts +65 -27
  194. package/extensions/cropping_controls/croppingControls.ts +40 -8
  195. package/extensions/cropping_controls/croppingHandlers.spec.ts +355 -46
  196. package/extensions/cropping_controls/croppingHandlers.ts +123 -0
  197. package/extensions/cropping_controls/enterCropMode.ts +6 -2
  198. package/package.json +17 -8
  199. package/src/ClassRegistry.spec.ts +18 -19
  200. package/src/EventTypeDefs.ts +13 -11
  201. package/src/Pattern/Pattern.spec.ts +12 -0
  202. package/src/Pattern/Pattern.ts +3 -2
  203. package/src/Shadow.ts +9 -8
  204. package/src/brushes/PencilBrush.spec.ts +11 -11
  205. package/src/canvas/Canvas-dispose.spec.ts +8 -7
  206. package/src/canvas/Canvas.spec.ts +27 -29
  207. package/src/canvas/CanvasOptions.ts +2 -1
  208. package/src/canvas/SelectableCanvas.ts +11 -4
  209. package/src/canvas/StaticCanvas.spec.ts +20 -0
  210. package/src/canvas/StaticCanvas.ts +7 -4
  211. package/src/canvas/StaticCanvasOptions.ts +1 -3
  212. package/src/controls/Control.ts +24 -1
  213. package/src/gradient/Gradient.spec.ts +101 -46
  214. package/src/gradient/Gradient.ts +27 -14
  215. package/src/shapes/Circle.spec.ts +10 -39
  216. package/src/shapes/Circle.ts +11 -11
  217. package/src/shapes/Ellipse.spec.ts +8 -37
  218. package/src/shapes/Ellipse.ts +7 -7
  219. package/src/shapes/Group.ts +3 -3
  220. package/src/shapes/IText/IText-click-behavior.spec.ts +36 -49
  221. package/src/shapes/IText/IText.ts +5 -6
  222. package/src/shapes/IText/__snapshots__/ITextBehavior.test.ts.snap +6 -6
  223. package/src/shapes/Image.spec.ts +17 -33
  224. package/src/shapes/Image.ts +15 -11
  225. package/src/shapes/Line.spec.ts +4 -30
  226. package/src/shapes/Line.ts +11 -16
  227. package/src/shapes/Object/FabricObjectSVGExportMixin.ts +11 -4
  228. package/src/shapes/Object/InteractiveObject.ts +4 -4
  229. package/src/shapes/Object/Object.ts +6 -5
  230. package/src/shapes/Object/objectSvgExport.spec.ts +112 -0
  231. package/src/shapes/Object/types/FabricObjectProps.ts +1 -4
  232. package/src/shapes/Object/types/ObjectProps.ts +1 -3
  233. package/src/shapes/Path.spec.ts +4 -27
  234. package/src/shapes/Path.ts +2 -4
  235. package/src/shapes/Polygon.spec.ts +4 -31
  236. package/src/shapes/Polyline.spec.ts +4 -31
  237. package/src/shapes/Polyline.ts +11 -12
  238. package/src/shapes/Rect.spec.ts +25 -33
  239. package/src/shapes/Rect.ts +7 -7
  240. package/src/shapes/Text/Text.spec.ts +3 -32
  241. package/src/shapes/Text/Text.ts +5 -6
  242. package/src/shapes/Text/TextSVGExportMixin.ts +14 -14
  243. package/src/shapes/Text/__snapshots__/Text.spec.ts.snap +1 -1
  244. package/src/shapes/Textbox.spec.ts +5 -5
  245. package/src/shapes/Textbox.ts +6 -5
  246. package/src/shapes/Triangle.ts +4 -4
  247. package/src/shapes/__snapshots__/Image.spec.ts.snap +4 -4
  248. package/src/shapes/__snapshots__/Textbox.spec.ts.snap +5 -5
  249. package/src/util/lang_string.ts +3 -2
  250. package/src/util/misc/svgParsing.ts +2 -1
  251. package/tsconfig.spec.json +1 -0
  252. package/vitest.config.ts +12 -2
  253. package/vitest.extend.ts +6 -2
@@ -9,11 +9,26 @@ import {
9
9
  } from './croppingHandlers';
10
10
 
11
11
  describe('createImageCroppingControls', () => {
12
- test('returns an object with 8 control properties', () => {
12
+ test('returns an object with 12 control properties', () => {
13
13
  const controls = createImageCroppingControls();
14
14
  expect(typeof controls).toBe('object');
15
15
  expect(Object.keys(controls)).toEqual(
16
- expect.arrayContaining(['ml', 'mr', 'mb', 'mt', 'tl', 'tr', 'bl', 'br']),
16
+ expect.arrayContaining([
17
+ // scaling controls
18
+ 'tls',
19
+ 'brs',
20
+ 'trs',
21
+ 'bls',
22
+ // cropping controls
23
+ 'mlc',
24
+ 'mrc',
25
+ 'mbc',
26
+ 'mtc',
27
+ 'tlc',
28
+ 'trc',
29
+ 'blc',
30
+ 'brc',
31
+ ]),
17
32
  );
18
33
  });
19
34
 
@@ -25,53 +40,76 @@ describe('createImageCroppingControls', () => {
25
40
  });
26
41
  });
27
42
 
28
- test('ml control uses changeCropX as actionHandler', () => {
43
+ // Scaling controls tests
44
+ test('tls control uses scaleEquallyCropGenerator actionHandler', () => {
29
45
  const controls = createImageCroppingControls();
30
- expect(controls.ml.actionHandler).toBe(changeCropX);
46
+ expect(typeof controls.tls.actionHandler).toBe('function');
31
47
  });
32
48
 
33
- test('mr control uses changeCropWidth as actionHandler', () => {
49
+ test('brs control uses scaleEquallyCropGenerator actionHandler', () => {
34
50
  const controls = createImageCroppingControls();
35
- expect(controls.mr.actionHandler).toBe(changeCropWidth);
51
+ expect(typeof controls.brs.actionHandler).toBe('function');
36
52
  });
37
53
 
38
- test('mb control uses changeCropHeight as actionHandler', () => {
54
+ test('trs control uses scaleEquallyCropGenerator actionHandler', () => {
39
55
  const controls = createImageCroppingControls();
40
- expect(controls.mb.actionHandler).toBe(changeCropHeight);
56
+ expect(typeof controls.trs.actionHandler).toBe('function');
41
57
  });
42
58
 
43
- test('mt control uses changeCropY as actionHandler', () => {
59
+ test('bls control uses scaleEquallyCropGenerator actionHandler', () => {
44
60
  const controls = createImageCroppingControls();
45
- expect(controls.mt.actionHandler).toBe(changeCropY);
61
+ expect(typeof controls.bls.actionHandler).toBe('function');
46
62
  });
47
63
 
48
- test('tl control combines changeCropX and changeCropY', () => {
64
+ // Cropping middle controls tests
65
+ test('mlc control uses changeCropX as actionHandler', () => {
49
66
  const controls = createImageCroppingControls();
50
- // tl uses a custom function, so we verify it's a function
51
- expect(typeof controls.tl.actionHandler).toBe('function');
67
+ expect(controls.mlc.actionHandler).toBe(changeCropX);
68
+ });
69
+
70
+ test('mrc control uses changeCropWidth as actionHandler', () => {
71
+ const controls = createImageCroppingControls();
72
+ expect(controls.mrc.actionHandler).toBe(changeCropWidth);
73
+ });
74
+
75
+ test('mbc control uses changeCropHeight as actionHandler', () => {
76
+ const controls = createImageCroppingControls();
77
+ expect(controls.mbc.actionHandler).toBe(changeCropHeight);
78
+ });
79
+
80
+ test('mtc control uses changeCropY as actionHandler', () => {
81
+ const controls = createImageCroppingControls();
82
+ expect(controls.mtc.actionHandler).toBe(changeCropY);
83
+ });
84
+
85
+ // Cropping corner controls tests
86
+ test('tlc control combines changeCropX and changeCropY', () => {
87
+ const controls = createImageCroppingControls();
88
+ // tlc uses a custom function, so we verify it's a function
89
+ expect(typeof controls.tlc.actionHandler).toBe('function');
52
90
  // The handler is not directly equal to either function since it's a wrapper
53
- expect(controls.tl.actionHandler).not.toBe(changeCropX);
54
- expect(controls.tl.actionHandler).not.toBe(changeCropY);
91
+ expect(controls.tlc.actionHandler).not.toBe(changeCropX);
92
+ expect(controls.tlc.actionHandler).not.toBe(changeCropY);
55
93
  });
56
94
 
57
- test('tr control combines changeCropWidth and changeCropY', () => {
95
+ test('trc control combines changeCropWidth and changeCropY', () => {
58
96
  const controls = createImageCroppingControls();
59
- expect(typeof controls.tr.actionHandler).toBe('function');
60
- expect(controls.tr.actionHandler).not.toBe(changeCropWidth);
61
- expect(controls.tr.actionHandler).not.toBe(changeCropY);
97
+ expect(typeof controls.trc.actionHandler).toBe('function');
98
+ expect(controls.trc.actionHandler).not.toBe(changeCropWidth);
99
+ expect(controls.trc.actionHandler).not.toBe(changeCropY);
62
100
  });
63
101
 
64
- test('bl control combines changeCropHeight and changeCropX', () => {
102
+ test('blc control combines changeCropHeight and changeCropX', () => {
65
103
  const controls = createImageCroppingControls();
66
- expect(typeof controls.bl.actionHandler).toBe('function');
67
- expect(controls.bl.actionHandler).not.toBe(changeCropHeight);
68
- expect(controls.bl.actionHandler).not.toBe(changeCropX);
104
+ expect(typeof controls.blc.actionHandler).toBe('function');
105
+ expect(controls.blc.actionHandler).not.toBe(changeCropHeight);
106
+ expect(controls.blc.actionHandler).not.toBe(changeCropX);
69
107
  });
70
108
 
71
- test('br control combines changeCropHeight and changeCropWidth', () => {
109
+ test('brc control combines changeCropHeight and changeCropWidth', () => {
72
110
  const controls = createImageCroppingControls();
73
- expect(typeof controls.br.actionHandler).toBe('function');
74
- expect(controls.br.actionHandler).not.toBe(changeCropHeight);
75
- expect(controls.br.actionHandler).not.toBe(changeCropWidth);
111
+ expect(typeof controls.brc.actionHandler).toBe('function');
112
+ expect(controls.brc.actionHandler).not.toBe(changeCropHeight);
113
+ expect(controls.brc.actionHandler).not.toBe(changeCropWidth);
76
114
  });
77
115
  });
@@ -4,6 +4,8 @@ import {
4
4
  changeCropWidth,
5
5
  changeCropX,
6
6
  changeCropY,
7
+ ghostScalePositionHandler,
8
+ scaleEquallyCropGenerator,
7
9
  } from './croppingHandlers';
8
10
  import { renderCornerControl } from './renderCornerControl';
9
11
 
@@ -12,7 +14,37 @@ const { scaleCursorStyleHandler } = controlsUtils;
12
14
  const cropActionName = () => 'crop';
13
15
  // use this function if you want to generate new controls for every instance
14
16
  export const createImageCroppingControls = () => ({
15
- ml: new Control({
17
+ // scaling image
18
+ tls: new Control({
19
+ x: -0.5,
20
+ y: -0.5,
21
+ cursorStyleHandler: scaleCursorStyleHandler,
22
+ positionHandler: ghostScalePositionHandler,
23
+ actionHandler: scaleEquallyCropGenerator(-0.5, -0.5),
24
+ }),
25
+ brs: new Control({
26
+ x: 0.5,
27
+ y: 0.5,
28
+ cursorStyleHandler: scaleCursorStyleHandler,
29
+ positionHandler: ghostScalePositionHandler,
30
+ actionHandler: scaleEquallyCropGenerator(0.5, 0.5),
31
+ }),
32
+ trs: new Control({
33
+ x: 0.5,
34
+ y: -0.5,
35
+ cursorStyleHandler: scaleCursorStyleHandler,
36
+ positionHandler: ghostScalePositionHandler,
37
+ actionHandler: scaleEquallyCropGenerator(0.5, -0.5),
38
+ }),
39
+ bls: new Control({
40
+ x: -0.5,
41
+ y: 0.5,
42
+ cursorStyleHandler: scaleCursorStyleHandler,
43
+ positionHandler: ghostScalePositionHandler,
44
+ actionHandler: scaleEquallyCropGenerator(-0.5, 0.5),
45
+ }),
46
+ // cropping image
47
+ mlc: new Control({
16
48
  x: -0.5,
17
49
  y: 0,
18
50
  sizeX: 4,
@@ -22,7 +54,7 @@ export const createImageCroppingControls = () => ({
22
54
  getActionName: cropActionName,
23
55
  }),
24
56
 
25
- mr: new Control({
57
+ mrc: new Control({
26
58
  x: 0.5,
27
59
  y: 0,
28
60
  sizeX: 4,
@@ -32,7 +64,7 @@ export const createImageCroppingControls = () => ({
32
64
  getActionName: cropActionName,
33
65
  }),
34
66
 
35
- mb: new Control({
67
+ mbc: new Control({
36
68
  x: 0,
37
69
  y: 0.5,
38
70
  sizeX: 20,
@@ -42,7 +74,7 @@ export const createImageCroppingControls = () => ({
42
74
  getActionName: cropActionName,
43
75
  }),
44
76
 
45
- mt: new Control({
77
+ mtc: new Control({
46
78
  x: 0,
47
79
  y: -0.5,
48
80
  sizeX: 20,
@@ -52,7 +84,7 @@ export const createImageCroppingControls = () => ({
52
84
  getActionName: cropActionName,
53
85
  }),
54
86
 
55
- tl: new Control({
87
+ tlc: new Control({
56
88
  angle: 0,
57
89
  x: -0.5,
58
90
  y: -0.5,
@@ -68,7 +100,7 @@ export const createImageCroppingControls = () => ({
68
100
  getActionName: cropActionName,
69
101
  }),
70
102
 
71
- tr: new Control({
103
+ trc: new Control({
72
104
  angle: 90,
73
105
  x: 0.5,
74
106
  y: -0.5,
@@ -84,7 +116,7 @@ export const createImageCroppingControls = () => ({
84
116
  getActionName: cropActionName,
85
117
  }),
86
118
 
87
- bl: new Control({
119
+ blc: new Control({
88
120
  angle: 270,
89
121
  x: -0.5,
90
122
  y: 0.5,
@@ -100,7 +132,7 @@ export const createImageCroppingControls = () => ({
100
132
  getActionName: cropActionName,
101
133
  }),
102
134
 
103
- br: new Control({
135
+ brc: new Control({
104
136
  angle: 180,
105
137
  x: 0.5,
106
138
  y: 0.5,