@editora/plugins 1.0.2 → 1.0.5

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 (105) hide show
  1. package/README.md +30 -5
  2. package/dist/a11y-checker.cjs.js +109 -0
  3. package/dist/a11y-checker.esm.js +509 -0
  4. package/dist/anchor.cjs.js +176 -0
  5. package/dist/anchor.esm.js +400 -0
  6. package/dist/background-color.cjs.js +218 -0
  7. package/dist/background-color.esm.js +482 -0
  8. package/dist/blockquote.cjs.js +1 -0
  9. package/dist/blockquote.esm.js +47 -0
  10. package/dist/bold.cjs.js +1 -0
  11. package/dist/bold.esm.js +44 -0
  12. package/dist/capitalization.cjs.js +1 -0
  13. package/dist/capitalization.esm.js +78 -0
  14. package/dist/checklist.cjs.js +1 -0
  15. package/dist/checklist.esm.js +305 -0
  16. package/dist/clear-formatting.cjs.js +1 -0
  17. package/dist/clear-formatting.esm.js +138 -0
  18. package/dist/code-sample.cjs.js +161 -0
  19. package/dist/code-sample.esm.js +381 -0
  20. package/dist/code.cjs.js +606 -0
  21. package/dist/code.esm.js +2164 -0
  22. package/dist/colorSelectionApply-C0iOfMWb.js +1 -0
  23. package/dist/colorSelectionApply-D8r_gV32.mjs +63 -0
  24. package/dist/comments.cjs.js +354 -0
  25. package/dist/comments.esm.js +692 -0
  26. package/dist/direction.cjs.js +1 -0
  27. package/dist/direction.esm.js +129 -0
  28. package/dist/document-manager.cjs.js +1 -0
  29. package/dist/document-manager.esm.js +6 -0
  30. package/dist/{documentManager-CYC9totK.mjs → documentManager-DRUc1-Cs.mjs} +3 -3
  31. package/dist/{documentManager-BGlu3WRB.js → documentManager-_tQQfQi9.js} +3 -3
  32. package/dist/editorContainerHelpers-C7kdWnS0.mjs +26 -0
  33. package/dist/editorContainerHelpers-CFbfiOJI.js +1 -0
  34. package/dist/embed-iframe.cjs.js +361 -0
  35. package/dist/embed-iframe.esm.js +556 -0
  36. package/dist/emojis.cjs.js +284 -0
  37. package/dist/emojis.esm.js +1080 -0
  38. package/dist/font-family.cjs.js +1 -0
  39. package/dist/font-family.esm.js +152 -0
  40. package/dist/font-size.cjs.js +1 -0
  41. package/dist/font-size.esm.js +278 -0
  42. package/dist/footnote.cjs.js +85 -0
  43. package/dist/footnote.esm.js +397 -0
  44. package/dist/fullscreen.cjs.js +1 -0
  45. package/dist/fullscreen.esm.js +73 -0
  46. package/dist/heading.cjs.js +1 -0
  47. package/dist/heading.esm.js +63 -0
  48. package/dist/history.cjs.js +1 -0
  49. package/dist/history.esm.js +246 -0
  50. package/dist/indent.cjs.js +1 -0
  51. package/dist/indent.esm.js +146 -0
  52. package/dist/index-Bskk414V.mjs +145 -0
  53. package/dist/index-D3pJyAsj.js +1 -0
  54. package/dist/index.cjs.js +1 -1
  55. package/dist/{index.es-B-to-4j4.js → index.es-Cz1qItab.js} +1 -1
  56. package/dist/{index.es-BbXJ7tyO.mjs → index.es-DEcRmSTY.mjs} +1 -1
  57. package/dist/index.esm.js +89 -49
  58. package/dist/italic.cjs.js +1 -0
  59. package/dist/italic.esm.js +40 -0
  60. package/dist/line-height.cjs.js +1 -0
  61. package/dist/line-height.esm.js +145 -0
  62. package/dist/link.cjs.js +138 -0
  63. package/dist/link.esm.js +276 -0
  64. package/dist/list.cjs.js +1 -0
  65. package/dist/list.esm.js +102 -0
  66. package/dist/lite.cjs.js +1 -0
  67. package/dist/lite.esm.js +61 -0
  68. package/dist/math.cjs.js +45 -0
  69. package/dist/math.esm.js +249 -0
  70. package/dist/media-manager.cjs.js +619 -0
  71. package/dist/media-manager.esm.js +994 -0
  72. package/dist/merge-tag.cjs.js +93 -0
  73. package/dist/merge-tag.esm.js +412 -0
  74. package/dist/page-break.cjs.js +72 -0
  75. package/dist/page-break.esm.js +295 -0
  76. package/dist/plugins.css +1 -1
  77. package/dist/preview.cjs.js +230 -0
  78. package/dist/preview.esm.js +321 -0
  79. package/dist/print.cjs.js +254 -0
  80. package/dist/print.esm.js +309 -0
  81. package/dist/purify.es-DHhaBdbu.mjs +470 -0
  82. package/dist/purify.es-T2a3nLiC.js +3 -0
  83. package/dist/shared-config.cjs.js +1 -0
  84. package/dist/shared-config.esm.js +30 -0
  85. package/dist/special-characters.cjs.js +257 -0
  86. package/dist/special-characters.esm.js +772 -0
  87. package/dist/spell-check.cjs.js +512 -0
  88. package/dist/spell-check.esm.js +1013 -0
  89. package/dist/strikethrough.cjs.js +1 -0
  90. package/dist/strikethrough.esm.js +71 -0
  91. package/dist/table.cjs.js +35 -0
  92. package/dist/table.esm.js +477 -0
  93. package/dist/template.cjs.js +356 -0
  94. package/dist/template.esm.js +560 -0
  95. package/dist/text-alignment.cjs.js +1 -0
  96. package/dist/text-alignment.esm.js +105 -0
  97. package/dist/text-color.cjs.js +300 -0
  98. package/dist/text-color.esm.js +507 -0
  99. package/dist/underline.cjs.js +1 -0
  100. package/dist/underline.esm.js +34 -0
  101. package/index.d.ts +62 -0
  102. package/package.json +220 -7
  103. package/LICENSE +0 -21
  104. package/dist/index-BbORIHoM.mjs +0 -11763
  105. package/dist/index-C-OCBS_6.js +0 -3753
@@ -0,0 +1,556 @@
1
+ const g = [
2
+ { label: "Inline Value", value: "inline" },
3
+ { label: "Responsive - 21x9", value: "21x9" },
4
+ { label: "Responsive - 16x9", value: "16x9" },
5
+ { label: "Responsive - 4x3", value: "4x3" },
6
+ { label: "Responsive - 1x1", value: "1x1" }
7
+ ], m = '[data-theme="dark"], .dark, .editora-theme-dark', u = /* @__PURE__ */ new WeakMap(), l = (e) => (u.has(e) || u.set(e, {
8
+ dialogElement: null,
9
+ activeTab: "general",
10
+ formData: {
11
+ src: "",
12
+ selectedSize: "inline",
13
+ width: "100%",
14
+ height: "400px",
15
+ constrainProportions: !0,
16
+ name: "",
17
+ title: "",
18
+ longDescription: "",
19
+ descriptionUrl: "",
20
+ showBorder: !0,
21
+ enableScrollbar: !0
22
+ }
23
+ }), u.get(e));
24
+ function v(e) {
25
+ return e?.matches(m) || e?.closest(m) || document.activeElement?.closest(m) ? !0 : document.body.matches(m) || document.documentElement.matches(m);
26
+ }
27
+ const I = () => ({
28
+ name: "embedIframe",
29
+ toolbar: [
30
+ {
31
+ label: "Embed Content",
32
+ command: "openEmbedIframeDialog",
33
+ icon: '<svg width="24" height="24" focusable="false"><path d="M19 6V5H5v14h2A13 13 0 0 1 19 6Zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4Zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6Zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3Zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3ZM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1Zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2Zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2Z" fill-rule="nonzero"></path></svg>',
34
+ shortcut: "Mod-Shift-e",
35
+ type: "button"
36
+ }
37
+ ],
38
+ commands: {
39
+ openEmbedIframeDialog: (e) => (x(e), !0)
40
+ },
41
+ keymap: {
42
+ "Mod-Shift-e": "openEmbedIframeDialog"
43
+ }
44
+ });
45
+ function x(e) {
46
+ if (!e) {
47
+ const o = document.activeElement;
48
+ o && o.closest("[data-editora-editor]") && (e = o.closest("[data-editora-editor]"));
49
+ }
50
+ if (e || (e = document.querySelector("[data-editora-editor]")), !e) {
51
+ console.warn("Editor element not found");
52
+ return;
53
+ }
54
+ const t = l(e);
55
+ t.formData = {
56
+ src: "",
57
+ selectedSize: "inline",
58
+ width: "100%",
59
+ height: "400px",
60
+ constrainProportions: !0,
61
+ name: "",
62
+ title: "",
63
+ longDescription: "",
64
+ descriptionUrl: "",
65
+ showBorder: !0,
66
+ enableScrollbar: !0
67
+ }, t.activeTab = "general";
68
+ const a = document.createElement("div");
69
+ a.className = "rte-dialog-overlay rte-embed-iframe-overlay", v(e) && a.classList.add("rte-theme-dark"), a.onclick = () => f(e);
70
+ const r = document.createElement("div");
71
+ r.className = "rte-dialog-content embed-iframe-dialog", r.onclick = (o) => o.stopPropagation(), r.innerHTML = `
72
+ <div class="rte-dialog-header">
73
+ <h3>Embed Iframe</h3>
74
+ <button class="rte-dialog-close">×</button>
75
+ </div>
76
+ <div class="rte-dialog-body">
77
+ <div class="rte-vertical-tabs">
78
+ <div class="rte-tab-buttons">
79
+ <button class="rte-tab-button active" data-tab="general">General</button>
80
+ <button class="rte-tab-button" data-tab="advanced">Advanced</button>
81
+ </div>
82
+ <div class="rte-tab-content">
83
+ <div class="rte-tab-panel" data-panel="general" style="display: block;">
84
+ <div class="rte-form-group">
85
+ <label class="rte-form-label">Source</label>
86
+ <input type="url" class="rte-form-input" id="iframe-src" placeholder="https://example.com" required />
87
+ </div>
88
+ <div class="rte-form-group">
89
+ <label class="rte-form-label">Size</label>
90
+ <select class="rte-form-select" id="iframe-size">
91
+ ${g.map((o) => `<option value="${o.value}">${o.label}</option>`).join("")}
92
+ </select>
93
+ </div>
94
+ <div class="rte-form-row" id="dimensions-row">
95
+ <div class="rte-form-group">
96
+ <label class="rte-form-label">Width</label>
97
+ <input type="text" class="rte-form-input" id="iframe-width" placeholder="100%" value="100%" />
98
+ </div>
99
+ <div class="rte-form-group">
100
+ <label class="rte-form-label">Height</label>
101
+ <input type="text" class="rte-form-input" id="iframe-height" placeholder="400px" value="400px" />
102
+ </div>
103
+ <div class="rte-form-group constrain-group">
104
+ <button type="button" class="rte-constrain-btn locked" id="constrain-btn" title="Unlock proportions">🔒</button>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ <div class="rte-tab-panel" data-panel="advanced" style="display: none;">
109
+ <div class="rte-form-group">
110
+ <label class="rte-form-label">Name</label>
111
+ <input type="text" class="rte-form-input" id="iframe-name" placeholder="Iframe name" />
112
+ </div>
113
+ <div class="rte-form-group">
114
+ <label class="rte-form-label">Title</label>
115
+ <input type="text" class="rte-form-input" id="iframe-title" placeholder="Iframe title" />
116
+ </div>
117
+ <div class="rte-form-group">
118
+ <label class="rte-form-label">Long Description</label>
119
+ <textarea class="rte-form-textarea" id="iframe-longdesc" placeholder="Detailed description of the iframe content" rows="3"></textarea>
120
+ </div>
121
+ <div class="rte-form-group">
122
+ <label class="rte-form-label">Description URL</label>
123
+ <input type="url" class="rte-form-input" id="iframe-desc-url" placeholder="https://example.com/description" />
124
+ </div>
125
+ <div class="rte-form-group">
126
+ <label class="rte-checkbox-label">
127
+ <input type="checkbox" id="iframe-border" checked />
128
+ Show iframe border
129
+ </label>
130
+ </div>
131
+ <div class="rte-form-group">
132
+ <label class="rte-checkbox-label">
133
+ <input type="checkbox" id="iframe-scrollbar" checked />
134
+ Enable scrollbar
135
+ </label>
136
+ </div>
137
+ </div>
138
+ </div>
139
+ </div>
140
+ </div>
141
+ <div class="rte-dialog-footer">
142
+ <button type="button" class="rte-btn rte-btn-secondary" id="cancel-btn">Cancel</button>
143
+ <button type="submit" class="rte-btn rte-btn-primary" id="save-btn">Save</button>
144
+ </div>
145
+ `, a.appendChild(r), document.body.appendChild(a), t.dialogElement = a, y(r, e), C(), setTimeout(() => {
146
+ r.querySelector("#iframe-src")?.focus();
147
+ }, 100);
148
+ }
149
+ function y(e, t) {
150
+ l(t), e.querySelector(".rte-dialog-close")?.addEventListener("click", () => f(t)), e.querySelectorAll(".rte-tab-button").forEach((i) => {
151
+ i.addEventListener("click", (n) => {
152
+ const c = n.target.getAttribute("data-tab");
153
+ c && k(e, c, t);
154
+ });
155
+ }), e.querySelector("#iframe-size")?.addEventListener("change", (i) => w(e, i.target.value, t));
156
+ const r = e.querySelector("#iframe-width"), o = e.querySelector("#iframe-height");
157
+ r?.addEventListener("input", (i) => S(e, i.target.value, t)), o?.addEventListener("input", (i) => D(e, i.target.value, t)), e.querySelector("#constrain-btn")?.addEventListener("click", () => q(e, t)), e.querySelector("#cancel-btn")?.addEventListener("click", () => f(t)), e.querySelector("#save-btn")?.addEventListener("click", () => E(e, t));
158
+ }
159
+ function k(e, t, a) {
160
+ const r = l(a);
161
+ r.activeTab = t, e.querySelectorAll(".rte-tab-button").forEach((o) => {
162
+ o.classList.toggle("active", o.getAttribute("data-tab") === t);
163
+ }), e.querySelectorAll(".rte-tab-panel").forEach((o) => {
164
+ o.style.display = o.getAttribute("data-panel") === t ? "block" : "none";
165
+ });
166
+ }
167
+ function w(e, t, a) {
168
+ const r = l(a);
169
+ r.formData.selectedSize = t;
170
+ const o = e.querySelector("#dimensions-row"), i = e.querySelector("#iframe-width"), n = e.querySelector("#iframe-height");
171
+ t === "inline" ? (o.style.display = "flex", i.value = "100%", n.value = "400px", r.formData.width = "100%", r.formData.height = "400px") : (o.style.display = "none", r.formData.width = "100%", r.formData.height = "auto");
172
+ }
173
+ function S(e, t, a) {
174
+ const r = l(a);
175
+ if (r.formData.width = t, r.formData.constrainProportions && r.formData.selectedSize === "inline") {
176
+ const o = parseFloat(t);
177
+ if (!isNaN(o)) {
178
+ const i = o * 9 / 16;
179
+ r.formData.height = `${i}px`;
180
+ const n = e.querySelector("#iframe-height");
181
+ n && (n.value = r.formData.height);
182
+ }
183
+ }
184
+ }
185
+ function D(e, t, a) {
186
+ const r = l(a);
187
+ if (r.formData.height = t, r.formData.constrainProportions && r.formData.selectedSize === "inline") {
188
+ const o = parseFloat(t);
189
+ if (!isNaN(o)) {
190
+ const i = o * 16 / 9;
191
+ r.formData.width = `${i}px`;
192
+ const n = e.querySelector("#iframe-width");
193
+ n && (n.value = r.formData.width);
194
+ }
195
+ }
196
+ }
197
+ function q(e, t) {
198
+ const a = l(t);
199
+ a.formData.constrainProportions = !a.formData.constrainProportions;
200
+ const r = e.querySelector("#constrain-btn");
201
+ r && (r.textContent = a.formData.constrainProportions ? "🔒" : "🔓", r.className = `rte-constrain-btn ${a.formData.constrainProportions ? "locked" : "unlocked"}`, r.title = a.formData.constrainProportions ? "Unlock proportions" : "Lock proportions");
202
+ }
203
+ function E(e, t) {
204
+ const a = l(t), r = e.querySelector("#iframe-src")?.value.trim();
205
+ if (!r) {
206
+ alert("Please enter a source URL");
207
+ return;
208
+ }
209
+ if (!r.startsWith("https://") && !r.startsWith("http://")) {
210
+ alert("Please enter a valid URL starting with https:// or http://");
211
+ return;
212
+ }
213
+ const o = e.querySelector("#iframe-name")?.value.trim(), i = e.querySelector("#iframe-title")?.value.trim(), n = e.querySelector("#iframe-longdesc")?.value.trim();
214
+ e.querySelector("#iframe-desc-url")?.value.trim();
215
+ const c = e.querySelector("#iframe-border")?.checked ?? !0, p = e.querySelector("#iframe-scrollbar")?.checked ?? !0;
216
+ let s = a.formData.width, d = a.formData.height;
217
+ a.formData.selectedSize !== "inline" && (s = "100%", d = "auto"), z(t, {
218
+ src: r,
219
+ width: s,
220
+ height: d,
221
+ aspectRatio: a.formData.selectedSize,
222
+ name: o || void 0,
223
+ title: i || void 0,
224
+ longDescription: n || void 0,
225
+ showBorder: c,
226
+ enableScrollbar: p
227
+ }), f(t);
228
+ }
229
+ function z(e, t) {
230
+ const a = e.querySelector('[contenteditable="true"]');
231
+ a && (a.focus(), setTimeout(() => {
232
+ const r = [
233
+ `src="${t.src}"`,
234
+ `width="${t.width}"`,
235
+ `height="${t.height}"`,
236
+ "allowfullscreen",
237
+ `frameborder="${t.showBorder ? "1" : "0"}"`,
238
+ `scrolling="${t.enableScrollbar ? "auto" : "no"}"`
239
+ ];
240
+ t.name && r.push(`name="${t.name}"`), t.title && r.push(`title="${t.title}"`), t.longDescription && r.push(`longdesc="${t.longDescription}"`);
241
+ const o = [];
242
+ t.aspectRatio !== "inline" && o.push(`rte-iframe-${t.aspectRatio}`);
243
+ const i = o.length > 0 ? `class="${o.join(" ")}"` : "", n = `data-aspect-ratio="${t.aspectRatio}"`, c = `<iframe ${r.join(" ")} ${i} ${n}></iframe>`;
244
+ if (!document.execCommand("insertHTML", !1, c)) {
245
+ const s = window.getSelection();
246
+ if (s && s.rangeCount > 0) {
247
+ const d = s.getRangeAt(0);
248
+ d.deleteContents();
249
+ const b = document.createElement("div");
250
+ b.innerHTML = c;
251
+ const h = document.createDocumentFragment();
252
+ for (; b.firstChild; )
253
+ h.appendChild(b.firstChild);
254
+ d.insertNode(h);
255
+ }
256
+ }
257
+ }, 10));
258
+ }
259
+ function f(e) {
260
+ const t = l(e);
261
+ t.dialogElement && (document.body.removeChild(t.dialogElement), t.dialogElement = null);
262
+ }
263
+ function C() {
264
+ if (document.getElementById("embed-iframe-dialog-styles")) return;
265
+ const e = document.createElement("style");
266
+ e.id = "embed-iframe-dialog-styles", e.textContent = `
267
+ /* Embed Iframe Dialog Styles */
268
+ .embed-iframe-dialog {
269
+ max-width: 600px;
270
+ width: 100%;
271
+ }
272
+
273
+ .rte-vertical-tabs {
274
+ display: flex;
275
+ gap: 20px;
276
+ min-height: 400px;
277
+ }
278
+
279
+ .rte-tab-buttons {
280
+ display: flex;
281
+ flex-direction: column;
282
+ width: 120px;
283
+ border-right: 1px solid #e1e5e9;
284
+ }
285
+
286
+ .rte-tab-button {
287
+ padding: 12px 16px;
288
+ border: none;
289
+ background: none;
290
+ text-align: left;
291
+ cursor: pointer;
292
+ font-size: 14px;
293
+ font-weight: 500;
294
+ color: #666;
295
+ border-right: 3px solid transparent;
296
+ transition: all 0.2s ease;
297
+ }
298
+
299
+ .rte-tab-button:hover {
300
+ background-color: #f8f9fa;
301
+ color: #333;
302
+ }
303
+
304
+ .rte-tab-button.active {
305
+ background-color: #e3f2fd;
306
+ color: #1976d2;
307
+ border-right-color: #1976d2;
308
+ font-weight: 600;
309
+ }
310
+
311
+ .rte-tab-content {
312
+ flex: 1;
313
+ padding: 0 0 0 20px;
314
+ }
315
+
316
+ .rte-tab-panel {
317
+ padding: 0;
318
+ }
319
+
320
+ .rte-form-group {
321
+ margin-bottom: 16px;
322
+ }
323
+
324
+ .rte-form-label {
325
+ display: block;
326
+ margin-bottom: 6px;
327
+ font-size: 14px;
328
+ font-weight: 500;
329
+ color: #333;
330
+ }
331
+
332
+ .rte-form-textarea,
333
+ .rte-form-input,
334
+ .rte-form-select {
335
+ width: 100%;
336
+ padding: 8px 12px;
337
+ border: 1px solid #ccc;
338
+ border-radius: 4px;
339
+ font-size: 14px;
340
+ transition: border-color 0.2s ease;
341
+ box-sizing: border-box;
342
+ }
343
+
344
+ .rte-form-textarea:focus,
345
+ .rte-form-input:focus,
346
+ .rte-form-select:focus {
347
+ outline: none;
348
+ border-color: #0066cc;
349
+ box-shadow: 0 0 0 2px rgba(0, 102, 204, 0.2);
350
+ }
351
+
352
+ .rte-form-textarea {
353
+ resize: vertical;
354
+ min-height: 80px;
355
+ font-family: inherit;
356
+ }
357
+
358
+ .rte-form-row {
359
+ display: flex;
360
+ gap: 12px;
361
+ align-items: flex-end;
362
+ }
363
+
364
+ .rte-form-row .rte-form-group {
365
+ flex: 1;
366
+ }
367
+
368
+ .rte-form-row .constrain-group {
369
+ flex: 0 0 auto;
370
+ margin-bottom: 0;
371
+ }
372
+
373
+ .rte-constrain-btn {
374
+ padding: 8px 12px;
375
+ border: 1px solid #ddd;
376
+ background: white;
377
+ border-radius: 4px;
378
+ cursor: pointer;
379
+ font-size: 18px;
380
+ transition: all 0.2s ease;
381
+ height: 38px;
382
+ width: 48px;
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: center;
386
+ }
387
+
388
+ .rte-constrain-btn:hover {
389
+ background-color: #f5f5f5;
390
+ border-color: #1976d2;
391
+ }
392
+
393
+ .rte-constrain-btn.locked {
394
+ background-color: #e3f2fd;
395
+ border-color: #1976d2;
396
+ }
397
+
398
+ .rte-checkbox-label {
399
+ display: flex;
400
+ align-items: center;
401
+ gap: 8px;
402
+ font-size: 14px;
403
+ color: #333;
404
+ cursor: pointer;
405
+ padding: 4px 0;
406
+ }
407
+
408
+ .rte-checkbox-label input[type="checkbox"] {
409
+ width: 18px;
410
+ height: 18px;
411
+ cursor: pointer;
412
+ accent-color: #0066cc;
413
+ }
414
+
415
+ .rte-checkbox-label:hover {
416
+ color: #000;
417
+ }
418
+
419
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-dialog-content {
420
+ background: #1f2937;
421
+ border: 1px solid #4b5563;
422
+ color: #e2e8f0;
423
+ box-shadow: 0 18px 45px rgba(0, 0, 0, 0.6);
424
+ }
425
+
426
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-dialog-header,
427
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-dialog-footer {
428
+ background: #222d3a;
429
+ border-color: #3b4657;
430
+ }
431
+
432
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-dialog-header h3,
433
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-label,
434
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-checkbox-label {
435
+ color: #e2e8f0;
436
+ }
437
+
438
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-tab-buttons {
439
+ border-right-color: #3b4657;
440
+ }
441
+
442
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-tab-button {
443
+ color: #a8b5c8;
444
+ }
445
+
446
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-tab-button:hover {
447
+ background: #334155;
448
+ color: #f8fafc;
449
+ }
450
+
451
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-tab-button.active {
452
+ background: rgba(88, 166, 255, 0.18);
453
+ color: #8cc6ff;
454
+ border-right-color: #58a6ff;
455
+ }
456
+
457
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-input,
458
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-select,
459
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-textarea {
460
+ background: #111827;
461
+ border-color: #4b5563;
462
+ color: #e2e8f0;
463
+ }
464
+
465
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-input::placeholder,
466
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-textarea::placeholder {
467
+ color: #94a3b8;
468
+ }
469
+
470
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-input:focus,
471
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-select:focus,
472
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-form-textarea:focus {
473
+ border-color: #58a6ff;
474
+ box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.28);
475
+ }
476
+
477
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-constrain-btn {
478
+ background: #111827;
479
+ border-color: #4b5563;
480
+ color: #e2e8f0;
481
+ }
482
+
483
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-constrain-btn:hover {
484
+ background: #334155;
485
+ border-color: #58a6ff;
486
+ }
487
+
488
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-constrain-btn.locked {
489
+ background: rgba(88, 166, 255, 0.22);
490
+ border-color: #58a6ff;
491
+ color: #d9ecff;
492
+ }
493
+
494
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-btn-secondary {
495
+ background: #334155;
496
+ border-color: #4b5563;
497
+ color: #e2e8f0;
498
+ }
499
+
500
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-btn-secondary:hover {
501
+ background: #475569;
502
+ border-color: #64748b;
503
+ }
504
+
505
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-btn-primary {
506
+ background: #3b82f6;
507
+ color: #fff;
508
+ }
509
+
510
+ .rte-embed-iframe-overlay.rte-theme-dark .rte-btn-primary:hover {
511
+ background: #2563eb;
512
+ }
513
+
514
+ /* Responsive iframe classes */
515
+ .rte-iframe-21x9,
516
+ .rte-iframe-16x9,
517
+ .rte-iframe-4x3,
518
+ .rte-iframe-1x1 {
519
+ position: relative;
520
+ width: 100%;
521
+ padding-bottom: 56.25%;
522
+ height: 0;
523
+ overflow: hidden;
524
+ }
525
+
526
+ .rte-iframe-21x9 {
527
+ padding-bottom: 42.857%;
528
+ }
529
+
530
+ .rte-iframe-16x9 {
531
+ padding-bottom: 56.25%;
532
+ }
533
+
534
+ .rte-iframe-4x3 {
535
+ padding-bottom: 75%;
536
+ }
537
+
538
+ .rte-iframe-1x1 {
539
+ padding-bottom: 100%;
540
+ }
541
+
542
+ .rte-iframe-21x9 iframe,
543
+ .rte-iframe-16x9 iframe,
544
+ .rte-iframe-4x3 iframe,
545
+ .rte-iframe-1x1 iframe {
546
+ position: absolute;
547
+ top: 0;
548
+ left: 0;
549
+ width: 100%;
550
+ height: 100%;
551
+ }
552
+ `, document.head.appendChild(e);
553
+ }
554
+ export {
555
+ I as EmbedIframePlugin
556
+ };