@chenzy-design/core 0.3.1 → 0.4.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 (283) hide show
  1. package/dist/ai-chat-dialogue.d.ts +300 -0
  2. package/dist/ai-chat-dialogue.d.ts.map +1 -0
  3. package/dist/ai-chat-dialogue.js +699 -0
  4. package/dist/ai-chat-dialogue.js.map +1 -0
  5. package/dist/ai-chat-dialogue.test.d.ts +2 -0
  6. package/dist/ai-chat-dialogue.test.d.ts.map +1 -0
  7. package/dist/ai-chat-dialogue.test.js +338 -0
  8. package/dist/ai-chat-dialogue.test.js.map +1 -0
  9. package/dist/ai-chat-input.d.ts +191 -0
  10. package/dist/ai-chat-input.d.ts.map +1 -0
  11. package/dist/ai-chat-input.js +274 -0
  12. package/dist/ai-chat-input.js.map +1 -0
  13. package/dist/ai-chat-input.test.d.ts +2 -0
  14. package/dist/ai-chat-input.test.d.ts.map +1 -0
  15. package/dist/ai-chat-input.test.js +339 -0
  16. package/dist/ai-chat-input.test.js.map +1 -0
  17. package/dist/audio-player.d.ts +154 -0
  18. package/dist/audio-player.d.ts.map +1 -0
  19. package/dist/audio-player.js +254 -0
  20. package/dist/audio-player.js.map +1 -0
  21. package/dist/audio-player.test.d.ts +2 -0
  22. package/dist/audio-player.test.d.ts.map +1 -0
  23. package/dist/audio-player.test.js +275 -0
  24. package/dist/audio-player.test.js.map +1 -0
  25. package/dist/back-top.d.ts +4 -1
  26. package/dist/back-top.d.ts.map +1 -1
  27. package/dist/back-top.js +5 -2
  28. package/dist/back-top.js.map +1 -1
  29. package/dist/back-top.test.js +3 -2
  30. package/dist/back-top.test.js.map +1 -1
  31. package/dist/calendar.d.ts +132 -44
  32. package/dist/calendar.d.ts.map +1 -1
  33. package/dist/calendar.js +413 -70
  34. package/dist/calendar.js.map +1 -1
  35. package/dist/calendar.test.js +160 -76
  36. package/dist/calendar.test.js.map +1 -1
  37. package/dist/chat.d.ts +172 -0
  38. package/dist/chat.d.ts.map +1 -0
  39. package/dist/chat.js +210 -0
  40. package/dist/chat.js.map +1 -0
  41. package/dist/chat.test.d.ts +2 -0
  42. package/dist/chat.test.d.ts.map +1 -0
  43. package/dist/chat.test.js +181 -0
  44. package/dist/chat.test.js.map +1 -0
  45. package/dist/code-highlight.d.ts +30 -0
  46. package/dist/code-highlight.d.ts.map +1 -0
  47. package/dist/code-highlight.js +37 -0
  48. package/dist/code-highlight.js.map +1 -0
  49. package/dist/code-highlight.test.d.ts +2 -0
  50. package/dist/code-highlight.test.d.ts.map +1 -0
  51. package/dist/code-highlight.test.js +36 -0
  52. package/dist/code-highlight.test.js.map +1 -0
  53. package/dist/collapsible.d.ts +41 -0
  54. package/dist/collapsible.d.ts.map +1 -0
  55. package/dist/collapsible.js +33 -0
  56. package/dist/collapsible.js.map +1 -0
  57. package/dist/collapsible.test.d.ts +2 -0
  58. package/dist/collapsible.test.d.ts.map +1 -0
  59. package/dist/collapsible.test.js +57 -0
  60. package/dist/collapsible.test.js.map +1 -0
  61. package/dist/color-value.d.ts +60 -0
  62. package/dist/color-value.d.ts.map +1 -0
  63. package/dist/color-value.js +165 -0
  64. package/dist/color-value.js.map +1 -0
  65. package/dist/color-value.test.d.ts +2 -0
  66. package/dist/color-value.test.d.ts.map +1 -0
  67. package/dist/color-value.test.js +104 -0
  68. package/dist/color-value.test.js.map +1 -0
  69. package/dist/config-provider.d.ts +76 -37
  70. package/dist/config-provider.d.ts.map +1 -1
  71. package/dist/config-provider.js +107 -32
  72. package/dist/config-provider.js.map +1 -1
  73. package/dist/config-provider.test.js +123 -60
  74. package/dist/config-provider.test.js.map +1 -1
  75. package/dist/cropper.d.ts +164 -0
  76. package/dist/cropper.d.ts.map +1 -0
  77. package/dist/cropper.js +841 -0
  78. package/dist/cropper.js.map +1 -0
  79. package/dist/cropper.test.d.ts +2 -0
  80. package/dist/cropper.test.d.ts.map +1 -0
  81. package/dist/cropper.test.js +259 -0
  82. package/dist/cropper.test.js.map +1 -0
  83. package/dist/drag-move.d.ts +119 -0
  84. package/dist/drag-move.d.ts.map +1 -0
  85. package/dist/drag-move.js +237 -0
  86. package/dist/drag-move.js.map +1 -0
  87. package/dist/drag-move.test.d.ts +2 -0
  88. package/dist/drag-move.test.d.ts.map +1 -0
  89. package/dist/drag-move.test.js +304 -0
  90. package/dist/drag-move.test.js.map +1 -0
  91. package/dist/editable.d.ts +24 -4
  92. package/dist/editable.d.ts.map +1 -1
  93. package/dist/editable.js +18 -0
  94. package/dist/editable.js.map +1 -1
  95. package/dist/editable.test.js +55 -2
  96. package/dist/editable.test.js.map +1 -1
  97. package/dist/ellipsis.d.ts +13 -0
  98. package/dist/ellipsis.d.ts.map +1 -1
  99. package/dist/ellipsis.js +36 -0
  100. package/dist/ellipsis.js.map +1 -1
  101. package/dist/ellipsis.test.js +37 -1
  102. package/dist/ellipsis.test.js.map +1 -1
  103. package/dist/form-path.d.ts +19 -0
  104. package/dist/form-path.d.ts.map +1 -0
  105. package/dist/form-path.js +97 -0
  106. package/dist/form-path.js.map +1 -0
  107. package/dist/form-path.test.d.ts +2 -0
  108. package/dist/form-path.test.d.ts.map +1 -0
  109. package/dist/form-path.test.js +57 -0
  110. package/dist/form-path.test.js.map +1 -0
  111. package/dist/form-validate.d.ts +13 -0
  112. package/dist/form-validate.d.ts.map +1 -0
  113. package/dist/form-validate.js +204 -0
  114. package/dist/form-validate.js.map +1 -0
  115. package/dist/form.d.ts +91 -18
  116. package/dist/form.d.ts.map +1 -1
  117. package/dist/form.js +170 -115
  118. package/dist/form.js.map +1 -1
  119. package/dist/form.test.js +349 -76
  120. package/dist/form.test.js.map +1 -1
  121. package/dist/highlight.d.ts +42 -32
  122. package/dist/highlight.d.ts.map +1 -1
  123. package/dist/highlight.js +67 -41
  124. package/dist/highlight.js.map +1 -1
  125. package/dist/highlight.test.js +73 -32
  126. package/dist/highlight.test.js.map +1 -1
  127. package/dist/hotkeys.d.ts +151 -0
  128. package/dist/hotkeys.d.ts.map +1 -0
  129. package/dist/hotkeys.js +188 -0
  130. package/dist/hotkeys.js.map +1 -0
  131. package/dist/hotkeys.test.d.ts +2 -0
  132. package/dist/hotkeys.test.d.ts.map +1 -0
  133. package/dist/hotkeys.test.js +170 -0
  134. package/dist/hotkeys.test.js.map +1 -0
  135. package/dist/index.d.ts +33 -17
  136. package/dist/index.d.ts.map +1 -1
  137. package/dist/index.js +32 -13
  138. package/dist/index.js.map +1 -1
  139. package/dist/input.d.ts +34 -0
  140. package/dist/input.d.ts.map +1 -0
  141. package/dist/input.js +54 -0
  142. package/dist/input.js.map +1 -0
  143. package/dist/input.test.d.ts +2 -0
  144. package/dist/input.test.d.ts.map +1 -0
  145. package/dist/input.test.js +56 -0
  146. package/dist/input.test.js.map +1 -0
  147. package/dist/markdown-render.d.ts +49 -0
  148. package/dist/markdown-render.d.ts.map +1 -0
  149. package/dist/markdown-render.js +61 -0
  150. package/dist/markdown-render.js.map +1 -0
  151. package/dist/markdown-render.test.d.ts +2 -0
  152. package/dist/markdown-render.test.d.ts.map +1 -0
  153. package/dist/markdown-render.test.js +106 -0
  154. package/dist/markdown-render.test.js.map +1 -0
  155. package/dist/notification.d.ts +40 -31
  156. package/dist/notification.d.ts.map +1 -1
  157. package/dist/notification.js +86 -70
  158. package/dist/notification.js.map +1 -1
  159. package/dist/notification.test.js +62 -39
  160. package/dist/notification.test.js.map +1 -1
  161. package/dist/numeral.d.ts +32 -0
  162. package/dist/numeral.d.ts.map +1 -0
  163. package/dist/numeral.js +67 -0
  164. package/dist/numeral.js.map +1 -0
  165. package/dist/numeral.test.d.ts +2 -0
  166. package/dist/numeral.test.d.ts.map +1 -0
  167. package/dist/numeral.test.js +59 -0
  168. package/dist/numeral.test.js.map +1 -0
  169. package/dist/overflow-list.d.ts +9 -40
  170. package/dist/overflow-list.d.ts.map +1 -1
  171. package/dist/overflow-list.js +9 -70
  172. package/dist/overflow-list.js.map +1 -1
  173. package/dist/overflow-list.test.js +1 -122
  174. package/dist/overflow-list.test.js.map +1 -1
  175. package/dist/pagination.d.ts +17 -0
  176. package/dist/pagination.d.ts.map +1 -1
  177. package/dist/pagination.js +48 -0
  178. package/dist/pagination.js.map +1 -1
  179. package/dist/pagination.test.js +40 -1
  180. package/dist/pagination.test.js.map +1 -1
  181. package/dist/pincode.d.ts +79 -0
  182. package/dist/pincode.d.ts.map +1 -0
  183. package/dist/pincode.js +119 -0
  184. package/dist/pincode.js.map +1 -0
  185. package/dist/pincode.test.d.ts +2 -0
  186. package/dist/pincode.test.d.ts.map +1 -0
  187. package/dist/pincode.test.js +151 -0
  188. package/dist/pincode.test.js.map +1 -0
  189. package/dist/progress.d.ts +32 -30
  190. package/dist/progress.d.ts.map +1 -1
  191. package/dist/progress.js +257 -64
  192. package/dist/progress.js.map +1 -1
  193. package/dist/progress.test.js +50 -47
  194. package/dist/progress.test.js.map +1 -1
  195. package/dist/resizable.d.ts +200 -0
  196. package/dist/resizable.d.ts.map +1 -0
  197. package/dist/resizable.js +329 -0
  198. package/dist/resizable.js.map +1 -0
  199. package/dist/resizable.test.d.ts +2 -0
  200. package/dist/resizable.test.d.ts.map +1 -0
  201. package/dist/resizable.test.js +302 -0
  202. package/dist/resizable.test.js.map +1 -0
  203. package/dist/scroll-list.d.ts +69 -62
  204. package/dist/scroll-list.d.ts.map +1 -1
  205. package/dist/scroll-list.js +103 -144
  206. package/dist/scroll-list.js.map +1 -1
  207. package/dist/scroll-list.test.js +100 -110
  208. package/dist/scroll-list.test.js.map +1 -1
  209. package/dist/sidebar.d.ts +46 -0
  210. package/dist/sidebar.d.ts.map +1 -0
  211. package/dist/sidebar.js +65 -0
  212. package/dist/sidebar.js.map +1 -0
  213. package/dist/sidebar.test.d.ts +2 -0
  214. package/dist/sidebar.test.d.ts.map +1 -0
  215. package/dist/sidebar.test.js +88 -0
  216. package/dist/sidebar.test.js.map +1 -0
  217. package/dist/spin.d.ts +5 -5
  218. package/dist/spin.d.ts.map +1 -1
  219. package/dist/spin.js +13 -39
  220. package/dist/spin.js.map +1 -1
  221. package/dist/spin.test.js +2 -26
  222. package/dist/spin.test.js.map +1 -1
  223. package/dist/toast.d.ts +33 -30
  224. package/dist/toast.d.ts.map +1 -1
  225. package/dist/toast.js +77 -72
  226. package/dist/toast.js.map +1 -1
  227. package/dist/toast.test.js +63 -37
  228. package/dist/toast.test.js.map +1 -1
  229. package/dist/tree.d.ts +22 -5
  230. package/dist/tree.d.ts.map +1 -1
  231. package/dist/tree.js +61 -9
  232. package/dist/tree.js.map +1 -1
  233. package/dist/tree.test.js +72 -1
  234. package/dist/tree.test.js.map +1 -1
  235. package/dist/user-guide.d.ts +73 -0
  236. package/dist/user-guide.d.ts.map +1 -0
  237. package/dist/user-guide.js +95 -0
  238. package/dist/user-guide.js.map +1 -0
  239. package/dist/user-guide.test.d.ts +2 -0
  240. package/dist/user-guide.test.d.ts.map +1 -0
  241. package/dist/user-guide.test.js +109 -0
  242. package/dist/user-guide.test.js.map +1 -0
  243. package/dist/video-player.d.ts +196 -0
  244. package/dist/video-player.d.ts.map +1 -0
  245. package/dist/video-player.js +461 -0
  246. package/dist/video-player.js.map +1 -0
  247. package/dist/video-player.test.d.ts +2 -0
  248. package/dist/video-player.test.d.ts.map +1 -0
  249. package/dist/video-player.test.js +435 -0
  250. package/dist/video-player.test.js.map +1 -0
  251. package/package.json +17 -1
  252. package/dist/banner.d.ts +0 -19
  253. package/dist/banner.d.ts.map +0 -1
  254. package/dist/banner.js +0 -20
  255. package/dist/banner.js.map +0 -1
  256. package/dist/banner.test.d.ts +0 -2
  257. package/dist/banner.test.d.ts.map +0 -1
  258. package/dist/banner.test.js +0 -29
  259. package/dist/banner.test.js.map +0 -1
  260. package/dist/breakpoints.d.ts +0 -30
  261. package/dist/breakpoints.d.ts.map +0 -1
  262. package/dist/breakpoints.js +0 -45
  263. package/dist/breakpoints.js.map +0 -1
  264. package/dist/breakpoints.test.d.ts +0 -2
  265. package/dist/breakpoints.test.d.ts.map +0 -1
  266. package/dist/breakpoints.test.js +0 -46
  267. package/dist/breakpoints.test.js.map +0 -1
  268. package/dist/lottie-icon.d.ts +0 -88
  269. package/dist/lottie-icon.d.ts.map +0 -1
  270. package/dist/lottie-icon.js +0 -84
  271. package/dist/lottie-icon.js.map +0 -1
  272. package/dist/lottie-icon.test.d.ts +0 -2
  273. package/dist/lottie-icon.test.d.ts.map +0 -1
  274. package/dist/lottie-icon.test.js +0 -88
  275. package/dist/lottie-icon.test.js.map +0 -1
  276. package/dist/sider.d.ts +0 -26
  277. package/dist/sider.d.ts.map +0 -1
  278. package/dist/sider.js +0 -55
  279. package/dist/sider.js.map +0 -1
  280. package/dist/sider.test.d.ts +0 -2
  281. package/dist/sider.test.d.ts.map +0 -1
  282. package/dist/sider.test.js +0 -29
  283. package/dist/sider.test.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropper.js","sourceRoot":"","sources":["../src/cropper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cropper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropper.test.d.ts","sourceRoot":"","sources":["../src/cropper.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,259 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { createCropperFoundation, getMiddle, getAspectHW, getMoveParamByDir, CROPPER_CORNERS, CROPPER_ROUND_CORNERS, } from './cropper.js';
3
+ /**
4
+ * jsdom 无关的纯几何单测。构造一个内存 harness:
5
+ * - container 500×400,getBoundingClientRect 原点 (0,0)
6
+ * - state 用一个可变对象,setState 浅合并
7
+ */
8
+ function makeHarness(props = {}, containerSize = { width: 500, height: 400 }) {
9
+ const state = {
10
+ imgData: { width: 0, height: 0, centerPoint: { x: 0, y: 0 } },
11
+ cropperBox: { width: 0, height: 0, centerPoint: { x: 0, y: 0 } },
12
+ zoom: 1,
13
+ rotate: 0,
14
+ loaded: false,
15
+ };
16
+ const notifyZoomChange = vi.fn();
17
+ const container = {
18
+ clientWidth: containerSize.width,
19
+ clientHeight: containerSize.height,
20
+ getBoundingClientRect: () => ({ left: 0, top: 0, width: containerSize.width, height: containerSize.height }),
21
+ };
22
+ const foundation = createCropperFoundation({
23
+ adapter: {
24
+ getContainer: () => container,
25
+ getImg: () => null,
26
+ notifyZoomChange,
27
+ },
28
+ getProps: () => props,
29
+ getState: () => state,
30
+ setState: (patch) => Object.assign(state, patch),
31
+ });
32
+ return { foundation, state, notifyZoomChange, container };
33
+ }
34
+ describe('cropper utils', () => {
35
+ it('getMiddle clamps to [min, max]', () => {
36
+ expect(getMiddle(5, [0, 10])).toBe(5);
37
+ expect(getMiddle(-3, [0, 10])).toBe(0);
38
+ expect(getMiddle(99, [0, 10])).toBe(10);
39
+ });
40
+ it('getAspectHW fits a box to a target aspect (w/h)', () => {
41
+ // wide outer box, aspect 1 → shrink width to match height
42
+ expect(getAspectHW(200, 100, 1)).toEqual([100, 100]);
43
+ // tall outer box, aspect 2 → shrink height to match width
44
+ expect(getAspectHW(100, 200, 2)).toEqual([100, 50]);
45
+ });
46
+ it('getMoveParamByDir maps corners to sign vectors', () => {
47
+ expect(getMoveParamByDir('tl')).toEqual({ paramX: -1, paramY: -1 });
48
+ expect(getMoveParamByDir('br')).toEqual({ paramX: 1, paramY: 1 });
49
+ expect(getMoveParamByDir('tm')).toEqual({ paramX: 0, paramY: -1 });
50
+ expect(getMoveParamByDir('mr')).toEqual({ paramX: 1, paramY: 0 });
51
+ });
52
+ it('exposes the canonical corner sets', () => {
53
+ expect(CROPPER_CORNERS).toHaveLength(8);
54
+ expect(CROPPER_ROUND_CORNERS).toEqual(['tm', 'ml', 'mr', 'bm']);
55
+ });
56
+ });
57
+ describe('cropper image load', () => {
58
+ it('landscape image (wider than container ratio) fits to container width', () => {
59
+ const { foundation, state } = makeHarness({}, { width: 500, height: 400 });
60
+ // natural 1000×400 → ratio 2.5 > container 1.25 → fit width
61
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 400 });
62
+ expect(state.loaded).toBe(true);
63
+ expect(state.imgData.width).toBe(500);
64
+ expect(state.imgData.height).toBe(200); // 400 * 0.5
65
+ expect(state.imgData.centerPoint).toEqual({ x: 250, y: 200 });
66
+ expect(foundation.getImageMeta().scale).toBe(0.5);
67
+ expect(foundation.getImageMeta().originalWidth).toBe(1000);
68
+ });
69
+ it('portrait image fits to container height', () => {
70
+ const { foundation, state } = makeHarness({}, { width: 500, height: 400 });
71
+ // natural 400×1000 → naturalW/containerW=0.8 < naturalH/containerH=2.5 → fit height
72
+ foundation.handleImageLoad({ naturalWidth: 400, naturalHeight: 1000 });
73
+ expect(state.imgData.height).toBe(400);
74
+ expect(state.imgData.width).toBe(160); // 400 * 0.4
75
+ expect(foundation.getImageMeta().scale).toBe(0.4);
76
+ });
77
+ it('default cropper box uses defaultAspectRatio=1 centered', () => {
78
+ const { foundation, state } = makeHarness({}, { width: 500, height: 400 });
79
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
80
+ // container 500/400=1.25 > aspect 1 → width = height*aspect = 400, height = 400
81
+ expect(state.cropperBox.width).toBe(400);
82
+ expect(state.cropperBox.height).toBe(400);
83
+ expect(state.cropperBox.centerPoint).toEqual({ x: 250, y: 200 });
84
+ });
85
+ it('aspectRatio prop overrides defaultAspectRatio for initial box', () => {
86
+ const { foundation, state } = makeHarness({ aspectRatio: 2 }, { width: 500, height: 400 });
87
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
88
+ // container 1.25 < aspect 2 → width = containerWidth = 500, height = 500/2 = 250
89
+ expect(state.cropperBox.width).toBe(500);
90
+ expect(state.cropperBox.height).toBe(250);
91
+ });
92
+ });
93
+ describe('cropper wheel zoom', () => {
94
+ it('zooms in by zoomStep and notifies, clamped by maxZoom', () => {
95
+ const { foundation, state, notifyZoomChange } = makeHarness({ maxZoom: 1.3, zoomStep: 0.1 });
96
+ foundation.handleImageLoad({ naturalWidth: 500, naturalHeight: 400 });
97
+ const w0 = state.imgData.width;
98
+ foundation.handleWheel({ deltaY: -10, clientX: 250, clientY: 200 });
99
+ expect(state.zoom).toBe(1.1);
100
+ expect(state.imgData.width).toBeCloseTo((w0 / 1) * 1.1);
101
+ expect(notifyZoomChange).toHaveBeenLastCalledWith(1.1);
102
+ // step again 1.1→1.2→1.3 ok, next would exceed 1.3 → no change
103
+ foundation.handleWheel({ deltaY: -10, clientX: 250, clientY: 200 });
104
+ foundation.handleWheel({ deltaY: -10, clientX: 250, clientY: 200 });
105
+ expect(state.zoom).toBe(1.3);
106
+ notifyZoomChange.mockClear();
107
+ foundation.handleWheel({ deltaY: -10, clientX: 250, clientY: 200 });
108
+ expect(state.zoom).toBe(1.3); // clamped, unchanged
109
+ expect(notifyZoomChange).not.toHaveBeenCalled();
110
+ });
111
+ it('zooms out clamped by minZoom', () => {
112
+ const { foundation, state } = makeHarness({ minZoom: 0.9, zoomStep: 0.1 });
113
+ foundation.handleImageLoad({ naturalWidth: 500, naturalHeight: 400 });
114
+ foundation.handleWheel({ deltaY: 10, clientX: 250, clientY: 200 });
115
+ expect(state.zoom).toBe(0.9);
116
+ foundation.handleWheel({ deltaY: 10, clientX: 250, clientY: 200 });
117
+ expect(state.zoom).toBe(0.9); // clamped
118
+ });
119
+ it('calls preventDefault on wheel', () => {
120
+ const { foundation } = makeHarness();
121
+ foundation.handleImageLoad({ naturalWidth: 500, naturalHeight: 400 });
122
+ const preventDefault = vi.fn();
123
+ foundation.handleWheel({ deltaY: -10, clientX: 10, clientY: 10, preventDefault });
124
+ expect(preventDefault).toHaveBeenCalled();
125
+ });
126
+ });
127
+ describe('cropper box drag (bounded)', () => {
128
+ it('clamps center point within container by half box size', () => {
129
+ const { foundation, state } = makeHarness({}, { width: 500, height: 400 });
130
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
131
+ // box 400×400 centered at 250,200; moveRange x:[200,300], y:[200,200]
132
+ foundation.handleCropperBoxMouseDown(250, 200);
133
+ // try to drag far right & down
134
+ foundation.handleCropperBoxMouseMove(9999, 9999);
135
+ expect(state.cropperBox.centerPoint.x).toBe(300); // 500-200
136
+ expect(state.cropperBox.centerPoint.y).toBe(200); // 400-200 == 200
137
+ foundation.handleCropperBoxMouseUp();
138
+ // after up, further moves are ignored
139
+ foundation.handleCropperBoxMouseMove(0, 0);
140
+ expect(state.cropperBox.centerPoint.x).toBe(300);
141
+ });
142
+ });
143
+ describe('cropper image drag', () => {
144
+ it('translates image center by drag delta (unbounded)', () => {
145
+ const { foundation, state } = makeHarness();
146
+ foundation.handleImageLoad({ naturalWidth: 500, naturalHeight: 400 });
147
+ const c0 = { ...state.imgData.centerPoint };
148
+ foundation.handleImgMoveStart(100, 100);
149
+ foundation.handleImgMove(130, 90);
150
+ expect(state.imgData.centerPoint.x).toBe(c0.x + 30);
151
+ expect(state.imgData.centerPoint.y).toBe(c0.y - 10);
152
+ foundation.handleImgMoveUp();
153
+ foundation.handleImgMove(999, 999);
154
+ expect(state.imgData.centerPoint.x).toBe(c0.x + 30); // ignored after up
155
+ });
156
+ });
157
+ describe('cropper free corner resize', () => {
158
+ it('br corner grows box toward bottom-right, clamped to container', () => {
159
+ const { foundation, state } = makeHarness({}, { width: 500, height: 400 });
160
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
161
+ // box 400×400 at center 250,200: left=50 top=0 right=450 bottom=400
162
+ foundation.handleCornerMouseDown('br');
163
+ expect(foundation.getRangeX()).toEqual([0, 500]);
164
+ expect(foundation.getRangeY()).toEqual([0, 400]);
165
+ // drag br to (480, 380): width grows toward that point
166
+ foundation.handleCornerMove(480, 380);
167
+ // paramX=1, x = cx + width/2 = 250+200 = 450; newWidth = 400 + (480-450) = 430
168
+ expect(state.cropperBox.width).toBeCloseTo(430);
169
+ // paramY=1, y = 200+200 = 400; newHeight = 400 + (380-400) = 380
170
+ expect(state.cropperBox.height).toBeCloseTo(380);
171
+ });
172
+ it('tl corner resize shrinks from top-left', () => {
173
+ const { foundation, state } = makeHarness({}, { width: 500, height: 400 });
174
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
175
+ foundation.handleCornerMouseDown('tl');
176
+ // paramX=-1,paramY=-1. box left=50 top=0. drag tl to (100, 50)
177
+ foundation.handleCornerMove(100, 50);
178
+ // x = cx + (-1)*w/2 = 250-200 = 50; newWidth = 400 + (-1)*(100-50)=350
179
+ expect(state.cropperBox.width).toBeCloseTo(350);
180
+ // y = 200 + (-1)*200 = 0; newHeight = 400 + (-1)*(50-0)=350
181
+ expect(state.cropperBox.height).toBeCloseTo(350);
182
+ });
183
+ });
184
+ describe('cropper aspect-constrained corner resize', () => {
185
+ it('br corner keeps aspectRatio while resizing', () => {
186
+ const { foundation, state } = makeHarness({ aspectRatio: 1 }, { width: 500, height: 400 });
187
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
188
+ // aspect 1: initial box 400×400 at 250,200
189
+ foundation.handleCornerMouseDown('br');
190
+ // range computed for br. drag toward (300, 250)
191
+ foundation.handleCornerMove(300, 250);
192
+ // height = offsetY - rangeY[0]; width = height*aspect → equal (aspect 1)
193
+ expect(state.cropperBox.width).toBeCloseTo(state.cropperBox.height);
194
+ });
195
+ it('mr corner resize under aspect constraint stays symmetric vertically', () => {
196
+ const { foundation, state } = makeHarness({ aspectRatio: 1 }, { width: 500, height: 400 });
197
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
198
+ const cy0 = state.cropperBox.centerPoint.y;
199
+ foundation.handleCornerMouseDown('mr');
200
+ foundation.handleCornerMove(400, 200);
201
+ // ml/mr keep centerPoint.y fixed
202
+ expect(state.cropperBox.centerPoint.y).toBeCloseTo(cy0);
203
+ expect(state.cropperBox.width).toBeCloseTo(state.cropperBox.height);
204
+ });
205
+ });
206
+ describe('cropper resize (container change) reflow', () => {
207
+ it('scales img + box proportionally on second resize', () => {
208
+ const { foundation, state, container } = makeHarness({}, { width: 500, height: 400 });
209
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
210
+ const box0 = { ...state.cropperBox };
211
+ const img0 = { ...state.imgData };
212
+ // first handleResize is skipped (initial guard)
213
+ foundation.handleResize();
214
+ expect(state.cropperBox.width).toBe(box0.width);
215
+ // now shrink container to 250 wide (ratio 0.5)
216
+ container.clientWidth = 250;
217
+ foundation.handleResize();
218
+ expect(state.imgData.width).toBeCloseTo(img0.width * 0.5);
219
+ expect(foundation.getContainerData().width).toBe(250);
220
+ });
221
+ it('aspect-constrained reflow keeps box within new container', () => {
222
+ const { foundation, state, container } = makeHarness({ aspectRatio: 1 }, { width: 500, height: 400 });
223
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
224
+ foundation.handleResize(); // skipped (initial)
225
+ container.clientWidth = 300;
226
+ foundation.handleResize();
227
+ const box = state.cropperBox;
228
+ expect(box.centerPoint.x + box.width / 2).toBeLessThanOrEqual(300 + 0.001);
229
+ });
230
+ });
231
+ describe('cropper controlled rotate/zoom', () => {
232
+ it('computeControlledImgData scales width/height by zoom ratio', () => {
233
+ const { foundation, state } = makeHarness();
234
+ foundation.handleImageLoad({ naturalWidth: 500, naturalHeight: 400 });
235
+ const w0 = state.imgData.width;
236
+ const next = foundation.computeControlledImgData(0, 2); // zoom 1→2
237
+ expect(next.width).toBeCloseTo(w0 * 2);
238
+ });
239
+ it('computeControlledImgData rotates image center around box center', () => {
240
+ const { foundation } = makeHarness();
241
+ foundation.handleImageLoad({ naturalWidth: 500, naturalHeight: 400 });
242
+ const next = foundation.computeControlledImgData(90, 1);
243
+ // rotating 90deg about box center should move the img center (was coincident → stays)
244
+ expect(typeof next.centerPoint.x).toBe('number');
245
+ expect(Number.isFinite(next.centerPoint.x)).toBe(true);
246
+ });
247
+ });
248
+ describe('cropper preview geometry', () => {
249
+ it('computePreview fits box into a square preview container', () => {
250
+ const { foundation, state } = makeHarness();
251
+ foundation.handleImageLoad({ naturalWidth: 1000, naturalHeight: 1000 });
252
+ const box = state.cropperBox; // 400×400
253
+ const out = foundation.computePreview({ width: 100, height: 100 }, { width: 200, height: 200, translateX: 0, translateY: 0, rotate: 0 });
254
+ // zoom = 100/400 = 0.25
255
+ expect(out.imgWidth).toBeCloseTo(200 * 0.25);
256
+ expect(out.containerWidth).toBeCloseTo((100 / box.width) * box.width);
257
+ });
258
+ });
259
+ //# sourceMappingURL=cropper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cropper.test.js","sourceRoot":"","sources":["../src/cropper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * drag-move — framework-agnostic drag-to-move geometry primitive for the
3
+ * DragMove component. Second shared drag primitive lowered to core (after
4
+ * createResizeDrag): moves an element's position within an optional constrainer
5
+ * region. Designed to converge Modal's draggable title bar + Cropper's canvas
6
+ * drag (see specs/components/other/DragMove.spec.md §12).
7
+ *
8
+ * Geometry ported from semi-foundation/dragMove/foundation. No framework deps,
9
+ * no reactive attachments — the start listener is bound on the handler and the
10
+ * document move/up listeners are bound imperatively on pointerdown and released
11
+ * on up/destroy (DragMove.spec.md §3, redline #3).
12
+ *
13
+ * Unlike createResizeDrag (which changes size), createDragMove changes the
14
+ * element's top/left position, clamping into the constrainer bounds.
15
+ */
16
+ /** Clamp `value` into `[min, max]`. */
17
+ export declare const clampValueInRange: (value: number, min: number, max: number) => number;
18
+ /** Resolve the drag element (the element that actually moves). */
19
+ export type DragMoveElementGetter = () => HTMLElement | null;
20
+ /** Resolve the handler (drag-trigger) element; defaults to the drag element. */
21
+ export type DragMoveHandlerGetter = () => HTMLElement | null;
22
+ /**
23
+ * Resolve the constrainer: the element whose box bounds the movement.
24
+ * Return `null` for no constraint (free move within the viewport).
25
+ */
26
+ export type DragMoveConstrainerGetter = () => HTMLElement | null;
27
+ /**
28
+ * Predicate deciding whether a given pointerdown should start a drag.
29
+ * Return `false` to cancel this drag. Receives the originating event and the
30
+ * drag element.
31
+ */
32
+ export type DragMoveAllow = (event: MouseEvent | TouchEvent, element: HTMLElement) => boolean;
33
+ /**
34
+ * Custom position applier. When provided, DragMove does NOT write
35
+ * `el.style.top/left` itself; the caller applies the new position however it
36
+ * likes (payload order matches Semi customMove: `(el, top, left)`).
37
+ */
38
+ export type DragMoveCustomMove = (element: HTMLElement, top: number, left: number) => void;
39
+ export interface CreateDragMoveOptions {
40
+ /** Resolve the element that moves (imperative, never reactive). */
41
+ handler?: DragMoveHandlerGetter;
42
+ /** Resolve the drag element. Required — the thing whose position changes. */
43
+ getElement: DragMoveElementGetter;
44
+ /** Resolve the constrainer box, or `null` for no constraint. */
45
+ constrainer?: DragMoveConstrainerGetter;
46
+ /** Gate a drag; return `false` to cancel. */
47
+ allowMove?: DragMoveAllow;
48
+ /** Apply the new position yourself (else DragMove writes style.top/left). */
49
+ customMove?: DragMoveCustomMove;
50
+ /**
51
+ * Allow starting a drag from a form control (`<input>`/`<textarea>`).
52
+ * Default `false` so text selection is not hijacked.
53
+ */
54
+ allowInputDrag?: boolean;
55
+ /** Called at drag start (after allowMove passes) with the origin event. */
56
+ onStart?: (event: MouseEvent | TouchEvent, element: HTMLElement) => void;
57
+ /** Called on every move with the clamped position + origin event. */
58
+ onMove?: (top: number, left: number, event: MouseEvent | TouchEvent, element: HTMLElement) => void;
59
+ /** Called at drag end. */
60
+ onEnd?: (event: MouseEvent | TouchEvent, element: HTMLElement) => void;
61
+ /** Pointer-event passthrough (mirrors Semi notify* adapter hooks). */
62
+ onMouseDown?: (e: MouseEvent) => void;
63
+ onMouseMove?: (e: MouseEvent) => void;
64
+ onMouseUp?: (e: MouseEvent) => void;
65
+ onTouchStart?: (e: TouchEvent) => void;
66
+ onTouchMove?: (e: TouchEvent) => void;
67
+ onTouchEnd?: (e: TouchEvent) => void;
68
+ onTouchCancel?: (e: TouchEvent) => void;
69
+ /** Document to bind listeners on (defaults to the global document). */
70
+ ownerDocument?: Document;
71
+ }
72
+ export interface DragMoveController {
73
+ /**
74
+ * Register the pointerdown/touchstart listener on the handler element and
75
+ * force it to `position: absolute` so top/left take effect. Idempotent.
76
+ */
77
+ init(): void;
78
+ /** Whether a drag is currently active. */
79
+ isDragging(): boolean;
80
+ /** Detach handler + any live document listeners (unmount safety net). */
81
+ destroy(): void;
82
+ }
83
+ export interface MoveRange {
84
+ xMin: number;
85
+ xMax: number;
86
+ yMin: number;
87
+ yMax: number;
88
+ }
89
+ /**
90
+ * Compute the pixel range within which `element` may move so it stays inside
91
+ * `constrainer`. Ported from semi-foundation dragMove `_calcMoveRange`: walks
92
+ * offsetParent chain from the element up to the constrainer, accumulating the
93
+ * offset, then derives min/max from the constrainer box minus the element box.
94
+ * Returns `null` when there is no constrainer (free move).
95
+ */
96
+ export declare const calcMoveRange: (element: HTMLElement, constrainer: HTMLElement | null) => MoveRange | null;
97
+ /**
98
+ * Given the pointer position, the recorded start offset, and an optional move
99
+ * range, compute the clamped `{ top, left }` for the element. Pure — no DOM
100
+ * writes, so it is trivially unit-testable.
101
+ */
102
+ export declare const computeNextPosition: (clientX: number, clientY: number, startOffsetX: number, startOffsetY: number, range: MoveRange | null) => {
103
+ top: number;
104
+ left: number;
105
+ };
106
+ /**
107
+ * createDragMove — manages the full drag-to-move lifecycle:
108
+ * `init()` binds mousedown/touchstart on the handler and forces the drag
109
+ * element to `position: absolute`. On pointerdown it records the pointer→element
110
+ * offset + move range, binds document move/up listeners, then each move computes
111
+ * the clamped position and applies it (via `customMove` or `style.top/left`),
112
+ * and up releases the document listeners. `destroy()` is an unmount safety net.
113
+ *
114
+ * Covers the Modal draggable-title-bar case (DragMove.spec.md §12): supply a
115
+ * `handler` returning the title bar, `getElement` returning the dialog, and a
116
+ * `constrainer` returning the viewport/parent.
117
+ */
118
+ export declare function createDragMove(options: CreateDragMoveOptions): DragMoveController;
119
+ //# sourceMappingURL=drag-move.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drag-move.d.ts","sourceRoot":"","sources":["../src/drag-move.ts"],"names":[],"mappings":"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"}