@templatical/editor 0.41.0 → 0.42.0
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-a8TPBAl2.js → AiChatSidebar-DqSoJAXx.js} +1 -1
- package/dist/{AiFeatureMenu-CroDMqRG.js → AiFeatureMenu-CoBvE72q.js} +1 -1
- package/dist/{BlockPreviewCanvas-Z9SZIgfA.js → BlockPreviewCanvas-W6-MRpWz.js} +33 -33
- package/dist/{CloudHeaderExtras-CVqHeqc6.js → CloudHeaderExtras-AbsNuL9T.js} +1 -1
- package/dist/{CloudPanels-CmEpQUJB.js → CloudPanels-BNL6rSeB.js} +2 -2
- package/dist/{CollaboratorBar-AIQC9fEF.js → CollaboratorBar-DlZ-wOL_.js} +1 -1
- package/dist/{CountdownToolbar-DkC-qSgq.js → CountdownToolbar-Bnq25sR-.js} +3 -3
- package/dist/{DesignReferenceSidebar-OoiYJAKS.js → DesignReferenceSidebar-Cl5eE8Kn.js} +1 -1
- package/dist/{LogicTagInsertButton-BimKobaG.js → LogicTagInsertButton-SI6irEtn.js} +243 -219
- package/dist/{MergeTagInput-DqpVzhy7.js → MergeTagInput-BMQGNh1k.js} +1 -1
- package/dist/{MergeTagModeToggle-BkIiAgpQ.js → MergeTagModeToggle-Cm9s-w6o.js} +1 -1
- package/dist/{ParagraphEditor-DaZ03d1U.js → ParagraphEditor-CnBPQCVo.js} +19 -19
- package/dist/{RestoreVersionDialog-DHb1mPoF.js → RestoreVersionDialog-B13whpxH.js} +1 -1
- package/dist/{RichTextEditorContent-AEtfKvLz.js → RichTextEditorContent-DOvhgc-7.js} +3 -3
- package/dist/{SaveBlockDialog-hGwLDWfE.js → SaveBlockDialog-b5yrQfoN.js} +5 -5
- package/dist/{SavedBlocksBrowserModal-C0lYVBFi.js → SavedBlocksBrowserModal-DpqK4Zqp.js} +4 -4
- package/dist/{SavedBlocksPanels-CaTbeVDv.js → SavedBlocksPanels-C2wURIlT.js} +1 -1
- package/dist/{SavedBlocksPickBar-DR2afid2.js → SavedBlocksPickBar-Bx9_SXVA.js} +1 -1
- package/dist/{TemplateSettings-BD1WNP4C.js → TemplateSettings-Gn9ps1R6.js} +3 -3
- package/dist/{TestEmailModal-DqoosG1u.js → TestEmailModal-DaIaklcg.js} +5 -5
- package/dist/{TestEmailPanel-DpozqyHF.js → TestEmailPanel-CKSvzakC.js} +1 -1
- package/dist/{TitleEditor-BCBdZLt_.js → TitleEditor-C66Jk73n.js} +7 -7
- package/dist/{ToggleSwitch-CJfQ8u57.js → ToggleSwitch-BqttX9lY.js} +1 -1
- package/dist/{Toolbar-C7SjilzH.js → Toolbar-DVsKYQaC.js} +846 -553
- package/dist/{TplModal-CVO-2KrU.js → TplModal-DRQln7xH.js} +2 -2
- package/dist/{VersionHistoryPanels-BzF7dmwa.js → VersionHistoryPanels-Df5WjNah.js} +1 -1
- package/dist/{WrapperBlock-BDjOn3fY.js → WrapperBlock-B0cUORGz.js} +4 -4
- package/dist/{blockTypeIcons-B0Bq1WT1.js → blockTypeIcons-DfQNZnl7.js} +1 -1
- package/dist/bundle-stats.json +6 -6
- package/dist/{ca-Ckgw9yd0.js → ca--zGWn9AU.js} +14 -0
- package/dist/cdn/chunks/{AiChatSidebar-mKImUXi6.js → AiChatSidebar-DD17BwXn.js} +10 -10
- package/dist/cdn/chunks/{AiChatSidebar-mKImUXi6.js.map → AiChatSidebar-DD17BwXn.js.map} +1 -1
- package/dist/cdn/chunks/{AiFeatureMenu-Cx3qdStQ.js → AiFeatureMenu-Di381OsL.js} +5 -5
- package/dist/cdn/chunks/{AiFeatureMenu-Cx3qdStQ.js.map → AiFeatureMenu-Di381OsL.js.map} +1 -1
- package/dist/cdn/chunks/{BlockIssueBadge-DS1pUf5g.js → BlockIssueBadge-BR_N3nRh.js} +2 -2
- package/dist/cdn/chunks/{BlockIssueBadge-DS1pUf5g.js.map → BlockIssueBadge-BR_N3nRh.js.map} +1 -1
- package/dist/cdn/chunks/{BlockPreviewCanvas-D31TNib3.js → BlockPreviewCanvas-BXpcAiiY.js} +28 -28
- package/dist/cdn/chunks/{BlockPreviewCanvas-D31TNib3.js.map → BlockPreviewCanvas-BXpcAiiY.js.map} +1 -1
- package/dist/cdn/chunks/{CloudHeaderExtras-0zdlKiq7.js → CloudHeaderExtras-BEM2eWfF.js} +3 -3
- package/dist/cdn/chunks/{CloudHeaderExtras-0zdlKiq7.js.map → CloudHeaderExtras-BEM2eWfF.js.map} +1 -1
- package/dist/cdn/chunks/{CloudPanels-DPh71yOO.js → CloudPanels-D7nK1-bm.js} +4 -4
- package/dist/cdn/chunks/{CloudPanels-DPh71yOO.js.map → CloudPanels-D7nK1-bm.js.map} +1 -1
- package/dist/cdn/chunks/{CollaboratorBar-lCZU8qkg.js → CollaboratorBar-D1SUwahw.js} +3 -3
- package/dist/cdn/chunks/{CollaboratorBar-lCZU8qkg.js.map → CollaboratorBar-D1SUwahw.js.map} +1 -1
- package/dist/cdn/chunks/{CommentsPanel-BtAGZfF6.js → CommentsPanel-qsLMAlJU.js} +2 -2
- package/dist/cdn/chunks/{CommentsPanel-BtAGZfF6.js.map → CommentsPanel-qsLMAlJU.js.map} +1 -1
- package/dist/cdn/chunks/{CommentsSidebar-Ws07MXYj.js → CommentsSidebar-CTwEE-s_.js} +16 -16
- package/dist/cdn/chunks/{CommentsSidebar-Ws07MXYj.js.map → CommentsSidebar-CTwEE-s_.js.map} +1 -1
- package/dist/cdn/chunks/{CountdownToolbar-Bu93WiS8.js → CountdownToolbar-BJTcnIQ-.js} +4 -4
- package/dist/cdn/chunks/{CountdownToolbar-Bu93WiS8.js.map → CountdownToolbar-BJTcnIQ-.js.map} +1 -1
- package/dist/cdn/chunks/{DesignReferenceSidebar-BlSdh5B7.js → DesignReferenceSidebar-Dl3eEGtS.js} +9 -9
- package/dist/cdn/chunks/{DesignReferenceSidebar-BlSdh5B7.js.map → DesignReferenceSidebar-Dl3eEGtS.js.map} +1 -1
- package/dist/cdn/chunks/{IssuesPanel-CKkv9z9g.js → IssuesPanel-L9Gq_T8n.js} +8 -8
- package/dist/cdn/chunks/{IssuesPanel-CKkv9z9g.js.map → IssuesPanel-L9Gq_T8n.js.map} +1 -1
- package/dist/cdn/chunks/{LogicTagInsertButton-CHc1yZ9v.js → LogicTagInsertButton-3pIbVE9p.js} +250 -226
- package/dist/cdn/chunks/LogicTagInsertButton-3pIbVE9p.js.map +1 -0
- package/dist/cdn/chunks/{MediaEditModal-Cw9MhjVz.js → MediaEditModal-rTjYl-fV.js} +2 -2
- package/dist/cdn/chunks/{MediaEditModal-Cw9MhjVz.js.map → MediaEditModal-rTjYl-fV.js.map} +1 -1
- package/dist/cdn/chunks/{MediaPanels-FD_aX3H5.js → MediaPanels-DMXRQVqg.js} +2 -2
- package/dist/cdn/chunks/{MediaPanels-FD_aX3H5.js.map → MediaPanels-DMXRQVqg.js.map} +1 -1
- package/dist/cdn/chunks/{MergeTagInput--qTYfCWk.js → MergeTagInput-JcBzr77a.js} +2 -2
- package/dist/cdn/chunks/{MergeTagInput--qTYfCWk.js.map → MergeTagInput-JcBzr77a.js.map} +1 -1
- package/dist/cdn/chunks/{MergeTagModeToggle-CdWIGo3Q.js → MergeTagModeToggle-CYmueXS2.js} +10 -10
- package/dist/cdn/chunks/{MergeTagModeToggle-CdWIGo3Q.js.map → MergeTagModeToggle-CYmueXS2.js.map} +1 -1
- package/dist/cdn/chunks/{ParagraphEditor-w2qEZTkM.js → ParagraphEditor-DbjFDnYm.js} +39 -39
- package/dist/cdn/chunks/{ParagraphEditor-w2qEZTkM.js.map → ParagraphEditor-DbjFDnYm.js.map} +1 -1
- package/dist/cdn/chunks/{RestoreVersionDialog-cnWVN3nX.js → RestoreVersionDialog-pANCWcce.js} +3 -3
- package/dist/cdn/chunks/{RestoreVersionDialog-cnWVN3nX.js.map → RestoreVersionDialog-pANCWcce.js.map} +1 -1
- package/dist/cdn/chunks/{RichTextEditorContent-Fzuu9pLP.js → RichTextEditorContent-BtM1or8A.js} +5 -5
- package/dist/cdn/chunks/{RichTextEditorContent-Fzuu9pLP.js.map → RichTextEditorContent-BtM1or8A.js.map} +1 -1
- package/dist/cdn/chunks/{SaveBlockDialog-jxQtKnVs.js → SaveBlockDialog-CGM3mrGj.js} +38 -38
- package/dist/cdn/chunks/{SaveBlockDialog-jxQtKnVs.js.map → SaveBlockDialog-CGM3mrGj.js.map} +1 -1
- package/dist/cdn/chunks/{SavedBlocksBrowserModal-DpXWf4Pi.js → SavedBlocksBrowserModal-C6Z8AvtD.js} +10 -10
- package/dist/cdn/chunks/{SavedBlocksBrowserModal-DpXWf4Pi.js.map → SavedBlocksBrowserModal-C6Z8AvtD.js.map} +1 -1
- package/dist/cdn/chunks/{SavedBlocksPanels-B-ASmf1P.js → SavedBlocksPanels-DNwKmnhp.js} +2 -2
- package/dist/cdn/chunks/{SavedBlocksPanels-B-ASmf1P.js.map → SavedBlocksPanels-DNwKmnhp.js.map} +1 -1
- package/dist/cdn/chunks/{SavedBlocksPickBar-CEFIQ8Nd.js → SavedBlocksPickBar-D2p1ufB4.js} +3 -3
- package/dist/cdn/chunks/{SavedBlocksPickBar-CEFIQ8Nd.js.map → SavedBlocksPickBar-D2p1ufB4.js.map} +1 -1
- package/dist/cdn/chunks/{TemplateScoringPanel-d_Ppowsq.js → TemplateScoringPanel-BDB4RErx.js} +19 -19
- package/dist/cdn/chunks/{TemplateScoringPanel-d_Ppowsq.js.map → TemplateScoringPanel-BDB4RErx.js.map} +1 -1
- package/dist/cdn/chunks/{TemplateSettings-Dr5OJ0Gi.js → TemplateSettings-DVN1t3yF.js} +9 -9
- package/dist/cdn/chunks/{TemplateSettings-Dr5OJ0Gi.js.map → TemplateSettings-DVN1t3yF.js.map} +1 -1
- package/dist/cdn/chunks/{TestEmailModal-CrjzVw8e.js → TestEmailModal-DZBCmBtT.js} +7 -7
- package/dist/cdn/chunks/{TestEmailModal-CrjzVw8e.js.map → TestEmailModal-DZBCmBtT.js.map} +1 -1
- package/dist/cdn/chunks/{TestEmailPanel-k9vdulTu.js → TestEmailPanel-1ibwYCUl.js} +2 -2
- package/dist/cdn/chunks/{TestEmailPanel-k9vdulTu.js.map → TestEmailPanel-1ibwYCUl.js.map} +1 -1
- package/dist/cdn/chunks/{TitleEditor-laILWfKh.js → TitleEditor-BRl2qKbd.js} +13 -13
- package/dist/cdn/chunks/{TitleEditor-laILWfKh.js.map → TitleEditor-BRl2qKbd.js.map} +1 -1
- package/dist/cdn/chunks/{ToggleSwitch-0dGCYnRY.js → ToggleSwitch-niSL2uog.js} +2 -2
- package/dist/cdn/chunks/{ToggleSwitch-0dGCYnRY.js.map → ToggleSwitch-niSL2uog.js.map} +1 -1
- package/dist/cdn/chunks/{Toolbar-BsiHW9gY.js → Toolbar-tTl0P-rr.js} +814 -566
- package/dist/cdn/chunks/Toolbar-tTl0P-rr.js.map +1 -0
- package/dist/cdn/chunks/{TplModal-D8DoPbFa.js → TplModal-C_eIPykE.js} +3 -3
- package/dist/cdn/chunks/{TplModal-D8DoPbFa.js.map → TplModal-C_eIPykE.js.map} +1 -1
- package/dist/cdn/chunks/{VersionHistoryMenu-B3-hNu9c.js → VersionHistoryMenu-Ww57XAzj.js} +7 -7
- package/dist/cdn/chunks/{VersionHistoryMenu-B3-hNu9c.js.map → VersionHistoryMenu-Ww57XAzj.js.map} +1 -1
- package/dist/cdn/chunks/{VersionHistoryPanels-zw1AtzGN.js → VersionHistoryPanels-w0EG_qVW.js} +2 -2
- package/dist/cdn/chunks/{VersionHistoryPanels-zw1AtzGN.js.map → VersionHistoryPanels-w0EG_qVW.js.map} +1 -1
- package/dist/cdn/chunks/{VersionPreviewBanner-PzVQSBJE.js → VersionPreviewBanner-Bbd4C-AN.js} +2 -2
- package/dist/cdn/chunks/{VersionPreviewBanner-PzVQSBJE.js.map → VersionPreviewBanner-Bbd4C-AN.js.map} +1 -1
- package/dist/cdn/chunks/{WrapperBlock-CpRvfAV0.js → WrapperBlock-Ch4KeMIb.js} +4 -4
- package/dist/cdn/chunks/{WrapperBlock-CpRvfAV0.js.map → WrapperBlock-Ch4KeMIb.js.map} +1 -1
- package/dist/cdn/chunks/blockTypeIcons-CyPXFh7L.js +21 -0
- package/dist/cdn/chunks/{blockTypeIcons-raBjStuv.js.map → blockTypeIcons-CyPXFh7L.js.map} +1 -1
- package/dist/cdn/chunks/{ca-Ckgw9yd0.js → ca--zGWn9AU.js} +15 -1
- package/dist/cdn/chunks/ca--zGWn9AU.js.map +1 -0
- package/dist/cdn/chunks/{cloud-CIT4yPp4.js → cloud-De-eh1u6.js} +2 -2
- package/dist/cdn/chunks/{cloud-CIT4yPp4.js.map → cloud-De-eh1u6.js.map} +1 -1
- package/dist/cdn/chunks/{createCloudRuntime-COUxbPvd.js → createCloudRuntime-DsaUaWvr.js} +3 -3
- package/dist/cdn/chunks/{createCloudRuntime-COUxbPvd.js.map → createCloudRuntime-DsaUaWvr.js.map} +1 -1
- package/dist/cdn/chunks/{de-D4dweQw8.js → de-BRNLKcDl.js} +15 -1
- package/dist/cdn/chunks/de-BRNLKcDl.js.map +1 -0
- package/dist/cdn/chunks/{editor-modal-CKu8HhiB.js → editor-modal-BdI0iA5r.js} +88 -88
- package/dist/cdn/chunks/{editor-modal-CKu8HhiB.js.map → editor-modal-BdI0iA5r.js.map} +1 -1
- package/dist/cdn/chunks/en-Cs-nw16K.js +2 -0
- package/dist/{en-VE7R7NyL.js → cdn/chunks/en-JJjqHMjy.js} +16 -0
- package/dist/cdn/chunks/en-JJjqHMjy.js.map +1 -0
- package/dist/cdn/chunks/{es-B9OhP8H3.js → es-BIh8BxV9.js} +15 -1
- package/dist/cdn/chunks/es-BIh8BxV9.js.map +1 -0
- package/dist/cdn/chunks/{extensions-CafoGF65.js → extensions-DK_9-6Bd.js} +4 -4
- package/dist/cdn/chunks/{extensions-CafoGF65.js.map → extensions-DK_9-6Bd.js.map} +1 -1
- package/dist/{fr-wrXhIi00.js → cdn/chunks/fr-C5VUZogP.js} +16 -0
- package/dist/cdn/chunks/fr-C5VUZogP.js.map +1 -0
- package/dist/cdn/chunks/{icons-BKkJ-5xF.js → icons-Bad3WZ3G.js} +49 -8
- package/dist/cdn/chunks/icons-Bad3WZ3G.js.map +1 -0
- package/dist/cdn/chunks/{ja-fKnVWXHC.js → ja-x5JYxaCW.js} +15 -1
- package/dist/cdn/chunks/ja-x5JYxaCW.js.map +1 -0
- package/dist/cdn/chunks/{nl-DeFatKJe.js → nl-UXxFyXV6.js} +15 -1
- package/dist/cdn/chunks/{nl-DeFatKJe.js.map → nl-UXxFyXV6.js.map} +1 -1
- package/dist/cdn/chunks/{preRenderCustomBlocks-Dpj-_cOj.js → preRenderCustomBlocks-h4ZFBKbD.js} +2 -2
- package/dist/cdn/chunks/{preRenderCustomBlocks-Dpj-_cOj.js.map → preRenderCustomBlocks-h4ZFBKbD.js.map} +1 -1
- package/dist/cdn/chunks/{pt-BR-Bh1J8ey6.js → pt-BR-DHm3SP6W.js} +15 -1
- package/dist/cdn/chunks/pt-BR-DHm3SP6W.js.map +1 -0
- package/dist/cdn/chunks/{socialIcons-BvYNMn1G.js → socialIcons-ZOCwCCyn.js} +3 -3
- package/dist/cdn/chunks/{socialIcons-BvYNMn1G.js.map → socialIcons-ZOCwCCyn.js.map} +1 -1
- package/dist/cdn/chunks/{src-DveVYoWS.js → src-BR3I3gOW.js} +265 -224
- package/dist/cdn/chunks/src-BR3I3gOW.js.map +1 -0
- package/dist/cdn/chunks/{src-L6HEdwFn.js → src-BxoLKnkl.js} +178 -165
- package/dist/cdn/chunks/src-BxoLKnkl.js.map +1 -0
- package/dist/cdn/chunks/{src-Cnc5E71L.js → src-fZSLjhjy.js} +12 -12
- package/dist/cdn/chunks/{src-Cnc5E71L.js.map → src-fZSLjhjy.js.map} +1 -1
- package/dist/cdn/chunks/{useEditorCore-DZmtKwJh.js → useEditorCore-yd40TFKy.js} +458 -446
- package/dist/cdn/chunks/useEditorCore-yd40TFKy.js.map +1 -0
- package/dist/cdn/chunks/{useLogicTag-DF7-l66G.js → useLogicTag-J_i_hvZg.js} +2 -2
- package/dist/cdn/chunks/{useLogicTag-DF7-l66G.js.map → useLogicTag-J_i_hvZg.js.map} +1 -1
- package/dist/cdn/chunks/{useMergeTag-DbIHw4NG.js → useMergeTag-C5MyHYxJ.js} +2 -2
- package/dist/cdn/chunks/{useMergeTag-DbIHw4NG.js.map → useMergeTag-C5MyHYxJ.js.map} +1 -1
- package/dist/cdn/chunks/{usePopoverPosition-BJRvAb-h.js → usePopoverPosition-DGXjXKjM.js} +25 -12
- package/dist/cdn/chunks/usePopoverPosition-DGXjXKjM.js.map +1 -0
- package/dist/cdn/editor.css +1 -1
- package/dist/cdn/editor.js +64 -64
- package/dist/{cloud-DsqqUfzh.js → cloud-AO_X8T9g.js} +1 -1
- package/dist/{createCloudRuntime-iLflkYzP.js → createCloudRuntime-D641nhri.js} +2 -2
- package/dist/{de-D4dweQw8.js → de-BRNLKcDl.js} +14 -0
- package/dist/{dist-DbUZvK04.js → dist-iLUVPysa.js} +263 -222
- package/dist/{cdn/chunks/en-VE7R7NyL.js → en-JJjqHMjy.js} +14 -2
- package/dist/{es-B9OhP8H3.js → es-BIh8BxV9.js} +14 -0
- package/dist/{extensions-DDhjuVKy.js → extensions-DoT2-_pz.js} +11 -11
- package/dist/{cdn/chunks/fr-wrXhIi00.js → fr-C5VUZogP.js} +14 -2
- package/dist/{ja-fKnVWXHC.js → ja-x5JYxaCW.js} +14 -0
- package/dist/{nl-DeFatKJe.js → nl-UXxFyXV6.js} +14 -0
- package/dist/{preRenderCustomBlocks-BBSqQgke.js → preRenderCustomBlocks-CTstI3Q-.js} +4 -4
- package/dist/{pt-BR-Bh1J8ey6.js → pt-BR-DHm3SP6W.js} +14 -0
- package/dist/{socialIcons-O7PZCW2P.js → socialIcons-CACVa6m_.js} +46 -46
- package/dist/style.css +1 -1
- package/dist/templatical-editor.js +108 -108
- package/dist/{useEditorCore-dcdHB_7H.js → useEditorCore-LyNoGs0m.js} +894 -882
- package/dist/{useLogicTag-D9pvgxQR.js → useLogicTag-BaH8gey0.js} +1 -1
- package/dist/{useMergeTag-BaVFPdlq.js → useMergeTag-Cyad1yBE.js} +1 -1
- package/dist/{usePopoverPosition-DH7z3Ghm.js → usePopoverPosition-BYmd-lhR.js} +24 -11
- package/package.json +7 -7
- package/dist/cdn/chunks/LogicTagInsertButton-CHc1yZ9v.js.map +0 -1
- package/dist/cdn/chunks/Toolbar-BsiHW9gY.js.map +0 -1
- package/dist/cdn/chunks/blockTypeIcons-raBjStuv.js +0 -21
- package/dist/cdn/chunks/ca-Ckgw9yd0.js.map +0 -1
- package/dist/cdn/chunks/de-D4dweQw8.js.map +0 -1
- package/dist/cdn/chunks/en-DqzAdO8F.js +0 -2
- package/dist/cdn/chunks/en-VE7R7NyL.js.map +0 -1
- package/dist/cdn/chunks/es-B9OhP8H3.js.map +0 -1
- package/dist/cdn/chunks/fr-wrXhIi00.js.map +0 -1
- package/dist/cdn/chunks/icons-BKkJ-5xF.js.map +0 -1
- package/dist/cdn/chunks/ja-fKnVWXHC.js.map +0 -1
- package/dist/cdn/chunks/pt-BR-Bh1J8ey6.js.map +0 -1
- package/dist/cdn/chunks/src-DveVYoWS.js.map +0 -1
- package/dist/cdn/chunks/src-L6HEdwFn.js.map +0 -1
- package/dist/cdn/chunks/useEditorCore-DZmtKwJh.js.map +0 -1
- package/dist/cdn/chunks/usePopoverPosition-BJRvAb-h.js.map +0 -1
|
@@ -11,7 +11,7 @@ var o = /* @__PURE__ */ t({
|
|
|
11
11
|
popoverTarget: {}
|
|
12
12
|
},
|
|
13
13
|
setup(t) {
|
|
14
|
-
let o = t, s = a(async () => (await import("./editor-modal-
|
|
14
|
+
let o = t, s = a(async () => (await import("./editor-modal-BdI0iA5r.js")).MediaLibraryModal);
|
|
15
15
|
function c(e) {
|
|
16
16
|
o.feature.select(e);
|
|
17
17
|
}
|
|
@@ -42,4 +42,4 @@ var o = /* @__PURE__ */ t({
|
|
|
42
42
|
//#endregion
|
|
43
43
|
export { o as default };
|
|
44
44
|
|
|
45
|
-
//# sourceMappingURL=MediaPanels-
|
|
45
|
+
//# sourceMappingURL=MediaPanels-DMXRQVqg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaPanels-
|
|
1
|
+
{"version":3,"file":"MediaPanels-DMXRQVqg.js","names":[],"sources":["../../../src/components/MediaPanels.vue","../../../src/components/MediaPanels.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * Mount point for the media library modal.\n *\n * The modal is `defineAsyncComponent` behind a `v-if` on its open state, so its\n * chunk is fetched only when the user actually opens Browse —\n * `defineAsyncComponent` triggers its `import()` on first render, not at\n * definition time. `Editor.vue` in turn lazy-loads *this* wrapper and renders\n * it only when a `MediaProvider` is configured, so a consumer without one\n * downloads none of it. A callback-only `onRequestMedia` never mounts this.\n *\n * Never static-import `MediaLibraryModal` into `Editor.vue`: that collapses\n * the modal into the main entry for every consumer. Guarded by\n * `tests/editorMediaProvider.test.ts` and `tests/cdn-chunk-granularity.test.ts`.\n *\n * The editor compiles `@templatical/media-library` into this async chunk\n * (same Vue instance as the rest of the editor). Standalone `init()` /\n * `MediaLibraryModal` in a host Vue app still live on that package.\n */\nimport { defineAsyncComponent } from \"vue\";\nimport type { MediaAsset, MediaProvider } from \"@templatical/types\";\nimport type { UseMediaFeatureReturn } from \"../composables/useMediaFeature\";\n\nconst props = defineProps<{\n feature: UseMediaFeatureReturn;\n provider: MediaProvider;\n locale?: string;\n uiTheme?: string;\n popoverTarget?: HTMLElement | null;\n}>();\n\nconst MediaLibraryModal = defineAsyncComponent(async () => {\n const m = await import(\"@templatical/media-library\");\n return m.MediaLibraryModal;\n});\n\nfunction handleSelect(asset: MediaAsset): void {\n props.feature.select(asset);\n}\n</script>\n\n<template>\n <MediaLibraryModal\n v-if=\"feature.isModalOpen.value\"\n :visible=\"feature.isModalOpen.value\"\n :provider=\"provider\"\n :accept=\"feature.accept.value\"\n :popover-target=\"popoverTarget\"\n :locale=\"locale\"\n :ui-theme=\"uiTheme\"\n :template-id=\"feature.templateId.value\"\n :on-error=\"feature.onError\"\n @select=\"handleSelect\"\n @close=\"feature.close()\"\n />\n</template>\n","<script setup lang=\"ts\">\n/**\n * Mount point for the media library modal.\n *\n * The modal is `defineAsyncComponent` behind a `v-if` on its open state, so its\n * chunk is fetched only when the user actually opens Browse —\n * `defineAsyncComponent` triggers its `import()` on first render, not at\n * definition time. `Editor.vue` in turn lazy-loads *this* wrapper and renders\n * it only when a `MediaProvider` is configured, so a consumer without one\n * downloads none of it. A callback-only `onRequestMedia` never mounts this.\n *\n * Never static-import `MediaLibraryModal` into `Editor.vue`: that collapses\n * the modal into the main entry for every consumer. Guarded by\n * `tests/editorMediaProvider.test.ts` and `tests/cdn-chunk-granularity.test.ts`.\n *\n * The editor compiles `@templatical/media-library` into this async chunk\n * (same Vue instance as the rest of the editor). Standalone `init()` /\n * `MediaLibraryModal` in a host Vue app still live on that package.\n */\nimport { defineAsyncComponent } from \"vue\";\nimport type { MediaAsset, MediaProvider } from \"@templatical/types\";\nimport type { UseMediaFeatureReturn } from \"../composables/useMediaFeature\";\n\nconst props = defineProps<{\n feature: UseMediaFeatureReturn;\n provider: MediaProvider;\n locale?: string;\n uiTheme?: string;\n popoverTarget?: HTMLElement | null;\n}>();\n\nconst MediaLibraryModal = defineAsyncComponent(async () => {\n const m = await import(\"@templatical/media-library\");\n return m.MediaLibraryModal;\n});\n\nfunction handleSelect(asset: MediaAsset): void {\n props.feature.select(asset);\n}\n</script>\n\n<template>\n <MediaLibraryModal\n v-if=\"feature.isModalOpen.value\"\n :visible=\"feature.isModalOpen.value\"\n :provider=\"provider\"\n :accept=\"feature.accept.value\"\n :popover-target=\"popoverTarget\"\n :locale=\"locale\"\n :ui-theme=\"uiTheme\"\n :template-id=\"feature.templateId.value\"\n :on-error=\"feature.onError\"\n @select=\"handleSelect\"\n @close=\"feature.close()\"\n />\n</template>\n"],"mappings":";;;;;;;;;;;;;EAuBA,IAAM,IAAQ,GAQR,IAAoB,EAAqB,aAEtC,MADS,OAAO,8BAAA,CACd,iBACV;EAED,SAAS,EAAa,GAAyB;GAC7C,EAAM,QAAQ,OAAO,CAAK;EAC5B;mBAKU,EAAA,QAAQ,YAAY,SAD5B,EAAA,GAAA,EAYE,EAAA,CAAA,GAAA;;GAVC,SAAS,EAAA,QAAQ,YAAY;GAC7B,UAAU,EAAA;GACV,QAAQ,EAAA,QAAQ,OAAO;GACvB,kBAAgB,EAAA;GAChB,QAAQ,EAAA;GACR,YAAU,EAAA;GACV,eAAa,EAAA,QAAQ,WAAW;GAChC,YAAU,EAAA,QAAQ;GAClB,UAAQ;GACR,SAAK,AAAA,EAAA,QAAA,MAAE,EAAA,QAAQ,MAAK"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { N as e, Q as t, S as n, at as r, b as i, ct as a, g as o, h as s, m as c, p as l } from "./draggable-IB4x6w2O.js";
|
|
2
2
|
import { t as u } from "./_plugin-vue_export-helper-B3ysoDQm.js";
|
|
3
3
|
import { p as d } from "./styleConstants-C_YAPdQS.js";
|
|
4
|
-
import { i as f, n as p, r as m, t as h } from "./LogicTagInsertButton-
|
|
4
|
+
import { i as f, n as p, r as m, t as h } from "./LogicTagInsertButton-3pIbVE9p.js";
|
|
5
5
|
//#region src/components/MergeTagInput.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var g = { key: 0 }, _ = {
|
|
7
7
|
key: 0,
|
|
@@ -80,4 +80,4 @@ var g = { key: 0 }, _ = {
|
|
|
80
80
|
//#endregion
|
|
81
81
|
export { S as t };
|
|
82
82
|
|
|
83
|
-
//# sourceMappingURL=MergeTagInput
|
|
83
|
+
//# sourceMappingURL=MergeTagInput-JcBzr77a.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MergeTagInput--qTYfCWk.js","names":[],"sources":["../../../src/components/MergeTagInput.vue","../../../src/components/MergeTagInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useMergeTagField } from \"../composables/useMergeTagField\";\nimport { inputClass } from \"../constants/styleConstants\";\nimport MergeTagSegments from \"./MergeTagSegments.vue\";\nimport MergeTagInsertButton from \"./MergeTagInsertButton.vue\";\nimport LogicTagInsertButton from \"./LogicTagInsertButton.vue\";\nimport { ref } from \"vue\";\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string;\n type?: \"text\" | \"url\";\n placeholder?: string;\n pulse?: boolean;\n }>(),\n {\n type: \"text\",\n placeholder: \"\",\n pulse: false,\n },\n);\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: string): void;\n /**\n * Keydown the autocomplete popup declined. Declared (rather than left to\n * attribute fallthrough) so a host binding `@keydown` never sees the key\n * that just picked a tag — the link dialog would submit on it.\n */\n (e: \"keydown\", event: KeyboardEvent): void;\n}>();\n\nconst inputRef = ref<HTMLInputElement | null>(null);\n\nconst {\n segments,\n hasMergeTags,\n canRequestMergeTag,\n isRequestingMergeTag,\n canInsertLogicTag,\n isRequestingLogicTag,\n isEditing,\n startEditing,\n handleInput,\n handleKeydown: handleFieldKeydown,\n handleClick,\n handleBlur,\n clearValue,\n insertMergeTag,\n insertLogicTag,\n replaceMergeTagAt,\n} = useMergeTagField({\n modelValue: () => props.modelValue,\n emit: (value) => emit(\"update:modelValue\", value),\n elementRef: inputRef,\n});\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (!handleFieldKeydown(event)) {\n emit(\"keydown\", event);\n }\n}\n\nconst displayClass =\n \"tpl:flex tpl:w-full tpl:min-h-10 tpl:cursor-pointer tpl:items-center tpl:flex-wrap tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:shadow-[var(--tpl-shadow-sm)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:px-3.5 tpl:py-1.5 tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)]\";\n</script>\n\n<template>\n <div v-if=\"hasMergeTags && !isEditing\">\n <MergeTagSegments\n :segments=\"segments\"\n :display-class=\"displayClass\"\n :pulse=\"pulse\"\n @edit=\"startEditing\"\n @clear=\"clearValue\"\n @repick=\"replaceMergeTagAt\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n <div v-else>\n <input\n ref=\"inputRef\"\n :type=\"type\"\n :class=\"[inputClass, { 'tpl-pulse-fill': pulse }]\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n @input=\"handleInput\"\n @keydown=\"handleKeydown\"\n @click=\"handleClick\"\n @blur=\"handleBlur\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.tpl-pulse-fill {\n animation: tpl-field-pulse 1s ease-out;\n}\n\n@keyframes tpl-field-pulse {\n 0% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--tpl-warning) 30%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 6%, transparent);\n }\n 40% {\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--tpl-warning) 15%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 5%, transparent);\n }\n 100% {\n box-shadow: 0 0 0 0 transparent;\n background-color: transparent;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tpl-pulse-fill {\n animation: none;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useMergeTagField } from \"../composables/useMergeTagField\";\nimport { inputClass } from \"../constants/styleConstants\";\nimport MergeTagSegments from \"./MergeTagSegments.vue\";\nimport MergeTagInsertButton from \"./MergeTagInsertButton.vue\";\nimport LogicTagInsertButton from \"./LogicTagInsertButton.vue\";\nimport { ref } from \"vue\";\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string;\n type?: \"text\" | \"url\";\n placeholder?: string;\n pulse?: boolean;\n }>(),\n {\n type: \"text\",\n placeholder: \"\",\n pulse: false,\n },\n);\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: string): void;\n /**\n * Keydown the autocomplete popup declined. Declared (rather than left to\n * attribute fallthrough) so a host binding `@keydown` never sees the key\n * that just picked a tag — the link dialog would submit on it.\n */\n (e: \"keydown\", event: KeyboardEvent): void;\n}>();\n\nconst inputRef = ref<HTMLInputElement | null>(null);\n\nconst {\n segments,\n hasMergeTags,\n canRequestMergeTag,\n isRequestingMergeTag,\n canInsertLogicTag,\n isRequestingLogicTag,\n isEditing,\n startEditing,\n handleInput,\n handleKeydown: handleFieldKeydown,\n handleClick,\n handleBlur,\n clearValue,\n insertMergeTag,\n insertLogicTag,\n replaceMergeTagAt,\n} = useMergeTagField({\n modelValue: () => props.modelValue,\n emit: (value) => emit(\"update:modelValue\", value),\n elementRef: inputRef,\n});\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (!handleFieldKeydown(event)) {\n emit(\"keydown\", event);\n }\n}\n\nconst displayClass =\n \"tpl:flex tpl:w-full tpl:min-h-10 tpl:cursor-pointer tpl:items-center tpl:flex-wrap tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:shadow-[var(--tpl-shadow-sm)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:px-3.5 tpl:py-1.5 tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)]\";\n</script>\n\n<template>\n <div v-if=\"hasMergeTags && !isEditing\">\n <MergeTagSegments\n :segments=\"segments\"\n :display-class=\"displayClass\"\n :pulse=\"pulse\"\n @edit=\"startEditing\"\n @clear=\"clearValue\"\n @repick=\"replaceMergeTagAt\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n <div v-else>\n <input\n ref=\"inputRef\"\n :type=\"type\"\n :class=\"[inputClass, { 'tpl-pulse-fill': pulse }]\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n @input=\"handleInput\"\n @keydown=\"handleKeydown\"\n @click=\"handleClick\"\n @blur=\"handleBlur\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.tpl-pulse-fill {\n animation: tpl-field-pulse 1s ease-out;\n}\n\n@keyframes tpl-field-pulse {\n 0% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--tpl-warning) 30%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 6%, transparent);\n }\n 40% {\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--tpl-warning) 15%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 5%, transparent);\n }\n 100% {\n box-shadow: 0 0 0 0 transparent;\n background-color: transparent;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tpl-pulse-fill {\n animation: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;GA+DM,IACJ;;;;;;;;;;;;;EAxDF,IAAM,IAAQ,GAcR,IAAO,GAUP,IAAW,EAA6B,IAAI,GAE5C,EACJ,aACA,iBACA,uBACA,yBACA,sBACA,yBACA,cACA,iBACA,gBACA,eAAe,GACf,gBACA,eACA,eACA,mBACA,mBACA,yBACE,EAAiB;GACnB,kBAAkB,EAAM;GACxB,OAAO,MAAU,EAAK,qBAAqB,CAAK;GAChD,YAAY;EACd,CAAC;EAED,SAAS,EAAc,GAA4B;GACjD,AAAK,EAAmB,CAAK,KAC3B,EAAK,WAAW,CAAK;EAEzB;mBAOa,EAAA,CAAA,KAAY,CAAK,EAAA,CAAA,KAA5B,EAAA,GAAA,EAwBM,OAAA,GAAA,CAvBJ,EAOE,GAAA;GANC,UAAU,EAAA,CAAA;GACV,iBAAe;GACf,OAAO,EAAA;GACP,QAAM,EAAA,CAAA;GACN,SAAO,EAAA,CAAA;GACP,UAAQ,EAAA,CAAA;;;;;;;EAGH,CAAA,GAAA,EAAA,CAAA,KAAsB,EAAA,CAAA,KAD9B,EAAA,GAAA,EAcM,OAdN,GAcM,CATI,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA;EAGH,GAAA,MAAA,GAAA,CAAA,YAAA,UAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA;EAIf,GAAA,MAAA,GAAA,CAAA,YAAA,UAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,MAAA,EAAA,GAAA,EA2BM,OAAA,GAAA,CA1BJ,EAUE,SAAA;GATI,SAAA;GAAJ,KAAI;GACH,MAAM,EAAA;GACN,OAAK,EAAA,CAAG,EAAA,CAAA,GAAU,EAAA,kBAAsB,EAAA,MAAK,CAAA,CAAA;GAC7C,OAAO,EAAA;GACP,aAAa,EAAA;GACb,SAAK,AAAA,EAAA,QAAE,GAAA,MAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;GACP,WAAS;GACT,SAAK,AAAA,EAAA,QAAE,GAAA,MAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;GACP,QAAI,AAAA,EAAA,QAAE,GAAA,MAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;EAGD,GAAA,MAAA,IAAA,CAAA,GAAA,EAAA,CAAA,KAAsB,EAAA,CAAA,KAD9B,EAAA,GAAA,EAcM,OAdN,GAcM,CATI,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA;EAGH,GAAA,MAAA,GAAA,CAAA,YAAA,UAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA"}
|
|
1
|
+
{"version":3,"file":"MergeTagInput-JcBzr77a.js","names":[],"sources":["../../../src/components/MergeTagInput.vue","../../../src/components/MergeTagInput.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useMergeTagField } from \"../composables/useMergeTagField\";\nimport { inputClass } from \"../constants/styleConstants\";\nimport MergeTagSegments from \"./MergeTagSegments.vue\";\nimport MergeTagInsertButton from \"./MergeTagInsertButton.vue\";\nimport LogicTagInsertButton from \"./LogicTagInsertButton.vue\";\nimport { ref } from \"vue\";\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string;\n type?: \"text\" | \"url\";\n placeholder?: string;\n pulse?: boolean;\n }>(),\n {\n type: \"text\",\n placeholder: \"\",\n pulse: false,\n },\n);\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: string): void;\n /**\n * Keydown the autocomplete popup declined. Declared (rather than left to\n * attribute fallthrough) so a host binding `@keydown` never sees the key\n * that just picked a tag — the link dialog would submit on it.\n */\n (e: \"keydown\", event: KeyboardEvent): void;\n}>();\n\nconst inputRef = ref<HTMLInputElement | null>(null);\n\nconst {\n segments,\n hasMergeTags,\n canRequestMergeTag,\n isRequestingMergeTag,\n canInsertLogicTag,\n isRequestingLogicTag,\n isEditing,\n startEditing,\n handleInput,\n handleKeydown: handleFieldKeydown,\n handleClick,\n handleBlur,\n clearValue,\n insertMergeTag,\n insertLogicTag,\n replaceMergeTagAt,\n} = useMergeTagField({\n modelValue: () => props.modelValue,\n emit: (value) => emit(\"update:modelValue\", value),\n elementRef: inputRef,\n});\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (!handleFieldKeydown(event)) {\n emit(\"keydown\", event);\n }\n}\n\nconst displayClass =\n \"tpl:flex tpl:w-full tpl:min-h-10 tpl:cursor-pointer tpl:items-center tpl:flex-wrap tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:shadow-[var(--tpl-shadow-sm)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:px-3.5 tpl:py-1.5 tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)]\";\n</script>\n\n<template>\n <div v-if=\"hasMergeTags && !isEditing\">\n <MergeTagSegments\n :segments=\"segments\"\n :display-class=\"displayClass\"\n :pulse=\"pulse\"\n @edit=\"startEditing\"\n @clear=\"clearValue\"\n @repick=\"replaceMergeTagAt\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n <div v-else>\n <input\n ref=\"inputRef\"\n :type=\"type\"\n :class=\"[inputClass, { 'tpl-pulse-fill': pulse }]\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n @input=\"handleInput\"\n @keydown=\"handleKeydown\"\n @click=\"handleClick\"\n @blur=\"handleBlur\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.tpl-pulse-fill {\n animation: tpl-field-pulse 1s ease-out;\n}\n\n@keyframes tpl-field-pulse {\n 0% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--tpl-warning) 30%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 6%, transparent);\n }\n 40% {\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--tpl-warning) 15%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 5%, transparent);\n }\n 100% {\n box-shadow: 0 0 0 0 transparent;\n background-color: transparent;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tpl-pulse-fill {\n animation: none;\n }\n}\n</style>\n","<script setup lang=\"ts\">\nimport { useMergeTagField } from \"../composables/useMergeTagField\";\nimport { inputClass } from \"../constants/styleConstants\";\nimport MergeTagSegments from \"./MergeTagSegments.vue\";\nimport MergeTagInsertButton from \"./MergeTagInsertButton.vue\";\nimport LogicTagInsertButton from \"./LogicTagInsertButton.vue\";\nimport { ref } from \"vue\";\n\nconst props = withDefaults(\n defineProps<{\n modelValue: string;\n type?: \"text\" | \"url\";\n placeholder?: string;\n pulse?: boolean;\n }>(),\n {\n type: \"text\",\n placeholder: \"\",\n pulse: false,\n },\n);\n\nconst emit = defineEmits<{\n (e: \"update:modelValue\", value: string): void;\n /**\n * Keydown the autocomplete popup declined. Declared (rather than left to\n * attribute fallthrough) so a host binding `@keydown` never sees the key\n * that just picked a tag — the link dialog would submit on it.\n */\n (e: \"keydown\", event: KeyboardEvent): void;\n}>();\n\nconst inputRef = ref<HTMLInputElement | null>(null);\n\nconst {\n segments,\n hasMergeTags,\n canRequestMergeTag,\n isRequestingMergeTag,\n canInsertLogicTag,\n isRequestingLogicTag,\n isEditing,\n startEditing,\n handleInput,\n handleKeydown: handleFieldKeydown,\n handleClick,\n handleBlur,\n clearValue,\n insertMergeTag,\n insertLogicTag,\n replaceMergeTagAt,\n} = useMergeTagField({\n modelValue: () => props.modelValue,\n emit: (value) => emit(\"update:modelValue\", value),\n elementRef: inputRef,\n});\n\nfunction handleKeydown(event: KeyboardEvent): void {\n if (!handleFieldKeydown(event)) {\n emit(\"keydown\", event);\n }\n}\n\nconst displayClass =\n \"tpl:flex tpl:w-full tpl:min-h-10 tpl:cursor-pointer tpl:items-center tpl:flex-wrap tpl:gap-1 tpl:rounded-[var(--tpl-radius-sm)] tpl:border tpl:shadow-[var(--tpl-shadow-sm)] tpl:bg-[var(--tpl-bg)] tpl:border-[var(--tpl-border)] tpl:px-3.5 tpl:py-1.5 tpl:transition-all tpl:duration-[120ms] tpl:ease-[cubic-bezier(0.16,1,0.3,1)]\";\n</script>\n\n<template>\n <div v-if=\"hasMergeTags && !isEditing\">\n <MergeTagSegments\n :segments=\"segments\"\n :display-class=\"displayClass\"\n :pulse=\"pulse\"\n @edit=\"startEditing\"\n @clear=\"clearValue\"\n @repick=\"replaceMergeTagAt\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n <div v-else>\n <input\n ref=\"inputRef\"\n :type=\"type\"\n :class=\"[inputClass, { 'tpl-pulse-fill': pulse }]\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n @input=\"handleInput\"\n @keydown=\"handleKeydown\"\n @click=\"handleClick\"\n @blur=\"handleBlur\"\n />\n <div\n v-if=\"canRequestMergeTag || canInsertLogicTag\"\n class=\"tpl:flex tpl:flex-wrap tpl:gap-1.5\"\n >\n <MergeTagInsertButton\n v-if=\"canRequestMergeTag\"\n :disabled=\"isRequestingMergeTag\"\n @insert=\"insertMergeTag\"\n />\n <LogicTagInsertButton\n v-if=\"canInsertLogicTag\"\n :disabled=\"isRequestingLogicTag\"\n @insert=\"insertLogicTag\"\n />\n </div>\n </div>\n</template>\n\n<style scoped>\n.tpl-pulse-fill {\n animation: tpl-field-pulse 1s ease-out;\n}\n\n@keyframes tpl-field-pulse {\n 0% {\n box-shadow: 0 0 0 0 color-mix(in srgb, var(--tpl-warning) 30%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 6%, transparent);\n }\n 40% {\n box-shadow: 0 0 0 3px\n color-mix(in srgb, var(--tpl-warning) 15%, transparent);\n background-color: color-mix(in srgb, var(--tpl-warning) 5%, transparent);\n }\n 100% {\n box-shadow: 0 0 0 0 transparent;\n background-color: transparent;\n }\n}\n\n@media (prefers-reduced-motion: reduce) {\n .tpl-pulse-fill {\n animation: none;\n }\n}\n</style>\n"],"mappings":";;;;;;;;;;;;;;;GA+DM,IACJ;;;;;;;;;;;;;EAxDF,IAAM,IAAQ,GAcR,IAAO,GAUP,IAAW,EAA6B,IAAI,GAE5C,EACJ,aACA,iBACA,uBACA,yBACA,sBACA,yBACA,cACA,iBACA,gBACA,eAAe,GACf,gBACA,eACA,eACA,mBACA,mBACA,yBACE,EAAiB;GACnB,kBAAkB,EAAM;GACxB,OAAO,MAAU,EAAK,qBAAqB,CAAK;GAChD,YAAY;EACd,CAAC;EAED,SAAS,EAAc,GAA4B;GACjD,AAAK,EAAmB,CAAK,KAC3B,EAAK,WAAW,CAAK;EAEzB;mBAOa,EAAA,CAAA,KAAY,CAAK,EAAA,CAAA,KAA5B,EAAA,GAAA,EAwBM,OAAA,GAAA,CAvBJ,EAOE,GAAA;GANC,UAAU,EAAA,CAAA;GACV,iBAAe;GACf,OAAO,EAAA;GACP,QAAM,EAAA,CAAA;GACN,SAAO,EAAA,CAAA;GACP,UAAQ,EAAA,CAAA;;;;;;;EAGH,CAAA,GAAA,EAAA,CAAA,KAAsB,EAAA,CAAA,KAD9B,EAAA,GAAA,EAcM,OAdN,GAcM,CATI,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA;EAGH,GAAA,MAAA,GAAA,CAAA,YAAA,UAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA;EAIf,GAAA,MAAA,GAAA,CAAA,YAAA,UAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,CAAA,MAAA,EAAA,GAAA,EA2BM,OAAA,GAAA,CA1BJ,EAUE,SAAA;GATI,SAAA;GAAJ,KAAI;GACH,MAAM,EAAA;GACN,OAAK,EAAA,CAAG,EAAA,CAAA,GAAU,EAAA,kBAAsB,EAAA,MAAK,CAAA,CAAA;GAC7C,OAAO,EAAA;GACP,aAAa,EAAA;GACb,SAAK,AAAA,EAAA,QAAE,GAAA,MAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;GACP,WAAS;GACT,SAAK,AAAA,EAAA,QAAE,GAAA,MAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;GACP,QAAI,AAAA,EAAA,QAAE,GAAA,MAAA,EAAA,CAAA,KAAA,EAAA,CAAA,CAAA,CAAA,GAAA,CAAA;EAGD,GAAA,MAAA,IAAA,CAAA,GAAA,EAAA,CAAA,KAAsB,EAAA,CAAA,KAD9B,EAAA,GAAA,EAcM,OAdN,GAcM,CATI,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA;EAGH,GAAA,MAAA,GAAA,CAAA,YAAA,UAAA,CAAA,KAAA,EAAA,IAAA,EAAA,GAAA,EAAA,CAAA,KADR,EAAA,GAAA,EAIE,GAAA;;GAFC,UAAU,EAAA,CAAA;GACV,UAAQ,EAAA,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { E as e, F as t, N as n, S as r, at as i, f as a, g as o, h as s, lt as c, m as l, p as u, u as d, ut as f } from "./draggable-IB4x6w2O.js";
|
|
2
|
-
import { u as p } from "./src-
|
|
2
|
+
import { u as p } from "./src-BR3I3gOW.js";
|
|
3
3
|
import { F as m, O as h } from "./keys-DCWeHkSF.js";
|
|
4
4
|
import { t as g } from "./useI18n-CyO_Nmca.js";
|
|
5
|
-
import {
|
|
5
|
+
import { D as _, O as v, et as y, m as b } from "./icons-Bad3WZ3G.js";
|
|
6
6
|
//#region src/components/ViewportToggle.vue?vue&type=script&setup=true&lang.ts
|
|
7
7
|
var x = ["aria-label"], S = [
|
|
8
8
|
"aria-checked",
|
|
@@ -20,7 +20,7 @@ var x = ["aria-label"], S = [
|
|
|
20
20
|
}, {
|
|
21
21
|
value: "mobile",
|
|
22
22
|
label: m.viewport.mobile
|
|
23
|
-
}]),
|
|
23
|
+
}]), _ = a(() => `translateX(${h.value.findIndex((e) => e.value === s.viewport) * 100}%)`);
|
|
24
24
|
return (r, a) => (n(), o("div", {
|
|
25
25
|
role: "radiogroup",
|
|
26
26
|
"aria-label": i(m).viewport.label,
|
|
@@ -34,7 +34,7 @@ var x = ["aria-label"], S = [
|
|
|
34
34
|
style: c({
|
|
35
35
|
left: "4px",
|
|
36
36
|
width: `calc((100% - 8px) / ${h.value.length})`,
|
|
37
|
-
transform:
|
|
37
|
+
transform: _.value,
|
|
38
38
|
backgroundColor: "var(--tpl-bg)",
|
|
39
39
|
boxShadow: "var(--tpl-shadow)",
|
|
40
40
|
transition: "transform 120ms cubic-bezier(0.16, 1, 0.3, 1)"
|
|
@@ -51,7 +51,7 @@ var x = ["aria-label"], S = [
|
|
|
51
51
|
}),
|
|
52
52
|
title: t.label,
|
|
53
53
|
onClick: (e) => p("change", t.value)
|
|
54
|
-
}, [t.value === "desktop" ? (n(), l(i(
|
|
54
|
+
}, [t.value === "desktop" ? (n(), l(i(y), {
|
|
55
55
|
key: 0,
|
|
56
56
|
size: 18,
|
|
57
57
|
"stroke-width": 1.5
|
|
@@ -70,14 +70,14 @@ var x = ["aria-label"], S = [
|
|
|
70
70
|
__name: "MergeTagModeToggle",
|
|
71
71
|
props: { sampleMode: { type: Boolean } },
|
|
72
72
|
emits: ["change"],
|
|
73
|
-
setup(r, { emit:
|
|
74
|
-
let
|
|
73
|
+
setup(r, { emit: v }) {
|
|
74
|
+
let y = r, x = v, { t: S } = g(), C = e(h, m), E = a(() => p(C.value)), D = a(() => [{
|
|
75
75
|
value: !0,
|
|
76
76
|
label: S.mergeTagPreview.sample
|
|
77
77
|
}, {
|
|
78
78
|
value: !1,
|
|
79
79
|
label: S.mergeTagPreview.labelView
|
|
80
|
-
}]), O = a(() => `translateX(${D.value.findIndex((e) => e.value ===
|
|
80
|
+
}]), O = a(() => `translateX(${D.value.findIndex((e) => e.value === y.sampleMode) * 100}%)`);
|
|
81
81
|
return (e, a) => E.value ? (n(), o("div", {
|
|
82
82
|
key: 0,
|
|
83
83
|
role: "radiogroup",
|
|
@@ -110,7 +110,7 @@ var x = ["aria-label"], S = [
|
|
|
110
110
|
}),
|
|
111
111
|
title: e.label,
|
|
112
112
|
onClick: (t) => x("change", e.value)
|
|
113
|
-
}, [e.value ? (n(), l(i(
|
|
113
|
+
}, [e.value ? (n(), l(i(_), {
|
|
114
114
|
key: 0,
|
|
115
115
|
size: 18,
|
|
116
116
|
"stroke-width": 1.5
|
|
@@ -124,4 +124,4 @@ var x = ["aria-label"], S = [
|
|
|
124
124
|
//#endregion
|
|
125
125
|
export { C as n, E as t };
|
|
126
126
|
|
|
127
|
-
//# sourceMappingURL=MergeTagModeToggle-
|
|
127
|
+
//# sourceMappingURL=MergeTagModeToggle-CYmueXS2.js.map
|
package/dist/cdn/chunks/{MergeTagModeToggle-CdWIGo3Q.js.map → MergeTagModeToggle-CYmueXS2.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MergeTagModeToggle-CdWIGo3Q.js","names":[],"sources":["../../../src/components/ViewportToggle.vue","../../../src/components/ViewportToggle.vue","../../../src/components/MergeTagModeToggle.vue","../../../src/components/MergeTagModeToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY, NO_MERGE_TAGS } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags.value));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY, NO_MERGE_TAGS } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags.value));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MergeTagModeToggle-CYmueXS2.js","names":[],"sources":["../../../src/components/ViewportToggle.vue","../../../src/components/ViewportToggle.vue","../../../src/components/MergeTagModeToggle.vue","../../../src/components/MergeTagModeToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { useI18n } from \"../composables/useI18n\";\nimport type { ViewportSize } from \"@templatical/types\";\nimport { Monitor, Smartphone } from \"@lucide/vue\";\nimport { computed } from \"vue\";\n\nconst props = defineProps<{\n viewport: ViewportSize;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", viewport: ViewportSize): void;\n}>();\n\nconst { t } = useI18n();\n\nconst viewports = computed(() => [\n { value: \"desktop\" as ViewportSize, label: t.viewport.desktop },\n { value: \"mobile\" as ViewportSize, label: t.viewport.mobile },\n]);\n\nconst pillOffset = computed(() => {\n const index = viewports.value.findIndex((vp) => vp.value === props.viewport);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n role=\"radiogroup\"\n :aria-label=\"t.viewport.label\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${viewports.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${viewports.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"vp in viewports\"\n :key=\"vp.value\"\n role=\"radio\"\n :aria-checked=\"viewport === vp.value\"\n :aria-label=\"vp.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n viewport === vp.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"vp.label\"\n @click=\"emit('change', vp.value)\"\n >\n <Monitor v-if=\"vp.value === 'desktop'\" :size=\"18\" :stroke-width=\"1.5\" />\n <Smartphone v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ vp.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY, NO_MERGE_TAGS } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags.value));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\n/**\n * Switches the previews between the two merge-tag views: **Sample** (tags\n * replaced by their `MergeTag.sample`, rendered as ordinary text) and **Label**\n * (tags shown as their label with the usual cue).\n *\n * Deliberately the same segmented control as `ViewportToggle.vue` — the two sit\n * one click apart on the same preview surfaces, so they have to read as one\n * family rather than two similar things. Kept as a separate component rather\n * than generalising the viewport one: that would mean a generic segmented\n * control with an icon map, and two call sites don't justify the indirection.\n *\n * Renders only where a preview is showing. It must never appear over the\n * editing canvas, because substitution never happens there.\n *\n * **Renders nothing at all unless some configured tag declares a `sample`.**\n * With none, the two views are identical, so the control would be inert. The\n * check lives here rather than at each call site so the guarantee holds for\n * every surface — present and future — without three `v-if`s to keep in step.\n */\nimport { hasMergeTagSamples } from \"@templatical/types\";\nimport { useI18n } from \"../composables/useI18n\";\nimport { MERGE_TAGS_KEY, NO_MERGE_TAGS } from \"../keys\";\nimport { TextCursorInput, Sparkles } from \"@lucide/vue\";\nimport { computed, inject } from \"vue\";\n\nconst props = defineProps<{\n /** `true` for Sample view, `false` for Label view. */\n sampleMode: boolean;\n}>();\n\nconst emit = defineEmits<{\n (e: \"change\", sampleMode: boolean): void;\n}>();\n\nconst { t } = useI18n();\n\nconst mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\nconst isAvailable = computed(() => hasMergeTagSamples(mergeTags.value));\n\nconst modes = computed(() => [\n { value: true, label: t.mergeTagPreview.sample },\n { value: false, label: t.mergeTagPreview.labelView },\n]);\n\nconst pillOffset = computed(() => {\n const index = modes.value.findIndex((m) => m.value === props.sampleMode);\n return `translateX(${index * 100}%)`;\n});\n</script>\n\n<template>\n <div\n v-if=\"isAvailable\"\n role=\"radiogroup\"\n :aria-label=\"t.mergeTagPreview.label\"\n data-testid=\"merge-tag-mode-toggle\"\n class=\"tpl:relative tpl:grid tpl:rounded-[var(--tpl-radius-sm)] tpl:p-1\"\n :style=\"{\n gridTemplateColumns: `repeat(${modes.length}, 1fr)`,\n backgroundColor: 'var(--tpl-bg-hover)',\n }\"\n >\n <!-- Sliding pill -->\n <div\n class=\"tpl:absolute tpl:inset-y-1 tpl:rounded-[var(--tpl-radius-sm)]\"\n :style=\"{\n left: '4px',\n width: `calc((100% - 8px) / ${modes.length})`,\n transform: pillOffset,\n backgroundColor: 'var(--tpl-bg)',\n boxShadow: 'var(--tpl-shadow)',\n transition: 'transform 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n ></div>\n\n <button\n v-for=\"mode in modes\"\n :key=\"String(mode.value)\"\n role=\"radio\"\n :aria-checked=\"sampleMode === mode.value\"\n :aria-label=\"mode.label\"\n class=\"tpl:relative tpl:z-10 tpl:flex tpl:cursor-pointer tpl:items-center tpl:justify-center tpl:gap-1.5 tpl:rounded-md tpl:border-none tpl:bg-transparent tpl:px-3 tpl:py-1.5 tpl:text-xs tpl:font-medium\"\n :style=\"{\n color:\n sampleMode === mode.value\n ? 'var(--tpl-primary)'\n : 'var(--tpl-text-muted)',\n transition: 'color 120ms cubic-bezier(0.16, 1, 0.3, 1)',\n }\"\n :title=\"mode.label\"\n @click=\"emit('change', mode.value)\"\n >\n <Sparkles v-if=\"mode.value\" :size=\"18\" :stroke-width=\"1.5\" />\n <TextCursorInput v-else :size=\"18\" :stroke-width=\"1.5\" />\n <span>{{ mode.label }}</span>\n </button>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { E as e, F as t, N as n, Q as r, R as i, S as a, at as o, b as s, c, ct as l, d as u, f as d, g as f, h as p, l as m, lt as h, m as g, p as _, q as v, u as y, ut as b, y as x } from "./draggable-IB4x6w2O.js";
|
|
2
|
-
import { G as S } from "./src-
|
|
2
|
+
import { G as S } from "./src-BR3I3gOW.js";
|
|
3
3
|
import { t as C } from "./dist-CXB2_kBa.js";
|
|
4
|
-
import {
|
|
5
|
-
import { $ as O, A as k, E as A, J as
|
|
4
|
+
import { _ as w, b as T, g as E, y as D } from "./useEditorCore-yd40TFKy.js";
|
|
5
|
+
import { $ as O, A as k, E as A, J as ee, Z as j, g as M, v as N } from "./keys-DCWeHkSF.js";
|
|
6
6
|
import { t as P } from "./useI18n-CyO_Nmca.js";
|
|
7
|
-
import { n as F } from "./usePopoverPosition-
|
|
8
|
-
import {
|
|
7
|
+
import { n as F } from "./usePopoverPosition-DGXjXKjM.js";
|
|
8
|
+
import { C as te, F as ne, Ht as re, S as ie, _ as ae, at as oe, b as se, dt as ce, g as le, h as ue, l as de, lt as fe, ot as pe, st as me, v as he, wt as I, z as ge, zt as _e } from "./icons-Bad3WZ3G.js";
|
|
9
9
|
import { t as L } from "./_plugin-vue_export-helper-B3ysoDQm.js";
|
|
10
10
|
import { a as ve, n as ye, o as be, s as xe } from "./styleConstants-C_YAPdQS.js";
|
|
11
|
-
import { c as R } from "./LogicTagInsertButton-
|
|
12
|
-
import { n as z, t as B } from "./RichTextEditorContent-
|
|
11
|
+
import { c as R } from "./LogicTagInsertButton-3pIbVE9p.js";
|
|
12
|
+
import { n as z, t as B } from "./RichTextEditorContent-BtM1or8A.js";
|
|
13
13
|
//#region src/components/blocks/EmojiPickerDropdown.vue?vue&type=script&setup=true&lang.ts
|
|
14
14
|
var V = [
|
|
15
15
|
"aria-label",
|
|
@@ -19,8 +19,8 @@ var V = [
|
|
|
19
19
|
__name: "EmojiPickerDropdown",
|
|
20
20
|
emits: ["insert"],
|
|
21
21
|
setup(e, { emit: i }) {
|
|
22
|
-
let a = i, { categories: u, isOpen: h, toggle: g, close: v } =
|
|
23
|
-
|
|
22
|
+
let a = i, { categories: u, isOpen: h, toggle: g, close: v } = D(), { t: x, format: S } = P(), w = r(null), E = r(null), O = d(() => h.value);
|
|
23
|
+
T(w, O), C(E, () => {
|
|
24
24
|
h.value && v();
|
|
25
25
|
});
|
|
26
26
|
function k(e) {
|
|
@@ -28,7 +28,7 @@ var V = [
|
|
|
28
28
|
}
|
|
29
29
|
return (e, r) => (n(), f("div", {
|
|
30
30
|
ref_key: "rootRef",
|
|
31
|
-
ref:
|
|
31
|
+
ref: E,
|
|
32
32
|
class: "tpl:relative"
|
|
33
33
|
}, [_("button", {
|
|
34
34
|
type: "button",
|
|
@@ -46,7 +46,7 @@ var V = [
|
|
|
46
46
|
key: 0,
|
|
47
47
|
id: "tpl-emoji-picker",
|
|
48
48
|
ref_key: "pickerRef",
|
|
49
|
-
ref:
|
|
49
|
+
ref: w,
|
|
50
50
|
role: "dialog",
|
|
51
51
|
"aria-modal": "false",
|
|
52
52
|
"aria-label": o(x).paragraphEditor.insertEmoji,
|
|
@@ -158,7 +158,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
158
158
|
"add-logic-tag"
|
|
159
159
|
],
|
|
160
160
|
setup(t, { emit: r }) {
|
|
161
|
-
let i = t, a = r, c = e(
|
|
161
|
+
let i = t, a = r, c = e(ee, null), l = e(j, null), m = O(N, "ParagraphToolbar"), v = F(), S = e(k, null), C = e(A, null), w = e(M, null), T = d(() => (S?.isOpen.value ?? !1) || (C?.isOpen.value ?? !1)), { t: E } = P(), D = m.fonts;
|
|
162
162
|
function I(e) {
|
|
163
163
|
i.editor?.chain().focus().insertContent(e).run();
|
|
164
164
|
}
|
|
@@ -279,7 +279,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
279
279
|
]),
|
|
280
280
|
s(Z),
|
|
281
281
|
s(q, {
|
|
282
|
-
icon: o(
|
|
282
|
+
icon: o(re),
|
|
283
283
|
label: o(E).paragraphEditor.bold,
|
|
284
284
|
active: t.editor.isActive("bold"),
|
|
285
285
|
"stroke-width": 2.5,
|
|
@@ -290,7 +290,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
290
290
|
"active"
|
|
291
291
|
]),
|
|
292
292
|
s(q, {
|
|
293
|
-
icon: o(
|
|
293
|
+
icon: o(ce),
|
|
294
294
|
label: o(E).paragraphEditor.italic,
|
|
295
295
|
active: t.editor.isActive("italic"),
|
|
296
296
|
onClick: r[1] ||= (e) => t.editor.chain().focus().toggleItalic().run()
|
|
@@ -300,7 +300,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
300
300
|
"active"
|
|
301
301
|
]),
|
|
302
302
|
s(q, {
|
|
303
|
-
icon: o(
|
|
303
|
+
icon: o(de),
|
|
304
304
|
label: o(E).paragraphEditor.underline,
|
|
305
305
|
active: t.editor.isActive("underline"),
|
|
306
306
|
onClick: r[2] ||= (e) => t.editor.chain().focus().toggleUnderline().run()
|
|
@@ -310,7 +310,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
310
310
|
"active"
|
|
311
311
|
]),
|
|
312
312
|
s(q, {
|
|
313
|
-
icon: o(
|
|
313
|
+
icon: o(te),
|
|
314
314
|
label: o(E).paragraphEditor.strikethrough,
|
|
315
315
|
active: t.editor.isActive("strike"),
|
|
316
316
|
onClick: r[3] ||= (e) => t.editor.chain().focus().toggleStrike().run()
|
|
@@ -321,7 +321,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
321
321
|
]),
|
|
322
322
|
s(Z),
|
|
323
323
|
s(q, {
|
|
324
|
-
icon: o(
|
|
324
|
+
icon: o(ie),
|
|
325
325
|
label: o(E).paragraphEditor.subscript,
|
|
326
326
|
active: t.editor.isActive("subscript"),
|
|
327
327
|
onClick: r[4] ||= (e) => t.editor.chain().focus().toggleSubscript().run()
|
|
@@ -331,7 +331,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
331
331
|
"active"
|
|
332
332
|
]),
|
|
333
333
|
s(q, {
|
|
334
|
-
icon: o(
|
|
334
|
+
icon: o(se),
|
|
335
335
|
label: o(E).paragraphEditor.superscript,
|
|
336
336
|
active: t.editor.isActive("superscript"),
|
|
337
337
|
onClick: r[5] ||= (e) => t.editor.chain().focus().toggleSuperscript().run()
|
|
@@ -342,7 +342,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
342
342
|
]),
|
|
343
343
|
s(Z),
|
|
344
344
|
s(q, {
|
|
345
|
-
icon: o(
|
|
345
|
+
icon: o(fe),
|
|
346
346
|
label: o(E).paragraphEditor.addLink,
|
|
347
347
|
active: t.editor.isActive("link"),
|
|
348
348
|
onClick: r[6] ||= (e) => a("open-link-dialog")
|
|
@@ -353,7 +353,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
353
353
|
])
|
|
354
354
|
]), _("div", Oe, [
|
|
355
355
|
s(q, {
|
|
356
|
-
icon: o(
|
|
356
|
+
icon: o(pe),
|
|
357
357
|
label: o(E).paragraphEditor.bulletList,
|
|
358
358
|
active: t.editor.isActive("bulletList"),
|
|
359
359
|
onClick: r[7] ||= (e) => t.editor.chain().focus().toggleBulletList().run()
|
|
@@ -374,7 +374,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
374
374
|
]),
|
|
375
375
|
s(Z),
|
|
376
376
|
s(q, {
|
|
377
|
-
icon: o(
|
|
377
|
+
icon: o(ue),
|
|
378
378
|
label: o(E).paragraphEditor.alignLeft,
|
|
379
379
|
active: t.editor.isActive({ textAlign: "left" }),
|
|
380
380
|
onClick: r[9] ||= (e) => t.editor.chain().focus().setTextAlign("left").run()
|
|
@@ -384,7 +384,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
384
384
|
"active"
|
|
385
385
|
]),
|
|
386
386
|
s(q, {
|
|
387
|
-
icon: o(
|
|
387
|
+
icon: o(ae),
|
|
388
388
|
label: o(E).paragraphEditor.alignCenter,
|
|
389
389
|
active: t.editor.isActive({ textAlign: "center" }),
|
|
390
390
|
onClick: r[10] ||= (e) => t.editor.chain().focus().setTextAlign("center").run()
|
|
@@ -394,7 +394,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
394
394
|
"active"
|
|
395
395
|
]),
|
|
396
396
|
s(q, {
|
|
397
|
-
icon: o(
|
|
397
|
+
icon: o(le),
|
|
398
398
|
label: o(E).paragraphEditor.alignRight,
|
|
399
399
|
active: t.editor.isActive({ textAlign: "right" }),
|
|
400
400
|
onClick: r[11] ||= (e) => t.editor.chain().focus().setTextAlign("right").run()
|
|
@@ -404,7 +404,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
404
404
|
"active"
|
|
405
405
|
]),
|
|
406
406
|
s(q, {
|
|
407
|
-
icon: o(
|
|
407
|
+
icon: o(he),
|
|
408
408
|
label: o(E).paragraphEditor.alignJustify,
|
|
409
409
|
active: t.editor.isActive({ textAlign: "justify" }),
|
|
410
410
|
onClick: r[12] ||= (e) => t.editor.chain().focus().setTextAlign("justify").run()
|
|
@@ -440,7 +440,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
440
440
|
]),
|
|
441
441
|
s(Z),
|
|
442
442
|
s(q, {
|
|
443
|
-
icon: o(
|
|
443
|
+
icon: o(ge),
|
|
444
444
|
label: o(E).paragraphEditor.clearFormatting,
|
|
445
445
|
onClick: r[13] ||= (e) => t.editor.chain().focus().clearNodes().unsetAllMarks().run()
|
|
446
446
|
}, null, 8, ["icon", "label"]),
|
|
@@ -452,7 +452,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
452
452
|
"aria-label": o(E).mergeTag.insert,
|
|
453
453
|
title: o(E).mergeTag.insert,
|
|
454
454
|
onClick: r[14] ||= (e) => a("add-merge-tag")
|
|
455
|
-
}, [s(o(
|
|
455
|
+
}, [s(o(ne), {
|
|
456
456
|
size: 16,
|
|
457
457
|
"stroke-width": 2
|
|
458
458
|
}), x(" " + b(o(E).mergeTag.insertShort), 1)], 8, ke)], 64)) : p("", !0),
|
|
@@ -463,11 +463,11 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
463
463
|
title: o(E).logicTag.insert,
|
|
464
464
|
"data-testid": "insert-logic-button",
|
|
465
465
|
onClick: r[15] ||= (e) => a("add-logic-tag")
|
|
466
|
-
}, [s(o(
|
|
466
|
+
}, [s(o(_e), {
|
|
467
467
|
size: 16,
|
|
468
468
|
"stroke-width": 2
|
|
469
469
|
}), x(" " + b(o(E).logicTag.insertShort), 1)], 8, Ae)], 64)) : p("", !0)
|
|
470
|
-
])], 64)) : (n(), f("div", je, [s(o(
|
|
470
|
+
])], 64)) : (n(), f("div", je, [s(o(oe), {
|
|
471
471
|
class: "tpl-spinner",
|
|
472
472
|
size: 14,
|
|
473
473
|
"stroke-width": 2
|
|
@@ -481,13 +481,13 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
481
481
|
},
|
|
482
482
|
emits: ["done"],
|
|
483
483
|
setup(t, { emit: r }) {
|
|
484
|
-
let i = t, a = r, c = F(), l = e(M, null), u = S(l?.content?.value?.settings ?? { locale: "en" }) === "rtl" ? "right" : "left", { editor: d, EditorContent: p, isLoading: m, initError: h, retry: g, showLinkDialog: _, linkUrl: y, linkColor: b, linkDialogRef: x, canRequestMergeTag: C, canInsertLogicTag:
|
|
484
|
+
let i = t, a = r, c = F(), l = e(M, null), u = S(l?.content?.value?.settings ?? { locale: "en" }) === "rtl" ? "right" : "left", { editor: d, EditorContent: p, isLoading: m, initError: h, retry: g, showLinkDialog: _, linkUrl: y, linkColor: b, linkDialogRef: x, canRequestMergeTag: C, canInsertLogicTag: T, openLinkDialog: D, insertLink: O, removeLink: k, closeLinkDialog: A, handleLinkKeydown: ee, handleAddMergeTag: j, handleAddLogicTag: N } = E({
|
|
485
485
|
blockId: () => i.block.id,
|
|
486
486
|
blockContent: () => i.block.content,
|
|
487
487
|
onDone: () => a("done"),
|
|
488
488
|
editorName: "ParagraphEditor",
|
|
489
489
|
async loadExtensions({ mergeTags: e, syntax: t, triggerChar: n, autocompleteEnabled: r, suggestionEmptyText: i }) {
|
|
490
|
-
let [{ Editor: a, EditorContent: o }, { default: s }, { default: l }, { default: d }, { default: f }, { default: p }, { default: m }, { TextStyle: h }, { default: g }, { default: _ }, { default: v }, { MergeTagNode: y, MergeTagSuggestion: b, LogicMergeTagNode: x, FontSize: S, LineHeight: C, LetterSpacing:
|
|
490
|
+
let [{ Editor: a, EditorContent: o }, { default: s }, { default: l }, { default: d }, { default: f }, { default: p }, { default: m }, { TextStyle: h }, { default: g }, { default: _ }, { default: v }, { MergeTagNode: y, MergeTagSuggestion: b, LogicMergeTagNode: x, FontSize: S, LineHeight: C, LetterSpacing: T, LineBoundaryKeys: E }] = await Promise.all([
|
|
491
491
|
import("./tiptap-DhLuKyDc.js").then((e) => e.i),
|
|
492
492
|
import("./tiptap-DhLuKyDc.js").then((e) => e.a),
|
|
493
493
|
import("./tiptap-DhLuKyDc.js").then((e) => e.u),
|
|
@@ -499,7 +499,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
499
499
|
import("./tiptap-DhLuKyDc.js").then((e) => e.p),
|
|
500
500
|
import("./tiptap-DhLuKyDc.js").then((e) => e.f),
|
|
501
501
|
import("./tiptap-DhLuKyDc.js").then((e) => e.d),
|
|
502
|
-
import("./extensions-
|
|
502
|
+
import("./extensions-DK_9-6Bd.js")
|
|
503
503
|
]);
|
|
504
504
|
return {
|
|
505
505
|
TiptapEditor: a,
|
|
@@ -516,7 +516,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
516
516
|
d,
|
|
517
517
|
f,
|
|
518
518
|
p,
|
|
519
|
-
|
|
519
|
+
w(l).configure({
|
|
520
520
|
openOnClick: !1,
|
|
521
521
|
HTMLAttributes: {
|
|
522
522
|
target: "_blank",
|
|
@@ -533,13 +533,13 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
533
533
|
v.configure({ multicolor: !0 }),
|
|
534
534
|
S,
|
|
535
535
|
C,
|
|
536
|
-
|
|
536
|
+
T,
|
|
537
537
|
y.configure({
|
|
538
538
|
mergeTags: () => e.value,
|
|
539
539
|
syntax: t
|
|
540
540
|
}),
|
|
541
541
|
x.configure({ syntax: t }),
|
|
542
|
-
|
|
542
|
+
E,
|
|
543
543
|
...r && n && e.value.length > 0 ? [b.configure({
|
|
544
544
|
mergeTags: () => e.value,
|
|
545
545
|
char: n,
|
|
@@ -556,9 +556,9 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
556
556
|
"toolbar-position": t.toolbarPosition,
|
|
557
557
|
"is-loading": o(m),
|
|
558
558
|
"can-request-merge-tag": o(C),
|
|
559
|
-
"can-insert-logic-tag": o(
|
|
560
|
-
onOpenLinkDialog: o(
|
|
561
|
-
onAddMergeTag: o(
|
|
559
|
+
"can-insert-logic-tag": o(T),
|
|
560
|
+
onOpenLinkDialog: o(D),
|
|
561
|
+
onAddMergeTag: o(j),
|
|
562
562
|
onAddLogicTag: o(N)
|
|
563
563
|
}, null, 8, [
|
|
564
564
|
"editor",
|
|
@@ -595,7 +595,7 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
595
595
|
onClose: o(A),
|
|
596
596
|
onInsert: o(O),
|
|
597
597
|
onRemove: o(k),
|
|
598
|
-
onKeydown: o(
|
|
598
|
+
onKeydown: o(ee)
|
|
599
599
|
}, null, 8, [
|
|
600
600
|
"visible",
|
|
601
601
|
"is-editing-link",
|
|
@@ -613,4 +613,4 @@ var Ee = ["data-tpl-theme", "aria-label"], De = { class: "tpl:flex tpl:items-cen
|
|
|
613
613
|
//#endregion
|
|
614
614
|
export { Pe as default };
|
|
615
615
|
|
|
616
|
-
//# sourceMappingURL=ParagraphEditor-
|
|
616
|
+
//# sourceMappingURL=ParagraphEditor-DbjFDnYm.js.map
|