@brftech/filex-core 0.4.1 → 0.5.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/{ArchiveViewer-BOXJ2ub7.js → ArchiveViewer-DKW-HyXT.js} +2 -2
- package/dist/{ArchiveViewer-BOXJ2ub7.js.map → ArchiveViewer-DKW-HyXT.js.map} +1 -1
- package/dist/{CsvViewer-CDs9EpJx.js → CsvViewer-D2HmP2yr.js} +2 -2
- package/dist/{CsvViewer-CDs9EpJx.js.map → CsvViewer-D2HmP2yr.js.map} +1 -1
- package/dist/{DrawioViewer-Q__JcUmq.js → DrawioViewer-DPNvOFCs.js} +2 -2
- package/dist/{DrawioViewer-Q__JcUmq.js.map → DrawioViewer-DPNvOFCs.js.map} +1 -1
- package/dist/{EpubViewer-BlsOD2xl.js → EpubViewer-ByqjNuNL.js} +2 -2
- package/dist/{EpubViewer-BlsOD2xl.js.map → EpubViewer-ByqjNuNL.js.map} +1 -1
- package/dist/{IpynbViewer-DKSFiZmv.js → IpynbViewer-2iONhbuJ.js} +2 -2
- package/dist/{IpynbViewer-DKSFiZmv.js.map → IpynbViewer-2iONhbuJ.js.map} +1 -1
- package/dist/{MermaidViewer-D2Gnp4yX.js → MermaidViewer-CmiU7hIT.js} +2 -2
- package/dist/{MermaidViewer-D2Gnp4yX.js.map → MermaidViewer-CmiU7hIT.js.map} +1 -1
- package/dist/{PsdViewer-BD-rIrF1.js → PsdViewer-Inhl2yN9.js} +2 -2
- package/dist/{PsdViewer-BD-rIrF1.js.map → PsdViewer-Inhl2yN9.js.map} +1 -1
- package/dist/{TiffViewer-8qitRwcZ.js → TiffViewer-C2AFFEze.js} +2 -2
- package/dist/{TiffViewer-8qitRwcZ.js.map → TiffViewer-C2AFFEze.js.map} +1 -1
- package/dist/{Viewer3D-WLmIjgmZ.js → Viewer3D-YdW14q_n.js} +2 -2
- package/dist/{Viewer3D-WLmIjgmZ.js.map → Viewer3D-YdW14q_n.js.map} +1 -1
- package/dist/filex-core.js +47 -25
- package/dist/filex-core.umd.cjs +40 -40
- package/dist/filex-core.umd.cjs.map +1 -1
- package/dist/index-eARevpz0.js +9952 -0
- package/dist/index-eARevpz0.js.map +1 -0
- package/dist/index.d.ts +363 -3
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/FileExplorer.vue +269 -1
- package/src/components/CommandPalette.vue +12 -0
- package/src/components/ContextMenu.vue +114 -8
- package/src/components/GridView.vue +56 -1
- package/src/components/ListView.vue +39 -6
- package/src/components/OnboardingTour.vue +332 -0
- package/src/components/OperationsCenter.vue +284 -0
- package/src/components/PendingOpsTray.vue +50 -66
- package/src/components/QuickLook.vue +142 -0
- package/src/components/ShortcutSettings.vue +270 -0
- package/src/components/ShortcutsHelp.vue +30 -9
- package/src/components/ThemeGallery.vue +253 -0
- package/src/components/Toolbar.vue +52 -6
- package/src/components/UploadProgress.vue +49 -57
- package/src/composables/useKeyboardShortcuts.ts +321 -137
- package/src/composables/useOperations.ts +291 -0
- package/src/index.ts +45 -0
- package/src/lib/dragGhost.ts +41 -0
- package/src/lib/themes.ts +505 -0
- package/src/locales/en.ts +92 -0
- package/src/locales/tr.ts +92 -0
- package/src/modals/Modal.vue +41 -5
- package/src/styles/base.css +689 -1
- package/dist/index-f-_N5BV1.js +0 -7972
- package/dist/index-f-_N5BV1.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -71,6 +71,53 @@ declare type __VLS_Props_5 = {
|
|
|
71
71
|
refreshKey?: number | string;
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
+
declare type __VLS_Props_6 = {
|
|
75
|
+
open: boolean;
|
|
76
|
+
locale: LocaleCode;
|
|
77
|
+
/** Host mode (forwarded to Modal so the backdrop themes correctly). */
|
|
78
|
+
theme?: ThemeMode;
|
|
79
|
+
/** Resolved mode — decides which variant the preview cards paint. */
|
|
80
|
+
dark: boolean;
|
|
81
|
+
/** Currently selected theme id. */
|
|
82
|
+
current: string;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
declare type __VLS_Props_7 = {
|
|
86
|
+
open: boolean;
|
|
87
|
+
locale: LocaleCode;
|
|
88
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
declare type __VLS_Props_8 = {
|
|
92
|
+
open: boolean;
|
|
93
|
+
locale: LocaleCode;
|
|
94
|
+
file: FileNode | null;
|
|
95
|
+
previewUrl: (path: string) => string;
|
|
96
|
+
downloadUrl: (path: string) => string;
|
|
97
|
+
onlyOfficeBase?: string | null;
|
|
98
|
+
onlyOfficeConfigEndpoint?: string | null;
|
|
99
|
+
authHeaders?: () => Record<string, string>;
|
|
100
|
+
authCredentials?: RequestCredentials;
|
|
101
|
+
drawioUrl?: string | null;
|
|
102
|
+
pdfWorkerUrl?: string | null;
|
|
103
|
+
viewerBaseUrl?: string | null;
|
|
104
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
declare type __VLS_Props_9 = {
|
|
108
|
+
center: OperationsStore;
|
|
109
|
+
locale: LocaleCode;
|
|
110
|
+
narrow?: boolean;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Set (or clear, for the default theme) the selected theme's tokens as
|
|
115
|
+
* inline CSS variables on the explorer root element, resolved to the
|
|
116
|
+
* active variant. Inline style wins over every stylesheet rule, so the
|
|
117
|
+
* root subtree is always correct regardless of host CSS.
|
|
118
|
+
*/
|
|
119
|
+
export declare function applyThemeToEl(el: HTMLElement, id: string, dark: boolean): void;
|
|
120
|
+
|
|
74
121
|
export declare interface ArchiveEntry {
|
|
75
122
|
name: string;
|
|
76
123
|
size: number;
|
|
@@ -152,6 +199,13 @@ export declare interface ClipboardState {
|
|
|
152
199
|
sourcePath: string | null;
|
|
153
200
|
}
|
|
154
201
|
|
|
202
|
+
/**
|
|
203
|
+
* Canonical combo for a keyboard event, or null for a bare modifier
|
|
204
|
+
* press. Meta folds into Ctrl; Shift is dropped for printable symbols
|
|
205
|
+
* because the produced character already encodes it (`?` not `Shift+?`).
|
|
206
|
+
*/
|
|
207
|
+
export declare function comboFromEvent(e: KeyboardEvent): string | null;
|
|
208
|
+
|
|
155
209
|
declare interface ContextAction {
|
|
156
210
|
key: string;
|
|
157
211
|
label: string;
|
|
@@ -162,8 +216,13 @@ declare interface ContextAction {
|
|
|
162
216
|
divider?: boolean;
|
|
163
217
|
}
|
|
164
218
|
|
|
219
|
+
export declare const DEFAULT_THEME_ID = "default";
|
|
220
|
+
|
|
165
221
|
declare type Density = 'comfortable' | 'compact';
|
|
166
222
|
|
|
223
|
+
/** Current combo for an action ('' = unbound). */
|
|
224
|
+
export declare function effectiveCombo(id: string): string;
|
|
225
|
+
|
|
167
226
|
/** English UI strings. */
|
|
168
227
|
export declare const en: Record<string, string>;
|
|
169
228
|
|
|
@@ -484,27 +543,31 @@ inspectorOpen?: boolean;
|
|
|
484
543
|
}> & Readonly<{
|
|
485
544
|
onAction?: ((key: string) => any) | undefined;
|
|
486
545
|
onUpload?: (() => any) | undefined;
|
|
546
|
+
"onGo-up"?: (() => any) | undefined;
|
|
487
547
|
"onUpdate:viewMode"?: ((v: ViewMode) => any) | undefined;
|
|
488
548
|
"onUpdate:searchQuery"?: ((v: string) => any) | undefined;
|
|
489
549
|
"onNew-folder"?: (() => any) | undefined;
|
|
490
550
|
onRefresh?: (() => any) | undefined;
|
|
491
|
-
"onGo-up"?: (() => any) | undefined;
|
|
492
551
|
"onOpen-recents"?: (() => any) | undefined;
|
|
493
552
|
"onUpdate:density"?: ((v: Density) => any) | undefined;
|
|
494
553
|
"onToggle-inspector"?: (() => any) | undefined;
|
|
554
|
+
"onOpen-theme"?: (() => any) | undefined;
|
|
555
|
+
"onOpen-shortcut-settings"?: (() => any) | undefined;
|
|
495
556
|
}>, {
|
|
496
557
|
focusSearch: () => Promise<void>;
|
|
497
558
|
}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
498
559
|
action: (key: string) => any;
|
|
499
560
|
upload: () => any;
|
|
561
|
+
"go-up": () => any;
|
|
500
562
|
"update:viewMode": (v: ViewMode) => any;
|
|
501
563
|
"update:searchQuery": (v: string) => any;
|
|
502
564
|
"new-folder": () => any;
|
|
503
565
|
refresh: () => any;
|
|
504
|
-
"go-up": () => any;
|
|
505
566
|
"open-recents": () => any;
|
|
506
567
|
"update:density": (v: Density) => any;
|
|
507
568
|
"toggle-inspector": () => any;
|
|
569
|
+
"open-theme": () => any;
|
|
570
|
+
"open-shortcut-settings": () => any;
|
|
508
571
|
}, PublicProps, {}, false, {}, {}, GlobalComponents, GlobalDirectives, string, {
|
|
509
572
|
searchEl: HTMLInputElement;
|
|
510
573
|
moreBtnEl: HTMLButtonElement;
|
|
@@ -572,14 +635,16 @@ inspectorOpen?: boolean;
|
|
|
572
635
|
}> & Readonly<{
|
|
573
636
|
onAction?: ((key: string) => any) | undefined;
|
|
574
637
|
onUpload?: (() => any) | undefined;
|
|
638
|
+
"onGo-up"?: (() => any) | undefined;
|
|
575
639
|
"onUpdate:viewMode"?: ((v: ViewMode) => any) | undefined;
|
|
576
640
|
"onUpdate:searchQuery"?: ((v: string) => any) | undefined;
|
|
577
641
|
"onNew-folder"?: (() => any) | undefined;
|
|
578
642
|
onRefresh?: (() => any) | undefined;
|
|
579
|
-
"onGo-up"?: (() => any) | undefined;
|
|
580
643
|
"onOpen-recents"?: (() => any) | undefined;
|
|
581
644
|
"onUpdate:density"?: ((v: Density) => any) | undefined;
|
|
582
645
|
"onToggle-inspector"?: (() => any) | undefined;
|
|
646
|
+
"onOpen-theme"?: (() => any) | undefined;
|
|
647
|
+
"onOpen-shortcut-settings"?: (() => any) | undefined;
|
|
583
648
|
}>, {
|
|
584
649
|
focusSearch: () => Promise<void>;
|
|
585
650
|
}, {}, {}, {}, {}> | null;
|
|
@@ -673,6 +738,22 @@ export declare interface FileNode {
|
|
|
673
738
|
[k: string]: unknown;
|
|
674
739
|
}
|
|
675
740
|
|
|
741
|
+
/**
|
|
742
|
+
* Does `combo` already trigger another action? Checks both effective
|
|
743
|
+
* combos and the reserved fixed combos (Backspace, Esc). Returns null
|
|
744
|
+
* when free.
|
|
745
|
+
*/
|
|
746
|
+
export declare function findShortcutConflict(combo: string, excludeId: string): ShortcutConflict | null;
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* Generate a stylesheet that mirrors styles/variables.css' selector
|
|
750
|
+
* cascade 1:1 (light base → explicit-dark selectors → prefers-dark media
|
|
751
|
+
* block) with the theme's palette. Appended after the bundled CSS it
|
|
752
|
+
* overrides every surface — teleported context menus, modal backdrops —
|
|
753
|
+
* in whichever mode they resolve to, without JS having to track them.
|
|
754
|
+
*/
|
|
755
|
+
export declare function generateThemeCss(theme: ThemeDef): string;
|
|
756
|
+
|
|
676
757
|
export declare function getHighlight(): unknown | null;
|
|
677
758
|
|
|
678
759
|
/** Synchronous cached lookup — null if Monaco not yet ready or absent. */
|
|
@@ -760,6 +841,89 @@ declare interface NodeVersion {
|
|
|
760
841
|
created_at: string;
|
|
761
842
|
}
|
|
762
843
|
|
|
844
|
+
export declare interface Operation {
|
|
845
|
+
/** `${group}:${id}` — unique across publishers. */
|
|
846
|
+
key: string;
|
|
847
|
+
kind: OperationKind;
|
|
848
|
+
name: string;
|
|
849
|
+
percent: number | null;
|
|
850
|
+
status: OperationStatus;
|
|
851
|
+
error: string | null;
|
|
852
|
+
queued: boolean;
|
|
853
|
+
doneCount: number | null;
|
|
854
|
+
totalCount: number | null;
|
|
855
|
+
uploadedBytes: number | null;
|
|
856
|
+
totalBytes: number | null;
|
|
857
|
+
cancellable: boolean;
|
|
858
|
+
retryable: boolean;
|
|
859
|
+
startedAt: number;
|
|
860
|
+
settledAt: number | null;
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
export declare interface OperationActions {
|
|
864
|
+
cancel?: () => void;
|
|
865
|
+
/** Clean the row out of the OWNING source list (called on retire/dismiss). */
|
|
866
|
+
dismiss?: () => void;
|
|
867
|
+
retry?: () => void;
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
/** What a publisher hands to `sync()` for one row. */
|
|
871
|
+
export declare interface OperationInput {
|
|
872
|
+
/** Stable id within the group (upload uuid / ops row id). */
|
|
873
|
+
id: string | number;
|
|
874
|
+
kind: OperationKind;
|
|
875
|
+
/** Primary label — file name or target path. '' → renderer falls back to the kind verb. */
|
|
876
|
+
name: string;
|
|
877
|
+
/** 0..100, or null for indeterminate (renderer shows a spinner). */
|
|
878
|
+
percent: number | null;
|
|
879
|
+
status: OperationStatus;
|
|
880
|
+
error?: string | null;
|
|
881
|
+
/** Queue op accepted but not started yet ("Sırada"). */
|
|
882
|
+
queued?: boolean;
|
|
883
|
+
/** Progress counters for queue ops (3/5 items). */
|
|
884
|
+
doneCount?: number;
|
|
885
|
+
totalCount?: number;
|
|
886
|
+
/** Byte progress for uploads. */
|
|
887
|
+
uploadedBytes?: number;
|
|
888
|
+
totalBytes?: number;
|
|
889
|
+
cancellable?: boolean;
|
|
890
|
+
retryable?: boolean;
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
/**
|
|
894
|
+
* useOperations — unified long-running-operation store (wiring:c3).
|
|
895
|
+
*
|
|
896
|
+
* One presentation-level aggregation point for everything that used to be
|
|
897
|
+
* scattered across corner UIs:
|
|
898
|
+
* - uploads (useUploadChunked jobs / legacy multipart rows)
|
|
899
|
+
* - ops-queue jobs (usePendingOps copy/move/delete worker ops)
|
|
900
|
+
* - future kinds (convert / archive — same `sync()` contract, own group)
|
|
901
|
+
*
|
|
902
|
+
* The store does NOT talk to the network. Publishers (renderless
|
|
903
|
+
* UploadProgress / PendingOpsTray adapters) reconcile their reactive source
|
|
904
|
+
* lists into the store via `sync(group, items)`; OperationsCenter renders the
|
|
905
|
+
* merged picture (badge + panel). Action callbacks (cancel/retry/dismiss)
|
|
906
|
+
* are registered per row so the panel can route user intent back to the
|
|
907
|
+
* owning surface without the store knowing any transport details.
|
|
908
|
+
*
|
|
909
|
+
* Lifecycle rules (per the İşlem Merkezi contract):
|
|
910
|
+
* - running rows live in `active`;
|
|
911
|
+
* - done/aborted rows linger in `active` for DONE_LINGER_MS ("bitti"
|
|
912
|
+
* flash) then move to `history` (session-only, capped);
|
|
913
|
+
* - error rows are STICKY: they stay in `active` until the user
|
|
914
|
+
* dismisses or retries them — even after the source list swept them
|
|
915
|
+
* (usePendingOps drops terminal ops after its RETAIN window).
|
|
916
|
+
*/
|
|
917
|
+
export declare type OperationKind = 'upload' | 'copy' | 'move' | 'delete' | 'convert' | 'archive';
|
|
918
|
+
|
|
919
|
+
export declare const OperationsCenter: DefineComponent<__VLS_Props_9, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_9> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
920
|
+
rootEl: HTMLDivElement;
|
|
921
|
+
}, any>;
|
|
922
|
+
|
|
923
|
+
export declare type OperationsStore = ReturnType<typeof useOperations>;
|
|
924
|
+
|
|
925
|
+
export declare type OperationStatus = 'running' | 'done' | 'error' | 'aborted';
|
|
926
|
+
|
|
763
927
|
export declare interface PendingOp {
|
|
764
928
|
id: number;
|
|
765
929
|
op_type: 'copy' | 'move' | 'delete';
|
|
@@ -839,6 +1003,16 @@ monacoEl: HTMLDivElement;
|
|
|
839
1003
|
officeEl: HTMLDivElement;
|
|
840
1004
|
}, any>;
|
|
841
1005
|
|
|
1006
|
+
export declare const QuickLook: DefineComponent<__VLS_Props_8, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
1007
|
+
close: () => any;
|
|
1008
|
+
nav: (delta: number) => any;
|
|
1009
|
+
"open-full": () => any;
|
|
1010
|
+
}, string, PublicProps, Readonly<__VLS_Props_8> & Readonly<{
|
|
1011
|
+
onClose?: (() => any) | undefined;
|
|
1012
|
+
onNav?: ((delta: number) => any) | undefined;
|
|
1013
|
+
"onOpen-full"?: (() => any) | undefined;
|
|
1014
|
+
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
1015
|
+
|
|
842
1016
|
export declare const RecentlyOpened: DefineComponent<__VLS_Props_5, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
843
1017
|
error: (message: string) => any;
|
|
844
1018
|
open: (node: RecentNode) => any;
|
|
@@ -856,6 +1030,10 @@ declare interface RecentNode {
|
|
|
856
1030
|
last_opened?: string;
|
|
857
1031
|
}
|
|
858
1032
|
|
|
1033
|
+
export declare function resetAllShortcuts(): void;
|
|
1034
|
+
|
|
1035
|
+
export declare function resetShortcut(id: string): void;
|
|
1036
|
+
|
|
859
1037
|
declare interface ResolveEmailResponse {
|
|
860
1038
|
found: boolean;
|
|
861
1039
|
user?: {
|
|
@@ -879,6 +1057,11 @@ export declare type SearchMatched = 'name' | 'content' | 'both';
|
|
|
879
1057
|
|
|
880
1058
|
declare type SelectionMode_2 = 'none' | 'single-file' | 'single-dir' | 'multi';
|
|
881
1059
|
|
|
1060
|
+
/** Set (or clear back to default) a user override. '' unbinds. */
|
|
1061
|
+
export declare function setShortcutOverride(id: string, combo: string): void;
|
|
1062
|
+
|
|
1063
|
+
export declare function setTheme(id: string): void;
|
|
1064
|
+
|
|
882
1065
|
export declare interface ShareInfo {
|
|
883
1066
|
uuid: string;
|
|
884
1067
|
url: string;
|
|
@@ -889,6 +1072,38 @@ export declare interface ShareInfo {
|
|
|
889
1072
|
created_at?: string;
|
|
890
1073
|
}
|
|
891
1074
|
|
|
1075
|
+
/** Registry order = help/settings display order. */
|
|
1076
|
+
export declare const SHORTCUT_ACTIONS: ShortcutActionDef[];
|
|
1077
|
+
|
|
1078
|
+
/** One remappable action in the shortcut registry. */
|
|
1079
|
+
export declare interface ShortcutActionDef {
|
|
1080
|
+
/** Stable id — also the localStorage override key. */
|
|
1081
|
+
id: string;
|
|
1082
|
+
/** Default combo in canonical form. */
|
|
1083
|
+
defaultCombo: string;
|
|
1084
|
+
/**
|
|
1085
|
+
* Extra built-in combos that also trigger the action but are NOT
|
|
1086
|
+
* remappable (e.g. Backspace on go-up, which carries the
|
|
1087
|
+
* selection-dependent dual behaviour). Shown in the help sheet and
|
|
1088
|
+
* reserved in conflict detection.
|
|
1089
|
+
*/
|
|
1090
|
+
fixedCombos?: string[];
|
|
1091
|
+
labelKey: string;
|
|
1092
|
+
groupKey: string;
|
|
1093
|
+
/** false → the combo can't be remapped (Esc). Default true. */
|
|
1094
|
+
customizable?: boolean;
|
|
1095
|
+
/** false → don't preventDefault on match (Enter / Esc). Default true. */
|
|
1096
|
+
prevent?: boolean;
|
|
1097
|
+
/** true → fires even when focus sits in a form control (Esc). */
|
|
1098
|
+
inForms?: boolean;
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
export declare interface ShortcutConflict {
|
|
1102
|
+
id: string;
|
|
1103
|
+
/** true → the clash is with a fixed (non-remappable) combo. */
|
|
1104
|
+
fixed: boolean;
|
|
1105
|
+
}
|
|
1106
|
+
|
|
892
1107
|
export declare interface ShortcutHandlers {
|
|
893
1108
|
onDelete?: () => void;
|
|
894
1109
|
onRename?: () => void;
|
|
@@ -904,9 +1119,30 @@ export declare interface ShortcutHandlers {
|
|
|
904
1119
|
onGoUp?: () => void;
|
|
905
1120
|
onShowHelp?: () => void;
|
|
906
1121
|
onToggleInspector?: () => void;
|
|
1122
|
+
onQuickLook?: () => void;
|
|
907
1123
|
hasSelection?: () => boolean;
|
|
908
1124
|
}
|
|
909
1125
|
|
|
1126
|
+
export declare const ShortcutSettings: DefineComponent<__VLS_Props_7, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
1127
|
+
close: () => any;
|
|
1128
|
+
}, string, PublicProps, Readonly<__VLS_Props_7> & Readonly<{
|
|
1129
|
+
onClose?: (() => any) | undefined;
|
|
1130
|
+
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
1131
|
+
|
|
1132
|
+
export declare interface ShortcutView {
|
|
1133
|
+
id: string;
|
|
1134
|
+
/** Current (possibly remapped) combo, '' = unbound. */
|
|
1135
|
+
combo: string;
|
|
1136
|
+
/** Non-remappable extra combos (display + reservation only). */
|
|
1137
|
+
fixedCombos: string[];
|
|
1138
|
+
/** Display combos: [combo, ...fixedCombos] minus empties. */
|
|
1139
|
+
keys: string[];
|
|
1140
|
+
labelKey: string;
|
|
1141
|
+
groupKey: string;
|
|
1142
|
+
customizable: boolean;
|
|
1143
|
+
overridden: boolean;
|
|
1144
|
+
}
|
|
1145
|
+
|
|
910
1146
|
/**
|
|
911
1147
|
* Snippet segment parser — the search backend returns content snippets as
|
|
912
1148
|
* PLAIN TEXT with matched words wrapped in «guillemets» (contract: no HTML
|
|
@@ -936,6 +1172,12 @@ onError?: ((message: string) => any) | undefined;
|
|
|
936
1172
|
onChange?: ((value: boolean) => any) | undefined;
|
|
937
1173
|
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLButtonElement>;
|
|
938
1174
|
|
|
1175
|
+
/**
|
|
1176
|
+
* Create/update/empty the singleton `<style data-filex-theme>` element in
|
|
1177
|
+
* <head>. Idempotent — safe to call from every explorer instance.
|
|
1178
|
+
*/
|
|
1179
|
+
export declare function syncThemeStyle(id: string): void;
|
|
1180
|
+
|
|
939
1181
|
export declare const TagPicker: DefineComponent<__VLS_Props_4, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
940
1182
|
error: (message: string) => any;
|
|
941
1183
|
change: (tags: string[]) => any;
|
|
@@ -944,8 +1186,36 @@ onError?: ((message: string) => any) | undefined;
|
|
|
944
1186
|
onChange?: ((tags: string[]) => any) | undefined;
|
|
945
1187
|
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
946
1188
|
|
|
1189
|
+
export declare const THEME_LS_KEY = "filex.theme";
|
|
1190
|
+
|
|
1191
|
+
export declare function themeById(id: string | null | undefined): ThemeDef | undefined;
|
|
1192
|
+
|
|
1193
|
+
export declare interface ThemeDef {
|
|
1194
|
+
/** Stable id — persisted in localStorage, never shown to users. */
|
|
1195
|
+
id: string;
|
|
1196
|
+
/** i18n catalogue key for the display name (tr + en). */
|
|
1197
|
+
nameKey: string;
|
|
1198
|
+
/** Palette applied when the resolved mode is light. */
|
|
1199
|
+
light: ThemeTokenMap;
|
|
1200
|
+
/** Palette applied when the resolved mode is dark. */
|
|
1201
|
+
dark: ThemeTokenMap;
|
|
1202
|
+
}
|
|
1203
|
+
|
|
1204
|
+
export declare const ThemeGallery: DefineComponent<__VLS_Props_6, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
|
|
1205
|
+
close: () => any;
|
|
1206
|
+
select: (id: string) => any;
|
|
1207
|
+
}, string, PublicProps, Readonly<__VLS_Props_6> & Readonly<{
|
|
1208
|
+
onClose?: (() => any) | undefined;
|
|
1209
|
+
onSelect?: ((id: string) => any) | undefined;
|
|
1210
|
+
}>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
|
|
1211
|
+
|
|
947
1212
|
export declare type ThemeMode = 'light' | 'dark' | 'auto';
|
|
948
1213
|
|
|
1214
|
+
export declare const THEMES: ThemeDef[];
|
|
1215
|
+
|
|
1216
|
+
/** Map of `--fe-*` custom property → value. */
|
|
1217
|
+
export declare type ThemeTokenMap = Record<string, string>;
|
|
1218
|
+
|
|
949
1219
|
/** Turkish UI strings. */
|
|
950
1220
|
export declare const tr: Record<string, string>;
|
|
951
1221
|
|
|
@@ -1157,6 +1427,87 @@ export declare function useMonacoLoader(): {
|
|
|
1157
1427
|
getHighlight: typeof getHighlight;
|
|
1158
1428
|
};
|
|
1159
1429
|
|
|
1430
|
+
export declare function useOperations(): {
|
|
1431
|
+
active: Ref< {
|
|
1432
|
+
key: string;
|
|
1433
|
+
kind: OperationKind;
|
|
1434
|
+
name: string;
|
|
1435
|
+
percent: number | null;
|
|
1436
|
+
status: OperationStatus;
|
|
1437
|
+
error: string | null;
|
|
1438
|
+
queued: boolean;
|
|
1439
|
+
doneCount: number | null;
|
|
1440
|
+
totalCount: number | null;
|
|
1441
|
+
uploadedBytes: number | null;
|
|
1442
|
+
totalBytes: number | null;
|
|
1443
|
+
cancellable: boolean;
|
|
1444
|
+
retryable: boolean;
|
|
1445
|
+
startedAt: number;
|
|
1446
|
+
settledAt: number | null;
|
|
1447
|
+
}[], Operation[] | {
|
|
1448
|
+
key: string;
|
|
1449
|
+
kind: OperationKind;
|
|
1450
|
+
name: string;
|
|
1451
|
+
percent: number | null;
|
|
1452
|
+
status: OperationStatus;
|
|
1453
|
+
error: string | null;
|
|
1454
|
+
queued: boolean;
|
|
1455
|
+
doneCount: number | null;
|
|
1456
|
+
totalCount: number | null;
|
|
1457
|
+
uploadedBytes: number | null;
|
|
1458
|
+
totalBytes: number | null;
|
|
1459
|
+
cancellable: boolean;
|
|
1460
|
+
retryable: boolean;
|
|
1461
|
+
startedAt: number;
|
|
1462
|
+
settledAt: number | null;
|
|
1463
|
+
}[]>;
|
|
1464
|
+
history: Ref< {
|
|
1465
|
+
key: string;
|
|
1466
|
+
kind: OperationKind;
|
|
1467
|
+
name: string;
|
|
1468
|
+
percent: number | null;
|
|
1469
|
+
status: OperationStatus;
|
|
1470
|
+
error: string | null;
|
|
1471
|
+
queued: boolean;
|
|
1472
|
+
doneCount: number | null;
|
|
1473
|
+
totalCount: number | null;
|
|
1474
|
+
uploadedBytes: number | null;
|
|
1475
|
+
totalBytes: number | null;
|
|
1476
|
+
cancellable: boolean;
|
|
1477
|
+
retryable: boolean;
|
|
1478
|
+
startedAt: number;
|
|
1479
|
+
settledAt: number | null;
|
|
1480
|
+
}[], Operation[] | {
|
|
1481
|
+
key: string;
|
|
1482
|
+
kind: OperationKind;
|
|
1483
|
+
name: string;
|
|
1484
|
+
percent: number | null;
|
|
1485
|
+
status: OperationStatus;
|
|
1486
|
+
error: string | null;
|
|
1487
|
+
queued: boolean;
|
|
1488
|
+
doneCount: number | null;
|
|
1489
|
+
totalCount: number | null;
|
|
1490
|
+
uploadedBytes: number | null;
|
|
1491
|
+
totalBytes: number | null;
|
|
1492
|
+
cancellable: boolean;
|
|
1493
|
+
retryable: boolean;
|
|
1494
|
+
startedAt: number;
|
|
1495
|
+
settledAt: number | null;
|
|
1496
|
+
}[]>;
|
|
1497
|
+
runningCount: ComputedRef<number>;
|
|
1498
|
+
errorCount: ComputedRef<number>;
|
|
1499
|
+
hasError: ComputedRef<boolean>;
|
|
1500
|
+
overallPercent: ComputedRef<number | null>;
|
|
1501
|
+
sync: (group: string, items: Array<{
|
|
1502
|
+
input: OperationInput;
|
|
1503
|
+
actions?: OperationActions;
|
|
1504
|
+
}>) => void;
|
|
1505
|
+
cancel: (key: string) => void;
|
|
1506
|
+
retry: (key: string) => void;
|
|
1507
|
+
dismiss: (key: string) => void;
|
|
1508
|
+
clearHistory: () => void;
|
|
1509
|
+
};
|
|
1510
|
+
|
|
1160
1511
|
export declare function usePendingOps(config: ExplorerConfig, api: FileApi, opts?: UsePendingOpsOptions): {
|
|
1161
1512
|
ops: Ref< {
|
|
1162
1513
|
id: number;
|
|
@@ -1226,6 +1577,15 @@ export declare function useSelection(items: () => FileNode[]): {
|
|
|
1226
1577
|
nodes: ComputedRef<FileNode[]>;
|
|
1227
1578
|
};
|
|
1228
1579
|
|
|
1580
|
+
/** Reactive, override-aware view of the registry (registry order). */
|
|
1581
|
+
export declare function useShortcutList(): ComputedRef<ShortcutView[]>;
|
|
1582
|
+
|
|
1583
|
+
/** Reactive handle for components: `{ themeId, setTheme }`. */
|
|
1584
|
+
export declare function useThemeState(): {
|
|
1585
|
+
themeId: Ref<string>;
|
|
1586
|
+
setTheme: (id: string) => void;
|
|
1587
|
+
};
|
|
1588
|
+
|
|
1229
1589
|
export declare function useUploadChunked(config: ExplorerConfig, api: FileApi): {
|
|
1230
1590
|
uploadFile: (opts: UploadOptions) => Promise<UploadFinalizeResponse>;
|
|
1231
1591
|
};
|