@brftech/filex-core 0.1.78 → 0.1.79
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-BmpDoIWA.js → ArchiveViewer-i6kwnRYm.js} +2 -2
- package/dist/{ArchiveViewer-BmpDoIWA.js.map → ArchiveViewer-i6kwnRYm.js.map} +1 -1
- package/dist/{CsvViewer-BAMxNxy4.js → CsvViewer-BDpjcXgR.js} +2 -2
- package/dist/{CsvViewer-BAMxNxy4.js.map → CsvViewer-BDpjcXgR.js.map} +1 -1
- package/dist/{DrawioViewer-BIm8G98S.js → DrawioViewer-BdC_OKe3.js} +2 -2
- package/dist/{DrawioViewer-BIm8G98S.js.map → DrawioViewer-BdC_OKe3.js.map} +1 -1
- package/dist/{EpubViewer-D2OggB7W.js → EpubViewer-DXbYwVxr.js} +2 -2
- package/dist/{EpubViewer-D2OggB7W.js.map → EpubViewer-DXbYwVxr.js.map} +1 -1
- package/dist/{IpynbViewer-Dcew5gZQ.js → IpynbViewer-CIWJyo5t.js} +2 -2
- package/dist/{IpynbViewer-Dcew5gZQ.js.map → IpynbViewer-CIWJyo5t.js.map} +1 -1
- package/dist/{MermaidViewer-iG7VuHeu.js → MermaidViewer-sVI1Gdzg.js} +2 -2
- package/dist/{MermaidViewer-iG7VuHeu.js.map → MermaidViewer-sVI1Gdzg.js.map} +1 -1
- package/dist/{PsdViewer-C-92G5j0.js → PsdViewer-11QXthlz.js} +2 -2
- package/dist/{PsdViewer-C-92G5j0.js.map → PsdViewer-11QXthlz.js.map} +1 -1
- package/dist/{TiffViewer-uOJVggkp.js → TiffViewer-_3i3709w.js} +2 -2
- package/dist/{TiffViewer-uOJVggkp.js.map → TiffViewer-_3i3709w.js.map} +1 -1
- package/dist/{Viewer3D-RnzhEk_6.js → Viewer3D-rhyqPxtc.js} +2 -2
- package/dist/{Viewer3D-RnzhEk_6.js.map → Viewer3D-rhyqPxtc.js.map} +1 -1
- package/dist/filex-core.js +1 -1
- package/dist/filex-core.umd.cjs +12 -12
- package/dist/filex-core.umd.cjs.map +1 -1
- package/dist/{index-B6jiFQPw.js → index-npEoKJ-x.js} +903 -895
- package/dist/index-npEoKJ-x.js.map +1 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/FileExplorer.vue +11 -2
- package/src/components/PresenceBar.vue +19 -8
- package/src/lib/realtime.ts +4 -0
- package/dist/index-B6jiFQPw.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var Ga = Object.defineProperty;
|
|
2
2
|
var Ja = (s, r, e) => r in s ? Ga(s, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[r] = e;
|
|
3
3
|
var Je = (s, r, e) => Ja(s, typeof r != "symbol" ? r + "" : r, e);
|
|
4
|
-
import { ref as b, computed as ee, onMounted as Qe, onBeforeUnmount as it, defineComponent as
|
|
4
|
+
import { ref as b, computed as ee, onMounted as Qe, onBeforeUnmount as it, defineComponent as $e, openBlock as l, createElementBlock as f, createElementVNode as o, Fragment as le, renderList as Se, normalizeStyle as wt, createTextVNode as Pe, toDisplayString as u, createCommentVNode as H, watch as We, unref as z, normalizeClass as he, withModifiers as ke, withDirectives as _e, withKeys as Ze, vModelText as Fe, nextTick as yt, createBlock as Ne, Teleport as qa, createVNode as Ae, Transition as ht, withCtx as Oe, TransitionGroup as Xa, renderSlot as ea, vModelCheckbox as St, shallowRef as Qa, resolveDynamicComponent as Za, mergeProps as en, vModelSelect as Ct, customRef as tn } from "vue";
|
|
5
5
|
function ta(s) {
|
|
6
6
|
return !!s && s.enabled && s.state === "ok";
|
|
7
7
|
}
|
|
@@ -81,7 +81,7 @@ function sn(s) {
|
|
|
81
81
|
function t() {
|
|
82
82
|
return e.kind === "csrf" ? "include" : "same-origin";
|
|
83
83
|
}
|
|
84
|
-
function
|
|
84
|
+
function y(P) {
|
|
85
85
|
const N = (s.locale ?? "tr") !== "en", Q = {
|
|
86
86
|
400: ["Geçersiz istek", "Bad request"],
|
|
87
87
|
401: ["Oturum gerekli, tekrar giriş yapın", "Sign-in required"],
|
|
@@ -108,37 +108,37 @@ function sn(s) {
|
|
|
108
108
|
credentials: t()
|
|
109
109
|
});
|
|
110
110
|
if (!Q.ok) {
|
|
111
|
-
const ge = await Q.text().catch(() => ""), pe = new Error(
|
|
111
|
+
const ge = await Q.text().catch(() => ""), pe = new Error(y(Q.status));
|
|
112
112
|
throw pe.status = Q.status, pe.detail = ge.slice(0, 300), pe;
|
|
113
113
|
}
|
|
114
114
|
return Q.json();
|
|
115
115
|
}
|
|
116
|
-
function
|
|
116
|
+
function h(P = "") {
|
|
117
117
|
return r.manager.replace(/\/manager(\?.*)?$/, "/permissions") + P;
|
|
118
118
|
}
|
|
119
|
-
async function
|
|
120
|
-
return d(
|
|
119
|
+
async function $(P) {
|
|
120
|
+
return d(h() + "?path=" + encodeURIComponent(P));
|
|
121
121
|
}
|
|
122
|
-
async function
|
|
123
|
-
return d(
|
|
122
|
+
async function A(P) {
|
|
123
|
+
return d(h("/resolve") + "?email=" + encodeURIComponent(P));
|
|
124
124
|
}
|
|
125
125
|
async function j(P) {
|
|
126
|
-
return d(
|
|
126
|
+
return d(h("/users") + "?q=" + encodeURIComponent(P));
|
|
127
127
|
}
|
|
128
128
|
async function L(P) {
|
|
129
|
-
return d(
|
|
129
|
+
return d(h(), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
|
|
130
130
|
}
|
|
131
|
-
async function
|
|
132
|
-
return d(
|
|
131
|
+
async function O(P, N) {
|
|
132
|
+
return d(h("/" + P), { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ level: N }) });
|
|
133
133
|
}
|
|
134
|
-
async function
|
|
135
|
-
return d(
|
|
134
|
+
async function T(P) {
|
|
135
|
+
return d(h("/" + P), { method: "DELETE" });
|
|
136
136
|
}
|
|
137
137
|
async function v(P) {
|
|
138
|
-
return d(
|
|
138
|
+
return d(h("/invite"), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
|
|
139
139
|
}
|
|
140
140
|
async function B(P) {
|
|
141
|
-
return d(
|
|
141
|
+
return d(h("/share-mail"), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
|
|
142
142
|
}
|
|
143
143
|
function U(P) {
|
|
144
144
|
const N = new URLSearchParams();
|
|
@@ -146,42 +146,42 @@ function sn(s) {
|
|
|
146
146
|
Q != null && N.set(F, String(Q));
|
|
147
147
|
return N.toString();
|
|
148
148
|
}
|
|
149
|
-
function
|
|
149
|
+
function I(P, N = {}) {
|
|
150
150
|
const F = r.manager.includes("?") ? "&" : "?";
|
|
151
151
|
return `${r.manager}${F}${U({ q: P, action: P, ...N })}`;
|
|
152
152
|
}
|
|
153
153
|
async function J(P) {
|
|
154
|
-
return d(
|
|
154
|
+
return d(I("index", { path: P }));
|
|
155
155
|
}
|
|
156
|
-
async function
|
|
157
|
-
return d(
|
|
156
|
+
async function g(P, N) {
|
|
157
|
+
return d(I("search", { path: P, filter: N }));
|
|
158
158
|
}
|
|
159
159
|
async function w(P) {
|
|
160
|
-
return d(
|
|
160
|
+
return d(I("subfolders", { path: P }));
|
|
161
161
|
}
|
|
162
162
|
async function p(P, N) {
|
|
163
|
-
return d(
|
|
163
|
+
return d(I("newfolder"), {
|
|
164
164
|
method: "POST",
|
|
165
165
|
headers: { "Content-Type": "application/json" },
|
|
166
166
|
body: JSON.stringify({ path: P, name: N })
|
|
167
167
|
});
|
|
168
168
|
}
|
|
169
|
-
async function
|
|
170
|
-
return d(
|
|
169
|
+
async function S(P, N, F) {
|
|
170
|
+
return d(I("rename"), {
|
|
171
171
|
method: "POST",
|
|
172
172
|
headers: { "Content-Type": "application/json" },
|
|
173
173
|
body: JSON.stringify({ path: P, item: N, name: F })
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
176
|
async function k(P, N, F) {
|
|
177
|
-
return d(
|
|
177
|
+
return d(I("move"), {
|
|
178
178
|
method: "POST",
|
|
179
179
|
headers: { "Content-Type": "application/json" },
|
|
180
180
|
body: JSON.stringify({ path: P, item: F, items: N.map((Q) => ({ path: Q })) })
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
183
|
async function G(P, N) {
|
|
184
|
-
return d(
|
|
184
|
+
return d(I("delete"), {
|
|
185
185
|
method: "POST",
|
|
186
186
|
headers: { "Content-Type": "application/json" },
|
|
187
187
|
body: JSON.stringify({ path: P, items: N.map((F) => ({ path: F })) })
|
|
@@ -247,17 +247,17 @@ function sn(s) {
|
|
|
247
247
|
const ge = await i();
|
|
248
248
|
return new Promise((pe, ce) => {
|
|
249
249
|
const fe = new XMLHttpRequest();
|
|
250
|
-
fe.open("POST",
|
|
251
|
-
for (const [
|
|
252
|
-
|
|
253
|
-
fe.withCredentials = t() === "include", fe.upload.onprogress = (
|
|
254
|
-
F &&
|
|
250
|
+
fe.open("POST", I("upload"));
|
|
251
|
+
for (const [Ce, Ve] of Object.entries(ge))
|
|
252
|
+
Ce !== "Content-Type" && fe.setRequestHeader(Ce, Ve);
|
|
253
|
+
fe.withCredentials = t() === "include", fe.upload.onprogress = (Ce) => {
|
|
254
|
+
F && Ce.lengthComputable && F(Math.round(Ce.loaded / Ce.total * 100));
|
|
255
255
|
}, fe.onload = () => {
|
|
256
256
|
if (fe.status >= 200 && fe.status < 300)
|
|
257
257
|
try {
|
|
258
258
|
pe(JSON.parse(fe.responseText));
|
|
259
|
-
} catch (
|
|
260
|
-
ce(
|
|
259
|
+
} catch (Ce) {
|
|
260
|
+
ce(Ce);
|
|
261
261
|
}
|
|
262
262
|
else
|
|
263
263
|
ce(new Error(`${fe.status} ${fe.statusText}: ${fe.responseText.slice(0, 200)}`));
|
|
@@ -265,10 +265,10 @@ function sn(s) {
|
|
|
265
265
|
});
|
|
266
266
|
}
|
|
267
267
|
function ne(P) {
|
|
268
|
-
return
|
|
268
|
+
return I("download", { path: P });
|
|
269
269
|
}
|
|
270
270
|
function ye(P) {
|
|
271
|
-
return
|
|
271
|
+
return I("preview", { path: P });
|
|
272
272
|
}
|
|
273
273
|
async function de(P) {
|
|
274
274
|
const N = await i(), F = await fetch(ye(P), {
|
|
@@ -377,10 +377,10 @@ function sn(s) {
|
|
|
377
377
|
wsTicket: Ge,
|
|
378
378
|
// Manager
|
|
379
379
|
index: J,
|
|
380
|
-
search:
|
|
380
|
+
search: g,
|
|
381
381
|
subfolders: w,
|
|
382
382
|
newFolder: p,
|
|
383
|
-
rename:
|
|
383
|
+
rename: S,
|
|
384
384
|
move: k,
|
|
385
385
|
copy: W,
|
|
386
386
|
moveAsync: Z,
|
|
@@ -404,12 +404,12 @@ function sn(s) {
|
|
|
404
404
|
archiveExtract: et,
|
|
405
405
|
archiveAdd: Te,
|
|
406
406
|
// Permissions (RBAC panel)
|
|
407
|
-
listPermissions:
|
|
408
|
-
resolveEmail:
|
|
407
|
+
listPermissions: $,
|
|
408
|
+
resolveEmail: A,
|
|
409
409
|
searchUsers: j,
|
|
410
410
|
addPermission: L,
|
|
411
|
-
updatePermission:
|
|
412
|
-
deletePermission:
|
|
411
|
+
updatePermission: O,
|
|
412
|
+
deletePermission: T,
|
|
413
413
|
invitePermission: v,
|
|
414
414
|
shareMail: B,
|
|
415
415
|
// Internals (exposed for useUploadChunked + PreviewModal)
|
|
@@ -423,8 +423,8 @@ function sn(s) {
|
|
|
423
423
|
function rn(s, r) {
|
|
424
424
|
const e = s.chunkSize ?? 5242880, i = Math.max(1, Math.min(8, s.parallelChunks ?? 4));
|
|
425
425
|
async function c(t) {
|
|
426
|
-
var L,
|
|
427
|
-
const
|
|
426
|
+
var L, O;
|
|
427
|
+
const y = t.chunkSize ?? e, d = t.parallelChunks ?? i, h = {
|
|
428
428
|
id: crypto.randomUUID(),
|
|
429
429
|
file: t.file,
|
|
430
430
|
path: t.path,
|
|
@@ -436,19 +436,19 @@ function rn(s, r) {
|
|
|
436
436
|
}
|
|
437
437
|
// rebound below
|
|
438
438
|
};
|
|
439
|
-
let
|
|
440
|
-
const
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
for (const
|
|
439
|
+
let $ = !1;
|
|
440
|
+
const A = [];
|
|
441
|
+
h.cancel = () => {
|
|
442
|
+
$ = !0;
|
|
443
|
+
for (const T of A) T.abort();
|
|
444
444
|
};
|
|
445
445
|
function j() {
|
|
446
|
-
var
|
|
447
|
-
|
|
446
|
+
var T;
|
|
447
|
+
h.percent = h.totalBytes > 0 ? Math.min(100, Math.round(h.uploadedBytes / h.totalBytes * 100)) : 0, (T = t.onProgress) == null || T.call(t, h);
|
|
448
448
|
}
|
|
449
449
|
try {
|
|
450
450
|
if (!r.endpoints.uploadInit) throw new Error("uploadInit not configured");
|
|
451
|
-
const
|
|
451
|
+
const T = await r.jsonFetch(
|
|
452
452
|
r.endpoints.uploadInit,
|
|
453
453
|
{
|
|
454
454
|
method: "POST",
|
|
@@ -461,17 +461,17 @@ function rn(s, r) {
|
|
|
461
461
|
})
|
|
462
462
|
}
|
|
463
463
|
);
|
|
464
|
-
|
|
465
|
-
const v =
|
|
466
|
-
let
|
|
464
|
+
h.uploadId = T.uploadId, h.status = "uploading", j();
|
|
465
|
+
const v = T.chunkBytes ?? y, B = /* @__PURE__ */ new Map(), U = [];
|
|
466
|
+
let I = 0;
|
|
467
467
|
async function J(G) {
|
|
468
|
-
const Z = (G.partNumber - 1) * (
|
|
469
|
-
|
|
468
|
+
const Z = (G.partNumber - 1) * (T.chunkBytes ?? y), be = Math.min(Z + (T.chunkBytes ?? y), t.file.size), re = t.file.slice(Z, be), Y = new AbortController();
|
|
469
|
+
A.push(Y), await new Promise((q, se) => {
|
|
470
470
|
const ne = new XMLHttpRequest();
|
|
471
471
|
ne.open("PUT", G.presignedUrl), ne.upload.onprogress = (ye) => {
|
|
472
472
|
if (ye.lengthComputable) {
|
|
473
473
|
const de = B.get(G.partNumber) ?? 0, Ie = ye.loaded - de;
|
|
474
|
-
B.set(G.partNumber, ye.loaded),
|
|
474
|
+
B.set(G.partNumber, ye.loaded), h.uploadedBytes += Ie, j();
|
|
475
475
|
}
|
|
476
476
|
}, ne.onload = () => {
|
|
477
477
|
if (ne.status >= 200 && ne.status < 300) {
|
|
@@ -481,7 +481,7 @@ function rn(s, r) {
|
|
|
481
481
|
return;
|
|
482
482
|
}
|
|
483
483
|
const de = be - Z, Ie = B.get(G.partNumber) ?? 0;
|
|
484
|
-
Ie < de && (
|
|
484
|
+
Ie < de && (h.uploadedBytes += de - Ie, B.set(G.partNumber, de)), U.push({ partNumber: G.partNumber, etag: ye }), q();
|
|
485
485
|
} else
|
|
486
486
|
se(
|
|
487
487
|
new Error(`S3 PUT ${G.partNumber} → ${ne.status}: ${ne.responseText.slice(0, 200)}`)
|
|
@@ -489,72 +489,72 @@ function rn(s, r) {
|
|
|
489
489
|
}, ne.onerror = () => se(new Error(`S3 PUT ${G.partNumber} network error`)), ne.onabort = () => se(new DOMException("Aborted", "AbortError")), Y.signal.addEventListener("abort", () => ne.abort()), ne.send(re);
|
|
490
490
|
});
|
|
491
491
|
}
|
|
492
|
-
const
|
|
492
|
+
const g = 2;
|
|
493
493
|
async function w(G, W = 0) {
|
|
494
494
|
try {
|
|
495
495
|
await J(G);
|
|
496
496
|
} catch (Z) {
|
|
497
|
-
if (
|
|
497
|
+
if ($) throw Z;
|
|
498
498
|
const be = Z instanceof Error ? Z : new Error(String(Z));
|
|
499
|
-
if (be.name === "AbortError" || W >=
|
|
499
|
+
if (be.name === "AbortError" || W >= g) throw be;
|
|
500
500
|
const re = B.get(G.partNumber) ?? 0;
|
|
501
|
-
re > 0 && (
|
|
501
|
+
re > 0 && (h.uploadedBytes = Math.max(0, h.uploadedBytes - re), B.delete(G.partNumber), j());
|
|
502
502
|
const Y = 500 * (W + 1) + Math.floor(Math.random() * 250);
|
|
503
503
|
return await new Promise((q) => setTimeout(q, Y)), w(G, W + 1);
|
|
504
504
|
}
|
|
505
505
|
}
|
|
506
506
|
async function p() {
|
|
507
|
-
for (;
|
|
508
|
-
const G =
|
|
507
|
+
for (; !$ && I < T.parts.length; ) {
|
|
508
|
+
const G = T.parts[I++];
|
|
509
509
|
await w(G);
|
|
510
510
|
}
|
|
511
511
|
}
|
|
512
|
-
const
|
|
512
|
+
const S = [];
|
|
513
513
|
for (let G = 0; G < d; G++)
|
|
514
|
-
|
|
515
|
-
if (await Promise.all(
|
|
514
|
+
S.push(p());
|
|
515
|
+
if (await Promise.all(S), $)
|
|
516
516
|
throw new DOMException("Aborted by user", "AbortError");
|
|
517
517
|
if (!r.endpoints.uploadFinalize) throw new Error("uploadFinalize not configured");
|
|
518
|
-
|
|
518
|
+
h.status = "finalizing", U.sort((G, W) => G.partNumber - W.partNumber);
|
|
519
519
|
const k = await r.jsonFetch(r.endpoints.uploadFinalize, {
|
|
520
520
|
method: "POST",
|
|
521
521
|
headers: { "Content-Type": "application/json" },
|
|
522
|
-
body: JSON.stringify({ uploadId:
|
|
522
|
+
body: JSON.stringify({ uploadId: T.uploadId, parts: U })
|
|
523
523
|
});
|
|
524
|
-
return
|
|
525
|
-
} catch (
|
|
526
|
-
const v =
|
|
527
|
-
if (
|
|
524
|
+
return h.status = "done", h.uploadedBytes = h.totalBytes, h.percent = 100, j(), (L = t.onDone) == null || L.call(t, h, k), k;
|
|
525
|
+
} catch (T) {
|
|
526
|
+
const v = T instanceof Error ? T : new Error(String(T));
|
|
527
|
+
if (h.status = v.name === "AbortError" ? "aborted" : "error", h.error = v.message, j(), h.uploadId && r.endpoints.uploadAbort && h.status === "aborted")
|
|
528
528
|
try {
|
|
529
529
|
await r.jsonFetch(r.endpoints.uploadAbort, {
|
|
530
530
|
method: "POST",
|
|
531
531
|
headers: { "Content-Type": "application/json" },
|
|
532
|
-
body: JSON.stringify({ uploadId:
|
|
532
|
+
body: JSON.stringify({ uploadId: h.uploadId })
|
|
533
533
|
});
|
|
534
534
|
} catch {
|
|
535
535
|
}
|
|
536
|
-
throw (
|
|
536
|
+
throw (O = t.onError) == null || O.call(t, h, v), v;
|
|
537
537
|
}
|
|
538
538
|
}
|
|
539
539
|
return { uploadFile: c };
|
|
540
540
|
}
|
|
541
541
|
function ln(s) {
|
|
542
542
|
const r = b(/* @__PURE__ */ new Set()), e = b(null);
|
|
543
|
-
function i(L,
|
|
544
|
-
if (
|
|
545
|
-
const
|
|
543
|
+
function i(L, O = {}) {
|
|
544
|
+
if (O.shift && e.value) {
|
|
545
|
+
const T = s(), v = T.findIndex((g) => g.path === e.value), B = T.findIndex((g) => g.path === L);
|
|
546
546
|
if (v === -1 || B === -1) {
|
|
547
547
|
r.value = /* @__PURE__ */ new Set([L]), e.value = L;
|
|
548
548
|
return;
|
|
549
549
|
}
|
|
550
|
-
const [U,
|
|
551
|
-
for (let
|
|
550
|
+
const [U, I] = v < B ? [v, B] : [B, v], J = /* @__PURE__ */ new Set();
|
|
551
|
+
for (let g = U; g <= I; g++) J.add(T[g].path);
|
|
552
552
|
r.value = J;
|
|
553
553
|
return;
|
|
554
554
|
}
|
|
555
|
-
if (
|
|
556
|
-
const
|
|
557
|
-
|
|
555
|
+
if (O.ctrl) {
|
|
556
|
+
const T = new Set(r.value);
|
|
557
|
+
T.has(L) ? T.delete(L) : T.add(L), r.value = T, e.value = L;
|
|
558
558
|
return;
|
|
559
559
|
}
|
|
560
560
|
r.value = /* @__PURE__ */ new Set([L]), e.value = L;
|
|
@@ -565,19 +565,19 @@ function ln(s) {
|
|
|
565
565
|
function t() {
|
|
566
566
|
r.value = new Set(s().map((L) => L.path));
|
|
567
567
|
}
|
|
568
|
-
function
|
|
568
|
+
function y(L) {
|
|
569
569
|
return r.value.has(L);
|
|
570
570
|
}
|
|
571
571
|
function d(L) {
|
|
572
|
-
const
|
|
573
|
-
|
|
572
|
+
const O = new Set(r.value);
|
|
573
|
+
O.add(L), r.value = O;
|
|
574
574
|
}
|
|
575
|
-
function
|
|
576
|
-
const
|
|
577
|
-
|
|
575
|
+
function h(L) {
|
|
576
|
+
const O = new Set(r.value);
|
|
577
|
+
O.delete(L), r.value = O;
|
|
578
578
|
}
|
|
579
|
-
const
|
|
580
|
-
return { selected: r, anchor: e, click: i, clear: c, selectAll: t, has:
|
|
579
|
+
const $ = ee(() => r.value.size), A = ee(() => r.value.size === 0), j = ee(() => s().filter((O) => r.value.has(O.path)));
|
|
580
|
+
return { selected: r, anchor: e, click: i, clear: c, selectAll: t, has: y, add: d, remove: h, size: $, isEmpty: A, nodes: j };
|
|
581
581
|
}
|
|
582
582
|
function cn(s, r) {
|
|
583
583
|
function e(i) {
|
|
@@ -586,7 +586,7 @@ function cn(s, r) {
|
|
|
586
586
|
const t = i.target;
|
|
587
587
|
if (t && (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable) && i.key !== "Escape")
|
|
588
588
|
return;
|
|
589
|
-
const
|
|
589
|
+
const y = i.ctrlKey || i.metaKey;
|
|
590
590
|
switch (i.key) {
|
|
591
591
|
case "Delete":
|
|
592
592
|
r.onDelete && (i.preventDefault(), r.onDelete());
|
|
@@ -604,31 +604,31 @@ function cn(s, r) {
|
|
|
604
604
|
r.onClose && r.onClose();
|
|
605
605
|
break;
|
|
606
606
|
case "/":
|
|
607
|
-
r.onFocusSearch && !
|
|
607
|
+
r.onFocusSearch && !y && (i.preventDefault(), r.onFocusSearch());
|
|
608
608
|
break;
|
|
609
609
|
case "a":
|
|
610
610
|
case "A":
|
|
611
|
-
|
|
611
|
+
y && r.onSelectAll && (i.preventDefault(), r.onSelectAll());
|
|
612
612
|
break;
|
|
613
613
|
case "x":
|
|
614
614
|
case "X":
|
|
615
|
-
|
|
615
|
+
y && r.onCut && (i.preventDefault(), r.onCut());
|
|
616
616
|
break;
|
|
617
617
|
case "c":
|
|
618
618
|
case "C":
|
|
619
|
-
|
|
619
|
+
y && r.onCopy && (i.preventDefault(), r.onCopy());
|
|
620
620
|
break;
|
|
621
621
|
case "v":
|
|
622
622
|
case "V":
|
|
623
|
-
|
|
623
|
+
y && r.onPaste && (i.preventDefault(), r.onPaste());
|
|
624
624
|
break;
|
|
625
625
|
case "d":
|
|
626
626
|
case "D":
|
|
627
|
-
|
|
627
|
+
y && r.onDuplicate && (i.preventDefault(), r.onDuplicate());
|
|
628
628
|
break;
|
|
629
629
|
case "k":
|
|
630
630
|
case "K":
|
|
631
|
-
|
|
631
|
+
y && r.onPathJump && (i.preventDefault(), r.onPathJump());
|
|
632
632
|
break;
|
|
633
633
|
case "ArrowUp":
|
|
634
634
|
i.altKey && r.onGoUp && (i.preventDefault(), r.onGoUp());
|
|
@@ -863,49 +863,49 @@ function He(s) {
|
|
|
863
863
|
const t = typeof s == "function" ? s() : s.value;
|
|
864
864
|
return aa[t] ?? aa.tr;
|
|
865
865
|
});
|
|
866
|
-
function e(t,
|
|
866
|
+
function e(t, y = {}) {
|
|
867
867
|
const d = r.value[t] ?? t;
|
|
868
|
-
return Object.entries(
|
|
869
|
-
(
|
|
868
|
+
return Object.entries(y).reduce(
|
|
869
|
+
(h, [$, A]) => h.replaceAll(`{${$}}`, String(A)),
|
|
870
870
|
d
|
|
871
871
|
);
|
|
872
872
|
}
|
|
873
873
|
function i(t) {
|
|
874
874
|
if (t == null || t < 0) return "—";
|
|
875
875
|
if (t === 0) return `0 ${e("unit.bytes")}`;
|
|
876
|
-
const
|
|
876
|
+
const y = [
|
|
877
877
|
[1024 ** 4, "unit.tb"],
|
|
878
878
|
[1024 ** 3, "unit.gb"],
|
|
879
879
|
[1024 ** 2, "unit.mb"],
|
|
880
880
|
[1024, "unit.kb"],
|
|
881
881
|
[1, "unit.bytes"]
|
|
882
882
|
];
|
|
883
|
-
for (const [d,
|
|
883
|
+
for (const [d, h] of y)
|
|
884
884
|
if (t >= d) {
|
|
885
|
-
const
|
|
886
|
-
return `${
|
|
885
|
+
const $ = t / d;
|
|
886
|
+
return `${$ >= 100 ? Math.round($) : $.toFixed($ >= 10 ? 1 : 2)} ${e(h)}`;
|
|
887
887
|
}
|
|
888
888
|
return `${t} ${e("unit.bytes")}`;
|
|
889
889
|
}
|
|
890
890
|
function c(t) {
|
|
891
891
|
if (t.basename === ".trash") return e("node.trash");
|
|
892
|
-
const
|
|
893
|
-
return
|
|
892
|
+
const y = t.basename.match(/^\d{8}-\d{6}-[A-Za-z0-9]+__(.+)$/);
|
|
893
|
+
return y ? y[1] : t.basename;
|
|
894
894
|
}
|
|
895
895
|
return { t: e, formatSize: i, nodeDisplayName: c };
|
|
896
896
|
}
|
|
897
897
|
const fn = 2e3, pn = 8e3;
|
|
898
898
|
function na(s) {
|
|
899
899
|
const r = (...d) => {
|
|
900
|
-
for (const
|
|
900
|
+
for (const h of d) if (typeof h == "number") return h;
|
|
901
901
|
return 0;
|
|
902
902
|
}, e = (...d) => {
|
|
903
|
-
for (const
|
|
903
|
+
for (const h of d) if (typeof h == "string" && h !== "") return h;
|
|
904
904
|
return null;
|
|
905
|
-
}, i = String(s.status ?? "pending"), c = i === "ok" || i === "done" ? "done" : i === "failed" || i === "partial" || i === "error" ? "error" : i === "running" ? "running" : "pending", t = Array.isArray(s.sources) ? s.sources : [],
|
|
905
|
+
}, i = String(s.status ?? "pending"), c = i === "ok" || i === "done" ? "done" : i === "failed" || i === "partial" || i === "error" ? "error" : i === "running" ? "running" : "pending", t = Array.isArray(s.sources) ? s.sources : [], y = e(s.op_type, s.kind) ?? "delete";
|
|
906
906
|
return {
|
|
907
907
|
id: r(s.id),
|
|
908
|
-
op_type:
|
|
908
|
+
op_type: y === "copy" || y === "move" ? y : "delete",
|
|
909
909
|
status: c,
|
|
910
910
|
progress_total: r(s.progress_total, s.total, t.length),
|
|
911
911
|
progress_done: r(s.progress_done, s.done),
|
|
@@ -920,55 +920,55 @@ function na(s) {
|
|
|
920
920
|
}
|
|
921
921
|
function vn(s, r, e = {}) {
|
|
922
922
|
const i = b([]), c = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Map();
|
|
923
|
-
let
|
|
923
|
+
let y = !1;
|
|
924
924
|
const d = ee(
|
|
925
|
-
() => i.value.some((
|
|
925
|
+
() => i.value.some((T) => T.status === "pending" || T.status === "running")
|
|
926
926
|
);
|
|
927
|
-
let
|
|
928
|
-
function
|
|
929
|
-
|
|
927
|
+
let h;
|
|
928
|
+
function $() {
|
|
929
|
+
h || r.endpoints.opsList && (h = setInterval(() => {
|
|
930
930
|
j();
|
|
931
931
|
}, fn), j());
|
|
932
932
|
}
|
|
933
|
-
function
|
|
934
|
-
|
|
933
|
+
function A() {
|
|
934
|
+
h && (clearInterval(h), h = void 0);
|
|
935
935
|
}
|
|
936
936
|
async function j() {
|
|
937
|
-
var
|
|
937
|
+
var T;
|
|
938
938
|
if (r.endpoints.opsList)
|
|
939
939
|
try {
|
|
940
940
|
const B = ((await r.jsonFetch(r.endpoints.opsList)).ops || []).map(na);
|
|
941
941
|
for (const k of B)
|
|
942
|
-
(k.status === "done" || k.status === "error") && !c.has(k.id) && (c.add(k.id), t.set(k.id, Date.now()),
|
|
943
|
-
const U = new Set(i.value.map((k) => k.id)),
|
|
944
|
-
|
|
945
|
-
const p = Date.now(),
|
|
942
|
+
(k.status === "done" || k.status === "error") && !c.has(k.id) && (c.add(k.id), t.set(k.id, Date.now()), y && ((T = e.onSettled) == null || T.call(e, k)));
|
|
943
|
+
const U = new Set(i.value.map((k) => k.id)), I = B.filter((k) => k.status === "pending" || k.status === "running" ? !0 : y ? U.has(k.id) : !1), J = new Set(I.map((k) => k.id)), g = i.value.filter((k) => !J.has(k.id)), w = [...I, ...g];
|
|
944
|
+
y = !0;
|
|
945
|
+
const p = Date.now(), S = w.filter((k) => {
|
|
946
946
|
if (k.status === "pending" || k.status === "running") return !0;
|
|
947
947
|
const G = t.get(k.id);
|
|
948
948
|
return G !== void 0 && p - G < pn;
|
|
949
949
|
});
|
|
950
|
-
i.value =
|
|
950
|
+
i.value = S, !d.value && S.length === 0 && A();
|
|
951
951
|
} catch (v) {
|
|
952
952
|
console.warn("[usePendingOps] poll failed:", v);
|
|
953
953
|
}
|
|
954
954
|
}
|
|
955
|
-
function L(
|
|
956
|
-
const v = na(
|
|
957
|
-
i.value.some((U) => U.id === v.id) || (i.value = [v, ...i.value]),
|
|
955
|
+
function L(T) {
|
|
956
|
+
const v = na(T);
|
|
957
|
+
i.value.some((U) => U.id === v.id) || (i.value = [v, ...i.value]), $();
|
|
958
958
|
}
|
|
959
|
-
function
|
|
960
|
-
i.value = i.value.filter((v) => v.id !==
|
|
959
|
+
function O(T) {
|
|
960
|
+
i.value = i.value.filter((v) => v.id !== T), t.delete(T);
|
|
961
961
|
}
|
|
962
962
|
return it(() => {
|
|
963
|
-
|
|
963
|
+
A();
|
|
964
964
|
}), {
|
|
965
965
|
ops: i,
|
|
966
966
|
hasActive: d,
|
|
967
967
|
register: L,
|
|
968
|
-
dismiss:
|
|
968
|
+
dismiss: O,
|
|
969
969
|
poll: j,
|
|
970
|
-
startPolling:
|
|
971
|
-
stopPolling:
|
|
970
|
+
startPolling: $,
|
|
971
|
+
stopPolling: A
|
|
972
972
|
};
|
|
973
973
|
}
|
|
974
974
|
const mn = 25e3, hn = 15e3, yn = 6;
|
|
@@ -1026,15 +1026,15 @@ class bn {
|
|
|
1026
1026
|
var c, t;
|
|
1027
1027
|
this.retries = 0, this.setFallback(!1), (t = (c = this.opts.handlers).onStatus) == null || t.call(c, !0), this.currentPath && this.send({ type: "subscribe", path: this.currentPath }), this.currentFocus !== null && this.send({ type: "focus", file: this.currentFocus }), this.startPing();
|
|
1028
1028
|
}, i.onmessage = (c) => {
|
|
1029
|
-
var d,
|
|
1029
|
+
var d, h, $, A;
|
|
1030
1030
|
let t;
|
|
1031
1031
|
try {
|
|
1032
1032
|
t = JSON.parse(typeof c.data == "string" ? c.data : "");
|
|
1033
1033
|
} catch {
|
|
1034
1034
|
return;
|
|
1035
1035
|
}
|
|
1036
|
-
const
|
|
1037
|
-
(
|
|
1036
|
+
const y = t;
|
|
1037
|
+
(y == null ? void 0 : y.type) === "change" ? (h = (d = this.opts.handlers).onChange) == null || h.call(d, t) : (y == null ? void 0 : y.type) === "presence" && ((A = ($ = this.opts.handlers).onPresence) == null || A.call($, t));
|
|
1038
1038
|
}, i.onerror = () => {
|
|
1039
1039
|
}, i.onclose = () => {
|
|
1040
1040
|
var c, t;
|
|
@@ -1088,25 +1088,25 @@ class bn {
|
|
|
1088
1088
|
const _n = 200, gn = 12e3;
|
|
1089
1089
|
function wn(s, r) {
|
|
1090
1090
|
const e = b([]), i = b(!1);
|
|
1091
|
-
let c = null, t = null,
|
|
1092
|
-
function
|
|
1093
|
-
|
|
1094
|
-
|
|
1091
|
+
let c = null, t = null, y = null, d = null;
|
|
1092
|
+
function h() {
|
|
1093
|
+
y && clearTimeout(y), y = setTimeout(() => {
|
|
1094
|
+
y = null, r.reload();
|
|
1095
1095
|
}, _n);
|
|
1096
1096
|
}
|
|
1097
|
-
function
|
|
1097
|
+
function $(v) {
|
|
1098
1098
|
t && v.path && v.path !== t || (e.value = Array.isArray(v.users) ? v.users : []);
|
|
1099
1099
|
}
|
|
1100
|
-
function
|
|
1100
|
+
function A(v) {
|
|
1101
1101
|
v ? (e.value = [], d || (d = setInterval(() => r.reload(), gn))) : d && (clearInterval(d), d = null);
|
|
1102
1102
|
}
|
|
1103
1103
|
function j() {
|
|
1104
1104
|
c || (c = new bn({
|
|
1105
1105
|
getTicket: () => s.wsTicket(),
|
|
1106
1106
|
handlers: {
|
|
1107
|
-
onChange:
|
|
1108
|
-
onPresence:
|
|
1109
|
-
onFallback:
|
|
1107
|
+
onChange: h,
|
|
1108
|
+
onPresence: $,
|
|
1109
|
+
onFallback: A,
|
|
1110
1110
|
onStatus: (v) => {
|
|
1111
1111
|
i.value = v;
|
|
1112
1112
|
}
|
|
@@ -1116,13 +1116,13 @@ function wn(s, r) {
|
|
|
1116
1116
|
function L(v) {
|
|
1117
1117
|
e.value = [], t = v, c == null || c.subscribe(v);
|
|
1118
1118
|
}
|
|
1119
|
-
function
|
|
1119
|
+
function O(v) {
|
|
1120
1120
|
c == null || c.setFocus(v);
|
|
1121
1121
|
}
|
|
1122
|
-
function
|
|
1123
|
-
|
|
1122
|
+
function T() {
|
|
1123
|
+
y && (clearTimeout(y), y = null), d && (clearInterval(d), d = null), c == null || c.close(), c = null;
|
|
1124
1124
|
}
|
|
1125
|
-
return { presenceUsers: e, connected: i, start: j, subscribe: L, setFocus:
|
|
1125
|
+
return { presenceUsers: e, connected: i, start: j, subscribe: L, setFocus: O, stop: T };
|
|
1126
1126
|
}
|
|
1127
1127
|
let Pt = null, Dt = null, Tt = null, Et = null;
|
|
1128
1128
|
function At() {
|
|
@@ -1161,7 +1161,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1161
1161
|
}, Tn = {
|
|
1162
1162
|
key: 0,
|
|
1163
1163
|
class: "fx-presence-more"
|
|
1164
|
-
}, En = { class: "fx-presence-text" }, Pn = { class: "fx-presence-file" }, Dn = /* @__PURE__ */
|
|
1164
|
+
}, En = { class: "fx-presence-text" }, Pn = { class: "fx-presence-file" }, Dn = /* @__PURE__ */ $e({
|
|
1165
1165
|
__name: "PresenceBar",
|
|
1166
1166
|
props: {
|
|
1167
1167
|
users: {},
|
|
@@ -1169,39 +1169,45 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1169
1169
|
},
|
|
1170
1170
|
setup(s) {
|
|
1171
1171
|
const r = s, e = ee(
|
|
1172
|
-
() => (r.users ?? []).filter((
|
|
1172
|
+
() => (r.users ?? []).filter((d) => r.selfId == null || d.id !== r.selfId)
|
|
1173
1173
|
);
|
|
1174
|
-
function i(
|
|
1175
|
-
|
|
1176
|
-
|
|
1174
|
+
function i(d) {
|
|
1175
|
+
return d.uid ?? String(d.id);
|
|
1176
|
+
}
|
|
1177
|
+
function c(d) {
|
|
1178
|
+
const h = d.trim().split(/\s+/).filter(Boolean);
|
|
1179
|
+
return h.length === 0 ? "?" : h.length === 1 ? h[0].slice(0, 2).toUpperCase() : (h[0][0] + h[h.length - 1][0]).toUpperCase();
|
|
1177
1180
|
}
|
|
1178
|
-
function
|
|
1179
|
-
|
|
1181
|
+
function t(d) {
|
|
1182
|
+
const h = i(d);
|
|
1183
|
+
let $ = 0;
|
|
1184
|
+
for (let A = 0; A < h.length; A++) $ = $ * 31 + h.charCodeAt(A) >>> 0;
|
|
1185
|
+
return $ % 360;
|
|
1180
1186
|
}
|
|
1181
|
-
function
|
|
1182
|
-
return
|
|
1187
|
+
function y(d) {
|
|
1188
|
+
return d.file ? `${d.name} · ${d.file}` : d.name;
|
|
1183
1189
|
}
|
|
1184
|
-
return (
|
|
1190
|
+
return (d, h) => e.value.length ? (l(), f("div", {
|
|
1185
1191
|
key: 0,
|
|
1186
1192
|
class: "fx-presence",
|
|
1187
|
-
title: e.value.map(
|
|
1193
|
+
title: e.value.map(y).join(", ")
|
|
1188
1194
|
}, [
|
|
1189
1195
|
o("div", $n, [
|
|
1190
|
-
(l(!0), f(le, null, Se(e.value.slice(0, 5), (
|
|
1191
|
-
key:
|
|
1196
|
+
(l(!0), f(le, null, Se(e.value.slice(0, 5), ($) => (l(), f("span", {
|
|
1197
|
+
key: i($),
|
|
1192
1198
|
class: "fx-presence-avatar",
|
|
1193
|
-
style: wt({ backgroundColor: `hsl(${
|
|
1194
|
-
title:
|
|
1199
|
+
style: wt({ backgroundColor: `hsl(${t($)} 60% 45%)` }),
|
|
1200
|
+
title: y($)
|
|
1195
1201
|
}, [
|
|
1196
|
-
Pe(u(
|
|
1197
|
-
|
|
1202
|
+
Pe(u(c($.name)) + " ", 1),
|
|
1203
|
+
$.file ? (l(), f("span", Sn)) : H("", !0)
|
|
1198
1204
|
], 12, Cn))), 128)),
|
|
1199
1205
|
e.value.length > 5 ? (l(), f("span", Tn, "+" + u(e.value.length - 5), 1)) : H("", !0)
|
|
1200
1206
|
]),
|
|
1201
1207
|
o("span", En, [
|
|
1202
1208
|
Pe(u(e.value.length === 1 ? e.value[0].name : `${e.value.length} kişi`) + " ", 1),
|
|
1203
1209
|
e.value.length === 1 && e.value[0].file ? (l(), f(le, { key: 0 }, [
|
|
1204
|
-
|
|
1210
|
+
h[0] || (h[0] = Pe(" · ", -1)),
|
|
1205
1211
|
o("span", Pn, u(e.value[0].file), 1)
|
|
1206
1212
|
], 64)) : H("", !0)
|
|
1207
1213
|
])
|
|
@@ -1212,11 +1218,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1212
1218
|
for (const [i, c] of r)
|
|
1213
1219
|
e[i] = c;
|
|
1214
1220
|
return e;
|
|
1215
|
-
}, An = /* @__PURE__ */ bt(Dn, [["__scopeId", "data-v-
|
|
1221
|
+
}, An = /* @__PURE__ */ bt(Dn, [["__scopeId", "data-v-5c353c6c"]]), On = { class: "fe-toolbar" }, In = { class: "fe-toolbar__primary" }, Bn = ["title", "aria-label"], Mn = ["title"], zn = { class: "fe-btn__label" }, Ln = ["disabled", "title", "onClick"], Nn = { class: "fe-icon" }, Un = { class: "fe-btn__label" }, Rn = ["title"], Fn = { class: "fe-btn__label" }, Kn = { class: "fe-toolbar__search-group" }, jn = { class: "fe-search" }, Hn = ["placeholder", "value"], Vn = ["title"], Yn = ["title"], Wn = {
|
|
1216
1222
|
class: "fe-toolbar__view",
|
|
1217
1223
|
role: "tablist",
|
|
1218
1224
|
"aria-label": "View"
|
|
1219
|
-
}, Gn = ["aria-selected", "title"], Jn = ["aria-selected", "title"], qn = /* @__PURE__ */
|
|
1225
|
+
}, Gn = ["aria-selected", "title"], Jn = ["aria-selected", "title"], qn = /* @__PURE__ */ $e({
|
|
1220
1226
|
__name: "Toolbar",
|
|
1221
1227
|
props: {
|
|
1222
1228
|
viewMode: {},
|
|
@@ -1233,25 +1239,25 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1233
1239
|
},
|
|
1234
1240
|
emits: ["update:viewMode", "update:searchQuery", "new-folder", "upload", "refresh", "go-up", "action", "open-recents"],
|
|
1235
1241
|
setup(s, { expose: r, emit: e }) {
|
|
1236
|
-
const i = s, c = e, { t } = He(() => i.locale),
|
|
1237
|
-
We(() => i.searchQuery, (
|
|
1238
|
-
d.value =
|
|
1242
|
+
const i = s, c = e, { t } = He(() => i.locale), y = b(null), d = b(i.searchQuery);
|
|
1243
|
+
We(() => i.searchQuery, (T) => {
|
|
1244
|
+
d.value = T;
|
|
1239
1245
|
});
|
|
1240
|
-
let
|
|
1241
|
-
function
|
|
1242
|
-
const v =
|
|
1243
|
-
d.value = v,
|
|
1246
|
+
let h;
|
|
1247
|
+
function $(T) {
|
|
1248
|
+
const v = T.target.value;
|
|
1249
|
+
d.value = v, h && clearTimeout(h), h = setTimeout(() => c("update:searchQuery", v), 200);
|
|
1244
1250
|
}
|
|
1245
|
-
function
|
|
1246
|
-
var
|
|
1247
|
-
(
|
|
1251
|
+
function A() {
|
|
1252
|
+
var T, v;
|
|
1253
|
+
(T = y.value) == null || T.focus(), (v = y.value) == null || v.select();
|
|
1248
1254
|
}
|
|
1249
|
-
r({ focusSearch:
|
|
1250
|
-
const j = ee(() => i.selectionMode ?? "none"), L = ee(() => i.actions.filter((
|
|
1251
|
-
function
|
|
1252
|
-
c("action",
|
|
1255
|
+
r({ focusSearch: A });
|
|
1256
|
+
const j = ee(() => i.selectionMode ?? "none"), L = ee(() => i.actions.filter((T) => !T.divider && !T.hidden));
|
|
1257
|
+
function O(T) {
|
|
1258
|
+
c("action", T);
|
|
1253
1259
|
}
|
|
1254
|
-
return (
|
|
1260
|
+
return (T, v) => (l(), f("div", On, [
|
|
1255
1261
|
o("div", In, [
|
|
1256
1262
|
s.canGoUp ? (l(), f("button", {
|
|
1257
1263
|
key: 0,
|
|
@@ -1279,7 +1285,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1279
1285
|
class: he(["fe-btn", { "fe-btn--danger": B.danger, "is-disabled": B.disabled }]),
|
|
1280
1286
|
disabled: B.disabled,
|
|
1281
1287
|
title: B.label,
|
|
1282
|
-
onClick: (U) =>
|
|
1288
|
+
onClick: (U) => O(B.key)
|
|
1283
1289
|
}, [
|
|
1284
1290
|
o("span", Nn, u(B.icon), 1),
|
|
1285
1291
|
o("span", Un, u(B.label), 1)
|
|
@@ -1289,7 +1295,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1289
1295
|
type: "button",
|
|
1290
1296
|
class: "fe-btn",
|
|
1291
1297
|
title: z(t)("ctx.paste"),
|
|
1292
|
-
onClick: v[2] || (v[2] = (B) =>
|
|
1298
|
+
onClick: v[2] || (v[2] = (B) => O("paste"))
|
|
1293
1299
|
}, [
|
|
1294
1300
|
v[9] || (v[9] = o("span", { class: "fe-icon" }, "📋", -1)),
|
|
1295
1301
|
o("span", Fn, u(z(t)("ctx.paste")), 1)
|
|
@@ -1300,13 +1306,13 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1300
1306
|
o("div", jn, [
|
|
1301
1307
|
o("input", {
|
|
1302
1308
|
ref_key: "searchEl",
|
|
1303
|
-
ref:
|
|
1309
|
+
ref: y,
|
|
1304
1310
|
type: "search",
|
|
1305
1311
|
class: "fe-search__input",
|
|
1306
1312
|
placeholder: z(t)("toolbar.search.placeholder"),
|
|
1307
1313
|
value: d.value,
|
|
1308
1314
|
"aria-label": "Search",
|
|
1309
|
-
onInput:
|
|
1315
|
+
onInput: $
|
|
1310
1316
|
}, null, 40, Hn)
|
|
1311
1317
|
]),
|
|
1312
1318
|
!s.atVirtualRoot && s.canWrite !== !1 ? (l(), f("button", {
|
|
@@ -1351,7 +1357,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1351
1357
|
])
|
|
1352
1358
|
]));
|
|
1353
1359
|
}
|
|
1354
|
-
}), Xn = ["onClick"], Qn = /* @__PURE__ */
|
|
1360
|
+
}), Xn = ["onClick"], Qn = /* @__PURE__ */ $e({
|
|
1355
1361
|
__name: "TagPicker",
|
|
1356
1362
|
props: {
|
|
1357
1363
|
nodeId: {},
|
|
@@ -1361,7 +1367,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1361
1367
|
},
|
|
1362
1368
|
emits: ["change", "error"],
|
|
1363
1369
|
setup(s, { emit: r }) {
|
|
1364
|
-
const e = s, i = r, c = b([]), t = b(!1),
|
|
1370
|
+
const e = s, i = r, c = b([]), t = b(!1), y = b(!1), d = b(""), h = ee(() => e.palette ?? [
|
|
1365
1371
|
"#ef4444",
|
|
1366
1372
|
"#f59e0b",
|
|
1367
1373
|
"#10b981",
|
|
@@ -1371,20 +1377,20 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1371
1377
|
"#14b8a6",
|
|
1372
1378
|
"#f97316"
|
|
1373
1379
|
]);
|
|
1374
|
-
function
|
|
1380
|
+
function $(v) {
|
|
1375
1381
|
let B = 0;
|
|
1376
|
-
for (let
|
|
1377
|
-
const U =
|
|
1382
|
+
for (let I = 0; I < v.length; I++) B = B * 31 + v.charCodeAt(I) | 0;
|
|
1383
|
+
const U = h.value;
|
|
1378
1384
|
return U[Math.abs(B) % U.length];
|
|
1379
1385
|
}
|
|
1380
|
-
async function
|
|
1386
|
+
async function A(v = {}) {
|
|
1381
1387
|
return { ...await (e.authHeaders ?? (() => ({})))(), ...v };
|
|
1382
1388
|
}
|
|
1383
1389
|
async function j() {
|
|
1384
1390
|
t.value = !0;
|
|
1385
1391
|
try {
|
|
1386
1392
|
const v = e.apiBase ?? "", B = await fetch(`${v}/api/files/manager/tags?node_id=${e.nodeId}`, {
|
|
1387
|
-
headers: await
|
|
1393
|
+
headers: await A(),
|
|
1388
1394
|
credentials: "include"
|
|
1389
1395
|
});
|
|
1390
1396
|
if (B.ok) {
|
|
@@ -1401,27 +1407,27 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1401
1407
|
const B = [...c.value];
|
|
1402
1408
|
c.value = v;
|
|
1403
1409
|
try {
|
|
1404
|
-
const U = e.apiBase ?? "",
|
|
1410
|
+
const U = e.apiBase ?? "", I = await fetch(`${U}/api/files/manager/tags`, {
|
|
1405
1411
|
method: "POST",
|
|
1406
|
-
headers: await
|
|
1412
|
+
headers: await A({ "Content-Type": "application/json" }),
|
|
1407
1413
|
credentials: "include",
|
|
1408
1414
|
body: JSON.stringify({ node_id: e.nodeId, tags: v })
|
|
1409
1415
|
});
|
|
1410
|
-
if (!
|
|
1416
|
+
if (!I.ok) throw new Error(`tag save failed: ${I.status}`);
|
|
1411
1417
|
i("change", v);
|
|
1412
1418
|
} catch (U) {
|
|
1413
1419
|
c.value = B, i("error", U instanceof Error ? U.message : String(U));
|
|
1414
1420
|
}
|
|
1415
1421
|
}
|
|
1416
|
-
function
|
|
1422
|
+
function O() {
|
|
1417
1423
|
const v = d.value.trim();
|
|
1418
1424
|
if (!v || c.value.includes(v)) {
|
|
1419
|
-
d.value = "",
|
|
1425
|
+
d.value = "", y.value = !1;
|
|
1420
1426
|
return;
|
|
1421
1427
|
}
|
|
1422
|
-
L([...c.value, v]), d.value = "",
|
|
1428
|
+
L([...c.value, v]), d.value = "", y.value = !1;
|
|
1423
1429
|
}
|
|
1424
|
-
function
|
|
1430
|
+
function T(v) {
|
|
1425
1431
|
L(c.value.filter((B) => B !== v));
|
|
1426
1432
|
}
|
|
1427
1433
|
return Qe(j), We(() => e.nodeId, j), (v, B) => (l(), f("div", {
|
|
@@ -1430,28 +1436,28 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1430
1436
|
(l(!0), f(le, null, Se(c.value, (U) => (l(), f("span", {
|
|
1431
1437
|
key: U,
|
|
1432
1438
|
class: "filex-tag",
|
|
1433
|
-
style: wt({ "--filex-tag-color":
|
|
1439
|
+
style: wt({ "--filex-tag-color": $(U) })
|
|
1434
1440
|
}, [
|
|
1435
1441
|
Pe(u(U) + " ", 1),
|
|
1436
1442
|
o("button", {
|
|
1437
1443
|
class: "filex-tag-x",
|
|
1438
1444
|
type: "button",
|
|
1439
|
-
onClick: (
|
|
1445
|
+
onClick: (I) => T(U),
|
|
1440
1446
|
"aria-label": "Remove tag"
|
|
1441
1447
|
}, "×", 8, Xn)
|
|
1442
1448
|
], 4))), 128)),
|
|
1443
|
-
|
|
1449
|
+
y.value ? (l(), f("form", {
|
|
1444
1450
|
key: 0,
|
|
1445
1451
|
class: "filex-tag-add",
|
|
1446
|
-
onSubmit: ke(
|
|
1452
|
+
onSubmit: ke(O, ["prevent"])
|
|
1447
1453
|
}, [
|
|
1448
1454
|
_e(o("input", {
|
|
1449
1455
|
"onUpdate:modelValue": B[0] || (B[0] = (U) => d.value = U),
|
|
1450
1456
|
autofocus: "",
|
|
1451
1457
|
placeholder: "tag name",
|
|
1452
|
-
onBlur:
|
|
1458
|
+
onBlur: O,
|
|
1453
1459
|
onKeydown: B[1] || (B[1] = Ze((U) => {
|
|
1454
|
-
|
|
1460
|
+
y.value = !1, d.value = "";
|
|
1455
1461
|
}, ["escape"]))
|
|
1456
1462
|
}, null, 544), [
|
|
1457
1463
|
[Fe, d.value]
|
|
@@ -1460,7 +1466,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1460
1466
|
key: 1,
|
|
1461
1467
|
class: "filex-tag-add-btn",
|
|
1462
1468
|
type: "button",
|
|
1463
|
-
onClick: B[2] || (B[2] = (U) =>
|
|
1469
|
+
onClick: B[2] || (B[2] = (U) => y.value = !0)
|
|
1464
1470
|
}, "+ Add tag"))
|
|
1465
1471
|
], 2));
|
|
1466
1472
|
}
|
|
@@ -1470,7 +1476,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1470
1476
|
}, lo = {
|
|
1471
1477
|
key: 2,
|
|
1472
1478
|
class: "filex-recent-empty"
|
|
1473
|
-
}, io = /* @__PURE__ */
|
|
1479
|
+
}, io = /* @__PURE__ */ $e({
|
|
1474
1480
|
__name: "RecentlyOpened",
|
|
1475
1481
|
props: {
|
|
1476
1482
|
apiBase: {},
|
|
@@ -1481,51 +1487,51 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1481
1487
|
emits: ["open", "error"],
|
|
1482
1488
|
setup(s, { emit: r }) {
|
|
1483
1489
|
const e = s, i = r, c = b([]), t = b(!1);
|
|
1484
|
-
async function
|
|
1490
|
+
async function y() {
|
|
1485
1491
|
t.value = !0;
|
|
1486
1492
|
try {
|
|
1487
|
-
const
|
|
1488
|
-
headers:
|
|
1493
|
+
const h = await (e.authHeaders ?? (() => ({})))(), $ = e.apiBase ?? "", A = e.limit ?? 20, j = await fetch(`${$}/api/files/manager/recent?limit=${A}`, {
|
|
1494
|
+
headers: h,
|
|
1489
1495
|
credentials: "include"
|
|
1490
1496
|
});
|
|
1491
1497
|
if (j.ok) {
|
|
1492
1498
|
const L = await j.json();
|
|
1493
1499
|
c.value = Array.isArray(L.entries) ? L.entries : Array.isArray(L) ? L : [];
|
|
1494
1500
|
}
|
|
1495
|
-
} catch (
|
|
1496
|
-
i("error",
|
|
1501
|
+
} catch (h) {
|
|
1502
|
+
i("error", h instanceof Error ? h.message : String(h));
|
|
1497
1503
|
} finally {
|
|
1498
1504
|
t.value = !1;
|
|
1499
1505
|
}
|
|
1500
1506
|
}
|
|
1501
|
-
function d(
|
|
1502
|
-
if (!
|
|
1503
|
-
const
|
|
1504
|
-
if (Number.isNaN(
|
|
1505
|
-
const
|
|
1506
|
-
return
|
|
1507
|
+
function d(h) {
|
|
1508
|
+
if (!h) return "";
|
|
1509
|
+
const $ = new Date(h).getTime();
|
|
1510
|
+
if (Number.isNaN($)) return "";
|
|
1511
|
+
const A = Date.now() - $;
|
|
1512
|
+
return A < 6e4 ? "just now" : A < 36e5 ? `${Math.floor(A / 6e4)}m ago` : A < 864e5 ? `${Math.floor(A / 36e5)}h ago` : `${Math.floor(A / 864e5)}d ago`;
|
|
1507
1513
|
}
|
|
1508
|
-
return Qe(
|
|
1514
|
+
return Qe(y), We(() => e.refreshKey, y), (h, $) => (l(), f("div", eo, [
|
|
1509
1515
|
o("header", null, [
|
|
1510
|
-
|
|
1516
|
+
$[0] || ($[0] = o("h3", null, "Recently opened", -1)),
|
|
1511
1517
|
o("button", {
|
|
1512
1518
|
class: "filex-recent-refresh",
|
|
1513
1519
|
type: "button",
|
|
1514
|
-
onClick:
|
|
1520
|
+
onClick: y,
|
|
1515
1521
|
disabled: t.value
|
|
1516
1522
|
}, " ↻ ", 8, to)
|
|
1517
1523
|
]),
|
|
1518
1524
|
c.value.length ? (l(), f("ul", ao, [
|
|
1519
|
-
(l(!0), f(le, null, Se(c.value, (
|
|
1520
|
-
key:
|
|
1525
|
+
(l(!0), f(le, null, Se(c.value, (A) => (l(), f("li", {
|
|
1526
|
+
key: A.id
|
|
1521
1527
|
}, [
|
|
1522
1528
|
o("button", {
|
|
1523
1529
|
type: "button",
|
|
1524
|
-
onClick: (j) => i("open",
|
|
1530
|
+
onClick: (j) => i("open", A),
|
|
1525
1531
|
class: "filex-recent-item"
|
|
1526
1532
|
}, [
|
|
1527
|
-
o("span", oo, u(
|
|
1528
|
-
o("span", so, u(d(
|
|
1533
|
+
o("span", oo, u(A.name), 1),
|
|
1534
|
+
o("span", so, u(d(A.last_opened)), 1)
|
|
1529
1535
|
], 8, no)
|
|
1530
1536
|
]))), 128))
|
|
1531
1537
|
])) : t.value ? (l(), f("p", lo, "Loading…")) : (l(), f("p", ro, "Nothing here yet."))
|
|
@@ -1538,7 +1544,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1538
1544
|
key: 0,
|
|
1539
1545
|
class: "fe-breadcrumb__sep",
|
|
1540
1546
|
"aria-hidden": "true"
|
|
1541
|
-
}, vo = ["title", "aria-label"], mo = ["placeholder", "onKeydown"], ho = /* @__PURE__ */
|
|
1547
|
+
}, vo = ["title", "aria-label"], mo = ["placeholder", "onKeydown"], ho = /* @__PURE__ */ $e({
|
|
1542
1548
|
__name: "Breadcrumb",
|
|
1543
1549
|
props: {
|
|
1544
1550
|
dirname: {},
|
|
@@ -1552,108 +1558,108 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1552
1558
|
setup(s, { emit: r }) {
|
|
1553
1559
|
const e = s, i = ee(() => {
|
|
1554
1560
|
if (!e.rootPath) return "";
|
|
1555
|
-
const
|
|
1556
|
-
return (J >= 0 ?
|
|
1561
|
+
const I = e.rootPath, J = I.indexOf("://");
|
|
1562
|
+
return (J >= 0 ? I.slice(J + 3) : I).replace(/^\/+|\/+$/g, "");
|
|
1557
1563
|
}), c = ee(() => {
|
|
1558
|
-
const
|
|
1559
|
-
if (!
|
|
1560
|
-
const J =
|
|
1564
|
+
const I = i.value;
|
|
1565
|
+
if (!I) return e.rootLabel || e.adapter;
|
|
1566
|
+
const J = I.split("/");
|
|
1561
1567
|
return J[J.length - 1] || e.rootLabel || e.adapter;
|
|
1562
|
-
}), { t } = He(() => e.locale),
|
|
1563
|
-
const
|
|
1568
|
+
}), { t } = He(() => e.locale), y = r, d = ee(() => {
|
|
1569
|
+
const I = `${e.adapter}://`, J = e.dirname.startsWith(I) ? e.dirname.slice(I.length) : e.dirname, g = J.split("/").filter(Boolean), w = [];
|
|
1564
1570
|
if (e.rootPath) {
|
|
1565
|
-
const
|
|
1571
|
+
const S = i.value, k = J.replace(/^\/+|\/+$/g, ""), G = S && (k === S || k.startsWith(S + "/")) ? k.slice(S.length).replace(/^\/+/, "") : "";
|
|
1566
1572
|
w.push({ label: c.value, adapterPath: e.rootPath });
|
|
1567
|
-
let W =
|
|
1573
|
+
let W = S;
|
|
1568
1574
|
for (const Z of G.split("/").filter(Boolean))
|
|
1569
|
-
W = W ? `${W}/${Z}` : Z, w.push({ label: Z === ".trash" ? t("node.trash") : Z, adapterPath: `${
|
|
1575
|
+
W = W ? `${W}/${Z}` : Z, w.push({ label: Z === ".trash" ? t("node.trash") : Z, adapterPath: `${I}${W}` });
|
|
1570
1576
|
return w;
|
|
1571
1577
|
}
|
|
1572
|
-
e.multiStorageRoot ? (w.push({ label: "/", adapterPath: "" }), e.adapter && w.push({ label: e.rootLabel || e.adapter, adapterPath:
|
|
1578
|
+
e.multiStorageRoot ? (w.push({ label: "/", adapterPath: "" }), e.adapter && w.push({ label: e.rootLabel || e.adapter, adapterPath: I })) : w.push({
|
|
1573
1579
|
label: e.rootLabel || e.adapter,
|
|
1574
|
-
adapterPath:
|
|
1580
|
+
adapterPath: I
|
|
1575
1581
|
});
|
|
1576
1582
|
let p = "";
|
|
1577
|
-
for (const
|
|
1578
|
-
p = p ? `${p}/${
|
|
1579
|
-
const k =
|
|
1580
|
-
w.push({ label: k, adapterPath: `${
|
|
1583
|
+
for (const S of g) {
|
|
1584
|
+
p = p ? `${p}/${S}` : S;
|
|
1585
|
+
const k = S === ".trash" ? t("node.trash") : S;
|
|
1586
|
+
w.push({ label: k, adapterPath: `${I}${p}` });
|
|
1581
1587
|
}
|
|
1582
1588
|
return w;
|
|
1583
1589
|
});
|
|
1584
|
-
function
|
|
1585
|
-
|
|
1590
|
+
function h(I) {
|
|
1591
|
+
y("navigate", I.adapterPath);
|
|
1586
1592
|
}
|
|
1587
|
-
function
|
|
1588
|
-
|
|
1589
|
-
x:
|
|
1590
|
-
y:
|
|
1593
|
+
function $(I, J) {
|
|
1594
|
+
I.preventDefault(), I.stopPropagation(), y("crumb-context", {
|
|
1595
|
+
x: I.clientX,
|
|
1596
|
+
y: I.clientY,
|
|
1591
1597
|
adapterPath: J.adapterPath,
|
|
1592
1598
|
label: J.label
|
|
1593
1599
|
});
|
|
1594
1600
|
}
|
|
1595
|
-
function I
|
|
1601
|
+
function A(I) {
|
|
1596
1602
|
var J;
|
|
1597
|
-
(J =
|
|
1603
|
+
(J = I.dataTransfer) != null && J.types.includes("application/x-brf-files") && (I.preventDefault(), I.stopPropagation(), I.dataTransfer && (I.dataTransfer.dropEffect = "move"));
|
|
1598
1604
|
}
|
|
1599
|
-
function j(
|
|
1600
|
-
var
|
|
1601
|
-
(
|
|
1605
|
+
function j(I, J) {
|
|
1606
|
+
var g;
|
|
1607
|
+
(g = I.dataTransfer) != null && g.types.includes("application/x-brf-files") && (I.preventDefault(), I.stopPropagation(), y("crumb-drop", J.adapterPath, I));
|
|
1602
1608
|
}
|
|
1603
|
-
const L = b(!1),
|
|
1609
|
+
const L = b(!1), O = b(""), T = b(null);
|
|
1604
1610
|
function v() {
|
|
1605
|
-
const
|
|
1611
|
+
const I = `${e.adapter}://`, J = e.dirname.startsWith(I) ? e.dirname.slice(I.length) : e.dirname;
|
|
1606
1612
|
if (e.rootPath) {
|
|
1607
|
-
const
|
|
1608
|
-
|
|
1609
|
-
var
|
|
1610
|
-
(
|
|
1613
|
+
const g = i.value, w = J.replace(/^\/+|\/+$/g, ""), p = g && (w === g || w.startsWith(g + "/")) ? w.slice(g.length).replace(/^\/+/, "") : "";
|
|
1614
|
+
O.value = p ? `/${p}` : "/", L.value = !0, yt(() => {
|
|
1615
|
+
var S, k;
|
|
1616
|
+
(S = T.value) == null || S.focus(), (k = T.value) == null || k.select();
|
|
1611
1617
|
});
|
|
1612
1618
|
return;
|
|
1613
1619
|
}
|
|
1614
1620
|
if (e.multiStorageRoot)
|
|
1615
1621
|
if (!e.adapter)
|
|
1616
|
-
|
|
1622
|
+
O.value = "/";
|
|
1617
1623
|
else {
|
|
1618
|
-
const
|
|
1619
|
-
|
|
1624
|
+
const g = J.replace(/^\/+|\/+$/g, "");
|
|
1625
|
+
O.value = g ? `/${e.adapter}/${g}` : `/${e.adapter}`;
|
|
1620
1626
|
}
|
|
1621
1627
|
else
|
|
1622
|
-
|
|
1628
|
+
O.value = J;
|
|
1623
1629
|
L.value = !0, yt(() => {
|
|
1624
|
-
var
|
|
1625
|
-
(
|
|
1630
|
+
var g, w;
|
|
1631
|
+
(g = T.value) == null || g.focus(), (w = T.value) == null || w.select();
|
|
1626
1632
|
});
|
|
1627
1633
|
}
|
|
1628
1634
|
function B() {
|
|
1629
|
-
const
|
|
1635
|
+
const I = O.value.trim();
|
|
1630
1636
|
if (L.value = !1, e.rootPath) {
|
|
1631
|
-
const
|
|
1632
|
-
|
|
1637
|
+
const g = I.replace(/^\/+|\/+$/g, ""), w = i.value, p = g ? w ? `${w}/${g}` : g : w;
|
|
1638
|
+
y("navigate", p ? `${e.adapter}://${p}` : `${e.adapter}://`);
|
|
1633
1639
|
return;
|
|
1634
1640
|
}
|
|
1635
1641
|
if (e.multiStorageRoot) {
|
|
1636
|
-
const
|
|
1637
|
-
if (!
|
|
1638
|
-
|
|
1642
|
+
const g = I.replace(/^\/+|\/+$/g, "");
|
|
1643
|
+
if (!g) {
|
|
1644
|
+
y("navigate", "");
|
|
1639
1645
|
return;
|
|
1640
1646
|
}
|
|
1641
|
-
const w =
|
|
1642
|
-
|
|
1647
|
+
const w = g.indexOf("/"), p = w === -1 ? g : g.slice(0, w), S = w === -1 ? "" : g.slice(w + 1);
|
|
1648
|
+
y("navigate", S ? `${p}://${S}` : `${p}://`);
|
|
1643
1649
|
return;
|
|
1644
1650
|
}
|
|
1645
|
-
const J =
|
|
1646
|
-
J &&
|
|
1651
|
+
const J = I.replace(/^\/+|\/+$/g, "");
|
|
1652
|
+
J && y("navigate", `${e.adapter}://${J}`);
|
|
1647
1653
|
}
|
|
1648
1654
|
function U() {
|
|
1649
1655
|
L.value = !1;
|
|
1650
1656
|
}
|
|
1651
|
-
return (
|
|
1657
|
+
return (I, J) => (l(), f("nav", uo, [
|
|
1652
1658
|
L.value ? _e((l(), f("input", {
|
|
1653
1659
|
key: 1,
|
|
1654
1660
|
ref_key: "pathInput",
|
|
1655
|
-
ref:
|
|
1656
|
-
"onUpdate:modelValue": J[0] || (J[0] = (
|
|
1661
|
+
ref: T,
|
|
1662
|
+
"onUpdate:modelValue": J[0] || (J[0] = (g) => O.value = g),
|
|
1657
1663
|
type: "text",
|
|
1658
1664
|
class: "fe-breadcrumb__input",
|
|
1659
1665
|
placeholder: z(t)("breadcrumb.path_placeholder"),
|
|
@@ -1665,19 +1671,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1665
1671
|
],
|
|
1666
1672
|
onBlur: U
|
|
1667
1673
|
}, null, 40, mo)), [
|
|
1668
|
-
[Fe,
|
|
1674
|
+
[Fe, O.value]
|
|
1669
1675
|
]) : (l(), f(le, { key: 0 }, [
|
|
1670
|
-
(l(!0), f(le, null, Se(d.value, (
|
|
1671
|
-
key:
|
|
1676
|
+
(l(!0), f(le, null, Se(d.value, (g, w) => (l(), f("button", {
|
|
1677
|
+
key: g.adapterPath,
|
|
1672
1678
|
class: he(["fe-breadcrumb__crumb", { "is-last": w === d.value.length - 1 }]),
|
|
1673
1679
|
type: "button",
|
|
1674
1680
|
"aria-current": w === d.value.length - 1 ? "page" : void 0,
|
|
1675
|
-
onClick: (p) =>
|
|
1676
|
-
onContextmenu: (p) =>
|
|
1677
|
-
onDragover:
|
|
1678
|
-
onDrop: (p) => j(p,
|
|
1681
|
+
onClick: (p) => h(g),
|
|
1682
|
+
onContextmenu: (p) => $(p, g),
|
|
1683
|
+
onDragover: A,
|
|
1684
|
+
onDrop: (p) => j(p, g)
|
|
1679
1685
|
}, [
|
|
1680
|
-
o("span", null, u(
|
|
1686
|
+
o("span", null, u(g.label), 1),
|
|
1681
1687
|
w < d.value.length - 1 ? (l(), f("span", po, "›")) : H("", !0)
|
|
1682
1688
|
], 42, fo))), 128)),
|
|
1683
1689
|
o("button", {
|
|
@@ -1698,7 +1704,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1698
1704
|
}, _o = ["fill"], go = {
|
|
1699
1705
|
key: 0,
|
|
1700
1706
|
class: "filex-star-label"
|
|
1701
|
-
}, wo = /* @__PURE__ */
|
|
1707
|
+
}, wo = /* @__PURE__ */ $e({
|
|
1702
1708
|
__name: "StarButton",
|
|
1703
1709
|
props: {
|
|
1704
1710
|
starred: { type: Boolean },
|
|
@@ -1710,29 +1716,29 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1710
1716
|
emits: ["change", "error"],
|
|
1711
1717
|
setup(s, { emit: r }) {
|
|
1712
1718
|
const e = s, i = r, c = b(e.starred);
|
|
1713
|
-
We(() => e.starred, (
|
|
1714
|
-
c.value =
|
|
1719
|
+
We(() => e.starred, (y) => {
|
|
1720
|
+
c.value = y;
|
|
1715
1721
|
});
|
|
1716
1722
|
async function t() {
|
|
1717
|
-
const
|
|
1718
|
-
c.value =
|
|
1723
|
+
const y = !c.value;
|
|
1724
|
+
c.value = y;
|
|
1719
1725
|
try {
|
|
1720
1726
|
const d = {
|
|
1721
1727
|
"Content-Type": "application/json",
|
|
1722
1728
|
...await (e.authHeaders ?? (() => ({})))()
|
|
1723
|
-
},
|
|
1729
|
+
}, h = e.apiBase ?? "", $ = await fetch(`${h}/api/files/manager/star`, {
|
|
1724
1730
|
method: "POST",
|
|
1725
1731
|
headers: d,
|
|
1726
1732
|
credentials: "include",
|
|
1727
|
-
body: JSON.stringify({ node_id: e.nodeId, starred:
|
|
1733
|
+
body: JSON.stringify({ node_id: e.nodeId, starred: y })
|
|
1728
1734
|
});
|
|
1729
|
-
if (
|
|
1730
|
-
i("change",
|
|
1735
|
+
if (!$.ok) throw new Error(`star toggle failed: ${$.status}`);
|
|
1736
|
+
i("change", y);
|
|
1731
1737
|
} catch (d) {
|
|
1732
|
-
c.value = !
|
|
1738
|
+
c.value = !y, i("error", d instanceof Error ? d.message : String(d));
|
|
1733
1739
|
}
|
|
1734
1740
|
}
|
|
1735
|
-
return (
|
|
1741
|
+
return (y, d) => (l(), f("button", {
|
|
1736
1742
|
type: "button",
|
|
1737
1743
|
class: he(["filex-star-btn", { "is-starred": c.value, "is-compact": s.compact }]),
|
|
1738
1744
|
"aria-pressed": c.value,
|
|
@@ -1772,7 +1778,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1772
1778
|
}, Ao = { class: "fe-list__name-wrap" }, Oo = ["title"], Io = ["title"], Bo = { class: "fe-list__col fe-list__col--size" }, Mo = { class: "fe-list__col fe-list__col--mod" }, zo = {
|
|
1773
1779
|
key: 0,
|
|
1774
1780
|
class: "fe-list__empty"
|
|
1775
|
-
}, Lo = /* @__PURE__ */
|
|
1781
|
+
}, Lo = /* @__PURE__ */ $e({
|
|
1776
1782
|
__name: "ListView",
|
|
1777
1783
|
props: {
|
|
1778
1784
|
files: {},
|
|
@@ -1787,35 +1793,35 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1787
1793
|
},
|
|
1788
1794
|
emits: ["click-row", "dbl-row", "context-row", "item-drag-start", "item-drop-into", "star-change"],
|
|
1789
1795
|
setup(s, { emit: r }) {
|
|
1790
|
-
const e = s, i = r, { t: c, formatSize: t, nodeDisplayName:
|
|
1796
|
+
const e = s, i = r, { t: c, formatSize: t, nodeDisplayName: y } = He(() => e.locale);
|
|
1791
1797
|
function d(p) {
|
|
1792
1798
|
return e.selected.has(p.path);
|
|
1793
1799
|
}
|
|
1794
|
-
function
|
|
1795
|
-
i("click-row", p, { ctrl:
|
|
1800
|
+
function h(p, S) {
|
|
1801
|
+
i("click-row", p, { ctrl: S.ctrlKey || S.metaKey, shift: S.shiftKey });
|
|
1796
1802
|
}
|
|
1797
|
-
function
|
|
1803
|
+
function $(p) {
|
|
1798
1804
|
i("dbl-row", p);
|
|
1799
1805
|
}
|
|
1800
|
-
function
|
|
1801
|
-
|
|
1806
|
+
function A(p, S) {
|
|
1807
|
+
S.preventDefault(), S.stopPropagation(), i("context-row", p, S);
|
|
1802
1808
|
}
|
|
1803
|
-
function j(p,
|
|
1804
|
-
i("item-drag-start", p,
|
|
1809
|
+
function j(p, S) {
|
|
1810
|
+
i("item-drag-start", p, S);
|
|
1805
1811
|
}
|
|
1806
|
-
function L(p,
|
|
1812
|
+
function L(p, S) {
|
|
1807
1813
|
var k;
|
|
1808
|
-
p.type === "dir" && (k =
|
|
1814
|
+
p.type === "dir" && (k = S.dataTransfer) != null && k.types.includes("application/x-brf-files") && (S.preventDefault(), S.stopPropagation(), S.dataTransfer && (S.dataTransfer.dropEffect = "move"));
|
|
1809
1815
|
}
|
|
1810
|
-
function
|
|
1816
|
+
function O(p, S) {
|
|
1811
1817
|
var k;
|
|
1812
|
-
p.type === "dir" && (k =
|
|
1818
|
+
p.type === "dir" && (k = S.dataTransfer) != null && k.types.includes("application/x-brf-files") && (S.preventDefault(), S.stopPropagation(), i("item-drop-into", p, S));
|
|
1813
1819
|
}
|
|
1814
|
-
let
|
|
1815
|
-
function B(p,
|
|
1816
|
-
v = p,
|
|
1820
|
+
let T, v = null;
|
|
1821
|
+
function B(p, S) {
|
|
1822
|
+
v = p, T && clearTimeout(T), T = setTimeout(() => {
|
|
1817
1823
|
if (v) {
|
|
1818
|
-
const k =
|
|
1824
|
+
const k = S.touches[0];
|
|
1819
1825
|
i("context-row", v, {
|
|
1820
1826
|
clientX: k.clientX,
|
|
1821
1827
|
clientY: k.clientY,
|
|
@@ -1826,28 +1832,28 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1826
1832
|
}, 500);
|
|
1827
1833
|
}
|
|
1828
1834
|
function U() {
|
|
1829
|
-
|
|
1835
|
+
T && clearTimeout(T), v = null;
|
|
1830
1836
|
}
|
|
1831
|
-
function
|
|
1837
|
+
function I(p) {
|
|
1832
1838
|
if (p.basename === ".trash") return "🗑";
|
|
1833
1839
|
if (p.mime_type === "inode/storage") return "💾";
|
|
1834
1840
|
if (p.type === "dir") return "📁";
|
|
1835
|
-
const
|
|
1836
|
-
return ["jpg", "jpeg", "png", "webp", "gif", "bmp", "avif", "heic", "svg"].includes(
|
|
1841
|
+
const S = (p.extension || "").toLowerCase();
|
|
1842
|
+
return ["jpg", "jpeg", "png", "webp", "gif", "bmp", "avif", "heic", "svg"].includes(S) ? "🖼" : ["mp4", "webm", "mov", "mkv", "avi", "ogv", "m4v"].includes(S) ? "🎞" : ["mp3", "wav", "flac", "ogg", "m4a", "aac", "opus"].includes(S) ? "🎵" : S === "pdf" ? "📕" : ["doc", "docx", "odt", "rtf"].includes(S) ? "📄" : ["xls", "xlsx", "ods", "csv"].includes(S) ? "📊" : ["ppt", "pptx", "odp"].includes(S) ? "📽" : ["zip", "tar", "gz", "bz2", "7z", "rar"].includes(S) ? "🗜" : ["txt", "md", "log", "json", "yml", "yaml", "xml"].includes(S) ? "📝" : "📎";
|
|
1837
1843
|
}
|
|
1838
1844
|
function J(p) {
|
|
1839
1845
|
return p ? new Date(p * (p < 1e12 ? 1e3 : 1)).toLocaleString() : "—";
|
|
1840
1846
|
}
|
|
1841
|
-
function
|
|
1842
|
-
const
|
|
1843
|
-
return k === -1 ? "" :
|
|
1847
|
+
function g(p) {
|
|
1848
|
+
const S = p.replace(/^[a-z][a-z0-9+.-]*:\/\//i, ""), k = S.lastIndexOf("/");
|
|
1849
|
+
return k === -1 ? "" : S.slice(0, k);
|
|
1844
1850
|
}
|
|
1845
1851
|
const w = ee(() => e.files);
|
|
1846
|
-
return (p,
|
|
1852
|
+
return (p, S) => (l(), f("div", {
|
|
1847
1853
|
class: he(["fe-list", { "is-loading": s.loading, "has-star-col": !!s.apiBase || s.apiBase === "" }])
|
|
1848
1854
|
}, [
|
|
1849
1855
|
o("div", xo, [
|
|
1850
|
-
|
|
1856
|
+
S[1] || (S[1] = o("div", {
|
|
1851
1857
|
class: "fe-list__col fe-list__col--star",
|
|
1852
1858
|
role: "columnheader",
|
|
1853
1859
|
"aria-label": "Star"
|
|
@@ -1870,19 +1876,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1870
1876
|
role: "row",
|
|
1871
1877
|
tabindex: "0",
|
|
1872
1878
|
draggable: "true",
|
|
1873
|
-
onClick: (Z) =>
|
|
1874
|
-
onDblclick: (Z) =>
|
|
1875
|
-
onContextmenu: (Z) =>
|
|
1879
|
+
onClick: (Z) => h(k, Z),
|
|
1880
|
+
onDblclick: (Z) => $(k),
|
|
1881
|
+
onContextmenu: (Z) => A(k, Z),
|
|
1876
1882
|
onDragstart: (Z) => j(k, Z),
|
|
1877
1883
|
onDragover: (Z) => L(k, Z),
|
|
1878
|
-
onDrop: (Z) =>
|
|
1884
|
+
onDrop: (Z) => O(k, Z),
|
|
1879
1885
|
onTouchstartPassive: (Z) => B(k, Z),
|
|
1880
1886
|
onTouchend: U,
|
|
1881
1887
|
onTouchmove: U
|
|
1882
1888
|
}, [
|
|
1883
1889
|
o("div", {
|
|
1884
1890
|
class: "fe-list__col fe-list__col--star",
|
|
1885
|
-
onClick:
|
|
1891
|
+
onClick: S[0] || (S[0] = ke(() => {
|
|
1886
1892
|
}, ["stop"]))
|
|
1887
1893
|
}, [
|
|
1888
1894
|
typeof k.id == "number" && k.type === "file" ? (l(), Ne(ko, {
|
|
@@ -1896,17 +1902,17 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1896
1902
|
}, null, 8, ["starred", "node-id", "api-base", "auth-headers", "onChange"])) : H("", !0)
|
|
1897
1903
|
]),
|
|
1898
1904
|
o("div", Po, [
|
|
1899
|
-
o("span", Do, u(
|
|
1905
|
+
o("span", Do, u(I(k)), 1),
|
|
1900
1906
|
o("div", Ao, [
|
|
1901
1907
|
o("span", {
|
|
1902
1908
|
class: "fe-list__name",
|
|
1903
1909
|
title: k.basename
|
|
1904
|
-
}, u(z(
|
|
1910
|
+
}, u(z(y)(k)), 9, Oo),
|
|
1905
1911
|
s.showParentPath ? (l(), f("span", {
|
|
1906
1912
|
key: 0,
|
|
1907
1913
|
class: "fe-list__parent",
|
|
1908
|
-
title:
|
|
1909
|
-
}, u(
|
|
1914
|
+
title: g(k.path)
|
|
1915
|
+
}, u(g(k.path) || "—"), 9, Io)) : H("", !0)
|
|
1910
1916
|
])
|
|
1911
1917
|
]),
|
|
1912
1918
|
o("div", Bo, u(z(t)(k.size)), 1),
|
|
@@ -1923,7 +1929,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1923
1929
|
}, Ko = ["title"], jo = ["title"], Ho = { class: "fe-grid__meta" }, Vo = {
|
|
1924
1930
|
key: 0,
|
|
1925
1931
|
class: "fe-grid__empty"
|
|
1926
|
-
}, Yo = /* @__PURE__ */
|
|
1932
|
+
}, Yo = /* @__PURE__ */ $e({
|
|
1927
1933
|
__name: "GridView",
|
|
1928
1934
|
props: {
|
|
1929
1935
|
files: {},
|
|
@@ -1935,33 +1941,33 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1935
1941
|
},
|
|
1936
1942
|
emits: ["click-card", "dbl-card", "context-card", "item-drag-start", "item-drop-into"],
|
|
1937
1943
|
setup(s, { emit: r }) {
|
|
1938
|
-
const e = s, i = r, { t: c, formatSize: t, nodeDisplayName:
|
|
1939
|
-
function d(
|
|
1940
|
-
return e.selected.has(
|
|
1944
|
+
const e = s, i = r, { t: c, formatSize: t, nodeDisplayName: y } = He(() => e.locale);
|
|
1945
|
+
function d(g) {
|
|
1946
|
+
return e.selected.has(g.path);
|
|
1941
1947
|
}
|
|
1942
|
-
function
|
|
1943
|
-
i("click-card",
|
|
1948
|
+
function h(g, w) {
|
|
1949
|
+
i("click-card", g, { ctrl: w.ctrlKey || w.metaKey, shift: w.shiftKey });
|
|
1944
1950
|
}
|
|
1945
|
-
function
|
|
1946
|
-
i("dbl-card",
|
|
1951
|
+
function $(g) {
|
|
1952
|
+
i("dbl-card", g);
|
|
1947
1953
|
}
|
|
1948
|
-
function
|
|
1949
|
-
w.preventDefault(), w.stopPropagation(), i("context-card",
|
|
1954
|
+
function A(g, w) {
|
|
1955
|
+
w.preventDefault(), w.stopPropagation(), i("context-card", g, w);
|
|
1950
1956
|
}
|
|
1951
|
-
function j(
|
|
1952
|
-
i("item-drag-start",
|
|
1957
|
+
function j(g, w) {
|
|
1958
|
+
i("item-drag-start", g, w);
|
|
1953
1959
|
}
|
|
1954
|
-
function L(
|
|
1960
|
+
function L(g, w) {
|
|
1955
1961
|
var p;
|
|
1956
|
-
|
|
1962
|
+
g.type === "dir" && (p = w.dataTransfer) != null && p.types.includes("application/x-brf-files") && (w.preventDefault(), w.stopPropagation(), w.dataTransfer && (w.dataTransfer.dropEffect = "move"));
|
|
1957
1963
|
}
|
|
1958
|
-
function
|
|
1964
|
+
function O(g, w) {
|
|
1959
1965
|
var p;
|
|
1960
|
-
|
|
1966
|
+
g.type === "dir" && (p = w.dataTransfer) != null && p.types.includes("application/x-brf-files") && (w.preventDefault(), w.stopPropagation(), i("item-drop-into", g, w));
|
|
1961
1967
|
}
|
|
1962
|
-
let
|
|
1963
|
-
function B(
|
|
1964
|
-
v =
|
|
1968
|
+
let T, v = null;
|
|
1969
|
+
function B(g, w) {
|
|
1970
|
+
v = g, T && clearTimeout(T), T = setTimeout(() => {
|
|
1965
1971
|
if (v) {
|
|
1966
1972
|
const p = w.touches[0];
|
|
1967
1973
|
i("context-card", v, {
|
|
@@ -1974,40 +1980,40 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
1974
1980
|
}, 500);
|
|
1975
1981
|
}
|
|
1976
1982
|
function U() {
|
|
1977
|
-
|
|
1983
|
+
T && clearTimeout(T), v = null;
|
|
1978
1984
|
}
|
|
1979
|
-
function
|
|
1980
|
-
const w =
|
|
1985
|
+
function I(g) {
|
|
1986
|
+
const w = g.replace(/^[a-z][a-z0-9+.-]*:\/\//i, ""), p = w.lastIndexOf("/");
|
|
1981
1987
|
return p === -1 ? "" : w.slice(0, p);
|
|
1982
1988
|
}
|
|
1983
|
-
function J(
|
|
1984
|
-
if (
|
|
1985
|
-
if (
|
|
1986
|
-
if (
|
|
1987
|
-
const w = (
|
|
1989
|
+
function J(g) {
|
|
1990
|
+
if (g.basename === ".trash") return "🗑";
|
|
1991
|
+
if (g.mime_type === "inode/storage") return "💾";
|
|
1992
|
+
if (g.type === "dir") return "📁";
|
|
1993
|
+
const w = (g.extension || "").toLowerCase();
|
|
1988
1994
|
return ["jpg", "jpeg", "png", "webp", "gif", "bmp", "svg"].includes(w) ? "🖼" : ["mp4", "webm", "mov", "mkv"].includes(w) ? "🎞" : ["mp3", "wav", "flac", "ogg"].includes(w) ? "🎵" : w === "pdf" ? "📕" : ["doc", "docx", "odt"].includes(w) ? "📄" : ["xls", "xlsx", "csv"].includes(w) ? "📊" : ["ppt", "pptx"].includes(w) ? "📽" : ["zip", "tar", "gz", "7z"].includes(w) ? "🗜" : "📎";
|
|
1989
1995
|
}
|
|
1990
|
-
return (
|
|
1996
|
+
return (g, w) => (l(), f("div", {
|
|
1991
1997
|
class: he(["fe-grid", { "is-loading": s.loading }])
|
|
1992
1998
|
}, [
|
|
1993
1999
|
(l(!0), f(le, null, Se(s.files, (p) => {
|
|
1994
|
-
var
|
|
2000
|
+
var S;
|
|
1995
2001
|
return l(), f("div", {
|
|
1996
2002
|
key: p.path,
|
|
1997
2003
|
class: he(["fe-grid__card", {
|
|
1998
2004
|
"is-selected": d(p),
|
|
1999
2005
|
"is-dir": p.type === "dir",
|
|
2000
2006
|
"is-trash": p.trashed,
|
|
2001
|
-
"is-clipped": (
|
|
2007
|
+
"is-clipped": (S = s.clipped) == null ? void 0 : S.has(p.path)
|
|
2002
2008
|
}]),
|
|
2003
2009
|
tabindex: "0",
|
|
2004
2010
|
draggable: "true",
|
|
2005
|
-
onClick: (k) =>
|
|
2006
|
-
onDblclick: (k) =>
|
|
2007
|
-
onContextmenu: (k) =>
|
|
2011
|
+
onClick: (k) => h(p, k),
|
|
2012
|
+
onDblclick: (k) => $(p),
|
|
2013
|
+
onContextmenu: (k) => A(p, k),
|
|
2008
2014
|
onDragstart: (k) => j(p, k),
|
|
2009
2015
|
onDragover: (k) => L(p, k),
|
|
2010
|
-
onDrop: (k) =>
|
|
2016
|
+
onDrop: (k) => O(p, k),
|
|
2011
2017
|
onTouchstartPassive: (k) => B(p, k),
|
|
2012
2018
|
onTouchend: U,
|
|
2013
2019
|
onTouchmove: U
|
|
@@ -2024,12 +2030,12 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2024
2030
|
o("div", {
|
|
2025
2031
|
class: "fe-grid__label",
|
|
2026
2032
|
title: p.basename
|
|
2027
|
-
}, u(z(
|
|
2033
|
+
}, u(z(y)(p)), 9, Ko),
|
|
2028
2034
|
s.showParentPath ? (l(), f("div", {
|
|
2029
2035
|
key: 0,
|
|
2030
2036
|
class: "fe-grid__parent",
|
|
2031
|
-
title:
|
|
2032
|
-
}, u(
|
|
2037
|
+
title: I(p.path)
|
|
2038
|
+
}, u(I(p.path) || "—"), 9, jo)) : H("", !0),
|
|
2033
2039
|
o("div", Ho, u(z(t)(p.size)), 1)
|
|
2034
2040
|
], 42, No);
|
|
2035
2041
|
}), 128)),
|
|
@@ -2043,7 +2049,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2043
2049
|
key: 0,
|
|
2044
2050
|
class: "fe-ctx__icon",
|
|
2045
2051
|
"aria-hidden": "true"
|
|
2046
|
-
}, Xo = { class: "fe-ctx__label" }, Qo = /* @__PURE__ */
|
|
2052
|
+
}, Xo = { class: "fe-ctx__label" }, Qo = /* @__PURE__ */ $e({
|
|
2047
2053
|
__name: "ContextMenu",
|
|
2048
2054
|
props: {
|
|
2049
2055
|
locale: {},
|
|
@@ -2054,39 +2060,39 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2054
2060
|
setup(s, { expose: r, emit: e }) {
|
|
2055
2061
|
const i = s, c = e;
|
|
2056
2062
|
He(() => i.locale);
|
|
2057
|
-
const t = b(!1),
|
|
2058
|
-
async function
|
|
2059
|
-
t.value = !0,
|
|
2063
|
+
const t = b(!1), y = b(0), d = b(0), h = b([]), $ = b(null);
|
|
2064
|
+
async function A(g, w) {
|
|
2065
|
+
t.value = !0, y.value = g.clientX, d.value = g.clientY, h.value = w, await yt(), j();
|
|
2060
2066
|
}
|
|
2061
2067
|
function j() {
|
|
2062
|
-
const
|
|
2063
|
-
if (!
|
|
2064
|
-
const w =
|
|
2065
|
-
d.value + w.height > k - p && (d.value = Math.max(p, k - w.height - p)),
|
|
2068
|
+
const g = $.value;
|
|
2069
|
+
if (!g || typeof window > "u") return;
|
|
2070
|
+
const w = g.getBoundingClientRect(), p = 8, S = window.innerWidth, k = window.innerHeight;
|
|
2071
|
+
d.value + w.height > k - p && (d.value = Math.max(p, k - w.height - p)), y.value + w.width > S - p && (y.value = Math.max(p, S - w.width - p));
|
|
2066
2072
|
}
|
|
2067
2073
|
function L() {
|
|
2068
2074
|
t.value = !1;
|
|
2069
2075
|
}
|
|
2070
|
-
function
|
|
2071
|
-
|
|
2076
|
+
function O(g) {
|
|
2077
|
+
g.disabled || (c("select", g, h.value), L());
|
|
2072
2078
|
}
|
|
2073
|
-
function
|
|
2074
|
-
|
|
2079
|
+
function T(g) {
|
|
2080
|
+
g.key === "Escape" && L();
|
|
2075
2081
|
}
|
|
2076
|
-
const v = ee(() => i.actions.filter((
|
|
2082
|
+
const v = ee(() => i.actions.filter((g) => !g.hidden)), B = b(!1);
|
|
2077
2083
|
let U;
|
|
2078
|
-
function
|
|
2079
|
-
B.value = !!(
|
|
2084
|
+
function I(g) {
|
|
2085
|
+
B.value = !!(g && "matches" in g && g.matches);
|
|
2080
2086
|
}
|
|
2081
2087
|
Qe(() => {
|
|
2082
|
-
var
|
|
2083
|
-
typeof window > "u" || (U = window.matchMedia("(prefers-color-scheme: dark)"),
|
|
2088
|
+
var g;
|
|
2089
|
+
typeof window > "u" || (U = window.matchMedia("(prefers-color-scheme: dark)"), I(U), (g = U.addEventListener) == null || g.call(U, "change", I));
|
|
2084
2090
|
}), it(() => {
|
|
2085
|
-
var
|
|
2086
|
-
(
|
|
2091
|
+
var g;
|
|
2092
|
+
(g = U == null ? void 0 : U.removeEventListener) == null || g.call(U, "change", I);
|
|
2087
2093
|
});
|
|
2088
2094
|
const J = ee(() => `fe-ctx-backdrop--theme-${i.theme || "auto"}`);
|
|
2089
|
-
return r({ show:
|
|
2095
|
+
return r({ show: A, hide: L }), (g, w) => (l(), Ne(qa, { to: "body" }, [
|
|
2090
2096
|
Ae(ht, { name: "fe-ctx" }, {
|
|
2091
2097
|
default: Oe(() => [
|
|
2092
2098
|
t.value ? (l(), f("div", {
|
|
@@ -2095,19 +2101,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2095
2101
|
"data-prefers-dark": B.value ? "1" : "0",
|
|
2096
2102
|
onClick: L,
|
|
2097
2103
|
onContextmenu: ke(L, ["prevent"]),
|
|
2098
|
-
onKeydown:
|
|
2104
|
+
onKeydown: T
|
|
2099
2105
|
}, [
|
|
2100
2106
|
o("div", {
|
|
2101
2107
|
ref_key: "menuEl",
|
|
2102
|
-
ref:
|
|
2108
|
+
ref: $,
|
|
2103
2109
|
class: "fe-ctx",
|
|
2104
2110
|
role: "menu",
|
|
2105
|
-
style: wt({ top: d.value + "px", left:
|
|
2111
|
+
style: wt({ top: d.value + "px", left: y.value + "px" }),
|
|
2106
2112
|
onClick: w[0] || (w[0] = ke(() => {
|
|
2107
2113
|
}, ["stop"]))
|
|
2108
2114
|
}, [
|
|
2109
|
-
(l(!0), f(le, null, Se(v.value, (p,
|
|
2110
|
-
key: p.key ||
|
|
2115
|
+
(l(!0), f(le, null, Se(v.value, (p, S) => (l(), f(le, {
|
|
2116
|
+
key: p.key || S
|
|
2111
2117
|
}, [
|
|
2112
2118
|
p.divider ? (l(), f("div", Go)) : (l(), f("button", {
|
|
2113
2119
|
key: 1,
|
|
@@ -2115,7 +2121,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2115
2121
|
class: he(["fe-ctx__item", { "is-danger": p.danger, "is-disabled": p.disabled }]),
|
|
2116
2122
|
disabled: p.disabled,
|
|
2117
2123
|
role: "menuitem",
|
|
2118
|
-
onClick: (k) =>
|
|
2124
|
+
onClick: (k) => O(p)
|
|
2119
2125
|
}, [
|
|
2120
2126
|
p.icon ? (l(), f("span", qo, u(p.icon), 1)) : H("", !0),
|
|
2121
2127
|
o("span", Xo, u(p.label), 1)
|
|
@@ -2131,7 +2137,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2131
2137
|
}), Zo = {
|
|
2132
2138
|
key: 0,
|
|
2133
2139
|
class: "fe-upload"
|
|
2134
|
-
}, es = { class: "fe-upload__header" }, ts = { class: "fe-upload__count" }, as = { class: "fe-upload__list" }, ns = ["title"], os = ["aria-valuenow"], ss = { class: "fe-upload__meta" }, rs = ["onClick"], ls = ["onClick"], is = /* @__PURE__ */
|
|
2140
|
+
}, es = { class: "fe-upload__header" }, ts = { class: "fe-upload__count" }, as = { class: "fe-upload__list" }, ns = ["title"], os = ["aria-valuenow"], ss = { class: "fe-upload__meta" }, rs = ["onClick"], ls = ["onClick"], is = /* @__PURE__ */ $e({
|
|
2135
2141
|
__name: "UploadProgress",
|
|
2136
2142
|
props: {
|
|
2137
2143
|
jobs: {},
|
|
@@ -2139,58 +2145,58 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2139
2145
|
},
|
|
2140
2146
|
emits: ["cancel", "dismiss"],
|
|
2141
2147
|
setup(s, { emit: r }) {
|
|
2142
|
-
const e = s, i = r, { t: c, formatSize: t } = He(() => e.locale),
|
|
2143
|
-
function d(
|
|
2144
|
-
switch (
|
|
2148
|
+
const e = s, i = r, { t: c, formatSize: t } = He(() => e.locale), y = ee(() => e.jobs);
|
|
2149
|
+
function d(h) {
|
|
2150
|
+
switch (h.status) {
|
|
2145
2151
|
case "done":
|
|
2146
2152
|
return c("upload.done");
|
|
2147
2153
|
case "error":
|
|
2148
|
-
return `${c("upload.error")}: ${
|
|
2154
|
+
return `${c("upload.error")}: ${h.error ?? ""}`;
|
|
2149
2155
|
case "aborted":
|
|
2150
2156
|
return c("upload.aborted");
|
|
2151
2157
|
default:
|
|
2152
2158
|
return c("upload.progress");
|
|
2153
2159
|
}
|
|
2154
2160
|
}
|
|
2155
|
-
return (
|
|
2161
|
+
return (h, $) => (l(), Ne(ht, { name: "fe-upload-slide" }, {
|
|
2156
2162
|
default: Oe(() => [
|
|
2157
|
-
|
|
2163
|
+
y.value.length > 0 ? (l(), f("div", Zo, [
|
|
2158
2164
|
o("div", es, [
|
|
2159
2165
|
o("strong", null, u(z(c)("upload.progress")), 1),
|
|
2160
|
-
o("span", ts, u(
|
|
2166
|
+
o("span", ts, u(y.value.length), 1)
|
|
2161
2167
|
]),
|
|
2162
2168
|
o("ul", as, [
|
|
2163
|
-
(l(!0), f(le, null, Se(
|
|
2164
|
-
key:
|
|
2165
|
-
class: he(["fe-upload__item", `is-${
|
|
2169
|
+
(l(!0), f(le, null, Se(y.value, (A) => (l(), f("li", {
|
|
2170
|
+
key: A.id,
|
|
2171
|
+
class: he(["fe-upload__item", `is-${A.status}`])
|
|
2166
2172
|
}, [
|
|
2167
2173
|
o("div", {
|
|
2168
2174
|
class: "fe-upload__name",
|
|
2169
|
-
title:
|
|
2170
|
-
}, u(
|
|
2175
|
+
title: A.file.name
|
|
2176
|
+
}, u(A.file.name), 9, ns),
|
|
2171
2177
|
o("div", {
|
|
2172
2178
|
class: "fe-upload__bar",
|
|
2173
|
-
"aria-valuenow":
|
|
2179
|
+
"aria-valuenow": A.percent,
|
|
2174
2180
|
role: "progressbar"
|
|
2175
2181
|
}, [
|
|
2176
2182
|
o("div", {
|
|
2177
2183
|
class: "fe-upload__bar-fill",
|
|
2178
|
-
style: wt({ width:
|
|
2184
|
+
style: wt({ width: A.percent + "%" })
|
|
2179
2185
|
}, null, 4)
|
|
2180
2186
|
], 8, os),
|
|
2181
2187
|
o("div", ss, [
|
|
2182
|
-
o("span", null, u(d(
|
|
2183
|
-
o("span", null, u(z(t)(
|
|
2184
|
-
|
|
2188
|
+
o("span", null, u(d(A)), 1),
|
|
2189
|
+
o("span", null, u(z(t)(A.uploadedBytes)) + " / " + u(z(t)(A.totalBytes)), 1),
|
|
2190
|
+
A.status === "uploading" || A.status === "initializing" ? (l(), f("button", {
|
|
2185
2191
|
key: 0,
|
|
2186
2192
|
type: "button",
|
|
2187
2193
|
class: "fe-upload__cancel",
|
|
2188
|
-
onClick: (j) => i("cancel",
|
|
2194
|
+
onClick: (j) => i("cancel", A)
|
|
2189
2195
|
}, u(z(c)("upload.cancel")), 9, rs)) : (l(), f("button", {
|
|
2190
2196
|
key: 1,
|
|
2191
2197
|
type: "button",
|
|
2192
2198
|
class: "fe-upload__cancel",
|
|
2193
|
-
onClick: (j) => i("dismiss",
|
|
2199
|
+
onClick: (j) => i("dismiss", A)
|
|
2194
2200
|
}, "×", 8, ls))
|
|
2195
2201
|
])
|
|
2196
2202
|
], 2))), 128))
|
|
@@ -2203,7 +2209,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2203
2209
|
}), cs = { class: "fe-ops__row" }, us = ["title"], ds = ["onClick"], fs = { class: "fe-ops__bar" }, ps = {
|
|
2204
2210
|
key: 0,
|
|
2205
2211
|
class: "fe-ops__error"
|
|
2206
|
-
}, vs = /* @__PURE__ */
|
|
2212
|
+
}, vs = /* @__PURE__ */ $e({
|
|
2207
2213
|
__name: "PendingOpsTray",
|
|
2208
2214
|
props: {
|
|
2209
2215
|
ops: {},
|
|
@@ -2211,18 +2217,18 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2211
2217
|
},
|
|
2212
2218
|
emits: ["dismiss"],
|
|
2213
2219
|
setup(s, { emit: r }) {
|
|
2214
|
-
const e = s, i = r, { t: c } = He(() => e.locale), t = ee(() => [...e.ops].sort((
|
|
2215
|
-
function
|
|
2216
|
-
return
|
|
2220
|
+
const e = s, i = r, { t: c } = He(() => e.locale), t = ee(() => [...e.ops].sort(($, A) => A.id - $.id));
|
|
2221
|
+
function y($) {
|
|
2222
|
+
return $.status === "done" ? 100 : $.progress_total <= 0 ? 0 : Math.min(100, Math.round($.progress_done / $.progress_total * 100));
|
|
2217
2223
|
}
|
|
2218
|
-
function d(
|
|
2219
|
-
return
|
|
2224
|
+
function d($) {
|
|
2225
|
+
return $.status === "done" ? "is-done" : $.status === "error" ? "is-error" : "";
|
|
2220
2226
|
}
|
|
2221
|
-
function
|
|
2222
|
-
const
|
|
2223
|
-
return
|
|
2227
|
+
function h($) {
|
|
2228
|
+
const A = $.op_type === "copy" ? c("ops.copy") : $.op_type === "move" ? c("ops.move") : c("ops.delete");
|
|
2229
|
+
return $.status === "pending" ? `${A} (${c("ops.queued")})` : $.status === "running" ? `${A} ${$.progress_done}/${$.progress_total}` : $.status === "done" ? `${A} ${c("ops.done")} (${$.progress_total})` : $.status === "error" ? `${A} ${c("ops.error")}` : A;
|
|
2224
2230
|
}
|
|
2225
|
-
return (
|
|
2231
|
+
return ($, A) => t.value.length > 0 ? (l(), Ne(Xa, {
|
|
2226
2232
|
key: 0,
|
|
2227
2233
|
name: "fe-ops-slide",
|
|
2228
2234
|
tag: "div",
|
|
@@ -2239,7 +2245,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2239
2245
|
o("span", {
|
|
2240
2246
|
class: "fe-ops__title",
|
|
2241
2247
|
title: j.target_path || j.source_dir || ""
|
|
2242
|
-
}, u(
|
|
2248
|
+
}, u(h(j)), 9, us),
|
|
2243
2249
|
j.status === "done" || j.status === "error" ? (l(), f("button", {
|
|
2244
2250
|
key: 0,
|
|
2245
2251
|
type: "button",
|
|
@@ -2251,7 +2257,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2251
2257
|
o("div", fs, [
|
|
2252
2258
|
o("div", {
|
|
2253
2259
|
class: "fe-ops__bar-fill",
|
|
2254
|
-
style: wt({ width:
|
|
2260
|
+
style: wt({ width: y(j) + "%" })
|
|
2255
2261
|
}, null, 4)
|
|
2256
2262
|
]),
|
|
2257
2263
|
j.status === "error" && j.error_message ? (l(), f("div", ps, u(j.error_message), 1)) : H("", !0)
|
|
@@ -2266,7 +2272,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2266
2272
|
}, hs = { class: "fe-modal__title" }, ys = { class: "fe-modal__body" }, bs = {
|
|
2267
2273
|
key: 1,
|
|
2268
2274
|
class: "fe-modal__actions"
|
|
2269
|
-
}, kt = /* @__PURE__ */
|
|
2275
|
+
}, kt = /* @__PURE__ */ $e({
|
|
2270
2276
|
__name: "Modal",
|
|
2271
2277
|
props: {
|
|
2272
2278
|
open: { type: Boolean },
|
|
@@ -2283,21 +2289,21 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2283
2289
|
() => e.open,
|
|
2284
2290
|
(d) => {
|
|
2285
2291
|
d ? (document.addEventListener("keydown", t), setTimeout(() => {
|
|
2286
|
-
var
|
|
2287
|
-
const
|
|
2292
|
+
var $;
|
|
2293
|
+
const h = ($ = c.value) == null ? void 0 : $.querySelector(
|
|
2288
2294
|
'input,select,textarea,button,[tabindex]:not([tabindex="-1"])'
|
|
2289
2295
|
);
|
|
2290
|
-
|
|
2296
|
+
h == null || h.focus();
|
|
2291
2297
|
}, 30)) : document.removeEventListener("keydown", t);
|
|
2292
2298
|
}
|
|
2293
2299
|
), it(() => document.removeEventListener("keydown", t));
|
|
2294
2300
|
function t(d) {
|
|
2295
2301
|
d.key === "Escape" && i("close");
|
|
2296
2302
|
}
|
|
2297
|
-
function
|
|
2303
|
+
function y() {
|
|
2298
2304
|
e.closeOnBackdrop !== !1 && i("close");
|
|
2299
2305
|
}
|
|
2300
|
-
return (d,
|
|
2306
|
+
return (d, h) => (l(), Ne(ht, { name: "fe-modal" }, {
|
|
2301
2307
|
default: Oe(() => [
|
|
2302
2308
|
s.open ? (l(), f("div", {
|
|
2303
2309
|
key: 0,
|
|
@@ -2307,7 +2313,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2307
2313
|
s.theme === "dark" ? "fe--theme-dark" : ""
|
|
2308
2314
|
]]),
|
|
2309
2315
|
role: "presentation",
|
|
2310
|
-
onClick:
|
|
2316
|
+
onClick: y
|
|
2311
2317
|
}, [
|
|
2312
2318
|
o("div", {
|
|
2313
2319
|
ref_key: "cardEl",
|
|
@@ -2318,7 +2324,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2318
2324
|
]]),
|
|
2319
2325
|
role: "dialog",
|
|
2320
2326
|
"aria-modal": "true",
|
|
2321
|
-
onClick:
|
|
2327
|
+
onClick: h[1] || (h[1] = ke(() => {
|
|
2322
2328
|
}, ["stop"]))
|
|
2323
2329
|
}, [
|
|
2324
2330
|
s.title && !s.chromeless ? (l(), f("header", ms, [
|
|
@@ -2327,7 +2333,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2327
2333
|
type: "button",
|
|
2328
2334
|
class: "fe-modal__close",
|
|
2329
2335
|
"aria-label": "Close",
|
|
2330
|
-
onClick:
|
|
2336
|
+
onClick: h[0] || (h[0] = ($) => i("close"))
|
|
2331
2337
|
}, "×")
|
|
2332
2338
|
])) : H("", !0),
|
|
2333
2339
|
o("div", ys, [
|
|
@@ -2345,7 +2351,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2345
2351
|
}), _s = ["placeholder", "onKeydown"], gs = {
|
|
2346
2352
|
key: 0,
|
|
2347
2353
|
class: "fe-form__error"
|
|
2348
|
-
}, ws = /* @__PURE__ */
|
|
2354
|
+
}, ws = /* @__PURE__ */ $e({
|
|
2349
2355
|
__name: "NewFolderModal",
|
|
2350
2356
|
props: {
|
|
2351
2357
|
open: { type: Boolean },
|
|
@@ -2353,33 +2359,33 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2353
2359
|
},
|
|
2354
2360
|
emits: ["close", "submit"],
|
|
2355
2361
|
setup(s, { emit: r }) {
|
|
2356
|
-
const e = s, i = r, { t: c } = He(() => e.locale), t = b(""),
|
|
2357
|
-
We(() => e.open, (
|
|
2358
|
-
|
|
2362
|
+
const e = s, i = r, { t: c } = He(() => e.locale), t = b(""), y = b(null);
|
|
2363
|
+
We(() => e.open, (h) => {
|
|
2364
|
+
h && (t.value = "", y.value = null);
|
|
2359
2365
|
});
|
|
2360
2366
|
function d() {
|
|
2361
|
-
const
|
|
2362
|
-
if (!
|
|
2363
|
-
|
|
2367
|
+
const h = t.value.trim();
|
|
2368
|
+
if (!h) {
|
|
2369
|
+
y.value = c("modal.newfolder.placeholder");
|
|
2364
2370
|
return;
|
|
2365
2371
|
}
|
|
2366
|
-
if (/[\\/]/.test(
|
|
2367
|
-
|
|
2372
|
+
if (/[\\/]/.test(h) || h === "." || h === "..") {
|
|
2373
|
+
y.value = "Geçersiz karakter";
|
|
2368
2374
|
return;
|
|
2369
2375
|
}
|
|
2370
|
-
i("submit",
|
|
2376
|
+
i("submit", h);
|
|
2371
2377
|
}
|
|
2372
|
-
return (
|
|
2378
|
+
return (h, $) => (l(), Ne(kt, {
|
|
2373
2379
|
open: s.open,
|
|
2374
2380
|
title: z(c)("modal.newfolder.title"),
|
|
2375
2381
|
size: "sm",
|
|
2376
|
-
onClose:
|
|
2382
|
+
onClose: $[2] || ($[2] = (A) => i("close"))
|
|
2377
2383
|
}, {
|
|
2378
2384
|
actions: Oe(() => [
|
|
2379
2385
|
o("button", {
|
|
2380
2386
|
type: "button",
|
|
2381
2387
|
class: "fe-btn",
|
|
2382
|
-
onClick:
|
|
2388
|
+
onClick: $[1] || ($[1] = (A) => i("close"))
|
|
2383
2389
|
}, u(z(c)("modal.newfolder.cancel")), 1),
|
|
2384
2390
|
o("button", {
|
|
2385
2391
|
type: "button",
|
|
@@ -2392,7 +2398,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2392
2398
|
onSubmit: ke(d, ["prevent"])
|
|
2393
2399
|
}, [
|
|
2394
2400
|
_e(o("input", {
|
|
2395
|
-
"onUpdate:modelValue":
|
|
2401
|
+
"onUpdate:modelValue": $[0] || ($[0] = (A) => t.value = A),
|
|
2396
2402
|
type: "text",
|
|
2397
2403
|
class: "fe-input",
|
|
2398
2404
|
placeholder: z(c)("modal.newfolder.placeholder"),
|
|
@@ -2401,13 +2407,13 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2401
2407
|
}, null, 40, _s), [
|
|
2402
2408
|
[Fe, t.value]
|
|
2403
2409
|
]),
|
|
2404
|
-
|
|
2410
|
+
y.value ? (l(), f("p", gs, u(y.value), 1)) : H("", !0)
|
|
2405
2411
|
], 32)
|
|
2406
2412
|
]),
|
|
2407
2413
|
_: 1
|
|
2408
2414
|
}, 8, ["open", "title"]));
|
|
2409
2415
|
}
|
|
2410
|
-
}), ks = ["onKeydown"], xs = /* @__PURE__ */
|
|
2416
|
+
}), ks = ["onKeydown"], xs = /* @__PURE__ */ $e({
|
|
2411
2417
|
__name: "RenameModal",
|
|
2412
2418
|
props: {
|
|
2413
2419
|
open: { type: Boolean },
|
|
@@ -2419,42 +2425,42 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2419
2425
|
const e = s, i = r, { t: c } = He(() => e.locale), t = b("");
|
|
2420
2426
|
We(
|
|
2421
2427
|
() => [e.open, e.currentName],
|
|
2422
|
-
([d,
|
|
2423
|
-
d && (t.value =
|
|
2428
|
+
([d, h]) => {
|
|
2429
|
+
d && (t.value = h);
|
|
2424
2430
|
}
|
|
2425
2431
|
);
|
|
2426
|
-
function
|
|
2432
|
+
function y() {
|
|
2427
2433
|
const d = t.value.trim();
|
|
2428
2434
|
d && (/[\\/]/.test(d) || d === "." || d === ".." || i("submit", d));
|
|
2429
2435
|
}
|
|
2430
|
-
return (d,
|
|
2436
|
+
return (d, h) => (l(), Ne(kt, {
|
|
2431
2437
|
open: s.open,
|
|
2432
2438
|
title: z(c)("modal.rename.title"),
|
|
2433
2439
|
size: "sm",
|
|
2434
|
-
onClose:
|
|
2440
|
+
onClose: h[2] || (h[2] = ($) => i("close"))
|
|
2435
2441
|
}, {
|
|
2436
2442
|
actions: Oe(() => [
|
|
2437
2443
|
o("button", {
|
|
2438
2444
|
type: "button",
|
|
2439
2445
|
class: "fe-btn",
|
|
2440
|
-
onClick:
|
|
2446
|
+
onClick: h[1] || (h[1] = ($) => i("close"))
|
|
2441
2447
|
}, u(z(c)("modal.rename.cancel")), 1),
|
|
2442
2448
|
o("button", {
|
|
2443
2449
|
type: "button",
|
|
2444
2450
|
class: "fe-btn fe-btn--primary",
|
|
2445
|
-
onClick:
|
|
2451
|
+
onClick: y
|
|
2446
2452
|
}, u(z(c)("modal.rename.save")), 1)
|
|
2447
2453
|
]),
|
|
2448
2454
|
default: Oe(() => [
|
|
2449
2455
|
o("form", {
|
|
2450
|
-
onSubmit: ke(
|
|
2456
|
+
onSubmit: ke(y, ["prevent"])
|
|
2451
2457
|
}, [
|
|
2452
2458
|
_e(o("input", {
|
|
2453
|
-
"onUpdate:modelValue":
|
|
2459
|
+
"onUpdate:modelValue": h[0] || (h[0] = ($) => t.value = $),
|
|
2454
2460
|
type: "text",
|
|
2455
2461
|
class: "fe-input",
|
|
2456
2462
|
autocomplete: "off",
|
|
2457
|
-
onKeydown: Ze(ke(
|
|
2463
|
+
onKeydown: Ze(ke(y, ["prevent"]), ["enter"])
|
|
2458
2464
|
}, null, 40, ks), [
|
|
2459
2465
|
[Fe, t.value]
|
|
2460
2466
|
])
|
|
@@ -2463,7 +2469,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2463
2469
|
_: 1
|
|
2464
2470
|
}, 8, ["open", "title"]));
|
|
2465
2471
|
}
|
|
2466
|
-
}), $s = /* @__PURE__ */
|
|
2472
|
+
}), $s = /* @__PURE__ */ $e({
|
|
2467
2473
|
__name: "DeleteConfirmModal",
|
|
2468
2474
|
props: {
|
|
2469
2475
|
open: { type: Boolean },
|
|
@@ -2473,22 +2479,22 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2473
2479
|
emits: ["close", "confirm"],
|
|
2474
2480
|
setup(s, { emit: r }) {
|
|
2475
2481
|
const e = s, i = r, { t: c } = He(() => e.locale);
|
|
2476
|
-
return (t,
|
|
2482
|
+
return (t, y) => (l(), Ne(kt, {
|
|
2477
2483
|
open: s.open,
|
|
2478
2484
|
title: z(c)("modal.delete.title"),
|
|
2479
2485
|
size: "sm",
|
|
2480
|
-
onClose:
|
|
2486
|
+
onClose: y[2] || (y[2] = (d) => i("close"))
|
|
2481
2487
|
}, {
|
|
2482
2488
|
actions: Oe(() => [
|
|
2483
2489
|
o("button", {
|
|
2484
2490
|
type: "button",
|
|
2485
2491
|
class: "fe-btn",
|
|
2486
|
-
onClick:
|
|
2492
|
+
onClick: y[0] || (y[0] = (d) => i("close"))
|
|
2487
2493
|
}, u(z(c)("modal.delete.cancel")), 1),
|
|
2488
2494
|
o("button", {
|
|
2489
2495
|
type: "button",
|
|
2490
2496
|
class: "fe-btn fe-btn--danger",
|
|
2491
|
-
onClick:
|
|
2497
|
+
onClick: y[1] || (y[1] = (d) => i("confirm"))
|
|
2492
2498
|
}, u(z(c)("modal.delete.confirm")), 1)
|
|
2493
2499
|
]),
|
|
2494
2500
|
default: Oe(() => [
|
|
@@ -2503,7 +2509,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2503
2509
|
}, Ps = { class: "fe-share-result__row" }, Ds = { class: "fe-share-result__copy" }, As = ["value"], Os = {
|
|
2504
2510
|
key: 0,
|
|
2505
2511
|
class: "fe-share-result__row"
|
|
2506
|
-
}, Is = { class: "fe-share-result__copy" }, Bs = ["value"], Ms = { class: "fe-share-result__row" }, zs = { class: "fe-share-result__copy" }, Ls = ["value"], Ns = /* @__PURE__ */
|
|
2512
|
+
}, Is = { class: "fe-share-result__copy" }, Bs = ["value"], Ms = { class: "fe-share-result__row" }, zs = { class: "fe-share-result__copy" }, Ls = ["value"], Ns = /* @__PURE__ */ $e({
|
|
2507
2513
|
__name: "ShareModal",
|
|
2508
2514
|
props: {
|
|
2509
2515
|
open: { type: Boolean },
|
|
@@ -2512,55 +2518,55 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2512
2518
|
},
|
|
2513
2519
|
emits: ["close", "submit", "toast"],
|
|
2514
2520
|
setup(s, { emit: r }) {
|
|
2515
|
-
const e = s, i = r, { t: c } = He(() => e.locale), t = b(!1),
|
|
2521
|
+
const e = s, i = r, { t: c } = He(() => e.locale), t = b(!1), y = b(""), d = b("");
|
|
2516
2522
|
We(() => e.open, (L) => {
|
|
2517
|
-
L && (t.value = !1,
|
|
2523
|
+
L && (t.value = !1, y.value = "", d.value = "");
|
|
2518
2524
|
});
|
|
2519
|
-
function
|
|
2525
|
+
function h() {
|
|
2520
2526
|
i("submit", {
|
|
2521
2527
|
password: t.value,
|
|
2522
|
-
expires_at:
|
|
2528
|
+
expires_at: y.value ? new Date(y.value).toISOString() : null,
|
|
2523
2529
|
max_downloads: d.value ? Number(d.value) : null
|
|
2524
2530
|
});
|
|
2525
2531
|
}
|
|
2526
|
-
async function
|
|
2532
|
+
async function $(L, O) {
|
|
2527
2533
|
try {
|
|
2528
|
-
await navigator.clipboard.writeText(L), i("toast",
|
|
2534
|
+
await navigator.clipboard.writeText(L), i("toast", O);
|
|
2529
2535
|
} catch {
|
|
2530
2536
|
}
|
|
2531
2537
|
}
|
|
2532
|
-
function
|
|
2538
|
+
function A(L) {
|
|
2533
2539
|
return `'${L.replace(/'/g, "'\\''")}'`;
|
|
2534
2540
|
}
|
|
2535
2541
|
const j = ee(() => {
|
|
2536
2542
|
const L = e.share;
|
|
2537
2543
|
if (!L) return "";
|
|
2538
|
-
let
|
|
2539
|
-
return L.password_pin && (
|
|
2544
|
+
let O = L.url;
|
|
2545
|
+
return L.password_pin && (O += (O.includes("?") ? "&" : "?") + "pin=" + encodeURIComponent(L.password_pin)), `curl -fSL ${L.filename ? `-o ${A(L.filename)} ` : "-OJ "}${A(O)}`;
|
|
2540
2546
|
});
|
|
2541
|
-
return (L,
|
|
2547
|
+
return (L, O) => (l(), Ne(kt, {
|
|
2542
2548
|
open: s.open,
|
|
2543
2549
|
title: z(c)("modal.share.title"),
|
|
2544
2550
|
size: "md",
|
|
2545
|
-
onClose:
|
|
2551
|
+
onClose: O[7] || (O[7] = (T) => i("close"))
|
|
2546
2552
|
}, {
|
|
2547
2553
|
actions: Oe(() => [
|
|
2548
2554
|
o("button", {
|
|
2549
2555
|
type: "button",
|
|
2550
2556
|
class: "fe-btn",
|
|
2551
|
-
onClick:
|
|
2557
|
+
onClick: O[6] || (O[6] = (T) => i("close"))
|
|
2552
2558
|
}, u(s.share ? "Kapat" : z(c)("modal.share.cancel")), 1),
|
|
2553
2559
|
s.share ? H("", !0) : (l(), f("button", {
|
|
2554
2560
|
key: 0,
|
|
2555
2561
|
type: "button",
|
|
2556
2562
|
class: "fe-btn fe-btn--primary",
|
|
2557
|
-
onClick:
|
|
2563
|
+
onClick: h
|
|
2558
2564
|
}, u(z(c)("modal.share.create")), 1))
|
|
2559
2565
|
]),
|
|
2560
2566
|
default: Oe(() => [
|
|
2561
2567
|
s.share ? (l(), f("div", Es, [
|
|
2562
2568
|
o("div", Ps, [
|
|
2563
|
-
|
|
2569
|
+
O[8] || (O[8] = o("label", null, "Link", -1)),
|
|
2564
2570
|
o("div", Ds, [
|
|
2565
2571
|
o("input", {
|
|
2566
2572
|
value: s.share.url,
|
|
@@ -2570,12 +2576,12 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2570
2576
|
o("button", {
|
|
2571
2577
|
type: "button",
|
|
2572
2578
|
class: "fe-btn",
|
|
2573
|
-
onClick:
|
|
2579
|
+
onClick: O[3] || (O[3] = (T) => $(s.share.url, z(c)("modal.share.url_copied")))
|
|
2574
2580
|
}, u(z(c)("modal.share.copy")), 1)
|
|
2575
2581
|
])
|
|
2576
2582
|
]),
|
|
2577
2583
|
s.share.password_pin ? (l(), f("div", Os, [
|
|
2578
|
-
|
|
2584
|
+
O[9] || (O[9] = o("label", null, "PIN", -1)),
|
|
2579
2585
|
o("div", Is, [
|
|
2580
2586
|
o("input", {
|
|
2581
2587
|
value: s.share.password_pin,
|
|
@@ -2585,12 +2591,12 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2585
2591
|
o("button", {
|
|
2586
2592
|
type: "button",
|
|
2587
2593
|
class: "fe-btn",
|
|
2588
|
-
onClick:
|
|
2594
|
+
onClick: O[4] || (O[4] = (T) => $(s.share.password_pin, z(c)("modal.share.pin_copied")))
|
|
2589
2595
|
}, u(z(c)("modal.share.copy")), 1)
|
|
2590
2596
|
])
|
|
2591
2597
|
])) : H("", !0),
|
|
2592
2598
|
o("div", Ms, [
|
|
2593
|
-
|
|
2599
|
+
O[10] || (O[10] = o("label", null, "CLI", -1)),
|
|
2594
2600
|
o("div", zs, [
|
|
2595
2601
|
o("input", {
|
|
2596
2602
|
value: j.value,
|
|
@@ -2600,18 +2606,18 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2600
2606
|
o("button", {
|
|
2601
2607
|
type: "button",
|
|
2602
2608
|
class: "fe-btn",
|
|
2603
|
-
onClick:
|
|
2609
|
+
onClick: O[5] || (O[5] = (T) => $(j.value, z(c)("modal.share.cli_copied")))
|
|
2604
2610
|
}, u(z(c)("modal.share.copy")), 1)
|
|
2605
2611
|
])
|
|
2606
2612
|
])
|
|
2607
2613
|
])) : (l(), f("form", {
|
|
2608
2614
|
key: 0,
|
|
2609
2615
|
class: "fe-form",
|
|
2610
|
-
onSubmit: ke(
|
|
2616
|
+
onSubmit: ke(h, ["prevent"])
|
|
2611
2617
|
}, [
|
|
2612
2618
|
o("label", Cs, [
|
|
2613
2619
|
_e(o("input", {
|
|
2614
|
-
"onUpdate:modelValue":
|
|
2620
|
+
"onUpdate:modelValue": O[0] || (O[0] = (T) => t.value = T),
|
|
2615
2621
|
type: "checkbox"
|
|
2616
2622
|
}, null, 512), [
|
|
2617
2623
|
[St, t.value]
|
|
@@ -2621,17 +2627,17 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2621
2627
|
o("label", Ss, [
|
|
2622
2628
|
o("span", null, u(z(c)("modal.share.expires")), 1),
|
|
2623
2629
|
_e(o("input", {
|
|
2624
|
-
"onUpdate:modelValue":
|
|
2630
|
+
"onUpdate:modelValue": O[1] || (O[1] = (T) => y.value = T),
|
|
2625
2631
|
type: "datetime-local",
|
|
2626
2632
|
class: "fe-input"
|
|
2627
2633
|
}, null, 512), [
|
|
2628
|
-
[Fe,
|
|
2634
|
+
[Fe, y.value]
|
|
2629
2635
|
])
|
|
2630
2636
|
]),
|
|
2631
2637
|
o("label", Ts, [
|
|
2632
2638
|
o("span", null, u(z(c)("modal.share.max_downloads")), 1),
|
|
2633
2639
|
_e(o("input", {
|
|
2634
|
-
"onUpdate:modelValue":
|
|
2640
|
+
"onUpdate:modelValue": O[2] || (O[2] = (T) => d.value = T),
|
|
2635
2641
|
type: "number",
|
|
2636
2642
|
min: "1",
|
|
2637
2643
|
class: "fe-input"
|
|
@@ -2701,7 +2707,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2701
2707
|
}, Sr = ["href"], Tr = {
|
|
2702
2708
|
key: 8,
|
|
2703
2709
|
class: "fe-preview__fallback"
|
|
2704
|
-
}, Er = ["href"], Pr = ["href"], Mt = 1e6, oa = "fe-onlyoffice-api-js", Dr = /* @__PURE__ */
|
|
2710
|
+
}, Er = ["href"], Pr = ["href"], Mt = 1e6, oa = "fe-onlyoffice-api-js", Dr = /* @__PURE__ */ $e({
|
|
2705
2711
|
__name: "PreviewModal",
|
|
2706
2712
|
props: {
|
|
2707
2713
|
open: { type: Boolean },
|
|
@@ -2728,7 +2734,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2728
2734
|
function t(M) {
|
|
2729
2735
|
return ((M == null ? void 0 : M.extension) || "").toLowerCase();
|
|
2730
2736
|
}
|
|
2731
|
-
const
|
|
2737
|
+
const y = ["jpg", "jpeg", "png", "webp", "gif", "bmp", "avif", "svg", "heic"], d = ["mp4", "webm", "mov", "mkv", "m4v", "ogv"], h = ["mp3", "wav", "ogg", "flac", "m4a", "aac", "opus"], $ = {
|
|
2732
2738
|
md: "markdown",
|
|
2733
2739
|
markdown: "markdown",
|
|
2734
2740
|
txt: "plaintext",
|
|
@@ -2782,56 +2788,56 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2782
2788
|
gql: "graphql",
|
|
2783
2789
|
diff: "diff",
|
|
2784
2790
|
patch: "diff"
|
|
2785
|
-
},
|
|
2786
|
-
glb: () => import("./Viewer3D-
|
|
2787
|
-
gltf: () => import("./Viewer3D-
|
|
2788
|
-
obj: () => import("./Viewer3D-
|
|
2789
|
-
stl: () => import("./Viewer3D-
|
|
2790
|
-
fbx: () => import("./Viewer3D-
|
|
2791
|
-
"3ds": () => import("./Viewer3D-
|
|
2792
|
-
epub: () => import("./EpubViewer-
|
|
2793
|
-
mmd: () => import("./MermaidViewer-
|
|
2794
|
-
mermaid: () => import("./MermaidViewer-
|
|
2795
|
-
drawio: () => import("./DrawioViewer-
|
|
2796
|
-
dio: () => import("./DrawioViewer-
|
|
2797
|
-
tif: () => import("./TiffViewer-
|
|
2798
|
-
tiff: () => import("./TiffViewer-
|
|
2799
|
-
psd: () => import("./PsdViewer-
|
|
2791
|
+
}, A = ["txt", "log"], j = ["docx", "doc", "xlsx", "xls", "pptx", "ppt", "odt", "ods", "odp", "rtf"], L = {
|
|
2792
|
+
glb: () => import("./Viewer3D-rhyqPxtc.js"),
|
|
2793
|
+
gltf: () => import("./Viewer3D-rhyqPxtc.js"),
|
|
2794
|
+
obj: () => import("./Viewer3D-rhyqPxtc.js"),
|
|
2795
|
+
stl: () => import("./Viewer3D-rhyqPxtc.js"),
|
|
2796
|
+
fbx: () => import("./Viewer3D-rhyqPxtc.js"),
|
|
2797
|
+
"3ds": () => import("./Viewer3D-rhyqPxtc.js"),
|
|
2798
|
+
epub: () => import("./EpubViewer-DXbYwVxr.js"),
|
|
2799
|
+
mmd: () => import("./MermaidViewer-sVI1Gdzg.js"),
|
|
2800
|
+
mermaid: () => import("./MermaidViewer-sVI1Gdzg.js"),
|
|
2801
|
+
drawio: () => import("./DrawioViewer-BdC_OKe3.js"),
|
|
2802
|
+
dio: () => import("./DrawioViewer-BdC_OKe3.js"),
|
|
2803
|
+
tif: () => import("./TiffViewer-_3i3709w.js"),
|
|
2804
|
+
tiff: () => import("./TiffViewer-_3i3709w.js"),
|
|
2805
|
+
psd: () => import("./PsdViewer-11QXthlz.js"),
|
|
2800
2806
|
// PDF deliberately uses the native browser viewer (`kind === 'pdf'`
|
|
2801
2807
|
// branch in the template). PdfViewer.vue still exists for callers
|
|
2802
2808
|
// that want the rich custom UI but the SFC default keeps things
|
|
2803
2809
|
// minimal — the browser already paints search/zoom/page UI for free.
|
|
2804
|
-
ipynb: () => import("./IpynbViewer-
|
|
2805
|
-
csv: () => import("./CsvViewer-
|
|
2806
|
-
tsv: () => import("./CsvViewer-
|
|
2807
|
-
zip: () => import("./ArchiveViewer-
|
|
2808
|
-
},
|
|
2810
|
+
ipynb: () => import("./IpynbViewer-CIWJyo5t.js"),
|
|
2811
|
+
csv: () => import("./CsvViewer-BDpjcXgR.js"),
|
|
2812
|
+
tsv: () => import("./CsvViewer-BDpjcXgR.js"),
|
|
2813
|
+
zip: () => import("./ArchiveViewer-i6kwnRYm.js")
|
|
2814
|
+
}, O = ee(() => {
|
|
2809
2815
|
const M = t(e.file);
|
|
2810
2816
|
if (!M) return "other";
|
|
2811
|
-
if (
|
|
2817
|
+
if (y.includes(M)) return "image";
|
|
2812
2818
|
if (d.includes(M)) return "video";
|
|
2813
|
-
if (
|
|
2819
|
+
if (h.includes(M)) return "audio";
|
|
2814
2820
|
if (M === "pdf") return "pdf";
|
|
2815
|
-
const
|
|
2816
|
-
return M === "md" || M === "markdown" ? "markdown" : M in
|
|
2817
|
-
}),
|
|
2821
|
+
const C = e.openMode !== "view";
|
|
2822
|
+
return M === "md" || M === "markdown" ? "markdown" : M in $ ? "code" : M in L ? "viewer" : j.includes(M) ? "office" : A.includes(M) ? C ? "code" : "text" : "other";
|
|
2823
|
+
}), T = Qa(null), v = b(null), B = b(!1);
|
|
2818
2824
|
async function U(M) {
|
|
2819
|
-
|
|
2820
|
-
const
|
|
2821
|
-
if (
|
|
2825
|
+
T.value = null, v.value = null;
|
|
2826
|
+
const C = L[M];
|
|
2827
|
+
if (C)
|
|
2822
2828
|
try {
|
|
2823
|
-
const R = await
|
|
2824
|
-
|
|
2829
|
+
const R = await C();
|
|
2830
|
+
T.value = R.default ?? R;
|
|
2825
2831
|
} catch (R) {
|
|
2826
2832
|
v.value = R instanceof Error ? R.message : "viewer load failed", M === "pdf" && (B.value = !0);
|
|
2827
2833
|
}
|
|
2828
2834
|
}
|
|
2829
|
-
function
|
|
2835
|
+
function I() {
|
|
2830
2836
|
B.value = !0;
|
|
2831
2837
|
}
|
|
2832
2838
|
const J = ee(() => {
|
|
2833
2839
|
var R;
|
|
2834
|
-
const M = t(e.file),
|
|
2840
|
+
const M = t(e.file), C = {
|
|
2835
2841
|
url: G.value,
|
|
2836
2842
|
ext: M,
|
|
2837
2843
|
mime: (R = e.file) == null ? void 0 : R.mime_type,
|
|
@@ -2839,9 +2845,9 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2839
2845
|
authHeaders: e.authHeaders,
|
|
2840
2846
|
authCredentials: e.authCredentials
|
|
2841
2847
|
};
|
|
2842
|
-
return e.file && (
|
|
2848
|
+
return e.file && (C.filePath = Z(e.file.path), (M === "zip" || M === "rar" || M === "7z" || M === "tar" || M === "gz" || M === "tgz") && (C.filePath = e.file.path)), (M === "drawio" || M === "dio") && (C.drawioUrl = e.drawioUrl ?? void 0, C.saveUrl = e.saveTextEndpoint ?? void 0, C.readOnly = e.openMode === "view"), M === "pdf" && (C.pdfWorkerUrl = e.pdfWorkerUrl ?? void 0, C.pdfSaveUrl = e.pdfSaveUrl ?? void 0), C;
|
|
2843
2849
|
});
|
|
2844
|
-
function
|
|
2850
|
+
function g() {
|
|
2845
2851
|
p(e.openMode || "edit");
|
|
2846
2852
|
}
|
|
2847
2853
|
function w() {
|
|
@@ -2849,10 +2855,10 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2849
2855
|
}
|
|
2850
2856
|
function p(M) {
|
|
2851
2857
|
if (!e.file) return;
|
|
2852
|
-
const
|
|
2858
|
+
const C = t(e.file), R = e.viewerBaseUrl || "/files/edit", ae = R.includes("?") ? "&" : "?", te = `${R}${ae}path=${encodeURIComponent(e.file.path)}&type=${encodeURIComponent(C)}&mode=${encodeURIComponent(M)}`;
|
|
2853
2859
|
window.open(te, "_blank", "noopener");
|
|
2854
2860
|
}
|
|
2855
|
-
const
|
|
2861
|
+
const S = /* @__PURE__ */ new Set([
|
|
2856
2862
|
// OnlyOffice — open the in-page office editor (or new tab) with
|
|
2857
2863
|
// edit permissions.
|
|
2858
2864
|
"docx",
|
|
@@ -2921,11 +2927,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2921
2927
|
"graphql",
|
|
2922
2928
|
"gql"
|
|
2923
2929
|
]), k = ee(
|
|
2924
|
-
() => !!e.file &&
|
|
2930
|
+
() => !!e.file && S.has(t(e.file))
|
|
2925
2931
|
), G = ee(() => e.file ? e.previewUrl(e.file.path) : ""), W = ee(() => e.file ? e.downloadUrl(e.file.path) : "");
|
|
2926
2932
|
function Z(M) {
|
|
2927
|
-
const
|
|
2928
|
-
return
|
|
2933
|
+
const C = M.indexOf("://");
|
|
2934
|
+
return C === -1 ? M : M.slice(C + 3);
|
|
2929
2935
|
}
|
|
2930
2936
|
const be = b(!1), re = b(null), Y = b(""), q = b(!1), se = b(!1), ne = b(!1);
|
|
2931
2937
|
let ye, de;
|
|
@@ -2943,14 +2949,14 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2943
2949
|
const M = {
|
|
2944
2950
|
"Content-Type": "application/json",
|
|
2945
2951
|
...await (e.authHeaders ?? (() => ({})))()
|
|
2946
|
-
},
|
|
2952
|
+
}, C = await fetch(e.saveTextEndpoint, {
|
|
2947
2953
|
method: "POST",
|
|
2948
2954
|
headers: M,
|
|
2949
2955
|
credentials: e.authCredentials || "same-origin",
|
|
2950
2956
|
body: JSON.stringify({ path: Z(e.file.path), content: Y.value })
|
|
2951
2957
|
});
|
|
2952
|
-
if (
|
|
2953
|
-
throw new Error(`save failed: ${
|
|
2958
|
+
if (!C.ok)
|
|
2959
|
+
throw new Error(`save failed: ${C.status} ${await C.text()}`);
|
|
2954
2960
|
se.value = !1;
|
|
2955
2961
|
} catch (M) {
|
|
2956
2962
|
re.value = M instanceof Error ? M.message : String(M);
|
|
@@ -2962,11 +2968,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2962
2968
|
async function Ke(M) {
|
|
2963
2969
|
be.value = !0, re.value = null, Y.value = "", q.value = !1;
|
|
2964
2970
|
try {
|
|
2965
|
-
const
|
|
2966
|
-
e.authHeaders && Object.assign(
|
|
2971
|
+
const C = {};
|
|
2972
|
+
e.authHeaders && Object.assign(C, e.authHeaders());
|
|
2967
2973
|
const R = await fetch(M, {
|
|
2968
2974
|
credentials: e.authCredentials || "include",
|
|
2969
|
-
headers:
|
|
2975
|
+
headers: C
|
|
2970
2976
|
});
|
|
2971
2977
|
if (!R.ok)
|
|
2972
2978
|
throw new Error(`${R.status} ${R.statusText}`);
|
|
@@ -2976,8 +2982,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2976
2982
|
}
|
|
2977
2983
|
const te = await R.text();
|
|
2978
2984
|
te.length > Mt ? (q.value = !0, Y.value = te.slice(0, Mt)) : Y.value = te;
|
|
2979
|
-
} catch (
|
|
2980
|
-
re.value =
|
|
2985
|
+
} catch (C) {
|
|
2986
|
+
re.value = C instanceof Error ? C.message : String(C);
|
|
2981
2987
|
} finally {
|
|
2982
2988
|
be.value = !1;
|
|
2983
2989
|
}
|
|
@@ -2985,23 +2991,23 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
2985
2991
|
const Me = b(""), Ue = b(null);
|
|
2986
2992
|
async function Re(M) {
|
|
2987
2993
|
try {
|
|
2988
|
-
const
|
|
2994
|
+
const C = await import(
|
|
2989
2995
|
/* @vite-ignore */
|
|
2990
2996
|
"markdown-it"
|
|
2991
2997
|
).catch(() => null);
|
|
2992
|
-
if (
|
|
2998
|
+
if (!C) {
|
|
2993
2999
|
Me.value = "";
|
|
2994
3000
|
return;
|
|
2995
3001
|
}
|
|
2996
|
-
const R =
|
|
3002
|
+
const R = C.default ?? C, te = new R({
|
|
2997
3003
|
html: !0,
|
|
2998
3004
|
linkify: !0,
|
|
2999
3005
|
breaks: !0,
|
|
3000
3006
|
typographer: !0
|
|
3001
3007
|
}).render(M);
|
|
3002
3008
|
Me.value = qe(te), await new Promise((me) => setTimeout(me, 0)), await et();
|
|
3003
|
-
} catch (
|
|
3004
|
-
Me.value = "", re.value =
|
|
3009
|
+
} catch (C) {
|
|
3010
|
+
Me.value = "", re.value = C instanceof Error ? C.message : String(C);
|
|
3005
3011
|
}
|
|
3006
3012
|
}
|
|
3007
3013
|
function qe(M) {
|
|
@@ -3010,10 +3016,10 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3010
3016
|
async function et() {
|
|
3011
3017
|
var te, me, oe;
|
|
3012
3018
|
if (!Ue.value) return;
|
|
3013
|
-
const M = Ue.value,
|
|
3014
|
-
if (
|
|
3019
|
+
const M = Ue.value, C = Array.from(M.querySelectorAll("pre > code"));
|
|
3020
|
+
if (C.length === 0) return;
|
|
3015
3021
|
let R, ae;
|
|
3016
|
-
for (const we of
|
|
3022
|
+
for (const we of C) {
|
|
3017
3023
|
const st = we.className || "", ut = /\blanguage-mermaid\b/.test(st) || /\blanguage-mmd\b/.test(st), rt = /\blanguage-math\b/.test(st) || /\blanguage-latex\b/.test(st) || /\blanguage-tex\b/.test(st);
|
|
3018
3024
|
if (ut) {
|
|
3019
3025
|
if (R === void 0)
|
|
@@ -3059,7 +3065,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3059
3065
|
}
|
|
3060
3066
|
}
|
|
3061
3067
|
const Te = b("");
|
|
3062
|
-
async function Ge(M,
|
|
3068
|
+
async function Ge(M, C) {
|
|
3063
3069
|
try {
|
|
3064
3070
|
const R = await ra();
|
|
3065
3071
|
if (!R) {
|
|
@@ -3067,8 +3073,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3067
3073
|
return;
|
|
3068
3074
|
}
|
|
3069
3075
|
const ae = R.default ?? R;
|
|
3070
|
-
if (ae.getLanguage(
|
|
3071
|
-
const te = ae.highlight(M, { language:
|
|
3076
|
+
if (ae.getLanguage(C)) {
|
|
3077
|
+
const te = ae.highlight(M, { language: C, ignoreIllegals: !0 });
|
|
3072
3078
|
Te.value = te.value;
|
|
3073
3079
|
} else {
|
|
3074
3080
|
const te = ae.highlightAuto(M);
|
|
@@ -3091,7 +3097,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3091
3097
|
}
|
|
3092
3098
|
Q.value = !1, pe.value = !1, ce.value = null;
|
|
3093
3099
|
}
|
|
3094
|
-
function
|
|
3100
|
+
function Ce(M) {
|
|
3095
3101
|
return {
|
|
3096
3102
|
js: "javascript",
|
|
3097
3103
|
mjs: "javascript",
|
|
@@ -3133,7 +3139,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3133
3139
|
cfg: "ini"
|
|
3134
3140
|
}[M] ?? "plaintext";
|
|
3135
3141
|
}
|
|
3136
|
-
async function Ve(M,
|
|
3142
|
+
async function Ve(M, C) {
|
|
3137
3143
|
var ae;
|
|
3138
3144
|
const R = await Lt();
|
|
3139
3145
|
if (!R || !P.value) return !1;
|
|
@@ -3142,7 +3148,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3142
3148
|
const te = !!e.saveTextEndpoint && e.openMode !== "view", me = e.theme === "dark" ? !0 : e.theme === "light" ? !1 : (ae = window.matchMedia) == null ? void 0 : ae.call(window, "(prefers-color-scheme: dark)").matches;
|
|
3143
3149
|
return N = R.editor.create(P.value, {
|
|
3144
3150
|
value: M,
|
|
3145
|
-
language:
|
|
3151
|
+
language: Ce(C),
|
|
3146
3152
|
readOnly: !te,
|
|
3147
3153
|
theme: me ? "vs-dark" : "vs",
|
|
3148
3154
|
automaticLayout: !0,
|
|
@@ -3164,11 +3170,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3164
3170
|
if (!(!e.saveTextEndpoint || !e.file) && e.openMode !== "view" && !ge.value) {
|
|
3165
3171
|
ge.value = !0, pe.value = !1, ce.value = null;
|
|
3166
3172
|
try {
|
|
3167
|
-
const M = N ? N.getValue() : "",
|
|
3168
|
-
e.authHeaders && Object.assign(
|
|
3173
|
+
const M = N ? N.getValue() : "", C = { "Content-Type": "application/json" };
|
|
3174
|
+
e.authHeaders && Object.assign(C, e.authHeaders());
|
|
3169
3175
|
const R = await fetch(e.saveTextEndpoint, {
|
|
3170
3176
|
method: "POST",
|
|
3171
|
-
headers:
|
|
3177
|
+
headers: C,
|
|
3172
3178
|
credentials: e.authCredentials || "same-origin",
|
|
3173
3179
|
body: JSON.stringify({
|
|
3174
3180
|
path: Z(e.file.path),
|
|
@@ -3189,19 +3195,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3189
3195
|
}
|
|
3190
3196
|
}
|
|
3191
3197
|
}
|
|
3192
|
-
async function tt(M,
|
|
3193
|
-
if (Y.value = "", Me.value = "", Te.value = "", re.value = null, je.value = null,
|
|
3198
|
+
async function tt(M, C, R) {
|
|
3199
|
+
if (Y.value = "", Me.value = "", Te.value = "", re.value = null, je.value = null, T.value = null, v.value = null, B.value = !1, Ye(), fe(), !(!M || !C)) {
|
|
3194
3200
|
if (R === "viewer") {
|
|
3195
3201
|
await U(t(e.file));
|
|
3196
3202
|
return;
|
|
3197
3203
|
}
|
|
3198
3204
|
if (R === "markdown" || R === "code" || R === "text") {
|
|
3199
|
-
if (await Ke(
|
|
3205
|
+
if (await Ke(C), q.value) return;
|
|
3200
3206
|
if (R === "markdown") {
|
|
3201
3207
|
await Re(Y.value);
|
|
3202
3208
|
return;
|
|
3203
3209
|
}
|
|
3204
|
-
const ae =
|
|
3210
|
+
const ae = $[t(e.file)] || "";
|
|
3205
3211
|
la() ? (await new Promise((oe) => setTimeout(oe, 0)), await Ve(Y.value, t(e.file)) || await Ge(Y.value, ae)) : (R === "code" && await Ge(Y.value, ae), Lt().then(async (me) => {
|
|
3206
3212
|
me && e.open && (await new Promise((oe) => setTimeout(oe, 0)), await Ve(Y.value, t(e.file)));
|
|
3207
3213
|
}));
|
|
@@ -3209,19 +3215,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3209
3215
|
}
|
|
3210
3216
|
}
|
|
3211
3217
|
We(
|
|
3212
|
-
() => [e.open, G.value,
|
|
3213
|
-
([M,
|
|
3214
|
-
tt(M,
|
|
3218
|
+
() => [e.open, G.value, O.value, e.openMode],
|
|
3219
|
+
([M, C, R]) => {
|
|
3220
|
+
tt(M, C, R);
|
|
3215
3221
|
}
|
|
3216
3222
|
), Qe(() => {
|
|
3217
3223
|
yt(() => {
|
|
3218
|
-
e.open && tt(e.open, G.value,
|
|
3224
|
+
e.open && tt(e.open, G.value, O.value);
|
|
3219
3225
|
});
|
|
3220
3226
|
});
|
|
3221
|
-
const at = ee(() =>
|
|
3227
|
+
const at = ee(() => $[t(e.file)] || "plaintext"), nt = b(null), je = b(null);
|
|
3222
3228
|
let ze = null;
|
|
3223
3229
|
async function ct() {
|
|
3224
|
-
if (je.value = null, !(!e.file ||
|
|
3230
|
+
if (je.value = null, !(!e.file || O.value !== "office")) {
|
|
3225
3231
|
if (!e.onlyOfficeConfigEndpoint) {
|
|
3226
3232
|
je.value = "OnlyOffice yapılandırması yok";
|
|
3227
3233
|
return;
|
|
@@ -3230,7 +3236,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3230
3236
|
try {
|
|
3231
3237
|
const M = { "Content-Type": "application/json" };
|
|
3232
3238
|
e.authHeaders && Object.assign(M, e.authHeaders());
|
|
3233
|
-
const
|
|
3239
|
+
const C = await fetch(e.onlyOfficeConfigEndpoint, {
|
|
3234
3240
|
method: "POST",
|
|
3235
3241
|
headers: M,
|
|
3236
3242
|
credentials: e.authCredentials || "same-origin",
|
|
@@ -3243,9 +3249,9 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3243
3249
|
mode: e.openMode || "edit"
|
|
3244
3250
|
})
|
|
3245
3251
|
});
|
|
3246
|
-
if (
|
|
3247
|
-
throw new Error(`Config fetch ${
|
|
3248
|
-
const { config: R, documentServerUrl: ae } = await
|
|
3252
|
+
if (!C.ok)
|
|
3253
|
+
throw new Error(`Config fetch ${C.status}: ${(await C.text()).slice(0, 200)}`);
|
|
3254
|
+
const { config: R, documentServerUrl: ae } = await C.json();
|
|
3249
3255
|
await pt(ae), Ye();
|
|
3250
3256
|
const te = "fe-onlyoffice-mount";
|
|
3251
3257
|
nt.value.id = te, R.events = {
|
|
@@ -3275,16 +3281,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3275
3281
|
});
|
|
3276
3282
|
function ot(M) {
|
|
3277
3283
|
if (typeof M == "string") return M;
|
|
3278
|
-
const
|
|
3279
|
-
if (
|
|
3280
|
-
const R =
|
|
3284
|
+
const C = M;
|
|
3285
|
+
if (C != null && C.data && typeof C.data == "object") {
|
|
3286
|
+
const R = C.data;
|
|
3281
3287
|
if (typeof R.errorDescription == "string") return R.errorDescription;
|
|
3282
3288
|
if (typeof R.message == "string") return R.message;
|
|
3283
3289
|
if (R.errorCode !== void 0) return `OnlyOffice error ${R.errorCode}`;
|
|
3284
3290
|
}
|
|
3285
|
-
if (typeof (
|
|
3286
|
-
if (typeof (
|
|
3287
|
-
if (typeof (
|
|
3291
|
+
if (typeof (C == null ? void 0 : C.data) == "string") return C.data;
|
|
3292
|
+
if (typeof (C == null ? void 0 : C.errorDescription) == "string") return C.errorDescription;
|
|
3293
|
+
if (typeof (C == null ? void 0 : C.message) == "string") return C.message;
|
|
3288
3294
|
try {
|
|
3289
3295
|
return JSON.stringify(M);
|
|
3290
3296
|
} catch {
|
|
@@ -3292,22 +3298,22 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3292
3298
|
}
|
|
3293
3299
|
}
|
|
3294
3300
|
function pt(M) {
|
|
3295
|
-
return new Promise((
|
|
3301
|
+
return new Promise((C, R) => {
|
|
3296
3302
|
var me;
|
|
3297
3303
|
if ((me = window.DocsAPI) != null && me.DocEditor) {
|
|
3298
|
-
|
|
3304
|
+
C();
|
|
3299
3305
|
return;
|
|
3300
3306
|
}
|
|
3301
3307
|
const ae = document.getElementById(oa);
|
|
3302
3308
|
if (ae) {
|
|
3303
|
-
ae.addEventListener("load", () =>
|
|
3309
|
+
ae.addEventListener("load", () => C()), ae.addEventListener("error", () => R(new Error("OnlyOffice api.js load failed")));
|
|
3304
3310
|
return;
|
|
3305
3311
|
}
|
|
3306
3312
|
const te = document.createElement("script");
|
|
3307
|
-
te.id = oa, te.src = `${M.replace(/\/$/, "")}/web-apps/apps/api/documents/api.js`, te.async = !0, te.onload = () =>
|
|
3313
|
+
te.id = oa, te.src = `${M.replace(/\/$/, "")}/web-apps/apps/api/documents/api.js`, te.async = !0, te.onload = () => C(), te.onerror = () => R(new Error("OnlyOffice api.js load failed")), document.head.appendChild(te);
|
|
3308
3314
|
});
|
|
3309
3315
|
}
|
|
3310
|
-
return (M,
|
|
3316
|
+
return (M, C) => {
|
|
3311
3317
|
var R;
|
|
3312
3318
|
return l(), Ne(kt, {
|
|
3313
3319
|
open: s.open,
|
|
@@ -3315,7 +3321,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3315
3321
|
title: ((R = s.file) == null ? void 0 : R.basename) || "",
|
|
3316
3322
|
chromeless: s.chromeless,
|
|
3317
3323
|
theme: s.theme,
|
|
3318
|
-
onClose:
|
|
3324
|
+
onClose: C[2] || (C[2] = (ae) => i("close"))
|
|
3319
3325
|
}, {
|
|
3320
3326
|
actions: Oe(() => [
|
|
3321
3327
|
s.file && s.openMode === "view" && k.value ? (l(), f("button", {
|
|
@@ -3328,7 +3334,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3328
3334
|
key: 1,
|
|
3329
3335
|
type: "button",
|
|
3330
3336
|
class: "fe-btn",
|
|
3331
|
-
onClick:
|
|
3337
|
+
onClick: g
|
|
3332
3338
|
}, "↗ " + u(z(c)("viewer.open_in_new_tab")), 1)) : H("", !0),
|
|
3333
3339
|
s.file ? (l(), f("a", {
|
|
3334
3340
|
key: 2,
|
|
@@ -3338,36 +3344,36 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3338
3344
|
o("button", {
|
|
3339
3345
|
type: "button",
|
|
3340
3346
|
class: "fe-btn",
|
|
3341
|
-
onClick:
|
|
3347
|
+
onClick: C[1] || (C[1] = (ae) => i("close"))
|
|
3342
3348
|
}, "Kapat")
|
|
3343
3349
|
]),
|
|
3344
3350
|
default: Oe(() => [
|
|
3345
3351
|
s.file ? (l(), f("div", Us, [
|
|
3346
|
-
|
|
3352
|
+
O.value === "image" ? (l(), f("img", {
|
|
3347
3353
|
key: 0,
|
|
3348
3354
|
src: G.value,
|
|
3349
3355
|
alt: s.file.basename,
|
|
3350
3356
|
class: "fe-preview__image"
|
|
3351
|
-
}, null, 8, Rs)) :
|
|
3357
|
+
}, null, 8, Rs)) : O.value === "video" ? (l(), f("video", {
|
|
3352
3358
|
key: 1,
|
|
3353
3359
|
src: G.value,
|
|
3354
3360
|
controls: "",
|
|
3355
3361
|
preload: "metadata",
|
|
3356
3362
|
class: "fe-preview__video"
|
|
3357
|
-
}, null, 8, Fs)) :
|
|
3363
|
+
}, null, 8, Fs)) : O.value === "audio" ? (l(), f("audio", {
|
|
3358
3364
|
key: 2,
|
|
3359
3365
|
src: G.value,
|
|
3360
3366
|
controls: "",
|
|
3361
3367
|
class: "fe-preview__audio"
|
|
3362
|
-
}, null, 8, Ks)) :
|
|
3368
|
+
}, null, 8, Ks)) : O.value === "pdf" ? (l(), f("object", {
|
|
3363
3369
|
key: 3,
|
|
3364
3370
|
data: G.value,
|
|
3365
3371
|
type: "application/pdf",
|
|
3366
3372
|
class: "fe-preview__iframe"
|
|
3367
3373
|
}, [
|
|
3368
3374
|
o("div", Hs, [
|
|
3369
|
-
|
|
3370
|
-
|
|
3375
|
+
C[3] || (C[3] = o("span", { class: "fe-preview__fallback-icon" }, "📕", -1)),
|
|
3376
|
+
C[4] || (C[4] = o("p", null, "Tarayıcı PDF'i inline açamadı.", -1)),
|
|
3371
3377
|
o("a", {
|
|
3372
3378
|
href: W.value,
|
|
3373
3379
|
class: "fe-btn fe-btn--primary",
|
|
@@ -3375,16 +3381,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3375
3381
|
rel: "noopener"
|
|
3376
3382
|
}, "PDF'i Yeni Sekmede Aç", 8, Vs)
|
|
3377
3383
|
])
|
|
3378
|
-
], 8, js)) :
|
|
3384
|
+
], 8, js)) : O.value === "markdown" ? (l(), f(le, { key: 4 }, [
|
|
3379
3385
|
be.value ? (l(), f("div", Ys, u(z(c)("viewer.loading")), 1)) : q.value ? (l(), f("div", Ws, [
|
|
3380
|
-
|
|
3386
|
+
C[5] || (C[5] = Pe(" Dosya çok büyük (>1 MB). ", -1)),
|
|
3381
3387
|
o("a", {
|
|
3382
3388
|
href: W.value,
|
|
3383
3389
|
class: "fe-btn"
|
|
3384
3390
|
}, u(z(c)("viewer.download")), 9, Gs)
|
|
3385
3391
|
])) : s.openMode === "edit" && s.saveTextEndpoint ? (l(), f("div", Js, [
|
|
3386
3392
|
o("div", qs, [
|
|
3387
|
-
|
|
3393
|
+
C[6] || (C[6] = o("span", { class: "fe-preview__md-split-label" }, "MARKDOWN", -1)),
|
|
3388
3394
|
re.value ? (l(), f("span", Xs, u(re.value), 1)) : H("", !0),
|
|
3389
3395
|
o("button", {
|
|
3390
3396
|
type: "button",
|
|
@@ -3396,7 +3402,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3396
3402
|
o("div", Zs, [
|
|
3397
3403
|
_e(o("textarea", {
|
|
3398
3404
|
class: "fe-preview__md-split-input",
|
|
3399
|
-
"onUpdate:modelValue":
|
|
3405
|
+
"onUpdate:modelValue": C[0] || (C[0] = (ae) => Y.value = ae),
|
|
3400
3406
|
onInput: Ie,
|
|
3401
3407
|
onKeydown: [
|
|
3402
3408
|
Ze(ke(Be, ["ctrl", "prevent"]), ["s"]),
|
|
@@ -3427,24 +3433,24 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3427
3433
|
class: "fe-preview__md",
|
|
3428
3434
|
innerHTML: Me.value
|
|
3429
3435
|
}, null, 8, or)) : (l(), f("pre", sr, u(Y.value), 1))
|
|
3430
|
-
], 64)) :
|
|
3436
|
+
], 64)) : O.value === "viewer" ? (l(), f(le, { key: 5 }, [
|
|
3431
3437
|
v.value && !B.value ? (l(), f("div", rr, [
|
|
3432
|
-
|
|
3438
|
+
C[7] || (C[7] = o("span", { class: "fe-preview__fallback-icon" }, "⚠️", -1)),
|
|
3433
3439
|
o("p", null, u(v.value), 1),
|
|
3434
3440
|
o("a", {
|
|
3435
3441
|
href: W.value,
|
|
3436
3442
|
class: "fe-btn fe-btn--primary"
|
|
3437
3443
|
}, u(z(c)("viewer.download")), 9, lr)
|
|
3438
|
-
])) :
|
|
3444
|
+
])) : T.value ? (l(), Ne(Za(T.value), en({ key: 2 }, J.value, {
|
|
3439
3445
|
class: "fe-preview__viewer",
|
|
3440
|
-
onFallback:
|
|
3446
|
+
onFallback: I
|
|
3441
3447
|
}), null, 16)) : (l(), f("div", ir, [
|
|
3442
|
-
|
|
3448
|
+
C[8] || (C[8] = o("span", { class: "fe-preview__fallback-icon" }, "⏳", -1)),
|
|
3443
3449
|
o("p", null, u(z(c)("viewer.loading")), 1)
|
|
3444
3450
|
]))
|
|
3445
|
-
], 64)) :
|
|
3451
|
+
], 64)) : O.value === "code" || O.value === "text" ? (l(), f(le, { key: 6 }, [
|
|
3446
3452
|
be.value ? (l(), f("div", cr, u(z(c)("viewer.loading")), 1)) : q.value ? (l(), f("div", ur, [
|
|
3447
|
-
|
|
3453
|
+
C[9] || (C[9] = Pe(" Dosya çok büyük (>1 MB). ", -1)),
|
|
3448
3454
|
o("a", {
|
|
3449
3455
|
href: W.value,
|
|
3450
3456
|
class: "fe-btn"
|
|
@@ -3489,9 +3495,9 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3489
3495
|
"data-lang": at.value
|
|
3490
3496
|
}, u(Y.value), 9, $r)) : H("", !0)
|
|
3491
3497
|
]))
|
|
3492
|
-
], 64)) :
|
|
3498
|
+
], 64)) : O.value === "office" ? (l(), f(le, { key: 7 }, [
|
|
3493
3499
|
je.value ? (l(), f("div", Cr, [
|
|
3494
|
-
|
|
3500
|
+
C[10] || (C[10] = o("span", { class: "fe-preview__fallback-icon" }, "📄", -1)),
|
|
3495
3501
|
o("p", null, u(je.value), 1),
|
|
3496
3502
|
o("a", {
|
|
3497
3503
|
href: W.value,
|
|
@@ -3504,8 +3510,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3504
3510
|
class: "fe-preview__office"
|
|
3505
3511
|
}, null, 512))
|
|
3506
3512
|
], 64)) : (l(), f("div", Tr, [
|
|
3507
|
-
|
|
3508
|
-
|
|
3513
|
+
C[11] || (C[11] = o("span", { class: "fe-preview__fallback-icon" }, "📎", -1)),
|
|
3514
|
+
C[12] || (C[12] = o("p", null, "Bu dosya tipi için önizleme henüz yok.", -1)),
|
|
3509
3515
|
o("a", {
|
|
3510
3516
|
href: W.value,
|
|
3511
3517
|
class: "fe-btn fe-btn--primary"
|
|
@@ -3529,7 +3535,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3529
3535
|
}, Rr = {
|
|
3530
3536
|
key: 0,
|
|
3531
3537
|
class: "filex-cv__err"
|
|
3532
|
-
}, Fr = { class: "filex-cv__foot" }, Kr = ["disabled"], jr = ["src"], Hr = /* @__PURE__ */
|
|
3538
|
+
}, Fr = { class: "filex-cv__foot" }, Kr = ["disabled"], jr = ["src"], Hr = /* @__PURE__ */ $e({
|
|
3533
3539
|
__name: "ConvertModal",
|
|
3534
3540
|
props: {
|
|
3535
3541
|
convertUrl: {},
|
|
@@ -3540,27 +3546,27 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3540
3546
|
},
|
|
3541
3547
|
emits: ["close", "done"],
|
|
3542
3548
|
setup(s, { emit: r }) {
|
|
3543
|
-
const e = s, i = r, c = b(null), t = b("loading"),
|
|
3549
|
+
const e = s, i = r, c = b(null), t = b("loading"), y = b(null), d = b([]), h = b(""), $ = b(null), A = ee(() => (e.fileName.split(".").pop() || "").toLowerCase()), j = ee(() => {
|
|
3544
3550
|
const w = d.value.filter((p) => p.from);
|
|
3545
|
-
return w.find((p) => (p.ext || "").toLowerCase() ===
|
|
3551
|
+
return w.find((p) => (p.ext || "").toLowerCase() === A.value) || w.find((p) => (p.format || "").toLowerCase() === A.value) || null;
|
|
3546
3552
|
}), L = ee(() => {
|
|
3547
|
-
const w =
|
|
3553
|
+
const w = h.value.trim().toLowerCase(), p = /* @__PURE__ */ new Set(), S = [];
|
|
3548
3554
|
for (const k of d.value) {
|
|
3549
3555
|
if (!k.to) continue;
|
|
3550
3556
|
const G = (k.ext || k.format || "").toLowerCase();
|
|
3551
|
-
!G || p.has(G) || (p.add(G),
|
|
3557
|
+
!G || p.has(G) || (p.add(G), S.push(k));
|
|
3552
3558
|
}
|
|
3553
|
-
return
|
|
3559
|
+
return S.sort((k, G) => (k.ext || k.format).localeCompare(G.ext || G.format)), w ? S.filter(
|
|
3554
3560
|
(k) => (k.ext || "").toLowerCase().includes(w) || (k.format || "").toLowerCase().includes(w) || (k.name || "").toLowerCase().includes(w) || (k.mime || "").toLowerCase().includes(w)
|
|
3555
|
-
) :
|
|
3556
|
-
}),
|
|
3557
|
-
let
|
|
3561
|
+
) : S;
|
|
3562
|
+
}), O = ee(() => `${e.convertUrl.replace(/\/$/, "")}/?embed=1`);
|
|
3563
|
+
let T = 0;
|
|
3558
3564
|
const v = /* @__PURE__ */ new Map();
|
|
3559
|
-
function B(w, p = {},
|
|
3560
|
-
const k = ++
|
|
3565
|
+
function B(w, p = {}, S = []) {
|
|
3566
|
+
const k = ++T;
|
|
3561
3567
|
return new Promise((G, W) => {
|
|
3562
3568
|
var Z, be;
|
|
3563
|
-
v.set(k, { resolve: G, reject: W }), (be = (Z = c.value) == null ? void 0 : Z.contentWindow) == null || be.postMessage({ target: "convert-embed", id: k, cmd: w, ...p }, "*",
|
|
3569
|
+
v.set(k, { resolve: G, reject: W }), (be = (Z = c.value) == null ? void 0 : Z.contentWindow) == null || be.postMessage({ target: "convert-embed", id: k, cmd: w, ...p }, "*", S), setTimeout(() => {
|
|
3564
3570
|
v.has(k) && (v.delete(k), W(new Error("convert timeout")));
|
|
3565
3571
|
}, 18e4);
|
|
3566
3572
|
});
|
|
@@ -3569,95 +3575,95 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3569
3575
|
const p = w.data;
|
|
3570
3576
|
if (!p || p.source !== "convert-embed") return;
|
|
3571
3577
|
if (p.event === "ready") {
|
|
3572
|
-
|
|
3578
|
+
I();
|
|
3573
3579
|
return;
|
|
3574
3580
|
}
|
|
3575
|
-
const
|
|
3576
|
-
|
|
3581
|
+
const S = v.get(p.id);
|
|
3582
|
+
S && (v.delete(p.id), p.ok ? S.resolve(p) : S.reject(new Error(p.error || "convert error")));
|
|
3577
3583
|
}
|
|
3578
|
-
async function
|
|
3584
|
+
async function I() {
|
|
3579
3585
|
try {
|
|
3580
3586
|
const w = await B("listFormats");
|
|
3581
|
-
d.value = w.formats || [], t.value = "ready", j.value || (
|
|
3587
|
+
d.value = w.formats || [], t.value = "ready", j.value || (y.value = g("convert.unsupportedInput", "Bu dosya tipi için kaynak format bulunamadı."));
|
|
3582
3588
|
} catch (w) {
|
|
3583
|
-
|
|
3589
|
+
y.value = w.message, t.value = "error";
|
|
3584
3590
|
}
|
|
3585
3591
|
}
|
|
3586
3592
|
async function J() {
|
|
3587
|
-
if (!(
|
|
3588
|
-
t.value = "converting",
|
|
3593
|
+
if (!(!$.value || !j.value)) {
|
|
3594
|
+
t.value = "converting", y.value = null;
|
|
3589
3595
|
try {
|
|
3590
3596
|
const w = await e.fetchBytes(), p = await B(
|
|
3591
3597
|
"convert",
|
|
3592
|
-
{ name: e.fileName, bytes: w, fromIndex: j.value.index, toIndex:
|
|
3598
|
+
{ name: e.fileName, bytes: w, fromIndex: j.value.index, toIndex: $.value.index },
|
|
3593
3599
|
[w]
|
|
3594
|
-
),
|
|
3600
|
+
), S = e.fileName.replace(/\.[^.]+$/, ""), k = p.ext || $.value.ext || $.value.format, G = `${S}.${k}`, W = new File([p.bytes], G, { type: $.value.mime || "application/octet-stream" });
|
|
3595
3601
|
await e.upload(W), t.value = "done", i("done", G);
|
|
3596
3602
|
} catch (w) {
|
|
3597
|
-
|
|
3603
|
+
y.value = w.message, t.value = "error";
|
|
3598
3604
|
}
|
|
3599
3605
|
}
|
|
3600
3606
|
}
|
|
3601
|
-
function
|
|
3607
|
+
function g(w, p) {
|
|
3602
3608
|
return e.t ? e.t(w, p) : p;
|
|
3603
3609
|
}
|
|
3604
3610
|
return Qe(() => window.addEventListener("message", U)), it(() => window.removeEventListener("message", U)), (w, p) => (l(), f("div", {
|
|
3605
3611
|
class: "filex-cv__bg",
|
|
3606
|
-
onClick: p[3] || (p[3] = ke((
|
|
3612
|
+
onClick: p[3] || (p[3] = ke((S) => i("close"), ["self"]))
|
|
3607
3613
|
}, [
|
|
3608
3614
|
o("div", Ar, [
|
|
3609
3615
|
o("header", Or, [
|
|
3610
|
-
o("h3", null, u(
|
|
3616
|
+
o("h3", null, u(g("convert.title", "Dönüştür")) + " — " + u(s.fileName), 1),
|
|
3611
3617
|
o("button", {
|
|
3612
3618
|
class: "filex-cv__x",
|
|
3613
|
-
onClick: p[0] || (p[0] = (
|
|
3619
|
+
onClick: p[0] || (p[0] = (S) => i("close"))
|
|
3614
3620
|
}, "✕")
|
|
3615
3621
|
]),
|
|
3616
|
-
t.value === "loading" ? (l(), f("div", Ir, u(
|
|
3617
|
-
o("p", null, "✓ " + u(
|
|
3622
|
+
t.value === "loading" ? (l(), f("div", Ir, u(g("convert.loading", "Dönüştürücü yükleniyor…")), 1)) : t.value === "done" ? (l(), f("div", Br, [
|
|
3623
|
+
o("p", null, "✓ " + u(g("convert.done", "Dönüştürüldü ve klasöre yüklendi.")), 1),
|
|
3618
3624
|
o("button", {
|
|
3619
3625
|
class: "filex-cv__convert",
|
|
3620
|
-
onClick: p[1] || (p[1] = (
|
|
3621
|
-
}, u(
|
|
3626
|
+
onClick: p[1] || (p[1] = (S) => i("close"))
|
|
3627
|
+
}, u(g("convert.close", "Kapat")), 1)
|
|
3622
3628
|
])) : (l(), f(le, { key: 2 }, [
|
|
3623
3629
|
o("p", Mr, [
|
|
3624
|
-
Pe(u(
|
|
3625
|
-
o("b", null, u(
|
|
3630
|
+
Pe(u(g("convert.from", "Kaynak")) + ": ", 1),
|
|
3631
|
+
o("b", null, u(A.value || "?"), 1)
|
|
3626
3632
|
]),
|
|
3627
3633
|
_e(o("input", {
|
|
3628
|
-
"onUpdate:modelValue": p[2] || (p[2] = (
|
|
3634
|
+
"onUpdate:modelValue": p[2] || (p[2] = (S) => h.value = S),
|
|
3629
3635
|
class: "filex-cv__search",
|
|
3630
|
-
placeholder:
|
|
3636
|
+
placeholder: g("convert.searchFmt", "Hedef format ara (pdf, mp4, png…)")
|
|
3631
3637
|
}, null, 8, zr), [
|
|
3632
|
-
[Fe,
|
|
3638
|
+
[Fe, h.value]
|
|
3633
3639
|
]),
|
|
3634
3640
|
o("div", Lr, [
|
|
3635
|
-
(l(!0), f(le, null, Se(L.value, (
|
|
3641
|
+
(l(!0), f(le, null, Se(L.value, (S) => {
|
|
3636
3642
|
var k;
|
|
3637
3643
|
return l(), f("button", {
|
|
3638
|
-
key:
|
|
3639
|
-
class: he(["filex-cv__fmt", { "is-sel": ((k =
|
|
3640
|
-
onClick: (G) =>
|
|
3644
|
+
key: S.index,
|
|
3645
|
+
class: he(["filex-cv__fmt", { "is-sel": ((k = $.value) == null ? void 0 : k.index) === S.index }]),
|
|
3646
|
+
onClick: (G) => $.value = S
|
|
3641
3647
|
}, [
|
|
3642
|
-
o("b", null, u((
|
|
3643
|
-
o("small", null, u(
|
|
3648
|
+
o("b", null, u((S.ext || S.format).toUpperCase()), 1),
|
|
3649
|
+
o("small", null, u(S.name), 1)
|
|
3644
3650
|
], 10, Nr);
|
|
3645
3651
|
}), 128)),
|
|
3646
|
-
L.value.length === 0 ? (l(), f("div", Ur, u(
|
|
3652
|
+
L.value.length === 0 ? (l(), f("div", Ur, u(g("convert.noFmt", "Eşleşen format yok.")), 1)) : H("", !0)
|
|
3647
3653
|
]),
|
|
3648
|
-
|
|
3654
|
+
y.value ? (l(), f("div", Rr, u(y.value), 1)) : H("", !0),
|
|
3649
3655
|
o("footer", Fr, [
|
|
3650
3656
|
o("button", {
|
|
3651
3657
|
class: "filex-cv__convert",
|
|
3652
|
-
disabled:
|
|
3658
|
+
disabled: !$.value || !j.value || t.value === "converting",
|
|
3653
3659
|
onClick: J
|
|
3654
|
-
}, u(t.value === "converting" ?
|
|
3660
|
+
}, u(t.value === "converting" ? g("convert.converting", "Dönüştürülüyor…") : g("convert.convert", "Dönüştür")), 9, Kr)
|
|
3655
3661
|
])
|
|
3656
3662
|
], 64)),
|
|
3657
3663
|
o("iframe", {
|
|
3658
3664
|
ref_key: "iframeRef",
|
|
3659
3665
|
ref: c,
|
|
3660
|
-
src:
|
|
3666
|
+
src: O.value,
|
|
3661
3667
|
class: "filex-cv__frame",
|
|
3662
3668
|
title: "converter"
|
|
3663
3669
|
}, null, 8, jr)
|
|
@@ -3727,7 +3733,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3727
3733
|
}, Ei = { class: "fx-perm-mailrow" }, Pi = ["placeholder"], Di = ["disabled"], Ai = {
|
|
3728
3734
|
key: 1,
|
|
3729
3735
|
class: "fx-perm-notice"
|
|
3730
|
-
}, Oi = /* @__PURE__ */
|
|
3736
|
+
}, Oi = /* @__PURE__ */ $e({
|
|
3731
3737
|
__name: "PermissionsModal",
|
|
3732
3738
|
props: {
|
|
3733
3739
|
api: {},
|
|
@@ -3742,11 +3748,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3742
3748
|
function t(x, m) {
|
|
3743
3749
|
return c.value ? x : m;
|
|
3744
3750
|
}
|
|
3745
|
-
const
|
|
3751
|
+
const y = ee(() => {
|
|
3746
3752
|
const x = /^([^:]+):\/\/(.*)$/.exec(e.path), m = x ? x[1] : "", V = x ? x[2] : e.path, ue = V.split("/").filter(Boolean);
|
|
3747
3753
|
return { adapter: m, name: ue.length ? ue[ue.length - 1] : m, rel: V };
|
|
3748
|
-
}), d = b("perms"),
|
|
3749
|
-
let
|
|
3754
|
+
}), d = b("perms"), h = b(!1), $ = b(!0), A = b(""), j = b([]), L = b([]), O = b(!0), T = b(""), v = b("viewer"), B = b(!1), U = b(""), I = b(!1), J = b("user"), g = b(null), w = b([]), p = b(!1);
|
|
3755
|
+
let S;
|
|
3750
3756
|
const k = [
|
|
3751
3757
|
{ v: "viewer", l: t("Görüntüleyen", "Viewer"), d: t("görüntüle + indir", "view + download") },
|
|
3752
3758
|
{ v: "editor", l: t("Düzenleyen", "Editor"), d: t("oku + yaz + sil", "read + write + delete") },
|
|
@@ -3776,14 +3782,14 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3776
3782
|
return V === 0 ? t(`E-posta gönderildi ✓ (${m})`, `Email sent ✓ (${m})`) : t(`${m} gönderildi, ${V} başarısız`, `${m} sent, ${V} failed`);
|
|
3777
3783
|
}
|
|
3778
3784
|
async function ce() {
|
|
3779
|
-
|
|
3785
|
+
$.value = !0, A.value = "";
|
|
3780
3786
|
try {
|
|
3781
3787
|
const x = await e.api.listPermissions(e.path);
|
|
3782
|
-
j.value = x.direct ?? [], L.value = x.inherited ?? [],
|
|
3788
|
+
j.value = x.direct ?? [], L.value = x.inherited ?? [], O.value = x.storage_rbac, h.value = !0;
|
|
3783
3789
|
} catch (x) {
|
|
3784
|
-
x.status === 403 ? (
|
|
3790
|
+
x.status === 403 ? (h.value = !1, d.value = "share") : A.value = x instanceof Error ? x.message : String(x);
|
|
3785
3791
|
} finally {
|
|
3786
|
-
|
|
3792
|
+
$.value = !1;
|
|
3787
3793
|
}
|
|
3788
3794
|
}
|
|
3789
3795
|
async function fe() {
|
|
@@ -3797,16 +3803,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3797
3803
|
Qe(async () => {
|
|
3798
3804
|
await ce(), await fe();
|
|
3799
3805
|
}), it(() => {
|
|
3800
|
-
|
|
3806
|
+
S && clearTimeout(S);
|
|
3801
3807
|
});
|
|
3802
|
-
function
|
|
3803
|
-
|
|
3804
|
-
const x =
|
|
3805
|
-
if (
|
|
3808
|
+
function Ce() {
|
|
3809
|
+
I.value = !1, g.value = null, U.value = "";
|
|
3810
|
+
const x = T.value.trim();
|
|
3811
|
+
if (S && clearTimeout(S), x.length < 1) {
|
|
3806
3812
|
w.value = [], p.value = !1;
|
|
3807
3813
|
return;
|
|
3808
3814
|
}
|
|
3809
|
-
|
|
3815
|
+
S = setTimeout(async () => {
|
|
3810
3816
|
try {
|
|
3811
3817
|
const m = await e.api.searchUsers(x);
|
|
3812
3818
|
w.value = m.users ?? [], p.value = w.value.length > 0;
|
|
@@ -3816,11 +3822,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3816
3822
|
}, 180);
|
|
3817
3823
|
}
|
|
3818
3824
|
async function Ve(x) {
|
|
3819
|
-
p.value = !1,
|
|
3825
|
+
p.value = !1, T.value = x.email;
|
|
3820
3826
|
let m = v.value;
|
|
3821
3827
|
x.role === "viewer" && m !== "viewer" && (m = "viewer"), B.value = !0, U.value = "";
|
|
3822
3828
|
try {
|
|
3823
|
-
await e.api.addPermission({ path: e.path, user_id: x.id, level: m, is_dir: !!e.isDir }),
|
|
3829
|
+
await e.api.addPermission({ path: e.path, user_id: x.id, level: m, is_dir: !!e.isDir }), T.value = "", w.value = [], await ce(), U.value = t("Yetki verildi.", "Access granted.");
|
|
3824
3830
|
} catch (V) {
|
|
3825
3831
|
U.value = V instanceof Error ? V.message : String(V);
|
|
3826
3832
|
} finally {
|
|
@@ -3828,19 +3834,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3828
3834
|
}
|
|
3829
3835
|
}
|
|
3830
3836
|
async function Xe() {
|
|
3831
|
-
const x =
|
|
3837
|
+
const x = T.value.trim().toLowerCase();
|
|
3832
3838
|
if (!x || !x.includes("@")) {
|
|
3833
3839
|
U.value = t("Geçerli bir e-posta girin.", "Enter a valid email.");
|
|
3834
3840
|
return;
|
|
3835
3841
|
}
|
|
3836
|
-
p.value = !1, B.value = !0, U.value = "",
|
|
3842
|
+
p.value = !1, B.value = !0, U.value = "", g.value = null;
|
|
3837
3843
|
try {
|
|
3838
3844
|
const m = await e.api.resolveEmail(x);
|
|
3839
3845
|
if (m.found && m.user) {
|
|
3840
3846
|
let V = v.value;
|
|
3841
|
-
m.user.role === "viewer" && V !== "viewer" && (V = "viewer"), await e.api.addPermission({ path: e.path, user_id: m.user.id, level: V, is_dir: !!e.isDir }),
|
|
3847
|
+
m.user.role === "viewer" && V !== "viewer" && (V = "viewer"), await e.api.addPermission({ path: e.path, user_id: m.user.id, level: V, is_dir: !!e.isDir }), T.value = "", await ce(), U.value = t("Yetki verildi.", "Access granted.");
|
|
3842
3848
|
} else
|
|
3843
|
-
|
|
3849
|
+
I.value = !0;
|
|
3844
3850
|
} catch (m) {
|
|
3845
3851
|
U.value = m instanceof Error ? m.message : String(m);
|
|
3846
3852
|
} finally {
|
|
@@ -3852,14 +3858,14 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3852
3858
|
try {
|
|
3853
3859
|
const x = await e.api.invitePermission({
|
|
3854
3860
|
path: e.path,
|
|
3855
|
-
email:
|
|
3861
|
+
email: T.value.trim().toLowerCase(),
|
|
3856
3862
|
level: v.value,
|
|
3857
3863
|
create_user: !0,
|
|
3858
3864
|
role: J.value,
|
|
3859
3865
|
is_dir: !!e.isDir,
|
|
3860
3866
|
locale: e.locale ?? "tr"
|
|
3861
3867
|
});
|
|
3862
|
-
|
|
3868
|
+
g.value = { tempPassword: x.temp_password }, U.value = x.emailed ? t("Kullanıcı açıldı, davet e-postası gönderildi.", "User created, invite emailed.") : t("Kullanıcı açıldı. Geçici parolayı iletin.", "User created. Share the temp password."), I.value = !1, T.value = "", await ce();
|
|
3863
3869
|
} catch (x) {
|
|
3864
3870
|
U.value = x instanceof Error ? x.message : String(x);
|
|
3865
3871
|
} finally {
|
|
@@ -3867,7 +3873,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3867
3873
|
}
|
|
3868
3874
|
}
|
|
3869
3875
|
function at() {
|
|
3870
|
-
ne.value =
|
|
3876
|
+
ne.value = T.value.trim().toLowerCase(), I.value = !1, U.value = "", d.value = "share";
|
|
3871
3877
|
}
|
|
3872
3878
|
async function nt(x, m) {
|
|
3873
3879
|
if (m !== x.level) {
|
|
@@ -3947,7 +3953,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
3947
3953
|
function M() {
|
|
3948
3954
|
return Ke.value ? new Date(Date.now() + Ke.value * 864e5).toISOString() : null;
|
|
3949
3955
|
}
|
|
3950
|
-
async function
|
|
3956
|
+
async function C() {
|
|
3951
3957
|
Te.value = !0, Ge.value = "", P.value = null, Q.value = "";
|
|
3952
3958
|
try {
|
|
3953
3959
|
const x = { ask_name: et.value };
|
|
@@ -4027,8 +4033,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4027
4033
|
return x > 0 ? t(`Bu bağlantı ${x} gün geçerlidir.`, `This link is valid for ${x} day(s).`) : t("Bu bağlantının süresi yoktur.", "This link does not expire.");
|
|
4028
4034
|
}
|
|
4029
4035
|
function st() {
|
|
4030
|
-
var
|
|
4031
|
-
const x =
|
|
4036
|
+
var xe, Le;
|
|
4037
|
+
const x = y.value.name, m = ((xe = Y.value) == null ? void 0 : xe.url) ?? "", V = ((Le = Y.value) == null ? void 0 : Le.pin) ?? "", ue = e.isDir ? t("klasör", "folder") : t("dosya", "file"), D = c.value ? `${x} ${e.isDir ? "klasörü" : "dosyası"} sizinle paylaşıldı` : `${x} has been shared with you`, ie = [];
|
|
4032
4038
|
if (ie.push(t("Merhaba,", "Hello,"), ""), ie.push(t(`Sizinle bir ${ue} paylaşıldı:`, `A ${ue} has been shared with you:`), ""), e.isDir)
|
|
4033
4039
|
ie.push(t(`Klasör: ${x}`, `Folder: ${x}`));
|
|
4034
4040
|
else {
|
|
@@ -4041,8 +4047,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4041
4047
|
}
|
|
4042
4048
|
function ut() {
|
|
4043
4049
|
var lt, xt;
|
|
4044
|
-
const x =
|
|
4045
|
-
return Le.push(t("Merhaba,", "Hello,"), ""), Le.push(t("Dosya yüklemeniz istendi.", "You've been invited to upload files."), ""), Le.push(t(`Klasör: ${x}`, `Folder: ${x}`)), Le.push(t(`Sınır: en fazla ${ue} dosya, dosya başına ${D} MB.`, `Limit: up to ${ue} file(s), ${D} MB per file.`)), Le.push(ie.length ? t(`İzinli türler: ${ie.join(", ")}`, `Allowed types: ${ie.join(", ")}`) : t("İzinli türler: tüm türler", "Allowed types: all")), Le.push("", t("Dosyalarınızı buradan yükleyebilirsiniz:", "Upload your files here:"), m), V && Le.push("", t(`PIN (erişim kodu): ${V}`, `PIN (access code): ${V}`)), Le.push("", we(Ke.value)), { title:
|
|
4050
|
+
const x = y.value.name, m = ((lt = P.value) == null ? void 0 : lt.url) ?? "", V = ((xt = P.value) == null ? void 0 : xt.pin) ?? "", ue = Number(Ue.value) || 20, D = Number(Re.value) || 500, ie = qe.value.split(/[,\s]+/).map(($t) => $t.trim().replace(/^\./, "")).filter(Boolean), xe = t(`${x} adlı klasöre dosya eklemeniz istendi`, `You've been asked to add files to ${x}`), Le = [];
|
|
4051
|
+
return Le.push(t("Merhaba,", "Hello,"), ""), Le.push(t("Dosya yüklemeniz istendi.", "You've been invited to upload files."), ""), Le.push(t(`Klasör: ${x}`, `Folder: ${x}`)), Le.push(t(`Sınır: en fazla ${ue} dosya, dosya başına ${D} MB.`, `Limit: up to ${ue} file(s), ${D} MB per file.`)), Le.push(ie.length ? t(`İzinli türler: ${ie.join(", ")}`, `Allowed types: ${ie.join(", ")}`) : t("İzinli türler: tüm türler", "Allowed types: all")), Le.push("", t("Dosyalarınızı buradan yükleyebilirsiniz:", "Upload your files here:"), m), V && Le.push("", t(`PIN (erişim kodu): ${V}`, `PIN (access code): ${V}`)), Le.push("", we(Ke.value)), { title: xe, text: Le.join(`
|
|
4046
4052
|
`) };
|
|
4047
4053
|
}
|
|
4048
4054
|
async function rt(x) {
|
|
@@ -4068,8 +4074,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4068
4074
|
class: "fx-perm-sub",
|
|
4069
4075
|
title: s.path
|
|
4070
4076
|
}, [
|
|
4071
|
-
Pe(u(
|
|
4072
|
-
o("span", Qr, " · " + u(
|
|
4077
|
+
Pe(u(y.value.name), 1),
|
|
4078
|
+
o("span", Qr, " · " + u(y.value.adapter), 1)
|
|
4073
4079
|
], 8, Xr)
|
|
4074
4080
|
])
|
|
4075
4081
|
]),
|
|
@@ -4080,7 +4086,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4080
4086
|
}, "✕")
|
|
4081
4087
|
]),
|
|
4082
4088
|
o("div", Zr, [
|
|
4083
|
-
|
|
4089
|
+
h.value ? (l(), f("button", {
|
|
4084
4090
|
key: 0,
|
|
4085
4091
|
class: he(["fx-perm-tab", { "is-active": d.value === "perms" }]),
|
|
4086
4092
|
onClick: m[1] || (m[1] = (D) => d.value = "perms")
|
|
@@ -4096,24 +4102,24 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4096
4102
|
}, u(t("Dosya İste", "Request files")), 3)) : H("", !0)
|
|
4097
4103
|
]),
|
|
4098
4104
|
o("div", el, [
|
|
4099
|
-
d.value === "perms" &&
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4105
|
+
d.value === "perms" && h.value ? (l(), f(le, { key: 0 }, [
|
|
4106
|
+
O.value ? H("", !0) : (l(), f("div", tl, u(t("Bu diskte RBAC kapalı — izinler yalnızca RBAC açık disklerde geçerli.", "RBAC is off on this storage — grants only apply when RBAC is enabled.")), 1)),
|
|
4107
|
+
A.value ? (l(), f("div", al, u(A.value), 1)) : H("", !0),
|
|
4108
|
+
$.value ? (l(), f("div", nl, u(t("Yükleniyor…", "Loading…")), 1)) : (l(), f(le, { key: 3 }, [
|
|
4103
4109
|
o("div", ol, [
|
|
4104
4110
|
o("div", sl, [
|
|
4105
4111
|
o("div", rl, [
|
|
4106
4112
|
_e(o("input", {
|
|
4107
|
-
"onUpdate:modelValue": m[4] || (m[4] = (D) =>
|
|
4113
|
+
"onUpdate:modelValue": m[4] || (m[4] = (D) => T.value = D),
|
|
4108
4114
|
type: "email",
|
|
4109
4115
|
class: "fx-perm-input",
|
|
4110
4116
|
autocomplete: "off",
|
|
4111
4117
|
placeholder: t("İsim veya e-posta", "Name or email"),
|
|
4112
|
-
onInput:
|
|
4118
|
+
onInput: Ce,
|
|
4113
4119
|
onKeyup: Ze(Xe, ["enter"]),
|
|
4114
|
-
onFocus:
|
|
4120
|
+
onFocus: Ce
|
|
4115
4121
|
}, null, 40, ll), [
|
|
4116
|
-
[Fe,
|
|
4122
|
+
[Fe, T.value]
|
|
4117
4123
|
]),
|
|
4118
4124
|
p.value ? (l(), f("ul", il, [
|
|
4119
4125
|
(l(!0), f(le, null, Se(w.value, (D) => (l(), f("li", {
|
|
@@ -4146,7 +4152,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4146
4152
|
onClick: Xe
|
|
4147
4153
|
}, u(t("Ekle", "Add")), 9, hl)
|
|
4148
4154
|
]),
|
|
4149
|
-
|
|
4155
|
+
I.value ? (l(), f("div", yl, [
|
|
4150
4156
|
o("p", bl, u(t("Bu e-postada hesap yok. Ne yapmak istersiniz?", "No account for this email — what next?")), 1),
|
|
4151
4157
|
o("div", _l, [
|
|
4152
4158
|
o("div", gl, [
|
|
@@ -4173,9 +4179,9 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4173
4179
|
])
|
|
4174
4180
|
])) : H("", !0),
|
|
4175
4181
|
U.value ? (l(), f("div", Cl, u(U.value), 1)) : H("", !0),
|
|
4176
|
-
(ue =
|
|
4182
|
+
(ue = g.value) != null && ue.tempPassword ? (l(), f("div", Sl, [
|
|
4177
4183
|
Pe(u(t("Geçici parola:", "Temp password:")) + " ", 1),
|
|
4178
|
-
o("code", null, u(
|
|
4184
|
+
o("code", null, u(g.value.tempPassword), 1)
|
|
4179
4185
|
])) : H("", !0)
|
|
4180
4186
|
]),
|
|
4181
4187
|
o("div", Tl, [
|
|
@@ -4377,7 +4383,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4377
4383
|
o("button", {
|
|
4378
4384
|
class: "fx-perm-btn fx-perm-btn--primary",
|
|
4379
4385
|
disabled: Te.value,
|
|
4380
|
-
onClick:
|
|
4386
|
+
onClick: C
|
|
4381
4387
|
}, u(t("Bağlantı oluştur", "Create link")), 9, pi)
|
|
4382
4388
|
]),
|
|
4383
4389
|
o("button", {
|
|
@@ -4504,22 +4510,24 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4504
4510
|
}, Ki = { class: "fe-recents__header" }, ji = { class: "fe-modal__head" }, Hi = { class: "fe-modal__title" }, Vi = { class: "fe-modal__body" }, Yi = {
|
|
4505
4511
|
key: 0,
|
|
4506
4512
|
class: "fe-toast"
|
|
4507
|
-
}, sa = "brf-file-explorer:view-mode", zt = "brf-file-explorer:path", gt = "application/x-brf-files", qi = /* @__PURE__ */
|
|
4513
|
+
}, sa = "brf-file-explorer:view-mode", zt = "brf-file-explorer:path", gt = "application/x-brf-files", qi = /* @__PURE__ */ $e({
|
|
4508
4514
|
__name: "FileExplorer",
|
|
4509
4515
|
props: {
|
|
4510
4516
|
config: {}
|
|
4511
4517
|
},
|
|
4512
4518
|
emits: ["share-created", "file-opened", "error", "upload-progress", "selection-change", "navigate"],
|
|
4513
4519
|
setup(s, { expose: r, emit: e }) {
|
|
4514
|
-
const i = s, c = e, t = sn(i.config),
|
|
4515
|
-
function
|
|
4520
|
+
const i = s, c = e, t = sn(i.config), y = wn(t, { reload: () => m() }), d = y.presenceUsers;
|
|
4521
|
+
function h(a) {
|
|
4516
4522
|
const n = (a || "").replace(/^\/+|\/+$/g, "");
|
|
4517
|
-
|
|
4523
|
+
if (n === ".trash" || n.startsWith(".trash/")) return null;
|
|
4524
|
+
const _ = xe(n);
|
|
4525
|
+
return !_ || !_.includes("://") || _.startsWith("://") ? null : _;
|
|
4518
4526
|
}
|
|
4519
4527
|
Qe(() => {
|
|
4520
|
-
|
|
4521
|
-
}), it(() =>
|
|
4522
|
-
const
|
|
4528
|
+
y.start(), y.subscribe(h(v.value));
|
|
4529
|
+
}), it(() => y.stop());
|
|
4530
|
+
const $ = rn(i.config, t), A = vn(i.config, t, {
|
|
4523
4531
|
onSettled: (a) => {
|
|
4524
4532
|
if (a.status === "error")
|
|
4525
4533
|
oe(a.error_message || "İşlem başarısız");
|
|
@@ -4529,46 +4537,46 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4529
4537
|
}
|
|
4530
4538
|
m();
|
|
4531
4539
|
}
|
|
4532
|
-
}), j = b(!1), L = (i.config.rootPath || "").trim(),
|
|
4533
|
-
let
|
|
4540
|
+
}), j = b(!1), L = (i.config.rootPath || "").trim(), O = L.replace("://", "/").replace(/^\/+|\/+$/g, ""), T = O || i.config.initialPath || "", v = b(T), B = b(i.config.defaultAdapter || "brf"), U = b(T), I = b([]), J = b(""), g = b(""), w = tn((a, n) => {
|
|
4541
|
+
let _ = (() => {
|
|
4534
4542
|
try {
|
|
4535
|
-
const
|
|
4536
|
-
if (
|
|
4543
|
+
const E = localStorage.getItem(sa);
|
|
4544
|
+
if (E === "list" || E === "grid") return E;
|
|
4537
4545
|
} catch {
|
|
4538
4546
|
}
|
|
4539
4547
|
return i.config.viewMode ?? "list";
|
|
4540
4548
|
})();
|
|
4541
4549
|
return {
|
|
4542
4550
|
get() {
|
|
4543
|
-
return a(),
|
|
4551
|
+
return a(), _;
|
|
4544
4552
|
},
|
|
4545
|
-
set(
|
|
4546
|
-
if (
|
|
4547
|
-
|
|
4553
|
+
set(E) {
|
|
4554
|
+
if (E !== _) {
|
|
4555
|
+
_ = E;
|
|
4548
4556
|
try {
|
|
4549
|
-
localStorage.setItem(sa,
|
|
4557
|
+
localStorage.setItem(sa, E);
|
|
4550
4558
|
} catch {
|
|
4551
4559
|
}
|
|
4552
4560
|
n();
|
|
4553
4561
|
}
|
|
4554
4562
|
}
|
|
4555
4563
|
};
|
|
4556
|
-
}), p = b(""),
|
|
4564
|
+
}), p = b(""), S = b(!1), k = b(""), G = ee(() => S.value), W = ee(() => i.config.locale || "tr"), Z = ee(() => {
|
|
4557
4565
|
const a = (v.value ?? "").replace(/^\/+|\/+$/g, "");
|
|
4558
|
-
return
|
|
4566
|
+
return O && a === O ? !1 : a.length > 0;
|
|
4559
4567
|
}), be = ee(() => we.value ? !(v.value ?? "").replace(/^\/+|\/+$/g, "") : !1);
|
|
4560
4568
|
function re() {
|
|
4561
|
-
if (
|
|
4569
|
+
if (S.value) {
|
|
4562
4570
|
m(k.value);
|
|
4563
4571
|
return;
|
|
4564
4572
|
}
|
|
4565
4573
|
const a = (v.value ?? "").replace(/^\/+|\/+$/g, "");
|
|
4566
|
-
if (!a || a ===
|
|
4574
|
+
if (!a || a === O) return;
|
|
4567
4575
|
const n = a.lastIndexOf("/");
|
|
4568
|
-
let
|
|
4569
|
-
|
|
4576
|
+
let _ = n === -1 ? "" : a.slice(0, n);
|
|
4577
|
+
O && !(_ === O || _.startsWith(O + "/")) && (_ = O), m(_);
|
|
4570
4578
|
}
|
|
4571
|
-
const { t: Y } = He(W), q = ln(() =>
|
|
4579
|
+
const { t: Y } = He(W), q = ln(() => I.value);
|
|
4572
4580
|
We(
|
|
4573
4581
|
() => [...q.selected.value],
|
|
4574
4582
|
() => {
|
|
@@ -4577,26 +4585,26 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4577
4585
|
q.nodes.value.map((n) => ({ path: n.path, basename: n.basename, type: n.type }))
|
|
4578
4586
|
);
|
|
4579
4587
|
const a = q.nodes.value.filter((n) => n.type === "file");
|
|
4580
|
-
|
|
4588
|
+
y.setFocus(a.length === 1 ? a[0].basename : null);
|
|
4581
4589
|
}
|
|
4582
4590
|
);
|
|
4583
4591
|
const se = b({ mode: null, items: [], sourcePath: null }), ne = b(null), ye = b(/* @__PURE__ */ new Set()), de = b(!1), Ie = b(!1), Be = b(null), Ke = b(0);
|
|
4584
4592
|
async function Me() {
|
|
4585
4593
|
try {
|
|
4586
|
-
const a = await mt(), n = i.config.apiBase ?? "",
|
|
4594
|
+
const a = await mt(), n = i.config.apiBase ?? "", _ = await fetch(`${n}/api/files/manager/star/list?limit=500`, {
|
|
4587
4595
|
headers: a,
|
|
4588
4596
|
credentials: "include"
|
|
4589
4597
|
});
|
|
4590
|
-
if (!
|
|
4591
|
-
const
|
|
4598
|
+
if (!_.ok) return;
|
|
4599
|
+
const E = await _.json(), X = Array.isArray(E) ? E : Array.isArray(E == null ? void 0 : E.entries) ? E.entries : Array.isArray(E == null ? void 0 : E.nodes) ? E.nodes : [];
|
|
4592
4600
|
ye.value = new Set(X.map((K) => K.id).filter((K) => typeof K == "number"));
|
|
4593
4601
|
} catch {
|
|
4594
4602
|
}
|
|
4595
4603
|
}
|
|
4596
4604
|
function Ue(a, n) {
|
|
4597
4605
|
if (typeof a.id != "number") return;
|
|
4598
|
-
const
|
|
4599
|
-
n ?
|
|
4606
|
+
const _ = new Set(ye.value);
|
|
4607
|
+
n ? _.add(a.id) : _.delete(a.id), ye.value = _;
|
|
4600
4608
|
}
|
|
4601
4609
|
async function Re(a) {
|
|
4602
4610
|
if (typeof a.id == "number")
|
|
@@ -4625,22 +4633,22 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4625
4633
|
de.value = !1, vt(n);
|
|
4626
4634
|
}
|
|
4627
4635
|
const Te = ee(() => {
|
|
4628
|
-
var n,
|
|
4636
|
+
var n, _, E;
|
|
4629
4637
|
if (i.config.onlyOfficeBase) return i.config.onlyOfficeBase;
|
|
4630
|
-
const a = (
|
|
4631
|
-
return a && !ta(a) ? null : ((
|
|
4638
|
+
const a = (_ = (n = ne.value) == null ? void 0 : n.external) == null ? void 0 : _.onlyoffice;
|
|
4639
|
+
return a && !ta(a) ? null : ((E = ne.value) == null ? void 0 : E.onlyoffice_url) || null;
|
|
4632
4640
|
}), Ge = ee(() => Te.value && t.endpoints.onlyOfficeConfig || null), P = ee(() => {
|
|
4633
|
-
var
|
|
4641
|
+
var _, E, X;
|
|
4634
4642
|
const a = i.config.drawioUrl || i.config.drawioBase;
|
|
4635
4643
|
if (a) return a;
|
|
4636
|
-
const n = (
|
|
4644
|
+
const n = (E = (_ = ne.value) == null ? void 0 : _.external) == null ? void 0 : E.drawio;
|
|
4637
4645
|
return n && !ta(n) ? null : ((X = ne.value) == null ? void 0 : X.drawio_url) || null;
|
|
4638
4646
|
}), N = ee(
|
|
4639
4647
|
() => {
|
|
4640
4648
|
var a;
|
|
4641
4649
|
return i.config.convertBase || ((a = ne.value) == null ? void 0 : a.convert_url) || null;
|
|
4642
4650
|
}
|
|
4643
|
-
), F = b([]), Q = b(null), ge = b(!1), pe = b(!1), ce = b(!1), fe = b(!1),
|
|
4651
|
+
), F = b([]), Q = b(null), ge = b(!1), pe = b(!1), ce = b(!1), fe = b(!1), Ce = b(!1), Ve = b(null), Xe = b(null), tt = b(null), at = b(null), nt = b("edit"), je = b(!1), ze = b(null), ct = b(!1), Ye = b(null);
|
|
4644
4652
|
function ot(a) {
|
|
4645
4653
|
return a === void 0 || a === "editor" || a === "owner";
|
|
4646
4654
|
}
|
|
@@ -4648,7 +4656,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4648
4656
|
var n;
|
|
4649
4657
|
return a.length === 1 && typeof ((n = a[0]) == null ? void 0 : n.perm) == "string" ? a[0].perm : J.value;
|
|
4650
4658
|
}
|
|
4651
|
-
const M = ee(() => ot(J.value)),
|
|
4659
|
+
const M = ee(() => ot(J.value)), C = b(null), R = b(null), ae = b(null), te = b(null);
|
|
4652
4660
|
let me;
|
|
4653
4661
|
function oe(a) {
|
|
4654
4662
|
te.value = a, me && clearTimeout(me), me = setTimeout(() => te.value = null, 2500);
|
|
@@ -4657,19 +4665,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4657
4665
|
function st(a) {
|
|
4658
4666
|
const n = a.replace(/^\/+|\/+$/g, "");
|
|
4659
4667
|
if (!n) return { adapter: "", rel: "" };
|
|
4660
|
-
const
|
|
4661
|
-
return
|
|
4668
|
+
const _ = n.indexOf("/");
|
|
4669
|
+
return _ === -1 ? { adapter: n, rel: "" } : { adapter: n.slice(0, _), rel: n.slice(_ + 1) };
|
|
4662
4670
|
}
|
|
4663
4671
|
function ut(a) {
|
|
4664
4672
|
if (a.includes("://")) return a;
|
|
4665
|
-
const { adapter: n, rel:
|
|
4666
|
-
return n ?
|
|
4673
|
+
const { adapter: n, rel: _ } = st(a);
|
|
4674
|
+
return n ? _ ? `${n}://${_}` : `${n}://` : "";
|
|
4667
4675
|
}
|
|
4668
4676
|
function rt(a) {
|
|
4669
4677
|
const n = a.indexOf("://");
|
|
4670
4678
|
if (n === -1) return a.replace(/^\/+|\/+$/g, "");
|
|
4671
|
-
const
|
|
4672
|
-
return
|
|
4679
|
+
const _ = a.slice(0, n), E = a.slice(n + 3).replace(/^\/+|\/+$/g, "");
|
|
4680
|
+
return E ? `${_}/${E}` : _;
|
|
4673
4681
|
}
|
|
4674
4682
|
function x() {
|
|
4675
4683
|
return (i.config.storages ?? []).map((n) => ({
|
|
@@ -4686,39 +4694,39 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4686
4694
|
}));
|
|
4687
4695
|
}
|
|
4688
4696
|
async function m(a) {
|
|
4689
|
-
j.value = !0,
|
|
4697
|
+
j.value = !0, S.value = !1;
|
|
4690
4698
|
let n = a ?? v.value ?? "";
|
|
4691
4699
|
try {
|
|
4692
|
-
if (
|
|
4700
|
+
if (g.value = "", O) {
|
|
4693
4701
|
const Ee = String(n).replace(/^\/+|\/+$/g, "");
|
|
4694
|
-
(!Ee || !(Ee ===
|
|
4702
|
+
(!Ee || !(Ee === O || Ee.startsWith(O + "/"))) && (n = O);
|
|
4695
4703
|
}
|
|
4696
4704
|
if (we.value && !ut(n)) {
|
|
4697
|
-
v.value = "", B.value = "", U.value = "",
|
|
4705
|
+
v.value = "", B.value = "", U.value = "", I.value = x();
|
|
4698
4706
|
return;
|
|
4699
4707
|
}
|
|
4700
|
-
const
|
|
4701
|
-
B.value =
|
|
4702
|
-
const X = V(
|
|
4703
|
-
!ve && K && De && (
|
|
4708
|
+
const _ = we.value ? ut(n) : xe(n), E = p.value ? await t.search(_, p.value) : await t.index(_);
|
|
4709
|
+
B.value = E.adapter, U.value = E.dirname, J.value = E.perm || "", I.value = (E.files || []).filter((Ee) => !(Ee.path.includes(".thumbs") || Ee.path.includes(".versions") || Ee.basename === ".versions" || Ee.basename === ".trash" || Ee.basename === ".keepdir"));
|
|
4710
|
+
const X = V(E.dirname), K = X === "fileman" || X === "", ve = X.startsWith("fileman/.trash"), De = i.config.trashVisible !== !1;
|
|
4711
|
+
!ve && K && De && (I.value.unshift({
|
|
4704
4712
|
type: "dir",
|
|
4705
|
-
path: `${
|
|
4713
|
+
path: `${E.adapter}://fileman/.trash`,
|
|
4706
4714
|
basename: ".trash",
|
|
4707
4715
|
extension: "",
|
|
4708
|
-
storage:
|
|
4716
|
+
storage: E.adapter,
|
|
4709
4717
|
visibility: "private",
|
|
4710
4718
|
size: 0,
|
|
4711
4719
|
file_size: 0,
|
|
4712
4720
|
mime_type: "inode/directory",
|
|
4713
4721
|
extra_metadata: {}
|
|
4714
|
-
}), D(
|
|
4715
|
-
} catch (
|
|
4716
|
-
const
|
|
4722
|
+
}), D(E.adapter)), v.value = we.value ? rt(E.dirname) : V(E.dirname);
|
|
4723
|
+
} catch (_) {
|
|
4724
|
+
const E = _ instanceof Error ? _.message : String(_), X = _.status;
|
|
4717
4725
|
if (X === 404 || X === 403) {
|
|
4718
|
-
|
|
4726
|
+
g.value = String(n), I.value = [], c("error", { message: E, context: { path: a } });
|
|
4719
4727
|
return;
|
|
4720
4728
|
}
|
|
4721
|
-
c("error", { message:
|
|
4729
|
+
c("error", { message: E, context: { path: a } }), oe(E);
|
|
4722
4730
|
} finally {
|
|
4723
4731
|
j.value = !1;
|
|
4724
4732
|
}
|
|
@@ -4728,27 +4736,27 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4728
4736
|
return n === -1 ? a : a.slice(n + 3);
|
|
4729
4737
|
}
|
|
4730
4738
|
function ue() {
|
|
4731
|
-
|
|
4739
|
+
g.value = "", m("");
|
|
4732
4740
|
}
|
|
4733
4741
|
async function D(a) {
|
|
4734
4742
|
try {
|
|
4735
|
-
const { entries: n } = await t.listTrash(a),
|
|
4736
|
-
if (!
|
|
4737
|
-
let
|
|
4743
|
+
const { entries: n } = await t.listTrash(a), _ = I.value.find((K) => K.basename === ".trash");
|
|
4744
|
+
if (!_) return;
|
|
4745
|
+
let E = 0, X = 0;
|
|
4738
4746
|
for (const K of n) {
|
|
4739
|
-
|
|
4747
|
+
E += K.size || 0;
|
|
4740
4748
|
const ve = Date.parse(K.deleted_at);
|
|
4741
4749
|
!Number.isNaN(ve) && ve > X && (X = ve);
|
|
4742
4750
|
}
|
|
4743
|
-
|
|
4751
|
+
_.size = E, X > 0 && (_.last_modified = X);
|
|
4744
4752
|
} catch {
|
|
4745
4753
|
}
|
|
4746
4754
|
}
|
|
4747
4755
|
async function ie() {
|
|
4748
|
-
j.value = !0, k.value = B.value || "",
|
|
4756
|
+
j.value = !0, k.value = B.value || "", S.value = !0, q.clear();
|
|
4749
4757
|
try {
|
|
4750
4758
|
const { entries: a } = await t.listTrash();
|
|
4751
|
-
|
|
4759
|
+
I.value = a.map(
|
|
4752
4760
|
(n) => ({
|
|
4753
4761
|
type: "file",
|
|
4754
4762
|
id: n.id,
|
|
@@ -4769,7 +4777,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4769
4777
|
j.value = !1;
|
|
4770
4778
|
}
|
|
4771
4779
|
}
|
|
4772
|
-
function
|
|
4780
|
+
function xe(a) {
|
|
4773
4781
|
if (a && a.includes("://")) return a;
|
|
4774
4782
|
if (we.value) {
|
|
4775
4783
|
const n = ut(a ?? "");
|
|
@@ -4812,7 +4820,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4812
4820
|
if (a === "none") return "";
|
|
4813
4821
|
if (a === "localStorage") return $t();
|
|
4814
4822
|
const n = Nt();
|
|
4815
|
-
return n || a === "hash" ? n :
|
|
4823
|
+
return n || a === "hash" ? n : T ? "" : $t();
|
|
4816
4824
|
}
|
|
4817
4825
|
function ca(a) {
|
|
4818
4826
|
if (typeof window > "u") return;
|
|
@@ -4825,11 +4833,11 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4825
4833
|
}
|
|
4826
4834
|
if (n === "localStorage") return;
|
|
4827
4835
|
}
|
|
4828
|
-
const
|
|
4829
|
-
(window.location.hash || "") !==
|
|
4836
|
+
const _ = a ? a.split("/").map(encodeURIComponent).join("/") : "", E = _ ? `#${_}` : "";
|
|
4837
|
+
(window.location.hash || "") !== E && history.replaceState(
|
|
4830
4838
|
null,
|
|
4831
4839
|
"",
|
|
4832
|
-
|
|
4840
|
+
E || window.location.pathname + window.location.search
|
|
4833
4841
|
);
|
|
4834
4842
|
}
|
|
4835
4843
|
function Ut() {
|
|
@@ -4838,13 +4846,13 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4838
4846
|
a && a !== v.value && m(a);
|
|
4839
4847
|
}
|
|
4840
4848
|
We(v, (a) => {
|
|
4841
|
-
ca(a), c("navigate", { path: a }),
|
|
4849
|
+
ca(a), c("navigate", { path: a }), y.subscribe(h(a));
|
|
4842
4850
|
}), r({ reload: () => m() }), Qe(async () => {
|
|
4843
4851
|
var n;
|
|
4844
4852
|
At();
|
|
4845
4853
|
const a = ia();
|
|
4846
|
-
await m(a || void 0), await yt(), (n = R.value) == null || n.focus(), Me(), lt() && window.addEventListener("hashchange", Ut), t.endpoints.opsList &&
|
|
4847
|
-
ne.value =
|
|
4854
|
+
await m(a || void 0), await yt(), (n = R.value) == null || n.focus(), Me(), lt() && window.addEventListener("hashchange", Ut), t.endpoints.opsList && A.startPolling(), t.endpoints.capabilities && t.capabilities().then((_) => {
|
|
4855
|
+
ne.value = _;
|
|
4848
4856
|
}).catch(() => {
|
|
4849
4857
|
});
|
|
4850
4858
|
}), cn(R, {
|
|
@@ -4861,7 +4869,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4861
4869
|
},
|
|
4862
4870
|
onClose: () => {
|
|
4863
4871
|
var a;
|
|
4864
|
-
ge.value = !1, pe.value = !1, ce.value = !1, fe.value = !1,
|
|
4872
|
+
ge.value = !1, pe.value = !1, ce.value = !1, fe.value = !1, Ce.value = !1, (a = C.value) == null || a.hide();
|
|
4865
4873
|
},
|
|
4866
4874
|
onFocusSearch: () => {
|
|
4867
4875
|
var a;
|
|
@@ -4890,12 +4898,12 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4890
4898
|
return;
|
|
4891
4899
|
}
|
|
4892
4900
|
if (a.type === "dir") {
|
|
4893
|
-
const
|
|
4894
|
-
m(
|
|
4901
|
+
const _ = we.value ? rt(a.path) : V(a.path);
|
|
4902
|
+
m(_);
|
|
4895
4903
|
return;
|
|
4896
4904
|
}
|
|
4897
4905
|
const n = (a.extension || "").toLowerCase();
|
|
4898
|
-
nt.value = ot(a.perm ?? J.value) ? fa(n) : "view", at.value = a,
|
|
4906
|
+
nt.value = ot(a.perm ?? J.value) ? fa(n) : "view", at.value = a, Ce.value = !0, c("file-opened", { path: a.path, basename: a.basename }), Re(a);
|
|
4899
4907
|
}
|
|
4900
4908
|
const da = /* @__PURE__ */ new Set([
|
|
4901
4909
|
...ua,
|
|
@@ -4951,20 +4959,20 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4951
4959
|
const n = a ?? q.nodes.value;
|
|
4952
4960
|
if (n.length !== 0)
|
|
4953
4961
|
try {
|
|
4954
|
-
if (
|
|
4962
|
+
if (S.value) {
|
|
4955
4963
|
const X = n.map((ve) => ve.id).filter((ve) => typeof ve == "number"), { restored: K } = await t.restoreIds(X);
|
|
4956
4964
|
oe(`${K} öğe geri getirildi`), q.clear(), await ie();
|
|
4957
4965
|
return;
|
|
4958
4966
|
}
|
|
4959
4967
|
if (!t.endpoints.restore) return;
|
|
4960
|
-
const
|
|
4961
|
-
oe(`${
|
|
4962
|
-
} catch (
|
|
4963
|
-
c("error", { message:
|
|
4968
|
+
const _ = n.map((X) => X.path), { restored: E } = await t.restore(_);
|
|
4969
|
+
oe(`${E} öğe geri getirildi`), q.clear(), await m();
|
|
4970
|
+
} catch (_) {
|
|
4971
|
+
c("error", { message: _.message, context: { op: "restore" } });
|
|
4964
4972
|
}
|
|
4965
4973
|
}
|
|
4966
4974
|
function Rt(a) {
|
|
4967
|
-
nt.value = "view", at.value = a,
|
|
4975
|
+
nt.value = "view", at.value = a, Ce.value = !0, Re(a);
|
|
4968
4976
|
}
|
|
4969
4977
|
function va(a) {
|
|
4970
4978
|
if (a.type === "dir") {
|
|
@@ -4976,12 +4984,12 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4976
4984
|
Rt(a);
|
|
4977
4985
|
return;
|
|
4978
4986
|
}
|
|
4979
|
-
const n = (a.extension || "").toLowerCase(),
|
|
4980
|
-
if (!
|
|
4987
|
+
const n = (a.extension || "").toLowerCase(), _ = i.config.openPageBase;
|
|
4988
|
+
if (!_) {
|
|
4981
4989
|
vt(a);
|
|
4982
4990
|
return;
|
|
4983
4991
|
}
|
|
4984
|
-
const
|
|
4992
|
+
const E = _.includes("?") ? "&" : "?", X = `${_}${E}path=${encodeURIComponent(a.path)}&type=${encodeURIComponent(n)}&mode=edit`;
|
|
4985
4993
|
window.open(X, "_blank", "noopener"), c("file-opened", { path: a.path, basename: a.basename }), Re(a);
|
|
4986
4994
|
}
|
|
4987
4995
|
const _t = b("selection"), Ot = b(""), ma = b(""), ha = ee(() => {
|
|
@@ -4997,16 +5005,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
4997
5005
|
await jt(a, n);
|
|
4998
5006
|
}
|
|
4999
5007
|
async function Ft(a, n) {
|
|
5000
|
-
var
|
|
5001
|
-
_t.value = "selection", q.has(a.path) || (q.click(a.path), await yt()), (
|
|
5008
|
+
var _;
|
|
5009
|
+
_t.value = "selection", q.has(a.path) || (q.click(a.path), await yt()), (_ = C.value) == null || _.show({ clientX: n.clientX, clientY: n.clientY }, q.nodes.value);
|
|
5002
5010
|
}
|
|
5003
5011
|
function ba(a) {
|
|
5004
5012
|
var n;
|
|
5005
|
-
a.preventDefault(), _t.value = "selection", q.clear(), (n =
|
|
5013
|
+
a.preventDefault(), _t.value = "selection", q.clear(), (n = C.value) == null || n.show({ clientX: a.clientX, clientY: a.clientY }, []);
|
|
5006
5014
|
}
|
|
5007
5015
|
function _a(a) {
|
|
5008
5016
|
var n;
|
|
5009
|
-
_t.value = "breadcrumb", Ot.value = a.adapterPath, ma.value = a.label, (n =
|
|
5017
|
+
_t.value = "breadcrumb", Ot.value = a.adapterPath, ma.value = a.label, (n = C.value) == null || n.show({ clientX: a.x, clientY: a.y }, []);
|
|
5010
5018
|
}
|
|
5011
5019
|
const ga = ee(() => {
|
|
5012
5020
|
if (_t.value === "breadcrumb")
|
|
@@ -5014,15 +5022,15 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5014
5022
|
{ key: "open", label: Y("ctx.open"), icon: "↗" },
|
|
5015
5023
|
{ key: "copy-path", label: Y("breadcrumb.copy_path"), icon: "📋" }
|
|
5016
5024
|
];
|
|
5017
|
-
const a = q.nodes.value, n = a.length > 0,
|
|
5025
|
+
const a = q.nodes.value, n = a.length > 0, _ = a.length === 1;
|
|
5018
5026
|
if (G.value)
|
|
5019
5027
|
return n ? [
|
|
5020
5028
|
{ key: "restore", label: Y("ctx.restore"), icon: "↩" },
|
|
5021
5029
|
{ divider: !0, key: "sep1", label: "" },
|
|
5022
5030
|
{ key: "delete", label: Y("ctx.delete_perm"), icon: "🗑", danger: !0 }
|
|
5023
5031
|
] : [];
|
|
5024
|
-
const
|
|
5025
|
-
return we.value &&
|
|
5032
|
+
const E = (v.value ?? "").replace(/^\/+|\/+$/g, "");
|
|
5033
|
+
return we.value && E === "" ? n ? _ ? [
|
|
5026
5034
|
{ key: "open", label: Y("ctx.open"), icon: "↗" }
|
|
5027
5035
|
] : [] : [] : n ? Kt(a) : ot(J.value) ? [
|
|
5028
5036
|
{ key: "new-folder", label: Y("toolbar.new_folder"), icon: "📁" },
|
|
@@ -5031,16 +5039,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5031
5039
|
});
|
|
5032
5040
|
function Kt(a) {
|
|
5033
5041
|
var Qt, Zt;
|
|
5034
|
-
const n = a.length > 0,
|
|
5042
|
+
const n = a.length > 0, _ = a.length === 1, E = _ && ((Qt = a[0]) == null ? void 0 : Qt.type) === "file", X = W.value === "en" ? "Tags…" : "Etiketler…", K = _ && typeof ((Zt = a[0]) == null ? void 0 : Zt.id) == "number", ve = W.value === "en" ? "Copy node id" : "Node id'yi kopyala", De = pt(a), Ee = ot(De), Wa = W.value === "en" ? "Share / Permissions" : "Paylaş / İzinler";
|
|
5035
5043
|
return [
|
|
5036
|
-
{ key: "open", label: Y("ctx.open"), icon: "↗", hidden: !
|
|
5037
|
-
{ key: "preview", label: Y("ctx.preview"), icon: "👁", hidden: !
|
|
5038
|
-
{ key: "download", label: Y("ctx.download"), icon: "⬇", hidden: !
|
|
5039
|
-
{ key: "convert", label: Y("ctx.convert"), icon: "🔄", hidden: !
|
|
5040
|
-
{ key: "access", label: Wa, icon: "🔗", hidden: !
|
|
5044
|
+
{ key: "open", label: Y("ctx.open"), icon: "↗", hidden: !_ },
|
|
5045
|
+
{ key: "preview", label: Y("ctx.preview"), icon: "👁", hidden: !_, disabled: !E },
|
|
5046
|
+
{ key: "download", label: Y("ctx.download"), icon: "⬇", hidden: !_, disabled: !E },
|
|
5047
|
+
{ key: "convert", label: Y("ctx.convert"), icon: "🔄", hidden: !_ || !N.value || !Ee, disabled: !E },
|
|
5048
|
+
{ key: "access", label: Wa, icon: "🔗", hidden: !_ || !Ee },
|
|
5041
5049
|
{ key: "copy-id", label: ve, icon: "🆔", hidden: !K, disabled: !K },
|
|
5042
5050
|
{ divider: !0, key: "sep1", label: "", hidden: !Ee },
|
|
5043
|
-
{ key: "rename", label: Y("ctx.rename"), icon: "✎", hidden: !
|
|
5051
|
+
{ key: "rename", label: Y("ctx.rename"), icon: "✎", hidden: !_ || !Ee, disabled: !_ },
|
|
5044
5052
|
{ key: "cut", label: Y("ctx.cut"), icon: "✂", hidden: !n || !Ee, disabled: !n },
|
|
5045
5053
|
{ key: "copy", label: Y("ctx.copy"), icon: "❐", hidden: !n, disabled: !n },
|
|
5046
5054
|
{ key: "paste", label: Y("ctx.paste"), icon: "📋", hidden: !Ee, disabled: !se.value.mode },
|
|
@@ -5068,7 +5076,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5068
5076
|
await jt(a.key, n);
|
|
5069
5077
|
}
|
|
5070
5078
|
async function jt(a, n) {
|
|
5071
|
-
var
|
|
5079
|
+
var _;
|
|
5072
5080
|
switch (a) {
|
|
5073
5081
|
case "open":
|
|
5074
5082
|
n[0] && va(n[0]);
|
|
@@ -5090,10 +5098,10 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5090
5098
|
break;
|
|
5091
5099
|
case "copy-id":
|
|
5092
5100
|
if (n[0] && typeof n[0].id == "number") {
|
|
5093
|
-
const
|
|
5094
|
-
(
|
|
5095
|
-
() => oe(W.value === "en" ? `Node id ${
|
|
5096
|
-
() => oe(`#${
|
|
5101
|
+
const E = n[0].id;
|
|
5102
|
+
(_ = navigator.clipboard) == null || _.writeText(String(E)).then(
|
|
5103
|
+
() => oe(W.value === "en" ? `Node id ${E} copied` : `Node id ${E} kopyalandı`),
|
|
5104
|
+
() => oe(`#${E}`)
|
|
5097
5105
|
);
|
|
5098
5106
|
}
|
|
5099
5107
|
break;
|
|
@@ -5136,17 +5144,17 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5136
5144
|
const a = se.value;
|
|
5137
5145
|
if (!(!a.mode || a.items.length === 0))
|
|
5138
5146
|
try {
|
|
5139
|
-
const n = a.items.map((X) => X.path),
|
|
5140
|
-
if (a.mode === "cut" &&
|
|
5147
|
+
const n = a.items.map((X) => X.path), _ = a.sourcePath || "";
|
|
5148
|
+
if (a.mode === "cut" && _ === v.value) {
|
|
5141
5149
|
oe("Aynı klasöre kesilemez");
|
|
5142
5150
|
return;
|
|
5143
5151
|
}
|
|
5144
5152
|
if (a.mode === "cut") {
|
|
5145
|
-
const { op: X } = await t.moveAsync(n,
|
|
5146
|
-
|
|
5153
|
+
const { op: X } = await t.moveAsync(n, xe(v.value), xe(_) || void 0);
|
|
5154
|
+
A.register(X), oe("Taşıma kuyruğa alındı");
|
|
5147
5155
|
} else {
|
|
5148
|
-
const { op: X } = await t.copy(n,
|
|
5149
|
-
|
|
5156
|
+
const { op: X } = await t.copy(n, xe(v.value));
|
|
5157
|
+
A.register(X), oe("Kopyalama kuyruğa alındı");
|
|
5150
5158
|
}
|
|
5151
5159
|
se.value = { mode: null, items: [], sourcePath: null };
|
|
5152
5160
|
} catch (n) {
|
|
@@ -5155,8 +5163,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5155
5163
|
}
|
|
5156
5164
|
async function Ca(a) {
|
|
5157
5165
|
try {
|
|
5158
|
-
const { op: n } = await t.copy([a.path],
|
|
5159
|
-
|
|
5166
|
+
const { op: n } = await t.copy([a.path], xe(v.value));
|
|
5167
|
+
A.register(n);
|
|
5160
5168
|
} catch (n) {
|
|
5161
5169
|
c("error", { message: n.message, context: { op: "duplicate" } });
|
|
5162
5170
|
}
|
|
@@ -5167,7 +5175,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5167
5175
|
}
|
|
5168
5176
|
async function Ta(a) {
|
|
5169
5177
|
try {
|
|
5170
|
-
await t.newFolder(
|
|
5178
|
+
await t.newFolder(xe(v.value), a), ge.value = !1, await m();
|
|
5171
5179
|
} catch (n) {
|
|
5172
5180
|
c("error", { message: n.message, context: { op: "newfolder" } });
|
|
5173
5181
|
}
|
|
@@ -5176,13 +5184,13 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5176
5184
|
const n = Ve.value;
|
|
5177
5185
|
if (n)
|
|
5178
5186
|
try {
|
|
5179
|
-
await t.rename(
|
|
5180
|
-
} catch (
|
|
5181
|
-
c("error", { message:
|
|
5187
|
+
await t.rename(xe(v.value), n.path, a), pe.value = !1, Ve.value = null, await m();
|
|
5188
|
+
} catch (_) {
|
|
5189
|
+
c("error", { message: _.message, context: { op: "rename" } });
|
|
5182
5190
|
}
|
|
5183
5191
|
}
|
|
5184
5192
|
async function Pa() {
|
|
5185
|
-
if (
|
|
5193
|
+
if (S.value) {
|
|
5186
5194
|
ce.value = !1, oe("Çöpteki öğeler saklama süresi sonunda otomatik silinir. Kalıcı silme yönetici panelinden yapılır.");
|
|
5187
5195
|
return;
|
|
5188
5196
|
}
|
|
@@ -5193,10 +5201,10 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5193
5201
|
}
|
|
5194
5202
|
try {
|
|
5195
5203
|
if (t.endpoints.deleteAsync) {
|
|
5196
|
-
const { op: n } = await t.deleteAsync(a,
|
|
5197
|
-
|
|
5204
|
+
const { op: n } = await t.deleteAsync(a, xe(v.value));
|
|
5205
|
+
A.register(n), oe("Silme kuyruğa alındı");
|
|
5198
5206
|
} else
|
|
5199
|
-
await t.deleteItems(
|
|
5207
|
+
await t.deleteItems(xe(v.value), a), await m();
|
|
5200
5208
|
ce.value = !1, q.clear();
|
|
5201
5209
|
} catch (n) {
|
|
5202
5210
|
c("error", { message: n.message, context: { op: "delete" } });
|
|
@@ -5215,16 +5223,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5215
5223
|
const n = Xe.value;
|
|
5216
5224
|
if (n)
|
|
5217
5225
|
try {
|
|
5218
|
-
const { share:
|
|
5226
|
+
const { share: _ } = await t.createShare({
|
|
5219
5227
|
path: n.path,
|
|
5220
5228
|
// qualified `<adapter>://<rel>`
|
|
5221
5229
|
password: a.password,
|
|
5222
5230
|
expires_at: a.expires_at,
|
|
5223
5231
|
max_downloads: a.max_downloads
|
|
5224
5232
|
});
|
|
5225
|
-
tt.value =
|
|
5226
|
-
} catch (
|
|
5227
|
-
c("error", { message:
|
|
5233
|
+
tt.value = _, c("share-created", { path: n.path, url: _.url, pin: _.password_pin ?? null });
|
|
5234
|
+
} catch (_) {
|
|
5235
|
+
c("error", { message: _.message, context: { op: "share" } });
|
|
5228
5236
|
}
|
|
5229
5237
|
}
|
|
5230
5238
|
function Ba() {
|
|
@@ -5239,35 +5247,35 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5239
5247
|
(a = Q.value) == null || a.click();
|
|
5240
5248
|
}
|
|
5241
5249
|
function za(a) {
|
|
5242
|
-
const n = a.target,
|
|
5243
|
-
n.value = "", Vt(
|
|
5250
|
+
const n = a.target, _ = n.files ? Array.from(n.files) : [];
|
|
5251
|
+
n.value = "", Vt(_);
|
|
5244
5252
|
}
|
|
5245
5253
|
async function Vt(a) {
|
|
5246
5254
|
if (a.length === 0) return;
|
|
5247
5255
|
const n = !!(t.endpoints.uploadInit && t.endpoints.uploadFinalize);
|
|
5248
|
-
for (const
|
|
5249
|
-
n &&
|
|
5256
|
+
for (const _ of a)
|
|
5257
|
+
n && _.size >= 10 * 1024 * 1024 && await Na(_) || await La(_);
|
|
5250
5258
|
await m();
|
|
5251
5259
|
}
|
|
5252
5260
|
async function La(a) {
|
|
5253
|
-
const n = crypto.randomUUID(),
|
|
5261
|
+
const n = crypto.randomUUID(), _ = xe(v.value);
|
|
5254
5262
|
F.value = [
|
|
5255
5263
|
...F.value,
|
|
5256
|
-
{ id: n, file: a, path:
|
|
5264
|
+
{ id: n, file: a, path: _, totalBytes: a.size, uploadedBytes: 0, percent: 0, status: "uploading", cancel() {
|
|
5257
5265
|
} }
|
|
5258
5266
|
];
|
|
5259
|
-
const
|
|
5267
|
+
const E = (X) => {
|
|
5260
5268
|
const K = F.value.findIndex((De) => De.id === n);
|
|
5261
5269
|
if (K === -1) return;
|
|
5262
5270
|
const ve = [...F.value];
|
|
5263
5271
|
ve[K] = { ...ve[K], ...X }, F.value = ve;
|
|
5264
5272
|
};
|
|
5265
5273
|
try {
|
|
5266
|
-
await t.uploadMultipart(
|
|
5267
|
-
|
|
5268
|
-
}),
|
|
5274
|
+
await t.uploadMultipart(_, [a], (X) => {
|
|
5275
|
+
E({ percent: X, uploadedBytes: Math.round(X / 100 * a.size) }), c("upload-progress", { uploadId: n, percent: X, done: X >= 100 });
|
|
5276
|
+
}), E({ percent: 100, uploadedBytes: a.size, status: "done" }), c("upload-progress", { uploadId: n, percent: 100, done: !0 });
|
|
5269
5277
|
} catch (X) {
|
|
5270
|
-
|
|
5278
|
+
E({ status: "error" }), c("error", {
|
|
5271
5279
|
message: X.message,
|
|
5272
5280
|
context: { op: "upload", file: a.name }
|
|
5273
5281
|
});
|
|
@@ -5275,31 +5283,31 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5275
5283
|
}
|
|
5276
5284
|
async function Na(a) {
|
|
5277
5285
|
const n = crypto.randomUUID();
|
|
5278
|
-
let
|
|
5286
|
+
let _ = !1;
|
|
5279
5287
|
try {
|
|
5280
|
-
return await
|
|
5281
|
-
path:
|
|
5288
|
+
return await $.uploadFile({
|
|
5289
|
+
path: xe(v.value),
|
|
5282
5290
|
file: a,
|
|
5283
|
-
onProgress: (
|
|
5284
|
-
if (
|
|
5291
|
+
onProgress: (E) => {
|
|
5292
|
+
if (_) {
|
|
5285
5293
|
const X = F.value.findIndex((K) => K.id === n);
|
|
5286
5294
|
if (X !== -1) {
|
|
5287
5295
|
const K = [...F.value];
|
|
5288
|
-
K[X] = { ...
|
|
5296
|
+
K[X] = { ...E, id: n }, F.value = K;
|
|
5289
5297
|
}
|
|
5290
5298
|
} else {
|
|
5291
|
-
if (
|
|
5292
|
-
F.value = [...F.value, { ...
|
|
5299
|
+
if (E.status !== "uploading" && E.uploadedBytes <= 0) return;
|
|
5300
|
+
F.value = [...F.value, { ...E, id: n }], _ = !0;
|
|
5293
5301
|
}
|
|
5294
5302
|
c("upload-progress", {
|
|
5295
|
-
uploadId:
|
|
5296
|
-
percent:
|
|
5297
|
-
done:
|
|
5303
|
+
uploadId: E.uploadId ?? n,
|
|
5304
|
+
percent: E.percent,
|
|
5305
|
+
done: E.status === "done"
|
|
5298
5306
|
});
|
|
5299
5307
|
}
|
|
5300
5308
|
}), !0;
|
|
5301
5309
|
} catch {
|
|
5302
|
-
return
|
|
5310
|
+
return _ && (F.value = F.value.filter((E) => E.id !== n)), !1;
|
|
5303
5311
|
}
|
|
5304
5312
|
}
|
|
5305
5313
|
const dt = b(0), ft = b(!1);
|
|
@@ -5307,13 +5315,13 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5307
5315
|
const n = a.dataTransfer;
|
|
5308
5316
|
if (!n || n.types && n.types.includes(gt)) return !1;
|
|
5309
5317
|
if (n.items && n.items.length > 0) {
|
|
5310
|
-
let
|
|
5311
|
-
for (const
|
|
5312
|
-
if (
|
|
5313
|
-
|
|
5318
|
+
let _ = !1;
|
|
5319
|
+
for (const E of Array.from(n.items))
|
|
5320
|
+
if (E.kind === "file") {
|
|
5321
|
+
_ = !0;
|
|
5314
5322
|
break;
|
|
5315
5323
|
}
|
|
5316
|
-
return
|
|
5324
|
+
return _;
|
|
5317
5325
|
}
|
|
5318
5326
|
return n.types ? n.types.includes("Files") : !1;
|
|
5319
5327
|
}
|
|
@@ -5327,8 +5335,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5327
5335
|
It(a) && a.preventDefault();
|
|
5328
5336
|
}
|
|
5329
5337
|
function Ka(a) {
|
|
5330
|
-
var
|
|
5331
|
-
if ((
|
|
5338
|
+
var _, E;
|
|
5339
|
+
if ((_ = a.dataTransfer) != null && _.types.includes(gt)) {
|
|
5332
5340
|
dt.value = 0, ft.value = !1;
|
|
5333
5341
|
return;
|
|
5334
5342
|
}
|
|
@@ -5340,7 +5348,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5340
5348
|
oe(W.value === "en" ? "Read-only here" : "Burada yazma yetkiniz yok");
|
|
5341
5349
|
return;
|
|
5342
5350
|
}
|
|
5343
|
-
const n = (
|
|
5351
|
+
const n = (E = a.dataTransfer) != null && E.files ? Array.from(a.dataTransfer.files) : [];
|
|
5344
5352
|
n.length !== 0 && Vt(n);
|
|
5345
5353
|
}
|
|
5346
5354
|
function Yt(a) {
|
|
@@ -5348,8 +5356,8 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5348
5356
|
(n = a.dataTransfer) != null && n.types.includes("Files") && a.preventDefault();
|
|
5349
5357
|
}
|
|
5350
5358
|
function Wt(a) {
|
|
5351
|
-
const n = R.value,
|
|
5352
|
-
n &&
|
|
5359
|
+
const n = R.value, _ = a.target;
|
|
5360
|
+
n && _ && !n.contains(_) && a.preventDefault();
|
|
5353
5361
|
}
|
|
5354
5362
|
Qe(() => {
|
|
5355
5363
|
window.addEventListener("dragover", Yt), window.addEventListener("drop", Wt);
|
|
@@ -5364,35 +5372,35 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5364
5372
|
return;
|
|
5365
5373
|
}
|
|
5366
5374
|
q.has(a.path) || q.click(a.path);
|
|
5367
|
-
const
|
|
5368
|
-
n.dataTransfer.setData(gt, JSON.stringify(
|
|
5375
|
+
const _ = q.nodes.value.filter((E) => !Bt.value.has(E.path)).filter((E) => E.basename !== ".trash").map((E) => ({ path: E.path, basename: E.basename, type: E.type }));
|
|
5376
|
+
n.dataTransfer.setData(gt, JSON.stringify(_)), n.dataTransfer.setData("text/plain", _.map((E) => E.path).join(`
|
|
5369
5377
|
`)), n.dataTransfer.effectAllowed = "move";
|
|
5370
5378
|
}
|
|
5371
|
-
async function Jt(a, n,
|
|
5379
|
+
async function Jt(a, n, _) {
|
|
5372
5380
|
try {
|
|
5373
5381
|
if (t.endpoints.moveAsync) {
|
|
5374
|
-
const { op:
|
|
5375
|
-
|
|
5382
|
+
const { op: E } = await t.moveAsync(a, n, xe(v.value));
|
|
5383
|
+
A.register(E), oe("Taşıma kuyruğa alındı");
|
|
5376
5384
|
} else
|
|
5377
|
-
await t.move(
|
|
5385
|
+
await t.move(xe(v.value), a, n), await m();
|
|
5378
5386
|
q.clear();
|
|
5379
|
-
} catch (
|
|
5380
|
-
c("error", { message:
|
|
5387
|
+
} catch (E) {
|
|
5388
|
+
c("error", { message: E.message, context: { op: _, targetDir: n } });
|
|
5381
5389
|
}
|
|
5382
5390
|
}
|
|
5383
5391
|
async function qt(a, n) {
|
|
5384
5392
|
var ve;
|
|
5385
5393
|
if (a.type !== "dir") return;
|
|
5386
|
-
const
|
|
5387
|
-
if (!
|
|
5388
|
-
let
|
|
5394
|
+
const _ = (ve = n.dataTransfer) == null ? void 0 : ve.getData(gt);
|
|
5395
|
+
if (!_) return;
|
|
5396
|
+
let E = [];
|
|
5389
5397
|
try {
|
|
5390
|
-
|
|
5398
|
+
E = JSON.parse(_);
|
|
5391
5399
|
} catch {
|
|
5392
5400
|
return;
|
|
5393
5401
|
}
|
|
5394
|
-
if (
|
|
5395
|
-
const X = a.path, K =
|
|
5402
|
+
if (E.length === 0) return;
|
|
5403
|
+
const X = a.path, K = E.map((De) => De.path).filter((De) => De && De !== X && !X.startsWith(De + "/"));
|
|
5396
5404
|
if (K.length === 0) {
|
|
5397
5405
|
oe("Aynı klasöre taşınamaz");
|
|
5398
5406
|
return;
|
|
@@ -5401,16 +5409,16 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5401
5409
|
}
|
|
5402
5410
|
async function ja(a, n) {
|
|
5403
5411
|
var ve;
|
|
5404
|
-
const
|
|
5405
|
-
if (!
|
|
5406
|
-
let
|
|
5412
|
+
const _ = (ve = n.dataTransfer) == null ? void 0 : ve.getData(gt);
|
|
5413
|
+
if (!_) return;
|
|
5414
|
+
let E = [];
|
|
5407
5415
|
try {
|
|
5408
|
-
|
|
5416
|
+
E = JSON.parse(_);
|
|
5409
5417
|
} catch {
|
|
5410
5418
|
return;
|
|
5411
5419
|
}
|
|
5412
|
-
if (
|
|
5413
|
-
const X = a, K =
|
|
5420
|
+
if (E.length === 0) return;
|
|
5421
|
+
const X = a, K = E.map((De) => De.path).filter((De) => De && De !== X && !X.startsWith(De + "/"));
|
|
5414
5422
|
K.length !== 0 && await Jt(K, X, "move-dnd-crumb");
|
|
5415
5423
|
}
|
|
5416
5424
|
function Ha(a) {
|
|
@@ -5440,7 +5448,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5440
5448
|
return t.authHeadersSync({ ...a });
|
|
5441
5449
|
}
|
|
5442
5450
|
return (a, n) => {
|
|
5443
|
-
var
|
|
5451
|
+
var _, E, X;
|
|
5444
5452
|
return l(), f("div", {
|
|
5445
5453
|
ref_key: "rootEl",
|
|
5446
5454
|
ref: R,
|
|
@@ -5498,19 +5506,19 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5498
5506
|
class: "fe__body",
|
|
5499
5507
|
onClick: n[7] || (n[7] = ke((K) => z(q).clear(), ["self"]))
|
|
5500
5508
|
}, [
|
|
5501
|
-
j.value &&
|
|
5509
|
+
j.value && I.value.length === 0 ? (l(), f("div", Mi, [
|
|
5502
5510
|
n[23] || (n[23] = o("span", {
|
|
5503
5511
|
class: "fe__spinner",
|
|
5504
5512
|
"aria-hidden": "true"
|
|
5505
5513
|
}, null, -1)),
|
|
5506
5514
|
o("p", zi, u(z(Y)("loading")), 1)
|
|
5507
|
-
])) :
|
|
5515
|
+
])) : g.value ? (l(), f("div", Li, [
|
|
5508
5516
|
n[24] || (n[24] = o("span", {
|
|
5509
5517
|
class: "fe__notfound-icon",
|
|
5510
5518
|
"aria-hidden": "true"
|
|
5511
5519
|
}, "📁", -1)),
|
|
5512
5520
|
o("p", Ni, u(z(Y)("notFound.title")), 1),
|
|
5513
|
-
o("p", Ui, u(
|
|
5521
|
+
o("p", Ui, u(g.value), 1),
|
|
5514
5522
|
o("p", Ri, u(z(Y)("notFound.desc")), 1),
|
|
5515
5523
|
o("button", {
|
|
5516
5524
|
type: "button",
|
|
@@ -5519,7 +5527,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5519
5527
|
}, u(z(Y)("notFound.goRoot")), 1)
|
|
5520
5528
|
])) : w.value === "list" ? (l(), Ne(Lo, {
|
|
5521
5529
|
key: 2,
|
|
5522
|
-
files:
|
|
5530
|
+
files: I.value,
|
|
5523
5531
|
selected: z(q).selected.value,
|
|
5524
5532
|
clipped: Bt.value,
|
|
5525
5533
|
"show-parent-path": !!p.value,
|
|
@@ -5536,7 +5544,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5536
5544
|
onStarChange: Ue
|
|
5537
5545
|
}, null, 8, ["files", "selected", "clipped", "show-parent-path", "locale", "loading", "starred-ids", "api-base", "auth-headers"])) : (l(), Ne(Yo, {
|
|
5538
5546
|
key: 3,
|
|
5539
|
-
files:
|
|
5547
|
+
files: I.value,
|
|
5540
5548
|
selected: z(q).selected.value,
|
|
5541
5549
|
clipped: Bt.value,
|
|
5542
5550
|
"show-parent-path": !!p.value,
|
|
@@ -5562,13 +5570,13 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5562
5570
|
onDismiss: Va
|
|
5563
5571
|
}, null, 8, ["jobs", "locale"]),
|
|
5564
5572
|
Ae(vs, {
|
|
5565
|
-
ops: z(
|
|
5573
|
+
ops: z(A).ops.value,
|
|
5566
5574
|
locale: W.value,
|
|
5567
|
-
onDismiss: n[8] || (n[8] = (K) => z(
|
|
5575
|
+
onDismiss: n[8] || (n[8] = (K) => z(A).dismiss(K))
|
|
5568
5576
|
}, null, 8, ["ops", "locale"]),
|
|
5569
5577
|
Ae(Qo, {
|
|
5570
5578
|
ref_key: "ctxRef",
|
|
5571
|
-
ref:
|
|
5579
|
+
ref: C,
|
|
5572
5580
|
locale: W.value,
|
|
5573
5581
|
theme: s.config.theme || "auto",
|
|
5574
5582
|
actions: ga.value,
|
|
@@ -5583,7 +5591,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5583
5591
|
Ae(xs, {
|
|
5584
5592
|
open: pe.value,
|
|
5585
5593
|
locale: W.value,
|
|
5586
|
-
"current-name": ((
|
|
5594
|
+
"current-name": ((_ = Ve.value) == null ? void 0 : _.basename) || "",
|
|
5587
5595
|
onClose: n[10] || (n[10] = (K) => pe.value = !1),
|
|
5588
5596
|
onSubmit: Ea
|
|
5589
5597
|
}, null, 8, ["open", "locale", "current-name"]),
|
|
@@ -5603,7 +5611,7 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5603
5611
|
onToast: oe
|
|
5604
5612
|
}, null, 8, ["open", "locale", "share"]),
|
|
5605
5613
|
Ae(Dr, {
|
|
5606
|
-
open:
|
|
5614
|
+
open: Ce.value,
|
|
5607
5615
|
locale: W.value,
|
|
5608
5616
|
file: at.value,
|
|
5609
5617
|
theme: s.config.theme || "auto",
|
|
@@ -5619,17 +5627,17 @@ const xn = ["title"], $n = { class: "fx-presence-avatars" }, Cn = ["title"], Sn
|
|
|
5619
5627
|
"pdf-worker-url": i.config.pdfWorkerUrl || null,
|
|
5620
5628
|
"pdf-save-url": i.config.pdfSaveUrl || null,
|
|
5621
5629
|
"viewer-base-url": i.config.viewerBaseUrl || null,
|
|
5622
|
-
onClose: n[12] || (n[12] = (K) =>
|
|
5630
|
+
onClose: n[12] || (n[12] = (K) => Ce.value = !1)
|
|
5623
5631
|
}, null, 8, ["open", "locale", "file", "theme", "preview-url", "download-url", "only-office-base", "only-office-config-endpoint", "save-text-endpoint", "open-mode", "auth-headers", "auth-credentials", "drawio-url", "pdf-worker-url", "pdf-save-url", "viewer-base-url"]),
|
|
5624
5632
|
je.value && ze.value && N.value ? (l(), Ne(Vr, {
|
|
5625
5633
|
key: 2,
|
|
5626
5634
|
"convert-url": N.value,
|
|
5627
|
-
"file-name": ((
|
|
5635
|
+
"file-name": ((E = ze.value) == null ? void 0 : E.basename) || ((X = ze.value) == null ? void 0 : X.path) || "",
|
|
5628
5636
|
"fetch-bytes": () => {
|
|
5629
5637
|
var K;
|
|
5630
5638
|
return z(t).fetchArrayBuffer(((K = ze.value) == null ? void 0 : K.path) ?? "");
|
|
5631
5639
|
},
|
|
5632
|
-
upload: (K) => z(t).uploadMultipart(
|
|
5640
|
+
upload: (K) => z(t).uploadMultipart(xe(v.value), [K]).then(() => {
|
|
5633
5641
|
}),
|
|
5634
5642
|
onClose: n[13] || (n[13] = (K) => je.value = !1),
|
|
5635
5643
|
onDone: Oa
|
|
@@ -5755,4 +5763,4 @@ export {
|
|
|
5755
5763
|
un as t,
|
|
5756
5764
|
sn as u
|
|
5757
5765
|
};
|
|
5758
|
-
//# sourceMappingURL=index-
|
|
5766
|
+
//# sourceMappingURL=index-npEoKJ-x.js.map
|