zcw-shared 1.28.0 → 1.29.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/dist/functions/algorithm/lcsVisual.d.ts +6 -0
- package/dist/functions/algorithm/lcsVisual.js +88 -0
- package/dist/functions/algorithm/lcsVisual.js.map +1 -0
- package/dist/functions/algorithm/mergeSortVisual.d.ts +5 -0
- package/dist/functions/algorithm/mergeSortVisual.js +103 -0
- package/dist/functions/algorithm/mergeSortVisual.js.map +1 -0
- package/dist/functions/algorithm/nQueensVisual.d.ts +14 -0
- package/dist/functions/algorithm/nQueensVisual.js +94 -0
- package/dist/functions/algorithm/nQueensVisual.js.map +1 -0
- package/dist/functions/algorithm/numIslandsVisual.d.ts +17 -0
- package/dist/functions/algorithm/numIslandsVisual.js +102 -0
- package/dist/functions/algorithm/numIslandsVisual.js.map +1 -0
- package/dist/functions/algorithm/quickSortVisual.d.ts +18 -0
- package/dist/functions/algorithm/quickSortVisual.js +104 -0
- package/dist/functions/algorithm/quickSortVisual.js.map +1 -0
- package/dist/functions/browser/detectDevice.d.ts +10 -0
- package/dist/functions/browser/detectDevice.js +49 -0
- package/dist/functions/browser/detectDevice.js.map +1 -0
- package/dist/functions/cookie/getCookie.d.ts +5 -0
- package/dist/functions/cookie/getCookie.js +14 -0
- package/dist/functions/cookie/getCookie.js.map +1 -0
- package/dist/functions/cookie/removeCookie.d.ts +8 -0
- package/dist/functions/cookie/removeCookie.js +12 -0
- package/dist/functions/cookie/removeCookie.js.map +1 -0
- package/dist/functions/cookie/setCookie.d.ts +11 -0
- package/dist/functions/cookie/setCookie.js +23 -0
- package/dist/functions/cookie/setCookie.js.map +1 -0
- package/dist/functions/data-structures/EventEmitter.d.ts +32 -0
- package/dist/functions/data-structures/EventEmitter.js +108 -0
- package/dist/functions/data-structures/EventEmitter.js.map +1 -0
- package/dist/functions/data-structures/MyPromise.d.ts +32 -0
- package/dist/functions/data-structures/MyPromise.js +254 -0
- package/dist/functions/data-structures/MyPromise.js.map +1 -0
- package/dist/functions/image/generatePlaceholderImage.d.ts +43 -0
- package/dist/functions/image/generatePlaceholderImage.js +331 -0
- package/dist/functions/image/generatePlaceholderImage.js.map +1 -0
- package/dist/functions/reactive/useReactiveCookie.d.ts +19 -0
- package/dist/functions/reactive/useReactiveCookie.js +84 -0
- package/dist/functions/reactive/useReactiveCookie.js.map +1 -0
- package/dist/hooks/useClickOutside.d.ts +12 -0
- package/dist/hooks/useClickOutside.js +16 -0
- package/dist/hooks/useClickOutside.js.map +1 -0
- package/dist/hooks/useClipboard.d.ts +20 -0
- package/dist/hooks/useClipboard.js +33 -0
- package/dist/hooks/useClipboard.js.map +1 -0
- package/dist/hooks/useCounter.d.ts +19 -0
- package/dist/hooks/useCounter.js +44 -0
- package/dist/hooks/useCounter.js.map +1 -0
- package/dist/hooks/useEventListener.d.ts +14 -0
- package/dist/hooks/useEventListener.js +18 -0
- package/dist/hooks/useEventListener.js.map +1 -0
- package/dist/hooks/useInterval.d.ts +19 -0
- package/dist/hooks/useInterval.js +33 -0
- package/dist/hooks/useInterval.js.map +1 -0
- package/dist/hooks/useTimeout.d.ts +20 -0
- package/dist/hooks/useTimeout.js +40 -0
- package/dist/hooks/useTimeout.js.map +1 -0
- package/dist/hooks/useToggle.d.ts +15 -0
- package/dist/hooks/useToggle.js +23 -0
- package/dist/hooks/useToggle.js.map +1 -0
- package/dist/reactive/createGlobalState.d.ts +2 -0
- package/dist/reactive/createGlobalState.js +11 -0
- package/dist/reactive/createGlobalState.js.map +1 -0
- package/dist/reactive/createSharedComposable.d.ts +2 -0
- package/dist/reactive/createSharedComposable.js +13 -0
- package/dist/reactive/createSharedComposable.js.map +1 -0
- package/dist/reactive/errorManager.d.ts +63 -0
- package/dist/reactive/errorManager.js +199 -0
- package/dist/reactive/errorManager.js.map +1 -0
- package/dist/reactive/i18n.d.ts +27 -0
- package/dist/reactive/i18n.js +119 -0
- package/dist/reactive/i18n.js.map +1 -0
- package/dist/reactive/permission.d.ts +40 -0
- package/dist/reactive/permission.js +189 -0
- package/dist/reactive/permission.js.map +1 -0
- package/dist/reactive/pinia.d.ts +52 -0
- package/dist/reactive/pinia.js +183 -0
- package/dist/reactive/pinia.js.map +1 -0
- package/dist/reactive/useAltool.d.ts +39 -0
- package/dist/reactive/useAltool.js +350 -0
- package/dist/reactive/useAltool.js.map +1 -0
- package/dist/reactive/useCache.d.ts +18 -0
- package/dist/reactive/useCache.js +82 -0
- package/dist/reactive/useCache.js.map +1 -0
- package/dist/reactive/useLocalStorage.d.ts +8 -0
- package/dist/reactive/useLocalStorage.js +101 -0
- package/dist/reactive/useLocalStorage.js.map +1 -0
- package/dist/reactive/usePluginSystem.d.ts +11 -0
- package/dist/reactive/usePluginSystem.js +34 -0
- package/dist/reactive/usePluginSystem.js.map +1 -0
- package/dist/reactive/useSessionStorage.d.ts +8 -0
- package/dist/reactive/useSessionStorage.js +101 -0
- package/dist/reactive/useSessionStorage.js.map +1 -0
- package/dist/reactive/useStorage.d.ts +13 -0
- package/dist/reactive/useStorage.js +62 -0
- package/dist/reactive/useStorage.js.map +1 -0
- package/dist/reactive/useStorageWithIndexedDB.d.ts +8 -0
- package/dist/reactive/useStorageWithIndexedDB.js +132 -0
- package/dist/reactive/useStorageWithIndexedDB.js.map +1 -0
- package/dist/vue-hooks/browser/useFileUpload.d.ts +25 -0
- package/dist/vue-hooks/browser/useFileUpload.js +81 -0
- package/dist/vue-hooks/browser/useFileUpload.js.map +1 -0
- package/package.json +4 -2
- package/dist/functions/platform/tencent-cloud/deploy.tcb.d.ts +0 -13
- package/dist/functions/platform/tencent-cloud/deploy.tcb.js +0 -46
- package/dist/functions/platform/tencent-cloud/deploy.tcb.js.map +0 -1
- package/dist/functions/platform/tencent-cloud/getSecret.d.ts +0 -4
- package/dist/functions/platform/tencent-cloud/getSecret.js +0 -19
- package/dist/functions/platform/tencent-cloud/getSecret.js.map +0 -1
- package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.d.ts +0 -27
- package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js +0 -287
- package/dist/functions/platform/uniapp/app-plus/buildAndroidApp.js.map +0 -1
- package/dist/functions/platform/uniapp/build.d.ts +0 -21
- package/dist/functions/platform/uniapp/build.js +0 -83
- package/dist/functions/platform/uniapp/build.js.map +0 -1
- package/dist/functions/platform/uniapp/detectAndroidProjectStructure.d.ts +0 -11
- package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js +0 -30
- package/dist/functions/platform/uniapp/detectAndroidProjectStructure.js.map +0 -1
- package/dist/functions/platform/uniapp/detectProjectType.d.ts +0 -20
- package/dist/functions/platform/uniapp/detectProjectType.js +0 -68
- package/dist/functions/platform/uniapp/detectProjectType.js.map +0 -1
- package/dist/functions/platform/uniapp/parseManifest.d.ts +0 -18
- package/dist/functions/platform/uniapp/parseManifest.js +0 -49
- package/dist/functions/platform/uniapp/parseManifest.js.map +0 -1
- package/dist/functions/platform/uniapp/waitForPages.d.ts +0 -7
- package/dist/functions/platform/uniapp/waitForPages.js +0 -20
- package/dist/functions/platform/uniapp/waitForPages.js.map +0 -1
- package/dist/functions/string/visualizeRegexSteps.d.ts +0 -39
- package/dist/functions/string/visualizeRegexSteps.js +0 -446
- package/dist/functions/string/visualizeRegexSteps.js.map +0 -1
- package/dist/functions/utils/createI18n.d.ts +0 -2
- package/dist/functions/utils/createI18n.js +0 -97
- package/dist/functions/utils/createI18n.js.map +0 -1
- package/dist/functions/utils/formatString.d.ts +0 -5
- package/dist/functions/utils/formatString.js +0 -9
- package/dist/functions/utils/formatString.js.map +0 -1
- package/dist/hooks/usePermission.d.ts +0 -7
- package/dist/hooks/usePermission.js +0 -123
- package/dist/hooks/usePermission.js.map +0 -1
- package/dist/vue-hooks/dom/useKeyboard.d.ts +0 -29
- package/dist/vue-hooks/dom/useKeyboard.js +0 -129
- package/dist/vue-hooks/dom/useKeyboard.js.map +0 -1
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
const COLOR_PALETTES = [
|
|
2
|
+
{ bg: '#f0f4f8', shape: '#3b82f6', text: '#64748b' },
|
|
3
|
+
{ bg: '#fef3e2', shape: '#f59e0b', text: '#92400e' },
|
|
4
|
+
{ bg: '#f0fdf4', shape: '#10b981', text: '#065f46' },
|
|
5
|
+
{ bg: '#fef2f2', shape: '#ef4444', text: '#991b1b' },
|
|
6
|
+
{ bg: '#f5f3ff', shape: '#8b5cf6', text: '#5b21b6' },
|
|
7
|
+
{ bg: '#ecfdf5', shape: '#14b8a6', text: '#0f766e' },
|
|
8
|
+
{ bg: '#fff7ed', shape: '#f97316', text: '#9a3412' },
|
|
9
|
+
{ bg: '#fdf2f8', shape: '#ec4899', text: '#9f1239' }
|
|
10
|
+
];
|
|
11
|
+
export function generatePlaceholderImage(options, deps) {
|
|
12
|
+
const { width, aspectRatio } = options;
|
|
13
|
+
const height = Math.round(width / aspectRatio);
|
|
14
|
+
const palette = COLOR_PALETTES[Math.floor(Math.random() * COLOR_PALETTES.length)];
|
|
15
|
+
const patternTypes = ['simple', 'card-back', 'mandala', 'geometric', 'ornamental'];
|
|
16
|
+
const patternType = patternTypes[Math.floor(Math.random() * patternTypes.length)];
|
|
17
|
+
const polygonSides = Math.floor(Math.random() * 4) + 5;
|
|
18
|
+
const starSpikes = Math.floor(Math.random() * 3) + 4;
|
|
19
|
+
const simpleShapes = ['rectangle', 'circle', 'triangle', 'star', 'diamond', 'polygon'];
|
|
20
|
+
const simpleShape = simpleShapes[Math.floor(Math.random() * simpleShapes.length)];
|
|
21
|
+
const canvas = deps.createCanvas(width, height);
|
|
22
|
+
const ctx = canvas.getContext('2d');
|
|
23
|
+
if (!ctx) {
|
|
24
|
+
throw new Error('无法创建 Canvas 上下文');
|
|
25
|
+
}
|
|
26
|
+
ctx.fillStyle = palette.bg;
|
|
27
|
+
ctx.fillRect(0, 0, width, height);
|
|
28
|
+
const centerX = width / 2;
|
|
29
|
+
const centerY = height / 2;
|
|
30
|
+
const size = Math.min(width, height);
|
|
31
|
+
ctx.save();
|
|
32
|
+
ctx.fillStyle = palette.shape;
|
|
33
|
+
ctx.strokeStyle = palette.shape;
|
|
34
|
+
switch (patternType) {
|
|
35
|
+
case 'simple': {
|
|
36
|
+
drawSimpleShape(ctx, centerX, centerY, size * 0.6, simpleShape, polygonSides, starSpikes);
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case 'card-back': {
|
|
40
|
+
drawCardBackPattern(ctx, width, height, centerX, centerY, size, palette);
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'mandala': {
|
|
44
|
+
drawMandalaPattern(ctx, centerX, centerY, size * 0.8, palette, starSpikes);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case 'geometric': {
|
|
48
|
+
drawGeometricPattern(ctx, width, height, palette);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
case 'ornamental': {
|
|
52
|
+
drawOrnamentalPattern(ctx, width, height, centerX, centerY, size, palette);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
ctx.restore();
|
|
57
|
+
ctx.fillStyle = palette.text;
|
|
58
|
+
ctx.font = `${Math.max(12, Math.min(width, height) / 30)}px system-ui, -apple-system, sans-serif`;
|
|
59
|
+
ctx.textAlign = 'center';
|
|
60
|
+
ctx.textBaseline = 'middle';
|
|
61
|
+
const text = `${width} × ${height}`;
|
|
62
|
+
ctx.fillText(text, centerX, centerY + size * 0.35 + Math.max(20, height / 20));
|
|
63
|
+
const result = {
|
|
64
|
+
canvas
|
|
65
|
+
};
|
|
66
|
+
if (typeof canvas.toDataURL === 'function') {
|
|
67
|
+
result.toDataURL = (type = 'image/png', quality) => {
|
|
68
|
+
return canvas.toDataURL(type, quality);
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
function drawSimpleShape(ctx, cx, cy, size, shape, polygonSides, starSpikes) {
|
|
74
|
+
const radius = size / 2;
|
|
75
|
+
switch (shape) {
|
|
76
|
+
case 'rectangle': {
|
|
77
|
+
ctx.fillRect(cx - size / 2, cy - size * 0.375, size, size * 0.75);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case 'circle': {
|
|
81
|
+
ctx.beginPath();
|
|
82
|
+
ctx.arc(cx, cy, radius, 0, Math.PI * 2);
|
|
83
|
+
ctx.fill();
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case 'triangle': {
|
|
87
|
+
ctx.beginPath();
|
|
88
|
+
ctx.moveTo(cx, cy - radius);
|
|
89
|
+
ctx.lineTo(cx - radius * 0.866, cy + radius * 0.5);
|
|
90
|
+
ctx.lineTo(cx + radius * 0.866, cy + radius * 0.5);
|
|
91
|
+
ctx.closePath();
|
|
92
|
+
ctx.fill();
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case 'diamond': {
|
|
96
|
+
ctx.beginPath();
|
|
97
|
+
ctx.moveTo(cx, cy - radius);
|
|
98
|
+
ctx.lineTo(cx + radius, cy);
|
|
99
|
+
ctx.lineTo(cx, cy + radius);
|
|
100
|
+
ctx.lineTo(cx - radius, cy);
|
|
101
|
+
ctx.closePath();
|
|
102
|
+
ctx.fill();
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case 'star': {
|
|
106
|
+
drawStar(ctx, cx, cy, starSpikes, radius, radius * 0.5);
|
|
107
|
+
ctx.fill();
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
case 'polygon': {
|
|
111
|
+
drawPolygon(ctx, cx, cy, polygonSides, radius);
|
|
112
|
+
ctx.fill();
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function drawCardBackPattern(ctx, width, height, centerX, centerY, size, palette) {
|
|
118
|
+
const borderWidth = Math.min(width, height) * 0.08;
|
|
119
|
+
const innerWidth = width - borderWidth * 2;
|
|
120
|
+
const innerHeight = height - borderWidth * 2;
|
|
121
|
+
ctx.fillStyle = palette.shape;
|
|
122
|
+
ctx.fillRect(0, 0, width, height);
|
|
123
|
+
ctx.fillStyle = palette.bg;
|
|
124
|
+
ctx.fillRect(borderWidth, borderWidth, innerWidth, innerHeight);
|
|
125
|
+
ctx.fillStyle = palette.shape;
|
|
126
|
+
const centerSize = size * 0.4;
|
|
127
|
+
ctx.beginPath();
|
|
128
|
+
ctx.arc(centerX, centerY, centerSize * 0.3, 0, Math.PI * 2);
|
|
129
|
+
ctx.fill();
|
|
130
|
+
const cornerSize = size * 0.15;
|
|
131
|
+
const padding = borderWidth * 1.5;
|
|
132
|
+
drawCornerOrnament(ctx, padding, padding, cornerSize, palette.shape, 0);
|
|
133
|
+
drawCornerOrnament(ctx, width - padding, padding, cornerSize, palette.shape, Math.PI / 2);
|
|
134
|
+
drawCornerOrnament(ctx, width - padding, height - padding, cornerSize, palette.shape, Math.PI);
|
|
135
|
+
drawCornerOrnament(ctx, padding, height - padding, cornerSize, palette.shape, -Math.PI / 2);
|
|
136
|
+
const ringCount = 3;
|
|
137
|
+
for (let i = 1; i <= ringCount; i++) {
|
|
138
|
+
ctx.beginPath();
|
|
139
|
+
ctx.arc(centerX, centerY, centerSize * 0.3 + i * centerSize * 0.15, 0, Math.PI * 2);
|
|
140
|
+
ctx.lineWidth = 2;
|
|
141
|
+
ctx.stroke();
|
|
142
|
+
}
|
|
143
|
+
const smallPatternCount = 8;
|
|
144
|
+
for (let i = 0; i < smallPatternCount; i++) {
|
|
145
|
+
const angle = (i * Math.PI * 2) / smallPatternCount;
|
|
146
|
+
const dist = centerSize * 0.5;
|
|
147
|
+
const px = centerX + Math.cos(angle) * dist;
|
|
148
|
+
const py = centerY + Math.sin(angle) * dist;
|
|
149
|
+
ctx.beginPath();
|
|
150
|
+
ctx.arc(px, py, centerSize * 0.08, 0, Math.PI * 2);
|
|
151
|
+
ctx.fill();
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
function drawCornerOrnament(ctx, x, y, size, color, rotation) {
|
|
155
|
+
ctx.save();
|
|
156
|
+
ctx.translate(x, y);
|
|
157
|
+
ctx.rotate(rotation);
|
|
158
|
+
ctx.fillStyle = color;
|
|
159
|
+
ctx.fillRect(-size * 0.3, -size * 0.3, size * 0.6, size * 0.2);
|
|
160
|
+
ctx.fillRect(-size * 0.3, -size * 0.3, size * 0.2, size * 0.6);
|
|
161
|
+
ctx.beginPath();
|
|
162
|
+
ctx.arc(-size * 0.2, -size * 0.2, size * 0.08, 0, Math.PI * 2);
|
|
163
|
+
ctx.fill();
|
|
164
|
+
ctx.restore();
|
|
165
|
+
}
|
|
166
|
+
function drawMandalaPattern(ctx, centerX, centerY, size, palette, layers) {
|
|
167
|
+
const layerCount = layers;
|
|
168
|
+
const baseRadius = size * 0.4;
|
|
169
|
+
for (let layer = 0; layer < layerCount; layer++) {
|
|
170
|
+
const radius = baseRadius * (1 - layer * 0.15);
|
|
171
|
+
const petalCount = 6 + layer * 2;
|
|
172
|
+
for (let i = 0; i < petalCount; i++) {
|
|
173
|
+
const angle = (i * Math.PI * 2) / petalCount;
|
|
174
|
+
const px = centerX + Math.cos(angle) * radius;
|
|
175
|
+
const py = centerY + Math.sin(angle) * radius;
|
|
176
|
+
ctx.save();
|
|
177
|
+
ctx.translate(px, py);
|
|
178
|
+
ctx.rotate(angle + Math.PI / 2);
|
|
179
|
+
ctx.beginPath();
|
|
180
|
+
if (ctx.ellipse) {
|
|
181
|
+
ctx.ellipse(0, 0, radius * 0.3, radius * 0.15, 0, 0, Math.PI * 2);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
ctx.arc(0, 0, radius * 0.3, 0, Math.PI * 2);
|
|
185
|
+
}
|
|
186
|
+
ctx.fill();
|
|
187
|
+
ctx.restore();
|
|
188
|
+
}
|
|
189
|
+
if (layer > 0) {
|
|
190
|
+
ctx.beginPath();
|
|
191
|
+
for (let i = 0; i < petalCount; i++) {
|
|
192
|
+
const angle = (i * Math.PI * 2) / petalCount;
|
|
193
|
+
const px = centerX + Math.cos(angle) * radius;
|
|
194
|
+
const py = centerY + Math.sin(angle) * radius;
|
|
195
|
+
if (i === 0) {
|
|
196
|
+
ctx.moveTo(px, py);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
ctx.lineTo(px, py);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
ctx.closePath();
|
|
203
|
+
ctx.lineWidth = 2;
|
|
204
|
+
ctx.stroke();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
ctx.beginPath();
|
|
208
|
+
ctx.arc(centerX, centerY, baseRadius * 0.2, 0, Math.PI * 2);
|
|
209
|
+
ctx.fill();
|
|
210
|
+
}
|
|
211
|
+
function drawGeometricPattern(ctx, width, height, palette) {
|
|
212
|
+
const tileSize = Math.min(width, height) / 8;
|
|
213
|
+
const cols = Math.ceil(width / tileSize) + 1;
|
|
214
|
+
const rows = Math.ceil(height / tileSize) + 1;
|
|
215
|
+
for (let row = 0; row < rows; row++) {
|
|
216
|
+
for (let col = 0; col < cols; col++) {
|
|
217
|
+
const x = col * tileSize - tileSize / 2;
|
|
218
|
+
const y = row * tileSize - tileSize / 2;
|
|
219
|
+
const pattern = (row + col) % 4;
|
|
220
|
+
ctx.save();
|
|
221
|
+
ctx.translate(x, y);
|
|
222
|
+
switch (pattern) {
|
|
223
|
+
case 0: {
|
|
224
|
+
ctx.beginPath();
|
|
225
|
+
ctx.arc(0, 0, tileSize * 0.3, 0, Math.PI * 2);
|
|
226
|
+
ctx.fill();
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
case 1: {
|
|
230
|
+
ctx.fillRect(-tileSize * 0.3, -tileSize * 0.3, tileSize * 0.6, tileSize * 0.6);
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
case 2: {
|
|
234
|
+
ctx.beginPath();
|
|
235
|
+
ctx.moveTo(0, -tileSize * 0.3);
|
|
236
|
+
ctx.lineTo(-tileSize * 0.3, tileSize * 0.3);
|
|
237
|
+
ctx.lineTo(tileSize * 0.3, tileSize * 0.3);
|
|
238
|
+
ctx.closePath();
|
|
239
|
+
ctx.fill();
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
case 3: {
|
|
243
|
+
ctx.beginPath();
|
|
244
|
+
ctx.moveTo(0, -tileSize * 0.3);
|
|
245
|
+
ctx.lineTo(tileSize * 0.3, 0);
|
|
246
|
+
ctx.lineTo(0, tileSize * 0.3);
|
|
247
|
+
ctx.lineTo(-tileSize * 0.3, 0);
|
|
248
|
+
ctx.closePath();
|
|
249
|
+
ctx.fill();
|
|
250
|
+
break;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
ctx.restore();
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
function drawOrnamentalPattern(ctx, width, height, centerX, centerY, size, palette) {
|
|
258
|
+
const borderWidth = size * 0.05;
|
|
259
|
+
ctx.lineWidth = borderWidth;
|
|
260
|
+
ctx.strokeStyle = palette.shape;
|
|
261
|
+
ctx.strokeRect(borderWidth / 2, borderWidth / 2, width - borderWidth, height - borderWidth);
|
|
262
|
+
const mainSize = size * 0.5;
|
|
263
|
+
const outerElements = 12;
|
|
264
|
+
for (let i = 0; i < outerElements; i++) {
|
|
265
|
+
const angle = (i * Math.PI * 2) / outerElements;
|
|
266
|
+
const dist = mainSize * 0.45;
|
|
267
|
+
const px = centerX + Math.cos(angle) * dist;
|
|
268
|
+
const py = centerY + Math.sin(angle) * dist;
|
|
269
|
+
ctx.save();
|
|
270
|
+
ctx.translate(px, py);
|
|
271
|
+
ctx.rotate(angle);
|
|
272
|
+
ctx.beginPath();
|
|
273
|
+
if (ctx.ellipse) {
|
|
274
|
+
ctx.ellipse(0, 0, mainSize * 0.1, mainSize * 0.2, 0, 0, Math.PI * 2);
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
ctx.arc(0, 0, mainSize * 0.15, 0, Math.PI * 2);
|
|
278
|
+
}
|
|
279
|
+
ctx.fill();
|
|
280
|
+
ctx.restore();
|
|
281
|
+
}
|
|
282
|
+
const midElements = 8;
|
|
283
|
+
for (let i = 0; i < midElements; i++) {
|
|
284
|
+
const angle = (i * Math.PI * 2) / midElements;
|
|
285
|
+
const dist = mainSize * 0.3;
|
|
286
|
+
const px = centerX + Math.cos(angle) * dist;
|
|
287
|
+
const py = centerY + Math.sin(angle) * dist;
|
|
288
|
+
ctx.beginPath();
|
|
289
|
+
ctx.arc(px, py, mainSize * 0.08, 0, Math.PI * 2);
|
|
290
|
+
ctx.fill();
|
|
291
|
+
}
|
|
292
|
+
ctx.beginPath();
|
|
293
|
+
ctx.arc(centerX, centerY, mainSize * 0.15, 0, Math.PI * 2);
|
|
294
|
+
ctx.fill();
|
|
295
|
+
drawStar(ctx, centerX, centerY, 8, mainSize * 0.2, mainSize * 0.1);
|
|
296
|
+
ctx.fillStyle = palette.bg;
|
|
297
|
+
ctx.fill();
|
|
298
|
+
}
|
|
299
|
+
function drawStar(ctx, cx, cy, spikes, outerRadius, innerRadius) {
|
|
300
|
+
ctx.beginPath();
|
|
301
|
+
const step = Math.PI / spikes;
|
|
302
|
+
for (let i = 0; i < spikes * 2; i++) {
|
|
303
|
+
const r = i % 2 === 0 ? outerRadius : innerRadius;
|
|
304
|
+
const angle = i * step - Math.PI / 2;
|
|
305
|
+
const x = cx + Math.cos(angle) * r;
|
|
306
|
+
const y = cy + Math.sin(angle) * r;
|
|
307
|
+
if (i === 0) {
|
|
308
|
+
ctx.moveTo(x, y);
|
|
309
|
+
}
|
|
310
|
+
else {
|
|
311
|
+
ctx.lineTo(x, y);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
ctx.closePath();
|
|
315
|
+
}
|
|
316
|
+
function drawPolygon(ctx, cx, cy, sides, radius) {
|
|
317
|
+
ctx.beginPath();
|
|
318
|
+
for (let i = 0; i < sides; i++) {
|
|
319
|
+
const angle = (i * 2 * Math.PI) / sides - Math.PI / 2;
|
|
320
|
+
const x = cx + Math.cos(angle) * radius;
|
|
321
|
+
const y = cy + Math.sin(angle) * radius;
|
|
322
|
+
if (i === 0) {
|
|
323
|
+
ctx.moveTo(x, y);
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
ctx.lineTo(x, y);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
ctx.closePath();
|
|
330
|
+
}
|
|
331
|
+
//# sourceMappingURL=generatePlaceholderImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generatePlaceholderImage.js","sourceRoot":"","sources":["../../../src/functions/image/generatePlaceholderImage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface UseReactiveCookieDeps {
|
|
2
|
+
getCookie: () => string;
|
|
3
|
+
setCookie: (value: string) => void;
|
|
4
|
+
}
|
|
5
|
+
export interface CookieOptions {
|
|
6
|
+
days?: number;
|
|
7
|
+
path?: string;
|
|
8
|
+
domain?: string;
|
|
9
|
+
secure?: boolean;
|
|
10
|
+
sameSite?: 'Strict' | 'Lax' | 'None';
|
|
11
|
+
}
|
|
12
|
+
export interface ReactiveCookie {
|
|
13
|
+
value: string | null;
|
|
14
|
+
set: (value: string, options?: CookieOptions) => void;
|
|
15
|
+
remove: (options?: Pick<CookieOptions, 'path' | 'domain'>) => void;
|
|
16
|
+
subscribe: (listener: () => void) => () => void;
|
|
17
|
+
dispose: () => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function useReactiveCookie(name: string, deps: UseReactiveCookieDeps): ReactiveCookie;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { createReactive } from '../utils/createReactive';
|
|
2
|
+
export function useReactiveCookie(name, deps) {
|
|
3
|
+
const parseCookie = () => {
|
|
4
|
+
const cookies = deps.getCookie().split(';');
|
|
5
|
+
for (const cookie of cookies) {
|
|
6
|
+
const [key, value] = cookie.trim().split('=');
|
|
7
|
+
if (key === name) {
|
|
8
|
+
return decodeURIComponent(value);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return null;
|
|
12
|
+
};
|
|
13
|
+
const state = createReactive({ value: parseCookie() }, {
|
|
14
|
+
subscribers: new Set(),
|
|
15
|
+
notify: () => { },
|
|
16
|
+
subscribe: (listener) => {
|
|
17
|
+
const subs = new Set();
|
|
18
|
+
subs.add(listener);
|
|
19
|
+
return () => subs.delete(listener);
|
|
20
|
+
},
|
|
21
|
+
dispose: () => { },
|
|
22
|
+
createProxy: (target, deps) => {
|
|
23
|
+
return new Proxy(target, {
|
|
24
|
+
get(target, property) {
|
|
25
|
+
if (property === 'subscribe' || property === 'notify' || property === 'dispose') {
|
|
26
|
+
return deps[property];
|
|
27
|
+
}
|
|
28
|
+
return target[property];
|
|
29
|
+
},
|
|
30
|
+
set(target, property, value) {
|
|
31
|
+
target[property] = value;
|
|
32
|
+
deps.notify();
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
getChangePath: (target, property) => [String(property)]
|
|
38
|
+
});
|
|
39
|
+
const set = (value, options = {}) => {
|
|
40
|
+
const { days, path = '/', domain, secure = false, sameSite = 'Lax' } = options;
|
|
41
|
+
let cookieString = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
|
|
42
|
+
if (days) {
|
|
43
|
+
const date = new Date();
|
|
44
|
+
date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);
|
|
45
|
+
cookieString += `; expires=${date.toUTCString()}`;
|
|
46
|
+
}
|
|
47
|
+
if (path) {
|
|
48
|
+
cookieString += `; path=${path}`;
|
|
49
|
+
}
|
|
50
|
+
if (domain) {
|
|
51
|
+
cookieString += `; domain=${domain}`;
|
|
52
|
+
}
|
|
53
|
+
if (secure) {
|
|
54
|
+
cookieString += '; secure';
|
|
55
|
+
}
|
|
56
|
+
if (sameSite) {
|
|
57
|
+
cookieString += `; SameSite=${sameSite}`;
|
|
58
|
+
}
|
|
59
|
+
deps.setCookie(cookieString);
|
|
60
|
+
state.value = value;
|
|
61
|
+
};
|
|
62
|
+
const remove = (options = {}) => {
|
|
63
|
+
const { path = '/', domain } = options;
|
|
64
|
+
let cookieString = `${encodeURIComponent(name)}=; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
|
|
65
|
+
if (path) {
|
|
66
|
+
cookieString += `; path=${path}`;
|
|
67
|
+
}
|
|
68
|
+
if (domain) {
|
|
69
|
+
cookieString += `; domain=${domain}`;
|
|
70
|
+
}
|
|
71
|
+
deps.setCookie(cookieString);
|
|
72
|
+
state.value = null;
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
get value() {
|
|
76
|
+
return state.value;
|
|
77
|
+
},
|
|
78
|
+
set,
|
|
79
|
+
remove,
|
|
80
|
+
subscribe: state.subscribe,
|
|
81
|
+
dispose: state.dispose
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=useReactiveCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReactiveCookie.js","sourceRoot":"","sources":["../../../src/functions/reactive/useReactiveCookie.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Ref } from '../../references/vue.d';
|
|
2
|
+
import type { Document, HTMLElement, Event } from '../../references/dom.d';
|
|
3
|
+
export interface VueCompositionAPI {
|
|
4
|
+
onMounted: (fn: () => void) => void;
|
|
5
|
+
onUnmounted: (fn: () => void) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface UseClickOutsideDeps {
|
|
8
|
+
vue: VueCompositionAPI;
|
|
9
|
+
addEventListener: Document['addEventListener'];
|
|
10
|
+
removeEventListener: Document['removeEventListener'];
|
|
11
|
+
}
|
|
12
|
+
export declare function useClickOutside(target: Ref<HTMLElement | undefined>, handler: (event: Event) => void, deps: UseClickOutsideDeps): void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function useClickOutside(target, handler, deps) {
|
|
2
|
+
const listener = (event) => {
|
|
3
|
+
const el = target.value;
|
|
4
|
+
if (!el || el === event.target || el.contains(event.target)) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
handler(event);
|
|
8
|
+
};
|
|
9
|
+
deps.vue.onMounted(() => {
|
|
10
|
+
deps.addEventListener('click', listener, true);
|
|
11
|
+
});
|
|
12
|
+
deps.vue.onUnmounted(() => {
|
|
13
|
+
deps.removeEventListener('click', listener, true);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=useClickOutside.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClickOutside.js","sourceRoot":"","sources":["../../src/hooks/useClickOutside.ts"],"names":[],"mappings":"AAmDA,MAAM,UAAU,eAAe,CAC7B,MAAoC,EACpC,OAA+B,EAC/B,IAAyB;IAEzB,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAA;QACvB,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE,CAAC;YACpE,OAAM;QACR,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,CAAA;IAED,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACtB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAyB,EAAE,IAAI,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE;QACxB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAyB,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Ref } from '../../references/vue.d';
|
|
2
|
+
import type { Navigator } from '../../references/browser.d';
|
|
3
|
+
import type { setTimeout, clearTimeout } from '../../references/timer.d';
|
|
4
|
+
export interface VueCompositionAPI {
|
|
5
|
+
ref: <T>(value: T) => Ref<T>;
|
|
6
|
+
}
|
|
7
|
+
export interface UseClipboardDeps {
|
|
8
|
+
vue: VueCompositionAPI;
|
|
9
|
+
writeText: Navigator['clipboard']['writeText'];
|
|
10
|
+
readText: Navigator['clipboard']['readText'];
|
|
11
|
+
setTimeout: typeof setTimeout;
|
|
12
|
+
clearTimeout: typeof clearTimeout;
|
|
13
|
+
}
|
|
14
|
+
export interface UseClipboardReturn {
|
|
15
|
+
text: Ref<string>;
|
|
16
|
+
copied: Ref<boolean>;
|
|
17
|
+
isSupported: Ref<boolean>;
|
|
18
|
+
copy: (text: string) => Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export declare function useClipboard(deps: UseClipboardDeps): UseClipboardReturn;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export function useClipboard(deps) {
|
|
2
|
+
const text = deps.vue.ref('');
|
|
3
|
+
const copied = deps.vue.ref(false);
|
|
4
|
+
const isSupported = deps.vue.ref(!!deps.writeText && !!deps.readText);
|
|
5
|
+
let timeoutId = null;
|
|
6
|
+
const copy = async (value) => {
|
|
7
|
+
if (!isSupported.value) {
|
|
8
|
+
throw new Error('Clipboard API is not supported');
|
|
9
|
+
}
|
|
10
|
+
try {
|
|
11
|
+
await deps.writeText(value);
|
|
12
|
+
text.value = value;
|
|
13
|
+
copied.value = true;
|
|
14
|
+
if (timeoutId) {
|
|
15
|
+
deps.clearTimeout(timeoutId);
|
|
16
|
+
}
|
|
17
|
+
timeoutId = deps.setTimeout(() => {
|
|
18
|
+
copied.value = false;
|
|
19
|
+
}, 3000);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
copied.value = false;
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
text,
|
|
28
|
+
copied,
|
|
29
|
+
isSupported,
|
|
30
|
+
copy
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=useClipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useClipboard.js","sourceRoot":"","sources":["../../src/hooks/useClipboard.ts"],"names":[],"mappings":"AAiEA,MAAM,UAAU,YAAY,CAAC,IAAsB;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAS,EAAE,CAAC,CAAA;IACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,KAAK,CAAC,CAAA;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAU,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAE9E,IAAI,SAAS,GAAQ,IAAI,CAAA;IAEzB,MAAM,IAAI,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;QAClD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACnD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YAClB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;YAGnB,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;YAC9B,CAAC;YACD,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;gBAC/B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;YACtB,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,GAAG,KAAK,CAAA;YACpB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,IAAI;QACJ,MAAM;QACN,WAAW;QACX,IAAI;KACL,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Ref } from '../../references/vue.d';
|
|
2
|
+
export interface VueCompositionAPI {
|
|
3
|
+
ref: <T>(value: T) => Ref<T>;
|
|
4
|
+
}
|
|
5
|
+
export interface UseCounterDeps {
|
|
6
|
+
vue: VueCompositionAPI;
|
|
7
|
+
}
|
|
8
|
+
export interface UseCounterOptions {
|
|
9
|
+
min?: number;
|
|
10
|
+
max?: number;
|
|
11
|
+
}
|
|
12
|
+
export interface UseCounterReturn {
|
|
13
|
+
count: Ref<number>;
|
|
14
|
+
inc: (delta?: number) => void;
|
|
15
|
+
dec: (delta?: number) => void;
|
|
16
|
+
reset: () => void;
|
|
17
|
+
set: (val: number) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function useCounter(initialValue: number | undefined, options: UseCounterOptions | undefined, deps: UseCounterDeps): UseCounterReturn;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function useCounter(initialValue = 0, options = {}, deps) {
|
|
2
|
+
const { min, max } = options;
|
|
3
|
+
const count = deps.vue.ref(initialValue);
|
|
4
|
+
const inc = (delta = 1) => {
|
|
5
|
+
const newValue = count.value + delta;
|
|
6
|
+
if (max !== undefined && newValue > max) {
|
|
7
|
+
count.value = max;
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
count.value = newValue;
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
const dec = (delta = 1) => {
|
|
14
|
+
const newValue = count.value - delta;
|
|
15
|
+
if (min !== undefined && newValue < min) {
|
|
16
|
+
count.value = min;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
count.value = newValue;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const reset = () => {
|
|
23
|
+
count.value = initialValue;
|
|
24
|
+
};
|
|
25
|
+
const set = (val) => {
|
|
26
|
+
if (min !== undefined && val < min) {
|
|
27
|
+
count.value = min;
|
|
28
|
+
}
|
|
29
|
+
else if (max !== undefined && val > max) {
|
|
30
|
+
count.value = max;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
count.value = val;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
return {
|
|
37
|
+
count,
|
|
38
|
+
inc,
|
|
39
|
+
dec,
|
|
40
|
+
reset,
|
|
41
|
+
set
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=useCounter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCounter.js","sourceRoot":"","sources":["../../src/hooks/useCounter.ts"],"names":[],"mappings":"AAmEA,MAAM,UAAU,UAAU,CACxB,eAAuB,CAAC,EACxB,UAA6B,EAAE,EAC/B,IAAoB;IAEpB,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAA;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAS,YAAY,CAAC,CAAA;IAEhD,MAAM,GAAG,GAAG,CAAC,QAAgB,CAAC,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;QACpC,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACxC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,CAAC,QAAgB,CAAC,EAAE,EAAE;QAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAA;QACpC,IAAI,GAAG,KAAK,SAAS,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;YACxC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAA;QACxB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,KAAK,CAAC,KAAK,GAAG,YAAY,CAAA;IAC5B,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE;QAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YACnC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;QACnB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;YAC1C,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;QACnB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,GAAG,GAAG,CAAA;QACnB,CAAC;IACH,CAAC,CAAA;IAED,OAAO;QACL,KAAK;QACL,GAAG;QACH,GAAG;QACH,KAAK;QACL,GAAG;KACJ,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Ref } from '../../references/vue.d';
|
|
2
|
+
import type { EventListener, AddEventListenerOptions, EventListenerOptions } from '../../references/dom.d';
|
|
3
|
+
export interface VueCompositionAPI {
|
|
4
|
+
onMounted: (fn: () => void) => void;
|
|
5
|
+
onUnmounted: (fn: () => void) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface EventTarget {
|
|
8
|
+
addEventListener(type: string, listener: EventListener, options?: boolean | AddEventListenerOptions): void;
|
|
9
|
+
removeEventListener(type: string, listener: EventListener, options?: boolean | EventListenerOptions): void;
|
|
10
|
+
}
|
|
11
|
+
export interface UseEventListenerDeps {
|
|
12
|
+
vue: VueCompositionAPI;
|
|
13
|
+
}
|
|
14
|
+
export declare function useEventListener(target: Ref<EventTarget | undefined> | EventTarget, event: string, handler: EventListener, options: (boolean | AddEventListenerOptions) | undefined, deps: UseEventListenerDeps): void;
|