@cocoar/vue-file-explorer-core 2.6.0 → 2.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -358,20 +358,22 @@ function g(s) {
358
358
  }, D = (e) => {
359
359
  let t = v.value.filter((t) => t.parentId === e), n = E(w.value);
360
360
  return n ? t.sort(n) : t;
361
- }, ee = e(() => D(null)), te = (e) => e.id, ne = (e) => e.kind === "folder" ? D(e.id) : void 0, O = (e) => e.name, re = (e) => e.kind === "folder" && e.hasChildren !== !1, k = "loadChildren" in c && typeof c.loadChildren == "function", ie = s.initialExpandedIds ?? (k ? [] : v.value.filter((e) => e.parentId === null && e.kind === "folder").map((e) => e.id)), A = r(new Set(ie)), j = r(null), M = r(/* @__PURE__ */ new Set()), N = r(/* @__PURE__ */ new Set()), P = (e, t, n) => {
361
+ }, ee = e(() => D(null)), O = "loadChildren" in c && typeof c.loadChildren == "function", k = r(/* @__PURE__ */ new Set()), te = (e) => e.id, ne = (e) => {
362
+ if (e.kind === "folder" && !(O && !k.value.has(e.id))) return D(e.id);
363
+ }, re = (e) => e.name, ie = (e) => e.kind === "folder" && e.hasChildren !== !1, A = s.initialExpandedIds ?? (O ? [] : v.value.filter((e) => e.parentId === null && e.kind === "folder").map((e) => e.id)), j = r(new Set(A)), M = r(null), N = r(/* @__PURE__ */ new Set()), P = r(/* @__PURE__ */ new Set()), F = (e, t, n) => {
362
364
  let r = new Set(e.value);
363
365
  n ? r.add(t) : r.delete(t), e.value = r;
364
- }, F = i([]), I = r(null), ae = e(() => F.value.find((e) => e.id === I.value) ?? null), L = (e) => e.content !== e.savedContent, R = e(() => F.value.some(L)), z = (e) => v.value.find((t) => t.id === e) ?? null, oe = e(() => j.value ? z(j.value) : null), se = (e) => {
366
+ }, I = i([]), L = r(null), ae = e(() => I.value.find((e) => e.id === L.value) ?? null), R = (e) => e.content !== e.savedContent, z = e(() => I.value.some(R)), B = (e) => v.value.find((t) => t.id === e) ?? null, oe = e(() => M.value ? B(M.value) : null), se = (e) => {
365
367
  let t = new Set([e]), n = !0;
366
368
  for (; n;) {
367
369
  n = !1;
368
370
  for (let e of v.value) e.parentId && t.has(e.parentId) && !t.has(e.id) && (t.add(e.id), n = !0);
369
371
  }
370
372
  return t;
371
- }, B = (e) => u(e, { getFileMeta: d }), ce = (e) => h(e, {
372
- meta: e.kind === "file" ? B(e) : null,
373
- path: Y(e.id)
374
- }), V = /* @__PURE__ */ new Set(), H = async (e) => {
373
+ }, V = (e) => u(e, { getFileMeta: d }), H = (e) => h(e, {
374
+ meta: e.kind === "file" ? V(e) : null,
375
+ path: X(e.id)
376
+ }), U = /* @__PURE__ */ new Set(), W = async (e) => {
375
377
  let t = u({
376
378
  id: "",
377
379
  name: e.name,
@@ -381,7 +383,7 @@ function g(s) {
381
383
  if (!t) return console.warn(`[file-explorer] Unsupported file type: ${e.name}`), null;
382
384
  if (t.editor === "pdf" || t.editor === "image") {
383
385
  let n = URL.createObjectURL(e);
384
- return V.add(n), {
386
+ return U.add(n), {
385
387
  content: n,
386
388
  editor: t.editor
387
389
  };
@@ -390,20 +392,20 @@ function g(s) {
390
392
  content: await e.text(),
391
393
  editor: t.editor
392
394
  };
393
- }, U = async (e, t) => {
395
+ }, G = async (e, t) => {
394
396
  try {
395
397
  let n = await c.createFolder(e, t);
396
- return b([n]), e && (A.value = new Set(A.value).add(e)), n;
398
+ return b([n]), e && (j.value = new Set(j.value).add(e)), n;
397
399
  } catch (n) {
398
400
  return p("createFolder", n, {
399
401
  parentId: e,
400
402
  name: t
401
403
  }), null;
402
404
  }
403
- }, W = async (e, t) => {
405
+ }, ce = async (e, t) => {
404
406
  let n = Array.from(t), r = !1;
405
407
  for (let t of n) {
406
- let n = await H(t);
408
+ let n = await W(t);
407
409
  if (!n) continue;
408
410
  let i;
409
411
  try {
@@ -415,7 +417,7 @@ function g(s) {
415
417
  });
416
418
  continue;
417
419
  }
418
- b([i]), P(N, i.id, !0);
420
+ b([i]), F(P, i.id, !0);
419
421
  try {
420
422
  await c.save(i.id, n.content), r = !0;
421
423
  } catch (e) {
@@ -424,30 +426,30 @@ function g(s) {
424
426
  name: i.name
425
427
  });
426
428
  } finally {
427
- P(N, i.id, !1);
429
+ F(P, i.id, !1);
428
430
  }
429
431
  }
430
- r && e && (A.value = new Set(A.value).add(e));
432
+ r && e && (j.value = new Set(j.value).add(e));
431
433
  }, le = async (e) => {
432
434
  let t = se(e.id);
433
435
  for (let e of t) {
434
436
  let t = c._contents?.get(e);
435
- typeof t == "string" && V.has(t) && (URL.revokeObjectURL(t), V.delete(t));
437
+ typeof t == "string" && U.has(t) && (URL.revokeObjectURL(t), U.delete(t));
436
438
  }
437
- t.size > 0 && (F.value = F.value.filter((e) => !t.has(e.id)), I.value && t.has(I.value) && (I.value = F.value[0]?.id ?? null)), P(N, e.id, !0);
439
+ t.size > 0 && (I.value = I.value.filter((e) => !t.has(e.id)), L.value && t.has(L.value) && (L.value = I.value[0]?.id ?? null)), F(P, e.id, !0);
438
440
  try {
439
- await c.delete(e.id), S(t);
441
+ await c.delete(e.id), S(t), O && t.size > 0 && (k.value = new Set([...k.value].filter((e) => !t.has(e))));
440
442
  } catch (t) {
441
443
  p("delete", t, {
442
444
  id: e.id,
443
445
  name: e.name
444
446
  });
445
447
  } finally {
446
- P(N, e.id, !1);
448
+ F(P, e.id, !1);
447
449
  }
448
- }, G = async (e) => {
450
+ }, ue = async (e) => {
449
451
  let { source: t, target: n, position: r } = e, i = T.value;
450
- P(N, t.id, !0);
452
+ F(P, t.id, !0);
451
453
  try {
452
454
  if (!n) {
453
455
  await c.move(t.id, null), C(t.id, { parentId: null });
@@ -455,7 +457,7 @@ function g(s) {
455
457
  }
456
458
  if (r === "inside") {
457
459
  if (n.kind !== "folder") return;
458
- await c.move(t.id, n.id), C(t.id, { parentId: n.id }), A.value = new Set(A.value).add(n.id);
460
+ await c.move(t.id, n.id), C(t.id, { parentId: n.id }), j.value = new Set(j.value).add(n.id);
459
461
  return;
460
462
  }
461
463
  if (!i) {
@@ -470,12 +472,12 @@ function g(s) {
470
472
  name: t.name
471
473
  });
472
474
  } finally {
473
- P(N, t.id, !1);
475
+ F(P, t.id, !1);
474
476
  }
475
- }, ue = async (e, t) => {
476
- let n = z(e);
477
+ }, de = async (e, t) => {
478
+ let n = B(e);
477
479
  if (!(!n || n.name === t)) {
478
- P(N, e, !0);
480
+ F(P, e, !0);
479
481
  try {
480
482
  await c.rename(e, t), C(e, { name: t });
481
483
  } catch (n) {
@@ -485,56 +487,56 @@ function g(s) {
485
487
  });
486
488
  return;
487
489
  } finally {
488
- P(N, e, !1);
490
+ F(P, e, !1);
489
491
  }
490
492
  if (n.kind === "file") {
491
- let r = F.value.findIndex((t) => t.id === e);
493
+ let r = I.value.findIndex((t) => t.id === e);
492
494
  if (r >= 0) {
493
- let e = u(n, { getFileMeta: d }), i = F.value.slice();
495
+ let e = u(n, { getFileMeta: d }), i = I.value.slice();
494
496
  i[r] = {
495
497
  ...i[r],
496
498
  name: t,
497
499
  editor: e?.editor ?? i[r].editor,
498
500
  language: e?.language
499
- }, F.value = i;
501
+ }, I.value = i;
500
502
  }
501
503
  }
502
504
  }
503
505
  }, K = (e) => {
504
- let t = F.value.findIndex((t) => t.id === e);
505
- if (t < 0 || F.value[t].pinned) return;
506
- let n = F.value.slice();
506
+ let t = I.value.findIndex((t) => t.id === e);
507
+ if (t < 0 || I.value[t].pinned) return;
508
+ let n = I.value.slice();
507
509
  n[t] = {
508
510
  ...n[t],
509
511
  pinned: !0
510
- }, F.value = n;
511
- }, de = (e, t, n) => {
512
+ }, I.value = n;
513
+ }, fe = (e, t, n) => {
512
514
  if (e === t) return;
513
- let r = F.value, i = r.findIndex((t) => t.id === e), a = r.findIndex((e) => e.id === t);
515
+ let r = I.value, i = r.findIndex((t) => t.id === e), a = r.findIndex((e) => e.id === t);
514
516
  if (i < 0 || a < 0) return;
515
517
  let o = r.slice(), [s] = o.splice(i, 1), c = i < a ? a - 1 : a, l = n === "before" ? c : c + 1;
516
- o.splice(l, 0, s), F.value = o;
517
- }, fe = (e) => {
518
- let t = F.value.findIndex((t) => t.id === e);
519
- if (t < 0 || !F.value[t].pinned) return;
520
- let n = F.value.filter((t) => t.pinned || t.id === e), r = n.findIndex((t) => t.id === e);
518
+ o.splice(l, 0, s), I.value = o;
519
+ }, pe = (e) => {
520
+ let t = I.value.findIndex((t) => t.id === e);
521
+ if (t < 0 || !I.value[t].pinned) return;
522
+ let n = I.value.filter((t) => t.pinned || t.id === e), r = n.findIndex((t) => t.id === e);
521
523
  n[r] = {
522
524
  ...n[r],
523
525
  pinned: !1
524
- }, F.value = n;
525
- }, pe = (e, t) => {
526
- let n = F.value.findIndex((t) => t.id === e);
526
+ }, I.value = n;
527
+ }, me = (e, t) => {
528
+ let n = I.value.findIndex((t) => t.id === e);
527
529
  if (n < 0) return;
528
- let r = F.value.slice(), i = !r[n].pinned, a = t !== r[n].savedContent;
530
+ let r = I.value.slice(), i = !r[n].pinned, a = t !== r[n].savedContent;
529
531
  r[n] = {
530
532
  ...r[n],
531
533
  content: t,
532
534
  pinned: i && a ? !0 : r[n].pinned
533
- }, F.value = r;
535
+ }, I.value = r;
534
536
  }, q = async (e, t = { pinned: !1 }) => {
535
- let n = F.value.findIndex((t) => t.id === e.id);
537
+ let n = I.value.findIndex((t) => t.id === e.id);
536
538
  if (n >= 0) {
537
- t.pinned && !F.value[n].pinned && K(e.id), I.value = e.id;
539
+ t.pinned && !I.value[n].pinned && K(e.id), L.value = e.id;
538
540
  return;
539
541
  }
540
542
  let r = u(e, { getFileMeta: d });
@@ -551,42 +553,42 @@ function g(s) {
551
553
  savedContent: "",
552
554
  pinned: t.pinned
553
555
  };
554
- if (t.pinned) F.value = [...F.value, i];
556
+ if (t.pinned) I.value = [...I.value, i];
555
557
  else {
556
- let e = F.value.findIndex((e) => !e.pinned), t = F.value.slice();
557
- e >= 0 ? t.splice(e, 1, i) : t.push(i), F.value = t;
558
+ let e = I.value.findIndex((e) => !e.pinned), t = I.value.slice();
559
+ e >= 0 ? t.splice(e, 1, i) : t.push(i), I.value = t;
558
560
  }
559
- I.value = e.id;
561
+ L.value = e.id;
560
562
  let a;
561
- P(M, e.id, !0);
563
+ F(N, e.id, !0);
562
564
  try {
563
565
  a = await c.loadContent(e.id);
564
566
  } catch (t) {
565
567
  p("loadContent", t, {
566
568
  id: e.id,
567
569
  name: e.name
568
- }), F.value = F.value.filter((t) => t.id !== e.id), I.value === e.id && (I.value = F.value[F.value.length - 1]?.id ?? null);
570
+ }), I.value = I.value.filter((t) => t.id !== e.id), L.value === e.id && (L.value = I.value[I.value.length - 1]?.id ?? null);
569
571
  return;
570
572
  } finally {
571
- P(M, e.id, !1);
573
+ F(N, e.id, !1);
572
574
  }
573
- let o = typeof a == "string" ? a : "", s = F.value.findIndex((t) => t.id === e.id);
575
+ let o = typeof a == "string" ? a : "", s = I.value.findIndex((t) => t.id === e.id);
574
576
  if (s >= 0) {
575
- let e = F.value.slice();
577
+ let e = I.value.slice();
576
578
  e[s] = {
577
579
  ...e[s],
578
580
  content: o,
579
581
  savedContent: o
580
- }, F.value = e;
582
+ }, I.value = e;
581
583
  }
582
- }, me = (e) => {
584
+ }, he = (e) => {
583
585
  e.kind === "file" && q(e, { pinned: !0 });
584
586
  }, J = async (e) => {
585
- let t = F.value.findIndex((t) => t.id === e);
587
+ let t = I.value.findIndex((t) => t.id === e);
586
588
  if (t < 0) return !1;
587
- let n = F.value[t];
588
- if (!L(n)) return !0;
589
- P(N, e, !0);
589
+ let n = I.value[t];
590
+ if (!R(n)) return !0;
591
+ F(P, e, !0);
590
592
  try {
591
593
  await c.save(n.id, n.content);
592
594
  } catch (t) {
@@ -595,81 +597,67 @@ function g(s) {
595
597
  name: n.name
596
598
  }), !1;
597
599
  } finally {
598
- P(N, e, !1);
600
+ F(P, e, !1);
599
601
  }
600
- let r = F.value.slice();
602
+ let r = I.value.slice();
601
603
  return r[t] = {
602
604
  ...n,
603
605
  savedContent: n.content
604
- }, F.value = r, !0;
605
- }, he = async () => {
606
- I.value && await J(I.value);
607
- }, ge = (e) => {
608
- let t = F.value.findIndex((t) => t.id === e);
609
- if (t < 0 || N.value.has(e)) return;
610
- let n = F.value[t];
611
- if (L(n) && !f(`Discard unsaved changes to "${n.name}"?`)) return;
612
- let r = F.value.filter((t) => t.id !== e);
613
- F.value = r, I.value === e && (I.value = r[t]?.id ?? r[t - 1]?.id ?? null);
606
+ }, I.value = r, !0;
607
+ }, ge = async () => {
608
+ L.value && await J(L.value);
614
609
  }, _e = (e) => {
615
- let t = F.value.filter((t) => t.id !== e && L(t));
616
- if (t.length > 0 && !f(`Close ${F.value.length - 1 - t.length} other tabs? ${t.length} unsaved tab(s) will be kept open.`)) return;
617
- let n = new Set([e, ...t.map((e) => e.id)]);
618
- F.value = F.value.filter((e) => n.has(e.id)), I.value = e;
610
+ let t = I.value.findIndex((t) => t.id === e);
611
+ if (t < 0 || P.value.has(e)) return;
612
+ let n = I.value[t];
613
+ if (R(n) && !f(`Discard unsaved changes to "${n.name}"?`)) return;
614
+ let r = I.value.filter((t) => t.id !== e);
615
+ I.value = r, L.value === e && (L.value = r[t]?.id ?? r[t - 1]?.id ?? null);
619
616
  }, ve = (e) => {
620
- let t = F.value.findIndex((t) => t.id === e);
617
+ let t = I.value.filter((t) => t.id !== e && R(t));
618
+ if (t.length > 0 && !f(`Close ${I.value.length - 1 - t.length} other tabs? ${t.length} unsaved tab(s) will be kept open.`)) return;
619
+ let n = new Set([e, ...t.map((e) => e.id)]);
620
+ I.value = I.value.filter((e) => n.has(e.id)), L.value = e;
621
+ }, Y = (e) => {
622
+ let t = I.value.findIndex((t) => t.id === e);
621
623
  if (t < 0) return;
622
- let n = F.value.slice(t + 1), r = n.filter(L);
623
- r.length > 0 && !f(`Close ${n.length} tab(s)? ${r.length} have unsaved changes.`) || (F.value = F.value.slice(0, t + 1), I.value && !F.value.some((e) => e.id === I.value) && (I.value = e));
624
+ let n = I.value.slice(t + 1), r = n.filter(R);
625
+ r.length > 0 && !f(`Close ${n.length} tab(s)? ${r.length} have unsaved changes.`) || (I.value = I.value.slice(0, t + 1), L.value && !I.value.some((e) => e.id === L.value) && (L.value = e));
624
626
  }, ye = () => {
625
- let e = F.value.filter(L);
626
- e.length > 0 && !f(`Close all ${F.value.length} tabs? ${e.length} have unsaved changes.`) || (F.value = [], I.value = null);
627
+ let e = I.value.filter(R);
628
+ e.length > 0 && !f(`Close all ${I.value.length} tabs? ${e.length} have unsaved changes.`) || (I.value = [], L.value = null);
627
629
  }, be = (e, n) => {
628
- let r = new Set(A.value), i = z(e)?.parentId ?? null;
629
- for (; i;) r.add(i), i = z(i)?.parentId ?? null;
630
- A.value = r, t(() => {
631
- j.value = e, n?.(e);
630
+ let r = new Set(j.value), i = B(e)?.parentId ?? null;
631
+ for (; i;) r.add(i), i = B(i)?.parentId ?? null;
632
+ j.value = r, t(() => {
633
+ M.value = e, n?.(e);
632
634
  });
633
635
  };
634
- function Y(e) {
635
- let t = [], n = z(e);
636
- for (; n;) t.unshift(n.name), n = n.parentId ? z(n.parentId) : null;
636
+ function X(e) {
637
+ let t = [], n = B(e);
638
+ for (; n;) t.unshift(n.name), n = n.parentId ? B(n.parentId) : null;
637
639
  return t;
638
640
  }
639
- let xe = e(() => I.value ? Y(I.value) : []);
640
- o(j, (e) => {
641
+ let xe = e(() => L.value ? X(L.value) : []);
642
+ o(M, (e) => {
641
643
  if (!e) return;
642
- let t = z(e);
644
+ let t = B(e);
643
645
  t && t.kind === "file" && q(t, { pinned: !1 });
644
646
  });
645
- let X = r(/* @__PURE__ */ new Set());
646
- k && o(A, async (e, t) => {
647
- let n = [];
648
- e.forEach((e) => {
649
- t?.has(e) || n.push(e);
650
- });
651
- for (let e of n) if (!X.value.has(e)) {
652
- P(M, e, !0);
653
- try {
654
- b(await c.loadChildren(e)), X.value = new Set(X.value).add(e);
655
- } catch (t) {
656
- p("loadChildren", t, { id: e });
657
- } finally {
658
- P(M, e, !1);
659
- }
647
+ let Se = O ? async (e) => {
648
+ try {
649
+ b(await c.loadChildren(e.id)), k.value = new Set(k.value).add(e.id);
650
+ } catch (t) {
651
+ throw p("loadChildren", t, { id: e.id }), t;
660
652
  }
661
- }, {
662
- deep: !0,
663
- immediate: !0
664
- });
665
- let Z = !1, Q = async () => {
653
+ } : void 0, Z = !1, Q = async () => {
666
654
  if (!_) {
667
655
  y.value = !Z;
668
656
  try {
669
657
  let e = await c.loadTree();
670
- if (x(e), !Z && (Z = !0, s.initialExpandedIds === void 0 && !k)) {
658
+ if (x(e), !Z && (Z = !0, s.initialExpandedIds === void 0 && !O)) {
671
659
  let t = e.filter((e) => e.parentId === null && e.kind === "folder").map((e) => e.id);
672
- t.length > 0 && (A.value = new Set([...A.value, ...t]));
660
+ t.length > 0 && (j.value = new Set([...j.value, ...t]));
673
661
  }
674
662
  } catch (e) {
675
663
  p("loadTree", e, {});
@@ -677,18 +665,18 @@ function g(s) {
677
665
  y.value = !1;
678
666
  }
679
667
  }
680
- }, Se = async (e) => {
668
+ }, Ce = async (e) => {
681
669
  if (!_) {
682
670
  if (e == null) return Q();
683
- if (k) {
684
- P(M, e, !0);
671
+ if (O) {
672
+ F(N, e, !0);
685
673
  try {
686
674
  let t = await c.loadChildren(e);
687
- m.value = [...m.value.filter((t) => t.parentId !== e), ...t], X.value = new Set(X.value).add(e);
675
+ m.value = [...m.value.filter((t) => t.parentId !== e), ...t], k.value = new Set(k.value).add(e);
688
676
  } catch (t) {
689
677
  p("loadChildren", t, { id: e });
690
678
  } finally {
691
- P(M, e, !1);
679
+ F(N, e, !1);
692
680
  }
693
681
  return;
694
682
  }
@@ -697,54 +685,55 @@ function g(s) {
697
685
  };
698
686
  Q();
699
687
  let $ = (e) => {
700
- R.value && (e.preventDefault(), e.returnValue = "");
688
+ z.value && (e.preventDefault(), e.returnValue = "");
701
689
  };
702
690
  return window.addEventListener("beforeunload", $), n(() => {
703
691
  window.removeEventListener("beforeunload", $);
704
- for (let e of V) URL.revokeObjectURL(e);
705
- V.clear();
692
+ for (let e of U) URL.revokeObjectURL(e);
693
+ U.clear();
706
694
  }), {
707
695
  assets: v,
708
696
  rootNodes: ee,
709
- selectedId: j,
697
+ selectedId: M,
710
698
  selectedAsset: oe,
711
- expanded: A,
699
+ expanded: j,
712
700
  getId: te,
713
701
  getChildren: ne,
714
- getLabel: O,
715
- isExpandable: re,
702
+ getLabel: re,
703
+ isExpandable: ie,
704
+ loadChildren: Se,
716
705
  reorderable: T,
717
706
  loading: y,
718
- loadingNodes: M,
719
- savingNodes: N,
720
- openTabs: F,
721
- activeId: I,
707
+ loadingNodes: N,
708
+ savingNodes: P,
709
+ openTabs: I,
710
+ activeId: L,
722
711
  activeTab: ae,
723
- anyDirty: R,
724
- isDirty: L,
725
- setContent: pe,
726
- addFolder: U,
727
- addFiles: W,
712
+ anyDirty: z,
713
+ isDirty: R,
714
+ setContent: me,
715
+ addFolder: G,
716
+ addFiles: ce,
728
717
  deleteNode: le,
729
- moveNode: G,
730
- rename: ue,
731
- refresh: Se,
718
+ moveNode: ue,
719
+ rename: de,
720
+ refresh: Ce,
732
721
  openFile: q,
733
- activateNode: me,
722
+ activateNode: he,
734
723
  saveTab: J,
735
- saveActive: he,
736
- closeTab: ge,
737
- closeOthers: _e,
738
- closeToRight: ve,
724
+ saveActive: ge,
725
+ closeTab: _e,
726
+ closeOthers: ve,
727
+ closeToRight: Y,
739
728
  closeAll: ye,
740
729
  pinTab: K,
741
- unpinTab: fe,
742
- reorderTab: de,
730
+ unpinTab: pe,
731
+ reorderTab: fe,
743
732
  revealInTree: be,
744
733
  breadcrumbPath: xe,
745
- pathOf: Y,
746
- fileMeta: B,
747
- describeAsset: ce
734
+ pathOf: X,
735
+ fileMeta: V,
736
+ describeAsset: H
748
737
  };
749
738
  }
750
739
  //#endregion
@@ -57,6 +57,14 @@ export interface UseFileExplorerReturn<T = unknown> {
57
57
  getChildren: (a: Asset<T>) => readonly Asset<T>[] | undefined;
58
58
  getLabel: (a: Asset<T>) => string;
59
59
  isExpandable: (a: Asset<T>) => boolean;
60
+ /**
61
+ * Lazy children loader for `<CoarTree :load-children>`. `undefined` for eager
62
+ * stores (everything is already visible). When set, the tree calls it on first
63
+ * expand of an unloaded folder, owns the per-node loading/error state, and the
64
+ * consumer renders the spinner from the `isLoading` slot prop. Re-throws so the
65
+ * tree flips the row to its error state + emits `@load-error`.
66
+ */
67
+ loadChildren?: (node: Asset<T>) => Promise<void>;
60
68
  /**
61
69
  * `true` when `sortMode === 'manual'`. Reactive so a sort-mode toolbar
62
70
  * can flip it at runtime. Drives whether `move` honors a `position` arg —
@@ -70,7 +78,11 @@ export interface UseFileExplorerReturn<T = unknown> {
70
78
  * `loadingNodes` instead — `loading` is strictly the initial-load signal.
71
79
  */
72
80
  readonly loading: Readonly<Ref<boolean>>;
73
- /** Files whose content is being loaded via `store.loadContent`. */
81
+ /**
82
+ * Files whose content is being loaded via `store.loadContent`. Folder
83
+ * lazy-loads are owned by CoarTree now (read its `isLoading` slot prop), so
84
+ * this no longer carries folder ids during expand.
85
+ */
74
86
  readonly loadingNodes: Readonly<Ref<ReadonlySet<string>>>;
75
87
  /** Assets with an in-flight save/rename/delete/move. */
76
88
  readonly savingNodes: Readonly<Ref<ReadonlySet<string>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"use-file-explorer.d.ts","sourceRoot":"","sources":["../src/use-file-explorer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-file-explorer.d.ts","sourceRoot":"","sources":["../src/use-file-explorer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAuE,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAC3H,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,KAAK,EACV,KAAK,EAEL,OAAO,EACP,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,QAAQ,EACT,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB,CAAC,CAAC,GAAG,OAAO;IACjD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACrB,iFAAiF;IACjF,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,CAAC;IACrE,kFAAkF;IAClF,WAAW,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;IACjD,uEAAuE;IACvE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,sEAAsE;IACtE,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,OAAO;IAEhD,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,UAAU,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACvD,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAG3B,KAAK,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC;IAC9D,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IAClC,YAAY,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;IACvC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAG7C;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,wDAAwD;IACxD,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAGzD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACrD,QAAQ,EAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IACnC;;;OAGG;IACH,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAGlD,gEAAgE;IAChE,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/E,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,GAAG,SAAS,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,gFAAgF;IAChF,QAAQ,EAAE,CAAC,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;;;OAKG;IACH,OAAO,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGrD,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,0EAA0E;IAC1E,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B;;;;;OAKG;IACH,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAC;IAGvF,mEAAmE;IACnE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,KAAK,IAAI,CAAC;IACrE,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D;;;;OAIG;IACH,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IAGjC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,aAAa,EAAE,CAAC;CACrD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,OAAO,EACzC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC,qBAAqB,CAAC,CAAC,CAAC,CAkxB1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cocoar/vue-file-explorer-core",
3
- "version": "2.6.0",
3
+ "version": "2.8.0",
4
4
  "description": "VSCode-style file/asset explorer for Vue 3 — composable + types over a pluggable AssetStore<T> backend.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -37,8 +37,8 @@
37
37
  "typecheck": "vue-tsc --noEmit"
38
38
  },
39
39
  "peerDependencies": {
40
- "@cocoar/vue-script-editor": "2.6.0",
41
- "@cocoar/vue-ui": "2.6.0",
40
+ "@cocoar/vue-script-editor": "2.8.0",
41
+ "@cocoar/vue-ui": "2.8.0",
42
42
  "vue": "^3.5.0"
43
43
  },
44
44
  "peerDependenciesMeta": {