forge-edit 0.1.0-beta.14 → 0.1.0-beta.15
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.js +89 -36
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4076,33 +4076,44 @@ function nn(e, t, n = {}) {
|
|
|
4076
4076
|
//#endregion
|
|
4077
4077
|
//#region src/components/shared/toolbar/Style/Hooks/styleLogic.jsx
|
|
4078
4078
|
function rn(e) {
|
|
4079
|
+
let t = window.getSelection(), n = document.createRange(), r = e;
|
|
4080
|
+
for (; r.lastChild && r.lastChild.nodeName !== "BR";) r = r.lastChild;
|
|
4081
|
+
r.nodeType === 3 ? (n.setStart(r, r.textContent.length), n.collapse(!0)) : r.lastChild && r.lastChild.nodeName === "BR" ? (n.setStart(r, r.childNodes.length - 1), n.collapse(!0)) : (n.selectNodeContents(r), n.collapse(!1)), t.removeAllRanges(), t.addRange(n);
|
|
4082
|
+
}
|
|
4083
|
+
function an(e) {
|
|
4079
4084
|
let t = window.getSelection();
|
|
4080
4085
|
if (!t || !t.rangeCount) return;
|
|
4081
4086
|
let n = t.getRangeAt(0).commonAncestorContainer;
|
|
4082
4087
|
n.nodeType === 3 && (n = n.parentElement);
|
|
4083
4088
|
let r = n.closest("p, h1, h2, h3, h4, h5, h6, blockquote, pre");
|
|
4084
4089
|
if (r) {
|
|
4085
|
-
let n = document.createElement(e);
|
|
4086
|
-
for (; r.firstChild;)
|
|
4087
|
-
|
|
4088
|
-
|
|
4089
|
-
|
|
4090
|
+
let t = r.textContent.trim().length > 0, n = document.createElement(e);
|
|
4091
|
+
if (t) for (; r.firstChild;) {
|
|
4092
|
+
let e = r.firstChild;
|
|
4093
|
+
if (e.nodeName === "BR" && r.childNodes.length === 1) {
|
|
4094
|
+
r.removeChild(e);
|
|
4095
|
+
continue;
|
|
4096
|
+
}
|
|
4097
|
+
n.appendChild(e);
|
|
4098
|
+
}
|
|
4099
|
+
else n.innerHTML = "<br>";
|
|
4100
|
+
r.replaceWith(n), rn(n);
|
|
4090
4101
|
}
|
|
4091
4102
|
}
|
|
4092
|
-
function
|
|
4103
|
+
function Z(e) {
|
|
4093
4104
|
if (!e) return;
|
|
4094
4105
|
let t = e.querySelector("[data-command='style']"), n = e.querySelector(".forge-dropdown-style");
|
|
4095
4106
|
!t || !n || (Qe(t, n), n.querySelectorAll(".forge-dropdown-item").forEach((e) => {
|
|
4096
4107
|
e.addEventListener("mousedown", (r) => {
|
|
4097
4108
|
r.preventDefault(), r.stopPropagation();
|
|
4098
4109
|
let i = e.dataset.value || e.getAttribute("data-value");
|
|
4099
|
-
i &&
|
|
4110
|
+
i && an(i), n.classList.remove("is-open"), t.classList.remove("is-active");
|
|
4100
4111
|
});
|
|
4101
4112
|
}));
|
|
4102
4113
|
}
|
|
4103
4114
|
//#endregion
|
|
4104
4115
|
//#region src/components/shared/i18n/index.js
|
|
4105
|
-
var
|
|
4116
|
+
var on = {
|
|
4106
4117
|
en: {
|
|
4107
4118
|
style: "Style",
|
|
4108
4119
|
normal: "Normal",
|
|
@@ -4175,28 +4186,70 @@ var Z = {
|
|
|
4175
4186
|
codeview: "عرض الكود",
|
|
4176
4187
|
help: "مساعدة"
|
|
4177
4188
|
}
|
|
4178
|
-
},
|
|
4179
|
-
function
|
|
4180
|
-
return (
|
|
4189
|
+
}, sn = "en";
|
|
4190
|
+
function cn(e, t) {
|
|
4191
|
+
return (on[e] || on[sn])[t] || on[sn][t] || t;
|
|
4181
4192
|
}
|
|
4182
4193
|
//#endregion
|
|
4183
4194
|
//#region src/components/shared/i18n/apply.js
|
|
4184
|
-
function
|
|
4195
|
+
function ln(e, t) {
|
|
4185
4196
|
e.querySelectorAll("[data-i18n]").forEach((e) => {
|
|
4186
|
-
e.textContent =
|
|
4197
|
+
e.textContent = cn(t, e.getAttribute("data-i18n"));
|
|
4187
4198
|
});
|
|
4188
4199
|
}
|
|
4189
4200
|
//#endregion
|
|
4190
4201
|
//#region src/components/shared/toolbar/Style/Utils/ensureParagraph.jsx
|
|
4191
|
-
function
|
|
4202
|
+
function un(e) {
|
|
4192
4203
|
if (e && !(e.children.length > 0 || e.textContent.trim().length > 0)) {
|
|
4193
4204
|
let t = document.createElement("p");
|
|
4194
4205
|
t.innerHTML = "<br>", e.appendChild(t);
|
|
4195
4206
|
}
|
|
4196
4207
|
}
|
|
4197
4208
|
//#endregion
|
|
4209
|
+
//#region src/components/shared/toolbar/Style/Utils/enterKeyHandler.jsx
|
|
4210
|
+
var dn = [
|
|
4211
|
+
"h1",
|
|
4212
|
+
"h2",
|
|
4213
|
+
"h3",
|
|
4214
|
+
"h4",
|
|
4215
|
+
"h5",
|
|
4216
|
+
"h6",
|
|
4217
|
+
"blockquote",
|
|
4218
|
+
"pre"
|
|
4219
|
+
];
|
|
4220
|
+
function fn(e, t) {
|
|
4221
|
+
let n = e.nodeType === 3 ? e.parentNode : e;
|
|
4222
|
+
for (; n && n !== t;) {
|
|
4223
|
+
if (n.nodeType === 1 && dn.includes(n.tagName.toLowerCase())) return n;
|
|
4224
|
+
n = n.parentNode;
|
|
4225
|
+
}
|
|
4226
|
+
return null;
|
|
4227
|
+
}
|
|
4228
|
+
function pn(e) {
|
|
4229
|
+
let t = window.getSelection(), n = document.createRange();
|
|
4230
|
+
n.selectNodeContents(e), n.collapse(!0), t.removeAllRanges(), t.addRange(n);
|
|
4231
|
+
}
|
|
4232
|
+
function mn(e) {
|
|
4233
|
+
if (!e) return () => {};
|
|
4234
|
+
let t = (t) => {
|
|
4235
|
+
if (t.key !== "Enter" || t.shiftKey) return;
|
|
4236
|
+
let n = window.getSelection();
|
|
4237
|
+
if (!n || !n.rangeCount) return;
|
|
4238
|
+
let r = n.getRangeAt(0), i = fn(r.startContainer, e);
|
|
4239
|
+
if (!i) return;
|
|
4240
|
+
t.preventDefault();
|
|
4241
|
+
let a = document.createRange();
|
|
4242
|
+
a.setStart(r.endContainer, r.endOffset), a.setEndAfter(i.lastChild || i);
|
|
4243
|
+
let o = a.extractContents(), s = document.createElement("p");
|
|
4244
|
+
o.textContent.trim().length === 0 ? s.innerHTML = "<br>" : s.appendChild(o), i.nextSibling ? i.parentNode.insertBefore(s, i.nextSibling) : i.parentNode.appendChild(s), i.textContent.trim().length === 0 && i.childNodes.length === 0 && (i.innerHTML = "<br>"), pn(s);
|
|
4245
|
+
};
|
|
4246
|
+
return e.addEventListener("keydown", t), () => {
|
|
4247
|
+
e.removeEventListener("keydown", t);
|
|
4248
|
+
};
|
|
4249
|
+
}
|
|
4250
|
+
//#endregion
|
|
4198
4251
|
//#region src/components/shared/toolbar/Hooks/contentClick.js
|
|
4199
|
-
function
|
|
4252
|
+
function hn(e) {
|
|
4200
4253
|
e.addEventListener("click", (t) => {
|
|
4201
4254
|
if (t.target === e) {
|
|
4202
4255
|
let t = window.getSelection();
|
|
@@ -4213,7 +4266,7 @@ function un(e) {
|
|
|
4213
4266
|
}
|
|
4214
4267
|
//#endregion
|
|
4215
4268
|
//#region src/components/shared/toolbar/ImagePopover/Components/ImagePopover.jsx
|
|
4216
|
-
function
|
|
4269
|
+
function gn({ target: e, onClose: t, onResize: n, onFloat: r, onRemove: i }) {
|
|
4217
4270
|
let a = q(null);
|
|
4218
4271
|
if (!e) return null;
|
|
4219
4272
|
let o = e.getBoundingClientRect(), s = {
|
|
@@ -4348,7 +4401,7 @@ function dn({ target: e, onClose: t, onResize: n, onFloat: r, onRemove: i }) {
|
|
|
4348
4401
|
}
|
|
4349
4402
|
//#endregion
|
|
4350
4403
|
//#region src/components/shared/toolbar/ImagePopover/Hooks/useImagePopover.jsx
|
|
4351
|
-
function
|
|
4404
|
+
function _n() {
|
|
4352
4405
|
let [e, t] = G(null), [n, r] = G(!1);
|
|
4353
4406
|
return K(() => {
|
|
4354
4407
|
let e = (e) => {
|
|
@@ -4383,12 +4436,12 @@ function fn() {
|
|
|
4383
4436
|
}
|
|
4384
4437
|
//#endregion
|
|
4385
4438
|
//#region src/components/shared/toolbar/ImagePopover/Components/index.jsx
|
|
4386
|
-
function
|
|
4387
|
-
return /* @__PURE__ */ R(
|
|
4439
|
+
function vn() {
|
|
4440
|
+
return /* @__PURE__ */ R(gn, { ..._n() });
|
|
4388
4441
|
}
|
|
4389
4442
|
//#endregion
|
|
4390
4443
|
//#region src/components/light/index.jsx
|
|
4391
|
-
function
|
|
4444
|
+
function yn(e) {
|
|
4392
4445
|
return {
|
|
4393
4446
|
getHTML() {
|
|
4394
4447
|
return e.innerHTML;
|
|
@@ -4405,7 +4458,7 @@ function mn(e) {
|
|
|
4405
4458
|
}
|
|
4406
4459
|
};
|
|
4407
4460
|
}
|
|
4408
|
-
function
|
|
4461
|
+
function bn(e) {
|
|
4409
4462
|
let t = e.lang || "en", n = e.dir || "ltr", r = { current: null }, i = /* @__PURE__ */ R("div", {
|
|
4410
4463
|
className: "forge-editor forge-editor--light flex flex-col w-full rounded-[3px] border border-[#ddd] bg-white box-border align-top min-h-[120px]",
|
|
4411
4464
|
lang: t,
|
|
@@ -4418,28 +4471,28 @@ function hn(e) {
|
|
|
4418
4471
|
"data-placeholder": e.placeholder || ""
|
|
4419
4472
|
}),
|
|
4420
4473
|
/* @__PURE__ */ R(en, {}),
|
|
4421
|
-
/* @__PURE__ */ R(
|
|
4474
|
+
/* @__PURE__ */ R(vn, {})
|
|
4422
4475
|
]
|
|
4423
4476
|
}), a = document.createElement("div");
|
|
4424
4477
|
I(i, a);
|
|
4425
4478
|
let o = a.firstElementChild, s = o.querySelector(".forge-editor__content");
|
|
4426
|
-
r.current = s,
|
|
4479
|
+
r.current = s, un(s), hn(s), mn(s);
|
|
4427
4480
|
let c = o.querySelector(".forge-toolbar-style");
|
|
4428
|
-
c &&
|
|
4481
|
+
c && Z(c);
|
|
4429
4482
|
let l = o.querySelector(".forge-editor__toolbar");
|
|
4430
|
-
l &&
|
|
4483
|
+
l && ln(l, t);
|
|
4431
4484
|
let u = o.querySelector(".forge-statusbar");
|
|
4432
4485
|
return u && nn(u, o, { minHeight: 120 }), {
|
|
4433
4486
|
element: o,
|
|
4434
|
-
...
|
|
4487
|
+
...yn(s)
|
|
4435
4488
|
};
|
|
4436
4489
|
}
|
|
4437
4490
|
//#endregion
|
|
4438
4491
|
//#region src/main/index.jsx
|
|
4439
|
-
function
|
|
4492
|
+
function xn(e) {
|
|
4440
4493
|
let t = l(e);
|
|
4441
4494
|
if (t.type === "light") {
|
|
4442
|
-
let { element: n, getHTML: r, setHTML: i, getText: a, getSelection: o } =
|
|
4495
|
+
let { element: n, getHTML: r, setHTML: i, getText: a, getSelection: o } = bn(t);
|
|
4443
4496
|
return e.innerHTML = "", e.appendChild(n), n.style.width = t.width, n.style.height = t.height, {
|
|
4444
4497
|
element: n,
|
|
4445
4498
|
getHTML: r,
|
|
@@ -4452,13 +4505,13 @@ function gn(e) {
|
|
|
4452
4505
|
}
|
|
4453
4506
|
//#endregion
|
|
4454
4507
|
//#region src/main/main.jsx
|
|
4455
|
-
var
|
|
4456
|
-
|
|
4457
|
-
let t =
|
|
4458
|
-
t &&
|
|
4459
|
-
}), window.forgeEditors =
|
|
4460
|
-
var
|
|
4461
|
-
|
|
4462
|
-
|
|
4508
|
+
var Sn = document.querySelectorAll("forge-editor"), Cn = [];
|
|
4509
|
+
Sn.forEach((e) => {
|
|
4510
|
+
let t = xn(e);
|
|
4511
|
+
t && Cn.push(t);
|
|
4512
|
+
}), window.forgeEditors = Cn;
|
|
4513
|
+
var wn = document.getElementById("get-html-btn"), Tn = document.getElementById("html-output");
|
|
4514
|
+
wn && Tn && Cn[0] && wn.addEventListener("click", () => {
|
|
4515
|
+
Tn.value = Cn[0].getHTML();
|
|
4463
4516
|
});
|
|
4464
4517
|
//#endregion
|