@templatical/editor 0.7.2 → 0.7.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-DWRONNm6.js → AiChatSidebar-H7SIsxeC.js} +49 -59
- package/dist/{AiFeatureMenu-U7b4Z8OV.js → AiFeatureMenu-CJGX-fP5.js} +1 -1
- package/dist/{CloudEditor-DgiUCNMn.js → CloudEditor-BBs3p-mW.js} +124 -120
- package/dist/{CollaboratorBar-BgeaMhrV.js → CollaboratorBar-CiEo25lb.js} +2 -2
- package/dist/{CommentsSidebar-BiRtaXYD.js → CommentsSidebar-DikjSLtH.js} +1 -1
- package/dist/{CountdownToolbar-CojjlZet.js → CountdownToolbar-Bn4RwJVN.js} +2 -2
- package/dist/{DesignReferenceSidebar-C1W02bYt.js → DesignReferenceSidebar-D08CLZPA.js} +1 -1
- package/dist/{ModuleBrowserModal-Bjh99_5c.js → ModuleBrowserModal-D6637s8j.js} +4 -4
- package/dist/{ModulePreviewCanvas-DDDQmUI_.js → ModulePreviewCanvas-DBFmwq-y.js} +1 -1
- package/dist/{NumberWithSuffix-CLTBb2Rj.js → NumberWithSuffix-CyFX9w1e.js} +1 -1
- package/dist/{ParagraphEditor-BSaEdasm.js → ParagraphEditor-DC2jOjNh.js} +16 -16
- package/dist/{RichTextEditorContent-C3QSg7gd.js → RichTextEditorContent-8NkjTIua.js} +1 -1
- package/dist/{SaveModuleDialog-9fX6oSxf.js → SaveModuleDialog-NKT7bWWs.js} +2 -2
- package/dist/{SnapshotHistory-gYW-IXkE.js → SnapshotHistory-XNqYxPBj.js} +2 -2
- package/dist/{TestEmailModal-B_Rmnngq.js → TestEmailModal-B_-Qo5Us.js} +2 -2
- package/dist/{TitleEditor-XbFuw1Vy.js → TitleEditor-DnH3yyTr.js} +7 -7
- package/dist/{TplModal-LY9rkDph.js → TplModal-BoEZFe3U.js} +2 -2
- package/dist/{blockTypeIcons-CLT2H0yU.js → blockTypeIcons-CUcYuWAO.js} +1 -1
- package/dist/bundle-stats.json +7 -7
- package/dist/cdn/chunks/{AccessibilityPanel-DaqF4Xzy.js → AccessibilityPanel-CQt87OMk.js} +5 -5
- package/dist/cdn/chunks/{AccessibilityPanel-DaqF4Xzy.js.map → AccessibilityPanel-CQt87OMk.js.map} +1 -1
- package/dist/cdn/chunks/{AiFeatureMenu-WhZ7G-Wr.js → AiFeatureMenu-SxIqfqA0.js} +8 -8
- package/dist/cdn/chunks/{AiFeatureMenu-WhZ7G-Wr.js.map → AiFeatureMenu-SxIqfqA0.js.map} +1 -1
- package/dist/cdn/chunks/{BlockA11yBadge-BLKyO0lH.js → BlockA11yBadge-QqW6nomn.js} +3 -3
- package/dist/cdn/chunks/{BlockA11yBadge-BLKyO0lH.js.map → BlockA11yBadge-QqW6nomn.js.map} +1 -1
- package/dist/cdn/chunks/{CloudEditor-BKEXPt3g.js → CloudEditor-ChWUIMw7.js} +165 -161
- package/dist/cdn/chunks/CloudEditor-ChWUIMw7.js.map +1 -0
- package/dist/cdn/chunks/{CollaboratorBar-ASDiTitQ.js → CollaboratorBar-73LfbzqF.js} +3 -3
- package/dist/cdn/chunks/{CollaboratorBar-ASDiTitQ.js.map → CollaboratorBar-73LfbzqF.js.map} +1 -1
- package/dist/cdn/chunks/{CountdownBlock-LAlYJYWL.js → CountdownBlock-WYz9b9Ex.js} +2 -2
- package/dist/cdn/chunks/{CountdownBlock-LAlYJYWL.js.map → CountdownBlock-WYz9b9Ex.js.map} +1 -1
- package/dist/cdn/chunks/{CountdownToolbar-CbIKGP7u.js → CountdownToolbar-B9fPfFqp.js} +3 -3
- package/dist/cdn/chunks/{CountdownToolbar-CbIKGP7u.js.map → CountdownToolbar-B9fPfFqp.js.map} +1 -1
- package/dist/cdn/chunks/{ModuleBrowserModal-BjmdleNq.js → ModuleBrowserModal-DfnJQBkM.js} +8 -8
- package/dist/cdn/chunks/{ModuleBrowserModal-BjmdleNq.js.map → ModuleBrowserModal-DfnJQBkM.js.map} +1 -1
- package/dist/cdn/chunks/{ModulePreviewCanvas-DsmACAdb.js → ModulePreviewCanvas-DE4_oHA_.js} +20 -20
- package/dist/cdn/chunks/{ModulePreviewCanvas-DsmACAdb.js.map → ModulePreviewCanvas-DE4_oHA_.js.map} +1 -1
- package/dist/cdn/chunks/{NumberWithSuffix-EEDNj1my.js → NumberWithSuffix-BST0yRor.js} +2 -2
- package/dist/cdn/chunks/{NumberWithSuffix-EEDNj1my.js.map → NumberWithSuffix-BST0yRor.js.map} +1 -1
- package/dist/cdn/chunks/{ParagraphEditor-D6Dw5RtX.js → ParagraphEditor-CQfijF3i.js} +36 -36
- package/dist/cdn/chunks/{ParagraphEditor-D6Dw5RtX.js.map → ParagraphEditor-CQfijF3i.js.map} +1 -1
- package/dist/cdn/chunks/{RichTextEditorContent-C2yj_yPM.js → RichTextEditorContent-CBds8dnm.js} +5 -5
- package/dist/cdn/chunks/{RichTextEditorContent-C2yj_yPM.js.map → RichTextEditorContent-CBds8dnm.js.map} +1 -1
- package/dist/cdn/chunks/{SaveModuleDialog-DCcvwYat.js → SaveModuleDialog-DXhuZgZ4.js} +13 -13
- package/dist/cdn/chunks/{SaveModuleDialog-DCcvwYat.js.map → SaveModuleDialog-DXhuZgZ4.js.map} +1 -1
- package/dist/cdn/chunks/{TitleEditor-isN_t0MJ.js → TitleEditor-BdQvH7eK.js} +7 -7
- package/dist/cdn/chunks/{TitleEditor-isN_t0MJ.js.map → TitleEditor-BdQvH7eK.js.map} +1 -1
- package/dist/cdn/chunks/{blockTypeIcons-Bgn69Q1-.js → blockTypeIcons-D3CGFW5P.js} +8 -8
- package/dist/cdn/chunks/{blockTypeIcons-Bgn69Q1-.js.map → blockTypeIcons-D3CGFW5P.js.map} +1 -1
- package/dist/cdn/chunks/{extensions-BPsjY5N8.js → extensions-BE81zpqP.js} +50 -48
- package/dist/cdn/chunks/{extensions-BPsjY5N8.js.map → extensions-BE81zpqP.js.map} +1 -1
- package/dist/cdn/chunks/{features-BouLRfOO.js → features-CXF_YKlL.js} +1258 -1113
- package/dist/cdn/chunks/features-CXF_YKlL.js.map +1 -0
- package/dist/cdn/chunks/{icons-BBuZkqC3.js → icons-KbmhF7rg.js} +2 -2
- package/dist/cdn/chunks/{icons-BBuZkqC3.js.map → icons-KbmhF7rg.js.map} +1 -1
- package/dist/cdn/chunks/{media-library-C-DcHE6w.js → media-library-BERe10wA.js} +103 -103
- package/dist/cdn/chunks/{media-library-C-DcHE6w.js.map → media-library-BERe10wA.js.map} +1 -1
- package/dist/cdn/chunks/{quality-ConWSEB6.js → quality-CmkY1kMU.js} +309 -309
- package/dist/cdn/chunks/{quality-ConWSEB6.js.map → quality-CmkY1kMU.js.map} +1 -1
- package/dist/cdn/chunks/{renderer-F8cxEe3t.js → renderer-OttGEYkY.js} +50 -50
- package/dist/cdn/chunks/{renderer-F8cxEe3t.js.map → renderer-OttGEYkY.js.map} +1 -1
- package/dist/cdn/chunks/{src-C9rMok-R.js → src-C21GI0p6.js} +6 -6
- package/dist/cdn/chunks/{src-C9rMok-R.js.map → src-C21GI0p6.js.map} +1 -1
- package/dist/cdn/chunks/styles-Cy-My9zK.js +2976 -0
- package/dist/cdn/chunks/styles-Cy-My9zK.js.map +1 -0
- package/dist/cdn/editor.css +1 -1
- package/dist/cdn/editor.js +109 -106
- package/dist/cdn/editor.js.map +1 -1
- package/dist/{dist-DDJIWTRY.js → dist-B2jcQhv8.js} +1 -1
- package/dist/{dist-wzMIGj-D.js → dist-BYt3jdCR.js} +1 -1
- package/dist/{dist-aRzjfSRN.js → dist-CISFttkF.js} +1 -1
- package/dist/{dist-D6uC2xhi.js → dist-CfQPBf15.js} +1 -1
- package/dist/{dist-DjviJBCi.js → dist-DD-9hatO.js} +1 -1
- package/dist/{dist-KoBJjK1G.js → dist-DUvhjQ2-.js} +1 -1
- package/dist/{dist-BaQIYPsn.js → dist-DVwOAodp.js} +1 -1
- package/dist/{dist-Cp0zXPAD.js → dist-DxD1kSdH.js} +1 -1
- package/dist/{dist-Pk4MhWMP.js → dist-U5guDm2w.js} +1 -1
- package/dist/{dist-D90y8dvT.js → dist-hfu7I2rO.js} +3 -3
- package/dist/{dist-us-RpCWN.js → dist-v8h02hhE.js} +1 -1
- package/dist/{extensions-D-J02CiP.js → extensions-p6UBqXfg.js} +30 -28
- package/dist/index.d.ts +8 -8
- package/dist/style.css +1 -1
- package/dist/{styles-j_3bu0Bo.js → styles-BP15QmP3.js} +1058 -1052
- package/dist/templatical-editor.js +108 -105
- package/dist/useAliveFlag-D8GoB4VE.js +10 -0
- package/dist/{useEditorCore-B1XrI6fY.js → useEditorCore-_rbu6iMu.js} +921 -778
- package/package.json +7 -7
- package/dist/cdn/chunks/CloudEditor-BKEXPt3g.js.map +0 -1
- package/dist/cdn/chunks/features-BouLRfOO.js.map +0 -1
- package/dist/cdn/chunks/styles-BRN0i_zg.js +0 -2971
- package/dist/cdn/chunks/styles-BRN0i_zg.js.map +0 -1
- /package/dist/{AccessibilityPanel-D-PqmHdH.js → AccessibilityPanel-BeUibrUb.js} +0 -0
- /package/dist/{BlockA11yBadge-BFIw0h1m.js → BlockA11yBadge-BhyoMZJ9.js} +0 -0
- /package/dist/{CountdownBlock-Cq8A8WrM.js → CountdownBlock-ByJ0_8Pk.js} +0 -0
- /package/dist/{TemplateScoringPanel-V79yrEPC.js → TemplateScoringPanel-kYOGtac3.js} +0 -0
- /package/dist/{cloud-CTmfCSqf.js → cloud-k0DgeCo2.js} +0 -0
- /package/dist/{de-BhIWu_bO.js → de-C9hp3n_a.js} +0 -0
- /package/dist/{de-Di4MEjjx.js → de-GOtR9DwW.js} +0 -0
- /package/dist/{dist-iLBdeBDR.js → dist-CQQS9SRN.js} +0 -0
- /package/dist/{emojiData-DX3E0XT-.js → emojiData-DrBuvEoP.js} +0 -0
- /package/dist/{en-D7HRbYah.js → en-Dv776AqL.js} +0 -0
- /package/dist/{en-BSuzi-Pd.js → en-dFFQVzNn.js} +0 -0
- /package/dist/{formatRelativeTime-BOEf47hq.js → formatRelativeTime-bvx5sFh5.js} +0 -0
- /package/dist/{liquid.browser-CdMv1BTn.js → liquid.browser-DX8ZHRdq.js} +0 -0
- /package/dist/{pt-BR-K32lt6YP.js → pt-BR-6n58Fl_q.js} +0 -0
- /package/dist/{pt-BR-CCVBRais.js → pt-BR-iOr79aDg.js} +0 -0
- /package/dist/{readableTextColor-CY3SiRnt.js → readableTextColor-CXzrEnNb.js} +0 -0
- /package/dist/{styleConstants-fWzlIIwN.js → styleConstants-DkfOPzGu.js} +0 -0
- /package/dist/{usePopoverRoot-BxJrqnMD.js → usePopoverRoot-BwzFSPLy.js} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { K as e, M as t, T as n, ct as r, d as i, g as a, h as o, it as s, m as c, ot as l, p as u, st as d, u as f, v as p, x as m, y as h } from "./draggable-P6QWzy4g.js";
|
|
2
|
-
import {
|
|
3
|
-
import { B as S, H as C, X as w, x as T } from "./icons-
|
|
4
|
-
import { n as E, t as D } from "./RichTextEditorContent-
|
|
2
|
+
import { Ft as g, Y as _, a as v, en as y, tn as b, vt as x } from "./features-CXF_YKlL.js";
|
|
3
|
+
import { B as S, H as C, X as w, x as T } from "./icons-KbmhF7rg.js";
|
|
4
|
+
import { n as E, t as D } from "./RichTextEditorContent-CBds8dnm.js";
|
|
5
5
|
//#region src/components/blocks/TitleEditor.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var ee = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme", "aria-label"], k = ["aria-label", "title"], A = ["aria-label", "title"], j = ["aria-label", "title"], M = {
|
|
7
7
|
key: 0,
|
|
@@ -17,7 +17,7 @@ var ee = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme
|
|
|
17
17
|
},
|
|
18
18
|
emits: ["done"],
|
|
19
19
|
setup(m, { emit: F }) {
|
|
20
|
-
let I = m, L = F, R = n(
|
|
20
|
+
let I = m, L = F, R = n(y, null), z = n(b, null), B = v(), { t: V } = g(), { editor: H, EditorContent: U, isLoading: W, initError: G, retry: K, showLinkDialog: q, linkUrl: J, linkDialogRef: Y, canRequestMergeTag: X, openLinkDialog: Z, insertLink: Q, removeLink: te, closeLinkDialog: ne, handleLinkKeydown: re, handleAddMergeTag: $ } = _({
|
|
21
21
|
blockId: () => I.block.id,
|
|
22
22
|
blockContent: () => I.block.content,
|
|
23
23
|
onDone: () => L("done"),
|
|
@@ -27,7 +27,7 @@ var ee = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme
|
|
|
27
27
|
import("./tiptap-BwTCLVWl.js").then((e) => e.i),
|
|
28
28
|
import("./tiptap-BwTCLVWl.js").then((e) => e.a),
|
|
29
29
|
import("./tiptap-BwTCLVWl.js").then((e) => e.u),
|
|
30
|
-
import("./extensions-
|
|
30
|
+
import("./extensions-BE81zpqP.js")
|
|
31
31
|
]);
|
|
32
32
|
return {
|
|
33
33
|
TiptapEditor: a,
|
|
@@ -127,7 +127,7 @@ var ee = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme
|
|
|
127
127
|
size: 16,
|
|
128
128
|
"stroke-width": 2
|
|
129
129
|
}), p(" " + r(s(V).mergeTag.add), 1)], 8, N)) : o("", !0)
|
|
130
|
-
], 64)) : (t(), a("div", P, [h(s(
|
|
130
|
+
], 64)) : (t(), a("div", P, [h(s(x), {
|
|
131
131
|
class: "tpl-spinner",
|
|
132
132
|
size: 14,
|
|
133
133
|
"stroke-width": 2
|
|
@@ -172,4 +172,4 @@ var ee = { class: "tpl-text-editor-wrapper tpl:relative" }, O = ["data-tpl-theme
|
|
|
172
172
|
//#endregion
|
|
173
173
|
export { F as default };
|
|
174
174
|
|
|
175
|
-
//# sourceMappingURL=TitleEditor-
|
|
175
|
+
//# sourceMappingURL=TitleEditor-BdQvH7eK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TitleEditor-isN_t0MJ.js","names":[],"sources":["../../../src/components/blocks/TitleEditor.vue","../../../src/components/blocks/TitleEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from \"../../composables\";\nimport { useRichTextEditor } from \"../../composables/useRichTextEditor\";\nimport { usePopoverRoot } from \"../../composables/usePopoverRoot\";\nimport type { TitleBlock as TitleBlockType } from \"@templatical/types\";\nimport { Bold, Italic, Link, LoaderCircle, ScanLine } from \"@lucide/vue\";\nimport { inject } from \"vue\";\nimport { THEME_STYLES_KEY, UI_THEME_KEY } from \"../../keys\";\nimport RichTextLinkDialog from \"./RichTextLinkDialog.vue\";\nimport RichTextEditorContent from \"./RichTextEditorContent.vue\";\n\nconst props = defineProps<{\n block: TitleBlockType;\n toolbarPosition: { top: number; left: number };\n}>();\n\nconst emit = defineEmits<{\n (e: \"done\"): void;\n}>();\n\nconst themeStyles = inject(THEME_STYLES_KEY, null);\nconst tplUiTheme = inject(UI_THEME_KEY, null);\nconst popoverRoot = usePopoverRoot();\n\nconst { t } = useI18n();\n\nconst {\n editor,\n EditorContent,\n isLoading,\n initError,\n retry,\n showLinkDialog,\n linkUrl,\n linkDialogRef,\n canRequestMergeTag,\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: \"TitleEditor\",\n async loadExtensions({\n mergeTags,\n syntax,\n triggerChar,\n autocompleteEnabled,\n suggestionEmptyText,\n }) {\n const [\n { Editor: TiptapEditor, EditorContent: EC },\n { default: StarterKit },\n { default: LinkExt },\n { MergeTagNode, MergeTagSuggestion, LogicMergeTagNode },\n ] = await Promise.all([\n import(\"@tiptap/vue-3\"),\n import(\"@tiptap/starter-kit\"),\n import(\"@tiptap/extension-link\"),\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 bulletList: false,\n orderedList: false,\n listItem: false,\n strike: false,\n }),\n LinkExt.configure({\n openOnClick: false,\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n MergeTagNode.configure({ mergeTags, syntax }),\n LogicMergeTagNode.configure({ syntax }),\n ...(autocompleteEnabled && triggerChar && mergeTags.length > 0\n ? [\n MergeTagSuggestion.configure({\n mergeTags,\n char: triggerChar,\n emptyText: suggestionEmptyText,\n popoverRoot,\n }),\n ]\n : []),\n ],\n };\n },\n});\n</script>\n\n<template>\n <div class=\"tpl-text-editor-wrapper tpl:relative\">\n <Teleport v-if=\"popoverRoot\" :to=\"popoverRoot\">\n <div\n :data-tpl-theme=\"tplUiTheme\"\n role=\"toolbar\"\n :aria-label=\"t.titleEditor.toolbar\"\n 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\"\n :style=\"{\n ...themeStyles,\n top: `${toolbarPosition.top}px`,\n left: `${toolbarPosition.left}px`,\n transform: 'translateY(-100%)',\n }\"\n >\n <template v-if=\"!isLoading && editor\">\n <!-- Bold -->\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.titleEditor.bold\"\n :title=\"t.titleEditor.bold\"\n @click=\"editor?.chain().focus().toggleBold().run()\"\n >\n <Bold :size=\"16\" :stroke-width=\"2.5\" />\n </button>\n <!-- Italic -->\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.titleEditor.italic\"\n :title=\"t.titleEditor.italic\"\n @click=\"editor?.chain().focus().toggleItalic().run()\"\n >\n <Italic :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 <!-- 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.titleEditor.addLink\"\n :title=\"t.titleEditor.addLink\"\n @click=\"openLinkDialog\"\n >\n <Link :size=\"16\" :stroke-width=\"2\" />\n </button>\n <!-- Add Merge Tag -->\n <span\n v-if=\"canRequestMergeTag\"\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n ></span>\n <button\n v-if=\"canRequestMergeTag\"\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=\"handleAddMergeTag\"\n >\n <ScanLine :size=\"16\" :stroke-width=\"2\" />\n {{ t.mergeTag.add }}\n </button>\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\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","<script setup lang=\"ts\">\nimport { useI18n } from \"../../composables\";\nimport { useRichTextEditor } from \"../../composables/useRichTextEditor\";\nimport { usePopoverRoot } from \"../../composables/usePopoverRoot\";\nimport type { TitleBlock as TitleBlockType } from \"@templatical/types\";\nimport { Bold, Italic, Link, LoaderCircle, ScanLine } from \"@lucide/vue\";\nimport { inject } from \"vue\";\nimport { THEME_STYLES_KEY, UI_THEME_KEY } from \"../../keys\";\nimport RichTextLinkDialog from \"./RichTextLinkDialog.vue\";\nimport RichTextEditorContent from \"./RichTextEditorContent.vue\";\n\nconst props = defineProps<{\n block: TitleBlockType;\n toolbarPosition: { top: number; left: number };\n}>();\n\nconst emit = defineEmits<{\n (e: \"done\"): void;\n}>();\n\nconst themeStyles = inject(THEME_STYLES_KEY, null);\nconst tplUiTheme = inject(UI_THEME_KEY, null);\nconst popoverRoot = usePopoverRoot();\n\nconst { t } = useI18n();\n\nconst {\n editor,\n EditorContent,\n isLoading,\n initError,\n retry,\n showLinkDialog,\n linkUrl,\n linkDialogRef,\n canRequestMergeTag,\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: \"TitleEditor\",\n async loadExtensions({\n mergeTags,\n syntax,\n triggerChar,\n autocompleteEnabled,\n suggestionEmptyText,\n }) {\n const [\n { Editor: TiptapEditor, EditorContent: EC },\n { default: StarterKit },\n { default: LinkExt },\n { MergeTagNode, MergeTagSuggestion, LogicMergeTagNode },\n ] = await Promise.all([\n import(\"@tiptap/vue-3\"),\n import(\"@tiptap/starter-kit\"),\n import(\"@tiptap/extension-link\"),\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 bulletList: false,\n orderedList: false,\n listItem: false,\n strike: false,\n }),\n LinkExt.configure({\n openOnClick: false,\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n MergeTagNode.configure({ mergeTags, syntax }),\n LogicMergeTagNode.configure({ syntax }),\n ...(autocompleteEnabled && triggerChar && mergeTags.length > 0\n ? [\n MergeTagSuggestion.configure({\n mergeTags,\n char: triggerChar,\n emptyText: suggestionEmptyText,\n popoverRoot,\n }),\n ]\n : []),\n ],\n };\n },\n});\n</script>\n\n<template>\n <div class=\"tpl-text-editor-wrapper tpl:relative\">\n <Teleport v-if=\"popoverRoot\" :to=\"popoverRoot\">\n <div\n :data-tpl-theme=\"tplUiTheme\"\n role=\"toolbar\"\n :aria-label=\"t.titleEditor.toolbar\"\n 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\"\n :style=\"{\n ...themeStyles,\n top: `${toolbarPosition.top}px`,\n left: `${toolbarPosition.left}px`,\n transform: 'translateY(-100%)',\n }\"\n >\n <template v-if=\"!isLoading && editor\">\n <!-- Bold -->\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.titleEditor.bold\"\n :title=\"t.titleEditor.bold\"\n @click=\"editor?.chain().focus().toggleBold().run()\"\n >\n <Bold :size=\"16\" :stroke-width=\"2.5\" />\n </button>\n <!-- Italic -->\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.titleEditor.italic\"\n :title=\"t.titleEditor.italic\"\n @click=\"editor?.chain().focus().toggleItalic().run()\"\n >\n <Italic :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 <!-- 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.titleEditor.addLink\"\n :title=\"t.titleEditor.addLink\"\n @click=\"openLinkDialog\"\n >\n <Link :size=\"16\" :stroke-width=\"2\" />\n </button>\n <!-- Add Merge Tag -->\n <span\n v-if=\"canRequestMergeTag\"\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n ></span>\n <button\n v-if=\"canRequestMergeTag\"\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=\"handleAddMergeTag\"\n >\n <ScanLine :size=\"16\" :stroke-width=\"2\" />\n {{ t.mergeTag.add }}\n </button>\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\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TitleEditor-BdQvH7eK.js","names":[],"sources":["../../../src/components/blocks/TitleEditor.vue","../../../src/components/blocks/TitleEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from \"../../composables\";\nimport { useRichTextEditor } from \"../../composables/useRichTextEditor\";\nimport { usePopoverRoot } from \"../../composables/usePopoverRoot\";\nimport type { TitleBlock as TitleBlockType } from \"@templatical/types\";\nimport { Bold, Italic, Link, LoaderCircle, ScanLine } from \"@lucide/vue\";\nimport { inject } from \"vue\";\nimport { THEME_STYLES_KEY, UI_THEME_KEY } from \"../../keys\";\nimport RichTextLinkDialog from \"./RichTextLinkDialog.vue\";\nimport RichTextEditorContent from \"./RichTextEditorContent.vue\";\n\nconst props = defineProps<{\n block: TitleBlockType;\n toolbarPosition: { top: number; left: number };\n}>();\n\nconst emit = defineEmits<{\n (e: \"done\"): void;\n}>();\n\nconst themeStyles = inject(THEME_STYLES_KEY, null);\nconst tplUiTheme = inject(UI_THEME_KEY, null);\nconst popoverRoot = usePopoverRoot();\n\nconst { t } = useI18n();\n\nconst {\n editor,\n EditorContent,\n isLoading,\n initError,\n retry,\n showLinkDialog,\n linkUrl,\n linkDialogRef,\n canRequestMergeTag,\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: \"TitleEditor\",\n async loadExtensions({\n mergeTags,\n syntax,\n triggerChar,\n autocompleteEnabled,\n suggestionEmptyText,\n }) {\n const [\n { Editor: TiptapEditor, EditorContent: EC },\n { default: StarterKit },\n { default: LinkExt },\n { MergeTagNode, MergeTagSuggestion, LogicMergeTagNode },\n ] = await Promise.all([\n import(\"@tiptap/vue-3\"),\n import(\"@tiptap/starter-kit\"),\n import(\"@tiptap/extension-link\"),\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 bulletList: false,\n orderedList: false,\n listItem: false,\n strike: false,\n }),\n LinkExt.configure({\n openOnClick: false,\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n MergeTagNode.configure({ mergeTags, syntax }),\n LogicMergeTagNode.configure({ syntax }),\n ...(autocompleteEnabled && triggerChar && mergeTags.length > 0\n ? [\n MergeTagSuggestion.configure({\n mergeTags,\n char: triggerChar,\n emptyText: suggestionEmptyText,\n popoverRoot,\n }),\n ]\n : []),\n ],\n };\n },\n});\n</script>\n\n<template>\n <div class=\"tpl-text-editor-wrapper tpl:relative\">\n <Teleport v-if=\"popoverRoot\" :to=\"popoverRoot\">\n <div\n :data-tpl-theme=\"tplUiTheme\"\n role=\"toolbar\"\n :aria-label=\"t.titleEditor.toolbar\"\n 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\"\n :style=\"{\n ...themeStyles,\n top: `${toolbarPosition.top}px`,\n left: `${toolbarPosition.left}px`,\n transform: 'translateY(-100%)',\n }\"\n >\n <template v-if=\"!isLoading && editor\">\n <!-- Bold -->\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.titleEditor.bold\"\n :title=\"t.titleEditor.bold\"\n @click=\"editor?.chain().focus().toggleBold().run()\"\n >\n <Bold :size=\"16\" :stroke-width=\"2.5\" />\n </button>\n <!-- Italic -->\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.titleEditor.italic\"\n :title=\"t.titleEditor.italic\"\n @click=\"editor?.chain().focus().toggleItalic().run()\"\n >\n <Italic :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 <!-- 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.titleEditor.addLink\"\n :title=\"t.titleEditor.addLink\"\n @click=\"openLinkDialog\"\n >\n <Link :size=\"16\" :stroke-width=\"2\" />\n </button>\n <!-- Add Merge Tag -->\n <span\n v-if=\"canRequestMergeTag\"\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n ></span>\n <button\n v-if=\"canRequestMergeTag\"\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=\"handleAddMergeTag\"\n >\n <ScanLine :size=\"16\" :stroke-width=\"2\" />\n {{ t.mergeTag.add }}\n </button>\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\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","<script setup lang=\"ts\">\nimport { useI18n } from \"../../composables\";\nimport { useRichTextEditor } from \"../../composables/useRichTextEditor\";\nimport { usePopoverRoot } from \"../../composables/usePopoverRoot\";\nimport type { TitleBlock as TitleBlockType } from \"@templatical/types\";\nimport { Bold, Italic, Link, LoaderCircle, ScanLine } from \"@lucide/vue\";\nimport { inject } from \"vue\";\nimport { THEME_STYLES_KEY, UI_THEME_KEY } from \"../../keys\";\nimport RichTextLinkDialog from \"./RichTextLinkDialog.vue\";\nimport RichTextEditorContent from \"./RichTextEditorContent.vue\";\n\nconst props = defineProps<{\n block: TitleBlockType;\n toolbarPosition: { top: number; left: number };\n}>();\n\nconst emit = defineEmits<{\n (e: \"done\"): void;\n}>();\n\nconst themeStyles = inject(THEME_STYLES_KEY, null);\nconst tplUiTheme = inject(UI_THEME_KEY, null);\nconst popoverRoot = usePopoverRoot();\n\nconst { t } = useI18n();\n\nconst {\n editor,\n EditorContent,\n isLoading,\n initError,\n retry,\n showLinkDialog,\n linkUrl,\n linkDialogRef,\n canRequestMergeTag,\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: \"TitleEditor\",\n async loadExtensions({\n mergeTags,\n syntax,\n triggerChar,\n autocompleteEnabled,\n suggestionEmptyText,\n }) {\n const [\n { Editor: TiptapEditor, EditorContent: EC },\n { default: StarterKit },\n { default: LinkExt },\n { MergeTagNode, MergeTagSuggestion, LogicMergeTagNode },\n ] = await Promise.all([\n import(\"@tiptap/vue-3\"),\n import(\"@tiptap/starter-kit\"),\n import(\"@tiptap/extension-link\"),\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 bulletList: false,\n orderedList: false,\n listItem: false,\n strike: false,\n }),\n LinkExt.configure({\n openOnClick: false,\n HTMLAttributes: {\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n },\n }),\n MergeTagNode.configure({ mergeTags, syntax }),\n LogicMergeTagNode.configure({ syntax }),\n ...(autocompleteEnabled && triggerChar && mergeTags.length > 0\n ? [\n MergeTagSuggestion.configure({\n mergeTags,\n char: triggerChar,\n emptyText: suggestionEmptyText,\n popoverRoot,\n }),\n ]\n : []),\n ],\n };\n },\n});\n</script>\n\n<template>\n <div class=\"tpl-text-editor-wrapper tpl:relative\">\n <Teleport v-if=\"popoverRoot\" :to=\"popoverRoot\">\n <div\n :data-tpl-theme=\"tplUiTheme\"\n role=\"toolbar\"\n :aria-label=\"t.titleEditor.toolbar\"\n 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\"\n :style=\"{\n ...themeStyles,\n top: `${toolbarPosition.top}px`,\n left: `${toolbarPosition.left}px`,\n transform: 'translateY(-100%)',\n }\"\n >\n <template v-if=\"!isLoading && editor\">\n <!-- Bold -->\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.titleEditor.bold\"\n :title=\"t.titleEditor.bold\"\n @click=\"editor?.chain().focus().toggleBold().run()\"\n >\n <Bold :size=\"16\" :stroke-width=\"2.5\" />\n </button>\n <!-- Italic -->\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.titleEditor.italic\"\n :title=\"t.titleEditor.italic\"\n @click=\"editor?.chain().focus().toggleItalic().run()\"\n >\n <Italic :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 <!-- 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.titleEditor.addLink\"\n :title=\"t.titleEditor.addLink\"\n @click=\"openLinkDialog\"\n >\n <Link :size=\"16\" :stroke-width=\"2\" />\n </button>\n <!-- Add Merge Tag -->\n <span\n v-if=\"canRequestMergeTag\"\n class=\"tpl:mx-1.5 tpl:h-6 tpl:w-px tpl:bg-[var(--tpl-border)]\"\n ></span>\n <button\n v-if=\"canRequestMergeTag\"\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=\"handleAddMergeTag\"\n >\n <ScanLine :size=\"16\" :stroke-width=\"2\" />\n {{ t.mergeTag.add }}\n </button>\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\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"],"mappings":"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"}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { D as a, F as o, J as s, M as c, O as l, T as u, U as d, a as f } from "./icons-
|
|
1
|
+
import { Tt as e, bt as t, ft as n, gt as r, lt as i } from "./features-CXF_YKlL.js";
|
|
2
|
+
import { D as a, F as o, J as s, M as c, O as l, T as u, U as d, a as f } from "./icons-KbmhF7rg.js";
|
|
3
3
|
//#region src/utils/blockTypeIcons.ts
|
|
4
4
|
var p = {
|
|
5
5
|
section: s,
|
|
6
6
|
title: d,
|
|
7
7
|
paragraph: l,
|
|
8
|
-
image:
|
|
8
|
+
image: t,
|
|
9
9
|
button: u,
|
|
10
10
|
divider: o,
|
|
11
11
|
video: a,
|
|
12
|
-
social:
|
|
13
|
-
menu:
|
|
14
|
-
table:
|
|
12
|
+
social: n,
|
|
13
|
+
menu: r,
|
|
14
|
+
table: i,
|
|
15
15
|
spacer: c,
|
|
16
16
|
countdown: f,
|
|
17
|
-
html:
|
|
17
|
+
html: e
|
|
18
18
|
};
|
|
19
19
|
//#endregion
|
|
20
20
|
export { p as t };
|
|
21
21
|
|
|
22
|
-
//# sourceMappingURL=blockTypeIcons-
|
|
22
|
+
//# sourceMappingURL=blockTypeIcons-D3CGFW5P.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockTypeIcons-
|
|
1
|
+
{"version":3,"file":"blockTypeIcons-D3CGFW5P.js","names":[],"sources":["../../../src/utils/blockTypeIcons.ts"],"sourcesContent":["import {\n Code,\n Columns3,\n Heading,\n Image,\n Minus,\n MoveVertical,\n Navigation,\n Pilcrow,\n Play,\n RectangleHorizontal,\n Share2,\n Table,\n Timer,\n} from \"@lucide/vue\";\nimport type { Component } from \"vue\";\n\nexport const blockTypeIcons: Record<string, Component> = {\n section: Columns3,\n title: Heading,\n paragraph: Pilcrow,\n image: Image,\n button: RectangleHorizontal,\n divider: Minus,\n video: Play,\n social: Share2,\n menu: Navigation,\n table: Table,\n spacer: MoveVertical,\n countdown: Timer,\n html: Code,\n};\n"],"mappings":";;;AAiBA,IAAa,IAA4C;CACvD,SAAS;CACT,OAAO;CACP,WAAW;CACX,OAAO;CACP,QAAQ;CACR,SAAS;CACT,OAAO;CACP,QAAQ;CACR,MAAM;CACN,OAAO;CACP,QAAQ;CACR,WAAW;CACX,MAAM;CACP"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { C as e, H as t, M as n, O as r, P as i, V as a, Z as o, c as s, ct as c, f as l, g as u, h as d, it as f, l as p, m, o as h, ot as g, p as _, r as v, st as y, u as b, x } from "./draggable-P6QWzy4g.js";
|
|
2
|
-
import {
|
|
2
|
+
import { $ as S, Ft as C, _n as w, gn as T, mn as E, vn as D } from "./features-CXF_YKlL.js";
|
|
3
3
|
import { _ as O, g as k, h as A, n as j, r as M, t as N, v as P, y as F } from "./tiptap-BwTCLVWl.js";
|
|
4
4
|
//#region src/extensions/FontSize.ts
|
|
5
5
|
var I = A.create({
|
|
@@ -82,9 +82,9 @@ var I = A.create({
|
|
|
82
82
|
updateAttributes: { type: Function }
|
|
83
83
|
},
|
|
84
84
|
setup(e) {
|
|
85
|
-
let i = e, { syntax: v } =
|
|
85
|
+
let i = e, { syntax: v } = S(), { t: b } = C(), x = l(() => D(i.node.attrs.value, v)), w = l(() => T(i.node.attrs.value, v)), E = o(!1), O = o(""), k = o(null), A = !1;
|
|
86
86
|
function M() {
|
|
87
|
-
O.value = i.node.attrs.value, A = !1,
|
|
87
|
+
O.value = i.node.attrs.value, A = !1, E.value = !0, r(() => {
|
|
88
88
|
k.value?.focus(), k.value?.select();
|
|
89
89
|
});
|
|
90
90
|
}
|
|
@@ -93,16 +93,16 @@ var I = A.create({
|
|
|
93
93
|
A = !0;
|
|
94
94
|
let e = O.value.trim();
|
|
95
95
|
if (!e) {
|
|
96
|
-
|
|
96
|
+
E.value = !1;
|
|
97
97
|
return;
|
|
98
98
|
}
|
|
99
99
|
e !== i.node.attrs.value && i.updateAttributes({
|
|
100
100
|
value: e,
|
|
101
|
-
keyword:
|
|
102
|
-
}),
|
|
101
|
+
keyword: D(e, v) ? T(e, v) : ""
|
|
102
|
+
}), E.value = !1;
|
|
103
103
|
}
|
|
104
104
|
function P(e) {
|
|
105
|
-
e.key === "Enter" ? (e.preventDefault(), N()) : e.key === "Escape" && (
|
|
105
|
+
e.key === "Enter" ? (e.preventDefault(), N()) : e.key === "Escape" && (E.value = !1);
|
|
106
106
|
}
|
|
107
107
|
return (r, i) => (n(), m(f(j), {
|
|
108
108
|
as: "span",
|
|
@@ -110,7 +110,7 @@ var I = A.create({
|
|
|
110
110
|
style: y(x.value ? "background-color: transparent; border: 1.5px solid color-mix(in srgb, var(--tpl-primary) 50%, transparent); color: var(--tpl-primary);" : ""),
|
|
111
111
|
contenteditable: "false"
|
|
112
112
|
}, {
|
|
113
|
-
default: a(() => [
|
|
113
|
+
default: a(() => [E.value ? t((n(), u("input", {
|
|
114
114
|
key: 0,
|
|
115
115
|
ref_key: "inputRef",
|
|
116
116
|
ref: k,
|
|
@@ -128,7 +128,7 @@ var I = A.create({
|
|
|
128
128
|
"data-tooltip": e.node.attrs.value,
|
|
129
129
|
onClick: p(M, ["stop"]),
|
|
130
130
|
onKeydown: [s(p(M, ["stop"]), ["enter"]), s(p(M, ["prevent", "stop"]), ["space"])]
|
|
131
|
-
}, c(
|
|
131
|
+
}, c(w.value), 41, ee)) : (n(), u("span", {
|
|
132
132
|
key: 2,
|
|
133
133
|
role: "button",
|
|
134
134
|
tabindex: "0",
|
|
@@ -184,7 +184,7 @@ var H = O.create({
|
|
|
184
184
|
inline: !0,
|
|
185
185
|
atom: !0,
|
|
186
186
|
addOptions() {
|
|
187
|
-
return { syntax:
|
|
187
|
+
return { syntax: E.liquid };
|
|
188
188
|
},
|
|
189
189
|
addAttributes() {
|
|
190
190
|
return {
|
|
@@ -202,12 +202,12 @@ var H = O.create({
|
|
|
202
202
|
return [{ tag: "span[data-logic-merge-tag]" }];
|
|
203
203
|
},
|
|
204
204
|
renderHTML({ node: e, HTMLAttributes: t }) {
|
|
205
|
-
if (!
|
|
205
|
+
if (!D(e.attrs.value, this.options.syntax)) return [
|
|
206
206
|
"span",
|
|
207
207
|
{},
|
|
208
208
|
e.attrs.value
|
|
209
209
|
];
|
|
210
|
-
let n =
|
|
210
|
+
let n = T(e.attrs.value, this.options.syntax);
|
|
211
211
|
return [
|
|
212
212
|
"span",
|
|
213
213
|
F(t, {
|
|
@@ -231,8 +231,8 @@ var H = O.create({
|
|
|
231
231
|
find: RegExp(this.options.syntax.logic.source + "$", ""),
|
|
232
232
|
handler: ({ state: e, range: t, match: n }) => {
|
|
233
233
|
let r = n[0];
|
|
234
|
-
if (!
|
|
235
|
-
let i =
|
|
234
|
+
if (!D(r, this.options.syntax)) return;
|
|
235
|
+
let i = T(r, this.options.syntax), a = this.type.create({
|
|
236
236
|
value: r,
|
|
237
237
|
keyword: i
|
|
238
238
|
});
|
|
@@ -245,8 +245,8 @@ var H = O.create({
|
|
|
245
245
|
find: new RegExp(this.options.syntax.logic.source, "g"),
|
|
246
246
|
handler: ({ state: e, range: t, match: n }) => {
|
|
247
247
|
let r = n[0];
|
|
248
|
-
if (!
|
|
249
|
-
let i =
|
|
248
|
+
if (!D(r, this.options.syntax)) return;
|
|
249
|
+
let i = T(r, this.options.syntax), a = this.type.create({
|
|
250
250
|
value: r,
|
|
251
251
|
keyword: i
|
|
252
252
|
});
|
|
@@ -266,7 +266,7 @@ var H = O.create({
|
|
|
266
266
|
updateAttributes: { type: Function }
|
|
267
267
|
},
|
|
268
268
|
setup(e) {
|
|
269
|
-
let i = e, { getMergeTagLabel: d } =
|
|
269
|
+
let i = e, { getMergeTagLabel: d } = S(), { t: g } = C(), v = l(() => d(i.node.attrs.value)), y = o(!1), b = o(""), x = o(null);
|
|
270
270
|
function w() {
|
|
271
271
|
b.value = i.node.attrs.value, y.value = !0, r(() => {
|
|
272
272
|
x.value?.focus(), x.value?.select();
|
|
@@ -342,7 +342,7 @@ var H = O.create({
|
|
|
342
342
|
addOptions() {
|
|
343
343
|
return {
|
|
344
344
|
mergeTags: [],
|
|
345
|
-
syntax:
|
|
345
|
+
syntax: E.liquid
|
|
346
346
|
};
|
|
347
347
|
},
|
|
348
348
|
addAttributes() {
|
|
@@ -361,7 +361,7 @@ var H = O.create({
|
|
|
361
361
|
return [{ tag: "span[data-merge-tag]" }];
|
|
362
362
|
},
|
|
363
363
|
renderHTML({ node: e, HTMLAttributes: t }) {
|
|
364
|
-
let n =
|
|
364
|
+
let n = w(e.attrs.value, this.options.mergeTags);
|
|
365
365
|
return [
|
|
366
366
|
"span",
|
|
367
367
|
F(t, {
|
|
@@ -390,7 +390,7 @@ var H = O.create({
|
|
|
390
390
|
return [new k({
|
|
391
391
|
find: RegExp(this.options.syntax.value.source + "$", ""),
|
|
392
392
|
handler: ({ state: e, range: t, match: n }) => {
|
|
393
|
-
let r = n[0], i =
|
|
393
|
+
let r = n[0], i = w(r, this.options.mergeTags), a = this.type.create({
|
|
394
394
|
label: i,
|
|
395
395
|
value: r
|
|
396
396
|
});
|
|
@@ -402,7 +402,7 @@ var H = O.create({
|
|
|
402
402
|
return [new P({
|
|
403
403
|
find: new RegExp(this.options.syntax.value.source, "g"),
|
|
404
404
|
handler: ({ state: e, range: t, match: n }) => {
|
|
405
|
-
let r = n[0], i =
|
|
405
|
+
let r = n[0], i = w(r, this.options.mergeTags), a = this.type.create({
|
|
406
406
|
label: i,
|
|
407
407
|
value: r
|
|
408
408
|
});
|
|
@@ -491,14 +491,16 @@ var oe = A.create({
|
|
|
491
491
|
}).run();
|
|
492
492
|
},
|
|
493
493
|
render: () => {
|
|
494
|
-
let t = null, i = null, a = null, s = o([]), c = o(0), l = null, u = `tpl-merge-tag-suggestion-${++ae}`, d = null, f = [];
|
|
495
|
-
function p() {
|
|
496
|
-
y(d?.() ?? null);
|
|
497
|
-
}
|
|
494
|
+
let t = null, i = null, a = null, s = o([]), c = o(0), l = null, u = `tpl-merge-tag-suggestion-${++ae}`, d = null, f = [], p = null;
|
|
498
495
|
function m() {
|
|
499
|
-
|
|
496
|
+
b(d?.() ?? null);
|
|
497
|
+
}
|
|
498
|
+
function h() {
|
|
499
|
+
m(), p !== null && cancelAnimationFrame(p), p = requestAnimationFrame(() => {
|
|
500
|
+
p = null, m();
|
|
501
|
+
});
|
|
500
502
|
}
|
|
501
|
-
function
|
|
503
|
+
function g(e) {
|
|
502
504
|
let t = [], n = e?.parentElement ?? null;
|
|
503
505
|
for (; n && n !== document.body && n !== document.documentElement;) {
|
|
504
506
|
let e = window.getComputedStyle(n), r = e.overflow + e.overflowX + e.overflowY;
|
|
@@ -506,19 +508,19 @@ var oe = A.create({
|
|
|
506
508
|
}
|
|
507
509
|
return t;
|
|
508
510
|
}
|
|
509
|
-
function
|
|
510
|
-
f = [window, ...
|
|
511
|
-
for (let e of f) e.addEventListener("scroll",
|
|
511
|
+
function _(e) {
|
|
512
|
+
f = [window, ...g(e)];
|
|
513
|
+
for (let e of f) e.addEventListener("scroll", m, {
|
|
512
514
|
passive: !0,
|
|
513
515
|
capture: !0
|
|
514
516
|
});
|
|
515
|
-
window.addEventListener("resize",
|
|
517
|
+
window.addEventListener("resize", m, { passive: !0 });
|
|
516
518
|
}
|
|
517
|
-
function
|
|
518
|
-
for (let e of f) e.removeEventListener("scroll",
|
|
519
|
-
window.removeEventListener("resize",
|
|
519
|
+
function y() {
|
|
520
|
+
for (let e of f) e.removeEventListener("scroll", m, { capture: !0 });
|
|
521
|
+
window.removeEventListener("resize", m), f = [];
|
|
520
522
|
}
|
|
521
|
-
function
|
|
523
|
+
function b(e) {
|
|
522
524
|
if (!i || !e || e.bottom < 0 || e.top > window.innerHeight) return;
|
|
523
525
|
i.style.position = "fixed", i.style.left = `${e.left}px`, i.style.zIndex = "9999", i.style.top = `${e.bottom}px`;
|
|
524
526
|
let t = i.offsetHeight;
|
|
@@ -527,7 +529,7 @@ var oe = A.create({
|
|
|
527
529
|
i.style.top = `${n}px`;
|
|
528
530
|
}
|
|
529
531
|
}
|
|
530
|
-
function
|
|
532
|
+
function x(e, t) {
|
|
531
533
|
let n = t?.closest("[data-tpl-theme]");
|
|
532
534
|
if (!n) return;
|
|
533
535
|
let r = n.getAttribute("data-tpl-theme");
|
|
@@ -539,10 +541,10 @@ var oe = A.create({
|
|
|
539
541
|
}
|
|
540
542
|
e.style.fontFamily = i.fontFamily, e.style.fontSize = i.fontSize, e.style.lineHeight = i.lineHeight;
|
|
541
543
|
}
|
|
542
|
-
function
|
|
544
|
+
function S(e) {
|
|
543
545
|
a && (e ? (a.setAttribute("role", "combobox"), a.setAttribute("aria-haspopup", "listbox"), a.setAttribute("aria-expanded", "true"), a.setAttribute("aria-controls", u)) : (a.removeAttribute("aria-expanded"), a.removeAttribute("aria-controls"), a.removeAttribute("aria-activedescendant"), a.removeAttribute("aria-haspopup"), a.removeAttribute("role")));
|
|
544
546
|
}
|
|
545
|
-
function
|
|
547
|
+
function C() {
|
|
546
548
|
if (a) {
|
|
547
549
|
if (s.value.length === 0) {
|
|
548
550
|
a.removeAttribute("aria-activedescendant");
|
|
@@ -551,36 +553,36 @@ var oe = A.create({
|
|
|
551
553
|
a.setAttribute("aria-activedescendant", `${u}-opt-${c.value}`);
|
|
552
554
|
}
|
|
553
555
|
}
|
|
554
|
-
function
|
|
556
|
+
function w(e) {
|
|
555
557
|
l?.(e);
|
|
556
558
|
}
|
|
557
559
|
return {
|
|
558
560
|
onStart: (o) => {
|
|
559
561
|
s.value = o.items, c.value = 0, l = (e) => o.command(e), i = document.createElement("div"), i.setAttribute("data-testid", "merge-tag-suggestion-popup");
|
|
560
562
|
let f = o.editor.view?.dom;
|
|
561
|
-
a = f ?? null,
|
|
563
|
+
a = f ?? null, x(i, f ?? null), (r?.value ?? document.body).appendChild(i), t = v({ render() {
|
|
562
564
|
return e(ie, {
|
|
563
565
|
items: s.value,
|
|
564
566
|
selectedIndex: c.value,
|
|
565
567
|
emptyText: n,
|
|
566
568
|
listId: u,
|
|
567
|
-
onSelect: (e) =>
|
|
569
|
+
onSelect: (e) => w(e),
|
|
568
570
|
onHover: (e) => {
|
|
569
|
-
c.value = e,
|
|
571
|
+
c.value = e, C();
|
|
570
572
|
}
|
|
571
573
|
});
|
|
572
|
-
} }), t.mount(i),
|
|
574
|
+
} }), t.mount(i), S(!0), C(), d = o.clientRect ?? null, h(), _(f ?? null);
|
|
573
575
|
},
|
|
574
576
|
onUpdate: (e) => {
|
|
575
|
-
s.value = e.items, c.value >= e.items.length && (c.value = 0), l = (t) => e.command(t),
|
|
577
|
+
s.value = e.items, c.value >= e.items.length && (c.value = 0), l = (t) => e.command(t), C(), d = e.clientRect ?? null, h();
|
|
576
578
|
},
|
|
577
579
|
onKeyDown: (e) => {
|
|
578
580
|
if (e.event.key === "Escape") return !0;
|
|
579
|
-
let t = $(e.event, s.value, c,
|
|
580
|
-
return t &&
|
|
581
|
+
let t = $(e.event, s.value, c, w);
|
|
582
|
+
return t && C(), t;
|
|
581
583
|
},
|
|
582
584
|
onExit: () => {
|
|
583
|
-
|
|
585
|
+
p !== null && (cancelAnimationFrame(p), p = null), y(), S(!1), t?.unmount(), i?.remove(), t = null, i = null, a = null, l = null, d = null;
|
|
584
586
|
}
|
|
585
587
|
};
|
|
586
588
|
}
|
|
@@ -594,4 +596,4 @@ var oe = A.create({
|
|
|
594
596
|
//#endregion
|
|
595
597
|
export { I as FontSize, L as LetterSpacing, R as LineHeight, H as LogicMergeTagNode, K as MergeTagNode, oe as MergeTagSuggestion, Q as filterMergeTags, $ as handleSuggestionKeyDown };
|
|
596
598
|
|
|
597
|
-
//# sourceMappingURL=extensions-
|
|
599
|
+
//# sourceMappingURL=extensions-BE81zpqP.js.map
|