@templatical/editor 0.0.1 → 0.0.3
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/AiChatSidebar-busJk9hm.js +214 -0
- package/dist/AiFeatureMenu-DLGv_-pj.js +63 -0
- package/dist/CloudEditor-BDnHd6Um.js +919 -0
- package/dist/CollaboratorBar-Dv3l52vC.js +91 -0
- package/dist/CommentsSidebar-4tjp0VU5.js +439 -0
- package/dist/DesignReferenceSidebar-CmwXvltV.js +273 -0
- package/dist/LoadingTrack-vK8W2PJf.js +10 -0
- package/dist/ModuleBrowserModal-lrk3Fr0H.js +205 -0
- package/dist/ModulePreviewCanvas-BcBJLnwL.js +106 -0
- package/dist/ParagraphEditor-DH8cSC6m.js +625 -0
- package/dist/RichTextEditorContent-CQqodi7p.js +133 -0
- package/dist/SaveModuleDialog-Bmzi72td.js +122 -0
- package/dist/SnapshotHistory-AEgi9Xsn.js +126 -0
- package/dist/TemplateScoringPanel-CTgMtc0-.js +249 -0
- package/dist/TestEmailModal-Dpq1is9S.js +94 -0
- package/dist/TitleEditor-CLcDdcWI.js +167 -0
- package/dist/TplModal-CGzRjR96.js +44 -0
- package/dist/_plugin-vue_export-helper-B1-bu7yR.js +47 -0
- package/dist/blockTypeIcons-BpPTqcok.js +126 -0
- package/dist/cdn/chunks/ParagraphEditor-CCtWbGDv.js +3 -0
- package/dist/cdn/chunks/ParagraphEditor-CCtWbGDv.js.map +1 -0
- package/dist/cdn/chunks/RichTextEditorContent-BUD9veXd.js +2 -0
- package/dist/cdn/chunks/RichTextEditorContent-BUD9veXd.js.map +1 -0
- package/dist/cdn/chunks/TitleEditor-e_UTyxjd.js +3 -0
- package/dist/cdn/chunks/TitleEditor-e_UTyxjd.js.map +1 -0
- package/dist/cdn/chunks/dist-0UheN8rK.js +1 -0
- package/dist/cdn/chunks/dist-55mmbGQ9.js +1 -0
- package/dist/cdn/chunks/dist-B31mxKyP.js +1 -0
- package/dist/cdn/chunks/dist-B5JI9nIg.js +1 -0
- package/dist/cdn/chunks/dist-B93vLKhU.js +1 -0
- package/dist/cdn/chunks/dist-BDt3FJvj.js +1 -0
- package/dist/cdn/chunks/dist-BJRuFHmi.js +1 -0
- package/dist/cdn/chunks/dist-BKSzrf0L.js +1 -0
- package/dist/cdn/chunks/dist-BL8c5gYQ.js +1 -0
- package/dist/cdn/chunks/dist-CYThWMP5.js +1 -0
- package/dist/cdn/chunks/dist-DxZbPJYt.js +1 -0
- package/dist/cdn/chunks/draggable-ClUwYCFL.js +17 -0
- package/dist/cdn/chunks/draggable-ClUwYCFL.js.map +1 -0
- package/dist/cdn/chunks/emojiData-6fVLNqeH.js +2 -0
- package/dist/cdn/chunks/emojiData-6fVLNqeH.js.map +1 -0
- package/dist/cdn/chunks/extensions-ea_ewKUl.js +2 -0
- package/dist/cdn/chunks/extensions-ea_ewKUl.js.map +1 -0
- package/dist/cdn/chunks/icons-vmLJTaJk.js +2 -0
- package/dist/cdn/chunks/icons-vmLJTaJk.js.map +1 -0
- package/dist/cdn/chunks/rolldown-runtime-BakkzWXw.js +1 -0
- package/dist/cdn/chunks/styleConstants-CNejCb-L.js +2 -0
- package/dist/cdn/chunks/styleConstants-CNejCb-L.js.map +1 -0
- package/dist/cdn/chunks/tiptap-Cya4P9CN.js +145 -0
- package/dist/cdn/chunks/tiptap-Cya4P9CN.js.map +1 -0
- package/dist/cdn/chunks/useEditorCore-CwuxQuvh.js +2 -0
- package/dist/cdn/chunks/useEditorCore-CwuxQuvh.js.map +1 -0
- package/dist/cdn/chunks/useMergeTag-DVOz1v9p.js +2 -0
- package/dist/cdn/chunks/useMergeTag-DVOz1v9p.js.map +1 -0
- package/dist/cdn/editor.css +1 -0
- package/dist/cdn/editor.js +2 -0
- package/dist/cdn/editor.js.map +1 -0
- package/dist/check-B7kDuZmP.js +7 -0
- package/dist/chevron-down-DJLW2Q9Z.js +7 -0
- package/dist/circle-alert-E2vYPs5r.js +25 -0
- package/dist/clock-lWIIQA3C.js +12 -0
- package/dist/de-B4Ob4vCo.js +682 -0
- package/dist/dist-4LiM9FDd.js +35 -0
- package/dist/dist-Bu7veieH.js +776 -0
- package/dist/dist-C1BIRHCQ.js +61 -0
- package/dist/dist-CG-vEqSU.js +314 -0
- package/dist/dist-C_ymrGFi.js +10625 -0
- package/dist/dist-ChAGLpWo.js +35 -0
- package/dist/dist-D_HQYSY-.js +189 -0
- package/dist/dist-DkypH7qG.js +5 -0
- package/dist/dist-DmOE-Ubp.js +74 -0
- package/dist/dist-DmpMJbmZ.js +513 -0
- package/dist/dist-DrvKRSU6.js +47 -0
- package/dist/dist-Dxnd0GRf.js +5 -0
- package/dist/dist-DysAFIPy.js +2054 -0
- package/dist/emojiData-BfWQS72m.js +17 -0
- package/dist/en-YXsspZJG.js +682 -0
- package/dist/extensions-CKM99njP.js +420 -0
- package/dist/formatRelativeTime-DX3FgqN9.js +8 -0
- package/dist/i18n-CJsFtdbZ.js +23 -0
- package/dist/image-up-X4xIq4ea.js +23 -0
- package/dist/keys-Dwa2PmdD.js +10 -0
- package/dist/liquid.browser-BemTg3sZ.js +3272 -0
- package/dist/loader-circle-BTQQxC3l.js +7 -0
- package/dist/message-circle-Blgm6V_h.js +7 -0
- package/dist/refresh-cw-Bb4PEeW1.js +44 -0
- package/dist/scan-line-7lZPfOdm.js +25 -0
- package/dist/send-C0ltAQrv.js +10 -0
- package/dist/shield-check-f-qv4RKs.js +10 -0
- package/dist/sparkles-KhBCGlqB.js +23 -0
- package/dist/styleConstants-D4SOZGBV.js +94 -0
- package/dist/styles-DSw1VNU3.js +3406 -0
- package/dist/templatical-editor.css +2 -1
- package/dist/templatical-editor.js +242 -9
- package/dist/templatical-editor.umd.cjs +112 -524
- package/dist/timeouts-CmBrLeZA.js +4 -0
- package/dist/trash-2-OwjZ-guZ.js +25 -0
- package/dist/triangle-alert-DOSRIUYZ.js +17 -0
- package/dist/useEditorCore-Cc4RCwWq.js +5556 -0
- package/dist/useI18n-DUirdXEX.js +17 -0
- package/dist/useMergeTag-DVnlvPYJ.js +33 -0
- package/dist/x-CGlq2XQe.js +10 -0
- package/package.json +30 -20
- package/dist/AiChatSidebar-0vx9TP5B.js +0 -305
- package/dist/AiFeatureMenu-CI-v74ND.js +0 -69
- package/dist/CloudEditor-Wdfv_9xn.js +0 -1132
- package/dist/CollaboratorBar-B3uV4Wtw.js +0 -89
- package/dist/CommentsSidebar-PVUlloyB.js +0 -655
- package/dist/DesignReferenceSidebar-DAlAWrxU.js +0 -351
- package/dist/ModuleBrowserModal-1JEcChd8.js +0 -323
- package/dist/ModulePreviewCanvas-Cdp484Ae.js +0 -169
- package/dist/SaveModuleDialog-eNyr3XKn.js +0 -168
- package/dist/SnapshotHistory-D-ZiIj1v.js +0 -169
- package/dist/TemplateScoringPanel-DSZPo15C.js +0 -385
- package/dist/TestEmailModal-Cwre5elw.js +0 -128
- package/dist/TextEditor-BuUOIByX.js +0 -780
- package/dist/de-BWIAblxs.js +0 -685
- package/dist/en-cYyUzNV1.js +0 -685
- package/dist/index-0tWUczNu.js +0 -47
- package/dist/index-4okvXjqk.js +0 -41
- package/dist/index-BSc6h5zo.js +0 -967
- package/dist/index-CrvwWlhN.js +0 -41
- package/dist/index-D-iD-7lO.js +0 -10961
- package/dist/index-D-ygXbc8.js +0 -2452
- package/dist/index-DbrWKz-e.js +0 -1415
- package/dist/index-DeUeHy6g.js +0 -422
- package/dist/index-Ude6e9RU.js +0 -41
- package/dist/index-ZQzHBwkr.js +0 -12767
- package/dist/liquid.browser-CeNxS2GL.js +0 -3493
- package/dist/loader-circle-tM9j2mRh.js +0 -13
- package/dist/shield-check-Ngi9jAQc.js +0 -20
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import "./useEditorCore-Cc4RCwWq.js";
|
|
2
|
+
import { t as e } from "./useI18n-DUirdXEX.js";
|
|
3
|
+
import { t } from "./loader-circle-BTQQxC3l.js";
|
|
4
|
+
import { t as n } from "./TplModal-CGzRjR96.js";
|
|
5
|
+
import { Fragment as r, createBlock as i, createCommentVNode as a, createElementBlock as o, createElementVNode as s, createTextVNode as c, createVNode as l, defineComponent as u, normalizeClass as d, openBlock as f, ref as p, renderList as m, toDisplayString as h, unref as g, vModelSelect as _, watch as v, withCtx as y, withDirectives as b } from "vue";
|
|
6
|
+
//#region src/cloud/components/TestEmailModal.vue?vue&type=script&setup=true&lang.ts
|
|
7
|
+
var x = ["aria-busy"], S = {
|
|
8
|
+
id: "tpl-test-email-title",
|
|
9
|
+
class: "tpl:mb-4 tpl:text-sm tpl:font-semibold tpl:text-[var(--tpl-text)]"
|
|
10
|
+
}, C = { class: "tpl:mb-3" }, w = { class: "tpl:mb-1.5 tpl:block tpl:text-sm tpl:font-medium tpl:text-[var(--tpl-text-muted)]" }, T = ["value"], E = ["disabled"], D = ["value"], O = {
|
|
11
|
+
key: 0,
|
|
12
|
+
role: "alert",
|
|
13
|
+
class: "tpl:mb-3 tpl:text-xs tpl:text-[var(--tpl-danger)]"
|
|
14
|
+
}, k = { class: "tpl:flex tpl:justify-end tpl:gap-2" }, A = ["disabled"], j = ["disabled"], M = {
|
|
15
|
+
key: 0,
|
|
16
|
+
class: "tpl:flex tpl:items-center tpl:gap-1.5"
|
|
17
|
+
}, N = { key: 1 }, P = /* @__PURE__ */ u({
|
|
18
|
+
__name: "TestEmailModal",
|
|
19
|
+
props: {
|
|
20
|
+
visible: { type: Boolean },
|
|
21
|
+
allowedEmails: {},
|
|
22
|
+
isSending: { type: Boolean },
|
|
23
|
+
error: {}
|
|
24
|
+
},
|
|
25
|
+
emits: ["send", "close"],
|
|
26
|
+
setup(u, { emit: P }) {
|
|
27
|
+
let F = u, I = P, { t: L } = e(), R = p("");
|
|
28
|
+
v(() => F.visible, (e) => {
|
|
29
|
+
e && (R.value = F.allowedEmails[0] ?? "");
|
|
30
|
+
});
|
|
31
|
+
function z() {
|
|
32
|
+
!R.value || F.isSending || I("send", R.value);
|
|
33
|
+
}
|
|
34
|
+
function B() {
|
|
35
|
+
F.isSending || I("close");
|
|
36
|
+
}
|
|
37
|
+
function V(e) {
|
|
38
|
+
e.key === "Enter" && !e.shiftKey && (e.preventDefault(), z()), e.key === "Escape" && B();
|
|
39
|
+
}
|
|
40
|
+
return (e, p) => (f(), i(n, {
|
|
41
|
+
visible: u.visible,
|
|
42
|
+
onClose: B,
|
|
43
|
+
onKeydown: V
|
|
44
|
+
}, {
|
|
45
|
+
default: y(() => [s("div", {
|
|
46
|
+
role: "dialog",
|
|
47
|
+
"aria-modal": "true",
|
|
48
|
+
"aria-busy": u.isSending,
|
|
49
|
+
"aria-labelledby": "tpl-test-email-title",
|
|
50
|
+
class: "tpl-scale-in tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-[var(--tpl-radius-lg)] tpl:p-5",
|
|
51
|
+
style: {
|
|
52
|
+
"background-color": "var(--tpl-bg-elevated)",
|
|
53
|
+
"box-shadow": "var(--tpl-shadow-xl)"
|
|
54
|
+
}
|
|
55
|
+
}, [
|
|
56
|
+
s("h3", S, h(g(L).testEmail.title), 1),
|
|
57
|
+
s("div", C, [s("label", w, h(g(L).testEmail.recipientLabel), 1), u.allowedEmails.length === 1 ? (f(), o("input", {
|
|
58
|
+
key: 0,
|
|
59
|
+
type: "text",
|
|
60
|
+
value: R.value,
|
|
61
|
+
disabled: "",
|
|
62
|
+
class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:opacity-70 tpl:shadow-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]"
|
|
63
|
+
}, null, 8, T)) : b((f(), o("select", {
|
|
64
|
+
key: 1,
|
|
65
|
+
"onUpdate:modelValue": p[0] ||= (e) => R.value = e,
|
|
66
|
+
class: "tpl:h-9 tpl:w-full tpl:rounded-md tpl:border tpl:px-3 tpl:py-1 tpl:text-sm tpl:shadow-xs tpl:outline-none tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:text-[var(--tpl-text)]",
|
|
67
|
+
disabled: u.isSending
|
|
68
|
+
}, [(f(!0), o(r, null, m(u.allowedEmails, (e) => (f(), o("option", {
|
|
69
|
+
key: e,
|
|
70
|
+
value: e
|
|
71
|
+
}, h(e), 9, D))), 128))], 8, E)), [[_, R.value]])]),
|
|
72
|
+
u.error ? (f(), o("p", O, h(u.error), 1)) : a("", !0),
|
|
73
|
+
s("div", k, [s("button", {
|
|
74
|
+
type: "button",
|
|
75
|
+
class: d(["tpl:cursor-pointer tpl:rounded-md tpl:border tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:border-[var(--tpl-border)] tpl:text-[var(--tpl-text)] tpl:bg-[var(--tpl-bg)]", { "tpl:cursor-not-allowed tpl:opacity-50": u.isSending }]),
|
|
76
|
+
disabled: u.isSending,
|
|
77
|
+
onClick: B
|
|
78
|
+
}, h(g(L).testEmail.cancel), 11, A), s("button", {
|
|
79
|
+
type: "button",
|
|
80
|
+
class: "tpl:cursor-pointer tpl:rounded-md tpl:px-3 tpl:py-1.5 tpl:text-sm tpl:font-medium tpl:shadow-xs tpl:transition-all tpl:duration-150 tpl:hover:opacity-90 tpl:disabled:cursor-not-allowed tpl:disabled:opacity-50 tpl:bg-[var(--tpl-primary)] tpl:text-[var(--tpl-bg)]",
|
|
81
|
+
disabled: !R.value || u.isSending,
|
|
82
|
+
onClick: z
|
|
83
|
+
}, [u.isSending ? (f(), o("span", M, [l(g(t), {
|
|
84
|
+
class: "tpl:animate-spin",
|
|
85
|
+
size: 12,
|
|
86
|
+
"stroke-width": 2
|
|
87
|
+
}), c(" " + h(g(L).testEmail.sending), 1)])) : (f(), o("span", N, h(g(L).testEmail.send), 1))], 8, j)])
|
|
88
|
+
], 8, x)]),
|
|
89
|
+
_: 1
|
|
90
|
+
}, 8, ["visible"]));
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
//#endregion
|
|
94
|
+
export { P as default };
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { b as e } from "./useEditorCore-Cc4RCwWq.js";
|
|
2
|
+
import { C as t, x as n } from "./keys-Dwa2PmdD.js";
|
|
3
|
+
import { t as r } from "./useI18n-DUirdXEX.js";
|
|
4
|
+
import { a as i, i as a, n as o, r as s, t as c } from "./RichTextEditorContent-CQqodi7p.js";
|
|
5
|
+
import { t as l } from "./loader-circle-BTQQxC3l.js";
|
|
6
|
+
import { t as u } from "./scan-line-7lZPfOdm.js";
|
|
7
|
+
import { Fragment as d, Teleport as f, createBlock as p, createCommentVNode as m, createElementBlock as h, createElementVNode as g, createTextVNode as _, createVNode as v, defineComponent as y, inject as b, isRef as x, normalizeClass as S, normalizeStyle as C, openBlock as w, toDisplayString as T, unref as E } from "vue";
|
|
8
|
+
//#region src/components/blocks/TitleEditor.vue?vue&type=script&setup=true&lang.ts
|
|
9
|
+
var D = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme", "aria-label"], k = ["aria-label", "title"], ee = ["aria-label", "title"], A = ["aria-label", "title"], j = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]"
|
|
12
|
+
}, M = ["aria-label", "title"], N = {
|
|
13
|
+
key: 1,
|
|
14
|
+
class: "tpl:flex tpl:items-center tpl:gap-2 tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text-dim)]"
|
|
15
|
+
}, P = /* @__PURE__ */ y({
|
|
16
|
+
__name: "TitleEditor",
|
|
17
|
+
props: {
|
|
18
|
+
block: {},
|
|
19
|
+
toolbarPosition: {}
|
|
20
|
+
},
|
|
21
|
+
emits: ["done"],
|
|
22
|
+
setup(y, { emit: P }) {
|
|
23
|
+
let F = y, I = P, L = b(n, null), R = b(t, null), { t: z } = r(), { editor: B, EditorContent: V, isLoading: H, initError: U, retry: W, showLinkDialog: G, linkUrl: K, linkDialogRef: q, mergeTagEnabled: J, openLinkDialog: Y, insertLink: X, removeLink: Z, closeLinkDialog: Q, handleLinkKeydown: te, handleAddMergeTag: $ } = e({
|
|
24
|
+
blockId: () => F.block.id,
|
|
25
|
+
blockContent: () => F.block.content,
|
|
26
|
+
onDone: () => I("done"),
|
|
27
|
+
editorName: "TitleEditor",
|
|
28
|
+
async loadExtensions({ mergeTags: e, syntax: t }) {
|
|
29
|
+
let [{ Editor: n, EditorContent: r }, { default: i }, { default: a }, { MergeTagNode: o, LogicMergeTagNode: s }] = await Promise.all([
|
|
30
|
+
import("./dist-DmpMJbmZ.js").then((e) => e.r),
|
|
31
|
+
import("./dist-DysAFIPy.js"),
|
|
32
|
+
import("./dist-Bu7veieH.js"),
|
|
33
|
+
import("./extensions-CKM99njP.js")
|
|
34
|
+
]);
|
|
35
|
+
return {
|
|
36
|
+
TiptapEditor: n,
|
|
37
|
+
EC: r,
|
|
38
|
+
extensions: [
|
|
39
|
+
i.configure({
|
|
40
|
+
heading: !1,
|
|
41
|
+
codeBlock: !1,
|
|
42
|
+
blockquote: !1,
|
|
43
|
+
horizontalRule: !1,
|
|
44
|
+
bulletList: !1,
|
|
45
|
+
orderedList: !1,
|
|
46
|
+
listItem: !1,
|
|
47
|
+
strike: !1
|
|
48
|
+
}),
|
|
49
|
+
a.configure({
|
|
50
|
+
openOnClick: !1,
|
|
51
|
+
HTMLAttributes: {
|
|
52
|
+
target: "_blank",
|
|
53
|
+
rel: "noopener noreferrer"
|
|
54
|
+
}
|
|
55
|
+
}),
|
|
56
|
+
o.configure({
|
|
57
|
+
mergeTags: e,
|
|
58
|
+
syntax: t
|
|
59
|
+
}),
|
|
60
|
+
s.configure({ syntax: t })
|
|
61
|
+
]
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return (e, t) => (w(), h("div", D, [
|
|
66
|
+
(w(), p(f, { to: "body" }, [g("div", {
|
|
67
|
+
"data-tpl-theme": E(R),
|
|
68
|
+
role: "toolbar",
|
|
69
|
+
"aria-label": E(z).titleEditor.toolbar,
|
|
70
|
+
class: "tpl tpl-text-toolbar tpl:fixed tpl:z-popover tpl:flex tpl:items-center tpl:gap-1 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-2 tpl:shadow-lg",
|
|
71
|
+
style: C({
|
|
72
|
+
...E(L),
|
|
73
|
+
top: `${y.toolbarPosition.top}px`,
|
|
74
|
+
left: `${y.toolbarPosition.left}px`,
|
|
75
|
+
transform: "translateY(-100%)"
|
|
76
|
+
})
|
|
77
|
+
}, [!E(H) && E(B) ? (w(), h(d, { key: 0 }, [
|
|
78
|
+
g("button", {
|
|
79
|
+
type: "button",
|
|
80
|
+
class: S(["tpl-text-toolbar-btn", { "tpl-text-toolbar-btn--active": E(B)?.isActive("bold") }]),
|
|
81
|
+
"aria-label": E(z).titleEditor.bold,
|
|
82
|
+
title: E(z).titleEditor.bold,
|
|
83
|
+
onClick: t[0] ||= (e) => E(B)?.chain().focus().toggleBold().run()
|
|
84
|
+
}, [v(E(i), {
|
|
85
|
+
size: 16,
|
|
86
|
+
"stroke-width": 2.5
|
|
87
|
+
})], 10, k),
|
|
88
|
+
g("button", {
|
|
89
|
+
type: "button",
|
|
90
|
+
class: S(["tpl-text-toolbar-btn", { "tpl-text-toolbar-btn--active": E(B)?.isActive("italic") }]),
|
|
91
|
+
"aria-label": E(z).titleEditor.italic,
|
|
92
|
+
title: E(z).titleEditor.italic,
|
|
93
|
+
onClick: t[1] ||= (e) => E(B)?.chain().focus().toggleItalic().run()
|
|
94
|
+
}, [v(E(a), {
|
|
95
|
+
size: 16,
|
|
96
|
+
"stroke-width": 2
|
|
97
|
+
})], 10, ee),
|
|
98
|
+
t[6] ||= g("span", {
|
|
99
|
+
class: "tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]",
|
|
100
|
+
"aria-hidden": "true"
|
|
101
|
+
}, null, -1),
|
|
102
|
+
g("button", {
|
|
103
|
+
type: "button",
|
|
104
|
+
class: S(["tpl-text-toolbar-btn", { "tpl-text-toolbar-btn--active": E(B)?.isActive("link") }]),
|
|
105
|
+
"aria-label": E(z).titleEditor.addLink,
|
|
106
|
+
title: E(z).titleEditor.addLink,
|
|
107
|
+
onClick: t[2] ||= (...e) => E(Y) && E(Y)(...e)
|
|
108
|
+
}, [v(E(s), {
|
|
109
|
+
size: 16,
|
|
110
|
+
"stroke-width": 2
|
|
111
|
+
})], 10, A),
|
|
112
|
+
E(J) ? (w(), h("span", j)) : m("", !0),
|
|
113
|
+
E(J) ? (w(), h("button", {
|
|
114
|
+
key: 1,
|
|
115
|
+
type: "button",
|
|
116
|
+
class: "tpl:flex tpl:h-8 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-2.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)] tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-bg-active)]",
|
|
117
|
+
"aria-label": E(z).mergeTag.add,
|
|
118
|
+
title: E(z).mergeTag.add,
|
|
119
|
+
onClick: t[3] ||= (...e) => E($) && E($)(...e)
|
|
120
|
+
}, [v(E(u), {
|
|
121
|
+
size: 16,
|
|
122
|
+
"stroke-width": 2
|
|
123
|
+
}), _(" " + T(E(z).mergeTag.add), 1)], 8, M)) : m("", !0)
|
|
124
|
+
], 64)) : (w(), h("div", N, [v(E(l), {
|
|
125
|
+
class: "tpl-spinner",
|
|
126
|
+
size: 14,
|
|
127
|
+
"stroke-width": 2
|
|
128
|
+
}), _(" " + T(E(z).errors.editorLoading), 1)]))], 12, O)])),
|
|
129
|
+
v(c, {
|
|
130
|
+
editor: E(B),
|
|
131
|
+
"editor-content": E(V),
|
|
132
|
+
"is-loading": E(H),
|
|
133
|
+
"init-error": E(U),
|
|
134
|
+
onRetry: E(W)
|
|
135
|
+
}, null, 8, [
|
|
136
|
+
"editor",
|
|
137
|
+
"editor-content",
|
|
138
|
+
"is-loading",
|
|
139
|
+
"init-error",
|
|
140
|
+
"onRetry"
|
|
141
|
+
]),
|
|
142
|
+
v(o, {
|
|
143
|
+
visible: E(G),
|
|
144
|
+
"is-editing-link": E(B)?.isActive("link") ?? !1,
|
|
145
|
+
"dialog-ref": E(q),
|
|
146
|
+
"onUpdate:dialogRef": t[4] ||= (e) => x(q) ? q.value = e : null,
|
|
147
|
+
"link-url": E(K),
|
|
148
|
+
"onUpdate:linkUrl": t[5] ||= (e) => x(K) ? K.value = e : null,
|
|
149
|
+
onClose: E(Q),
|
|
150
|
+
onInsert: E(X),
|
|
151
|
+
onRemove: E(Z),
|
|
152
|
+
onKeydown: E(te)
|
|
153
|
+
}, null, 8, [
|
|
154
|
+
"visible",
|
|
155
|
+
"is-editing-link",
|
|
156
|
+
"dialog-ref",
|
|
157
|
+
"link-url",
|
|
158
|
+
"onClose",
|
|
159
|
+
"onInsert",
|
|
160
|
+
"onRemove",
|
|
161
|
+
"onKeydown"
|
|
162
|
+
])
|
|
163
|
+
]));
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
//#endregion
|
|
167
|
+
export { P as default };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { w as e } from "./useEditorCore-Cc4RCwWq.js";
|
|
2
|
+
import { C as t } from "./keys-Dwa2PmdD.js";
|
|
3
|
+
import { Teleport as n, Transition as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, inject as d, openBlock as f, ref as p, renderSlot as m, unref as h, withCtx as g, withModifiers as _ } from "vue";
|
|
4
|
+
//#region src/cloud/components/TplModal.vue?vue&type=script&setup=true&lang.ts
|
|
5
|
+
var v = ["data-tpl-theme"], y = /* @__PURE__ */ u({
|
|
6
|
+
__name: "TplModal",
|
|
7
|
+
props: { visible: { type: Boolean } },
|
|
8
|
+
emits: ["close", "keydown"],
|
|
9
|
+
setup(u, { emit: y }) {
|
|
10
|
+
let b = u, x = y, S = p(null);
|
|
11
|
+
e(S, i(() => b.visible));
|
|
12
|
+
let C = d(t);
|
|
13
|
+
function w(e) {
|
|
14
|
+
e.key === "Escape" && x("close"), x("keydown", e);
|
|
15
|
+
}
|
|
16
|
+
return (e, t) => (f(), a(n, { to: "body" }, [l(r, {
|
|
17
|
+
"enter-active-class": "tpl:transition tpl:duration-150",
|
|
18
|
+
"enter-from-class": "tpl:opacity-0",
|
|
19
|
+
"enter-to-class": "tpl:opacity-100",
|
|
20
|
+
"leave-active-class": "tpl:transition tpl:duration-100",
|
|
21
|
+
"leave-from-class": "tpl:opacity-100",
|
|
22
|
+
"leave-to-class": "tpl:opacity-0"
|
|
23
|
+
}, {
|
|
24
|
+
default: g(() => [u.visible ? (f(), s("div", {
|
|
25
|
+
key: 0,
|
|
26
|
+
"data-tpl-theme": h(C),
|
|
27
|
+
class: "tpl tpl:fixed tpl:inset-0 tpl:z-modal tpl:flex tpl:items-center tpl:justify-center",
|
|
28
|
+
style: {
|
|
29
|
+
"background-color": "var(--tpl-overlay)",
|
|
30
|
+
"backdrop-filter": "blur(8px)",
|
|
31
|
+
"-webkit-backdrop-filter": "blur(8px)"
|
|
32
|
+
},
|
|
33
|
+
onClick: t[0] ||= _((e) => x("close"), ["self"]),
|
|
34
|
+
onKeydown: w
|
|
35
|
+
}, [c("div", {
|
|
36
|
+
ref_key: "dialogRef",
|
|
37
|
+
ref: S
|
|
38
|
+
}, [m(e.$slots, "default")], 512)], 40, v)) : o("", !0)]),
|
|
39
|
+
_: 3
|
|
40
|
+
})]));
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
//#endregion
|
|
44
|
+
export { y as t };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { computed as e, h as t, inject as n } from "vue";
|
|
2
|
+
//#region ../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/shared/src/utils/isEmptyString.js
|
|
3
|
+
var r = (e) => e === "", i = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim(), a = (e) => e.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), o = (e) => e.replace(/^([A-Z])|[\s-_]+(\w)/g, (e, t, n) => n ? n.toUpperCase() : t.toLowerCase()), s = (e) => {
|
|
4
|
+
let t = o(e);
|
|
5
|
+
return t.charAt(0).toUpperCase() + t.slice(1);
|
|
6
|
+
}, c = {
|
|
7
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8
|
+
width: 24,
|
|
9
|
+
height: 24,
|
|
10
|
+
viewBox: "0 0 24 24",
|
|
11
|
+
fill: "none",
|
|
12
|
+
stroke: "currentColor",
|
|
13
|
+
"stroke-width": 2,
|
|
14
|
+
"stroke-linecap": "round",
|
|
15
|
+
"stroke-linejoin": "round"
|
|
16
|
+
}, l = Symbol("lucide-icons");
|
|
17
|
+
function u() {
|
|
18
|
+
return n(l, {});
|
|
19
|
+
}
|
|
20
|
+
//#endregion
|
|
21
|
+
//#region ../../node_modules/.bun/@lucide+vue@1.7.0+cc44681ce9393ba4/node_modules/@lucide/vue/dist/esm/Icon.js
|
|
22
|
+
var d = ({ name: n, iconNode: o, absoluteStrokeWidth: l, "absolute-stroke-width": d, strokeWidth: f, "stroke-width": p, size: m, color: h, ...g }, { slots: _ }) => {
|
|
23
|
+
let { size: v, color: y, strokeWidth: b = 2, absoluteStrokeWidth: x = !1, class: S = "" } = u(), C = e(() => {
|
|
24
|
+
let e = r(l) || r(d) || l === !0 || d === !0 || x === !0, t = f || p || b || c["stroke-width"];
|
|
25
|
+
return e ? Number(t) * 24 / Number(m ?? v ?? c.width) : t;
|
|
26
|
+
});
|
|
27
|
+
return t("svg", {
|
|
28
|
+
...c,
|
|
29
|
+
...g,
|
|
30
|
+
width: m ?? v ?? c.width,
|
|
31
|
+
height: m ?? v ?? c.height,
|
|
32
|
+
stroke: h ?? y ?? c.stroke,
|
|
33
|
+
"stroke-width": C.value,
|
|
34
|
+
class: i("lucide", S, ...n ? [`lucide-${a(s(n))}-icon`, `lucide-${a(n)}`] : ["lucide-icon"])
|
|
35
|
+
}, [...o.map((e) => t(...e)), ..._.default ? [_.default()] : []]);
|
|
36
|
+
}, f = (e, n) => (r, { slots: i, attrs: a }) => t(d, {
|
|
37
|
+
...a,
|
|
38
|
+
...r,
|
|
39
|
+
iconNode: n,
|
|
40
|
+
name: e
|
|
41
|
+
}, i), p = (e, t) => {
|
|
42
|
+
let n = e.__vccOpts || e;
|
|
43
|
+
for (let [e, r] of t) n[e] = r;
|
|
44
|
+
return n;
|
|
45
|
+
};
|
|
46
|
+
//#endregion
|
|
47
|
+
export { f as n, p as t };
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { D as e, E as t, M as n, O as r, k as i } from "./useEditorCore-Cc4RCwWq.js";
|
|
2
|
+
import { n as a } from "./_plugin-vue_export-helper-B1-bu7yR.js";
|
|
3
|
+
var o = a("columns-3", [
|
|
4
|
+
["rect", {
|
|
5
|
+
width: "18",
|
|
6
|
+
height: "18",
|
|
7
|
+
x: "3",
|
|
8
|
+
y: "3",
|
|
9
|
+
rx: "2",
|
|
10
|
+
key: "afitv7"
|
|
11
|
+
}],
|
|
12
|
+
["path", {
|
|
13
|
+
d: "M9 3v18",
|
|
14
|
+
key: "fh3hqa"
|
|
15
|
+
}],
|
|
16
|
+
["path", {
|
|
17
|
+
d: "M15 3v18",
|
|
18
|
+
key: "14nvp0"
|
|
19
|
+
}]
|
|
20
|
+
]), s = a("heading", [
|
|
21
|
+
["path", {
|
|
22
|
+
d: "M6 12h12",
|
|
23
|
+
key: "8npq4p"
|
|
24
|
+
}],
|
|
25
|
+
["path", {
|
|
26
|
+
d: "M6 20V4",
|
|
27
|
+
key: "1w1bmo"
|
|
28
|
+
}],
|
|
29
|
+
["path", {
|
|
30
|
+
d: "M18 20V4",
|
|
31
|
+
key: "o2hl4u"
|
|
32
|
+
}]
|
|
33
|
+
]), c = a("minus", [["path", {
|
|
34
|
+
d: "M5 12h14",
|
|
35
|
+
key: "1ays0h"
|
|
36
|
+
}]]), l = a("move-vertical", [
|
|
37
|
+
["path", {
|
|
38
|
+
d: "M12 2v20",
|
|
39
|
+
key: "t6zp3m"
|
|
40
|
+
}],
|
|
41
|
+
["path", {
|
|
42
|
+
d: "m8 18 4 4 4-4",
|
|
43
|
+
key: "bh5tu3"
|
|
44
|
+
}],
|
|
45
|
+
["path", {
|
|
46
|
+
d: "m8 6 4-4 4 4",
|
|
47
|
+
key: "ybng9g"
|
|
48
|
+
}]
|
|
49
|
+
]), u = a("package", [
|
|
50
|
+
["path", {
|
|
51
|
+
d: "M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",
|
|
52
|
+
key: "1a0edw"
|
|
53
|
+
}],
|
|
54
|
+
["path", {
|
|
55
|
+
d: "M12 22V12",
|
|
56
|
+
key: "d0xqtd"
|
|
57
|
+
}],
|
|
58
|
+
["polyline", {
|
|
59
|
+
points: "3.29 7 12 12 20.71 7",
|
|
60
|
+
key: "ousv84"
|
|
61
|
+
}],
|
|
62
|
+
["path", {
|
|
63
|
+
d: "m7.5 4.27 9 5.15",
|
|
64
|
+
key: "1c824w"
|
|
65
|
+
}]
|
|
66
|
+
]), d = a("pilcrow", [
|
|
67
|
+
["path", {
|
|
68
|
+
d: "M13 4v16",
|
|
69
|
+
key: "8vvj80"
|
|
70
|
+
}],
|
|
71
|
+
["path", {
|
|
72
|
+
d: "M17 4v16",
|
|
73
|
+
key: "7dpous"
|
|
74
|
+
}],
|
|
75
|
+
["path", {
|
|
76
|
+
d: "M19 4H9.5a4.5 4.5 0 0 0 0 9H13",
|
|
77
|
+
key: "sh4n9v"
|
|
78
|
+
}]
|
|
79
|
+
]), f = a("play", [["path", {
|
|
80
|
+
d: "M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",
|
|
81
|
+
key: "10ikf1"
|
|
82
|
+
}]]), p = {
|
|
83
|
+
section: o,
|
|
84
|
+
title: s,
|
|
85
|
+
paragraph: d,
|
|
86
|
+
image: i,
|
|
87
|
+
button: a("rectangle-horizontal", [["rect", {
|
|
88
|
+
width: "20",
|
|
89
|
+
height: "12",
|
|
90
|
+
x: "2",
|
|
91
|
+
y: "6",
|
|
92
|
+
rx: "2",
|
|
93
|
+
key: "9lu3g6"
|
|
94
|
+
}]]),
|
|
95
|
+
divider: c,
|
|
96
|
+
video: f,
|
|
97
|
+
social: e,
|
|
98
|
+
menu: r,
|
|
99
|
+
table: t,
|
|
100
|
+
spacer: l,
|
|
101
|
+
countdown: a("timer", [
|
|
102
|
+
["line", {
|
|
103
|
+
x1: "10",
|
|
104
|
+
x2: "14",
|
|
105
|
+
y1: "2",
|
|
106
|
+
y2: "2",
|
|
107
|
+
key: "14vaq8"
|
|
108
|
+
}],
|
|
109
|
+
["line", {
|
|
110
|
+
x1: "12",
|
|
111
|
+
x2: "15",
|
|
112
|
+
y1: "14",
|
|
113
|
+
y2: "11",
|
|
114
|
+
key: "17fdiu"
|
|
115
|
+
}],
|
|
116
|
+
["circle", {
|
|
117
|
+
cx: "12",
|
|
118
|
+
cy: "14",
|
|
119
|
+
r: "8",
|
|
120
|
+
key: "1e1u0o"
|
|
121
|
+
}]
|
|
122
|
+
]),
|
|
123
|
+
html: n
|
|
124
|
+
};
|
|
125
|
+
//#endregion
|
|
126
|
+
export { u as n, c as r, p as t };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["chunks/dist-BKSzrf0L.js","chunks/tiptap-Cya4P9CN.js","chunks/icons-vmLJTaJk.js","chunks/draggable-ClUwYCFL.js","chunks/rolldown-runtime-BakkzWXw.js","chunks/dist-B5JI9nIg.js","chunks/dist-0UheN8rK.js","chunks/dist-55mmbGQ9.js","chunks/dist-BL8c5gYQ.js","chunks/dist-DxZbPJYt.js","chunks/dist-B93vLKhU.js","chunks/dist-BDt3FJvj.js","chunks/dist-BJRuFHmi.js","chunks/dist-B31mxKyP.js","chunks/dist-CYThWMP5.js","chunks/extensions-ea_ewKUl.js","chunks/useMergeTag-DVOz1v9p.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{E as e,F as t,G as n,K as r,W as i,c as a,d as o,f as s,g as c,h as l,m as u,p as d,q as f,s as p,u as m,w as h,y as g}from"./draggable-ClUwYCFL.js";import{_,a as v,c as y,d as b,f as x,g as S,h as C,i as ee,l as w,m as T,n as te,o as ne,p as re,r as E,s as D,u as O}from"./icons-vmLJTaJk.js";import{c as k,d as A,i as j,n as M,u as N}from"./useMergeTag-DVOz1v9p.js";import{n as P,r as F,t as I}from"./useEditorCore-CwuxQuvh.js";import{a as ie,i as ae,r as L}from"./styleConstants-CNejCb-L.js";import{n as R,t as z}from"./RichTextEditorContent-BUD9veXd.js";var B={class:`tpl:relative`},V=[`aria-label`,`title`],H={key:0,class:`tpl-emoji-picker tpl:absolute tpl:top-full tpl:left-0 tpl:z-10 tpl:mt-2 tpl:w-72 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-2 tpl:shadow-lg`},U={class:`tpl:mb-1.5 tpl:text-[10px] tpl:font-medium tpl:tracking-wide tpl:text-[var(--tpl-text-muted)] tpl:uppercase`},W={class:`tpl:grid tpl:grid-cols-10 tpl:gap-0.5`},G=[`onClick`],K=c({__name:`EmojiPickerDropdown`,emits:[`insert`],setup(t,{emit:r}){let a=r,{categories:o,isOpen:c,toggle:u}=P(),{t:g}=M();return(t,r)=>(h(),d(`div`,B,[m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":i(c)}]),"aria-label":i(g).paragraphEditor.insertEmoji,title:i(g).paragraphEditor.insertEmoji,onClick:r[0]||=(...e)=>i(u)&&i(u)(...e)},[l(i(w),{size:16,"stroke-width":2})],10,V),i(c)?(h(),d(`div`,H,[(h(!0),d(p,null,e(i(o),t=>(h(),d(`div`,{key:t.key,class:`tpl:mb-2 tpl:last:mb-0`},[m(`div`,U,f(i(g).emoji[t.key]),1),m(`div`,W,[(h(!0),d(p,null,e(t.emojis,e=>(h(),d(`button`,{key:e,type:`button`,class:`tpl:flex tpl:size-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:border-none tpl:bg-transparent tpl:text-base tpl:transition-all tpl:duration-100 tpl:hover:scale-125 tpl:hover:bg-[var(--tpl-bg-active)]`,onClick:t=>a(`insert`,e)},f(e),9,G))),128))])]))),128))])):s(``,!0)]))}}),q=[`data-tpl-theme`,`aria-label`],J={class:`tpl:flex tpl:items-center tpl:gap-1`},oe=[`value`,`aria-label`,`title`],se={value:``},ce=[`value`],le=[`value`,`aria-label`,`title`],ue={value:``},Y=[`value`],de={class:`tpl:relative`},fe=[`value`,`aria-label`,`title`],pe={class:`tpl:relative`},me=[`value`,`aria-label`,`title`],he=[`aria-label`,`title`],ge=[`aria-label`,`title`],_e=[`aria-label`,`title`],ve=[`aria-label`,`title`],ye=[`aria-label`,`title`],be=[`aria-label`,`title`],xe=[`aria-label`,`title`],Se={class:`tpl:flex tpl:items-center tpl:gap-1`},Ce=[`aria-label`,`title`],we=[`aria-label`,`title`],Te=[`aria-label`,`title`],Ee=[`aria-label`,`title`],De=[`aria-label`,`title`],Oe=[`value`,`title`],ke=[`value`],Ae=[`value`,`title`],je=[`value`],Me=[`aria-label`,`title`],Ne={key:0,class:`tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`},Pe=[`aria-label`,`title`],Fe={key:1,class:`tpl:flex tpl:items-center tpl:gap-2 tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text-dim)]`},X=c({__name:`ParagraphToolbar`,props:{editor:{},toolbarPosition:{},isLoading:{type:Boolean},mergeTagEnabled:{type:Boolean}},emits:[`open-link-dialog`,`add-merge-tag`],setup(t,{emit:c}){let w=t,P=c,F=g(k,null),I=g(N,null),R=A(j,`ParagraphToolbar`),{t:z}=M(),B=R.fonts;function V(e){w.editor?.chain().focus().insertContent(e).run()}function H(){return w.editor?.getAttributes(`textStyle`).fontFamily||``}function U(){return w.editor?.getAttributes(`textStyle`).fontSize||``}function W(){return w.editor?.getAttributes(`textStyle`).color||``}function G(e){e?w.editor?.chain().focus().setFontFamily(e).run():w.editor?.chain().focus().unsetFontFamily().run()}function X(e){e?w.editor?.chain().focus().setFontSize(e).run():w.editor?.chain().focus().unsetFontSize().run()}function Z(e){e?w.editor?.chain().focus().setColor(e).run():w.editor?.chain().focus().unsetColor().run()}function Q(){return w.editor?.getAttributes(`paragraph`).lineHeight||``}function Ie(e){e?w.editor?.chain().focus().setLineHeight(e).run():w.editor?.chain().focus().unsetLineHeight().run()}function Le(){return w.editor?.getAttributes(`textStyle`).letterSpacing||``}function Re(e){e&&e!==`normal`?w.editor?.chain().focus().setLetterSpacing(e).run():w.editor?.chain().focus().unsetLetterSpacing().run()}function $(){return w.editor?.getAttributes(`highlight`).color||``}function ze(e){e?w.editor?.chain().focus().setHighlight({color:e}).run():w.editor?.chain().focus().unsetHighlight().run()}return(c,g)=>(h(),o(a,{to:`body`},[m(`div`,{"data-tpl-theme":i(I),role:`toolbar`,"aria-label":i(z).paragraphEditor.toolbar,class:`tpl tpl-text-toolbar tpl:fixed tpl:z-popover tpl:flex tpl:gap-1 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-2 tpl:shadow-lg`,style:r({...i(F),top:`${t.toolbarPosition.top}px`,left:`${t.toolbarPosition.left}px`,transform:`translateY(-100%)`,flexDirection:`column`})},[!t.isLoading&&t.editor?(h(),d(p,{key:0},[m(`div`,J,[m(`select`,{class:`tpl:h-8 tpl:w-32 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none`,value:H(),"aria-label":i(z).paragraphEditor.fontFamily,title:i(z).paragraphEditor.fontFamily,onChange:g[0]||=e=>G(e.target.value)},[m(`option`,se,f(i(z).paragraphEditor.defaultFont),1),(h(!0),d(p,null,e(i(B),e=>(h(),d(`option`,{key:e.value,value:e.value},f(e.label),9,ce))),128))],40,oe),m(`select`,{class:`tpl:h-8 tpl:w-20 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none`,value:U(),"aria-label":i(z).paragraphEditor.fontSize,title:i(z).paragraphEditor.fontSize,onChange:g[1]||=e=>X(e.target.value)},[m(`option`,ue,f(i(z).paragraphEditor.defaultSize),1),(h(!0),d(p,null,e(i(L),e=>(h(),d(`option`,{key:e,value:e},f(e),9,Y))),128))],40,le),g[20]||=m(`span`,{class:`tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`div`,de,[m(`input`,{type:`color`,class:`tpl:size-8 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-1`,value:W()||i(`#000000`),"aria-label":i(z).paragraphEditor.textColor,title:i(z).paragraphEditor.textColor,onInput:g[2]||=e=>Z(e.target.value)},null,40,fe)]),m(`div`,pe,[m(`input`,{type:`color`,class:`tpl:size-8 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:p-1`,style:r({backgroundColor:$()||`var(--tpl-bg)`}),value:$()||i(`#ffff00`),"aria-label":i(z).paragraphEditor.highlightColor,title:i(z).paragraphEditor.highlightColor,onInput:g[3]||=e=>ze(e.target.value)},null,44,me)]),g[21]||=m(`span`,{class:`tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`bold`)}]),"aria-label":i(z).paragraphEditor.bold,title:i(z).paragraphEditor.bold,onClick:g[4]||=e=>t.editor?.chain().focus().toggleBold().run()},[l(i(_),{size:16,"stroke-width":2.5})],10,he),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`italic`)}]),"aria-label":i(z).paragraphEditor.italic,title:i(z).paragraphEditor.italic,onClick:g[5]||=e=>t.editor?.chain().focus().toggleItalic().run()},[l(i(S),{size:16,"stroke-width":2})],10,ge),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`underline`)}]),"aria-label":i(z).paragraphEditor.underline,title:i(z).paragraphEditor.underline,onClick:g[6]||=e=>t.editor?.chain().focus().toggleUnderline().run()},[l(i(te),{size:16,"stroke-width":2})],10,_e),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`strike`)}]),"aria-label":i(z).paragraphEditor.strikethrough,title:i(z).paragraphEditor.strikethrough,onClick:g[7]||=e=>t.editor?.chain().focus().toggleStrike().run()},[l(i(y),{size:16,"stroke-width":2})],10,ve),g[22]||=m(`span`,{class:`tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`subscript`)}]),"aria-label":i(z).paragraphEditor.subscript,title:i(z).paragraphEditor.subscript,onClick:g[8]||=e=>t.editor?.chain().focus().toggleSubscript().run()},[l(i(D),{size:16,"stroke-width":2})],10,ye),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`superscript`)}]),"aria-label":i(z).paragraphEditor.superscript,title:i(z).paragraphEditor.superscript,onClick:g[9]||=e=>t.editor?.chain().focus().toggleSuperscript().run()},[l(i(ne),{size:16,"stroke-width":2})],10,be),g[23]||=m(`span`,{class:`tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`link`)}]),"aria-label":i(z).paragraphEditor.addLink,title:i(z).paragraphEditor.addLink,onClick:g[10]||=e=>P(`open-link-dialog`)},[l(i(C),{size:16,"stroke-width":2})],10,xe)]),m(`div`,Se,[m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`bulletList`)}]),"aria-label":i(z).paragraphEditor.bulletList,title:i(z).paragraphEditor.bulletList,onClick:g[11]||=e=>t.editor?.chain().focus().toggleBulletList().run()},[l(i(re),{size:16,"stroke-width":2})],10,Ce),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive(`orderedList`)}]),"aria-label":i(z).paragraphEditor.numberedList,title:i(z).paragraphEditor.numberedList,onClick:g[12]||=e=>t.editor?.chain().focus().toggleOrderedList().run()},[l(i(T),{size:16,"stroke-width":2})],10,we),g[26]||=m(`span`,{class:`tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive({textAlign:`left`})}]),"aria-label":i(z).paragraphEditor.alignLeft,title:i(z).paragraphEditor.alignLeft,onClick:g[13]||=e=>t.editor?.chain().focus().setTextAlign(`left`).run()},[l(i(E),{size:16,"stroke-width":2})],10,Te),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive({textAlign:`center`})}]),"aria-label":i(z).paragraphEditor.alignCenter,title:i(z).paragraphEditor.alignCenter,onClick:g[14]||=e=>t.editor?.chain().focus().setTextAlign(`center`).run()},[l(i(v),{size:16,"stroke-width":2})],10,Ee),m(`button`,{type:`button`,class:n([`tpl-text-toolbar-btn`,{"tpl-text-toolbar-btn--active":t.editor?.isActive({textAlign:`right`})}]),"aria-label":i(z).paragraphEditor.alignRight,title:i(z).paragraphEditor.alignRight,onClick:g[15]||=e=>t.editor?.chain().focus().setTextAlign(`right`).run()},[l(i(ee),{size:16,"stroke-width":2})],10,De),g[27]||=m(`span`,{class:`tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`select`,{class:`tpl:h-8 tpl:w-16 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-1 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none`,value:Q(),title:i(z).paragraphEditor.lineHeight,onChange:g[16]||=e=>Ie(e.target.value)},[g[24]||=m(`option`,{value:``},`LH`,-1),(h(!0),d(p,null,e(i(ie),e=>(h(),d(`option`,{key:e,value:e},f(e),9,ke))),128))],40,Oe),m(`select`,{class:`tpl:h-8 tpl:w-20 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-1 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none`,value:Le(),title:i(z).paragraphEditor.letterSpacing,onChange:g[17]||=e=>Re(e.target.value)},[g[25]||=m(`option`,{value:``},`LS`,-1),(h(!0),d(p,null,e(i(ae),e=>(h(),d(`option`,{key:e.value,value:e.value},f(e.label),9,je))),128))],40,Ae),g[28]||=m(`span`,{class:`tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),m(`button`,{type:`button`,class:`tpl-text-toolbar-btn`,"aria-label":i(z).paragraphEditor.clearFormatting,title:i(z).paragraphEditor.clearFormatting,onClick:g[18]||=e=>t.editor?.chain().focus().clearNodes().unsetAllMarks().run()},[l(i(b),{size:16,"stroke-width":2})],8,Me),g[29]||=m(`span`,{class:`tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]`,"aria-hidden":`true`},null,-1),l(K,{onInsert:V}),t.mergeTagEnabled?(h(),d(`span`,Ne)):s(``,!0),t.mergeTagEnabled?(h(),d(`button`,{key:1,type:`button`,class:`tpl:flex tpl:h-8 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-2.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)] tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-bg-active)]`,"aria-label":i(z).mergeTag.add,title:i(z).mergeTag.add,onClick:g[19]||=e=>P(`add-merge-tag`)},[l(i(O),{size:16,"stroke-width":2}),u(` `+f(i(z).mergeTag.add),1)],8,Pe)):s(``,!0)])],64)):(h(),d(`div`,Fe,[l(i(x),{class:`tpl-spinner`,size:14,"stroke-width":2}),u(` `+f(i(z).errors.editorLoading),1)]))],12,q)]))}}),Z={class:`tpl-text-editor-wrapper tpl:relative`},Q=c({__name:`ParagraphEditor`,props:{block:{},toolbarPosition:{}},emits:[`done`],setup(e,{emit:n}){let r=e,a=n,{editor:o,EditorContent:s,isLoading:c,initError:u,retry:f,showLinkDialog:p,linkUrl:m,linkDialogRef:g,mergeTagEnabled:_,openLinkDialog:v,insertLink:y,removeLink:b,closeLinkDialog:x,handleLinkKeydown:S,handleAddMergeTag:C}=I({blockId:()=>r.block.id,blockContent:()=>r.block.content,onDone:()=>a(`done`),editorName:`ParagraphEditor`,async loadExtensions({mergeTags:e,syntax:t}){let[{Editor:n,EditorContent:r},{default:i},{default:a},{default:o},{default:s},{default:c},{default:l},{TextStyle:u},{default:d},{default:f},{default:p},{MergeTagNode:m,LogicMergeTagNode:h,FontSize:g,LineHeight:_,LetterSpacing:v}]=await Promise.all([F(()=>import(`./dist-BKSzrf0L.js`),__vite__mapDeps([0,1,2,3,4])),F(()=>import(`./dist-B5JI9nIg.js`),__vite__mapDeps([5,1,2,3,4])),F(()=>import(`./dist-0UheN8rK.js`),__vite__mapDeps([6,1,2,3,4])),F(()=>import(`./dist-55mmbGQ9.js`),__vite__mapDeps([7,1,2,3,4])),F(()=>import(`./dist-BL8c5gYQ.js`),__vite__mapDeps([8,1,2,3,4])),F(()=>import(`./dist-DxZbPJYt.js`),__vite__mapDeps([9,1,2,3,4])),F(()=>import(`./dist-B93vLKhU.js`),__vite__mapDeps([10,1,2,3,4])),F(()=>import(`./dist-BDt3FJvj.js`),__vite__mapDeps([11,1,2,3,4])),F(()=>import(`./dist-BJRuFHmi.js`),__vite__mapDeps([12,1,2,3,4])),F(()=>import(`./dist-B31mxKyP.js`),__vite__mapDeps([13,1,2,3,4])),F(()=>import(`./dist-CYThWMP5.js`),__vite__mapDeps([14,1,2,3,4])),F(()=>import(`./extensions-ea_ewKUl.js`),__vite__mapDeps([15,2,3,4,1,16]))]);return{TiptapEditor:n,EC:r,extensions:[i.configure({heading:!1,codeBlock:!1,blockquote:!1,horizontalRule:!1}),o,s,c,a.configure({openOnClick:!1,HTMLAttributes:{target:`_blank`,rel:`noopener noreferrer`}}),l.configure({types:[`paragraph`]}),u,d,f,p.configure({multicolor:!0}),g,_,v,m.configure({mergeTags:e,syntax:t}),h.configure({syntax:t})]}}});return(n,r)=>(h(),d(`div`,Z,[l(X,{editor:i(o),"toolbar-position":e.toolbarPosition,"is-loading":i(c),"merge-tag-enabled":i(_),onOpenLinkDialog:i(v),onAddMergeTag:i(C)},null,8,[`editor`,`toolbar-position`,`is-loading`,`merge-tag-enabled`,`onOpenLinkDialog`,`onAddMergeTag`]),l(z,{editor:i(o),"editor-content":i(s),"is-loading":i(c),"init-error":i(u),onRetry:i(f)},null,8,[`editor`,`editor-content`,`is-loading`,`init-error`,`onRetry`]),l(R,{visible:i(p),"is-editing-link":i(o)?.isActive(`link`)??!1,"dialog-ref":i(g),"onUpdate:dialogRef":r[0]||=e=>t(g)?g.value=e:null,"link-url":i(m),"onUpdate:linkUrl":r[1]||=e=>t(m)?m.value=e:null,onClose:i(x),onInsert:i(y),onRemove:i(b),onKeydown:i(S)},null,8,[`visible`,`is-editing-link`,`dialog-ref`,`link-url`,`onClose`,`onInsert`,`onRemove`,`onKeydown`])]))}});export{Q as default};
|
|
3
|
+
//# sourceMappingURL=ParagraphEditor-CCtWbGDv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"mappings":"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","names":[],"ignoreList":[],"sources":["../../../src/components/blocks/EmojiPickerDropdown.vue","../../../src/components/blocks/ParagraphToolbar.vue","../../../src/components/blocks/ParagraphEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useEmoji, useI18n } from \"../../composables\";\nimport { Smile } from \"@lucide/vue\";\n\nconst emit = defineEmits<{\n (e: \"insert\", emoji: string): void;\n}>();\n\nconst {\n categories: emojiCategories,\n isOpen: showEmojiPicker,\n toggle: toggleEmojiPicker,\n} = useEmoji();\n\nconst { t } = useI18n();\n</script>\n\n<template>\n <div class=\"tpl:relative\">\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': showEmojiPicker,\n }\"\n :aria-label=\"t.paragraphEditor.insertEmoji\"\n :title=\"t.paragraphEditor.insertEmoji\"\n @click=\"toggleEmojiPicker\"\n >\n <Smile :size=\"16\" :stroke-width=\"2\" />\n </button>\n <div\n v-if=\"showEmojiPicker\"\n class=\"tpl-emoji-picker tpl:absolute tpl:top-full tpl:left-0 tpl:z-10 tpl:mt-2 tpl:w-72 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-2 tpl:shadow-lg\"\n >\n <div\n v-for=\"category in emojiCategories\"\n :key=\"category.key\"\n class=\"tpl:mb-2 tpl:last:mb-0\"\n >\n <div\n class=\"tpl:mb-1.5 tpl:text-[10px] tpl:font-medium tpl:tracking-wide tpl:text-[var(--tpl-text-muted)] tpl:uppercase\"\n >\n {{ t.emoji[category.key] }}\n </div>\n <div class=\"tpl:grid tpl:grid-cols-10 tpl:gap-0.5\">\n <button\n v-for=\"emoji in category.emojis\"\n :key=\"emoji\"\n type=\"button\"\n class=\"tpl:flex tpl:size-6 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:border-none tpl:bg-transparent tpl:text-base tpl:transition-all tpl:duration-100 tpl:hover:scale-125 tpl:hover:bg-[var(--tpl-bg-active)]\"\n @click=\"emit('insert', emoji)\"\n >\n {{ emoji }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport EmojiPickerDropdown from \"./EmojiPickerDropdown.vue\";\nimport { useI18n } from \"../../composables\";\nimport type { Editor } from \"@tiptap/core\";\nimport {\n AlignCenter,\n AlignLeft,\n AlignRight,\n Bold,\n Italic,\n Link,\n List,\n ListOrdered,\n LoaderCircle,\n RemoveFormatting,\n ScanLine,\n Strikethrough,\n Subscript,\n Superscript,\n Underline,\n} from \"@lucide/vue\";\nimport { inject } from \"vue\";\nimport {\n THEME_STYLES_KEY,\n UI_THEME_KEY,\n FONTS_MANAGER_KEY,\n requireInject,\n} from \"../../keys\";\nimport {\n DEFAULT_TEXT_COLOR,\n DEFAULT_HIGHLIGHT_COLOR,\n FONT_SIZE_OPTIONS,\n LINE_HEIGHT_OPTIONS,\n LETTER_SPACING_OPTIONS,\n} from \"../../constants/styleConstants\";\n\nconst props = defineProps<{\n editor: Editor | null;\n toolbarPosition: { top: number; left: number };\n isLoading: boolean;\n mergeTagEnabled: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"open-link-dialog\"): void;\n (e: \"add-merge-tag\"): void;\n}>();\n\nconst themeStyles = inject(THEME_STYLES_KEY, null);\nconst tplUiTheme = inject(UI_THEME_KEY, null);\nconst fontsManager = requireInject(FONTS_MANAGER_KEY, \"ParagraphToolbar\");\n\nconst { t } = useI18n();\n\nconst fontFamilies = fontsManager.fonts;\n\nfunction insertEmoji(emoji: string): void {\n props.editor?.chain().focus().insertContent(emoji).run();\n}\n\nfunction getCurrentFontFamily(): string {\n return (props.editor?.getAttributes(\"textStyle\").fontFamily as string) || \"\";\n}\n\nfunction getCurrentFontSize(): string {\n return (props.editor?.getAttributes(\"textStyle\").fontSize as string) || \"\";\n}\n\nfunction getCurrentColor(): string {\n return (props.editor?.getAttributes(\"textStyle\").color as string) || \"\";\n}\n\nfunction setFontFamily(family: string): void {\n if (family) {\n props.editor?.chain().focus().setFontFamily(family).run();\n } else {\n props.editor?.chain().focus().unsetFontFamily().run();\n }\n}\n\nfunction setFontSize(size: string): void {\n if (size) {\n props.editor?.chain().focus().setFontSize(size).run();\n } else {\n props.editor?.chain().focus().unsetFontSize().run();\n }\n}\n\nfunction setColor(color: string): void {\n if (color) {\n props.editor?.chain().focus().setColor(color).run();\n } else {\n props.editor?.chain().focus().unsetColor().run();\n }\n}\n\nfunction getCurrentLineHeight(): string {\n return (props.editor?.getAttributes(\"paragraph\").lineHeight as string) || \"\";\n}\n\nfunction setLineHeight(value: string): void {\n if (value) {\n props.editor?.chain().focus().setLineHeight(value).run();\n } else {\n props.editor?.chain().focus().unsetLineHeight().run();\n }\n}\n\nfunction getCurrentLetterSpacing(): string {\n return (\n (props.editor?.getAttributes(\"textStyle\").letterSpacing as string) || \"\"\n );\n}\n\nfunction setLetterSpacing(value: string): void {\n if (value && value !== \"normal\") {\n props.editor?.chain().focus().setLetterSpacing(value).run();\n } else {\n props.editor?.chain().focus().unsetLetterSpacing().run();\n }\n}\n\nfunction getCurrentHighlight(): string {\n return (props.editor?.getAttributes(\"highlight\").color as string) || \"\";\n}\n\nfunction setHighlight(color: string): void {\n if (color) {\n props.editor?.chain().focus().setHighlight({ color }).run();\n } else {\n props.editor?.chain().focus().unsetHighlight().run();\n }\n}\n</script>\n\n<template>\n <Teleport to=\"body\">\n <div\n :data-tpl-theme=\"tplUiTheme\"\n role=\"toolbar\"\n :aria-label=\"t.paragraphEditor.toolbar\"\n class=\"tpl tpl-text-toolbar tpl:fixed tpl:z-popover tpl:flex tpl:gap-1 tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-2 tpl:shadow-lg\"\n :style=\"{\n ...themeStyles,\n top: `${toolbarPosition.top}px`,\n left: `${toolbarPosition.left}px`,\n transform: 'translateY(-100%)',\n flexDirection: 'column',\n }\"\n >\n <template v-if=\"!isLoading && editor\">\n <!-- Row 1: Font family, Font size, Text color, Bold/Italic/Underline/Strikethrough -->\n <div class=\"tpl:flex tpl:items-center tpl:gap-1\">\n <select\n class=\"tpl:h-8 tpl:w-32 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none\"\n :value=\"getCurrentFontFamily()\"\n :aria-label=\"t.paragraphEditor.fontFamily\"\n :title=\"t.paragraphEditor.fontFamily\"\n @change=\"setFontFamily(($event.target as HTMLSelectElement).value)\"\n >\n <option value=\"\">{{ t.paragraphEditor.defaultFont }}</option>\n <option\n v-for=\"font in fontFamilies\"\n :key=\"font.value\"\n :value=\"font.value\"\n >\n {{ font.label }}\n </option>\n </select>\n <select\n class=\"tpl:h-8 tpl:w-20 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none\"\n :value=\"getCurrentFontSize()\"\n :aria-label=\"t.paragraphEditor.fontSize\"\n :title=\"t.paragraphEditor.fontSize\"\n @change=\"setFontSize(($event.target as HTMLSelectElement).value)\"\n >\n <option value=\"\">{{ t.paragraphEditor.defaultSize }}</option>\n <option v-for=\"size in FONT_SIZE_OPTIONS\" :key=\"size\" :value=\"size\">\n {{ size }}\n </option>\n </select>\n <span\n class=\"tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <div class=\"tpl:relative\">\n <input\n type=\"color\"\n class=\"tpl:size-8 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:p-1\"\n :value=\"getCurrentColor() || DEFAULT_TEXT_COLOR\"\n :aria-label=\"t.paragraphEditor.textColor\"\n :title=\"t.paragraphEditor.textColor\"\n @input=\"setColor(($event.target as HTMLInputElement).value)\"\n />\n </div>\n <div class=\"tpl:relative\">\n <input\n type=\"color\"\n class=\"tpl:size-8 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:p-1\"\n :style=\"{\n backgroundColor: getCurrentHighlight() || 'var(--tpl-bg)',\n }\"\n :value=\"getCurrentHighlight() || DEFAULT_HIGHLIGHT_COLOR\"\n :aria-label=\"t.paragraphEditor.highlightColor\"\n :title=\"t.paragraphEditor.highlightColor\"\n @input=\"setHighlight(($event.target as HTMLInputElement).value)\"\n />\n </div>\n <span\n class=\"tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <!-- Bold/Italic/Underline/Strikethrough -->\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('bold'),\n }\"\n :aria-label=\"t.paragraphEditor.bold\"\n :title=\"t.paragraphEditor.bold\"\n @click=\"editor?.chain().focus().toggleBold().run()\"\n >\n <Bold :size=\"16\" :stroke-width=\"2.5\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('italic'),\n }\"\n :aria-label=\"t.paragraphEditor.italic\"\n :title=\"t.paragraphEditor.italic\"\n @click=\"editor?.chain().focus().toggleItalic().run()\"\n >\n <Italic :size=\"16\" :stroke-width=\"2\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('underline'),\n }\"\n :aria-label=\"t.paragraphEditor.underline\"\n :title=\"t.paragraphEditor.underline\"\n @click=\"editor?.chain().focus().toggleUnderline().run()\"\n >\n <Underline :size=\"16\" :stroke-width=\"2\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('strike'),\n }\"\n :aria-label=\"t.paragraphEditor.strikethrough\"\n :title=\"t.paragraphEditor.strikethrough\"\n @click=\"editor?.chain().focus().toggleStrike().run()\"\n >\n <Strikethrough :size=\"16\" :stroke-width=\"2\" />\n </button>\n <span\n class=\"tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <!-- Subscript/Superscript -->\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('subscript'),\n }\"\n :aria-label=\"t.paragraphEditor.subscript\"\n :title=\"t.paragraphEditor.subscript\"\n @click=\"editor?.chain().focus().toggleSubscript().run()\"\n >\n <Subscript :size=\"16\" :stroke-width=\"2\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('superscript'),\n }\"\n :aria-label=\"t.paragraphEditor.superscript\"\n :title=\"t.paragraphEditor.superscript\"\n @click=\"editor?.chain().focus().toggleSuperscript().run()\"\n >\n <Superscript :size=\"16\" :stroke-width=\"2\" />\n </button>\n <span\n class=\"tpl:mx-1 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <!-- Link -->\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('link'),\n }\"\n :aria-label=\"t.paragraphEditor.addLink\"\n :title=\"t.paragraphEditor.addLink\"\n @click=\"emit('open-link-dialog')\"\n >\n <Link :size=\"16\" :stroke-width=\"2\" />\n </button>\n </div>\n <!-- Row 2: Lists, Alignment, LH, LS, Clear, Emoji, Merge tags -->\n <div class=\"tpl:flex tpl:items-center tpl:gap-1\">\n <!-- Lists -->\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('bulletList'),\n }\"\n :aria-label=\"t.paragraphEditor.bulletList\"\n :title=\"t.paragraphEditor.bulletList\"\n @click=\"editor?.chain().focus().toggleBulletList().run()\"\n >\n <List :size=\"16\" :stroke-width=\"2\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive('orderedList'),\n }\"\n :aria-label=\"t.paragraphEditor.numberedList\"\n :title=\"t.paragraphEditor.numberedList\"\n @click=\"editor?.chain().focus().toggleOrderedList().run()\"\n >\n <ListOrdered :size=\"16\" :stroke-width=\"2\" />\n </button>\n <span\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <!-- Alignment -->\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive({\n textAlign: 'left',\n }),\n }\"\n :aria-label=\"t.paragraphEditor.alignLeft\"\n :title=\"t.paragraphEditor.alignLeft\"\n @click=\"editor?.chain().focus().setTextAlign('left').run()\"\n >\n <AlignLeft :size=\"16\" :stroke-width=\"2\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive({\n textAlign: 'center',\n }),\n }\"\n :aria-label=\"t.paragraphEditor.alignCenter\"\n :title=\"t.paragraphEditor.alignCenter\"\n @click=\"editor?.chain().focus().setTextAlign('center').run()\"\n >\n <AlignCenter :size=\"16\" :stroke-width=\"2\" />\n </button>\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :class=\"{\n 'tpl-text-toolbar-btn--active': editor?.isActive({\n textAlign: 'right',\n }),\n }\"\n :aria-label=\"t.paragraphEditor.alignRight\"\n :title=\"t.paragraphEditor.alignRight\"\n @click=\"editor?.chain().focus().setTextAlign('right').run()\"\n >\n <AlignRight :size=\"16\" :stroke-width=\"2\" />\n </button>\n <span\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <!-- Line Height -->\n <select\n class=\"tpl:h-8 tpl:w-16 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-1 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none\"\n :value=\"getCurrentLineHeight()\"\n :title=\"t.paragraphEditor.lineHeight\"\n @change=\"setLineHeight(($event.target as HTMLSelectElement).value)\"\n >\n <option value=\"\">LH</option>\n <option v-for=\"lh in LINE_HEIGHT_OPTIONS\" :key=\"lh\" :value=\"lh\">\n {{ lh }}\n </option>\n </select>\n <!-- Letter Spacing -->\n <select\n class=\"tpl:h-8 tpl:w-20 tpl:cursor-pointer tpl:rounded tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-1 tpl:text-xs tpl:text-[var(--tpl-text)] tpl:outline-none\"\n :value=\"getCurrentLetterSpacing()\"\n :title=\"t.paragraphEditor.letterSpacing\"\n @change=\"\n setLetterSpacing(($event.target as HTMLSelectElement).value)\n \"\n >\n <option value=\"\">LS</option>\n <option\n v-for=\"ls in LETTER_SPACING_OPTIONS\"\n :key=\"ls.value\"\n :value=\"ls.value\"\n >\n {{ ls.label }}\n </option>\n </select>\n <span\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <!-- Clear Formatting -->\n <button\n type=\"button\"\n class=\"tpl-text-toolbar-btn\"\n :aria-label=\"t.paragraphEditor.clearFormatting\"\n :title=\"t.paragraphEditor.clearFormatting\"\n @click=\"editor?.chain().focus().clearNodes().unsetAllMarks().run()\"\n >\n <RemoveFormatting :size=\"16\" :stroke-width=\"2\" />\n </button>\n <!-- Emoji Picker -->\n <span\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n aria-hidden=\"true\"\n ></span>\n <EmojiPickerDropdown @insert=\"insertEmoji\" />\n <!-- Add Merge Tag -->\n <span\n v-if=\"mergeTagEnabled\"\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n ></span>\n <button\n v-if=\"mergeTagEnabled\"\n type=\"button\"\n class=\"tpl:flex tpl:h-8 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded tpl:border-none tpl:bg-transparent tpl:px-2.5 tpl:text-xs tpl:font-medium tpl:text-[var(--tpl-text)] tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-bg-active)]\"\n :aria-label=\"t.mergeTag.add\"\n :title=\"t.mergeTag.add\"\n @click=\"emit('add-merge-tag')\"\n >\n <ScanLine :size=\"16\" :stroke-width=\"2\" />\n {{ t.mergeTag.add }}\n </button>\n </div>\n </template>\n <template v-else>\n <div\n class=\"tpl:flex tpl:items-center tpl:gap-2 tpl:px-2 tpl:text-xs tpl:text-[var(--tpl-text-dim)]\"\n >\n <LoaderCircle class=\"tpl-spinner\" :size=\"14\" :stroke-width=\"2\" />\n {{ t.errors.editorLoading }}\n </div>\n </template>\n </div>\n </Teleport>\n</template>\n","<script setup lang=\"ts\">\nimport { useRichTextEditor } from \"../../composables/useRichTextEditor\";\nimport type { ParagraphBlock as ParagraphBlockType } from \"@templatical/types\";\nimport ParagraphToolbar from \"./ParagraphToolbar.vue\";\nimport RichTextLinkDialog from \"./RichTextLinkDialog.vue\";\nimport RichTextEditorContent from \"./RichTextEditorContent.vue\";\n\nconst props = defineProps<{\n block: ParagraphBlockType;\n toolbarPosition: { top: number; left: number };\n}>();\n\nconst emit = defineEmits<{\n (e: \"done\"): void;\n}>();\n\nconst {\n editor,\n EditorContent,\n isLoading,\n initError,\n retry,\n showLinkDialog,\n linkUrl,\n linkDialogRef,\n mergeTagEnabled,\n openLinkDialog,\n insertLink,\n removeLink,\n closeLinkDialog,\n handleLinkKeydown,\n handleAddMergeTag,\n} = useRichTextEditor({\n blockId: () => props.block.id,\n blockContent: () => props.block.content,\n onDone: () => emit(\"done\"),\n editorName: \"ParagraphEditor\",\n async loadExtensions({ mergeTags, syntax }) {\n const [\n { Editor: TiptapEditor, EditorContent: EC },\n { default: StarterKit },\n { default: LinkExt },\n { default: UnderlineExt },\n { default: SubscriptExt },\n { default: SuperscriptExt },\n { default: TextAlign },\n { TextStyle },\n { default: Color },\n { default: FontFamily },\n { default: Highlight },\n { MergeTagNode, LogicMergeTagNode, FontSize, LineHeight, LetterSpacing },\n ] = await Promise.all([\n import(\"@tiptap/vue-3\"),\n import(\"@tiptap/starter-kit\"),\n import(\"@tiptap/extension-link\"),\n import(\"@tiptap/extension-underline\"),\n import(\"@tiptap/extension-subscript\"),\n import(\"@tiptap/extension-superscript\"),\n import(\"@tiptap/extension-text-align\"),\n import(\"@tiptap/extension-text-style\"),\n import(\"@tiptap/extension-color\"),\n import(\"@tiptap/extension-font-family\"),\n import(\"@tiptap/extension-highlight\"),\n import(\"../../extensions\"),\n ]);\n\n return {\n TiptapEditor,\n EC,\n extensions: [\n StarterKit.configure({\n heading: false,\n codeBlock: false,\n blockquote: false,\n horizontalRule: false,\n }),\n UnderlineExt,\n SubscriptExt,\n SuperscriptExt,\n LinkExt.configure({\n openOnClick: false,\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n TextAlign.configure({ types: [\"paragraph\"] }),\n TextStyle,\n Color,\n FontFamily,\n Highlight.configure({ multicolor: true }),\n FontSize,\n LineHeight,\n LetterSpacing,\n MergeTagNode.configure({ mergeTags, syntax }),\n LogicMergeTagNode.configure({ syntax }),\n ],\n };\n },\n});\n</script>\n\n<template>\n <div class=\"tpl-text-editor-wrapper tpl:relative\">\n <ParagraphToolbar\n :editor=\"editor\"\n :toolbar-position=\"toolbarPosition\"\n :is-loading=\"isLoading\"\n :merge-tag-enabled=\"mergeTagEnabled\"\n @open-link-dialog=\"openLinkDialog\"\n @add-merge-tag=\"handleAddMergeTag\"\n />\n\n <RichTextEditorContent\n :editor=\"editor\"\n :editor-content=\"EditorContent\"\n :is-loading=\"isLoading\"\n :init-error=\"initError\"\n @retry=\"retry\"\n />\n\n <RichTextLinkDialog\n :visible=\"showLinkDialog\"\n :is-editing-link=\"editor?.isActive('link') ?? false\"\n v-model:dialog-ref=\"linkDialogRef\"\n v-model:link-url=\"linkUrl\"\n @close=\"closeLinkDialog\"\n @insert=\"insertLink\"\n @remove=\"removeLink\"\n @keydown=\"handleLinkKeydown\"\n />\n </div>\n</template>\n"],"file":"ParagraphEditor-CCtWbGDv.js"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{D as e,K as t,M as n,O as r,W as i,b as a,c as o,d as s,f as c,g as l,h as u,i as d,m as f,o as p,p as m,q as h,u as g,w as _,y as v}from"./draggable-ClUwYCFL.js";import{t as y}from"./icons-vmLJTaJk.js";import{c as b,n as x,u as S}from"./useMergeTag-DVOz1v9p.js";var C=[`data-tpl-theme`],w={class:`tpl:flex tpl:items-center tpl:justify-between tpl:border-b tpl:border-[var(--tpl-border)] tpl:px-5 tpl:py-4`},T={id:`tpl-link-dialog-title`,class:`tpl:m-0 tpl:text-sm tpl:font-semibold tpl:text-[var(--tpl-text)]`},E=[`aria-label`],D={class:`tpl:p-5`},O={class:`tpl:mb-4 tpl:last:mb-0`},k={class:`tpl:mb-1.5 tpl:block tpl:text-xs tpl:font-medium tpl:tracking-wide tpl:text-[var(--tpl-text-muted)] tpl:uppercase`},A=[`placeholder`],j={class:`tpl:flex tpl:items-center tpl:justify-between tpl:border-t tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg-elevated)] tpl:px-5 tpl:py-4`},M={class:`tpl:ml-auto tpl:flex tpl:gap-2`},N=l({__name:`RichTextLinkDialog`,props:a({visible:{type:Boolean},isEditingLink:{type:Boolean}},{linkUrl:{required:!0},linkUrlModifiers:{},dialogRef:{required:!0},dialogRefModifiers:{}}),emits:a([`close`,`insert`,`remove`,`keydown`],[`update:linkUrl`,`update:dialogRef`]),setup(e,{emit:a}){let l=r(e,`linkUrl`),f=r(e,`dialogRef`),N=a,P=v(b,null),F=v(S,null),{t:I}=x();return(r,a)=>(_(),s(o,{to:`body`},[e.visible?(_(),m(`div`,{key:0,"data-tpl-theme":i(F),class:`tpl tpl-link-dialog tpl:fixed tpl:inset-0 tpl:z-modal tpl:flex tpl:items-center tpl:justify-center`,style:t(i(P)),onClick:a[6]||=p(e=>N(`close`),[`self`])},[g(`div`,{ref:e=>f.value=e,role:`dialog`,"aria-modal":`true`,"aria-labelledby":`tpl-link-dialog-title`,class:`tpl:w-[400px] tpl:overflow-hidden tpl:rounded-lg tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:shadow-lg`},[g(`div`,w,[g(`h4`,T,h(e.isEditingLink?i(I).linkDialog.editLink:i(I).linkDialog.insertLink),1),g(`button`,{type:`button`,"aria-label":i(I).linkDialog.cancel,class:`tpl:flex tpl:size-7 tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:rounded tpl:border-none tpl:bg-transparent tpl:p-0 tpl:text-[var(--tpl-text-muted)] tpl:hover:bg-[var(--tpl-bg-hover)] tpl:hover:text-[var(--tpl-text)]`,onClick:a[0]||=e=>N(`close`)},[u(i(y),{size:16,"stroke-width":2})],8,E)]),g(`div`,D,[g(`div`,O,[g(`label`,k,h(i(I).linkDialog.urlLabel),1),n(g(`input`,{"onUpdate:modelValue":a[1]||=e=>l.value=e,type:`url`,class:`tpl:w-full tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-[var(--tpl-bg)] tpl:px-3 tpl:py-2.5 tpl:text-sm tpl:text-[var(--tpl-text)] tpl:transition-all tpl:duration-150 tpl:outline-none tpl:placeholder:text-[var(--tpl-text-dim)] tpl:focus:border-[var(--tpl-primary)] tpl:focus:shadow-[0_0_0_3px_var(--tpl-primary-light)]`,placeholder:i(I).linkDialog.urlPlaceholder,autofocus:``,onKeydown:a[2]||=e=>N(`keydown`,e)},null,40,A),[[d,l.value]])])]),g(`div`,j,[e.isEditingLink?(_(),m(`button`,{key:0,type:`button`,class:`tpl:inline-flex tpl:cursor-pointer tpl:items-center tpl:rounded-md tpl:border tpl:border-[var(--tpl-danger)] tpl:bg-transparent tpl:px-4 tpl:py-2 tpl:text-[13px] tpl:font-medium tpl:text-[var(--tpl-danger)] tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-danger-light)]`,onClick:a[3]||=e=>N(`remove`)},h(i(I).linkDialog.removeLink),1)):c(``,!0),g(`div`,M,[g(`button`,{type:`button`,class:`tpl:inline-flex tpl:cursor-pointer tpl:items-center tpl:rounded-md tpl:border tpl:border-[var(--tpl-border)] tpl:bg-transparent tpl:px-4 tpl:py-2 tpl:text-[13px] tpl:font-medium tpl:text-[var(--tpl-text-muted)] tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-bg-hover)] tpl:hover:text-[var(--tpl-text)]`,onClick:a[4]||=e=>N(`close`)},h(i(I).linkDialog.cancel),1),g(`button`,{type:`button`,class:`tpl:inline-flex tpl:cursor-pointer tpl:items-center tpl:rounded-md tpl:border-none tpl:bg-[var(--tpl-primary)] tpl:px-4 tpl:py-2 tpl:text-[13px] tpl:font-medium tpl:transition-all tpl:duration-150 tpl:hover:bg-[var(--tpl-primary-hover)] tpl:text-[var(--tpl-bg)]`,onClick:a[5]||=e=>N(`insert`)},h(e.isEditingLink?i(I).linkDialog.updateLink:i(I).linkDialog.insertLink),1)])])],512)],12,C)):c(``,!0)]))}}),P={key:0,class:`tpl-text-editable tpl:min-h-[1.5em] tpl:rounded tpl:border tpl:border-dashed tpl:border-[var(--tpl-primary)] tpl:p-2`},F={class:`tpl:animate-pulse tpl:text-[var(--tpl-text-dim)]`},I={key:1,class:`tpl-text-editable tpl:min-h-[1.5em] tpl:rounded tpl:border tpl:border-dashed tpl:p-2 tpl:text-center tpl:text-xs tpl:border-[var(--tpl-danger)] tpl:text-[var(--tpl-text-muted)]`},L=l({__name:`RichTextEditorContent`,props:{editor:{},editorContent:{},isLoading:{type:Boolean},initError:{}},emits:[`retry`],setup(t,{emit:n}){let r=n,{t:a}=x();return(n,o)=>t.isLoading?(_(),m(`div`,P,[g(`div`,F,h(i(a).errors.editorLoading),1)])):t.initError?(_(),m(`div`,I,[f(h(i(a).errors.editorLoadFailed)+` `,1),g(`button`,{class:`tpl:ml-1 tpl:cursor-pointer tpl:border-none tpl:bg-transparent tpl:p-0 tpl:underline tpl:text-[var(--tpl-primary)]`,onClick:o[0]||=e=>r(`retry`)},h(i(a).errors.retry),1)])):t.editorContent&&t.editor?(_(),s(e(t.editorContent),{key:2,editor:t.editor,class:`tpl-text-editable tpl:min-h-[1.5em] tpl:rounded tpl:border tpl:border-dashed tpl:border-[var(--tpl-primary)] tpl:p-2`},null,8,[`editor`])):c(``,!0)}});export{N as n,L as t};
|
|
2
|
+
//# sourceMappingURL=RichTextEditorContent-BUD9veXd.js.map
|