@editora/plugins 1.0.1 → 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 +173 -110
  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-D86di_ZO.mjs → documentManager-DRUc1-Cs.mjs} +3 -3
  31. package/dist/{documentManager-Cw420fPO.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-B4xMKvwd.js → index.es-Cz1qItab.js} +1 -1
  56. package/dist/{index.es-lzohzZmW.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 +217 -5
  103. package/LICENSE +0 -21
  104. package/dist/index-CnEGPLxN.js +0 -3752
  105. package/dist/index-xwiBh2x6.mjs +0 -11739
@@ -0,0 +1,300 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("./colorSelectionApply-C0iOfMWb.js");let o=null,p=null,f=null,i="#000000";const s='[data-theme="dark"], .dark, .editora-theme-dark',k=["#000000","#ffffff","#808080","#ff0000","#00ff00","#0000ff","#ffff00","#ff00ff","#00ffff","#ffa500","#800080","#ffc0cb"];function m(){const e=window.getSelection();if(e&&e.rangeCount>0){const l=e.getRangeAt(0).startContainer,c=l.nodeType===Node.ELEMENT_NODE?l:l.parentElement;if(c){const n=c.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 v(e){const t=m();if(t){const r=t.querySelector(`[data-command="${e}"]`);if(r)return r}return document.querySelector(`[data-command="${e}"]`)}function y(e){if(e?.closest(s))return!0;const t=window.getSelection();if(t&&t.rangeCount>0){const l=t.getRangeAt(0).startContainer;if((l.nodeType===Node.ELEMENT_NODE?l:l.parentElement)?.closest(s))return!0}return document.activeElement?.closest(s)?!0:document.body.matches(s)||document.documentElement.matches(s)}function d(e){return h.applyColorToSelection({color:e,className:"rte-text-color",styleProperty:"color",commands:["foreColor"],savedRange:f,getActiveEditorRoot:m,warnMessage:"[TextColor] Could not apply color for current selection"})}function w(){const e=window.getSelection();if(!e||e.rangeCount===0)return"#000000";let r=e.getRangeAt(0).startContainer;for(;r&&r!==document.body;){if(r.nodeType===Node.ELEMENT_NODE){const l=r,c=l.style.color||window.getComputedStyle(l).color;if(c&&c!=="rgb(0, 0, 0)")return C(c)}r=r.parentNode}return"#000000"}function C(e){if(e.startsWith("#"))return e;const t=e.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(!t)return"#000000";const r=parseInt(t[1]),l=parseInt(t[2]),c=parseInt(t[3]);return"#"+[r,l,c].map(n=>{const u=n.toString(16);return u.length===1?"0"+u:u}).join("")}function E(e){const t=window.getSelection();t&&t.rangeCount>0&&(f=t.getRangeAt(0).cloneRange()),i=w(),o=document.createElement("div"),o.className="rte-inline-color-picker",y(e)&&o.classList.add("rte-theme-dark"),o.addEventListener("click",l=>l.stopPropagation()),o.innerHTML=`
2
+ <div class="rte-color-picker-header">
3
+ <span class="rte-color-picker-title">Text Color</span>
4
+ <button class="rte-color-picker-close" aria-label="Close">×</button>
5
+ </div>
6
+
7
+ <div class="rte-color-picker-body">
8
+ <!-- Current Color Preview -->
9
+ <div class="rte-color-preview-section">
10
+ <div class="rte-color-preview-box" style="background-color: ${i}; ${i==="#ffffff"?"border: 1px solid #ccc;":""}"></div>
11
+ <span class="rte-color-preview-label">${i.toUpperCase()}</span>
12
+ </div>
13
+
14
+ <!-- Preset Colors -->
15
+ <div class="rte-color-section">
16
+ <label class="rte-color-section-label">Colors</label>
17
+ <div class="rte-color-palette">
18
+ ${k.map(l=>`
19
+ <button
20
+ class="rte-color-swatch ${i===l?"selected":""}"
21
+ style="background-color: ${l}; ${l==="#ffffff"?"border: 1px solid #ccc;":""}"
22
+ data-color="${l}"
23
+ title="${l.toUpperCase()}"
24
+ aria-label="${l.toUpperCase()}"
25
+ ></button>
26
+ `).join("")}
27
+ </div>
28
+ </div>
29
+
30
+ <!-- Custom Color -->
31
+ <div class="rte-color-section">
32
+ <label class="rte-color-section-label">Custom</label>
33
+ <div class="rte-custom-color-inputs">
34
+ <input
35
+ type="color"
36
+ value="${i}"
37
+ class="rte-color-input-native"
38
+ aria-label="Color picker"
39
+ />
40
+ <input
41
+ type="text"
42
+ value="${i}"
43
+ placeholder="#000000"
44
+ pattern="^#[0-9A-Fa-f]{6}$"
45
+ class="rte-color-input-text"
46
+ aria-label="Hex color input"
47
+ />
48
+ </div>
49
+ </div>
50
+ </div>
51
+ `;const r=e.getBoundingClientRect();o.style.position="absolute",o.style.top=`${r.bottom+window.scrollY+4}px`,o.style.left=`${r.left+window.scrollX}px`,o.style.zIndex="10000",document.body.appendChild(o),p=e,T()}function T(){if(!o)return;o.querySelector(".rte-color-picker-close")?.addEventListener("click",()=>a()),o.querySelectorAll(".rte-color-swatch").forEach(c=>{c.addEventListener("click",()=>{const n=c.getAttribute("data-color");n&&(i=n,d(n),a())})});const r=o.querySelector(".rte-color-input-native");r?.addEventListener("change",c=>{const n=c.target.value;i=n,d(n),a()});const l=o.querySelector(".rte-color-input-text");l?.addEventListener("change",c=>{const n=c.target.value;/^#[0-9A-Fa-f]{6}$/.test(n)&&(i=n,d(n),a())}),r?.addEventListener("input",c=>{const n=c.target.value;i=n,x(n),b(n),L(n)}),l?.addEventListener("input",c=>{const n=c.target.value;/^#[0-9A-Fa-f]{6}$/.test(n)&&(i=n,x(n),b(n),S(n))})}function x(e){if(!o)return;const t=o.querySelector(".rte-color-preview-box"),r=o.querySelector(".rte-color-preview-label");t&&(t.style.backgroundColor=e,t.style.border=e==="#ffffff"?"1px solid #ccc":"none"),r&&(r.textContent=e.toUpperCase())}function b(e){if(!o)return;o.querySelectorAll(".rte-color-swatch").forEach(r=>{r.getAttribute("data-color")===e?r.classList.add("selected"):r.classList.remove("selected")})}function S(e){if(!o)return;const t=o.querySelector(".rte-color-input-native");t&&(t.value=e)}function L(e){if(!o)return;const t=o.querySelector(".rte-color-input-text");t&&(t.value=e)}function a(){o&&(o.remove(),o=null),p=null,f=null}function $(){if(o)return a(),!0;const e=v("openTextColorPicker");return e?(E(e),!0):!1}function g(){if(!window.__textColorPluginInitialized&&(window.__textColorPluginInitialized=!0,document.addEventListener("click",e=>{if(o&&p){const t=e.target;!o.contains(t)&&!p.contains(t)&&a()}}),!document.getElementById("text-color-plugin-styles"))){const e=document.createElement("style");e.id="text-color-plugin-styles",e.textContent=`
52
+ .rte-inline-color-picker {
53
+ background: white;
54
+ border-radius: 8px;
55
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
56
+ width: 220px;
57
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
58
+ }
59
+
60
+ .rte-color-picker-header {
61
+ padding: 12px 16px;
62
+ border-bottom: 1px solid #eee;
63
+ display: flex;
64
+ justify-content: space-between;
65
+ align-items: center;
66
+ }
67
+
68
+ .rte-color-picker-title {
69
+ font-size: 14px;
70
+ font-weight: 600;
71
+ color: #333;
72
+ }
73
+
74
+ .rte-color-picker-close {
75
+ background: none;
76
+ border: none;
77
+ font-size: 24px;
78
+ cursor: pointer;
79
+ color: #999;
80
+ padding: 0;
81
+ width: 24px;
82
+ height: 24px;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ line-height: 1;
87
+ }
88
+
89
+ .rte-color-picker-close:hover {
90
+ color: #333;
91
+ }
92
+
93
+ .rte-color-picker-body {
94
+ padding: 8px;
95
+ }
96
+
97
+ .rte-color-preview-section {
98
+ display: flex;
99
+ align-items: center;
100
+ gap: 12px;
101
+ margin-bottom: 8px;
102
+ padding: 6px;
103
+ background-color: #f8f9fa;
104
+ border-radius: 6px;
105
+ border: 1px solid #e0e0e0;
106
+ }
107
+
108
+ .rte-color-preview-box {
109
+ width: 24px;
110
+ height: 24px;
111
+ border-radius: 4px;
112
+ flex-shrink: 0;
113
+ }
114
+
115
+ .rte-color-preview-label {
116
+ font-size: 13px;
117
+ font-weight: 500;
118
+ color: #666;
119
+ font-family: monospace;
120
+ }
121
+
122
+ .rte-color-section {
123
+ margin-bottom: 16px;
124
+ }
125
+
126
+ .rte-color-section:last-child {
127
+ margin-bottom: 0;
128
+ }
129
+
130
+ .rte-color-section-label {
131
+ display: block;
132
+ font-size: 12px;
133
+ font-weight: 600;
134
+ color: #666;
135
+ margin-bottom: 8px;
136
+ text-transform: uppercase;
137
+ letter-spacing: 0.5px;
138
+ }
139
+
140
+ .rte-color-palette {
141
+ display: grid;
142
+ grid-template-columns: repeat(7, 1fr);
143
+ gap: 6px;
144
+ max-width: 180px;
145
+ }
146
+
147
+ .rte-color-swatch {
148
+ width: 100%;
149
+ aspect-ratio: 1;
150
+ border: 1px solid #e0e0e0;
151
+ border-radius: 3px;
152
+ cursor: pointer;
153
+ transition: all 0.15s ease;
154
+ padding: 0;
155
+ min-height: 20px;
156
+ }
157
+
158
+ .rte-color-swatch:hover {
159
+ transform: scale(1.05);
160
+ border-color: #ccc;
161
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
162
+ }
163
+
164
+ .rte-color-swatch.selected {
165
+ border-color: #1976d2;
166
+ box-shadow: 0 0 0 1px rgba(25, 118, 210, 0.3);
167
+ }
168
+
169
+ .rte-custom-color-inputs {
170
+ display: flex;
171
+ gap: 8px;
172
+ }
173
+
174
+ .rte-color-input-native {
175
+ width: 50px;
176
+ height: 26px;
177
+ border: 1px solid #ddd;
178
+ border-radius: 4px;
179
+ cursor: pointer;
180
+ padding: 2px;
181
+ }
182
+
183
+ .rte-color-input-text {
184
+ flex: 1;
185
+ height: 26px;
186
+ width: 50px;
187
+ border: 1px solid #ddd;
188
+ border-radius: 4px;
189
+ padding: 0 12px;
190
+ font-size: 13px;
191
+ font-family: monospace;
192
+ }
193
+
194
+ .rte-color-input-text:focus {
195
+ outline: none;
196
+ border-color: #1976d2;
197
+ }
198
+
199
+ .rte-color-picker-footer {
200
+ padding: 12px 16px;
201
+ border-top: 1px solid #eee;
202
+ display: flex;
203
+ gap: 8px;
204
+ justify-content: flex-end;
205
+ }
206
+
207
+ .rte-btn-primary,
208
+ .rte-btn-secondary {
209
+ padding: 6px 16px;
210
+ border-radius: 4px;
211
+ font-size: 13px;
212
+ font-weight: 500;
213
+ cursor: pointer;
214
+ transition: all 0.2s;
215
+ border: none;
216
+ }
217
+
218
+ .rte-btn-primary {
219
+ background-color: #1976d2;
220
+ color: white;
221
+ }
222
+
223
+ .rte-btn-primary:hover {
224
+ background-color: #1565c0;
225
+ }
226
+
227
+ .rte-btn-secondary {
228
+ background-color: #f5f5f5;
229
+ color: #333;
230
+ border: 1px solid #ddd;
231
+ }
232
+
233
+ .rte-btn-secondary:hover {
234
+ background-color: #eeeeee;
235
+ }
236
+
237
+ .rte-inline-color-picker.rte-theme-dark {
238
+ background: #1f2937;
239
+ border: 1px solid #4b5563;
240
+ box-shadow: 0 14px 30px rgba(0, 0, 0, 0.5);
241
+ }
242
+
243
+ .rte-inline-color-picker.rte-theme-dark .rte-color-picker-header {
244
+ border-bottom-color: #3b4657;
245
+ }
246
+
247
+ .rte-inline-color-picker.rte-theme-dark .rte-color-picker-title {
248
+ color: #e2e8f0;
249
+ }
250
+
251
+ .rte-inline-color-picker.rte-theme-dark .rte-color-picker-close {
252
+ color: #94a3b8;
253
+ }
254
+
255
+ .rte-inline-color-picker.rte-theme-dark .rte-color-picker-close:hover {
256
+ color: #f8fafc;
257
+ }
258
+
259
+ .rte-inline-color-picker.rte-theme-dark .rte-color-preview-section {
260
+ background-color: #111827;
261
+ border-color: #4b5563;
262
+ }
263
+
264
+ .rte-inline-color-picker.rte-theme-dark .rte-color-preview-label {
265
+ color: #cbd5e1;
266
+ }
267
+
268
+ .rte-inline-color-picker.rte-theme-dark .rte-color-section-label {
269
+ color: #9fb0c6;
270
+ }
271
+
272
+ .rte-inline-color-picker.rte-theme-dark .rte-color-swatch {
273
+ border-color: #4b5563;
274
+ }
275
+
276
+ .rte-inline-color-picker.rte-theme-dark .rte-color-swatch:hover {
277
+ border-color: #7a8ba5;
278
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
279
+ }
280
+
281
+ .rte-inline-color-picker.rte-theme-dark .rte-color-swatch.selected {
282
+ border-color: #58a6ff;
283
+ box-shadow: 0 0 0 1px rgba(88, 166, 255, 0.4);
284
+ }
285
+
286
+ .rte-inline-color-picker.rte-theme-dark .rte-color-input-native,
287
+ .rte-inline-color-picker.rte-theme-dark .rte-color-input-text {
288
+ background: #111827;
289
+ border-color: #4b5563;
290
+ color: #e2e8f0;
291
+ }
292
+
293
+ .rte-inline-color-picker.rte-theme-dark .rte-color-input-text::placeholder {
294
+ color: #94a3b8;
295
+ }
296
+
297
+ .rte-inline-color-picker.rte-theme-dark .rte-color-input-text:focus {
298
+ border-color: #58a6ff;
299
+ }
300
+ `,document.head.appendChild(e)}}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",g):setTimeout(g,100);const P=()=>({name:"textColor",marks:{textColor:{attrs:{color:{default:"#000000"}},parseDOM:[{tag:"span[style*=color]",getAttrs:e=>{const r=(e.getAttribute("style")||"").match(/color:\s*([^;]+)/);return r?{color:r[1]}:null}},{tag:"font[color]",getAttrs:e=>{const t=e.getAttribute("color");return t?{color:t}:null}}],toDOM:e=>["span",{style:`color: ${e.attrs?.color||"#000000"}`,class:"rte-text-color"},0]}},toolbar:[{label:"Text Color",command:"openTextColorPicker",icon:'<svg width="24" height="24" focusable="false"><g fill-rule="evenodd"><path class="tox-icon-text-color__color" d="M3 18h18v3H3z" fill="currentColor"></path><path d="M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4Zm2.6-7.6-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4Z"></path></g></svg>'}],commands:{openTextColorPicker:()=>$(),setTextColor:e=>e?d(e):!1},keymap:{}});exports.TextColorPlugin=P;