@brftech/filex-core 0.31.0 → 0.33.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 +26 -2
- package/dist/{CsvViewer-DxujFEM3.js → CsvViewer-CqWeV8VO.js} +22 -22
- package/dist/CsvViewer-CqWeV8VO.js.map +1 -0
- package/dist/{DrawioViewer-DCvWnX2t.js → DrawioViewer-BNALOB04.js} +16 -16
- package/dist/DrawioViewer-BNALOB04.js.map +1 -0
- package/dist/filex-core.js +9346 -8069
- package/dist/filex-core.js.map +1 -1
- package/dist/filex-core.umd.cjs +49 -49
- package/dist/filex-core.umd.cjs.map +1 -1
- package/dist/index.d.ts +235 -16
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/FileExplorer.vue +776 -246
- package/src/components/CommandPalette.vue +21 -5
- package/src/components/ConnectionsPanel.vue +2 -1
- package/src/components/E2eRecoveryUnlockModal.vue +29 -4
- package/src/components/FilterBar.vue +244 -0
- package/src/components/GalleryView.vue +12 -1
- package/src/components/GridView.vue +48 -5
- package/src/components/InspectorPanel.vue +231 -8
- package/src/components/ListView.vue +12 -3
- package/src/components/NFSExportsPanel.vue +2 -1
- package/src/components/PendingOpsTray.vue +1 -1
- package/src/components/PresenceBar.vue +3 -2
- package/src/components/S3KeysPanel.vue +2 -1
- package/src/components/SSHKeysPanel.vue +2 -1
- package/src/components/SecondaryPane.vue +28 -13
- package/src/components/SideNav.vue +161 -1
- package/src/components/StarButton.vue +2 -1
- package/src/components/TabBar.vue +2 -2
- package/src/components/ThemeGallery.vue +1 -1
- package/src/components/TokensPanel.vue +2 -1
- package/src/components/Toolbar.vue +244 -58
- package/src/components/ViewSwitcher.vue +81 -0
- package/src/composables/useFileApi.ts +49 -2
- package/src/composables/useLocale.ts +1 -1
- package/src/composables/useOperations.ts +3 -3
- package/src/composables/usePendingOps.ts +1 -1
- package/src/composables/useTabs.ts +1 -1
- package/src/composables/useUploadChunked.ts +39 -7
- package/src/index.ts +8 -2
- package/src/lib/e2ecrypto.ts +191 -3
- package/src/lib/fileFilters.ts +143 -0
- package/src/lib/listing.ts +47 -0
- package/src/lib/themes.ts +7 -7
- package/src/lib/transfer.ts +6 -6
- package/src/locales/en.ts +115 -0
- package/src/locales/index.ts +1 -0
- package/src/locales/resolve.ts +66 -0
- package/src/locales/tr.ts +116 -0
- package/src/modals/ConvertModal.vue +14 -12
- package/src/modals/NewFolderModal.vue +1 -1
- package/src/modals/PermissionsModal.vue +30 -13
- package/src/modals/PreviewModal.vue +9 -9
- package/src/styles/base.css +520 -26
- package/src/styles/variables.css +1 -1
- package/src/types/ExplorerConfig.ts +18 -2
- package/src/types/FileNode.ts +1 -1
- package/src/viewers/CsvViewer.vue +4 -4
- package/src/viewers/DrawioViewer.vue +2 -2
- package/dist/CsvViewer-DxujFEM3.js.map +0 -1
- package/dist/DrawioViewer-DCvWnX2t.js.map +0 -1
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* office (docx/xlsx/pptx) → OnlyOffice iframe (config.onlyOfficeBase)
|
|
13
13
|
* plain text (txt/log/conf) → CodeMirror when saveText is set,
|
|
14
14
|
* `<pre>` otherwise
|
|
15
|
-
* anything else → "
|
|
15
|
+
* anything else → "Download" fallback
|
|
16
16
|
*
|
|
17
17
|
* Monaco is dynamic-imported at FileExplorer onMounted; by the time the
|
|
18
18
|
* user clicks an editable code file the chunk is usually already cached.
|
|
@@ -46,7 +46,7 @@ const props = defineProps<{
|
|
|
46
46
|
pdfSaveUrl?: string | null;
|
|
47
47
|
/** Standalone full-screen viewer route — `?path=…&storage=…&type=…`. */
|
|
48
48
|
viewerBaseUrl?: string | null;
|
|
49
|
-
/* wiring:e2 — false hides the "
|
|
49
|
+
/* wiring:e2 — false hides the "Edit" / "Open in New Tab" buttons.
|
|
50
50
|
* The standalone route fetches RAW server bytes, which inside an
|
|
51
51
|
* E2E-encrypted folder is ciphertext (and its save path could clobber
|
|
52
52
|
* the encrypted blob) — the host disables the escape hatches there. */
|
|
@@ -258,7 +258,7 @@ function buildAndOpenStandalone(mode: 'view' | 'edit'): void {
|
|
|
258
258
|
|
|
259
259
|
/**
|
|
260
260
|
* Extensions that have a meaningful "edit" surface. Read-only kinds
|
|
261
|
-
* (image/video/audio/3D/archive) don't surface
|
|
261
|
+
* (image/video/audio/3D/archive) don't surface an "Edit" button.
|
|
262
262
|
*/
|
|
263
263
|
const EDITABLE_EXTS = new Set([
|
|
264
264
|
// OnlyOffice — open the in-page office editor (or new tab) with
|
|
@@ -311,7 +311,7 @@ function onMdInput() {
|
|
|
311
311
|
mdReRenderTimer = setTimeout(() => {
|
|
312
312
|
renderMarkdown(rawText.value);
|
|
313
313
|
}, 250);
|
|
314
|
-
// Autosave 1.5s after last keystroke — manual
|
|
314
|
+
// Autosave 1.5s after last keystroke — the manual Save button + Ctrl+S
|
|
315
315
|
// still work; saveMarkdown() guards against overlap.
|
|
316
316
|
if (mdAutosaveTimer) clearTimeout(mdAutosaveTimer);
|
|
317
317
|
mdAutosaveTimer = setTimeout(() => {
|
|
@@ -785,7 +785,7 @@ async function mountOnlyOfficeEditor(): Promise<void> {
|
|
|
785
785
|
officeError.value = null;
|
|
786
786
|
if (!props.file || kind.value !== 'office') return;
|
|
787
787
|
if (!props.onlyOfficeConfigEndpoint) {
|
|
788
|
-
officeError.value = '
|
|
788
|
+
officeError.value = t('viewer.office_unconfigured');
|
|
789
789
|
return;
|
|
790
790
|
}
|
|
791
791
|
if (!officeEl.value) return;
|
|
@@ -916,8 +916,8 @@ function loadOnlyOfficeScript(base: string): Promise<void> {
|
|
|
916
916
|
<object :data="src" type="application/pdf" class="fe-preview__iframe">
|
|
917
917
|
<div class="fe-preview__fallback">
|
|
918
918
|
<span class="fe-preview__fallback-icon">📕</span>
|
|
919
|
-
<p>
|
|
920
|
-
<a :href="download" class="fe-btn fe-btn--primary" target="_blank" rel="noopener">
|
|
919
|
+
<p>{{ t('viewer.pdf_inline_failed') }}</p>
|
|
920
|
+
<a :href="download" class="fe-btn fe-btn--primary" target="_blank" rel="noopener">{{ t('viewer.open_in_new_tab') }}</a>
|
|
921
921
|
</div>
|
|
922
922
|
</object>
|
|
923
923
|
</template>
|
|
@@ -925,7 +925,7 @@ function loadOnlyOfficeScript(base: string): Promise<void> {
|
|
|
925
925
|
<template v-else-if="kind === 'markdown'">
|
|
926
926
|
<div v-if="loading" class="fe-preview__fallback">{{ t('viewer.loading') }}</div>
|
|
927
927
|
<div v-else-if="tooLarge" class="fe-preview__fallback">
|
|
928
|
-
|
|
928
|
+
{{ t('viewer.too_large') }} <a :href="download" class="fe-btn">{{ t('viewer.download') }}</a>
|
|
929
929
|
</div>
|
|
930
930
|
<div
|
|
931
931
|
v-else-if="openMode === 'edit' && saveTextEndpoint"
|
|
@@ -995,7 +995,7 @@ function loadOnlyOfficeScript(base: string): Promise<void> {
|
|
|
995
995
|
<template v-else-if="kind === 'code' || kind === 'text'">
|
|
996
996
|
<div v-if="loading" class="fe-preview__fallback">{{ t('viewer.loading') }}</div>
|
|
997
997
|
<div v-else-if="tooLarge" class="fe-preview__fallback">
|
|
998
|
-
|
|
998
|
+
{{ t('viewer.too_large') }} <a :href="download" class="fe-btn">{{ t('viewer.download') }}</a>
|
|
999
999
|
</div>
|
|
1000
1000
|
<div v-else-if="fetchError" class="fe-preview__fallback">
|
|
1001
1001
|
<p>{{ fetchError }}</p>
|