vuefinder 4.0.6 → 4.0.8
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 +4 -331
- package/dist/index.d.ts +199 -0
- package/dist/locales/ar.js +1 -4
- package/dist/locales/de.js +1 -4
- package/dist/locales/en.js +1 -4
- package/dist/locales/es.js +1 -4
- package/dist/locales/fa.js +1 -4
- package/dist/locales/fr.js +1 -4
- package/dist/locales/he.js +1 -4
- package/dist/locales/hi.js +1 -4
- package/dist/locales/it.js +1 -4
- package/dist/locales/ja.js +1 -4
- package/dist/locales/nl.js +1 -4
- package/dist/locales/pl.js +1 -4
- package/dist/locales/pt.js +1 -4
- package/dist/locales/ru.js +1 -4
- package/dist/locales/sv.js +1 -4
- package/dist/locales/tr.js +1 -4
- package/dist/locales/zhCN.js +2 -4
- package/dist/locales/zhTW.js +2 -4
- package/dist/vuefinder.css +1 -1
- package/dist/vuefinder.js +4800 -3913
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ If you like it, please follow and ⭐ star on GitHub.
|
|
|
15
15
|
|
|
16
16
|
### Demo
|
|
17
17
|
|
|
18
|
-
[Live Demo](https://vuefinder.ozdemir.be/)
|
|
18
|
+
[Live Demo](https://vuefinder.ozdemir.be/) - Explore Vuefinder's features and capabilities in action.
|
|
19
19
|
|
|
20
20
|
### Installation
|
|
21
21
|
|
|
@@ -23,336 +23,7 @@ If you like it, please follow and ⭐ star on GitHub.
|
|
|
23
23
|
npm i vuefinder
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```js
|
|
29
|
-
import { createApp } from 'vue';
|
|
30
|
-
import App from './App.vue';
|
|
31
|
-
|
|
32
|
-
import 'vuefinder/dist/style.css';
|
|
33
|
-
import VueFinder from 'vuefinder';
|
|
34
|
-
|
|
35
|
-
const app = createApp(App);
|
|
36
|
-
|
|
37
|
-
//By default, Vuefinder will use English as the main language.
|
|
38
|
-
// However, if you want to support multiple languages and customize the localization,
|
|
39
|
-
// you can import the language files manually during component registration.
|
|
40
|
-
app.use(VueFinder);
|
|
41
|
-
|
|
42
|
-
app.mount('#app');
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Localization
|
|
46
|
-
|
|
47
|
-
You can manually import the localization files from the package and register them with Vuefinder. The localization files are located in the dist/locales folder.
|
|
48
|
-
|
|
49
|
-
```js
|
|
50
|
-
import en from 'vuefinder/dist/locales/en.js';
|
|
51
|
-
import tr from 'vuefinder/dist/locales/tr.js';
|
|
52
|
-
import ru from 'vuefinder/dist/locales/ru.js';
|
|
53
|
-
|
|
54
|
-
app.use(VueFinder, {
|
|
55
|
-
i18n: { en, tr, ru },
|
|
56
|
-
});
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
### Async Localization
|
|
60
|
-
|
|
61
|
-
Alternatively, you can import the localization files asynchronously during component registration. This can be useful for lazy loading or if you prefer to load the files dynamically.
|
|
62
|
-
|
|
63
|
-
```js
|
|
64
|
-
app.use(VueFinder, {
|
|
65
|
-
i18n: {
|
|
66
|
-
en: async () => await import('vuefinder/dist/locales/en.js'),
|
|
67
|
-
de: async () => await import('vuefinder/dist/locales/de.js'),
|
|
68
|
-
// Add more locales as needed
|
|
69
|
-
},
|
|
70
|
-
});
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
#### Vue Template
|
|
74
|
-
|
|
75
|
-
```vue
|
|
76
|
-
<div>
|
|
77
|
-
<vue-finder
|
|
78
|
-
id="my_vuefinder"
|
|
79
|
-
:driver="driver"
|
|
80
|
-
:config="{ initialPath: 'local://public', persist: true }"
|
|
81
|
-
/>
|
|
82
|
-
</div>
|
|
83
|
-
|
|
84
|
-
<script setup>
|
|
85
|
-
import { RemoteDriver } from 'vuefinder';
|
|
86
|
-
|
|
87
|
-
// Create a driver instance
|
|
88
|
-
const driver = new RemoteDriver({
|
|
89
|
-
baseURL: '/api',
|
|
90
|
-
url: {
|
|
91
|
-
list: '/files',
|
|
92
|
-
upload: '/upload',
|
|
93
|
-
delete: '/delete',
|
|
94
|
-
rename: '/rename',
|
|
95
|
-
copy: '/copy',
|
|
96
|
-
move: '/move',
|
|
97
|
-
archive: '/archive',
|
|
98
|
-
unarchive: '/unarchive',
|
|
99
|
-
createFile: '/create-file',
|
|
100
|
-
createFolder: '/create-folder',
|
|
101
|
-
preview: '/preview',
|
|
102
|
-
download: '/download',
|
|
103
|
-
search: '/search',
|
|
104
|
-
save: '/save',
|
|
105
|
-
},
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
// Or use ArrayDriver for in-memory operations:
|
|
109
|
-
// import { ArrayDriver } from 'vuefinder';
|
|
110
|
-
// const driver = new ArrayDriver({
|
|
111
|
-
// files: filesArray,
|
|
112
|
-
// storage: 'memory',
|
|
113
|
-
// readOnly: false
|
|
114
|
-
// });
|
|
115
|
-
</script>
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Styling
|
|
119
|
-
|
|
120
|
-
Vuefinder uses the BEM (Block Element Modifier) convention for its CSS classes, with default styles applied using TailwindCSS. This structured approach helps maintain a clear and consistent naming convention for CSS classes, making it easier to understand and manage styles across the project.
|
|
121
|
-
|
|
122
|
-
To customize or update the styles, simply find the appropriate BEM class in the component’s style section and override the styles as needed.
|
|
123
|
-
|
|
124
|
-
### Props
|
|
125
|
-
|
|
126
|
-
| Prop | Value | Default | Description |
|
|
127
|
-
| --------------------------- | :------------------------------: | ---------- | :----------------------------------------------------------- |
|
|
128
|
-
| id | string | _null_ | required |
|
|
129
|
-
| driver | Driver | _null_ | **required** - Driver instance used for file operations |
|
|
130
|
-
| config | ConfigDefaults | _object_ | optional - configuration store defaults (e.g., initialPath) |
|
|
131
|
-
| locale | string | en | optional - default language code |
|
|
132
|
-
| features | FeaturesPreset \| FeaturesConfig | 'advanced' | optional - feature preset ('simple'/'advanced') or object |
|
|
133
|
-
| selectionMode | 'single' \| 'multiple' | 'multiple' | optional - selection mode |
|
|
134
|
-
| selectionFilterType | 'files' \| 'dirs' \| 'both' | 'both' | optional - filter selectable items by type |
|
|
135
|
-
| selectionFilterMimeIncludes | string[] | [] | optional - MIME type filters for selection |
|
|
136
|
-
| contextMenuItems | ContextMenuItem[] | _null_ | optional - custom context menu items |
|
|
137
|
-
| debug | boolean | false | optional - enable debug mode |
|
|
138
|
-
| onError | function | _function_ | optional - error handler callback |
|
|
139
|
-
| onSelect | function | _function_ | optional - selection handler (alternative to @select) |
|
|
140
|
-
| onPathChange | function | _function_ | optional - path change handler (alternative to @path-change) |
|
|
141
|
-
| onUploadComplete | function | _function_ | optional - upload handler (alternative to @upload-complete) |
|
|
142
|
-
| onDeleteComplete | function | _function_ | optional - delete handler (alternative to @delete-complete) |
|
|
143
|
-
| onReady | function | _function_ | optional - ready handler (alternative to @ready) |
|
|
144
|
-
| onFileDclick | function | _function_ | optional - file double-click handler |
|
|
145
|
-
| onFolderDclick | function | _function_ | optional - folder double-click handler |
|
|
146
|
-
|
|
147
|
-
**Note:** Configuration options like `theme`, `maxFileSize`, `fullScreen`, `loadingIndicator`, etc. are now part of the `config` prop. See the [Configuration Guide](https://vuefinder.ozdemir.be/guide/configuration) for details.
|
|
148
|
-
|
|
149
|
-
### Events
|
|
150
|
-
|
|
151
|
-
| Event | Description |
|
|
152
|
-
| ------------------ | :--------------------------------------------------------------------------------------------------------- |
|
|
153
|
-
| `@select` | Emitted when the user selects a file or folder. `(items: DirEntry[]) => void` |
|
|
154
|
-
| `@path-change` | Emitted when the user navigates to a different folder. `(path: string) => void` |
|
|
155
|
-
| `@upload-complete` | Emitted when file uploads are completed successfully. `(files: DirEntry[]) => void` |
|
|
156
|
-
| `@delete-complete` | Emitted when files or folders are deleted successfully. `(deletedItems: DirEntry[]) => void` |
|
|
157
|
-
| `@error` | Emitted when an error occurs during any operation. `(error: any) => void` |
|
|
158
|
-
| `@ready` | Emitted when VueFinder is initialized and ready to use. `() => void` |
|
|
159
|
-
| `@file-dclick` | Emitted when a file is double-clicked. Overrides default preview behavior. `(item: DirEntry) => void` |
|
|
160
|
-
| `@folder-dclick` | Emitted when a folder is double-clicked. Overrides default navigation behavior. `(item: DirEntry) => void` |
|
|
161
|
-
|
|
162
|
-
### Selection
|
|
163
|
-
|
|
164
|
-
There are 2 ways to select files and folders.
|
|
165
|
-
|
|
166
|
-
#### 1) Inline select button via status bar scoped slot (recommended)
|
|
167
|
-
|
|
168
|
-
You can inject a custom button into the status bar and access the reactive selection via the `status-bar` scoped slot:
|
|
169
|
-
|
|
170
|
-
```vue
|
|
171
|
-
<vue-finder id="my_vuefinder" :driver="driver">
|
|
172
|
-
<template #status-bar="{ selected, count, path }">
|
|
173
|
-
<div class="vuefinder__status-bar__actions">
|
|
174
|
-
<button class="btn"
|
|
175
|
-
@click="() => {
|
|
176
|
-
console.log(selected);
|
|
177
|
-
console.log(count);
|
|
178
|
-
console.log(path);
|
|
179
|
-
}"
|
|
180
|
-
:disabled="!count">
|
|
181
|
-
Show Selected ({{ count ?? 0 }} selected)
|
|
182
|
-
</button>
|
|
183
|
-
</div>
|
|
184
|
-
</template>
|
|
185
|
-
</vue-finder>
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
Alternatively, you can use the select event to get the selected items.
|
|
189
|
-
|
|
190
|
-
```vue
|
|
191
|
-
<vue-finder
|
|
192
|
-
id="my_vuefinder"
|
|
193
|
-
:driver="driver"
|
|
194
|
-
@select="handleSelect"
|
|
195
|
-
@path-change="handlePathChange"
|
|
196
|
-
@upload-complete="handleUploadComplete"
|
|
197
|
-
@delete-complete="handleDeleteComplete"
|
|
198
|
-
@error="handleError"
|
|
199
|
-
@ready="handleReady"
|
|
200
|
-
@file-dclick="handleFileDoubleClick"
|
|
201
|
-
@folder-dclick="handleFolderDoubleClick"
|
|
202
|
-
/>
|
|
203
|
-
|
|
204
|
-
<script setup>
|
|
205
|
-
import { ref } from 'vue';
|
|
206
|
-
import { RemoteDriver } from 'vuefinder';
|
|
207
|
-
|
|
208
|
-
// Create driver instance
|
|
209
|
-
const driver = new RemoteDriver({
|
|
210
|
-
baseURL: '/api',
|
|
211
|
-
url: {
|
|
212
|
-
list: '/files',
|
|
213
|
-
// ... other endpoints
|
|
214
|
-
},
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
// we can define a ref object to store the selected items
|
|
218
|
-
const selectedFiles = ref([]);
|
|
219
|
-
|
|
220
|
-
// handle select event, and store the selected items
|
|
221
|
-
const handleSelect = (selection) => {
|
|
222
|
-
selectedFiles.value = selection;
|
|
223
|
-
};
|
|
224
|
-
|
|
225
|
-
// handle path change event
|
|
226
|
-
const handlePathChange = (path) => {
|
|
227
|
-
console.log('Current path:', path);
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
// handle upload complete event
|
|
231
|
-
const handleUploadComplete = (uploadedFiles) => {
|
|
232
|
-
console.log('Uploaded files:', uploadedFiles);
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
// handle delete complete event
|
|
236
|
-
const handleDeleteComplete = (deletedItems) => {
|
|
237
|
-
console.log('Deleted items:', deletedItems);
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
// handle error event
|
|
241
|
-
const handleError = (error) => {
|
|
242
|
-
console.error('VueFinder error:', error);
|
|
243
|
-
};
|
|
244
|
-
|
|
245
|
-
// handle ready event
|
|
246
|
-
const handleReady = () => {
|
|
247
|
-
console.log('VueFinder is ready!');
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
// handle file double-click event
|
|
251
|
-
const handleFileDoubleClick = (file) => {
|
|
252
|
-
console.log('File double-clicked:', file);
|
|
253
|
-
// Custom logic here - maybe download, open in external app, etc.
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
// handle folder double-click event
|
|
257
|
-
const handleFolderDoubleClick = (folder) => {
|
|
258
|
-
console.log('Folder double-clicked:', folder);
|
|
259
|
-
// Custom logic here - maybe show folder info, add to favorites, etc.
|
|
260
|
-
};
|
|
261
|
-
// then with a button click, you can get the selected items easily
|
|
262
|
-
// you can add this method to the click event of a button.
|
|
263
|
-
const handleButtonClick = () => {
|
|
264
|
-
console.log(selectedFiles.value);
|
|
265
|
-
};
|
|
266
|
-
</script>
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
### Custom Double-Click Behavior
|
|
270
|
-
|
|
271
|
-
By default, VueFinder handles double-click events as follows:
|
|
272
|
-
|
|
273
|
-
- **File double-click**: Opens preview modal
|
|
274
|
-
- **Folder double-click**: Navigates to folder (changes path)
|
|
275
|
-
|
|
276
|
-
You can customize this behavior by providing `@file-dclick` and `@folder-dclick` event handlers. When these handlers are provided, they will override the default behavior.
|
|
277
|
-
|
|
278
|
-
```vue
|
|
279
|
-
<vue-finder
|
|
280
|
-
id="my_vuefinder"
|
|
281
|
-
:driver="driver"
|
|
282
|
-
@file-dclick="handleFileDoubleClick"
|
|
283
|
-
@folder-dclick="handleFolderDoubleClick"
|
|
284
|
-
/>
|
|
285
|
-
|
|
286
|
-
<script setup>
|
|
287
|
-
import { RemoteDriver } from 'vuefinder';
|
|
288
|
-
|
|
289
|
-
const driver = new RemoteDriver({
|
|
290
|
-
baseURL: '/api',
|
|
291
|
-
url: { list: '/files' },
|
|
292
|
-
});
|
|
293
|
-
|
|
294
|
-
const handleFileDoubleClick = (file) => {
|
|
295
|
-
// Custom file double-click behavior
|
|
296
|
-
// Example: Download file, open in external app, etc.
|
|
297
|
-
console.log('Custom file action:', file.basename);
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
const handleFolderDoubleClick = (folder) => {
|
|
301
|
-
// Custom folder double-click behavior
|
|
302
|
-
// Example: Show folder info, add to favorites, etc.
|
|
303
|
-
console.log('Custom folder action:', folder.basename);
|
|
304
|
-
};
|
|
305
|
-
</script>
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
**Note**: If you don't provide these handlers, VueFinder will use the default behavior (preview for files, navigation for folders).
|
|
309
|
-
|
|
310
|
-
### Features
|
|
311
|
-
|
|
312
|
-
- Multi storage (see https://github.com/thephpleague/flysystem)
|
|
313
|
-
- File and folder operations
|
|
314
|
-
- Create a new file
|
|
315
|
-
- Create a new folder
|
|
316
|
-
- Rename
|
|
317
|
-
- Delete
|
|
318
|
-
- Archive (zip)
|
|
319
|
-
- Unarchive (unzip)
|
|
320
|
-
- Text editing
|
|
321
|
-
- Image Crop Tool
|
|
322
|
-
- Upload / Download files
|
|
323
|
-
- Search (deep based on current folder)
|
|
324
|
-
- Nice UI
|
|
325
|
-
- Context Menu
|
|
326
|
-
- Breadcrumb links
|
|
327
|
-
- Toolbar
|
|
328
|
-
- File explorer
|
|
329
|
-
- Status bar
|
|
330
|
-
- Image thumbnails
|
|
331
|
-
- Toast notifications
|
|
332
|
-
- Appearance
|
|
333
|
-
- Multi language (17 languages supported)
|
|
334
|
-
- Full Screen mode
|
|
335
|
-
- View Modes: list, grid
|
|
336
|
-
- 12 Beautiful Themes: light, dark, midnight, latte, rose, mythril, lime, sky, ocean, palenight, arctic, code
|
|
337
|
-
- Accessibility
|
|
338
|
-
- Drag & drop support
|
|
339
|
-
- Move items (to a folder or up one folder) with drag and drop
|
|
340
|
-
- Mouse selection
|
|
341
|
-
|
|
342
|
-
### Typescript
|
|
343
|
-
|
|
344
|
-
Vuefinder ships with built-in type declarations. You can enable type hints for the global Vuefinder component.
|
|
345
|
-
|
|
346
|
-
```ts
|
|
347
|
-
// src/global-components.d.ts
|
|
348
|
-
import { VueFinder } from 'vuefinder';
|
|
349
|
-
|
|
350
|
-
declare module 'vue' {
|
|
351
|
-
export interface GlobalComponents {
|
|
352
|
-
VueFinder: typeof VueFinder;
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
```
|
|
26
|
+
For detailed installation instructions, configuration options, and usage examples, visit the [documentation website](https://vuefinder.ozdemir.be/).
|
|
356
27
|
|
|
357
28
|
### Backend
|
|
358
29
|
|
|
@@ -384,6 +55,8 @@ If you want to contribute to the project, please feel free to fork the repositor
|
|
|
384
55
|
- [mitt](https://github.com/developit/mitt) : Tiny 200 byte functional event emitter / pubsub
|
|
385
56
|
- [OverlayScrollbars](https://kingsora.github.io/OverlayScrollbars) : scrollbar plugin
|
|
386
57
|
- [nanostores](https://github.com/nanostores/nanostores) : A tiny state manager
|
|
58
|
+
- [vue-sonner](https://github.com/wobsoriano/vue-sonner) : Toast notification component
|
|
59
|
+
- [@floating-ui/dom](https://floating-ui.com/) : Floating UI positioning library
|
|
387
60
|
|
|
388
61
|
### License
|
|
389
62
|
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import type { DefineComponent } from 'vue';
|
|
2
|
+
|
|
3
|
+
// Component exports
|
|
4
|
+
export const VueFinder: DefineComponent;
|
|
5
|
+
export const VueFinderProvider: DefineComponent;
|
|
6
|
+
|
|
7
|
+
// Plugin export
|
|
8
|
+
export const VueFinderPlugin: {
|
|
9
|
+
install(app: any, options?: { i18n?: Record<string, unknown>; locale?: string }): void;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// Default export
|
|
13
|
+
export default VueFinderPlugin;
|
|
14
|
+
|
|
15
|
+
// Driver classes
|
|
16
|
+
export class RemoteDriver {
|
|
17
|
+
constructor(config?: import('./adapters/types').RemoteDriverConfig);
|
|
18
|
+
list(params?: import('./adapters/types').ListParams): Promise<import('./types').FsData>;
|
|
19
|
+
delete(
|
|
20
|
+
params: import('./adapters/types').DeleteParams
|
|
21
|
+
): Promise<import('./adapters/types').DeleteResult>;
|
|
22
|
+
rename(
|
|
23
|
+
params: import('./adapters/types').RenameParams
|
|
24
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
25
|
+
copy(
|
|
26
|
+
params: import('./adapters/types').TransferParams
|
|
27
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
28
|
+
move(
|
|
29
|
+
params: import('./adapters/types').TransferParams
|
|
30
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
31
|
+
archive(
|
|
32
|
+
params: import('./adapters/types').ArchiveParams
|
|
33
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
34
|
+
unarchive(params: {
|
|
35
|
+
item: string;
|
|
36
|
+
path: string;
|
|
37
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
38
|
+
createFile(params: {
|
|
39
|
+
path: string;
|
|
40
|
+
name: string;
|
|
41
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
42
|
+
createFolder(params: {
|
|
43
|
+
path: string;
|
|
44
|
+
name: string;
|
|
45
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
46
|
+
getContent(params: { path: string }): Promise<import('./adapters/types').FileContentResult>;
|
|
47
|
+
getPreviewUrl(params: { path: string }): string;
|
|
48
|
+
getDownloadUrl(params: { path: string }): string;
|
|
49
|
+
search(params: import('./adapters/types').SearchParams): Promise<import('./types').DirEntry[]>;
|
|
50
|
+
save(params: import('./adapters/types').SaveParams): Promise<string>;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export class ArrayDriver {
|
|
54
|
+
constructor(config: import('./adapters/ArrayDriver').ArrayDriverConfig);
|
|
55
|
+
list(params?: import('./adapters/types').ListParams): Promise<import('./types').FsData>;
|
|
56
|
+
delete(
|
|
57
|
+
params: import('./adapters/types').DeleteParams
|
|
58
|
+
): Promise<import('./adapters/types').DeleteResult>;
|
|
59
|
+
rename(
|
|
60
|
+
params: import('./adapters/types').RenameParams
|
|
61
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
62
|
+
copy(
|
|
63
|
+
params: import('./adapters/types').TransferParams
|
|
64
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
65
|
+
move(
|
|
66
|
+
params: import('./adapters/types').TransferParams
|
|
67
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
68
|
+
archive(
|
|
69
|
+
params: import('./adapters/types').ArchiveParams
|
|
70
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
71
|
+
unarchive(params: {
|
|
72
|
+
item: string;
|
|
73
|
+
path: string;
|
|
74
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
75
|
+
createFile(params: {
|
|
76
|
+
path: string;
|
|
77
|
+
name: string;
|
|
78
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
79
|
+
createFolder(params: {
|
|
80
|
+
path: string;
|
|
81
|
+
name: string;
|
|
82
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
83
|
+
getContent(params: { path: string }): Promise<import('./adapters/types').FileContentResult>;
|
|
84
|
+
getPreviewUrl(params: { path: string }): string;
|
|
85
|
+
getDownloadUrl(params: { path: string }): string;
|
|
86
|
+
search(params: import('./adapters/types').SearchParams): Promise<import('./types').DirEntry[]>;
|
|
87
|
+
save(params: import('./adapters/types').SaveParams): Promise<string>;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export class IndexedDBDriver {
|
|
91
|
+
constructor(config?: import('./adapters/types').IndexedDBDriverConfig);
|
|
92
|
+
list(params?: import('./adapters/types').ListParams): Promise<import('./types').FsData>;
|
|
93
|
+
delete(
|
|
94
|
+
params: import('./adapters/types').DeleteParams
|
|
95
|
+
): Promise<import('./adapters/types').DeleteResult>;
|
|
96
|
+
rename(
|
|
97
|
+
params: import('./adapters/types').RenameParams
|
|
98
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
99
|
+
copy(
|
|
100
|
+
params: import('./adapters/types').TransferParams
|
|
101
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
102
|
+
move(
|
|
103
|
+
params: import('./adapters/types').TransferParams
|
|
104
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
105
|
+
archive(
|
|
106
|
+
params: import('./adapters/types').ArchiveParams
|
|
107
|
+
): Promise<import('./adapters/types').FileOperationResult>;
|
|
108
|
+
unarchive(params: {
|
|
109
|
+
item: string;
|
|
110
|
+
path: string;
|
|
111
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
112
|
+
createFile(params: {
|
|
113
|
+
path: string;
|
|
114
|
+
name: string;
|
|
115
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
116
|
+
createFolder(params: {
|
|
117
|
+
path: string;
|
|
118
|
+
name: string;
|
|
119
|
+
}): Promise<import('./adapters/types').FileOperationResult>;
|
|
120
|
+
getContent(params: { path: string }): Promise<import('./adapters/types').FileContentResult>;
|
|
121
|
+
getPreviewUrl(params: { path: string }): string;
|
|
122
|
+
getDownloadUrl(params: { path: string }): string;
|
|
123
|
+
search(params: import('./adapters/types').SearchParams): Promise<import('./types').DirEntry[]>;
|
|
124
|
+
save(params: import('./adapters/types').SaveParams): Promise<string>;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Context menu exports
|
|
128
|
+
export const contextMenuItems: import('./utils/contextmenu').Item[];
|
|
129
|
+
export const ContextMenuIds: {
|
|
130
|
+
readonly new_folder: 'new_folder';
|
|
131
|
+
readonly selectAll: 'selectAll';
|
|
132
|
+
readonly pinFolder: 'pinFolder';
|
|
133
|
+
readonly unpinFolder: 'unpinFolder';
|
|
134
|
+
readonly delete: 'delete';
|
|
135
|
+
readonly refresh: 'refresh';
|
|
136
|
+
readonly preview: 'preview';
|
|
137
|
+
readonly open: 'open';
|
|
138
|
+
readonly openDir: 'openDir';
|
|
139
|
+
readonly download: 'download';
|
|
140
|
+
readonly download_archive: 'download_archive';
|
|
141
|
+
readonly archive: 'archive';
|
|
142
|
+
readonly unarchive: 'unarchive';
|
|
143
|
+
readonly rename: 'rename';
|
|
144
|
+
readonly move: 'move';
|
|
145
|
+
readonly copy: 'copy';
|
|
146
|
+
readonly paste: 'paste';
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// Type exports from types.ts
|
|
150
|
+
export type {
|
|
151
|
+
DirEntry,
|
|
152
|
+
ItemDclickEvent,
|
|
153
|
+
VueFinderProps,
|
|
154
|
+
FsData,
|
|
155
|
+
SelectEvent,
|
|
156
|
+
UpdatePathEvent,
|
|
157
|
+
} from './types';
|
|
158
|
+
|
|
159
|
+
// Export context menu item type
|
|
160
|
+
export type { Item } from './utils/contextmenu';
|
|
161
|
+
|
|
162
|
+
// Type exports from adapters/types.ts
|
|
163
|
+
export type {
|
|
164
|
+
Driver,
|
|
165
|
+
ListParams,
|
|
166
|
+
DeleteParams,
|
|
167
|
+
RenameParams,
|
|
168
|
+
TransferParams,
|
|
169
|
+
ArchiveParams,
|
|
170
|
+
SearchParams,
|
|
171
|
+
SaveParams,
|
|
172
|
+
FileContentResult,
|
|
173
|
+
DeleteResult,
|
|
174
|
+
FileOperationResult,
|
|
175
|
+
RemoteDriverConfig,
|
|
176
|
+
RemoteDriverUrls,
|
|
177
|
+
UploaderContext,
|
|
178
|
+
} from './adapters/types';
|
|
179
|
+
|
|
180
|
+
// Type exports from adapters/ArrayDriver.ts
|
|
181
|
+
export type { ArrayDriverConfig } from './adapters/ArrayDriver';
|
|
182
|
+
|
|
183
|
+
// Type exports from adapters/IndexedDBDriver.ts
|
|
184
|
+
export type { IndexedDBDriverConfig } from './adapters/IndexedDBDriver';
|
|
185
|
+
|
|
186
|
+
// Type exports from features.ts
|
|
187
|
+
export type { FeaturesConfig, FeaturesPreset, FeatureName } from './features';
|
|
188
|
+
|
|
189
|
+
// Type exports from stores/config.ts
|
|
190
|
+
export type {
|
|
191
|
+
ConfigStore,
|
|
192
|
+
ConfigState,
|
|
193
|
+
ConfigDefaults,
|
|
194
|
+
PersistenceConfigState,
|
|
195
|
+
NonPersistenceConfigState,
|
|
196
|
+
} from './stores/config';
|
|
197
|
+
|
|
198
|
+
// Type exports from stores/theme.ts
|
|
199
|
+
export type { Theme } from './stores/theme';
|
package/dist/locales/ar.js
CHANGED
|
@@ -94,9 +94,6 @@ export default {
|
|
|
94
94
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".':
|
|
95
95
|
'هل التنزيل لا يعمل؟ يمكنك محاولة النقر بزر الفأرة الأيمن على زر "تنزيل"، ثم تحديد "حفظ الرابط باسم...',
|
|
96
96
|
Theme: 'السمة',
|
|
97
|
-
Dark: 'مظلم',
|
|
98
|
-
Light: 'فاتح',
|
|
99
|
-
System: 'النّظام',
|
|
100
97
|
'Target Directory': 'المجلد الهدف',
|
|
101
98
|
Select: 'اختيار',
|
|
102
99
|
'Compact list view': 'القائمة المضغوطة',
|
|
@@ -161,7 +158,7 @@ export default {
|
|
|
161
158
|
'Small (< 1MB)': 'صغير (< 1MB)',
|
|
162
159
|
'Medium (1-10MB)': 'متوسط (1-10MB)',
|
|
163
160
|
'Large (> 10MB)': 'كبير (> 10MB)',
|
|
164
|
-
'
|
|
161
|
+
'Start typing to search files. Use options to filter or include subfolders.':
|
|
165
162
|
'ابدأ بالكتابة للبحث عن الملفات. استخدم الخيارات للتصفية أو تضمين المجلدات الفرعية.',
|
|
166
163
|
uppy: uppyLocaleAr,
|
|
167
164
|
};
|
package/dist/locales/de.js
CHANGED
|
@@ -96,9 +96,6 @@ export default {
|
|
|
96
96
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".':
|
|
97
97
|
'Der Download funktioniert nicht? Sie können versuchen, mit der rechten Maustaste auf die Schaltfläche "Download" zu klicken und "Link speichern unter..." auszuwählen.',
|
|
98
98
|
Theme: 'Thema',
|
|
99
|
-
Dark: 'Dunkel',
|
|
100
|
-
Light: 'Licht',
|
|
101
|
-
System: 'System',
|
|
102
99
|
'Target Directory': 'Zielverzeichnis',
|
|
103
100
|
Select: 'Auswählen',
|
|
104
101
|
'Compact list view': 'Kompakte Listenansicht',
|
|
@@ -166,7 +163,7 @@ export default {
|
|
|
166
163
|
'Small (< 1MB)': 'Klein (< 1MB)',
|
|
167
164
|
'Medium (1-10MB)': 'Mittel (1-10MB)',
|
|
168
165
|
'Large (> 10MB)': 'Groß (> 10MB)',
|
|
169
|
-
'
|
|
166
|
+
'Start typing to search files. Use options to filter or include subfolders.':
|
|
170
167
|
'Beginnen Sie zu tippen, um Dateien zu suchen. Verwenden Sie Optionen zum Filtern oder zum Einbeziehen von Unterordnern.',
|
|
171
168
|
uppy: uppyLocaleDe,
|
|
172
169
|
};
|
package/dist/locales/en.js
CHANGED
|
@@ -93,9 +93,6 @@ export default {
|
|
|
93
93
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".':
|
|
94
94
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".',
|
|
95
95
|
Theme: 'Theme',
|
|
96
|
-
Dark: 'Dark',
|
|
97
|
-
Light: 'Light',
|
|
98
|
-
System: 'System',
|
|
99
96
|
'Target Directory': 'Target Directory',
|
|
100
97
|
Select: 'Select',
|
|
101
98
|
'Compact list view': 'Compact list view',
|
|
@@ -165,7 +162,7 @@ export default {
|
|
|
165
162
|
'Small (< 1MB)': 'Small (< 1MB)',
|
|
166
163
|
'Medium (1-10MB)': 'Medium (1-10MB)',
|
|
167
164
|
'Large (> 10MB)': 'Large (> 10MB)',
|
|
168
|
-
'
|
|
165
|
+
'Start typing to search files. Use options to filter or include subfolders.':
|
|
169
166
|
'Start typing to search files. Use options to filter or include subfolders.',
|
|
170
167
|
uppy: uppyLocaleEn,
|
|
171
168
|
};
|
package/dist/locales/es.js
CHANGED
|
@@ -97,9 +97,6 @@ export default {
|
|
|
97
97
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".':
|
|
98
98
|
'¿La descarga no funciona? Puedes intentar hacer clic derecho en el botón "Descargar", seleccionar "Guardar enlace como...".',
|
|
99
99
|
Theme: 'Tema',
|
|
100
|
-
Dark: 'Oscuro',
|
|
101
|
-
Light: 'Claro',
|
|
102
|
-
System: 'Sistema',
|
|
103
100
|
'Target Directory': 'Directorio de destino',
|
|
104
101
|
Select: 'Seleccionar',
|
|
105
102
|
'Compact list view': 'Vista de lista compacta',
|
|
@@ -167,7 +164,7 @@ export default {
|
|
|
167
164
|
'Small (< 1MB)': 'Pequeño (< 1MB)',
|
|
168
165
|
'Medium (1-10MB)': 'Mediano (1-10MB)',
|
|
169
166
|
'Large (> 10MB)': 'Grande (> 10MB)',
|
|
170
|
-
'
|
|
167
|
+
'Start typing to search files. Use options to filter or include subfolders.':
|
|
171
168
|
'Comienza a escribir para buscar archivos. Usa las opciones para filtrar o incluir subcarpetas.',
|
|
172
169
|
uppy: uppyLocaleEs,
|
|
173
170
|
};
|
package/dist/locales/fa.js
CHANGED
|
@@ -92,9 +92,6 @@ export default {
|
|
|
92
92
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".':
|
|
93
93
|
'دانلود کار نمیکند؟ میتوانید روی دکمه "دانلود" راست کلیک کرده و "ذخیره لینک به عنوان..." را انتخاب کنید',
|
|
94
94
|
Theme: 'تم',
|
|
95
|
-
Dark: 'تاریک',
|
|
96
|
-
Light: 'روشن',
|
|
97
|
-
System: 'سیستم',
|
|
98
95
|
'Target Directory': 'پوشه مقصد',
|
|
99
96
|
Select: 'انتخاب',
|
|
100
97
|
'Compact list view': 'نمایش لیست کوچک',
|
|
@@ -161,7 +158,7 @@ export default {
|
|
|
161
158
|
'Small (< 1MB)': 'کوچک (< 1MB)',
|
|
162
159
|
'Medium (1-10MB)': 'متوسط (1-10MB)',
|
|
163
160
|
'Large (> 10MB)': 'بزرگ (> 10MB)',
|
|
164
|
-
'
|
|
161
|
+
'Start typing to search files. Use options to filter or include subfolders.':
|
|
165
162
|
'برای جستجوی فایلها شروع به تایپ کنید. از گزینهها برای فیلتر کردن یا شامل کردن زیرپوشهها استفاده کنید.',
|
|
166
163
|
uppy: uppyLocaleFa,
|
|
167
164
|
};
|
package/dist/locales/fr.js
CHANGED
|
@@ -97,9 +97,6 @@ export default {
|
|
|
97
97
|
'Download doesn\'t work? You can try right-click "Download" button, select "Save link as...".':
|
|
98
98
|
'Le téléchargement ne fonctionne pas? Vous pouvez essayer de cliquer avec le bouton droit sur le bouton "Télécharger", puis sélectionner "Enregistrer le lien sous...".',
|
|
99
99
|
Theme: 'Thème',
|
|
100
|
-
Dark: 'Sombre',
|
|
101
|
-
Light: 'Clair',
|
|
102
|
-
System: 'Système',
|
|
103
100
|
'Target Directory': 'Répertoire cible',
|
|
104
101
|
Select: 'Sélectionner',
|
|
105
102
|
'Compact list view': 'Vue en liste compacte',
|
|
@@ -166,7 +163,7 @@ export default {
|
|
|
166
163
|
'Small (< 1MB)': 'Petit (< 1MB)',
|
|
167
164
|
'Medium (1-10MB)': 'Moyen (1-10MB)',
|
|
168
165
|
'Large (> 10MB)': 'Grand (> 10MB)',
|
|
169
|
-
'
|
|
166
|
+
'Start typing to search files. Use options to filter or include subfolders.':
|
|
170
167
|
'Commencez à taper pour rechercher des fichiers. Utilisez les options pour filtrer ou inclure des sous-dossiers.',
|
|
171
168
|
uppy: uppyLocaleFr,
|
|
172
169
|
};
|