@editora/plugins 1.0.7 → 1.0.8

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 (58) hide show
  1. package/README.md +50 -4
  2. package/dist/_commonjsHelpers-BH3jXuIh.js +1 -0
  3. package/dist/_commonjsHelpers-ByX85dGu.mjs +33 -0
  4. package/dist/anchor.cjs.js +11 -11
  5. package/dist/anchor.esm.js +130 -107
  6. package/dist/anchoredPopover-BzqGPOAE.js +1 -0
  7. package/dist/anchoredPopover-Dts0IrgU.mjs +106 -0
  8. package/dist/background-color.cjs.js +3 -3
  9. package/dist/background-color.esm.js +116 -119
  10. package/dist/code.cjs.js +82 -102
  11. package/dist/code.esm.js +1172 -662
  12. package/dist/comments.cjs.js +10 -10
  13. package/dist/comments.esm.js +195 -177
  14. package/dist/document-manager.cjs.js +1 -1
  15. package/dist/document-manager.esm.js +1 -1
  16. package/dist/documentManager-CTqRftU8.mjs +8369 -0
  17. package/dist/documentManager-Jf0RbSks.js +17 -0
  18. package/dist/embed-iframe.cjs.js +2 -2
  19. package/dist/embed-iframe.esm.js +8 -5
  20. package/dist/emojis.cjs.js +64 -39
  21. package/dist/emojis.esm.js +133 -104
  22. package/dist/html2canvas.esm-B5qzocYs.js +5 -0
  23. package/dist/html2canvas.esm-BWVIUcAF.mjs +4802 -0
  24. package/dist/{index-Bskk414V.mjs → index-BFsKNTTj.mjs} +50 -50
  25. package/dist/index-CvJk4DKa.js +221 -0
  26. package/dist/index-D3CycEFU.mjs +16543 -0
  27. package/dist/index-tqLTHcO6.js +1 -0
  28. package/dist/index.cjs.js +1 -1
  29. package/dist/{index.es-Cz1qItab.js → index.es-CE_A4QSm.js} +5 -5
  30. package/dist/{index.es-DEcRmSTY.mjs → index.es-DQ78mYYo.mjs} +4 -3
  31. package/dist/index.esm.js +87 -79
  32. package/dist/jspdf.es.min-BoS80556.js +77 -0
  33. package/dist/jspdf.es.min-DQCoX5yh.mjs +7889 -0
  34. package/dist/link.cjs.js +6 -6
  35. package/dist/link.esm.js +41 -39
  36. package/dist/math.cjs.js +21 -21
  37. package/dist/math.esm.js +151 -112
  38. package/dist/media-manager.cjs.js +15 -15
  39. package/dist/media-manager.esm.js +227 -206
  40. package/dist/merge-tag.cjs.js +44 -12
  41. package/dist/merge-tag.esm.js +368 -241
  42. package/dist/page-break.cjs.js +2 -2
  43. package/dist/page-break.esm.js +77 -69
  44. package/dist/special-characters.cjs.js +83 -45
  45. package/dist/special-characters.esm.js +149 -100
  46. package/dist/spell-check.cjs.js +9 -9
  47. package/dist/spell-check.esm.js +235 -216
  48. package/dist/template.cjs.js +14 -14
  49. package/dist/template.esm.js +157 -131
  50. package/dist/text-color.cjs.js +9 -9
  51. package/dist/text-color.esm.js +131 -115
  52. package/index.d.ts +51 -1
  53. package/package.json +3 -3
  54. package/dist/colorSelectionApply-C0iOfMWb.js +0 -1
  55. package/dist/colorSelectionApply-D8r_gV32.mjs +0 -63
  56. package/dist/documentManager-DRUc1-Cs.mjs +0 -37581
  57. package/dist/documentManager-_tQQfQi9.js +0 -317
  58. package/dist/index-D3pJyAsj.js +0 -1
@@ -1,6 +1,13 @@
1
1
  import "./shared-config.esm.js";
2
- let T = null, s = null, d = null, R = [], A = !1, M = null, U = 0, V = 0, z = 0, $ = 0, _ = 1, I = null;
3
- const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
2
+ let A = null, s = null, l = null, R = [], D = !1, I = null, V = 0, j = 0, $ = 0, C = 0, N = 1, T = null;
3
+ const W = '[data-theme="dark"], .dark, .editora-theme-dark', B = (e, t) => {
4
+ const r = (i) => {
5
+ i.key !== "Escape" || !e.isConnected || (i.preventDefault(), i.stopPropagation(), t());
6
+ };
7
+ return document.addEventListener("keydown", r, !0), () => {
8
+ document.removeEventListener("keydown", r, !0);
9
+ };
10
+ }, X = () => {
4
11
  if (typeof document > "u" || document.getElementById("rte-media-dialog-styles")) return;
5
12
  const e = document.createElement("style");
6
13
  e.id = "rte-media-dialog-styles", e.textContent = `
@@ -381,7 +388,7 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
381
388
  }
382
389
 
383
390
  .media-floating-toolbar.rte-ui-theme-dark,
384
- ${j} .media-floating-toolbar {
391
+ ${W} .media-floating-toolbar {
385
392
  --rte-media-toolbar-bg: #24303f;
386
393
  --rte-media-toolbar-border: #4a5a71;
387
394
  --rte-media-toolbar-text: #d9e6fb;
@@ -430,33 +437,33 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
430
437
  background: var(--rte-media-toolbar-separator);
431
438
  }
432
439
  `, document.head.appendChild(e);
433
- }, O = () => {
440
+ }, Y = () => {
434
441
  const e = window.getSelection();
435
442
  if (!e || e.rangeCount === 0) return null;
436
443
  const t = e.anchorNode;
437
444
  return (t instanceof HTMLElement ? t : t?.parentElement)?.closest(".rte-content, .editora-content") || null;
438
- }, X = (e) => {
445
+ }, Z = (e) => {
439
446
  if (e) return e;
440
- const t = O();
447
+ const t = Y();
441
448
  if (t) return t;
442
- if (I) return I;
449
+ if (T) return T;
443
450
  const r = document.activeElement;
444
451
  return r ? r.closest(".rte-content, .editora-content") || r : null;
445
- }, F = (e) => {
446
- const t = X(e);
447
- return t ? !!t.closest(j) : !1;
448
- }, D = (e) => {
449
- G();
452
+ }, G = (e) => {
453
+ const t = Z(e);
454
+ return t ? !!t.closest(W) : !1;
455
+ }, _ = (e) => {
456
+ X();
450
457
  const t = document.createElement("div");
451
- return t.className = "rte-media-overlay", F(e) && t.classList.add("rte-ui-theme-dark"), t;
452
- }, B = (e = !1) => {
458
+ return t.className = "rte-media-overlay", G(e) && t.classList.add("rte-ui-theme-dark"), t;
459
+ }, H = (e = !1) => {
453
460
  const t = document.createElement("div");
454
461
  return t.className = e ? "rte-media-dialog rte-media-dialog-compact" : "rte-media-dialog", t.setAttribute("role", "dialog"), t.setAttribute("aria-modal", "true"), t;
455
- }, P = (e, t) => {
462
+ }, F = (e, t) => {
456
463
  const r = window.getSelection();
457
- r && r.rangeCount > 0 && (T = r.getRangeAt(0).cloneRange());
458
- const i = D(t), a = B();
459
- let o = "upload", n = "", c = "", m = "", b = "";
464
+ r && r.rangeCount > 0 && (A = r.getRangeAt(0).cloneRange());
465
+ const i = _(t), a = H();
466
+ let o = "upload", d = "", c = "", p = "", g = "";
460
467
  const v = () => {
461
468
  a.innerHTML = `
462
469
  <div class="rte-media-header">
@@ -490,12 +497,12 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
490
497
  <div id="url-section">
491
498
  <div class="rte-media-field">
492
499
  <label class="rte-media-label">URL</label>
493
- <input type="text" id="url-input" class="rte-media-input" placeholder="https://example.com/${e}.${e === "image" ? "jpg" : "mp4"}" value="${n}">
500
+ <input type="text" id="url-input" class="rte-media-input" placeholder="https://example.com/${e}.${e === "image" ? "jpg" : "mp4"}" value="${d}">
494
501
  </div>
495
502
  ${e === "image" ? `
496
503
  <div class="rte-media-field">
497
504
  <label class="rte-media-label">Alt Text (for accessibility)</label>
498
- <input type="text" id="alt-input" class="rte-media-input" placeholder="Describe the image" value="${b}">
505
+ <input type="text" id="alt-input" class="rte-media-input" placeholder="Describe the image" value="${g}">
499
506
  </div>
500
507
  ` : ""}
501
508
  <div class="rte-media-grid">
@@ -505,14 +512,14 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
505
512
  </div>
506
513
  <div class="rte-media-field">
507
514
  <label class="rte-media-label">Height (px)</label>
508
- <input type="number" id="height-input" class="rte-media-input" placeholder="Auto" value="${m}">
515
+ <input type="number" id="height-input" class="rte-media-input" placeholder="Auto" value="${p}">
509
516
  </div>
510
517
  </div>
511
- ${n ? `
518
+ ${d ? `
512
519
  <div class="rte-media-field">
513
520
  <label class="rte-media-label">Preview</label>
514
521
  <div class="rte-media-preview">
515
- ${e === "image" ? `<img src="${n}" alt="Preview">` : `<video src="${n}" controls></video>`}
522
+ ${e === "image" ? `<img src="${d}" alt="Preview">` : `<video src="${d}" controls></video>`}
516
523
  </div>
517
524
  </div>
518
525
  ` : ""}
@@ -522,74 +529,78 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
522
529
 
523
530
  <div class="rte-media-footer">
524
531
  <button class="cancel-btn rte-media-btn rte-media-btn-secondary" type="button">Cancel</button>
525
- <button id="insert-btn" class="rte-media-btn rte-media-btn-primary" type="button" ${!n && o === "url" ? "disabled" : ""}>Insert</button>
532
+ <button id="insert-btn" class="rte-media-btn rte-media-btn-primary" type="button" ${!d && o === "url" ? "disabled" : ""}>Insert</button>
526
533
  </div>
527
534
  `;
528
535
  };
529
536
  v(), i.appendChild(a), document.body.appendChild(i);
537
+ let k = () => {
538
+ };
530
539
  const h = () => {
531
- i.parentNode && i.parentNode.removeChild(i);
532
- }, E = () => {
533
- if (!n) return;
534
- const l = e === "image" ? document.createElement("img") : document.createElement("video");
535
- l.src = n, l.setAttribute("data-media-type", e), e === "image" && b && (l.alt = b), c && (l.style.width = `${c}px`, l.setAttribute("width", c)), m && (l.style.height = `${m}px`, l.setAttribute("height", m)), e === "video" && (l.controls = !0), !c && !m ? l.style.cssText = "max-width: 100%; height: auto; display: block; margin: 1em 0; cursor: pointer;" : l.style.cssText = `display: block; margin: 1em 0; cursor: pointer; ${c ? `width: ${c}px;` : "max-width: 100%;"} ${m ? `height: ${m}px;` : "height: auto;"}`, T && (T.deleteContents(), T.insertNode(l)), h();
536
- }, y = async (l) => {
537
- const g = a.querySelector("#upload-progress"), p = a.querySelector("#progress-bar"), x = a.querySelector("#progress-text");
538
- if (g && p && x) {
539
- g.style.display = "block";
540
- let q = 0;
540
+ k(), i.parentNode && i.parentNode.removeChild(i);
541
+ };
542
+ k = B(i, h);
543
+ const L = () => {
544
+ if (!d) return;
545
+ const n = e === "image" ? document.createElement("img") : document.createElement("video");
546
+ n.src = d, n.setAttribute("data-media-type", e), e === "image" && g && (n.alt = g), c && (n.style.width = `${c}px`, n.setAttribute("width", c)), p && (n.style.height = `${p}px`, n.setAttribute("height", p)), e === "video" && (n.controls = !0), !c && !p ? n.style.cssText = "max-width: 100%; height: auto; display: block; margin: 1em 0; cursor: pointer;" : n.style.cssText = `display: block; margin: 1em 0; cursor: pointer; ${c ? `width: ${c}px;` : "max-width: 100%;"} ${p ? `height: ${p}px;` : "height: auto;"}`, A && (A.deleteContents(), A.insertNode(n)), h();
547
+ }, x = async (n) => {
548
+ const b = a.querySelector("#upload-progress"), u = a.querySelector("#progress-bar"), y = a.querySelector("#progress-text");
549
+ if (b && u && y) {
550
+ b.style.display = "block";
551
+ let M = 0;
541
552
  const f = setInterval(() => {
542
- q += Math.random() * 30, q > 90 && (q = 90), p.style.width = `${q}%`;
553
+ M += Math.random() * 30, M > 90 && (M = 90), u.style.width = `${M}%`;
543
554
  }, 200);
544
555
  try {
545
- const k = new FileReader();
546
- k.onload = () => {
547
- clearInterval(f), p.style.width = "100%", x.textContent = "Upload complete", setTimeout(() => {
548
- n = k.result, o = "url", v(), u();
556
+ const w = new FileReader();
557
+ w.onload = () => {
558
+ clearInterval(f), u.style.width = "100%", y.textContent = "Upload complete", setTimeout(() => {
559
+ d = w.result, o = "url", v(), m();
549
560
  }, 500);
550
- }, k.readAsDataURL(l);
561
+ }, w.readAsDataURL(n);
551
562
  } catch {
552
- clearInterval(f), x.textContent = "Upload failed";
563
+ clearInterval(f), y.textContent = "Upload failed";
553
564
  }
554
565
  }
555
- }, u = () => {
556
- const l = a.querySelector(".close-btn"), g = a.querySelector(".cancel-btn"), p = a.querySelector("#insert-btn"), x = a.querySelector(".tab-upload"), q = a.querySelector(".tab-url");
557
- if (l?.addEventListener("click", h), g?.addEventListener("click", h), p?.addEventListener("click", E), x?.addEventListener("click", () => {
558
- o = "upload", v(), u();
559
- }), q?.addEventListener("click", () => {
560
- o = "url", v(), u();
566
+ }, m = () => {
567
+ const n = a.querySelector(".close-btn"), b = a.querySelector(".cancel-btn"), u = a.querySelector("#insert-btn"), y = a.querySelector(".tab-upload"), M = a.querySelector(".tab-url");
568
+ if (n?.addEventListener("click", h), b?.addEventListener("click", h), u?.addEventListener("click", L), y?.addEventListener("click", () => {
569
+ o = "upload", v(), m();
570
+ }), M?.addEventListener("click", () => {
571
+ o = "url", v(), m();
561
572
  }), o === "upload") {
562
- const f = a.querySelector(".dropzone"), k = a.querySelector("#file-input");
563
- f?.addEventListener("click", () => k?.click()), f?.addEventListener("dragover", (L) => {
564
- L.preventDefault(), f.classList.add("is-dragover");
573
+ const f = a.querySelector(".dropzone"), w = a.querySelector("#file-input");
574
+ f?.addEventListener("click", () => w?.click()), f?.addEventListener("dragover", (S) => {
575
+ S.preventDefault(), f.classList.add("is-dragover");
565
576
  }), f?.addEventListener("dragleave", () => {
566
577
  f.classList.remove("is-dragover");
567
- }), f?.addEventListener("drop", (L) => {
568
- L.preventDefault(), f.classList.remove("is-dragover");
569
- const S = L.dataTransfer?.files[0];
570
- S && y(S);
571
- }), k?.addEventListener("change", (L) => {
572
- const S = L.target.files?.[0];
573
- S && y(S);
578
+ }), f?.addEventListener("drop", (S) => {
579
+ S.preventDefault(), f.classList.remove("is-dragover");
580
+ const z = S.dataTransfer?.files[0];
581
+ z && x(z);
582
+ }), w?.addEventListener("change", (S) => {
583
+ const z = S.target.files?.[0];
584
+ z && x(z);
574
585
  });
575
586
  }
576
587
  if (o === "url") {
577
- const f = a.querySelector("#url-input"), k = a.querySelector("#alt-input"), L = a.querySelector("#width-input"), S = a.querySelector("#height-input");
588
+ const f = a.querySelector("#url-input"), w = a.querySelector("#alt-input"), S = a.querySelector("#width-input"), z = a.querySelector("#height-input");
578
589
  f?.addEventListener("input", () => {
579
- n = f.value, v(), u();
580
- }), k?.addEventListener("input", () => {
581
- b = k.value;
582
- }), L?.addEventListener("input", () => {
583
- c = L.value;
590
+ d = f.value, v(), m();
591
+ }), w?.addEventListener("input", () => {
592
+ g = w.value;
584
593
  }), S?.addEventListener("input", () => {
585
- m = S.value;
594
+ c = S.value;
595
+ }), z?.addEventListener("input", () => {
596
+ p = z.value;
586
597
  });
587
598
  }
588
599
  };
589
- u(), i.addEventListener("click", (l) => {
590
- l.target === i && h();
600
+ m(), i.addEventListener("click", (n) => {
601
+ n.target === i && h();
591
602
  });
592
- }, Y = () => {
603
+ }, K = () => {
593
604
  ["nw", "ne", "sw", "se"].forEach((t) => {
594
605
  const r = document.createElement("div");
595
606
  r.className = `media-resize-handle-${t}`, r.style.cssText = `
@@ -605,7 +616,7 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
605
616
  box-shadow: 0 1px 3px rgba(0,0,0,0.3);
606
617
  `, r.setAttribute("data-position", t), document.body.appendChild(r), R.push(r);
607
618
  });
608
- }, C = () => {
619
+ }, q = () => {
609
620
  if (!s) {
610
621
  R.forEach((r) => r.style.display = "none");
611
622
  return;
@@ -620,8 +631,8 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
620
631
  const i = r.getAttribute("data-position"), a = t[i];
621
632
  r.style.left = `${a.x}px`, r.style.top = `${a.y}px`, r.style.display = "block";
622
633
  });
623
- }, Z = (e) => {
624
- const t = D(e), r = B(!0);
634
+ }, J = (e) => {
635
+ const t = _(e), r = H(!0);
625
636
  r.innerHTML = `
626
637
  <div class="rte-media-header">
627
638
  <h2 class="rte-media-title">Edit Alt Text</h2>
@@ -637,17 +648,20 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
637
648
  <button class="save-btn rte-media-btn rte-media-btn-primary" type="button">Save</button>
638
649
  </div>
639
650
  `, t.appendChild(r), document.body.appendChild(t);
640
- const i = r.querySelector("#alt-text-input"), a = r.querySelector(".close-btn"), o = r.querySelector(".cancel-btn"), n = r.querySelector(".save-btn"), c = () => {
641
- t.parentNode && t.parentNode.removeChild(t);
651
+ const i = r.querySelector("#alt-text-input"), a = r.querySelector(".close-btn"), o = r.querySelector(".cancel-btn"), d = r.querySelector(".save-btn");
652
+ let c = () => {
653
+ };
654
+ const p = () => {
655
+ c(), t.parentNode && t.parentNode.removeChild(t);
642
656
  };
643
- a.addEventListener("click", c), o.addEventListener("click", c), t.addEventListener("click", (m) => {
644
- m.target === t && c();
645
- }), n.addEventListener("click", () => {
646
- e.alt = i.value, c();
657
+ c = B(t, p), a.addEventListener("click", p), o.addEventListener("click", p), t.addEventListener("click", (g) => {
658
+ g.target === t && p();
659
+ }), d.addEventListener("click", () => {
660
+ e.alt = i.value, p();
647
661
  }), i.focus(), i.select();
648
- }, K = (e) => {
649
- const t = e.closest("a"), r = t?.getAttribute("href") || "", i = t?.getAttribute("target") || "_self", a = t?.getAttribute("title") || "", o = D(e), n = B(!0);
650
- n.innerHTML = `
662
+ }, Q = (e) => {
663
+ const t = e.closest("a"), r = t?.getAttribute("href") || "", i = t?.getAttribute("target") || "_self", a = t?.getAttribute("title") || "", o = _(e), d = H(!0);
664
+ d.innerHTML = `
651
665
  <div class="rte-media-header">
652
666
  <h2 class="rte-media-title">${t ? "Edit Link" : "Add Link"}</h2>
653
667
  <button class="close-btn rte-media-close-btn" type="button" aria-label="Close">×</button>
@@ -673,29 +687,32 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
673
687
  <button class="save-btn rte-media-btn rte-media-btn-primary" type="button">Save</button>
674
688
  </div>
675
689
  </div>
676
- `, o.appendChild(n), document.body.appendChild(o);
677
- const c = n.querySelector("#link-url"), m = n.querySelector("#link-title"), b = n.querySelector("#link-target"), v = n.querySelector(".close-btn"), h = n.querySelector(".cancel-btn"), E = n.querySelector(".save-btn"), y = n.querySelector(".remove-link-btn"), u = () => {
678
- o.parentNode && o.parentNode.removeChild(o);
690
+ `, o.appendChild(d), document.body.appendChild(o);
691
+ const c = d.querySelector("#link-url"), p = d.querySelector("#link-title"), g = d.querySelector("#link-target"), v = d.querySelector(".close-btn"), k = d.querySelector(".cancel-btn"), h = d.querySelector(".save-btn"), L = d.querySelector(".remove-link-btn");
692
+ let x = () => {
693
+ };
694
+ const m = () => {
695
+ x(), o.parentNode && o.parentNode.removeChild(o);
679
696
  };
680
- v.addEventListener("click", u), h.addEventListener("click", u), o.addEventListener("click", (l) => {
681
- l.target === o && u();
682
- }), E.addEventListener("click", () => {
683
- const l = c.value.trim();
684
- if (l) {
685
- const g = l.startsWith("http") ? l : `https://${l}`;
697
+ x = B(o, m), v.addEventListener("click", m), k.addEventListener("click", m), o.addEventListener("click", (n) => {
698
+ n.target === o && m();
699
+ }), h.addEventListener("click", () => {
700
+ const n = c.value.trim();
701
+ if (n) {
702
+ const b = n.startsWith("http") ? n : `https://${n}`;
686
703
  if (t)
687
- t.setAttribute("href", g), t.setAttribute("target", b.checked ? "_blank" : "_self"), b.checked ? t.setAttribute("rel", "noopener noreferrer") : t.removeAttribute("rel"), m.value.trim() ? t.setAttribute("title", m.value.trim()) : t.removeAttribute("title");
704
+ t.setAttribute("href", b), t.setAttribute("target", g.checked ? "_blank" : "_self"), g.checked ? t.setAttribute("rel", "noopener noreferrer") : t.removeAttribute("rel"), p.value.trim() ? t.setAttribute("title", p.value.trim()) : t.removeAttribute("title");
688
705
  else {
689
- const p = document.createElement("a");
690
- p.href = g, p.target = b.checked ? "_blank" : "_self", b.checked && (p.rel = "noopener noreferrer"), m.value.trim() && (p.title = m.value.trim()), e.replaceWith(p), p.appendChild(e);
706
+ const u = document.createElement("a");
707
+ u.href = b, u.target = g.checked ? "_blank" : "_self", g.checked && (u.rel = "noopener noreferrer"), p.value.trim() && (u.title = p.value.trim()), e.replaceWith(u), u.appendChild(e);
691
708
  }
692
- u(), d && s && H(s);
709
+ m(), l && s && U(s);
693
710
  }
694
- }), y?.addEventListener("click", () => {
695
- t && confirm("Remove link from this media?") && (t.replaceWith(e), u(), d && s && H(s));
711
+ }), L?.addEventListener("click", () => {
712
+ t && confirm("Remove link from this media?") && (t.replaceWith(e), m(), l && s && U(s));
696
713
  }), c.focus();
697
- }, J = (e) => {
698
- const t = D(e), r = B();
714
+ }, ee = (e) => {
715
+ const t = _(e), r = H();
699
716
  let i = "url", a = e.src;
700
717
  const o = () => {
701
718
  r.innerHTML = `
@@ -750,75 +767,79 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
750
767
  `;
751
768
  };
752
769
  o(), t.appendChild(r), document.body.appendChild(t);
753
- const n = () => {
754
- t.parentNode && t.parentNode.removeChild(t);
755
- }, c = () => {
756
- a && (e.src = a, n());
757
- }, m = async (v) => {
758
- const h = r.querySelector("#upload-progress"), E = r.querySelector("#progress-bar"), y = r.querySelector("#progress-text");
759
- if (h && E && y) {
770
+ let d = () => {
771
+ };
772
+ const c = () => {
773
+ d(), t.parentNode && t.parentNode.removeChild(t);
774
+ };
775
+ d = B(t, c);
776
+ const p = () => {
777
+ a && (e.src = a, c());
778
+ }, g = async (k) => {
779
+ const h = r.querySelector("#upload-progress"), L = r.querySelector("#progress-bar"), x = r.querySelector("#progress-text");
780
+ if (h && L && x) {
760
781
  h.style.display = "block";
761
- let u = 0;
762
- const l = setInterval(() => {
763
- u += Math.random() * 30, u > 90 && (u = 90), E.style.width = `${u}%`;
782
+ let m = 0;
783
+ const n = setInterval(() => {
784
+ m += Math.random() * 30, m > 90 && (m = 90), L.style.width = `${m}%`;
764
785
  }, 200);
765
786
  try {
766
- const g = new FileReader();
767
- g.onload = () => {
768
- clearInterval(l), E.style.width = "100%", y.textContent = "Upload complete", setTimeout(() => {
769
- a = g.result, i = "url", o(), b();
787
+ const b = new FileReader();
788
+ b.onload = () => {
789
+ clearInterval(n), L.style.width = "100%", x.textContent = "Upload complete", setTimeout(() => {
790
+ a = b.result, i = "url", o(), v();
770
791
  }, 500);
771
- }, g.readAsDataURL(v);
792
+ }, b.readAsDataURL(k);
772
793
  } catch {
773
- clearInterval(l), y.textContent = "Upload failed";
794
+ clearInterval(n), x.textContent = "Upload failed";
774
795
  }
775
796
  }
776
- }, b = () => {
777
- const v = r.querySelector(".close-btn"), h = r.querySelector(".cancel-btn"), E = r.querySelector("#replace-btn"), y = r.querySelector(".tab-upload"), u = r.querySelector(".tab-url");
778
- if (v?.addEventListener("click", n), h?.addEventListener("click", n), E?.addEventListener("click", c), y?.addEventListener("click", () => {
779
- i = "upload", o(), b();
780
- }), u?.addEventListener("click", () => {
781
- i = "url", o(), b();
797
+ }, v = () => {
798
+ const k = r.querySelector(".close-btn"), h = r.querySelector(".cancel-btn"), L = r.querySelector("#replace-btn"), x = r.querySelector(".tab-upload"), m = r.querySelector(".tab-url");
799
+ if (k?.addEventListener("click", c), h?.addEventListener("click", c), L?.addEventListener("click", p), x?.addEventListener("click", () => {
800
+ i = "upload", o(), v();
801
+ }), m?.addEventListener("click", () => {
802
+ i = "url", o(), v();
782
803
  }), i === "upload") {
783
- const l = r.querySelector(".dropzone"), g = r.querySelector("#file-input");
784
- l?.addEventListener("click", () => g?.click()), l?.addEventListener("dragover", (p) => {
785
- p.preventDefault(), l.classList.add("is-dragover");
786
- }), l?.addEventListener("dragleave", () => {
787
- l.classList.remove("is-dragover");
788
- }), l?.addEventListener("drop", (p) => {
789
- p.preventDefault(), l.classList.remove("is-dragover");
790
- const x = p.dataTransfer?.files[0];
791
- x && m(x);
792
- }), g?.addEventListener("change", (p) => {
793
- const x = p.target.files?.[0];
794
- x && m(x);
804
+ const n = r.querySelector(".dropzone"), b = r.querySelector("#file-input");
805
+ n?.addEventListener("click", () => b?.click()), n?.addEventListener("dragover", (u) => {
806
+ u.preventDefault(), n.classList.add("is-dragover");
807
+ }), n?.addEventListener("dragleave", () => {
808
+ n.classList.remove("is-dragover");
809
+ }), n?.addEventListener("drop", (u) => {
810
+ u.preventDefault(), n.classList.remove("is-dragover");
811
+ const y = u.dataTransfer?.files[0];
812
+ y && g(y);
813
+ }), b?.addEventListener("change", (u) => {
814
+ const y = u.target.files?.[0];
815
+ y && g(y);
795
816
  });
796
817
  }
797
818
  if (i === "url") {
798
- const l = r.querySelector("#url-input");
799
- l?.addEventListener("input", () => {
800
- a = l.value, o(), b();
819
+ const n = r.querySelector("#url-input");
820
+ n?.addEventListener("input", () => {
821
+ a = n.value, o(), v();
801
822
  });
802
823
  }
803
824
  };
804
- b(), t.addEventListener("click", (v) => {
805
- v.target === t && n();
825
+ v(), t.addEventListener("click", (k) => {
826
+ k.target === t && c();
806
827
  });
807
- }, w = () => {
808
- if (!d || !s) return;
809
- const e = d.offsetHeight || 40, t = s.offsetTop, r = s.offsetLeft, i = s.offsetWidth, a = t - e - 8, o = r + i / 2 - (d.offsetWidth || 120) / 2;
810
- d.style.top = `${a}px`, d.style.left = `${o}px`, setTimeout(() => {
811
- d && (d.style.display = "flex");
828
+ }, E = () => {
829
+ if (!l || !s) return;
830
+ const e = l.offsetHeight || 40, t = s.offsetTop, r = s.offsetLeft, i = s.offsetWidth, a = t - e - 8, o = r + i / 2 - (l.offsetWidth || 120) / 2;
831
+ l.style.top = `${a}px`, l.style.left = `${o}px`, setTimeout(() => {
832
+ l && (l.style.display = "flex");
812
833
  }, 100);
813
- }, H = (e) => {
814
- d && (d._cleanup && d._cleanup(), d.remove());
834
+ }, U = (e) => {
835
+ l && (l._cleanup && l._cleanup(), l.remove());
815
836
  const t = e.parentElement;
816
837
  if (t) {
817
- const n = t.style.position;
818
- (!n || n === "static") && (t.style.position = "relative", t._originalPosition = n), d = document.createElement("div"), d.className = "media-floating-toolbar", F(e) && d.classList.add("rte-ui-theme-dark"), t.insertBefore(d, t.firstChild), w();
838
+ const d = t.style.position;
839
+ (!d || d === "static") && (t.style.position = "relative", t._originalPosition = d), l = document.createElement("div"), l.className = "media-floating-toolbar", G(e) && l.classList.add("rte-ui-theme-dark"), t.insertBefore(l, t.firstChild), E();
819
840
  }
820
841
  const r = e.tagName === "IMG", i = e.closest("a");
821
- d.innerHTML = `
842
+ l.innerHTML = `
822
843
  <button class="media-floating-toolbar-btn btn-align-left" title="Align Left" type="button">
823
844
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="17" y1="10" x2="3" y2="10"></line><line x1="21" y1="6" x2="3" y2="6"></line><line x1="21" y1="14" x2="3" y2="14"></line><line x1="17" y1="18" x2="3" y2="18"></line></svg>
824
845
  </button>
@@ -845,94 +866,94 @@ const j = '[data-theme="dark"], .dark, .editora-theme-dark', G = () => {
845
866
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg>
846
867
  </button>
847
868
  `, setTimeout(() => {
848
- w();
869
+ E();
849
870
  }, 0);
850
- const a = () => w();
871
+ const a = () => E();
851
872
  let o = s.parentElement;
852
873
  for (; o; )
853
874
  o.addEventListener("scroll", a), o = o.parentElement;
854
- window.addEventListener("scroll", a), window.addEventListener("resize", a), d._cleanup = () => {
855
- let n = s?.parentElement;
856
- for (; n; )
857
- n.removeEventListener("scroll", a), n = n.parentElement;
875
+ window.addEventListener("scroll", a), window.addEventListener("resize", a), l._cleanup = () => {
876
+ let d = s?.parentElement;
877
+ for (; d; )
878
+ d.removeEventListener("scroll", a), d = d.parentElement;
858
879
  window.removeEventListener("scroll", a), window.removeEventListener("resize", a);
859
- }, d.querySelector(".btn-align-left")?.addEventListener("click", () => {
860
- e.style.display = "block", e.style.marginLeft = "0", e.style.marginRight = "auto", w();
861
- }), d.querySelector(".btn-align-center")?.addEventListener("click", () => {
862
- e.style.display = "block", e.style.marginLeft = "auto", e.style.marginRight = "auto", w();
863
- }), d.querySelector(".btn-align-right")?.addEventListener("click", () => {
864
- e.style.display = "block", e.style.marginLeft = "auto", e.style.marginRight = "0", w();
865
- }), d.querySelector(".btn-alt")?.addEventListener("click", () => {
866
- e.tagName === "IMG" && Z(e);
867
- }), d.querySelector(".btn-link")?.addEventListener("click", () => {
868
- K(e);
869
- }), d.querySelector(".btn-replace")?.addEventListener("click", () => {
880
+ }, l.querySelector(".btn-align-left")?.addEventListener("click", () => {
881
+ e.style.display = "block", e.style.marginLeft = "0", e.style.marginRight = "auto", E();
882
+ }), l.querySelector(".btn-align-center")?.addEventListener("click", () => {
883
+ e.style.display = "block", e.style.marginLeft = "auto", e.style.marginRight = "auto", E();
884
+ }), l.querySelector(".btn-align-right")?.addEventListener("click", () => {
885
+ e.style.display = "block", e.style.marginLeft = "auto", e.style.marginRight = "0", E();
886
+ }), l.querySelector(".btn-alt")?.addEventListener("click", () => {
870
887
  e.tagName === "IMG" && J(e);
871
- }), d.querySelector(".btn-resize")?.addEventListener("click", () => {
872
- const n = prompt("Enter width in pixels:", String(e.width || e.offsetWidth));
873
- if (n && !isNaN(parseInt(n))) {
874
- const c = parseInt(n);
875
- e.style.width = `${c}px`, e.setAttribute("width", String(c)), C(), w();
876
- }
877
- }), d.querySelector(".btn-remove")?.addEventListener("click", () => {
878
- confirm("Remove this media?") && (e.remove(), d && (d._cleanup && d._cleanup(), d.remove(), d = null), s = null, C());
879
- }), d._cleanup = () => {
880
- window.removeEventListener("scroll", w), window.removeEventListener("resize", w);
888
+ }), l.querySelector(".btn-link")?.addEventListener("click", () => {
889
+ Q(e);
890
+ }), l.querySelector(".btn-replace")?.addEventListener("click", () => {
891
+ e.tagName === "IMG" && ee(e);
892
+ }), l.querySelector(".btn-resize")?.addEventListener("click", () => {
893
+ const d = prompt("Enter width in pixels:", String(e.width || e.offsetWidth));
894
+ if (d && !isNaN(parseInt(d))) {
895
+ const c = parseInt(d);
896
+ e.style.width = `${c}px`, e.setAttribute("width", String(c)), q(), E();
897
+ }
898
+ }), l.querySelector(".btn-remove")?.addEventListener("click", () => {
899
+ confirm("Remove this media?") && (e.remove(), l && (l._cleanup && l._cleanup(), l.remove(), l = null), s = null, q());
900
+ }), l._cleanup = () => {
901
+ window.removeEventListener("scroll", E), window.removeEventListener("resize", E);
881
902
  };
882
- }, W = (e) => {
883
- I = e || null, Y(), document.addEventListener("click", (t) => {
903
+ }, O = (e) => {
904
+ T = e || null, K(), document.addEventListener("click", (t) => {
884
905
  const r = t.target;
885
906
  if (r.tagName === "IMG" || r.tagName === "VIDEO") {
886
907
  const i = r;
887
908
  let a = !1;
888
- if (I ? a = I.contains(i) : a = !!i.closest('[contenteditable="true"]'), a) {
889
- t.preventDefault(), t.stopPropagation(), s = i, s.style.display = "block", H(i), C();
909
+ if (T ? a = T.contains(i) : a = !!i.closest('[contenteditable="true"]'), a) {
910
+ t.preventDefault(), t.stopPropagation(), s = i, s.style.display = "block", U(i), q();
890
911
  return;
891
912
  }
892
913
  }
893
- if (!r.closest(".btn-link, .btn-resize, .btn-remove") && d && !r.closest("button")) {
894
- if (d._cleanup && d._cleanup(), d.remove(), d = null, s && s.parentElement) {
914
+ if (!r.closest(".btn-link, .btn-resize, .btn-remove") && l && !r.closest("button")) {
915
+ if (l._cleanup && l._cleanup(), l.remove(), l = null, s && s.parentElement) {
895
916
  const i = s.parentElement;
896
917
  i._originalPosition !== void 0 && (i.style.position = i._originalPosition, delete i._originalPosition);
897
918
  }
898
- s = null, C();
919
+ s = null, q();
899
920
  }
900
921
  }), R.forEach((t) => {
901
922
  t.addEventListener("mousedown", (r) => {
902
923
  if (!s) return;
903
- r.preventDefault(), r.stopPropagation(), A = !0, M = t.getAttribute("data-position"), U = r.clientX, V = r.clientY;
924
+ r.preventDefault(), r.stopPropagation(), D = !0, I = t.getAttribute("data-position"), V = r.clientX, j = r.clientY;
904
925
  const i = s.getBoundingClientRect();
905
- z = i.width, $ = i.height, _ = z / $, document.body.style.userSelect = "none", document.body.style.cursor = `${M}-resize`;
926
+ $ = i.width, C = i.height, N = $ / C, document.body.style.userSelect = "none", document.body.style.cursor = `${I}-resize`;
906
927
  });
907
928
  }), document.addEventListener("mousemove", (t) => {
908
- if (!A || !s || !M) return;
909
- const r = t.clientX - U, i = t.clientY - V;
910
- let a = z, o = $;
911
- switch (M) {
929
+ if (!D || !s || !I) return;
930
+ const r = t.clientX - V, i = t.clientY - j;
931
+ let a = $, o = C;
932
+ switch (I) {
912
933
  case "se":
913
- a = z + r, o = $ + i;
934
+ a = $ + r, o = C + i;
914
935
  break;
915
936
  case "sw":
916
- a = z - r, o = $ + i;
937
+ a = $ - r, o = C + i;
917
938
  break;
918
939
  case "ne":
919
- a = z + r, o = $ - i;
940
+ a = $ + r, o = C - i;
920
941
  break;
921
942
  case "nw":
922
- a = z - r, o = $ - i;
943
+ a = $ - r, o = C - i;
923
944
  break;
924
945
  }
925
- Math.abs(r) > Math.abs(i) ? o = a / _ : a = o * _, a = Math.max(50, a), o = Math.max(50, o), s.style.width = `${a}px`, s.style.height = `${o}px`, s.setAttribute("width", String(Math.round(a))), s.setAttribute("height", String(Math.round(o))), C(), w();
946
+ Math.abs(r) > Math.abs(i) ? o = a / N : a = o * N, a = Math.max(50, a), o = Math.max(50, o), s.style.width = `${a}px`, s.style.height = `${o}px`, s.setAttribute("width", String(Math.round(a))), s.setAttribute("height", String(Math.round(o))), q(), E();
926
947
  }), document.addEventListener("mouseup", () => {
927
- A && (A = !1, M = null, document.body.style.userSelect = "", document.body.style.cursor = "");
928
- }), window.addEventListener("scroll", C), window.addEventListener("resize", C);
948
+ D && (D = !1, I = null, document.body.style.userSelect = "", document.body.style.cursor = "");
949
+ }), window.addEventListener("scroll", q), window.addEventListener("resize", q);
929
950
  };
930
- typeof window < "u" && !window.__mediaManagerInitialized && (window.__mediaManagerInitialized = !0, W());
931
- const te = () => ({
951
+ typeof window < "u" && !window.__mediaManagerInitialized && (window.__mediaManagerInitialized = !0, O());
952
+ const ae = () => ({
932
953
  name: "image",
933
954
  initialize: (e) => {
934
955
  const t = e?.editorElement;
935
- W(t);
956
+ O(t);
936
957
  },
937
958
  toolbar: [
938
959
  {
@@ -949,17 +970,17 @@ const te = () => ({
949
970
  commands: {
950
971
  insertImage: (e, t) => {
951
972
  const r = t?.contentElement instanceof HTMLElement ? t.contentElement : void 0;
952
- return P("image", r), !0;
973
+ return F("image", r), !0;
953
974
  },
954
975
  insertVideo: (e, t) => {
955
976
  const r = t?.contentElement instanceof HTMLElement ? t.contentElement : void 0;
956
- return P("video", r), !0;
977
+ return F("video", r), !0;
957
978
  }
958
979
  },
959
980
  keymap: {
960
981
  "Mod-Shift-i": "insertImage"
961
982
  }
962
- }), Q = {
983
+ }), te = {
963
984
  apiEndpoints: {
964
985
  upload: "/media/upload",
965
986
  library: "/media/library",
@@ -980,15 +1001,15 @@ const te = () => ({
980
1001
  // 'X-API-Key': 'YOUR_API_KEY'
981
1002
  }
982
1003
  };
983
- let N = { ...Q };
984
- function re(e) {
985
- N = { ...N, ...e };
1004
+ let P = { ...te };
1005
+ function ie(e) {
1006
+ P = { ...P, ...e };
986
1007
  }
987
- function ae() {
988
- return { ...N };
1008
+ function oe() {
1009
+ return { ...P };
989
1010
  }
990
1011
  export {
991
- te as MediaManagerPlugin,
992
- ae as getMediaManagerConfig,
993
- re as setMediaManagerConfig
1012
+ ae as MediaManagerPlugin,
1013
+ oe as getMediaManagerConfig,
1014
+ ie as setMediaManagerConfig
994
1015
  };