zcw-shared 1.16.2 → 1.18.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.
- package/README.md +22 -1
- package/dist/hooks/useDraggable.d.ts +34 -0
- package/dist/hooks/useDraggable.js +183 -0
- package/dist/hooks/useDraggable.js.map +1 -0
- package/package.json +2 -1
- package/references/blob.d.ts +16 -2
- package/references/browser.d.ts +4 -0
- package/references/dom.d.ts +21 -0
package/README.md
CHANGED
|
@@ -330,6 +330,12 @@ npx tsx tests/*.test.ts
|
|
|
330
330
|
|
|
331
331
|
2. **编译依赖**:改动了函数以后,因为playground中引用的是编译后的shared包,所以需要先编译shared包(`npm run build`),test中才能用到最新的代码。
|
|
332
332
|
|
|
333
|
+
3. **文档同步更新**:每次新增新功能或修改现有功能后,**必须**同步更新VitePress文档:
|
|
334
|
+
- 在 `docs/api/` 目录下更新或创建对应的API文档
|
|
335
|
+
- 在 `docs/examples/` 目录下添加使用示例
|
|
336
|
+
- 确保文档中的TypeScript泛型语法使用反引号包裹(如 `Promise<\`File\`>`)以避免Vue编译错误
|
|
337
|
+
- 运行 `npm run docs:dev` 验证文档编译无误
|
|
338
|
+
|
|
333
339
|
### 1. 添加新函数
|
|
334
340
|
|
|
335
341
|
```bash
|
|
@@ -342,7 +348,14 @@ types/category.d.ts
|
|
|
342
348
|
# 3. 创建测试
|
|
343
349
|
playground/tests/newFunction.test.ts
|
|
344
350
|
|
|
345
|
-
# 4.
|
|
351
|
+
# 4. 更新VitePress文档
|
|
352
|
+
docs/api/category.md # API文档
|
|
353
|
+
docs/examples/category.md # 使用示例
|
|
354
|
+
|
|
355
|
+
# 5. 验证文档编译
|
|
356
|
+
npm run docs:dev
|
|
357
|
+
|
|
358
|
+
# 6. 构建和导出
|
|
346
359
|
npm run build
|
|
347
360
|
```
|
|
348
361
|
|
|
@@ -374,6 +387,9 @@ export function newFunction(
|
|
|
374
387
|
# 类型检查
|
|
375
388
|
npx tsc --noEmit
|
|
376
389
|
|
|
390
|
+
# 验证文档编译
|
|
391
|
+
npm run docs:build
|
|
392
|
+
|
|
377
393
|
# 构建项目
|
|
378
394
|
npm run build
|
|
379
395
|
|
|
@@ -409,6 +425,11 @@ npm run publish:major # 主要版本
|
|
|
409
425
|
1. **JSDoc注释**:详细的函数说明和参数描述
|
|
410
426
|
2. **使用示例**:在测试文件中提供实际使用案例
|
|
411
427
|
3. **类型导出**:确保所有相关类型都可以导入
|
|
428
|
+
4. **VitePress文档**:
|
|
429
|
+
- **API文档**:在 `docs/api/` 目录下为每个模块创建详细的API文档
|
|
430
|
+
- **示例文档**:在 `docs/examples/` 目录下提供实际使用示例
|
|
431
|
+
- **语法规范**:TypeScript泛型语法必须用反引号包裹(如 `Promise<\`File\`>`)
|
|
432
|
+
- **编译验证**:确保文档能够正常编译,无Vue语法错误
|
|
412
433
|
|
|
413
434
|
---
|
|
414
435
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Ref } from 'vue';
|
|
2
|
+
import type { HTMLElement, Document, MouseEvent, TouchEvent } from '../../references/dom.d';
|
|
3
|
+
import type { Window } from '../../references/browser.d';
|
|
4
|
+
export interface Position {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
}
|
|
8
|
+
export interface DraggableEnvironment {
|
|
9
|
+
document: Document;
|
|
10
|
+
window: Window;
|
|
11
|
+
}
|
|
12
|
+
export interface UseDraggableOptions {
|
|
13
|
+
initialPosition?: Position;
|
|
14
|
+
enabled?: boolean;
|
|
15
|
+
onDragStart?: (position: Position, event: MouseEvent | TouchEvent) => void;
|
|
16
|
+
onDrag?: (position: Position, event: MouseEvent | TouchEvent) => void;
|
|
17
|
+
onDragEnd?: (position: Position, event: MouseEvent | TouchEvent) => void;
|
|
18
|
+
boundary?: {
|
|
19
|
+
minX?: number;
|
|
20
|
+
maxX?: number;
|
|
21
|
+
minY?: number;
|
|
22
|
+
maxY?: number;
|
|
23
|
+
};
|
|
24
|
+
useAbsolutePosition?: boolean;
|
|
25
|
+
useTransform?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function useDraggable(targetRef: Ref<HTMLElement | null>, options: UseDraggableOptions | undefined, env: DraggableEnvironment): {
|
|
28
|
+
position: Ref<Position, Position>;
|
|
29
|
+
isDragging: Ref<boolean, boolean>;
|
|
30
|
+
style: Ref<Record<string, string>, Record<string, string>>;
|
|
31
|
+
reset: () => void;
|
|
32
|
+
cleanup: () => void;
|
|
33
|
+
};
|
|
34
|
+
export default useDraggable;
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { ref, onMounted, onUnmounted } from 'vue';
|
|
2
|
+
export function useDraggable(targetRef, options = {}, env) {
|
|
3
|
+
const { initialPosition = { x: 0, y: 0 }, enabled = true, onDragStart, onDrag, onDragEnd, boundary, useAbsolutePosition = true, useTransform = false } = options;
|
|
4
|
+
const position = ref({ ...initialPosition });
|
|
5
|
+
const isDragging = ref(false);
|
|
6
|
+
let startX = 0;
|
|
7
|
+
let startY = 0;
|
|
8
|
+
let initialX = initialPosition.x;
|
|
9
|
+
let initialY = initialPosition.y;
|
|
10
|
+
let positionInitialized = false;
|
|
11
|
+
const applyBoundary = (pos) => {
|
|
12
|
+
if (!boundary)
|
|
13
|
+
return pos;
|
|
14
|
+
const { minX, maxX, minY, maxY } = boundary;
|
|
15
|
+
let { x, y } = pos;
|
|
16
|
+
if (minX !== undefined)
|
|
17
|
+
x = Math.max(minX, x);
|
|
18
|
+
if (maxX !== undefined)
|
|
19
|
+
x = Math.min(maxX, x);
|
|
20
|
+
if (minY !== undefined)
|
|
21
|
+
y = Math.max(minY, y);
|
|
22
|
+
if (maxY !== undefined)
|
|
23
|
+
y = Math.min(maxY, y);
|
|
24
|
+
return { x, y };
|
|
25
|
+
};
|
|
26
|
+
const style = ref({});
|
|
27
|
+
const updateStyle = () => {
|
|
28
|
+
if (!useAbsolutePosition && !useTransform)
|
|
29
|
+
return;
|
|
30
|
+
if (useAbsolutePosition) {
|
|
31
|
+
style.value = {
|
|
32
|
+
position: 'absolute',
|
|
33
|
+
top: `${position.value.y}px`,
|
|
34
|
+
left: `${position.value.x}px`,
|
|
35
|
+
...(useTransform ? {} : { transform: 'none' })
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else if (useTransform) {
|
|
39
|
+
style.value = {
|
|
40
|
+
transform: `translate(${position.value.x}px, ${position.value.y}px)`
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
const updatePosition = (newPosition) => {
|
|
45
|
+
position.value = applyBoundary(newPosition);
|
|
46
|
+
updateStyle();
|
|
47
|
+
};
|
|
48
|
+
const onMouseDown = (e) => {
|
|
49
|
+
if (!enabled || !targetRef.value)
|
|
50
|
+
return;
|
|
51
|
+
e.stopPropagation();
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
if (!positionInitialized && targetRef.value) {
|
|
54
|
+
const rect = targetRef.value.getBoundingClientRect();
|
|
55
|
+
if (!initialPosition.x && !initialPosition.y) {
|
|
56
|
+
initialX = rect.left;
|
|
57
|
+
initialY = rect.top;
|
|
58
|
+
position.value = { x: initialX, y: initialY };
|
|
59
|
+
}
|
|
60
|
+
positionInitialized = true;
|
|
61
|
+
}
|
|
62
|
+
isDragging.value = true;
|
|
63
|
+
startX = e.clientX - position.value.x;
|
|
64
|
+
startY = e.clientY - position.value.y;
|
|
65
|
+
if (onDragStart) {
|
|
66
|
+
onDragStart({ ...position.value }, e);
|
|
67
|
+
}
|
|
68
|
+
env.document.addEventListener('mousemove', onMouseMove, { passive: false });
|
|
69
|
+
env.document.addEventListener('mouseup', onMouseUp);
|
|
70
|
+
};
|
|
71
|
+
const onMouseMove = (e) => {
|
|
72
|
+
if (!isDragging.value)
|
|
73
|
+
return;
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
env.window.requestAnimationFrame(() => {
|
|
76
|
+
const newPosition = {
|
|
77
|
+
x: e.clientX - startX,
|
|
78
|
+
y: e.clientY - startY
|
|
79
|
+
};
|
|
80
|
+
updatePosition(newPosition);
|
|
81
|
+
if (onDrag) {
|
|
82
|
+
onDrag({ ...position.value }, e);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
const onMouseUp = (e) => {
|
|
87
|
+
if (!isDragging.value)
|
|
88
|
+
return;
|
|
89
|
+
isDragging.value = false;
|
|
90
|
+
if (onDragEnd) {
|
|
91
|
+
onDragEnd({ ...position.value }, e);
|
|
92
|
+
}
|
|
93
|
+
env.document.removeEventListener('mousemove', onMouseMove);
|
|
94
|
+
env.document.removeEventListener('mouseup', onMouseUp);
|
|
95
|
+
};
|
|
96
|
+
const onTouchStart = (e) => {
|
|
97
|
+
if (!enabled || !targetRef.value || e.touches.length !== 1)
|
|
98
|
+
return;
|
|
99
|
+
e.stopPropagation();
|
|
100
|
+
if (!positionInitialized && targetRef.value) {
|
|
101
|
+
const rect = targetRef.value.getBoundingClientRect();
|
|
102
|
+
if (!initialPosition.x && !initialPosition.y) {
|
|
103
|
+
initialX = rect.left;
|
|
104
|
+
initialY = rect.top;
|
|
105
|
+
position.value = { x: initialX, y: initialY };
|
|
106
|
+
}
|
|
107
|
+
positionInitialized = true;
|
|
108
|
+
}
|
|
109
|
+
isDragging.value = true;
|
|
110
|
+
const touch = e.touches[0];
|
|
111
|
+
startX = touch.clientX - position.value.x;
|
|
112
|
+
startY = touch.clientY - position.value.y;
|
|
113
|
+
if (onDragStart) {
|
|
114
|
+
onDragStart({ ...position.value }, e);
|
|
115
|
+
}
|
|
116
|
+
env.document.addEventListener('touchmove', onTouchMove, { passive: false });
|
|
117
|
+
env.document.addEventListener('touchend', onTouchEnd);
|
|
118
|
+
env.document.addEventListener('touchcancel', onTouchEnd);
|
|
119
|
+
};
|
|
120
|
+
const onTouchMove = (e) => {
|
|
121
|
+
if (!isDragging.value || e.touches.length !== 1)
|
|
122
|
+
return;
|
|
123
|
+
e.preventDefault();
|
|
124
|
+
env.window.requestAnimationFrame(() => {
|
|
125
|
+
const touch = e.touches[0];
|
|
126
|
+
const newPosition = {
|
|
127
|
+
x: touch.clientX - startX,
|
|
128
|
+
y: touch.clientY - startY
|
|
129
|
+
};
|
|
130
|
+
updatePosition(newPosition);
|
|
131
|
+
if (onDrag) {
|
|
132
|
+
onDrag({ ...position.value }, e);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
};
|
|
136
|
+
const onTouchEnd = (e) => {
|
|
137
|
+
if (!isDragging.value)
|
|
138
|
+
return;
|
|
139
|
+
isDragging.value = false;
|
|
140
|
+
if (onDragEnd) {
|
|
141
|
+
onDragEnd({ ...position.value }, e);
|
|
142
|
+
}
|
|
143
|
+
env.document.removeEventListener('touchmove', onTouchMove);
|
|
144
|
+
env.document.removeEventListener('touchend', onTouchEnd);
|
|
145
|
+
env.document.removeEventListener('touchcancel', onTouchEnd);
|
|
146
|
+
};
|
|
147
|
+
const reset = () => {
|
|
148
|
+
updatePosition({ ...initialPosition });
|
|
149
|
+
positionInitialized = false;
|
|
150
|
+
};
|
|
151
|
+
const cleanup = () => {
|
|
152
|
+
env.document.removeEventListener('mousemove', onMouseMove);
|
|
153
|
+
env.document.removeEventListener('mouseup', onMouseUp);
|
|
154
|
+
env.document.removeEventListener('touchmove', onTouchMove);
|
|
155
|
+
env.document.removeEventListener('touchend', onTouchEnd);
|
|
156
|
+
env.document.removeEventListener('touchcancel', onTouchEnd);
|
|
157
|
+
};
|
|
158
|
+
onMounted(() => {
|
|
159
|
+
const element = targetRef.value;
|
|
160
|
+
if (!element)
|
|
161
|
+
return;
|
|
162
|
+
updateStyle();
|
|
163
|
+
element.addEventListener('mousedown', onMouseDown);
|
|
164
|
+
element.addEventListener('touchstart', onTouchStart);
|
|
165
|
+
});
|
|
166
|
+
onUnmounted(() => {
|
|
167
|
+
const element = targetRef.value;
|
|
168
|
+
if (!element)
|
|
169
|
+
return;
|
|
170
|
+
element.removeEventListener('mousedown', onMouseDown);
|
|
171
|
+
element.removeEventListener('touchstart', onTouchStart);
|
|
172
|
+
cleanup();
|
|
173
|
+
});
|
|
174
|
+
return {
|
|
175
|
+
position,
|
|
176
|
+
isDragging,
|
|
177
|
+
style,
|
|
178
|
+
reset,
|
|
179
|
+
cleanup
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
export default useDraggable;
|
|
183
|
+
//# sourceMappingURL=useDraggable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDraggable.js","sourceRoot":"","sources":["../../src/hooks/useDraggable.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zcw-shared",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.18.0",
|
|
4
4
|
"files": [
|
|
5
5
|
"references",
|
|
6
6
|
"dist",
|
|
@@ -111,6 +111,7 @@
|
|
|
111
111
|
"./functions/xml/modifyXml": "./dist/functions/xml/modifyXml.js",
|
|
112
112
|
"./hooks/useAltool": "./dist/hooks/useAltool.js",
|
|
113
113
|
"./hooks/useCache": "./dist/hooks/useCache.js",
|
|
114
|
+
"./hooks/useDraggable": "./dist/hooks/useDraggable.js",
|
|
114
115
|
"./hooks/useLocalStorage": "./dist/hooks/useLocalStorage.js",
|
|
115
116
|
"./hooks/usePluginSystem": "./dist/hooks/usePluginSystem.js",
|
|
116
117
|
"./hooks/useSessionStorage": "./dist/hooks/useSessionStorage.js",
|
package/references/blob.d.ts
CHANGED
|
@@ -2,14 +2,28 @@
|
|
|
2
2
|
import type { BufferSource } from './arraybuffer.d'
|
|
3
3
|
|
|
4
4
|
// Stream 相关类型(基础依赖)
|
|
5
|
-
export interface
|
|
5
|
+
export interface ReadableStreamBYOBReader {
|
|
6
|
+
read<T extends ArrayBufferView>(view: T): Promise<{ done: boolean; value: T }>
|
|
7
|
+
releaseLock(): void
|
|
8
|
+
cancel(reason?: any): Promise<void>
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ReadableStreamDefaultReader<T> {
|
|
6
12
|
read(): Promise<{ done: boolean; value: T }>
|
|
7
13
|
releaseLock(): void
|
|
8
14
|
cancel(reason?: any): Promise<void>
|
|
9
15
|
}
|
|
10
16
|
|
|
17
|
+
export type ReadableStreamReader<T> = ReadableStreamDefaultReader<T> | ReadableStreamBYOBReader
|
|
18
|
+
|
|
19
|
+
export interface ReadableStreamGetReaderOptions {
|
|
20
|
+
mode?: 'byob'
|
|
21
|
+
}
|
|
22
|
+
|
|
11
23
|
export interface ReadableStream<T> {
|
|
12
|
-
getReader():
|
|
24
|
+
getReader(): ReadableStreamDefaultReader<Uint8Array>
|
|
25
|
+
getReader(options: { mode: 'byob' }): ReadableStreamBYOBReader
|
|
26
|
+
getReader(options?: ReadableStreamGetReaderOptions): ReadableStreamReader<T>
|
|
13
27
|
cancel(reason?: any): Promise<void>
|
|
14
28
|
locked: boolean
|
|
15
29
|
}
|
package/references/browser.d.ts
CHANGED
|
@@ -85,6 +85,10 @@ export interface Window {
|
|
|
85
85
|
Uint8Array: Uint8ArrayConstructor
|
|
86
86
|
DataView: DataViewConstructor
|
|
87
87
|
|
|
88
|
+
// 动画API
|
|
89
|
+
requestAnimationFrame: (callback: (time: number) => void) => number
|
|
90
|
+
cancelAnimationFrame: (id: number) => void
|
|
91
|
+
|
|
88
92
|
// 开发环境标识
|
|
89
93
|
__DEV__?: boolean
|
|
90
94
|
|
package/references/dom.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// DOM 相关类型声明
|
|
2
|
+
import type { Blob } from './blob.d'
|
|
2
3
|
|
|
3
4
|
// DOM 元素接口 - 按继承关系组织
|
|
4
5
|
export interface Element {
|
|
@@ -16,6 +17,8 @@ export interface HTMLElement extends Element {
|
|
|
16
17
|
right: number
|
|
17
18
|
bottom: number
|
|
18
19
|
}
|
|
20
|
+
addEventListener(event: string, handler: (e: any) => void, options?: any): void
|
|
21
|
+
removeEventListener(event: string, handler: (e: any) => void, options?: any): void
|
|
19
22
|
}
|
|
20
23
|
|
|
21
24
|
export interface HTMLImageElement extends HTMLElement {
|
|
@@ -44,11 +47,29 @@ export interface Document {
|
|
|
44
47
|
clientWidth: number
|
|
45
48
|
clientHeight: number
|
|
46
49
|
}
|
|
50
|
+
addEventListener(event: string, handler: (e: any) => void, options?: any): void
|
|
51
|
+
removeEventListener(event: string, handler: (e: any) => void, options?: any): void
|
|
47
52
|
}
|
|
48
53
|
|
|
49
54
|
// DOM 事件相关
|
|
50
55
|
export interface Event {
|
|
51
56
|
target?: any
|
|
57
|
+
stopPropagation(): void
|
|
58
|
+
preventDefault(): void
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface MouseEvent extends Event {
|
|
62
|
+
clientX: number
|
|
63
|
+
clientY: number
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface Touch {
|
|
67
|
+
clientX: number
|
|
68
|
+
clientY: number
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface TouchEvent extends Event {
|
|
72
|
+
touches: Touch[]
|
|
52
73
|
}
|
|
53
74
|
|
|
54
75
|
export interface DOMException {
|