@mdaemon/html-editor 1.0.11 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +33 -12
- package/dist/index.mjs +33 -12
- package/dist/styles.css +34 -4
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -471,6 +471,7 @@ export declare class Toolbar {
|
|
|
471
471
|
private state;
|
|
472
472
|
private buttonElements;
|
|
473
473
|
private dropdowns;
|
|
474
|
+
private bodyMenus;
|
|
474
475
|
private charMap;
|
|
475
476
|
private emojiPicker;
|
|
476
477
|
private imageUpload;
|
|
@@ -521,6 +522,7 @@ export declare class Toolbar {
|
|
|
521
522
|
private toggleFullscreen;
|
|
522
523
|
rebuild(): void;
|
|
523
524
|
destroy(): void;
|
|
525
|
+
private removeBodyMenus;
|
|
524
526
|
}
|
|
525
527
|
|
|
526
528
|
export declare interface ToolbarButtonAPI {
|
package/dist/index.js
CHANGED
|
@@ -42788,6 +42788,7 @@ class Toolbar {
|
|
|
42788
42788
|
state;
|
|
42789
42789
|
buttonElements = /* @__PURE__ */ new Map();
|
|
42790
42790
|
dropdowns = /* @__PURE__ */ new Map();
|
|
42791
|
+
bodyMenus = [];
|
|
42791
42792
|
charMap = null;
|
|
42792
42793
|
emojiPicker = null;
|
|
42793
42794
|
imageUpload = null;
|
|
@@ -43160,7 +43161,7 @@ class Toolbar {
|
|
|
43160
43161
|
button.title = label;
|
|
43161
43162
|
button.innerHTML = `
|
|
43162
43163
|
<span class="md-toolbar-dropdown-label">${label}</span>
|
|
43163
|
-
<span class="md-toolbar-dropdown-arrow"
|
|
43164
|
+
<span class="md-toolbar-dropdown-arrow"><svg width="8" height="8" viewBox="0 0 8 8" fill="currentColor"><path d="M0 2l4 4 4-4z"/></svg></span>
|
|
43164
43165
|
`;
|
|
43165
43166
|
const menu = document.createElement("div");
|
|
43166
43167
|
menu.className = "md-toolbar-dropdown-menu";
|
|
@@ -43192,11 +43193,12 @@ class Toolbar {
|
|
|
43192
43193
|
e.stopPropagation();
|
|
43193
43194
|
this.dropdowns.forEach((dropdown, key) => {
|
|
43194
43195
|
if (key !== name) {
|
|
43195
|
-
dropdown.classList.remove("md-toolbar-dropdown-open");
|
|
43196
|
-
const m = dropdown.querySelector(".md-toolbar-dropdown-menu");
|
|
43197
|
-
if (m) m.style.display = "none";
|
|
43196
|
+
dropdown.classList.remove("md-toolbar-dropdown-open", "md-toolbar-colorpicker-open");
|
|
43198
43197
|
}
|
|
43199
43198
|
});
|
|
43199
|
+
this.bodyMenus.forEach((m) => {
|
|
43200
|
+
if (m !== menu) m.style.display = "none";
|
|
43201
|
+
});
|
|
43200
43202
|
const isOpen = menu.style.display !== "none";
|
|
43201
43203
|
menu.style.display = isOpen ? "none" : "block";
|
|
43202
43204
|
wrapper.classList.toggle("md-toolbar-dropdown-open", !isOpen);
|
|
@@ -43212,7 +43214,8 @@ class Toolbar {
|
|
|
43212
43214
|
}
|
|
43213
43215
|
});
|
|
43214
43216
|
wrapper.appendChild(button);
|
|
43215
|
-
|
|
43217
|
+
document.body.appendChild(menu);
|
|
43218
|
+
this.bodyMenus.push(menu);
|
|
43216
43219
|
this.dropdowns.set(name, wrapper);
|
|
43217
43220
|
return wrapper;
|
|
43218
43221
|
}
|
|
@@ -43227,7 +43230,7 @@ class Toolbar {
|
|
|
43227
43230
|
button.innerHTML = `
|
|
43228
43231
|
<span class="md-toolbar-colorpicker-icon md-icon-${name}">A</span>
|
|
43229
43232
|
<span class="md-toolbar-colorpicker-preview" style="background-color: ${name === "forecolor" ? "#000" : "#ff0"}"></span>
|
|
43230
|
-
<span class="md-toolbar-dropdown-arrow"
|
|
43233
|
+
<span class="md-toolbar-dropdown-arrow"><svg width="8" height="8" viewBox="0 0 8 8" fill="currentColor"><path d="M0 2l4 4 4-4z"/></svg></span>
|
|
43231
43234
|
`;
|
|
43232
43235
|
const menu = document.createElement("div");
|
|
43233
43236
|
menu.className = "md-toolbar-colorpicker-menu";
|
|
@@ -43278,6 +43281,14 @@ class Toolbar {
|
|
|
43278
43281
|
button.addEventListener("click", (e) => {
|
|
43279
43282
|
e.preventDefault();
|
|
43280
43283
|
e.stopPropagation();
|
|
43284
|
+
this.dropdowns.forEach((dropdown, key) => {
|
|
43285
|
+
if (key !== name) {
|
|
43286
|
+
dropdown.classList.remove("md-toolbar-dropdown-open", "md-toolbar-colorpicker-open");
|
|
43287
|
+
}
|
|
43288
|
+
});
|
|
43289
|
+
this.bodyMenus.forEach((m) => {
|
|
43290
|
+
if (m !== menu) m.style.display = "none";
|
|
43291
|
+
});
|
|
43281
43292
|
const isOpen = menu.style.display !== "none";
|
|
43282
43293
|
menu.style.display = isOpen ? "none" : "block";
|
|
43283
43294
|
wrapper.classList.toggle("md-toolbar-colorpicker-open", !isOpen);
|
|
@@ -43286,7 +43297,8 @@ class Toolbar {
|
|
|
43286
43297
|
}
|
|
43287
43298
|
});
|
|
43288
43299
|
wrapper.appendChild(button);
|
|
43289
|
-
|
|
43300
|
+
document.body.appendChild(menu);
|
|
43301
|
+
this.bodyMenus.push(menu);
|
|
43290
43302
|
this.dropdowns.set(name, wrapper);
|
|
43291
43303
|
return wrapper;
|
|
43292
43304
|
}
|
|
@@ -43294,7 +43306,9 @@ class Toolbar {
|
|
|
43294
43306
|
this.unbindEvents();
|
|
43295
43307
|
this.boundClickHandler = (e) => {
|
|
43296
43308
|
const target = e.target;
|
|
43297
|
-
|
|
43309
|
+
const inDropdown = target.closest(".md-toolbar-dropdown, .md-toolbar-colorpicker");
|
|
43310
|
+
const inBodyMenu = this.bodyMenus.some((m) => m.contains(target));
|
|
43311
|
+
if (!inDropdown && !inBodyMenu) {
|
|
43298
43312
|
this.closeAllDropdowns();
|
|
43299
43313
|
}
|
|
43300
43314
|
};
|
|
@@ -43338,10 +43352,9 @@ class Toolbar {
|
|
|
43338
43352
|
closeAllDropdowns() {
|
|
43339
43353
|
this.dropdowns.forEach((dropdown) => {
|
|
43340
43354
|
dropdown.classList.remove("md-toolbar-dropdown-open", "md-toolbar-colorpicker-open");
|
|
43341
|
-
|
|
43342
|
-
|
|
43343
|
-
|
|
43344
|
-
}
|
|
43355
|
+
});
|
|
43356
|
+
this.bodyMenus.forEach((menu) => {
|
|
43357
|
+
menu.style.display = "none";
|
|
43345
43358
|
});
|
|
43346
43359
|
}
|
|
43347
43360
|
startStateUpdates() {
|
|
@@ -43507,6 +43520,7 @@ class Toolbar {
|
|
|
43507
43520
|
this.searchReplace = null;
|
|
43508
43521
|
this.buttonElements.clear();
|
|
43509
43522
|
this.dropdowns.clear();
|
|
43523
|
+
this.removeBodyMenus();
|
|
43510
43524
|
this.buttonsEl = null;
|
|
43511
43525
|
this.toggleBtn = null;
|
|
43512
43526
|
this.render();
|
|
@@ -43527,8 +43541,15 @@ class Toolbar {
|
|
|
43527
43541
|
this.searchReplace?.destroy();
|
|
43528
43542
|
this.buttonElements.clear();
|
|
43529
43543
|
this.dropdowns.clear();
|
|
43544
|
+
this.removeBodyMenus();
|
|
43530
43545
|
this.container.innerHTML = "";
|
|
43531
43546
|
}
|
|
43547
|
+
removeBodyMenus() {
|
|
43548
|
+
this.bodyMenus.forEach((menu) => {
|
|
43549
|
+
menu.remove();
|
|
43550
|
+
});
|
|
43551
|
+
this.bodyMenus = [];
|
|
43552
|
+
}
|
|
43532
43553
|
}
|
|
43533
43554
|
const SVG_ALIGN_LEFT = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="15" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
|
43534
43555
|
const SVG_ALIGN_CENTER = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="6" y1="12" x2="18" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
package/dist/index.mjs
CHANGED
|
@@ -42786,6 +42786,7 @@ class Toolbar {
|
|
|
42786
42786
|
state;
|
|
42787
42787
|
buttonElements = /* @__PURE__ */ new Map();
|
|
42788
42788
|
dropdowns = /* @__PURE__ */ new Map();
|
|
42789
|
+
bodyMenus = [];
|
|
42789
42790
|
charMap = null;
|
|
42790
42791
|
emojiPicker = null;
|
|
42791
42792
|
imageUpload = null;
|
|
@@ -43158,7 +43159,7 @@ class Toolbar {
|
|
|
43158
43159
|
button.title = label;
|
|
43159
43160
|
button.innerHTML = `
|
|
43160
43161
|
<span class="md-toolbar-dropdown-label">${label}</span>
|
|
43161
|
-
<span class="md-toolbar-dropdown-arrow"
|
|
43162
|
+
<span class="md-toolbar-dropdown-arrow"><svg width="8" height="8" viewBox="0 0 8 8" fill="currentColor"><path d="M0 2l4 4 4-4z"/></svg></span>
|
|
43162
43163
|
`;
|
|
43163
43164
|
const menu = document.createElement("div");
|
|
43164
43165
|
menu.className = "md-toolbar-dropdown-menu";
|
|
@@ -43190,11 +43191,12 @@ class Toolbar {
|
|
|
43190
43191
|
e.stopPropagation();
|
|
43191
43192
|
this.dropdowns.forEach((dropdown, key) => {
|
|
43192
43193
|
if (key !== name) {
|
|
43193
|
-
dropdown.classList.remove("md-toolbar-dropdown-open");
|
|
43194
|
-
const m = dropdown.querySelector(".md-toolbar-dropdown-menu");
|
|
43195
|
-
if (m) m.style.display = "none";
|
|
43194
|
+
dropdown.classList.remove("md-toolbar-dropdown-open", "md-toolbar-colorpicker-open");
|
|
43196
43195
|
}
|
|
43197
43196
|
});
|
|
43197
|
+
this.bodyMenus.forEach((m) => {
|
|
43198
|
+
if (m !== menu) m.style.display = "none";
|
|
43199
|
+
});
|
|
43198
43200
|
const isOpen = menu.style.display !== "none";
|
|
43199
43201
|
menu.style.display = isOpen ? "none" : "block";
|
|
43200
43202
|
wrapper.classList.toggle("md-toolbar-dropdown-open", !isOpen);
|
|
@@ -43210,7 +43212,8 @@ class Toolbar {
|
|
|
43210
43212
|
}
|
|
43211
43213
|
});
|
|
43212
43214
|
wrapper.appendChild(button);
|
|
43213
|
-
|
|
43215
|
+
document.body.appendChild(menu);
|
|
43216
|
+
this.bodyMenus.push(menu);
|
|
43214
43217
|
this.dropdowns.set(name, wrapper);
|
|
43215
43218
|
return wrapper;
|
|
43216
43219
|
}
|
|
@@ -43225,7 +43228,7 @@ class Toolbar {
|
|
|
43225
43228
|
button.innerHTML = `
|
|
43226
43229
|
<span class="md-toolbar-colorpicker-icon md-icon-${name}">A</span>
|
|
43227
43230
|
<span class="md-toolbar-colorpicker-preview" style="background-color: ${name === "forecolor" ? "#000" : "#ff0"}"></span>
|
|
43228
|
-
<span class="md-toolbar-dropdown-arrow"
|
|
43231
|
+
<span class="md-toolbar-dropdown-arrow"><svg width="8" height="8" viewBox="0 0 8 8" fill="currentColor"><path d="M0 2l4 4 4-4z"/></svg></span>
|
|
43229
43232
|
`;
|
|
43230
43233
|
const menu = document.createElement("div");
|
|
43231
43234
|
menu.className = "md-toolbar-colorpicker-menu";
|
|
@@ -43276,6 +43279,14 @@ class Toolbar {
|
|
|
43276
43279
|
button.addEventListener("click", (e) => {
|
|
43277
43280
|
e.preventDefault();
|
|
43278
43281
|
e.stopPropagation();
|
|
43282
|
+
this.dropdowns.forEach((dropdown, key) => {
|
|
43283
|
+
if (key !== name) {
|
|
43284
|
+
dropdown.classList.remove("md-toolbar-dropdown-open", "md-toolbar-colorpicker-open");
|
|
43285
|
+
}
|
|
43286
|
+
});
|
|
43287
|
+
this.bodyMenus.forEach((m) => {
|
|
43288
|
+
if (m !== menu) m.style.display = "none";
|
|
43289
|
+
});
|
|
43279
43290
|
const isOpen = menu.style.display !== "none";
|
|
43280
43291
|
menu.style.display = isOpen ? "none" : "block";
|
|
43281
43292
|
wrapper.classList.toggle("md-toolbar-colorpicker-open", !isOpen);
|
|
@@ -43284,7 +43295,8 @@ class Toolbar {
|
|
|
43284
43295
|
}
|
|
43285
43296
|
});
|
|
43286
43297
|
wrapper.appendChild(button);
|
|
43287
|
-
|
|
43298
|
+
document.body.appendChild(menu);
|
|
43299
|
+
this.bodyMenus.push(menu);
|
|
43288
43300
|
this.dropdowns.set(name, wrapper);
|
|
43289
43301
|
return wrapper;
|
|
43290
43302
|
}
|
|
@@ -43292,7 +43304,9 @@ class Toolbar {
|
|
|
43292
43304
|
this.unbindEvents();
|
|
43293
43305
|
this.boundClickHandler = (e) => {
|
|
43294
43306
|
const target = e.target;
|
|
43295
|
-
|
|
43307
|
+
const inDropdown = target.closest(".md-toolbar-dropdown, .md-toolbar-colorpicker");
|
|
43308
|
+
const inBodyMenu = this.bodyMenus.some((m) => m.contains(target));
|
|
43309
|
+
if (!inDropdown && !inBodyMenu) {
|
|
43296
43310
|
this.closeAllDropdowns();
|
|
43297
43311
|
}
|
|
43298
43312
|
};
|
|
@@ -43336,10 +43350,9 @@ class Toolbar {
|
|
|
43336
43350
|
closeAllDropdowns() {
|
|
43337
43351
|
this.dropdowns.forEach((dropdown) => {
|
|
43338
43352
|
dropdown.classList.remove("md-toolbar-dropdown-open", "md-toolbar-colorpicker-open");
|
|
43339
|
-
|
|
43340
|
-
|
|
43341
|
-
|
|
43342
|
-
}
|
|
43353
|
+
});
|
|
43354
|
+
this.bodyMenus.forEach((menu) => {
|
|
43355
|
+
menu.style.display = "none";
|
|
43343
43356
|
});
|
|
43344
43357
|
}
|
|
43345
43358
|
startStateUpdates() {
|
|
@@ -43505,6 +43518,7 @@ class Toolbar {
|
|
|
43505
43518
|
this.searchReplace = null;
|
|
43506
43519
|
this.buttonElements.clear();
|
|
43507
43520
|
this.dropdowns.clear();
|
|
43521
|
+
this.removeBodyMenus();
|
|
43508
43522
|
this.buttonsEl = null;
|
|
43509
43523
|
this.toggleBtn = null;
|
|
43510
43524
|
this.render();
|
|
@@ -43525,8 +43539,15 @@ class Toolbar {
|
|
|
43525
43539
|
this.searchReplace?.destroy();
|
|
43526
43540
|
this.buttonElements.clear();
|
|
43527
43541
|
this.dropdowns.clear();
|
|
43542
|
+
this.removeBodyMenus();
|
|
43528
43543
|
this.container.innerHTML = "";
|
|
43529
43544
|
}
|
|
43545
|
+
removeBodyMenus() {
|
|
43546
|
+
this.bodyMenus.forEach((menu) => {
|
|
43547
|
+
menu.remove();
|
|
43548
|
+
});
|
|
43549
|
+
this.bodyMenus = [];
|
|
43550
|
+
}
|
|
43530
43551
|
}
|
|
43531
43552
|
const SVG_ALIGN_LEFT = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="3" y1="12" x2="15" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
|
43532
43553
|
const SVG_ALIGN_CENTER = '<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="3" y1="6" x2="21" y2="6"/><line x1="6" y1="12" x2="18" y2="12"/><line x1="3" y1="18" x2="21" y2="18"/></svg>';
|
package/dist/styles.css
CHANGED
|
@@ -175,9 +175,39 @@
|
|
|
175
175
|
}
|
|
176
176
|
|
|
177
177
|
.md-toolbar-dropdown-arrow {
|
|
178
|
-
|
|
178
|
+
display: inline-flex;
|
|
179
|
+
align-items: center;
|
|
179
180
|
opacity: 0.6;
|
|
180
181
|
}
|
|
182
|
+
.md-toolbar-dropdown-arrow svg {
|
|
183
|
+
display: block;
|
|
184
|
+
width: 8px;
|
|
185
|
+
height: 8px;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.md-toolbar-dropdown-menu,
|
|
189
|
+
.md-toolbar-colorpicker-menu {
|
|
190
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
191
|
+
font-size: 14px;
|
|
192
|
+
box-sizing: border-box;
|
|
193
|
+
}
|
|
194
|
+
.md-toolbar-dropdown-menu *, .md-toolbar-dropdown-menu *::before, .md-toolbar-dropdown-menu *::after,
|
|
195
|
+
.md-toolbar-colorpicker-menu *,
|
|
196
|
+
.md-toolbar-colorpicker-menu *::before,
|
|
197
|
+
.md-toolbar-colorpicker-menu *::after {
|
|
198
|
+
box-sizing: border-box;
|
|
199
|
+
}
|
|
200
|
+
.md-toolbar-dropdown-menu button:not([class]),
|
|
201
|
+
.md-toolbar-colorpicker-menu button:not([class]) {
|
|
202
|
+
appearance: none;
|
|
203
|
+
font: inherit;
|
|
204
|
+
color: inherit;
|
|
205
|
+
background: transparent;
|
|
206
|
+
border: none;
|
|
207
|
+
padding: 0;
|
|
208
|
+
margin: 0;
|
|
209
|
+
cursor: pointer;
|
|
210
|
+
}
|
|
181
211
|
|
|
182
212
|
.md-toolbar-dropdown-menu {
|
|
183
213
|
position: fixed;
|
|
@@ -191,7 +221,7 @@
|
|
|
191
221
|
z-index: 1000;
|
|
192
222
|
}
|
|
193
223
|
|
|
194
|
-
.md-
|
|
224
|
+
.md-toolbar-dropdown-item {
|
|
195
225
|
display: block;
|
|
196
226
|
margin-top: 2px;
|
|
197
227
|
margin-bottom: 2px;
|
|
@@ -204,10 +234,10 @@
|
|
|
204
234
|
font-size: 13px;
|
|
205
235
|
color: #222;
|
|
206
236
|
}
|
|
207
|
-
.md-
|
|
237
|
+
.md-toolbar-dropdown-item:hover {
|
|
208
238
|
background: #f0f0f0;
|
|
209
239
|
}
|
|
210
|
-
.md-
|
|
240
|
+
.md-toolbar-dropdown-item.md-toolbar-dropdown-item-selected {
|
|
211
241
|
background: #2271b2;
|
|
212
242
|
color: #fff;
|
|
213
243
|
}
|