@editora/plugins 1.0.2 → 1.0.4

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 +598 -0
  21. package/dist/code.esm.js +2034 -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 +218 -6
  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,218 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const A=require("./colorSelectionApply-C0iOfMWb.js");let l=null,k=null,L=null,s="#ffff00";const h='[data-theme="dark"], .dark, .editora-theme-dark',M=["#000000","#ffffff","#808080","#ff0000","#00ff00","#0000ff","#ffff00","#ff00ff","#00ffff","#ffa500","#800080","#ffc0cb"];function P(){const e=window.getSelection();if(e&&e.rangeCount>0){const r=e.getRangeAt(0).startContainer,a=r.nodeType===Node.ELEMENT_NODE?r:r.parentElement;if(a){const n=a.closest('[data-editora-editor="true"], .rte-editor, .editora-editor');if(n)return n}}const t=document.activeElement;return t?t.closest('[data-editora-editor="true"], .rte-editor, .editora-editor'):null}function R(e){const t=P();if(t){const c=t.querySelector(`[data-command="${e}"]`);if(c)return c}return document.querySelector(`[data-command="${e}"]`)}function T(e){if(e?.closest(h))return!0;const t=window.getSelection();if(t&&t.rangeCount>0){const r=t.getRangeAt(0).startContainer;if((r.nodeType===Node.ELEMENT_NODE?r:r.parentElement)?.closest(h))return!0}return document.activeElement?.closest(h)?!0:document.body.matches(h)||document.documentElement.matches(h)}function q(){if(document.getElementById("rte-bg-color-picker-styles"))return;const e=document.createElement("style");e.id="rte-bg-color-picker-styles",e.textContent=`
2
+ .rte-bg-color-picker {
3
+ position: absolute;
4
+ background: white;
5
+ border-radius: 8px;
6
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
7
+ width: 220px;
8
+ z-index: 10000;
9
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
10
+ overflow: hidden;
11
+ }
12
+
13
+ .rte-bg-color-picker-header {
14
+ padding: 12px 16px;
15
+ border-bottom: 1px solid #eee;
16
+ display: flex;
17
+ justify-content: space-between;
18
+ align-items: center;
19
+ }
20
+
21
+ .rte-bg-color-picker-title {
22
+ font-size: 14px;
23
+ font-weight: 600;
24
+ color: #333;
25
+ }
26
+
27
+ .rte-bg-color-picker-close {
28
+ background: none;
29
+ border: none;
30
+ font-size: 24px;
31
+ cursor: pointer;
32
+ color: #999;
33
+ padding: 0;
34
+ width: 24px;
35
+ height: 24px;
36
+ display: flex;
37
+ align-items: center;
38
+ justify-content: center;
39
+ line-height: 1;
40
+ }
41
+
42
+ .rte-bg-color-picker-close:hover {
43
+ color: #333;
44
+ }
45
+
46
+ .rte-bg-color-picker-body {
47
+ padding: 8px;
48
+ }
49
+
50
+ .rte-bg-color-section {
51
+ margin-bottom: 16px;
52
+ }
53
+
54
+ .rte-bg-color-section:last-child {
55
+ margin-bottom: 0;
56
+ }
57
+
58
+ .rte-bg-color-section-label {
59
+ display: block;
60
+ font-size: 12px;
61
+ font-weight: 600;
62
+ color: #555;
63
+ margin-bottom: 8px;
64
+ text-transform: uppercase;
65
+ letter-spacing: 0.5px;
66
+ }
67
+
68
+ .rte-bg-color-preview {
69
+ display: flex;
70
+ align-items: center;
71
+ gap: 12px;
72
+ margin-bottom: 8px;
73
+ padding: 6px;
74
+ background-color: #f8f9fa;
75
+ border-radius: 6px;
76
+ border: 1px solid #e0e0e0;
77
+ }
78
+
79
+ .rte-bg-color-grid {
80
+ display: grid;
81
+ grid-template-columns: repeat(7, 1fr);
82
+ gap: 6px;
83
+ max-width: 180px;
84
+ }
85
+
86
+ .rte-bg-color-swatch {
87
+ width: 100%;
88
+ aspect-ratio: 1;
89
+ border: 1px solid #e0e0e0;
90
+ border-radius: 3px;
91
+ cursor: pointer;
92
+ transition: all 0.15s;
93
+ padding: 0;
94
+ background: none;
95
+ min-height: 20px;
96
+ }
97
+
98
+ .rte-bg-color-swatch:hover {
99
+ transform: scale(1.05);
100
+ border-color: #ccc;
101
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
102
+ }
103
+
104
+ .rte-bg-color-swatch.selected {
105
+ border-color: #1976d2;
106
+ box-shadow: 0 0 0 1px rgba(25, 118, 210, 0.3);
107
+ }
108
+
109
+ .rte-bg-color-preview-swatch {
110
+ width: 24px;
111
+ height: 24px;
112
+ border-radius: 4px;
113
+ border: 1px solid #ddd;
114
+ flex-shrink: 0;
115
+ }
116
+
117
+ .rte-bg-color-preview-hex {
118
+ font-size: 13px;
119
+ font-weight: 500;
120
+ color: #666;
121
+ font-family: monospace;
122
+ }
123
+
124
+ .rte-bg-color-input {
125
+ width: 50px;
126
+ height: 26px;
127
+ border: 1px solid #ddd;
128
+ border-radius: 4px;
129
+ cursor: pointer;
130
+ padding: 2px;
131
+ }
132
+
133
+ .rte-bg-color-text-input {
134
+ flex: 1;
135
+ height: 26px;
136
+ width: 50px;
137
+ border: 1px solid #ddd;
138
+ border-radius: 4px;
139
+ padding: 0 12px;
140
+ font-size: 13px;
141
+ font-family: monospace;
142
+ }
143
+
144
+ .rte-bg-color-text-input:focus {
145
+ outline: none;
146
+ border-color: #1976d2;
147
+ }
148
+
149
+ .rte-bg-color-custom {
150
+ display: flex;
151
+ gap: 8px;
152
+ }
153
+
154
+ .rte-bg-color-picker.rte-theme-dark {
155
+ background: #1f2937;
156
+ border: 1px solid #4b5563;
157
+ box-shadow: 0 14px 30px rgba(0, 0, 0, 0.5);
158
+ }
159
+
160
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-picker-header {
161
+ border-bottom-color: #3b4657;
162
+ }
163
+
164
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-picker-title {
165
+ color: #e2e8f0;
166
+ }
167
+
168
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-picker-close {
169
+ color: #94a3b8;
170
+ }
171
+
172
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-picker-close:hover {
173
+ color: #f8fafc;
174
+ }
175
+
176
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-section-label {
177
+ color: #9fb0c6;
178
+ }
179
+
180
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-preview {
181
+ background-color: #111827;
182
+ border-color: #4b5563;
183
+ }
184
+
185
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-preview-hex {
186
+ color: #cbd5e1;
187
+ }
188
+
189
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-preview-swatch,
190
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-swatch {
191
+ border-color: #4b5563;
192
+ }
193
+
194
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-swatch:hover {
195
+ border-color: #7a8ba5;
196
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
197
+ }
198
+
199
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-swatch.selected {
200
+ border-color: #58a6ff;
201
+ box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.4);
202
+ }
203
+
204
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-input,
205
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-text-input {
206
+ background: #111827;
207
+ border-color: #4b5563;
208
+ color: #e2e8f0;
209
+ }
210
+
211
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-text-input::placeholder {
212
+ color: #94a3b8;
213
+ }
214
+
215
+ .rte-bg-color-picker.rte-theme-dark .rte-bg-color-text-input:focus {
216
+ border-color: #58a6ff;
217
+ }
218
+ `,document.head.appendChild(e)}function H(){const e=document.createElement("div");e.className="rte-bg-color-picker",T(k)&&e.classList.add("rte-theme-dark"),e.addEventListener("click",m=>m.stopPropagation());const t=document.createElement("div");t.className="rte-bg-color-picker-header";const c=document.createElement("span");c.className="rte-bg-color-picker-title",c.textContent="Background Color";const r=document.createElement("button");r.type="button",r.className="rte-bg-color-picker-close",r.id="rte-bg-color-close",r.setAttribute("aria-label","Close"),r.textContent="×",t.appendChild(c),t.appendChild(r);const a=document.createElement("div");a.className="rte-bg-color-picker-body";const n=document.createElement("div");n.className="rte-bg-color-section";const o=document.createElement("div");o.className="rte-bg-color-section-label",o.textContent="Current Color";const i=document.createElement("div");i.className="rte-bg-color-preview";const d=document.createElement("div");d.className="rte-bg-color-preview-swatch",d.id="rte-bg-color-preview-swatch";const u=document.createElement("span");u.className="rte-bg-color-preview-hex",u.id="rte-bg-color-preview-hex",i.appendChild(d),i.appendChild(u),n.appendChild(o),n.appendChild(i);const x=document.createElement("div");x.className="rte-bg-color-section";const E=document.createElement("div");E.className="rte-bg-color-section-label",E.textContent="Colors";const C=document.createElement("div");C.className="rte-bg-color-grid",C.id="rte-bg-color-grid",M.forEach(m=>{const g=document.createElement("button");g.type="button",g.className="rte-bg-color-swatch",g.style.backgroundColor=m,g.dataset.color=m,g.title=m,C.appendChild(g)}),x.appendChild(E),x.appendChild(C);const w=document.createElement("div");w.className="rte-bg-color-section";const S=document.createElement("div");S.className="rte-bg-color-section-label",S.textContent="Custom";const v=document.createElement("div");v.className="rte-bg-color-custom";const f=document.createElement("input");f.type="color",f.className="rte-bg-color-input",f.id="rte-bg-color-input",f.value=s;const p=document.createElement("input");return p.type="text",p.className="rte-bg-color-text-input",p.id="rte-bg-color-text-input",p.placeholder="#FFFF00",p.value=s.toUpperCase(),p.maxLength=7,v.appendChild(f),v.appendChild(p),w.appendChild(S),w.appendChild(v),a.appendChild(n),a.appendChild(x),a.appendChild(w),e.appendChild(t),e.appendChild(a),e}function U(){if(!l)return;l.querySelector("#rte-bg-color-close")?.addEventListener("click",()=>b());const t=l.querySelector("#rte-bg-color-grid");t&&t.addEventListener("click",n=>{const o=n.target;if(o.classList.contains("rte-bg-color-swatch")){const i=o.dataset.color;i&&(s=i,y(i),b())}});const c=l.querySelector("#rte-bg-color-input");c&&(c.addEventListener("change",n=>{const o=n.target.value.toUpperCase();s=o,y(o),b()}),c.addEventListener("input",n=>{s=n.target.value.toUpperCase(),N(),B()}));const r=l.querySelector("#rte-bg-color-text-input");r&&(r.addEventListener("change",n=>{let o=n.target.value.trim();o&&!o.startsWith("#")&&(o="#"+o),/^#[0-9A-F]{6}$/i.test(o)&&(s=o.toUpperCase(),y(s),b())}),r.addEventListener("input",n=>{let o=n.target.value.trim();o&&!o.startsWith("#")&&(o="#"+o,r.value=o),/^#[0-9A-F]{6}$/i.test(o)&&(s=o.toUpperCase(),N(),B())}));const a=n=>{if(l&&k){const o=n.target;!l.contains(o)&&!k.contains(o)&&b()}};setTimeout(()=>{document.addEventListener("click",a)},100),l._clickOutsideHandler=a}function N(){if(!l)return;const e=l.querySelector("#rte-bg-color-preview-swatch"),t=l.querySelector("#rte-bg-color-preview-hex"),c=l.querySelector("#rte-bg-color-input"),r=l.querySelector("#rte-bg-color-text-input");e&&(e.style.backgroundColor=s),t&&(t.textContent=s.toUpperCase()),c&&(c.value=s),r&&(r.value=s.toUpperCase())}function B(){if(!l)return;l.querySelectorAll(".rte-bg-color-swatch").forEach(t=>{t.dataset.color?.toUpperCase()===s.toUpperCase()?t.classList.add("selected"):t.classList.remove("selected")})}function I(){try{const e=window.getSelection();if(!e||e.rangeCount===0)return"#ffff00";const c=e.getRangeAt(0).commonAncestorContainer,r=c.nodeType===1?c:c.parentElement;if(r){const a=r.closest('[style*="background-color"]');if(a){const n=a.style.backgroundColor;if(n)return O(n)}}return"#ffff00"}catch{return"#ffff00"}}function O(e){if(e.startsWith("#"))return e.toUpperCase();const t=e.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);if(t){const c=parseInt(t[1]),r=parseInt(t[2]),a=parseInt(t[3]);return"#"+[c,r,a].map(n=>{const o=n.toString(16);return o.length===1?"0"+o:o}).join("").toUpperCase()}return"#ffff00"}function y(e){const t=A.applyColorToSelection({color:e,className:"rte-bg-color",styleProperty:"backgroundColor",commands:["hiliteColor","backColor"],savedRange:L,getActiveEditorRoot:P,warnMessage:"[BackgroundColor] Could not apply highlight for current selection"});return t&&console.log("[BackgroundColor] Applied color:",e),t}function b(){if(l){const e=l._clickOutsideHandler;e&&document.removeEventListener("click",e),l.remove(),l=null}k=null,L=null}function z(e,t){const c=e.getBoundingClientRect(),r=t.getBoundingClientRect(),a=r.width||220,n=r.height||320,o=8;let i=c.left;i+a>window.innerWidth-o&&(i=window.innerWidth-a-o),i=Math.max(o,i);let d=c.bottom+o;if(d+n>window.innerHeight-o){const u=c.top-n-o;u>=o?d=u:d=Math.max(o,window.innerHeight-n-o)}t.style.top=`${Math.round(d+window.scrollY)}px`,t.style.left=`${Math.round(i+window.scrollX)}px`}function _(){if(q(),l)return b(),!0;const e=R("openBackgroundColorPicker");if(!e)return!1;const t=window.getSelection();return!t||t.isCollapsed?(alert("Please select text to apply background color"),!1):(t.rangeCount>0&&(L=t.getRangeAt(0).cloneRange()),s=I(),l=H(),document.body.appendChild(l),k=e,z(e,l),N(),B(),U(),!0)}const D=()=>({name:"backgroundColor",marks:{backgroundColor:{attrs:{color:{default:"#ffffff"}},parseDOM:[{tag:'span[style*="background-color"]',getAttrs:e=>{const r=(e.getAttribute("style")||"").match(/background-color:\s*([^;]+)/);return r?{color:r[1]}:null}},{tag:"mark",getAttrs:e=>({color:e.style.backgroundColor||"#ffff00"})}],toDOM:e=>["span",{style:`background-color: ${e.attrs?.color||"#ffffff"}`,class:"rte-bg-color"},0]}},toolbar:[{label:"Background Color",command:"openBackgroundColorPicker",icon:'<svg width="24" height="24" focusable="false"><g fill-rule="evenodd"><path class="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z" fill="#000000"></path><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"></path></g></svg>',shortcut:"Mod-Shift-h"}],commands:{openBackgroundColorPicker:()=>_(),setBackgroundColor:e=>e?y(e):!1},keymap:{"Mod-Shift-h":"openBackgroundColorPicker"}});exports.BackgroundColorPlugin=D;