@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.
Files changed (29) hide show
  1. package/dist/{ArchiveViewer-BmpDoIWA.js → ArchiveViewer-i6kwnRYm.js} +2 -2
  2. package/dist/{ArchiveViewer-BmpDoIWA.js.map → ArchiveViewer-i6kwnRYm.js.map} +1 -1
  3. package/dist/{CsvViewer-BAMxNxy4.js → CsvViewer-BDpjcXgR.js} +2 -2
  4. package/dist/{CsvViewer-BAMxNxy4.js.map → CsvViewer-BDpjcXgR.js.map} +1 -1
  5. package/dist/{DrawioViewer-BIm8G98S.js → DrawioViewer-BdC_OKe3.js} +2 -2
  6. package/dist/{DrawioViewer-BIm8G98S.js.map → DrawioViewer-BdC_OKe3.js.map} +1 -1
  7. package/dist/{EpubViewer-D2OggB7W.js → EpubViewer-DXbYwVxr.js} +2 -2
  8. package/dist/{EpubViewer-D2OggB7W.js.map → EpubViewer-DXbYwVxr.js.map} +1 -1
  9. package/dist/{IpynbViewer-Dcew5gZQ.js → IpynbViewer-CIWJyo5t.js} +2 -2
  10. package/dist/{IpynbViewer-Dcew5gZQ.js.map → IpynbViewer-CIWJyo5t.js.map} +1 -1
  11. package/dist/{MermaidViewer-iG7VuHeu.js → MermaidViewer-sVI1Gdzg.js} +2 -2
  12. package/dist/{MermaidViewer-iG7VuHeu.js.map → MermaidViewer-sVI1Gdzg.js.map} +1 -1
  13. package/dist/{PsdViewer-C-92G5j0.js → PsdViewer-11QXthlz.js} +2 -2
  14. package/dist/{PsdViewer-C-92G5j0.js.map → PsdViewer-11QXthlz.js.map} +1 -1
  15. package/dist/{TiffViewer-uOJVggkp.js → TiffViewer-_3i3709w.js} +2 -2
  16. package/dist/{TiffViewer-uOJVggkp.js.map → TiffViewer-_3i3709w.js.map} +1 -1
  17. package/dist/{Viewer3D-RnzhEk_6.js → Viewer3D-rhyqPxtc.js} +2 -2
  18. package/dist/{Viewer3D-RnzhEk_6.js.map → Viewer3D-rhyqPxtc.js.map} +1 -1
  19. package/dist/filex-core.js +1 -1
  20. package/dist/filex-core.umd.cjs +12 -12
  21. package/dist/filex-core.umd.cjs.map +1 -1
  22. package/dist/{index-B6jiFQPw.js → index-npEoKJ-x.js} +903 -895
  23. package/dist/index-npEoKJ-x.js.map +1 -0
  24. package/dist/style.css +1 -1
  25. package/package.json +1 -1
  26. package/src/FileExplorer.vue +11 -2
  27. package/src/components/PresenceBar.vue +19 -8
  28. package/src/lib/realtime.ts +4 -0
  29. 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 xe, 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";
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 h(P) {
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(h(Q.status));
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 y(P = "") {
116
+ function h(P = "") {
117
117
  return r.manager.replace(/\/manager(\?.*)?$/, "/permissions") + P;
118
118
  }
119
- async function E(P) {
120
- return d(y() + "?path=" + encodeURIComponent(P));
119
+ async function $(P) {
120
+ return d(h() + "?path=" + encodeURIComponent(P));
121
121
  }
122
- async function I(P) {
123
- return d(y("/resolve") + "?email=" + encodeURIComponent(P));
122
+ async function A(P) {
123
+ return d(h("/resolve") + "?email=" + encodeURIComponent(P));
124
124
  }
125
125
  async function j(P) {
126
- return d(y("/users") + "?q=" + encodeURIComponent(P));
126
+ return d(h("/users") + "?q=" + encodeURIComponent(P));
127
127
  }
128
128
  async function L(P) {
129
- return d(y(), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
129
+ return d(h(), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
130
130
  }
131
- async function A(P, N) {
132
- return d(y("/" + P), { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ level: N }) });
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 S(P) {
135
- return d(y("/" + P), { method: "DELETE" });
134
+ async function T(P) {
135
+ return d(h("/" + P), { method: "DELETE" });
136
136
  }
137
137
  async function v(P) {
138
- return d(y("/invite"), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
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(y("/share-mail"), { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(P) });
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 O(P, N = {}) {
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(O("index", { path: P }));
154
+ return d(I("index", { path: P }));
155
155
  }
156
- async function _(P, N) {
157
- return d(O("search", { path: P, filter: N }));
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(O("subfolders", { path: P }));
160
+ return d(I("subfolders", { path: P }));
161
161
  }
162
162
  async function p(P, N) {
163
- return d(O("newfolder"), {
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 C(P, N, F) {
170
- return d(O("rename"), {
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(O("move"), {
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(O("delete"), {
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", O("upload"));
251
- for (const [$e, Ve] of Object.entries(ge))
252
- $e !== "Content-Type" && fe.setRequestHeader($e, Ve);
253
- fe.withCredentials = t() === "include", fe.upload.onprogress = ($e) => {
254
- F && $e.lengthComputable && F(Math.round($e.loaded / $e.total * 100));
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 ($e) {
260
- ce($e);
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 O("download", { path: P });
268
+ return I("download", { path: P });
269
269
  }
270
270
  function ye(P) {
271
- return O("preview", { path: P });
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: C,
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: E,
408
- resolveEmail: I,
407
+ listPermissions: $,
408
+ resolveEmail: A,
409
409
  searchUsers: j,
410
410
  addPermission: L,
411
- updatePermission: A,
412
- deletePermission: S,
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, A;
427
- const h = t.chunkSize ?? e, d = t.parallelChunks ?? i, y = {
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 E = !1;
440
- const I = [];
441
- y.cancel = () => {
442
- E = !0;
443
- for (const S of I) S.abort();
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 S;
447
- y.percent = y.totalBytes > 0 ? Math.min(100, Math.round(y.uploadedBytes / y.totalBytes * 100)) : 0, (S = t.onProgress) == null || S.call(t, y);
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 S = await r.jsonFetch(
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
- y.uploadId = S.uploadId, y.status = "uploading", j();
465
- const v = S.chunkBytes ?? h, B = /* @__PURE__ */ new Map(), U = [];
466
- let O = 0;
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) * (S.chunkBytes ?? h), be = Math.min(Z + (S.chunkBytes ?? h), t.file.size), re = t.file.slice(Z, be), Y = new AbortController();
469
- I.push(Y), await new Promise((q, se) => {
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), y.uploadedBytes += Ie, j();
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 && (y.uploadedBytes += de - Ie, B.set(G.partNumber, de)), U.push({ partNumber: G.partNumber, etag: ye }), q();
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 _ = 2;
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 (E) throw Z;
497
+ if ($) throw Z;
498
498
  const be = Z instanceof Error ? Z : new Error(String(Z));
499
- if (be.name === "AbortError" || W >= _) throw be;
499
+ if (be.name === "AbortError" || W >= g) throw be;
500
500
  const re = B.get(G.partNumber) ?? 0;
501
- re > 0 && (y.uploadedBytes = Math.max(0, y.uploadedBytes - re), B.delete(G.partNumber), j());
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 (; !E && O < S.parts.length; ) {
508
- const G = S.parts[O++];
507
+ for (; !$ && I < T.parts.length; ) {
508
+ const G = T.parts[I++];
509
509
  await w(G);
510
510
  }
511
511
  }
512
- const C = [];
512
+ const S = [];
513
513
  for (let G = 0; G < d; G++)
514
- C.push(p());
515
- if (await Promise.all(C), E)
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
- y.status = "finalizing", U.sort((G, W) => G.partNumber - W.partNumber);
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: S.uploadId, parts: U })
522
+ body: JSON.stringify({ uploadId: T.uploadId, parts: U })
523
523
  });
524
- return y.status = "done", y.uploadedBytes = y.totalBytes, y.percent = 100, j(), (L = t.onDone) == null || L.call(t, y, k), k;
525
- } catch (S) {
526
- const v = S instanceof Error ? S : new Error(String(S));
527
- if (y.status = v.name === "AbortError" ? "aborted" : "error", y.error = v.message, j(), y.uploadId && r.endpoints.uploadAbort && y.status === "aborted")
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: y.uploadId })
532
+ body: JSON.stringify({ uploadId: h.uploadId })
533
533
  });
534
534
  } catch {
535
535
  }
536
- throw (A = t.onError) == null || A.call(t, y, v), v;
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, A = {}) {
544
- if (A.shift && e.value) {
545
- const S = s(), v = S.findIndex((_) => _.path === e.value), B = S.findIndex((_) => _.path === L);
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, O] = v < B ? [v, B] : [B, v], J = /* @__PURE__ */ new Set();
551
- for (let _ = U; _ <= O; _++) J.add(S[_].path);
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 (A.ctrl) {
556
- const S = new Set(r.value);
557
- S.has(L) ? S.delete(L) : S.add(L), r.value = S, e.value = L;
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 h(L) {
568
+ function y(L) {
569
569
  return r.value.has(L);
570
570
  }
571
571
  function d(L) {
572
- const A = new Set(r.value);
573
- A.add(L), r.value = A;
572
+ const O = new Set(r.value);
573
+ O.add(L), r.value = O;
574
574
  }
575
- function y(L) {
576
- const A = new Set(r.value);
577
- A.delete(L), r.value = A;
575
+ function h(L) {
576
+ const O = new Set(r.value);
577
+ O.delete(L), r.value = O;
578
578
  }
579
- const E = ee(() => r.value.size), I = ee(() => r.value.size === 0), j = ee(() => s().filter((A) => r.value.has(A.path)));
580
- return { selected: r, anchor: e, click: i, clear: c, selectAll: t, has: h, add: d, remove: y, size: E, isEmpty: I, nodes: j };
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 h = i.ctrlKey || i.metaKey;
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 && !h && (i.preventDefault(), r.onFocusSearch());
607
+ r.onFocusSearch && !y && (i.preventDefault(), r.onFocusSearch());
608
608
  break;
609
609
  case "a":
610
610
  case "A":
611
- h && r.onSelectAll && (i.preventDefault(), r.onSelectAll());
611
+ y && r.onSelectAll && (i.preventDefault(), r.onSelectAll());
612
612
  break;
613
613
  case "x":
614
614
  case "X":
615
- h && r.onCut && (i.preventDefault(), r.onCut());
615
+ y && r.onCut && (i.preventDefault(), r.onCut());
616
616
  break;
617
617
  case "c":
618
618
  case "C":
619
- h && r.onCopy && (i.preventDefault(), r.onCopy());
619
+ y && r.onCopy && (i.preventDefault(), r.onCopy());
620
620
  break;
621
621
  case "v":
622
622
  case "V":
623
- h && r.onPaste && (i.preventDefault(), r.onPaste());
623
+ y && r.onPaste && (i.preventDefault(), r.onPaste());
624
624
  break;
625
625
  case "d":
626
626
  case "D":
627
- h && r.onDuplicate && (i.preventDefault(), r.onDuplicate());
627
+ y && r.onDuplicate && (i.preventDefault(), r.onDuplicate());
628
628
  break;
629
629
  case "k":
630
630
  case "K":
631
- h && r.onPathJump && (i.preventDefault(), r.onPathJump());
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, h = {}) {
866
+ function e(t, y = {}) {
867
867
  const d = r.value[t] ?? t;
868
- return Object.entries(h).reduce(
869
- (y, [E, I]) => y.replaceAll(`{${E}}`, String(I)),
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 h = [
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, y] of h)
883
+ for (const [d, h] of y)
884
884
  if (t >= d) {
885
- const E = t / d;
886
- return `${E >= 100 ? Math.round(E) : E.toFixed(E >= 10 ? 1 : 2)} ${e(y)}`;
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 h = t.basename.match(/^\d{8}-\d{6}-[A-Za-z0-9]+__(.+)$/);
893
- return h ? h[1] : t.basename;
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 y of d) if (typeof y == "number") return y;
900
+ for (const h of d) if (typeof h == "number") return h;
901
901
  return 0;
902
902
  }, e = (...d) => {
903
- for (const y of d) if (typeof y == "string" && y !== "") return y;
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 : [], h = e(s.op_type, s.kind) ?? "delete";
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: h === "copy" || h === "move" ? h : "delete",
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 h = !1;
923
+ let y = !1;
924
924
  const d = ee(
925
- () => i.value.some((S) => S.status === "pending" || S.status === "running")
925
+ () => i.value.some((T) => T.status === "pending" || T.status === "running")
926
926
  );
927
- let y;
928
- function E() {
929
- y || r.endpoints.opsList && (y = setInterval(() => {
927
+ let h;
928
+ function $() {
929
+ h || r.endpoints.opsList && (h = setInterval(() => {
930
930
  j();
931
931
  }, fn), j());
932
932
  }
933
- function I() {
934
- y && (clearInterval(y), y = void 0);
933
+ function A() {
934
+ h && (clearInterval(h), h = void 0);
935
935
  }
936
936
  async function j() {
937
- var S;
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()), h && ((S = e.onSettled) == null || S.call(e, k)));
943
- const U = new Set(i.value.map((k) => k.id)), O = B.filter((k) => k.status === "pending" || k.status === "running" ? !0 : h ? U.has(k.id) : !1), J = new Set(O.map((k) => k.id)), _ = i.value.filter((k) => !J.has(k.id)), w = [...O, ..._];
944
- h = !0;
945
- const p = Date.now(), C = w.filter((k) => {
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 = C, !d.value && C.length === 0 && I();
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(S) {
956
- const v = na(S);
957
- i.value.some((U) => U.id === v.id) || (i.value = [v, ...i.value]), E();
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 A(S) {
960
- i.value = i.value.filter((v) => v.id !== S), t.delete(S);
959
+ function O(T) {
960
+ i.value = i.value.filter((v) => v.id !== T), t.delete(T);
961
961
  }
962
962
  return it(() => {
963
- I();
963
+ A();
964
964
  }), {
965
965
  ops: i,
966
966
  hasActive: d,
967
967
  register: L,
968
- dismiss: A,
968
+ dismiss: O,
969
969
  poll: j,
970
- startPolling: E,
971
- stopPolling: I
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, y, E, I;
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 h = t;
1037
- (h == null ? void 0 : h.type) === "change" ? (y = (d = this.opts.handlers).onChange) == null || y.call(d, t) : (h == null ? void 0 : h.type) === "presence" && ((I = (E = this.opts.handlers).onPresence) == null || I.call(E, t));
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, h = null, d = null;
1092
- function y() {
1093
- h && clearTimeout(h), h = setTimeout(() => {
1094
- h = null, r.reload();
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 E(v) {
1097
+ function $(v) {
1098
1098
  t && v.path && v.path !== t || (e.value = Array.isArray(v.users) ? v.users : []);
1099
1099
  }
1100
- function I(v) {
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: y,
1108
- onPresence: E,
1109
- onFallback: I,
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 A(v) {
1119
+ function O(v) {
1120
1120
  c == null || c.setFocus(v);
1121
1121
  }
1122
- function S() {
1123
- h && (clearTimeout(h), h = null), d && (clearInterval(d), d = null), c == null || c.close(), c = null;
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: A, stop: S };
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__ */ xe({
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((h) => r.selfId == null || h.id !== r.selfId)
1172
+ () => (r.users ?? []).filter((d) => r.selfId == null || d.id !== r.selfId)
1173
1173
  );
1174
- function i(h) {
1175
- const d = h.trim().split(/\s+/).filter(Boolean);
1176
- return d.length === 0 ? "?" : d.length === 1 ? d[0].slice(0, 2).toUpperCase() : (d[0][0] + d[d.length - 1][0]).toUpperCase();
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 c(h) {
1179
- return h * 47 % 360;
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 t(h) {
1182
- return h.file ? `${h.name} · ${h.file}` : h.name;
1187
+ function y(d) {
1188
+ return d.file ? `${d.name} · ${d.file}` : d.name;
1183
1189
  }
1184
- return (h, d) => e.value.length ? (l(), f("div", {
1190
+ return (d, h) => e.value.length ? (l(), f("div", {
1185
1191
  key: 0,
1186
1192
  class: "fx-presence",
1187
- title: e.value.map(t).join(", ")
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), (y) => (l(), f("span", {
1191
- key: y.id,
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(${c(y.id)} 60% 45%)` }),
1194
- title: t(y)
1199
+ style: wt({ backgroundColor: `hsl(${t($)} 60% 45%)` }),
1200
+ title: y($)
1195
1201
  }, [
1196
- Pe(u(i(y.name)) + " ", 1),
1197
- y.file ? (l(), f("span", Sn)) : H("", !0)
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
- d[0] || (d[0] = Pe(" · ", -1)),
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-1c69ff03"]]), 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 = {
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__ */ xe({
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), h = b(null), d = b(i.searchQuery);
1237
- We(() => i.searchQuery, (S) => {
1238
- d.value = S;
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 y;
1241
- function E(S) {
1242
- const v = S.target.value;
1243
- d.value = v, y && clearTimeout(y), y = setTimeout(() => c("update:searchQuery", v), 200);
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 I() {
1246
- var S, v;
1247
- (S = h.value) == null || S.focus(), (v = h.value) == null || v.select();
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: I });
1250
- const j = ee(() => i.selectionMode ?? "none"), L = ee(() => i.actions.filter((S) => !S.divider && !S.hidden));
1251
- function A(S) {
1252
- c("action", S);
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 (S, v) => (l(), f("div", On, [
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) => A(B.key)
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) => A("paste"))
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: h,
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: E
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__ */ xe({
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), h = b(!1), d = b(""), y = ee(() => e.palette ?? [
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 E(v) {
1380
+ function $(v) {
1375
1381
  let B = 0;
1376
- for (let O = 0; O < v.length; O++) B = B * 31 + v.charCodeAt(O) | 0;
1377
- const U = y.value;
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 I(v = {}) {
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 I(),
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 ?? "", O = await fetch(`${U}/api/files/manager/tags`, {
1410
+ const U = e.apiBase ?? "", I = await fetch(`${U}/api/files/manager/tags`, {
1405
1411
  method: "POST",
1406
- headers: await I({ "Content-Type": "application/json" }),
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 (!O.ok) throw new Error(`tag save failed: ${O.status}`);
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 A() {
1422
+ function O() {
1417
1423
  const v = d.value.trim();
1418
1424
  if (!v || c.value.includes(v)) {
1419
- d.value = "", h.value = !1;
1425
+ d.value = "", y.value = !1;
1420
1426
  return;
1421
1427
  }
1422
- L([...c.value, v]), d.value = "", h.value = !1;
1428
+ L([...c.value, v]), d.value = "", y.value = !1;
1423
1429
  }
1424
- function S(v) {
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": E(U) })
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: (O) => S(U),
1445
+ onClick: (I) => T(U),
1440
1446
  "aria-label": "Remove tag"
1441
1447
  }, "×", 8, Xn)
1442
1448
  ], 4))), 128)),
1443
- h.value ? (l(), f("form", {
1449
+ y.value ? (l(), f("form", {
1444
1450
  key: 0,
1445
1451
  class: "filex-tag-add",
1446
- onSubmit: ke(A, ["prevent"])
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: A,
1458
+ onBlur: O,
1453
1459
  onKeydown: B[1] || (B[1] = Ze((U) => {
1454
- h.value = !1, d.value = "";
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) => h.value = !0)
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__ */ xe({
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 h() {
1490
+ async function y() {
1485
1491
  t.value = !0;
1486
1492
  try {
1487
- const y = await (e.authHeaders ?? (() => ({})))(), E = e.apiBase ?? "", I = e.limit ?? 20, j = await fetch(`${E}/api/files/manager/recent?limit=${I}`, {
1488
- headers: y,
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 (y) {
1496
- i("error", y instanceof Error ? y.message : String(y));
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(y) {
1502
- if (!y) return "";
1503
- const E = new Date(y).getTime();
1504
- if (Number.isNaN(E)) return "";
1505
- const I = Date.now() - E;
1506
- return I < 6e4 ? "just now" : I < 36e5 ? `${Math.floor(I / 6e4)}m ago` : I < 864e5 ? `${Math.floor(I / 36e5)}h ago` : `${Math.floor(I / 864e5)}d ago`;
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(h), We(() => e.refreshKey, h), (y, E) => (l(), f("div", eo, [
1514
+ return Qe(y), We(() => e.refreshKey, y), (h, $) => (l(), f("div", eo, [
1509
1515
  o("header", null, [
1510
- E[0] || (E[0] = o("h3", null, "Recently opened", -1)),
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: h,
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, (I) => (l(), f("li", {
1520
- key: I.id
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", I),
1530
+ onClick: (j) => i("open", A),
1525
1531
  class: "filex-recent-item"
1526
1532
  }, [
1527
- o("span", oo, u(I.name), 1),
1528
- o("span", so, u(d(I.last_opened)), 1)
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__ */ xe({
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 O = e.rootPath, J = O.indexOf("://");
1556
- return (J >= 0 ? O.slice(J + 3) : O).replace(/^\/+|\/+$/g, "");
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 O = i.value;
1559
- if (!O) return e.rootLabel || e.adapter;
1560
- const J = O.split("/");
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), h = r, d = ee(() => {
1563
- const O = `${e.adapter}://`, J = e.dirname.startsWith(O) ? e.dirname.slice(O.length) : e.dirname, _ = J.split("/").filter(Boolean), w = [];
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 C = i.value, k = J.replace(/^\/+|\/+$/g, ""), G = C && (k === C || k.startsWith(C + "/")) ? k.slice(C.length).replace(/^\/+/, "") : "";
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 = C;
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: `${O}${W}` });
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: O })) : w.push({
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: O
1580
+ adapterPath: I
1575
1581
  });
1576
1582
  let p = "";
1577
- for (const C of _) {
1578
- p = p ? `${p}/${C}` : C;
1579
- const k = C === ".trash" ? t("node.trash") : C;
1580
- w.push({ label: k, adapterPath: `${O}${p}` });
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 y(O) {
1585
- h("navigate", O.adapterPath);
1590
+ function h(I) {
1591
+ y("navigate", I.adapterPath);
1586
1592
  }
1587
- function E(O, J) {
1588
- O.preventDefault(), O.stopPropagation(), h("crumb-context", {
1589
- x: O.clientX,
1590
- y: O.clientY,
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(O) {
1601
+ function A(I) {
1596
1602
  var J;
1597
- (J = O.dataTransfer) != null && J.types.includes("application/x-brf-files") && (O.preventDefault(), O.stopPropagation(), O.dataTransfer && (O.dataTransfer.dropEffect = "move"));
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(O, J) {
1600
- var _;
1601
- (_ = O.dataTransfer) != null && _.types.includes("application/x-brf-files") && (O.preventDefault(), O.stopPropagation(), h("crumb-drop", J.adapterPath, O));
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), A = b(""), S = b(null);
1609
+ const L = b(!1), O = b(""), T = b(null);
1604
1610
  function v() {
1605
- const O = `${e.adapter}://`, J = e.dirname.startsWith(O) ? e.dirname.slice(O.length) : e.dirname;
1611
+ const I = `${e.adapter}://`, J = e.dirname.startsWith(I) ? e.dirname.slice(I.length) : e.dirname;
1606
1612
  if (e.rootPath) {
1607
- const _ = i.value, w = J.replace(/^\/+|\/+$/g, ""), p = _ && (w === _ || w.startsWith(_ + "/")) ? w.slice(_.length).replace(/^\/+/, "") : "";
1608
- A.value = p ? `/${p}` : "/", L.value = !0, yt(() => {
1609
- var C, k;
1610
- (C = S.value) == null || C.focus(), (k = S.value) == null || k.select();
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
- A.value = "/";
1622
+ O.value = "/";
1617
1623
  else {
1618
- const _ = J.replace(/^\/+|\/+$/g, "");
1619
- A.value = _ ? `/${e.adapter}/${_}` : `/${e.adapter}`;
1624
+ const g = J.replace(/^\/+|\/+$/g, "");
1625
+ O.value = g ? `/${e.adapter}/${g}` : `/${e.adapter}`;
1620
1626
  }
1621
1627
  else
1622
- A.value = J;
1628
+ O.value = J;
1623
1629
  L.value = !0, yt(() => {
1624
- var _, w;
1625
- (_ = S.value) == null || _.focus(), (w = S.value) == null || w.select();
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 O = A.value.trim();
1635
+ const I = O.value.trim();
1630
1636
  if (L.value = !1, e.rootPath) {
1631
- const _ = O.replace(/^\/+|\/+$/g, ""), w = i.value, p = _ ? w ? `${w}/${_}` : _ : w;
1632
- h("navigate", p ? `${e.adapter}://${p}` : `${e.adapter}://`);
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 _ = O.replace(/^\/+|\/+$/g, "");
1637
- if (!_) {
1638
- h("navigate", "");
1642
+ const g = I.replace(/^\/+|\/+$/g, "");
1643
+ if (!g) {
1644
+ y("navigate", "");
1639
1645
  return;
1640
1646
  }
1641
- const w = _.indexOf("/"), p = w === -1 ? _ : _.slice(0, w), C = w === -1 ? "" : _.slice(w + 1);
1642
- h("navigate", C ? `${p}://${C}` : `${p}://`);
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 = O.replace(/^\/+|\/+$/g, "");
1646
- J && h("navigate", `${e.adapter}://${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 (O, J) => (l(), f("nav", uo, [
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: S,
1656
- "onUpdate:modelValue": J[0] || (J[0] = (_) => A.value = _),
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, A.value]
1674
+ [Fe, O.value]
1669
1675
  ]) : (l(), f(le, { key: 0 }, [
1670
- (l(!0), f(le, null, Se(d.value, (_, w) => (l(), f("button", {
1671
- key: _.adapterPath,
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) => y(_),
1676
- onContextmenu: (p) => E(p, _),
1677
- onDragover: I,
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(_.label), 1),
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__ */ xe({
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, (h) => {
1714
- c.value = h;
1719
+ We(() => e.starred, (y) => {
1720
+ c.value = y;
1715
1721
  });
1716
1722
  async function t() {
1717
- const h = !c.value;
1718
- c.value = h;
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
- }, y = e.apiBase ?? "", E = await fetch(`${y}/api/files/manager/star`, {
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: h })
1733
+ body: JSON.stringify({ node_id: e.nodeId, starred: y })
1728
1734
  });
1729
- if (!E.ok) throw new Error(`star toggle failed: ${E.status}`);
1730
- i("change", h);
1735
+ if (!$.ok) throw new Error(`star toggle failed: ${$.status}`);
1736
+ i("change", y);
1731
1737
  } catch (d) {
1732
- c.value = !h, i("error", d instanceof Error ? d.message : String(d));
1738
+ c.value = !y, i("error", d instanceof Error ? d.message : String(d));
1733
1739
  }
1734
1740
  }
1735
- return (h, d) => (l(), f("button", {
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__ */ xe({
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: h } = He(() => e.locale);
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 y(p, C) {
1795
- i("click-row", p, { ctrl: C.ctrlKey || C.metaKey, shift: C.shiftKey });
1800
+ function h(p, S) {
1801
+ i("click-row", p, { ctrl: S.ctrlKey || S.metaKey, shift: S.shiftKey });
1796
1802
  }
1797
- function E(p) {
1803
+ function $(p) {
1798
1804
  i("dbl-row", p);
1799
1805
  }
1800
- function I(p, C) {
1801
- C.preventDefault(), C.stopPropagation(), i("context-row", p, C);
1806
+ function A(p, S) {
1807
+ S.preventDefault(), S.stopPropagation(), i("context-row", p, S);
1802
1808
  }
1803
- function j(p, C) {
1804
- i("item-drag-start", p, C);
1809
+ function j(p, S) {
1810
+ i("item-drag-start", p, S);
1805
1811
  }
1806
- function L(p, C) {
1812
+ function L(p, S) {
1807
1813
  var k;
1808
- p.type === "dir" && (k = C.dataTransfer) != null && k.types.includes("application/x-brf-files") && (C.preventDefault(), C.stopPropagation(), C.dataTransfer && (C.dataTransfer.dropEffect = "move"));
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 A(p, C) {
1816
+ function O(p, S) {
1811
1817
  var k;
1812
- p.type === "dir" && (k = C.dataTransfer) != null && k.types.includes("application/x-brf-files") && (C.preventDefault(), C.stopPropagation(), i("item-drop-into", p, C));
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 S, v = null;
1815
- function B(p, C) {
1816
- v = p, S && clearTimeout(S), S = setTimeout(() => {
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 = C.touches[0];
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
- S && clearTimeout(S), v = null;
1835
+ T && clearTimeout(T), v = null;
1830
1836
  }
1831
- function O(p) {
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 C = (p.extension || "").toLowerCase();
1836
- return ["jpg", "jpeg", "png", "webp", "gif", "bmp", "avif", "heic", "svg"].includes(C) ? "🖼" : ["mp4", "webm", "mov", "mkv", "avi", "ogv", "m4v"].includes(C) ? "🎞" : ["mp3", "wav", "flac", "ogg", "m4a", "aac", "opus"].includes(C) ? "🎵" : C === "pdf" ? "📕" : ["doc", "docx", "odt", "rtf"].includes(C) ? "📄" : ["xls", "xlsx", "ods", "csv"].includes(C) ? "📊" : ["ppt", "pptx", "odp"].includes(C) ? "📽" : ["zip", "tar", "gz", "bz2", "7z", "rar"].includes(C) ? "🗜" : ["txt", "md", "log", "json", "yml", "yaml", "xml"].includes(C) ? "📝" : "📎";
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 _(p) {
1842
- const C = p.replace(/^[a-z][a-z0-9+.-]*:\/\//i, ""), k = C.lastIndexOf("/");
1843
- return k === -1 ? "" : C.slice(0, k);
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, C) => (l(), f("div", {
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
- C[1] || (C[1] = o("div", {
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) => y(k, Z),
1874
- onDblclick: (Z) => E(k),
1875
- onContextmenu: (Z) => I(k, 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) => A(k, 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: C[0] || (C[0] = ke(() => {
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(O(k)), 1),
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(h)(k)), 9, Oo),
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: _(k.path)
1909
- }, u(_(k.path) || "—"), 9, Io)) : H("", !0)
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__ */ xe({
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: h } = He(() => e.locale);
1939
- function d(_) {
1940
- return e.selected.has(_.path);
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 y(_, w) {
1943
- i("click-card", _, { ctrl: w.ctrlKey || w.metaKey, shift: w.shiftKey });
1948
+ function h(g, w) {
1949
+ i("click-card", g, { ctrl: w.ctrlKey || w.metaKey, shift: w.shiftKey });
1944
1950
  }
1945
- function E(_) {
1946
- i("dbl-card", _);
1951
+ function $(g) {
1952
+ i("dbl-card", g);
1947
1953
  }
1948
- function I(_, w) {
1949
- w.preventDefault(), w.stopPropagation(), i("context-card", _, w);
1954
+ function A(g, w) {
1955
+ w.preventDefault(), w.stopPropagation(), i("context-card", g, w);
1950
1956
  }
1951
- function j(_, w) {
1952
- i("item-drag-start", _, w);
1957
+ function j(g, w) {
1958
+ i("item-drag-start", g, w);
1953
1959
  }
1954
- function L(_, w) {
1960
+ function L(g, w) {
1955
1961
  var p;
1956
- _.type === "dir" && (p = w.dataTransfer) != null && p.types.includes("application/x-brf-files") && (w.preventDefault(), w.stopPropagation(), w.dataTransfer && (w.dataTransfer.dropEffect = "move"));
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 A(_, w) {
1964
+ function O(g, w) {
1959
1965
  var p;
1960
- _.type === "dir" && (p = w.dataTransfer) != null && p.types.includes("application/x-brf-files") && (w.preventDefault(), w.stopPropagation(), i("item-drop-into", _, w));
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 S, v = null;
1963
- function B(_, w) {
1964
- v = _, S && clearTimeout(S), S = setTimeout(() => {
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
- S && clearTimeout(S), v = null;
1983
+ T && clearTimeout(T), v = null;
1978
1984
  }
1979
- function O(_) {
1980
- const w = _.replace(/^[a-z][a-z0-9+.-]*:\/\//i, ""), p = w.lastIndexOf("/");
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 (_.basename === ".trash") return "🗑";
1985
- if (_.mime_type === "inode/storage") return "💾";
1986
- if (_.type === "dir") return "📁";
1987
- const w = (_.extension || "").toLowerCase();
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 (_, w) => (l(), f("div", {
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 C;
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": (C = s.clipped) == null ? void 0 : C.has(p.path)
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) => y(p, k),
2006
- onDblclick: (k) => E(p),
2007
- onContextmenu: (k) => I(p, 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) => A(p, 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(h)(p)), 9, Ko),
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: O(p.path)
2032
- }, u(O(p.path) || "—"), 9, jo)) : H("", !0),
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__ */ xe({
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), h = b(0), d = b(0), y = b([]), E = b(null);
2058
- async function I(_, w) {
2059
- t.value = !0, h.value = _.clientX, d.value = _.clientY, y.value = w, await yt(), j();
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 _ = E.value;
2063
- if (!_ || typeof window > "u") return;
2064
- const w = _.getBoundingClientRect(), p = 8, C = window.innerWidth, k = window.innerHeight;
2065
- d.value + w.height > k - p && (d.value = Math.max(p, k - w.height - p)), h.value + w.width > C - p && (h.value = Math.max(p, C - w.width - 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 A(_) {
2071
- _.disabled || (c("select", _, y.value), L());
2076
+ function O(g) {
2077
+ g.disabled || (c("select", g, h.value), L());
2072
2078
  }
2073
- function S(_) {
2074
- _.key === "Escape" && L();
2079
+ function T(g) {
2080
+ g.key === "Escape" && L();
2075
2081
  }
2076
- const v = ee(() => i.actions.filter((_) => !_.hidden)), B = b(!1);
2082
+ const v = ee(() => i.actions.filter((g) => !g.hidden)), B = b(!1);
2077
2083
  let U;
2078
- function O(_) {
2079
- B.value = !!(_ && "matches" in _ && _.matches);
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)"), O(U), (_ = U.addEventListener) == null || _.call(U, "change", O));
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
- (_ = U == null ? void 0 : U.removeEventListener) == null || _.call(U, "change", O);
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: I, hide: L }), (_, w) => (l(), Ne(qa, { to: "body" }, [
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: S
2104
+ onKeydown: T
2099
2105
  }, [
2100
2106
  o("div", {
2101
2107
  ref_key: "menuEl",
2102
- ref: E,
2108
+ ref: $,
2103
2109
  class: "fe-ctx",
2104
2110
  role: "menu",
2105
- style: wt({ top: d.value + "px", left: h.value + "px" }),
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, C) => (l(), f(le, {
2110
- key: p.key || C
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) => A(p)
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__ */ xe({
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), h = ee(() => e.jobs);
2143
- function d(y) {
2144
- switch (y.status) {
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")}: ${y.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 (y, E) => (l(), Ne(ht, { name: "fe-upload-slide" }, {
2161
+ return (h, $) => (l(), Ne(ht, { name: "fe-upload-slide" }, {
2156
2162
  default: Oe(() => [
2157
- h.value.length > 0 ? (l(), f("div", Zo, [
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(h.value.length), 1)
2166
+ o("span", ts, u(y.value.length), 1)
2161
2167
  ]),
2162
2168
  o("ul", as, [
2163
- (l(!0), f(le, null, Se(h.value, (I) => (l(), f("li", {
2164
- key: I.id,
2165
- class: he(["fe-upload__item", `is-${I.status}`])
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: I.file.name
2170
- }, u(I.file.name), 9, ns),
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": I.percent,
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: I.percent + "%" })
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(I)), 1),
2183
- o("span", null, u(z(t)(I.uploadedBytes)) + " / " + u(z(t)(I.totalBytes)), 1),
2184
- I.status === "uploading" || I.status === "initializing" ? (l(), f("button", {
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", I)
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", I)
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__ */ xe({
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((E, I) => I.id - E.id));
2215
- function h(E) {
2216
- return E.status === "done" ? 100 : E.progress_total <= 0 ? 0 : Math.min(100, Math.round(E.progress_done / E.progress_total * 100));
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(E) {
2219
- return E.status === "done" ? "is-done" : E.status === "error" ? "is-error" : "";
2224
+ function d($) {
2225
+ return $.status === "done" ? "is-done" : $.status === "error" ? "is-error" : "";
2220
2226
  }
2221
- function y(E) {
2222
- const I = E.op_type === "copy" ? c("ops.copy") : E.op_type === "move" ? c("ops.move") : c("ops.delete");
2223
- return E.status === "pending" ? `${I} (${c("ops.queued")})` : E.status === "running" ? `${I} ${E.progress_done}/${E.progress_total}` : E.status === "done" ? `${I} ${c("ops.done")} (${E.progress_total})` : E.status === "error" ? `${I} ${c("ops.error")}` : I;
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 (E, I) => t.value.length > 0 ? (l(), Ne(Xa, {
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(y(j)), 9, us),
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: h(j) + "%" })
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__ */ xe({
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 E;
2287
- const y = (E = c.value) == null ? void 0 : E.querySelector(
2292
+ var $;
2293
+ const h = ($ = c.value) == null ? void 0 : $.querySelector(
2288
2294
  'input,select,textarea,button,[tabindex]:not([tabindex="-1"])'
2289
2295
  );
2290
- y == null || y.focus();
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 h() {
2303
+ function y() {
2298
2304
  e.closeOnBackdrop !== !1 && i("close");
2299
2305
  }
2300
- return (d, y) => (l(), Ne(ht, { name: "fe-modal" }, {
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: h
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: y[1] || (y[1] = ke(() => {
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: y[0] || (y[0] = (E) => i("close"))
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__ */ xe({
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(""), h = b(null);
2357
- We(() => e.open, (y) => {
2358
- y && (t.value = "", h.value = null);
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 y = t.value.trim();
2362
- if (!y) {
2363
- h.value = c("modal.newfolder.placeholder");
2367
+ const h = t.value.trim();
2368
+ if (!h) {
2369
+ y.value = c("modal.newfolder.placeholder");
2364
2370
  return;
2365
2371
  }
2366
- if (/[\\/]/.test(y) || y === "." || y === "..") {
2367
- h.value = "Geçersiz karakter";
2372
+ if (/[\\/]/.test(h) || h === "." || h === "..") {
2373
+ y.value = "Geçersiz karakter";
2368
2374
  return;
2369
2375
  }
2370
- i("submit", y);
2376
+ i("submit", h);
2371
2377
  }
2372
- return (y, E) => (l(), Ne(kt, {
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: E[2] || (E[2] = (I) => i("close"))
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: E[1] || (E[1] = (I) => i("close"))
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": E[0] || (E[0] = (I) => t.value = I),
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
- h.value ? (l(), f("p", gs, u(h.value), 1)) : H("", !0)
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__ */ xe({
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, y]) => {
2423
- d && (t.value = y);
2428
+ ([d, h]) => {
2429
+ d && (t.value = h);
2424
2430
  }
2425
2431
  );
2426
- function h() {
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, y) => (l(), Ne(kt, {
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: y[2] || (y[2] = (E) => i("close"))
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: y[1] || (y[1] = (E) => i("close"))
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: h
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(h, ["prevent"])
2456
+ onSubmit: ke(y, ["prevent"])
2451
2457
  }, [
2452
2458
  _e(o("input", {
2453
- "onUpdate:modelValue": y[0] || (y[0] = (E) => t.value = E),
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(h, ["prevent"]), ["enter"])
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__ */ xe({
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, h) => (l(), Ne(kt, {
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: h[2] || (h[2] = (d) => i("close"))
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: h[0] || (h[0] = (d) => i("close"))
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: h[1] || (h[1] = (d) => i("confirm"))
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__ */ xe({
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), h = b(""), d = b("");
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, h.value = "", d.value = "");
2523
+ L && (t.value = !1, y.value = "", d.value = "");
2518
2524
  });
2519
- function y() {
2525
+ function h() {
2520
2526
  i("submit", {
2521
2527
  password: t.value,
2522
- expires_at: h.value ? new Date(h.value).toISOString() : null,
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 E(L, A) {
2532
+ async function $(L, O) {
2527
2533
  try {
2528
- await navigator.clipboard.writeText(L), i("toast", A);
2534
+ await navigator.clipboard.writeText(L), i("toast", O);
2529
2535
  } catch {
2530
2536
  }
2531
2537
  }
2532
- function I(L) {
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 A = L.url;
2539
- return L.password_pin && (A += (A.includes("?") ? "&" : "?") + "pin=" + encodeURIComponent(L.password_pin)), `curl -fSL ${L.filename ? `-o ${I(L.filename)} ` : "-OJ "}${I(A)}`;
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, A) => (l(), Ne(kt, {
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: A[7] || (A[7] = (S) => i("close"))
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: A[6] || (A[6] = (S) => i("close"))
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: y
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
- A[8] || (A[8] = o("label", null, "Link", -1)),
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: A[3] || (A[3] = (S) => E(s.share.url, z(c)("modal.share.url_copied")))
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
- A[9] || (A[9] = o("label", null, "PIN", -1)),
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: A[4] || (A[4] = (S) => E(s.share.password_pin, z(c)("modal.share.pin_copied")))
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
- A[10] || (A[10] = o("label", null, "CLI", -1)),
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: A[5] || (A[5] = (S) => E(j.value, z(c)("modal.share.cli_copied")))
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(y, ["prevent"])
2616
+ onSubmit: ke(h, ["prevent"])
2611
2617
  }, [
2612
2618
  o("label", Cs, [
2613
2619
  _e(o("input", {
2614
- "onUpdate:modelValue": A[0] || (A[0] = (S) => t.value = S),
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": A[1] || (A[1] = (S) => h.value = S),
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, h.value]
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": A[2] || (A[2] = (S) => d.value = S),
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__ */ xe({
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 h = ["jpg", "jpeg", "png", "webp", "gif", "bmp", "avif", "svg", "heic"], d = ["mp4", "webm", "mov", "mkv", "m4v", "ogv"], y = ["mp3", "wav", "ogg", "flac", "m4a", "aac", "opus"], E = {
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
- }, I = ["txt", "log"], j = ["docx", "doc", "xlsx", "xls", "pptx", "ppt", "odt", "ods", "odp", "rtf"], L = {
2786
- glb: () => import("./Viewer3D-RnzhEk_6.js"),
2787
- gltf: () => import("./Viewer3D-RnzhEk_6.js"),
2788
- obj: () => import("./Viewer3D-RnzhEk_6.js"),
2789
- stl: () => import("./Viewer3D-RnzhEk_6.js"),
2790
- fbx: () => import("./Viewer3D-RnzhEk_6.js"),
2791
- "3ds": () => import("./Viewer3D-RnzhEk_6.js"),
2792
- epub: () => import("./EpubViewer-D2OggB7W.js"),
2793
- mmd: () => import("./MermaidViewer-iG7VuHeu.js"),
2794
- mermaid: () => import("./MermaidViewer-iG7VuHeu.js"),
2795
- drawio: () => import("./DrawioViewer-BIm8G98S.js"),
2796
- dio: () => import("./DrawioViewer-BIm8G98S.js"),
2797
- tif: () => import("./TiffViewer-uOJVggkp.js"),
2798
- tiff: () => import("./TiffViewer-uOJVggkp.js"),
2799
- psd: () => import("./PsdViewer-C-92G5j0.js"),
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-Dcew5gZQ.js"),
2805
- csv: () => import("./CsvViewer-BAMxNxy4.js"),
2806
- tsv: () => import("./CsvViewer-BAMxNxy4.js"),
2807
- zip: () => import("./ArchiveViewer-BmpDoIWA.js")
2808
- }, A = ee(() => {
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 (h.includes(M)) return "image";
2817
+ if (y.includes(M)) return "image";
2812
2818
  if (d.includes(M)) return "video";
2813
- if (y.includes(M)) return "audio";
2819
+ if (h.includes(M)) return "audio";
2814
2820
  if (M === "pdf") return "pdf";
2815
- const $ = e.openMode !== "view";
2816
- return M === "md" || M === "markdown" ? "markdown" : M in E ? "code" : M in L ? "viewer" : j.includes(M) ? "office" : I.includes(M) ? $ ? "code" : "text" : "other";
2817
- }), S = Qa(null), v = b(null), B = b(!1);
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
- S.value = null, v.value = null;
2820
- const $ = L[M];
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
- S.value = R.default ?? R;
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 O() {
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 && ($.filePath = Z(e.file.path), (M === "zip" || M === "rar" || M === "7z" || M === "tar" || M === "gz" || M === "tgz") && ($.filePath = e.file.path)), (M === "drawio" || M === "dio") && ($.drawioUrl = e.drawioUrl ?? void 0, $.saveUrl = e.saveTextEndpoint ?? void 0, $.readOnly = e.openMode === "view"), M === "pdf" && ($.pdfWorkerUrl = e.pdfWorkerUrl ?? void 0, $.pdfSaveUrl = e.pdfSaveUrl ?? void 0), $;
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 $ = t(e.file), R = e.viewerBaseUrl || "/files/edit", ae = R.includes("?") ? "&" : "?", te = `${R}${ae}path=${encodeURIComponent(e.file.path)}&type=${encodeURIComponent($)}&mode=${encodeURIComponent(M)}`;
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 C = /* @__PURE__ */ new Set([
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 && C.has(t(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 $ = M.indexOf("://");
2928
- return $ === -1 ? M : M.slice($ + 3);
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
- }, $ = await fetch(e.saveTextEndpoint, {
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 (!$.ok)
2953
- throw new Error(`save failed: ${$.status} ${await $.text()}`);
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($, e.authHeaders());
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 = $ instanceof Error ? $.message : String($);
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 $ = await import(
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 = $.default ?? $, te = new 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 = $ instanceof Error ? $.message : String($);
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, $ = Array.from(M.querySelectorAll("pre > code"));
3014
- if ($.length === 0) return;
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: $, ignoreIllegals: !0 });
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 $e(M) {
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: $e($),
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() : "", $ = { "Content-Type": "application/json" };
3168
- e.authHeaders && Object.assign($, e.authHeaders());
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, $, R) {
3193
- if (Y.value = "", Me.value = "", Te.value = "", re.value = null, je.value = null, S.value = null, v.value = null, B.value = !1, Ye(), fe(), !(!M || !$)) {
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($), q.value) return;
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 = E[t(e.file)] || "";
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, A.value, e.openMode],
3213
- ([M, $, R]) => {
3214
- tt(M, $, R);
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, A.value);
3224
+ e.open && tt(e.open, G.value, O.value);
3219
3225
  });
3220
3226
  });
3221
- const at = ee(() => E[t(e.file)] || "plaintext"), nt = b(null), je = b(null);
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 || A.value !== "office")) {
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 $ = await fetch(e.onlyOfficeConfigEndpoint, {
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 (!$.ok)
3247
- throw new Error(`Config fetch ${$.status}: ${(await $.text()).slice(0, 200)}`);
3248
- const { config: R, documentServerUrl: ae } = await $.json();
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 $ = M;
3279
- if ($ != null && $.data && typeof $.data == "object") {
3280
- const R = $.data;
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 ($ == null ? void 0 : $.data) == "string") return $.data;
3286
- if (typeof ($ == null ? void 0 : $.errorDescription) == "string") return $.errorDescription;
3287
- if (typeof ($ == null ? void 0 : $.message) == "string") return $.message;
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(($, R) => {
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", () => $()), ae.addEventListener("error", () => R(new Error("OnlyOffice api.js load failed")));
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 = () => $(), te.onerror = () => R(new Error("OnlyOffice api.js load failed")), document.head.appendChild(te);
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: $[2] || ($[2] = (ae) => i("close"))
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: $[1] || ($[1] = (ae) => i("close"))
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
- A.value === "image" ? (l(), f("img", {
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)) : A.value === "video" ? (l(), f("video", {
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)) : A.value === "audio" ? (l(), f("audio", {
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)) : A.value === "pdf" ? (l(), f("object", {
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
- $[3] || ($[3] = o("span", { class: "fe-preview__fallback-icon" }, "📕", -1)),
3370
- $[4] || ($[4] = o("p", null, "Tarayıcı PDF'i inline açamadı.", -1)),
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)) : A.value === "markdown" ? (l(), f(le, { key: 4 }, [
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
- $[5] || ($[5] = Pe(" Dosya çok büyük (>1 MB). ", -1)),
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
- $[6] || ($[6] = o("span", { class: "fe-preview__md-split-label" }, "MARKDOWN", -1)),
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": $[0] || ($[0] = (ae) => Y.value = ae),
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)) : A.value === "viewer" ? (l(), f(le, { key: 5 }, [
3436
+ ], 64)) : O.value === "viewer" ? (l(), f(le, { key: 5 }, [
3431
3437
  v.value && !B.value ? (l(), f("div", rr, [
3432
- $[7] || ($[7] = o("span", { class: "fe-preview__fallback-icon" }, "⚠️", -1)),
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
- ])) : S.value ? (l(), Ne(Za(S.value), en({ key: 2 }, J.value, {
3444
+ ])) : T.value ? (l(), Ne(Za(T.value), en({ key: 2 }, J.value, {
3439
3445
  class: "fe-preview__viewer",
3440
- onFallback: O
3446
+ onFallback: I
3441
3447
  }), null, 16)) : (l(), f("div", ir, [
3442
- $[8] || ($[8] = o("span", { class: "fe-preview__fallback-icon" }, "⏳", -1)),
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)) : A.value === "code" || A.value === "text" ? (l(), f(le, { key: 6 }, [
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
- $[9] || ($[9] = Pe(" Dosya çok büyük (>1 MB). ", -1)),
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)) : A.value === "office" ? (l(), f(le, { key: 7 }, [
3498
+ ], 64)) : O.value === "office" ? (l(), f(le, { key: 7 }, [
3493
3499
  je.value ? (l(), f("div", Cr, [
3494
- $[10] || ($[10] = o("span", { class: "fe-preview__fallback-icon" }, "📄", -1)),
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
- $[11] || ($[11] = o("span", { class: "fe-preview__fallback-icon" }, "📎", -1)),
3508
- $[12] || ($[12] = o("p", null, "Bu dosya tipi için önizleme henüz yok.", -1)),
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__ */ xe({
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"), h = b(null), d = b([]), y = b(""), E = b(null), I = ee(() => (e.fileName.split(".").pop() || "").toLowerCase()), j = ee(() => {
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() === I.value) || w.find((p) => (p.format || "").toLowerCase() === I.value) || null;
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 = y.value.trim().toLowerCase(), p = /* @__PURE__ */ new Set(), C = [];
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), C.push(k));
3557
+ !G || p.has(G) || (p.add(G), S.push(k));
3552
3558
  }
3553
- return C.sort((k, G) => (k.ext || k.format).localeCompare(G.ext || G.format)), w ? C.filter(
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
- ) : C;
3556
- }), A = ee(() => `${e.convertUrl.replace(/\/$/, "")}/?embed=1`);
3557
- let S = 0;
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 = {}, C = []) {
3560
- const k = ++S;
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 }, "*", C), setTimeout(() => {
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
- O();
3578
+ I();
3573
3579
  return;
3574
3580
  }
3575
- const C = v.get(p.id);
3576
- C && (v.delete(p.id), p.ok ? C.resolve(p) : C.reject(new Error(p.error || "convert error")));
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 O() {
3584
+ async function I() {
3579
3585
  try {
3580
3586
  const w = await B("listFormats");
3581
- d.value = w.formats || [], t.value = "ready", j.value || (h.value = _("convert.unsupportedInput", "Bu dosya tipi için kaynak format bulunamadı."));
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
- h.value = w.message, t.value = "error";
3589
+ y.value = w.message, t.value = "error";
3584
3590
  }
3585
3591
  }
3586
3592
  async function J() {
3587
- if (!(!E.value || !j.value)) {
3588
- t.value = "converting", h.value = null;
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: E.value.index },
3598
+ { name: e.fileName, bytes: w, fromIndex: j.value.index, toIndex: $.value.index },
3593
3599
  [w]
3594
- ), C = e.fileName.replace(/\.[^.]+$/, ""), k = p.ext || E.value.ext || E.value.format, G = `${C}.${k}`, W = new File([p.bytes], G, { type: E.value.mime || "application/octet-stream" });
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
- h.value = w.message, t.value = "error";
3603
+ y.value = w.message, t.value = "error";
3598
3604
  }
3599
3605
  }
3600
3606
  }
3601
- function _(w, p) {
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((C) => i("close"), ["self"]))
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(_("convert.title", "Dönüştür")) + " — " + u(s.fileName), 1),
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] = (C) => i("close"))
3619
+ onClick: p[0] || (p[0] = (S) => i("close"))
3614
3620
  }, "✕")
3615
3621
  ]),
3616
- t.value === "loading" ? (l(), f("div", Ir, u(_("convert.loading", "Dönüştürücü yükleniyor…")), 1)) : t.value === "done" ? (l(), f("div", Br, [
3617
- o("p", null, "✓ " + u(_("convert.done", "Dönüştürüldü ve klasöre yüklendi.")), 1),
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] = (C) => i("close"))
3621
- }, u(_("convert.close", "Kapat")), 1)
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(_("convert.from", "Kaynak")) + ": ", 1),
3625
- o("b", null, u(I.value || "?"), 1)
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] = (C) => y.value = C),
3634
+ "onUpdate:modelValue": p[2] || (p[2] = (S) => h.value = S),
3629
3635
  class: "filex-cv__search",
3630
- placeholder: _("convert.searchFmt", "Hedef format ara (pdf, mp4, png…)")
3636
+ placeholder: g("convert.searchFmt", "Hedef format ara (pdf, mp4, png…)")
3631
3637
  }, null, 8, zr), [
3632
- [Fe, y.value]
3638
+ [Fe, h.value]
3633
3639
  ]),
3634
3640
  o("div", Lr, [
3635
- (l(!0), f(le, null, Se(L.value, (C) => {
3641
+ (l(!0), f(le, null, Se(L.value, (S) => {
3636
3642
  var k;
3637
3643
  return l(), f("button", {
3638
- key: C.index,
3639
- class: he(["filex-cv__fmt", { "is-sel": ((k = E.value) == null ? void 0 : k.index) === C.index }]),
3640
- onClick: (G) => E.value = C
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((C.ext || C.format).toUpperCase()), 1),
3643
- o("small", null, u(C.name), 1)
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(_("convert.noFmt", "Eşleşen format yok.")), 1)) : H("", !0)
3652
+ L.value.length === 0 ? (l(), f("div", Ur, u(g("convert.noFmt", "Eşleşen format yok.")), 1)) : H("", !0)
3647
3653
  ]),
3648
- h.value ? (l(), f("div", Rr, u(h.value), 1)) : H("", !0),
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: !E.value || !j.value || t.value === "converting",
3658
+ disabled: !$.value || !j.value || t.value === "converting",
3653
3659
  onClick: J
3654
- }, u(t.value === "converting" ? _("convert.converting", "Dönüştürülüyor…") : _("convert.convert", "Dönüştür")), 9, Kr)
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: A.value,
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__ */ xe({
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 h = ee(() => {
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"), y = b(!1), E = b(!0), I = b(""), j = b([]), L = b([]), A = b(!0), S = b(""), v = b("viewer"), B = b(!1), U = b(""), O = b(!1), J = b("user"), _ = b(null), w = b([]), p = b(!1);
3749
- let C;
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
- E.value = !0, I.value = "";
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 ?? [], A.value = x.storage_rbac, y.value = !0;
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 ? (y.value = !1, d.value = "share") : I.value = x instanceof Error ? x.message : String(x);
3790
+ x.status === 403 ? (h.value = !1, d.value = "share") : A.value = x instanceof Error ? x.message : String(x);
3785
3791
  } finally {
3786
- E.value = !1;
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
- C && clearTimeout(C);
3806
+ S && clearTimeout(S);
3801
3807
  });
3802
- function $e() {
3803
- O.value = !1, _.value = null, U.value = "";
3804
- const x = S.value.trim();
3805
- if (C && clearTimeout(C), x.length < 1) {
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
- C = setTimeout(async () => {
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, S.value = x.email;
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 }), S.value = "", w.value = [], await ce(), U.value = t("Yetki verildi.", "Access granted.");
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 = S.value.trim().toLowerCase();
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 = "", _.value = null;
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 }), S.value = "", await ce(), U.value = t("Yetki verildi.", "Access granted.");
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
- O.value = !0;
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: S.value.trim().toLowerCase(),
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
- _.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."), O.value = !1, S.value = "", await ce();
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 = S.value.trim().toLowerCase(), O.value = !1, U.value = "", d.value = "share";
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 Ce, Le;
4031
- const x = h.value.name, m = ((Ce = Y.value) == null ? void 0 : Ce.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 = [];
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 = h.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), Ce = t(`${x} adlı klasöre dosya eklemeniz istendi`, `You've been asked to add files to ${x}`), Le = [];
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: Ce, text: Le.join(`
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(h.value.name), 1),
4072
- o("span", Qr, " · " + u(h.value.adapter), 1)
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
- y.value ? (l(), f("button", {
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" && y.value ? (l(), f(le, { key: 0 }, [
4100
- A.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)),
4101
- I.value ? (l(), f("div", al, u(I.value), 1)) : H("", !0),
4102
- E.value ? (l(), f("div", nl, u(t("Yükleniyor…", "Loading…")), 1)) : (l(), f(le, { key: 3 }, [
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) => S.value = 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: $e,
4118
+ onInput: Ce,
4113
4119
  onKeyup: Ze(Xe, ["enter"]),
4114
- onFocus: $e
4120
+ onFocus: Ce
4115
4121
  }, null, 40, ll), [
4116
- [Fe, S.value]
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
- O.value ? (l(), f("div", yl, [
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 = _.value) != null && ue.tempPassword ? (l(), f("div", Sl, [
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(_.value.tempPassword), 1)
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__ */ xe({
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), h = wn(t, { reload: () => m() }), d = h.presenceUsers;
4515
- function y(a) {
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
- return !n || n === ".trash" || n.startsWith(".trash/") ? null : ut(n) || null;
4523
+ if (n === ".trash" || n.startsWith(".trash/")) return null;
4524
+ const _ = xe(n);
4525
+ return !_ || !_.includes("://") || _.startsWith("://") ? null : _;
4518
4526
  }
4519
4527
  Qe(() => {
4520
- h.start(), h.subscribe(y(v.value));
4521
- }), it(() => h.stop());
4522
- const E = rn(i.config, t), I = vn(i.config, t, {
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(), A = L.replace("://", "/").replace(/^\/+|\/+$/g, ""), S = A || i.config.initialPath || "", v = b(S), B = b(i.config.defaultAdapter || "brf"), U = b(S), O = b([]), J = b(""), _ = b(""), w = tn((a, n) => {
4533
- let g = (() => {
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 T = localStorage.getItem(sa);
4536
- if (T === "list" || T === "grid") return T;
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(), g;
4551
+ return a(), _;
4544
4552
  },
4545
- set(T) {
4546
- if (T !== g) {
4547
- g = T;
4553
+ set(E) {
4554
+ if (E !== _) {
4555
+ _ = E;
4548
4556
  try {
4549
- localStorage.setItem(sa, T);
4557
+ localStorage.setItem(sa, E);
4550
4558
  } catch {
4551
4559
  }
4552
4560
  n();
4553
4561
  }
4554
4562
  }
4555
4563
  };
4556
- }), p = b(""), C = b(!1), k = b(""), G = ee(() => C.value), W = ee(() => i.config.locale || "tr"), Z = ee(() => {
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 A && a === A ? !1 : a.length > 0;
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 (C.value) {
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 === A) return;
4574
+ if (!a || a === O) return;
4567
4575
  const n = a.lastIndexOf("/");
4568
- let g = n === -1 ? "" : a.slice(0, n);
4569
- A && !(g === A || g.startsWith(A + "/")) && (g = A), m(g);
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(() => O.value);
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
- h.setFocus(a.length === 1 ? a[0].basename : null);
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 ?? "", g = await fetch(`${n}/api/files/manager/star/list?limit=500`, {
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 (!g.ok) return;
4591
- const T = await g.json(), X = Array.isArray(T) ? T : Array.isArray(T == null ? void 0 : T.entries) ? T.entries : Array.isArray(T == null ? void 0 : T.nodes) ? T.nodes : [];
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 g = new Set(ye.value);
4599
- n ? g.add(a.id) : g.delete(a.id), ye.value = g;
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, g, T;
4636
+ var n, _, E;
4629
4637
  if (i.config.onlyOfficeBase) return i.config.onlyOfficeBase;
4630
- const a = (g = (n = ne.value) == null ? void 0 : n.external) == null ? void 0 : g.onlyoffice;
4631
- return a && !ta(a) ? null : ((T = ne.value) == null ? void 0 : T.onlyoffice_url) || 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 g, T, X;
4641
+ var _, E, X;
4634
4642
  const a = i.config.drawioUrl || i.config.drawioBase;
4635
4643
  if (a) return a;
4636
- const n = (T = (g = ne.value) == null ? void 0 : g.external) == null ? void 0 : T.drawio;
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), $e = 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);
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)), $ = b(null), R = b(null), ae = b(null), te = b(null);
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 g = n.indexOf("/");
4661
- return g === -1 ? { adapter: n, rel: "" } : { adapter: n.slice(0, g), rel: n.slice(g + 1) };
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: g } = st(a);
4666
- return n ? g ? `${n}://${g}` : `${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 g = a.slice(0, n), T = a.slice(n + 3).replace(/^\/+|\/+$/g, "");
4672
- return T ? `${g}/${T}` : g;
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, C.value = !1;
4697
+ j.value = !0, S.value = !1;
4690
4698
  let n = a ?? v.value ?? "";
4691
4699
  try {
4692
- if (_.value = "", A) {
4700
+ if (g.value = "", O) {
4693
4701
  const Ee = String(n).replace(/^\/+|\/+$/g, "");
4694
- (!Ee || !(Ee === A || Ee.startsWith(A + "/"))) && (n = A);
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 = "", O.value = x();
4705
+ v.value = "", B.value = "", U.value = "", I.value = x();
4698
4706
  return;
4699
4707
  }
4700
- const g = we.value ? ut(n) : Ce(n), T = p.value ? await t.search(g, p.value) : await t.index(g);
4701
- B.value = T.adapter, U.value = T.dirname, J.value = T.perm || "", O.value = (T.files || []).filter((Ee) => !(Ee.path.includes(".thumbs") || Ee.path.includes(".versions") || Ee.basename === ".versions" || Ee.basename === ".trash" || Ee.basename === ".keepdir"));
4702
- const X = V(T.dirname), K = X === "fileman" || X === "", ve = X.startsWith("fileman/.trash"), De = i.config.trashVisible !== !1;
4703
- !ve && K && De && (O.value.unshift({
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: `${T.adapter}://fileman/.trash`,
4713
+ path: `${E.adapter}://fileman/.trash`,
4706
4714
  basename: ".trash",
4707
4715
  extension: "",
4708
- storage: T.adapter,
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(T.adapter)), v.value = we.value ? rt(T.dirname) : V(T.dirname);
4715
- } catch (g) {
4716
- const T = g instanceof Error ? g.message : String(g), X = g.status;
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
- _.value = String(n), O.value = [], c("error", { message: T, context: { path: a } });
4726
+ g.value = String(n), I.value = [], c("error", { message: E, context: { path: a } });
4719
4727
  return;
4720
4728
  }
4721
- c("error", { message: T, context: { path: a } }), oe(T);
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
- _.value = "", m("");
4739
+ g.value = "", m("");
4732
4740
  }
4733
4741
  async function D(a) {
4734
4742
  try {
4735
- const { entries: n } = await t.listTrash(a), g = O.value.find((K) => K.basename === ".trash");
4736
- if (!g) return;
4737
- let T = 0, X = 0;
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
- T += K.size || 0;
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
- g.size = T, X > 0 && (g.last_modified = X);
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 || "", C.value = !0, q.clear();
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
- O.value = a.map(
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 Ce(a) {
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 : S ? "" : $t();
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 g = a ? a.split("/").map(encodeURIComponent).join("/") : "", T = g ? `#${g}` : "";
4829
- (window.location.hash || "") !== T && history.replaceState(
4836
+ const _ = a ? a.split("/").map(encodeURIComponent).join("/") : "", E = _ ? `#${_}` : "";
4837
+ (window.location.hash || "") !== E && history.replaceState(
4830
4838
  null,
4831
4839
  "",
4832
- T || window.location.pathname + window.location.search
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 }), h.subscribe(y(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 && I.startPolling(), t.endpoints.capabilities && t.capabilities().then((g) => {
4847
- ne.value = g;
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, $e.value = !1, (a = $.value) == null || a.hide();
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 g = we.value ? rt(a.path) : V(a.path);
4894
- m(g);
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, $e.value = !0, c("file-opened", { path: a.path, basename: a.basename }), Re(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 (C.value) {
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 g = n.map((X) => X.path), { restored: T } = await t.restore(g);
4961
- oe(`${T} öğe geri getirildi`), q.clear(), await m();
4962
- } catch (g) {
4963
- c("error", { message: g.message, context: { op: "restore" } });
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, $e.value = !0, Re(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(), g = i.config.openPageBase;
4980
- if (!g) {
4987
+ const n = (a.extension || "").toLowerCase(), _ = i.config.openPageBase;
4988
+ if (!_) {
4981
4989
  vt(a);
4982
4990
  return;
4983
4991
  }
4984
- const T = g.includes("?") ? "&" : "?", X = `${g}${T}path=${encodeURIComponent(a.path)}&type=${encodeURIComponent(n)}&mode=edit`;
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 g;
5001
- _t.value = "selection", q.has(a.path) || (q.click(a.path), await yt()), (g = $.value) == null || g.show({ clientX: n.clientX, clientY: n.clientY }, q.nodes.value);
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 = $.value) == null || n.show({ clientX: a.clientX, clientY: a.clientY }, []);
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 = $.value) == null || n.show({ clientX: a.x, clientY: a.y }, []);
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, g = a.length === 1;
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 T = (v.value ?? "").replace(/^\/+|\/+$/g, "");
5025
- return we.value && T === "" ? n ? g ? [
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, g = a.length === 1, T = g && ((Qt = a[0]) == null ? void 0 : Qt.type) === "file", X = W.value === "en" ? "Tags…" : "Etiketler…", K = g && 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";
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: !g },
5037
- { key: "preview", label: Y("ctx.preview"), icon: "👁", hidden: !g, disabled: !T },
5038
- { key: "download", label: Y("ctx.download"), icon: "⬇", hidden: !g, disabled: !T },
5039
- { key: "convert", label: Y("ctx.convert"), icon: "🔄", hidden: !g || !N.value || !Ee, disabled: !T },
5040
- { key: "access", label: Wa, icon: "🔗", hidden: !g || !Ee },
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: !g || !Ee, disabled: !g },
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 g;
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 T = n[0].id;
5094
- (g = navigator.clipboard) == null || g.writeText(String(T)).then(
5095
- () => oe(W.value === "en" ? `Node id ${T} copied` : `Node id ${T} kopyalandı`),
5096
- () => oe(`#${T}`)
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), g = a.sourcePath || "";
5140
- if (a.mode === "cut" && g === v.value) {
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, Ce(v.value), Ce(g) || void 0);
5146
- I.register(X), oe("Taşıma kuyruğa alındı");
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, Ce(v.value));
5149
- I.register(X), oe("Kopyalama kuyruğa alındı");
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], Ce(v.value));
5159
- I.register(n);
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(Ce(v.value), a), ge.value = !1, await m();
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(Ce(v.value), n.path, a), pe.value = !1, Ve.value = null, await m();
5180
- } catch (g) {
5181
- c("error", { message: g.message, context: { op: "rename" } });
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 (C.value) {
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, Ce(v.value));
5197
- I.register(n), oe("Silme kuyruğa alındı");
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(Ce(v.value), a), await m();
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: g } = await t.createShare({
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 = g, c("share-created", { path: n.path, url: g.url, pin: g.password_pin ?? null });
5226
- } catch (g) {
5227
- c("error", { message: g.message, context: { op: "share" } });
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, g = n.files ? Array.from(n.files) : [];
5243
- n.value = "", Vt(g);
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 g of a)
5249
- n && g.size >= 10 * 1024 * 1024 && await Na(g) || await La(g);
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(), g = Ce(v.value);
5261
+ const n = crypto.randomUUID(), _ = xe(v.value);
5254
5262
  F.value = [
5255
5263
  ...F.value,
5256
- { id: n, file: a, path: g, totalBytes: a.size, uploadedBytes: 0, percent: 0, status: "uploading", cancel() {
5264
+ { id: n, file: a, path: _, totalBytes: a.size, uploadedBytes: 0, percent: 0, status: "uploading", cancel() {
5257
5265
  } }
5258
5266
  ];
5259
- const T = (X) => {
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(g, [a], (X) => {
5267
- T({ percent: X, uploadedBytes: Math.round(X / 100 * a.size) }), c("upload-progress", { uploadId: n, percent: X, done: X >= 100 });
5268
- }), T({ percent: 100, uploadedBytes: a.size, status: "done" }), c("upload-progress", { uploadId: n, percent: 100, done: !0 });
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
- T({ status: "error" }), c("error", {
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 g = !1;
5286
+ let _ = !1;
5279
5287
  try {
5280
- return await E.uploadFile({
5281
- path: Ce(v.value),
5288
+ return await $.uploadFile({
5289
+ path: xe(v.value),
5282
5290
  file: a,
5283
- onProgress: (T) => {
5284
- if (g) {
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] = { ...T, id: n }, F.value = K;
5296
+ K[X] = { ...E, id: n }, F.value = K;
5289
5297
  }
5290
5298
  } else {
5291
- if (T.status !== "uploading" && T.uploadedBytes <= 0) return;
5292
- F.value = [...F.value, { ...T, id: n }], g = !0;
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: T.uploadId ?? n,
5296
- percent: T.percent,
5297
- done: T.status === "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 g && (F.value = F.value.filter((T) => T.id !== n)), !1;
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 g = !1;
5311
- for (const T of Array.from(n.items))
5312
- if (T.kind === "file") {
5313
- g = !0;
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 g;
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 g, T;
5331
- if ((g = a.dataTransfer) != null && g.types.includes(gt)) {
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 = (T = a.dataTransfer) != null && T.files ? Array.from(a.dataTransfer.files) : [];
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, g = a.target;
5352
- n && g && !n.contains(g) && a.preventDefault();
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 g = q.nodes.value.filter((T) => !Bt.value.has(T.path)).filter((T) => T.basename !== ".trash").map((T) => ({ path: T.path, basename: T.basename, type: T.type }));
5368
- n.dataTransfer.setData(gt, JSON.stringify(g)), n.dataTransfer.setData("text/plain", g.map((T) => T.path).join(`
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, g) {
5379
+ async function Jt(a, n, _) {
5372
5380
  try {
5373
5381
  if (t.endpoints.moveAsync) {
5374
- const { op: T } = await t.moveAsync(a, n, Ce(v.value));
5375
- I.register(T), oe("Taşıma kuyruğa alındı");
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(Ce(v.value), a, n), await m();
5385
+ await t.move(xe(v.value), a, n), await m();
5378
5386
  q.clear();
5379
- } catch (T) {
5380
- c("error", { message: T.message, context: { op: g, targetDir: n } });
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 g = (ve = n.dataTransfer) == null ? void 0 : ve.getData(gt);
5387
- if (!g) return;
5388
- let T = [];
5394
+ const _ = (ve = n.dataTransfer) == null ? void 0 : ve.getData(gt);
5395
+ if (!_) return;
5396
+ let E = [];
5389
5397
  try {
5390
- T = JSON.parse(g);
5398
+ E = JSON.parse(_);
5391
5399
  } catch {
5392
5400
  return;
5393
5401
  }
5394
- if (T.length === 0) return;
5395
- const X = a.path, K = T.map((De) => De.path).filter((De) => De && De !== X && !X.startsWith(De + "/"));
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 g = (ve = n.dataTransfer) == null ? void 0 : ve.getData(gt);
5405
- if (!g) return;
5406
- let T = [];
5412
+ const _ = (ve = n.dataTransfer) == null ? void 0 : ve.getData(gt);
5413
+ if (!_) return;
5414
+ let E = [];
5407
5415
  try {
5408
- T = JSON.parse(g);
5416
+ E = JSON.parse(_);
5409
5417
  } catch {
5410
5418
  return;
5411
5419
  }
5412
- if (T.length === 0) return;
5413
- const X = a, K = T.map((De) => De.path).filter((De) => De && De !== X && !X.startsWith(De + "/"));
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 g, T, X;
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 && O.value.length === 0 ? (l(), f("div", Mi, [
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
- ])) : _.value ? (l(), f("div", Li, [
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(_.value), 1),
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: O.value,
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: O.value,
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(I).ops.value,
5573
+ ops: z(A).ops.value,
5566
5574
  locale: W.value,
5567
- onDismiss: n[8] || (n[8] = (K) => z(I).dismiss(K))
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": ((g = Ve.value) == null ? void 0 : g.basename) || "",
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: $e.value,
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) => $e.value = !1)
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": ((T = ze.value) == null ? void 0 : T.basename) || ((X = ze.value) == null ? void 0 : X.path) || "",
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(Ce(v.value), [K]).then(() => {
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-B6jiFQPw.js.map
5766
+ //# sourceMappingURL=index-npEoKJ-x.js.map