handy-uploader 1.1.8 → 2.0.1

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 (43) hide show
  1. package/README.md +391 -30
  2. package/dist/components/InsertButton.vue.d.ts +24 -0
  3. package/dist/components/SelectFileIconType.vue.d.ts +29 -0
  4. package/dist/components/SimpleUploader.vue.d.ts +60 -0
  5. package/dist/components/TableUploader.vue.d.ts +62 -0
  6. package/dist/components/ThumbnailUploader.vue.d.ts +59 -0
  7. package/dist/components/handyUploader.vue.d.ts +146 -0
  8. package/dist/composables/useErrorHandler.d.ts +39 -0
  9. package/dist/composables/useFileUpload.d.ts +33 -0
  10. package/dist/favicon.ico +0 -0
  11. package/dist/handy-uploader.es.js +2407 -0
  12. package/dist/handy-uploader.umd.js +1 -0
  13. package/dist/lib/index.d.ts +713 -0
  14. package/dist/lib/language.d.ts +39 -0
  15. package/dist/types/index.d.ts +129 -0
  16. package/dist/utils/documentation.d.ts +95 -0
  17. package/dist/utils/fileUtils.d.ts +41 -0
  18. package/dist/utils/propValidation.d.ts +71 -0
  19. package/package.json +59 -56
  20. package/.eslintrc.js +0 -14
  21. package/LICENSE +0 -21
  22. package/babel.config.js +0 -3
  23. package/dist/demo.html +0 -10
  24. package/dist/handyUploader.common.js +0 -30712
  25. package/dist/handyUploader.common.js.map +0 -1
  26. package/dist/handyUploader.css +0 -5
  27. package/dist/handyUploader.umd.js +0 -30722
  28. package/dist/handyUploader.umd.js.map +0 -1
  29. package/dist/handyUploader.umd.min.js +0 -11
  30. package/dist/handyUploader.umd.min.js.map +0 -1
  31. package/package-lock.json +0 -11831
  32. package/src/App.vue +0 -69
  33. package/src/components/InsertButton.vue +0 -61
  34. package/src/components/SelectFileIconType.vue +0 -103
  35. package/src/components/SimpleUploader.vue +0 -401
  36. package/src/components/TableUploader.vue +0 -350
  37. package/src/components/ThumbnailUploader.vue +0 -371
  38. package/src/components/handyUploader.vue +0 -883
  39. package/src/components/index.js +0 -10
  40. package/src/components/language.js +0 -148
  41. package/src/main.js +0 -10
  42. package/src/plugins/vuetify.js +0 -11
  43. package/vue.config.js +0 -3
package/README.md CHANGED
@@ -1,42 +1,403 @@
1
- <p align="center">
2
- <img src="https://img.techpowerup.org/200626/vue-file-uploader038.png" alt="handy uplader"/>
3
- </p>
1
+ # Handy Uploader Vue
4
2
 
5
- <div>
6
- <a title="MadeWithVueJs.com Shield" href="https://madewithvuejs.com/p/handy-uploader/shield-link"> <img src="https://madewithvuejs.com/storage/repo-shields/2558-shield.svg"/></a>
3
+ [![npm version](https://badge.fury.io/js/handy-uploader.svg)](https://badge.fury.io/js/handy-uploader)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Vue 3](https://img.shields.io/badge/Vue-3.x-4FC08D.svg)](https://vuejs.org/)
6
+ [![TypeScript](https://img.shields.io/badge/TypeScript-Ready-blue.svg)](https://www.typescriptlang.org/)
7
7
 
8
- <img alt="npm" src="https://img.shields.io/npm/v/handy-uploader">
8
+ ## 🚀 [Live Demo](https://friendly-varahamihira-45c09f.netlify.app)
9
9
 
10
+ A comprehensive Vue 3 file uploader component library with advanced features including **automatic video thumbnail generation**, multiple upload styles, and extensive file type support.
10
11
 
11
- <img alt="NPM" src="https://img.shields.io/npm/l/handy-uploader">
12
- </div>
12
+ ## Key Features
13
13
 
14
- # handy-uploader
14
+ ### 🎥 **Video Thumbnail Generation**
15
+ - **Automatic thumbnail extraction** from video files using Canvas API
16
+ - Support for **MP4, AVI, MOV, WMV, FLV, WebM** formats
17
+ - Real-time thumbnail display with play button overlay
18
+ - No external dependencies required
15
19
 
16
- > Complete and simple file uploader with image compressor in Vue.js
20
+ ### 📁 **Comprehensive File Support**
21
+ - **Images**: JPG, JPEG, PNG, GIF, BMP, SVG, WebP, TIFF
22
+ - **Videos**: MP4, AVI, MOV, WMV, FLV, WebM
23
+ - **Documents**: PDF, DOC, DOCX, TXT, RTF, ODT
24
+ - **Spreadsheets**: XLS, XLSX, CSV, ODS
25
+ - **Presentations**: PPT, PPTX, ODP
26
+ - **Archives**: ZIP, RAR, 7Z, TAR, GZ
27
+ - **Audio**: MP3, WAV, FLAC, AAC, OGG
17
28
 
18
- + Choice Theme : Thumbnail, Simple, Table
19
- + Add custom fields (Title, Description, Tags, ...)
20
- + Image compressor
21
- + Select level for Image compressor
22
- + Mange file extensions
23
- + Manage files count
24
- + Manage files size
25
- + Multi languages support
26
- + Add custom language
27
- + Right to left support
28
- + Multi file upload
29
- + Responsive
30
- + ...
29
+ ### 🎨 **Multiple Upload Styles**
30
+ - **ThumbnailUploader**: Grid-based layout with file previews
31
+ - **TableUploader**: Table-based layout for detailed file information
32
+ - **SimpleUploader**: Minimalist drag-and-drop interface
31
33
 
32
- ## Examples
33
- - [Demo](https://friendly-varahamihira-45c09f.netlify.app)
34
+ ### 🌍 **Internationalization**
35
+ - **8 languages**: English, Chinese, Spanish, French, German, Japanese, Korean, Arabic
36
+ - RTL support for Arabic
37
+ - Easy language switching
34
38
 
35
- ## Documentation
36
- - [Documentation](https://friendly-varahamihira-45c09f.netlify.app/documentation)
39
+ ## 📦 Installation
37
40
 
38
- ## Install
39
41
  ```bash
40
- # install
41
- $ npm install handy-uploader
42
+ npm install handy-uploader
43
+ ```
42
44
 
45
+ ```bash
46
+ yarn add handy-uploader
47
+ ```
48
+
49
+ ```bash
50
+ pnpm add handy-uploader
51
+ ```
52
+
53
+ ## 🚀 Quick Start
54
+
55
+ ### 1. Install Dependencies
56
+
57
+ Make sure you have the required peer dependencies:
58
+
59
+ ```bash
60
+ npm install vue@^3.0.0 vuetify@^3.0.0
61
+ ```
62
+
63
+ ### 2. Import and Use
64
+
65
+ ```vue
66
+ <template>
67
+ <div>
68
+ <!-- Thumbnail Uploader with Video Support -->
69
+ <ThumbnailUploader
70
+ :max-file-size="10485760"
71
+ :max-file-count="5"
72
+ :accepted-file-types="['image/*', 'video/*']"
73
+ :language="'en'"
74
+ @files-selected="handleFilesSelected"
75
+ />
76
+ </div>
77
+ </template>
78
+
79
+ <script setup lang="ts">
80
+ import { ThumbnailUploader } from 'handy-uploader'
81
+ import type { FileData } from 'handy-uploader'
82
+
83
+ const handleFilesSelected = (files: FileData[]) => {
84
+ console.log('Selected files:', files)
85
+ // Each file includes base64 data and video thumbnails are auto-generated
86
+ }
87
+ </script>
88
+ ```
89
+
90
+ ### 3. Setup Vuetify (Required)
91
+
92
+ ```typescript
93
+ // main.ts
94
+ import { createApp } from 'vue'
95
+ import { createVuetify } from 'vuetify'
96
+ import 'vuetify/styles'
97
+ import '@mdi/font/css/materialdesignicons.css'
98
+
99
+ const vuetify = createVuetify()
100
+ const app = createApp(App)
101
+
102
+ app.use(vuetify)
103
+ app.mount('#app')
104
+ ```
105
+
106
+ ## 📖 Component Usage
107
+
108
+ ### ThumbnailUploader (Recommended)
109
+
110
+ Perfect for media files with automatic video thumbnail generation:
111
+
112
+ ```vue
113
+ <template>
114
+ <ThumbnailUploader
115
+ :max-file-size="52428800"
116
+ :max-file-count="10"
117
+ :accepted-file-types="['image/*', 'video/*', 'application/pdf']"
118
+ :language="'en'"
119
+ :theme="'light'"
120
+ @files-selected="onFilesSelected"
121
+ @file-removed="onFileRemoved"
122
+ @error="onError"
123
+ />
124
+ </template>
125
+
126
+ <script setup>
127
+ import { ThumbnailUploader } from 'handy-uploader'
128
+
129
+ const onFilesSelected = (files) => {
130
+ // Video files will have thumbnails automatically generated
131
+ files.forEach(file => {
132
+ if (file.type === 'video') {
133
+ console.log('Video thumbnail:', file.thumbnail) // Base64 thumbnail
134
+ }
135
+ })
136
+ }
137
+ </script>
138
+ ```
139
+
140
+ ### TableUploader
141
+
142
+ Great for document management with detailed file information:
143
+
144
+ ```vue
145
+ <template>
146
+ <TableUploader
147
+ :max-file-size="104857600"
148
+ :max-file-count="20"
149
+ :language="'en'"
150
+ @files-selected="handleFiles"
151
+ />
152
+ </template>
153
+ ```
154
+
155
+ ### SimpleUploader
156
+
157
+ Minimal drag-and-drop interface:
158
+
159
+ ```vue
160
+ <template>
161
+ <SimpleUploader
162
+ :max-file-size="5242880"
163
+ :accepted-file-types="['image/*']"
164
+ @files-selected="handleImages"
165
+ />
166
+ </template>
167
+ ```
168
+
169
+ ## ⚙️ API Reference
170
+
171
+ ### Props
172
+
173
+ | Prop | Type | Default | Description |
174
+ |------|------|---------|-------------|
175
+ | `maxFileSize` | `number` | `10485760` | Maximum file size in bytes (10MB) |
176
+ | `maxFileCount` | `number` | `5` | Maximum number of files |
177
+ | `acceptedFileTypes` | `string[]` | `['*']` | Accepted MIME types |
178
+ | `language` | `string` | `'en'` | Language code |
179
+ | `theme` | `string` | `'light'` | Theme variant |
180
+
181
+ ### Events
182
+
183
+ | Event | Payload | Description |
184
+ |-------|---------|-------------|
185
+ | `files-selected` | `FileData[]` | Emitted when files are selected |
186
+ | `file-removed` | `FileData` | Emitted when a file is removed |
187
+ | `error` | `Error` | Emitted on errors |
188
+
189
+ ### FileData Interface
190
+
191
+ ```typescript
192
+ interface FileData {
193
+ id: string
194
+ name: string
195
+ size: number
196
+ type: string
197
+ format: string
198
+ base64?: string
199
+ thumbnail?: string // Auto-generated for videos
200
+ lastModified: number
201
+ }
202
+ ```
203
+
204
+ ## 🎯 Advanced Features
205
+
206
+ ### Video Thumbnail Generation
207
+
208
+ The library automatically generates thumbnails for video files:
209
+
210
+ ```javascript
211
+ // Thumbnails are generated automatically
212
+ const videoFile = {
213
+ name: 'video.mp4',
214
+ type: 'video',
215
+ thumbnail: 'data:image/jpeg;base64,/9j/4AAQ...' // Auto-generated
216
+ }
217
+ ```
218
+
219
+ ### File Type Detection
220
+
221
+ Automatic file type detection and icon assignment:
222
+
223
+ ```javascript
224
+ // Automatic type detection
225
+ const file = {
226
+ name: 'document.pdf',
227
+ type: 'document', // Auto-detected
228
+ icon: 'mdi-file-pdf-box', // Auto-assigned
229
+ color: 'red' // Auto-assigned
230
+ }
231
+ ```
232
+
233
+ ### Image Compression
234
+
235
+ Built-in image compression for large files:
236
+
237
+ ```vue
238
+ <ThumbnailUploader
239
+ :compress-images="true"
240
+ :compression-quality="0.8"
241
+ :max-width="1920"
242
+ :max-height="1080"
243
+ />
244
+ ```
245
+
246
+ ## 🌍 Internationalization
247
+
248
+ Supported languages:
249
+
250
+ ```javascript
251
+ const languages = [
252
+ 'en', // English
253
+ 'zh', // Chinese
254
+ 'es', // Spanish
255
+ 'fr', // French
256
+ 'de', // German
257
+ 'ja', // Japanese
258
+ 'ko', // Korean
259
+ 'ar' // Arabic (RTL)
260
+ ]
261
+ ```
262
+
263
+ ## 🛠️ Technical Requirements
264
+
265
+ ### Peer Dependencies
266
+ - **Vue**: ^3.0.0
267
+ - **Vuetify**: ^3.0.0
268
+
269
+ ### Browser Support
270
+ - Chrome 88+
271
+ - Firefox 85+
272
+ - Safari 14+
273
+ - Edge 88+
274
+
275
+ ### Bundle Size
276
+ - **Gzipped**: ~45KB
277
+ - **Minified**: ~120KB
278
+
279
+ ## 🎨 Customization
280
+
281
+ ### Theming
282
+
283
+ Works with Vuetify's theming system:
284
+
285
+ ```javascript
286
+ // vuetify.config.js
287
+ export default createVuetify({
288
+ theme: {
289
+ themes: {
290
+ light: {
291
+ primary: '#1976D2',
292
+ secondary: '#424242',
293
+ // Custom theme colors
294
+ }
295
+ }
296
+ }
297
+ })
298
+ ```
299
+
300
+ ### Custom Styling
301
+
302
+ ```vue
303
+ <style scoped>
304
+ .handy-uploader {
305
+ --uploader-border-radius: 12px;
306
+ --uploader-primary-color: #1976D2;
307
+ --uploader-background: #f5f5f5;
308
+ }
309
+ </style>
310
+ ```
311
+
312
+ ## 📝 Examples
313
+
314
+ ### Complete Example with All Features
315
+
316
+ ```vue
317
+ <template>
318
+ <div class="uploader-container">
319
+ <h2>File Upload with Video Thumbnails</h2>
320
+
321
+ <ThumbnailUploader
322
+ :max-file-size="52428800"
323
+ :max-file-count="10"
324
+ :accepted-file-types="['image/*', 'video/*', 'application/pdf']"
325
+ :language="currentLanguage"
326
+ :theme="isDark ? 'dark' : 'light'"
327
+ :compress-images="true"
328
+ :compression-quality="0.8"
329
+ @files-selected="handleFilesSelected"
330
+ @file-removed="handleFileRemoved"
331
+ @error="handleError"
332
+ />
333
+
334
+ <!-- Display selected files -->
335
+ <div v-if="selectedFiles.length" class="mt-4">
336
+ <h3>Selected Files:</h3>
337
+ <div v-for="file in selectedFiles" :key="file.id" class="file-item">
338
+ <img v-if="file.thumbnail" :src="file.thumbnail" alt="Thumbnail" width="100" />
339
+ <span>{{ file.name }} ({{ formatFileSize(file.size) }})</span>
340
+ </div>
341
+ </div>
342
+ </div>
343
+ </template>
344
+
345
+ <script setup lang="ts">
346
+ import { ref } from 'vue'
347
+ import { ThumbnailUploader, type FileData } from 'handy-uploader'
348
+
349
+ const selectedFiles = ref<FileData[]>([])
350
+ const currentLanguage = ref('en')
351
+ const isDark = ref(false)
352
+
353
+ const handleFilesSelected = (files: FileData[]) => {
354
+ selectedFiles.value = files
355
+ console.log('Files with thumbnails:', files)
356
+ }
357
+
358
+ const handleFileRemoved = (file: FileData) => {
359
+ console.log('File removed:', file.name)
360
+ }
361
+
362
+ const handleError = (error: Error) => {
363
+ console.error('Upload error:', error)
364
+ }
365
+
366
+ const formatFileSize = (bytes: number) => {
367
+ return bytes > 1024 * 1024
368
+ ? `${(bytes / 1024 / 1024).toFixed(2)} MB`
369
+ : `${(bytes / 1024).toFixed(2)} KB`
370
+ }
371
+ </script>
372
+ ```
373
+
374
+ ## 🤝 Contributing
375
+
376
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
377
+
378
+ 1. Fork the repository
379
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
380
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
381
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
382
+ 5. Open a Pull Request
383
+
384
+ ## 📄 License
385
+
386
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
387
+
388
+ ## 🔗 Links
389
+
390
+ - [GitHub Repository](https://github.com/yourusername/handy-uploader)
391
+ - [npm Package](https://www.npmjs.com/package/handy-uploader)
392
+ - [Documentation](https://github.com/yourusername/handy-uploader#readme)
393
+ - [Issues](https://github.com/yourusername/handy-uploader/issues)
394
+
395
+ ## 📊 Stats
396
+
397
+ ![npm downloads](https://img.shields.io/npm/dm/handy-uploader.svg)
398
+ ![GitHub stars](https://img.shields.io/github/stars/yourusername/handy-uploader.svg)
399
+ ![GitHub issues](https://img.shields.io/github/issues/yourusername/handy-uploader.svg)
400
+
401
+ ---
402
+
403
+ **Made with ❤️ for the Vue.js community**
@@ -0,0 +1,24 @@
1
+ import type { DocumentAttachment, LanguageCollection } from '@/types';
2
+ interface Props {
3
+ documentAttachment: DocumentAttachment[];
4
+ badgeCounter: boolean;
5
+ btnColor: string;
6
+ lang: string;
7
+ maxFileCount: number;
8
+ selectedLang: LanguageCollection;
9
+ }
10
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<Props>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
11
+ openInputDocumentModal: (...args: any[]) => void;
12
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_TypePropsToRuntimeProps<Props>>> & Readonly<{
13
+ onOpenInputDocumentModal?: ((...args: any[]) => any) | undefined;
14
+ }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
15
+ export default _default;
16
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
17
+ type __VLS_TypePropsToRuntimeProps<T> = {
18
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
19
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
20
+ } : {
21
+ type: import('vue').PropType<T[K]>;
22
+ required: true;
23
+ };
24
+ };
@@ -0,0 +1,29 @@
1
+ interface Props {
2
+ fileFormat: string;
3
+ size: number;
4
+ }
5
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
6
+ size: number;
7
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
8
+ size: number;
9
+ }>>> & Readonly<{}>, {
10
+ size: number;
11
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
12
+ export default _default;
13
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
14
+ type __VLS_TypePropsToRuntimeProps<T> = {
15
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
16
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
17
+ } : {
18
+ type: import('vue').PropType<T[K]>;
19
+ required: true;
20
+ };
21
+ };
22
+ type __VLS_WithDefaults<P, D> = {
23
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
24
+ default: D[K];
25
+ }> : P[K];
26
+ };
27
+ type __VLS_Prettify<T> = {
28
+ [K in keyof T]: T[K];
29
+ } & {};
@@ -0,0 +1,60 @@
1
+ import type { DocumentAttachment, LanguageCollection } from '@/types';
2
+ interface Props {
3
+ documentAttachment: DocumentAttachment[];
4
+ lang: string;
5
+ thumb: boolean;
6
+ cols: number;
7
+ editPermission: boolean;
8
+ cardType?: string;
9
+ outlined?: boolean;
10
+ raised?: boolean;
11
+ shaped?: boolean;
12
+ tile?: boolean;
13
+ deletePermission: boolean;
14
+ selectedLang: LanguageCollection;
15
+ }
16
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
17
+ thumb: boolean;
18
+ lang: string;
19
+ cols: number;
20
+ editPermission: boolean;
21
+ deletePermission: boolean;
22
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ openDeleteDialog: (...args: any[]) => void;
24
+ openEditDocumentDialog: (...args: any[]) => void;
25
+ setCardTheme: (...args: any[]) => void;
26
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
27
+ thumb: boolean;
28
+ lang: string;
29
+ cols: number;
30
+ editPermission: boolean;
31
+ deletePermission: boolean;
32
+ }>>> & Readonly<{
33
+ onOpenDeleteDialog?: ((...args: any[]) => any) | undefined;
34
+ onOpenEditDocumentDialog?: ((...args: any[]) => any) | undefined;
35
+ onSetCardTheme?: ((...args: any[]) => any) | undefined;
36
+ }>, {
37
+ lang: string;
38
+ thumb: boolean;
39
+ cols: number;
40
+ editPermission: boolean;
41
+ deletePermission: boolean;
42
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
43
+ export default _default;
44
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
45
+ type __VLS_TypePropsToRuntimeProps<T> = {
46
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
47
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
48
+ } : {
49
+ type: import('vue').PropType<T[K]>;
50
+ required: true;
51
+ };
52
+ };
53
+ type __VLS_WithDefaults<P, D> = {
54
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
55
+ default: D[K];
56
+ }> : P[K];
57
+ };
58
+ type __VLS_Prettify<T> = {
59
+ [K in keyof T]: T[K];
60
+ } & {};
@@ -0,0 +1,62 @@
1
+ import type { DocumentAttachment, LanguageCollection } from '@/types';
2
+ interface Props {
3
+ documentAttachment: DocumentAttachment[];
4
+ thumb: boolean;
5
+ lang: string;
6
+ cols: number;
7
+ editPermission: boolean;
8
+ deletePermission: boolean;
9
+ tableThumbColumn: boolean;
10
+ tableFixedHeader: boolean;
11
+ tableHeight: number;
12
+ selectedLang: LanguageCollection;
13
+ }
14
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
15
+ thumb: boolean;
16
+ lang: string;
17
+ cols: number;
18
+ editPermission: boolean;
19
+ deletePermission: boolean;
20
+ tableFixedHeader: boolean;
21
+ tableHeight: number;
22
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
23
+ openDeleteDialog: (...args: any[]) => void;
24
+ openEditDocumentDialog: (...args: any[]) => void;
25
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
26
+ thumb: boolean;
27
+ lang: string;
28
+ cols: number;
29
+ editPermission: boolean;
30
+ deletePermission: boolean;
31
+ tableFixedHeader: boolean;
32
+ tableHeight: number;
33
+ }>>> & Readonly<{
34
+ onOpenDeleteDialog?: ((...args: any[]) => any) | undefined;
35
+ onOpenEditDocumentDialog?: ((...args: any[]) => any) | undefined;
36
+ }>, {
37
+ tableFixedHeader: boolean;
38
+ tableHeight: number;
39
+ lang: string;
40
+ thumb: boolean;
41
+ cols: number;
42
+ editPermission: boolean;
43
+ deletePermission: boolean;
44
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
45
+ export default _default;
46
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
47
+ type __VLS_TypePropsToRuntimeProps<T> = {
48
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
49
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
50
+ } : {
51
+ type: import('vue').PropType<T[K]>;
52
+ required: true;
53
+ };
54
+ };
55
+ type __VLS_WithDefaults<P, D> = {
56
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
57
+ default: D[K];
58
+ }> : P[K];
59
+ };
60
+ type __VLS_Prettify<T> = {
61
+ [K in keyof T]: T[K];
62
+ } & {};
@@ -0,0 +1,59 @@
1
+ import type { DocumentAttachment, BaseUploaderProps, CardThemeProps, LanguageCode } from "@/types";
2
+ interface Props extends BaseUploaderProps, CardThemeProps {
3
+ lang: LanguageCode;
4
+ }
5
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
6
+ thumb: boolean;
7
+ lang: string;
8
+ cols: number;
9
+ editPermission: boolean;
10
+ deletePermission: boolean;
11
+ outlined: boolean;
12
+ raised: boolean;
13
+ shaped: boolean;
14
+ tile: boolean;
15
+ }>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
16
+ openDeleteDialog: (index: number, deleteId: string) => void;
17
+ openEditDocumentDialog: (item: DocumentAttachment, index: number) => void;
18
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<Props>, {
19
+ thumb: boolean;
20
+ lang: string;
21
+ cols: number;
22
+ editPermission: boolean;
23
+ deletePermission: boolean;
24
+ outlined: boolean;
25
+ raised: boolean;
26
+ shaped: boolean;
27
+ tile: boolean;
28
+ }>>> & Readonly<{
29
+ onOpenDeleteDialog?: ((index: number, deleteId: string) => any) | undefined;
30
+ onOpenEditDocumentDialog?: ((item: DocumentAttachment, index: number) => any) | undefined;
31
+ }>, {
32
+ outlined: boolean;
33
+ shaped: boolean;
34
+ raised: boolean;
35
+ tile: boolean;
36
+ lang: LanguageCode;
37
+ thumb: boolean;
38
+ cols: number;
39
+ editPermission: boolean;
40
+ deletePermission: boolean;
41
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
42
+ export default _default;
43
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
44
+ type __VLS_TypePropsToRuntimeProps<T> = {
45
+ [K in keyof T]-?: {} extends Pick<T, K> ? {
46
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
47
+ } : {
48
+ type: import('vue').PropType<T[K]>;
49
+ required: true;
50
+ };
51
+ };
52
+ type __VLS_WithDefaults<P, D> = {
53
+ [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_Prettify<P[K] & {
54
+ default: D[K];
55
+ }> : P[K];
56
+ };
57
+ type __VLS_Prettify<T> = {
58
+ [K in keyof T]: T[K];
59
+ } & {};