@templatical/editor 0.43.3 → 0.44.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-BAAypLEP.js → AiChatSidebar-BUR5Jshu.js} +8 -8
- package/dist/{AiFeatureMenu-CQcrDR-J.js → AiFeatureMenu-CgfLFHJw.js} +4 -4
- package/dist/{BlockIssueBadge-DYI7ic1j.js → BlockIssueBadge-CWZEwMXX.js} +2 -2
- package/dist/{BlockPreviewCanvas-x5W-Sdhg.js → BlockPreviewCanvas-2vVu55yN.js} +3 -3
- package/dist/{CloudHeaderExtras-DnLaX4ea.js → CloudHeaderExtras-BZ62q1aS.js} +2 -2
- package/dist/{CloudPanels-BHPG3d1o.js → CloudPanels-sv4aCKKE.js} +4 -4
- package/dist/{CollaboratorBar-DG6KroMt.js → CollaboratorBar-CSEFL7uC.js} +2 -2
- package/dist/{CommentsPanel-Bzk6VhJg.js → CommentsPanel-CYMHfFcn.js} +1 -1
- package/dist/{CommentsSidebar-CaRC3c1b.js → CommentsSidebar-uvQyCMUe.js} +10 -10
- package/dist/{CountdownToolbar-B-pAigUh.js → CountdownToolbar-C052mx2P.js} +3 -3
- package/dist/{DesignReferenceSidebar-DfuJyDBz.js → DesignReferenceSidebar-ZKJ7y7-G.js} +6 -6
- package/dist/{IssuesPanel-vWhcDIvb.js → IssuesPanel-DAlNiJX_.js} +5 -5
- package/dist/{LogicTagInsertButton-D2Fjo444.js → LogicTagInsertButton-DMUfVsPr.js} +6 -6
- package/dist/{MediaEditModal-BuP8SJrv.js → MediaEditModal-Cmd9tQXZ.js} +1 -1
- package/dist/{MediaPanels-BkcF0r_r.js → MediaPanels-DoBhG5gg.js} +1 -1
- package/dist/{MergeTagInput-fEOOY7OU.js → MergeTagInput-DoQWMSW4.js} +1 -1
- package/dist/{MergeTagModeToggle-BOeEL52u.js → MergeTagModeToggle-DOHixe4G.js} +4 -4
- package/dist/{ParagraphEditor-BlJGeBRY.js → ParagraphEditor-C_p6yKLK.js} +10 -10
- package/dist/{RestoreVersionDialog-DYaoFk5G.js → RestoreVersionDialog-CKHeCPG2.js} +3 -3
- package/dist/{RichTextEditorContent-GacK8qwu.js → RichTextEditorContent-BedBVHXS.js} +4 -4
- package/dist/{SaveBlockDialog-DR1UCtQY.js → SaveBlockDialog-q3_fjb9t.js} +8 -8
- package/dist/{SavedBlocksBrowserModal-q_-qYW9a.js → SavedBlocksBrowserModal-C4J-_cW8.js} +9 -9
- package/dist/{SavedBlocksPanels-nTH8NTAT.js → SavedBlocksPanels-DBoqC6df.js} +1 -1
- package/dist/{SavedBlocksPickBar-C7vHmc5c.js → SavedBlocksPickBar-Pq2bjpB_.js} +2 -2
- package/dist/{TemplateScoringPanel-D9jeQCYl.js → TemplateScoringPanel-DXsyp0_A.js} +11 -11
- package/dist/{TemplateSettings-ClfHwxUa.js → TemplateSettings-Bh10NFIN.js} +6 -6
- package/dist/{TestEmailModal-DEnvrv38.js → TestEmailModal-BYCKpH7g.js} +7 -7
- package/dist/{TestEmailPanel-Ca9t6KG7.js → TestEmailPanel-lUXAFsT5.js} +1 -1
- package/dist/{TitleEditor-D7mNs3s5.js → TitleEditor-CWPxXUp2.js} +6 -6
- package/dist/{ToggleSwitch-Z-rqEcig.js → ToggleSwitch-D7GLaT8s.js} +1 -1
- package/dist/{Toolbar-DUgyDBkz.js → Toolbar-CWxqqBHE.js} +21 -21
- package/dist/{TplModal-CYyFAScB.js → TplModal-D6lqrKls.js} +1 -1
- package/dist/{VersionHistoryMenu-D42tGKM6.js → VersionHistoryMenu-fLrx-Lvi.js} +5 -5
- package/dist/{VersionHistoryPanels-o0HGvQJX.js → VersionHistoryPanels-C3XhpQO_.js} +1 -1
- package/dist/{VersionPreviewBanner-D5RZtvUf.js → VersionPreviewBanner-CWuxq_bb.js} +1 -1
- package/dist/{WrapperBlock-B0_vSfSD.js → WrapperBlock-ox8TMS_p.js} +1 -1
- package/dist/{blockTypeIcons-CEk_GHmU.js → blockTypeIcons-DEvNVvBj.js} +2 -2
- package/dist/bundle-stats.json +5 -5
- package/dist/cdn/chunks/{AiChatSidebar-oFwacME4.js → AiChatSidebar-Cvp9beXR.js} +3 -3
- package/dist/cdn/chunks/{AiChatSidebar-oFwacME4.js.map → AiChatSidebar-Cvp9beXR.js.map} +1 -1
- package/dist/cdn/chunks/{AiFeatureMenu-BiHFJf9i.js → AiFeatureMenu-vOJtwdmT.js} +3 -3
- package/dist/cdn/chunks/{AiFeatureMenu-BiHFJf9i.js.map → AiFeatureMenu-vOJtwdmT.js.map} +1 -1
- package/dist/cdn/chunks/{BlockIssueBadge-CWlcDBFm.js → BlockIssueBadge-CKIrYROg.js} +2 -2
- package/dist/cdn/chunks/{BlockIssueBadge-CWlcDBFm.js.map → BlockIssueBadge-CKIrYROg.js.map} +1 -1
- package/dist/cdn/chunks/{BlockPreviewCanvas-CIwIA3zq.js → BlockPreviewCanvas-CB27Joyn.js} +4 -4
- package/dist/cdn/chunks/{BlockPreviewCanvas-CIwIA3zq.js.map → BlockPreviewCanvas-CB27Joyn.js.map} +1 -1
- package/dist/cdn/chunks/{CloudHeaderExtras-BgsjwWUQ.js → CloudHeaderExtras-9tKrhPm6.js} +3 -3
- package/dist/cdn/chunks/{CloudHeaderExtras-BgsjwWUQ.js.map → CloudHeaderExtras-9tKrhPm6.js.map} +1 -1
- package/dist/cdn/chunks/{CloudPanels-DFCwq8_J.js → CloudPanels-DTQ7zbEN.js} +4 -4
- package/dist/cdn/chunks/{CloudPanels-DFCwq8_J.js.map → CloudPanels-DTQ7zbEN.js.map} +1 -1
- package/dist/cdn/chunks/{CollaboratorBar-CiMZfMwN.js → CollaboratorBar-BKTkVMbz.js} +3 -3
- package/dist/cdn/chunks/{CollaboratorBar-CiMZfMwN.js.map → CollaboratorBar-BKTkVMbz.js.map} +1 -1
- package/dist/cdn/chunks/{CommentsPanel-CL4grbMp.js → CommentsPanel-BjHRj_Yw.js} +2 -2
- package/dist/cdn/chunks/{CommentsPanel-CL4grbMp.js.map → CommentsPanel-BjHRj_Yw.js.map} +1 -1
- package/dist/cdn/chunks/{CommentsSidebar-tWYYKv1s.js → CommentsSidebar-CpCfqSq4.js} +2 -2
- package/dist/cdn/chunks/{CommentsSidebar-tWYYKv1s.js.map → CommentsSidebar-CpCfqSq4.js.map} +1 -1
- package/dist/cdn/chunks/{CountdownToolbar-DfyqIppF.js → CountdownToolbar-C9QpHQcv.js} +4 -4
- package/dist/cdn/chunks/{CountdownToolbar-DfyqIppF.js.map → CountdownToolbar-C9QpHQcv.js.map} +1 -1
- package/dist/cdn/chunks/{DesignReferenceSidebar-C6O12hvt.js → DesignReferenceSidebar-BO0xz1wC.js} +3 -3
- package/dist/cdn/chunks/{DesignReferenceSidebar-C6O12hvt.js.map → DesignReferenceSidebar-BO0xz1wC.js.map} +1 -1
- package/dist/cdn/chunks/{IssuesPanel-DYJXIwnw.js → IssuesPanel--62qud8w.js} +2 -2
- package/dist/cdn/chunks/{IssuesPanel-DYJXIwnw.js.map → IssuesPanel--62qud8w.js.map} +1 -1
- package/dist/cdn/chunks/{LogicTagInsertButton-FNMVxm_V.js → LogicTagInsertButton-gc8ICURV.js} +5 -5
- package/dist/cdn/chunks/{LogicTagInsertButton-FNMVxm_V.js.map → LogicTagInsertButton-gc8ICURV.js.map} +1 -1
- package/dist/cdn/chunks/{MediaEditModal-C9yZ0AJv.js → MediaEditModal-BuDXKwx4.js} +2 -2
- package/dist/cdn/chunks/{MediaEditModal-C9yZ0AJv.js.map → MediaEditModal-BuDXKwx4.js.map} +1 -1
- package/dist/cdn/chunks/{MediaPanels-DiKU1r9P.js → MediaPanels-xFpaxFRH.js} +2 -2
- package/dist/cdn/chunks/{MediaPanels-DiKU1r9P.js.map → MediaPanels-xFpaxFRH.js.map} +1 -1
- package/dist/cdn/chunks/{MergeTagInput-CSC64xNL.js → MergeTagInput-DsPKWbWr.js} +2 -2
- package/dist/cdn/chunks/{MergeTagInput-CSC64xNL.js.map → MergeTagInput-DsPKWbWr.js.map} +1 -1
- package/dist/cdn/chunks/{MergeTagModeToggle-027RMXDP.js → MergeTagModeToggle-DU0WqgVH.js} +3 -3
- package/dist/cdn/chunks/{MergeTagModeToggle-027RMXDP.js.map → MergeTagModeToggle-DU0WqgVH.js.map} +1 -1
- package/dist/cdn/chunks/{ParagraphEditor-0Z26-N5u.js → ParagraphEditor-BSDGOsja.js} +10 -10
- package/dist/cdn/chunks/{ParagraphEditor-0Z26-N5u.js.map → ParagraphEditor-BSDGOsja.js.map} +1 -1
- package/dist/cdn/chunks/{RestoreVersionDialog-Dd1v1KLK.js → RestoreVersionDialog-DLe0Co57.js} +3 -3
- package/dist/cdn/chunks/{RestoreVersionDialog-Dd1v1KLK.js.map → RestoreVersionDialog-DLe0Co57.js.map} +1 -1
- package/dist/cdn/chunks/{RichTextEditorContent-BOZ_5I76.js → RichTextEditorContent-Dkcts8Vh.js} +4 -4
- package/dist/cdn/chunks/{RichTextEditorContent-BOZ_5I76.js.map → RichTextEditorContent-Dkcts8Vh.js.map} +1 -1
- package/dist/cdn/chunks/{SaveBlockDialog-B6WQwNJD.js → SaveBlockDialog-DQzaED8U.js} +7 -7
- package/dist/cdn/chunks/{SaveBlockDialog-B6WQwNJD.js.map → SaveBlockDialog-DQzaED8U.js.map} +1 -1
- package/dist/cdn/chunks/{SavedBlocksBrowserModal-C015fVMV.js → SavedBlocksBrowserModal-D3JF-Gx-.js} +6 -6
- package/dist/cdn/chunks/{SavedBlocksBrowserModal-C015fVMV.js.map → SavedBlocksBrowserModal-D3JF-Gx-.js.map} +1 -1
- package/dist/cdn/chunks/{SavedBlocksPanels-DZmfXW4x.js → SavedBlocksPanels-Cxbgby24.js} +2 -2
- package/dist/cdn/chunks/{SavedBlocksPanels-DZmfXW4x.js.map → SavedBlocksPanels-Cxbgby24.js.map} +1 -1
- package/dist/cdn/chunks/{SavedBlocksPickBar-DtCQFCCW.js → SavedBlocksPickBar-DEL0r3Bv.js} +3 -3
- package/dist/cdn/chunks/{SavedBlocksPickBar-DtCQFCCW.js.map → SavedBlocksPickBar-DEL0r3Bv.js.map} +1 -1
- package/dist/cdn/chunks/{TemplateScoringPanel-CeCVyNV1.js → TemplateScoringPanel-BBRHCNcR.js} +2 -2
- package/dist/cdn/chunks/{TemplateScoringPanel-CeCVyNV1.js.map → TemplateScoringPanel-BBRHCNcR.js.map} +1 -1
- package/dist/cdn/chunks/{TemplateSettings-CuXwthI6.js → TemplateSettings-vsFOU0oA.js} +5 -5
- package/dist/cdn/chunks/{TemplateSettings-CuXwthI6.js.map → TemplateSettings-vsFOU0oA.js.map} +1 -1
- package/dist/cdn/chunks/{TestEmailModal-DV1XKWRh.js → TestEmailModal-B7Dr2eFa.js} +7 -7
- package/dist/cdn/chunks/{TestEmailModal-DV1XKWRh.js.map → TestEmailModal-B7Dr2eFa.js.map} +1 -1
- package/dist/cdn/chunks/{TestEmailPanel-CnVW00RI.js → TestEmailPanel-C3PTYDbT.js} +2 -2
- package/dist/cdn/chunks/{TestEmailPanel-CnVW00RI.js.map → TestEmailPanel-C3PTYDbT.js.map} +1 -1
- package/dist/cdn/chunks/{TitleEditor-B9sKbRd4.js → TitleEditor-gHTla_4I.js} +5 -5
- package/dist/cdn/chunks/{TitleEditor-B9sKbRd4.js.map → TitleEditor-gHTla_4I.js.map} +1 -1
- package/dist/cdn/chunks/{ToggleSwitch-eHkFBx4o.js → ToggleSwitch-DoUNcLPP.js} +2 -2
- package/dist/cdn/chunks/{ToggleSwitch-eHkFBx4o.js.map → ToggleSwitch-DoUNcLPP.js.map} +1 -1
- package/dist/cdn/chunks/{Toolbar-DeKbYejp.js → Toolbar-CnfNUkOY.js} +9 -9
- package/dist/cdn/chunks/{Toolbar-DeKbYejp.js.map → Toolbar-CnfNUkOY.js.map} +1 -1
- package/dist/cdn/chunks/{TplModal-Dqq-Ermd.js → TplModal-BVUBOEQL.js} +2 -2
- package/dist/cdn/chunks/{TplModal-Dqq-Ermd.js.map → TplModal-BVUBOEQL.js.map} +1 -1
- package/dist/cdn/chunks/{VersionHistoryMenu-Kf4QFm7m.js → VersionHistoryMenu-Cp3EHO_P.js} +2 -2
- package/dist/cdn/chunks/{VersionHistoryMenu-Kf4QFm7m.js.map → VersionHistoryMenu-Cp3EHO_P.js.map} +1 -1
- package/dist/cdn/chunks/{VersionHistoryPanels-Cz8rde-s.js → VersionHistoryPanels-Dcdy7ySA.js} +2 -2
- package/dist/cdn/chunks/{VersionHistoryPanels-Cz8rde-s.js.map → VersionHistoryPanels-Dcdy7ySA.js.map} +1 -1
- package/dist/cdn/chunks/{VersionPreviewBanner-DNYHqbj9.js → VersionPreviewBanner-BgkroXnG.js} +2 -2
- package/dist/cdn/chunks/{VersionPreviewBanner-DNYHqbj9.js.map → VersionPreviewBanner-BgkroXnG.js.map} +1 -1
- package/dist/cdn/chunks/{WrapperBlock-DIZHUwFn.js → WrapperBlock-23nAzweL.js} +2 -2
- package/dist/cdn/chunks/{WrapperBlock-DIZHUwFn.js.map → WrapperBlock-23nAzweL.js.map} +1 -1
- package/dist/cdn/chunks/{blockTypeIcons-hgzxMFWX.js → blockTypeIcons-BMZi7sdX.js} +2 -2
- package/dist/cdn/chunks/{blockTypeIcons-hgzxMFWX.js.map → blockTypeIcons-BMZi7sdX.js.map} +1 -1
- package/dist/cdn/chunks/{cloud-De-eh1u6.js → cloud-DLQU5l0Z.js} +2 -2
- package/dist/cdn/chunks/{cloud-De-eh1u6.js.map → cloud-DLQU5l0Z.js.map} +1 -1
- package/dist/cdn/chunks/{createCloudRuntime-DsaUaWvr.js → createCloudRuntime-Mnx8kV2W.js} +3 -3
- package/dist/cdn/chunks/{createCloudRuntime-DsaUaWvr.js.map → createCloudRuntime-Mnx8kV2W.js.map} +1 -1
- package/dist/cdn/chunks/{editor-modal-cKeJ4wC2.js → editor-modal-B7NNAFI5.js} +4 -4
- package/dist/cdn/chunks/{editor-modal-cKeJ4wC2.js.map → editor-modal-B7NNAFI5.js.map} +1 -1
- package/dist/cdn/chunks/en-C3n0qWte.js +2 -0
- package/dist/cdn/chunks/{extensions-rPP7qRRm.js → extensions-ClmkNA8R.js} +4 -4
- package/dist/cdn/chunks/{extensions-rPP7qRRm.js.map → extensions-ClmkNA8R.js.map} +1 -1
- package/dist/cdn/chunks/{icons-BF0mJX0V.js → icons-BjvraR-Y.js} +25 -25
- package/dist/cdn/chunks/{icons-BF0mJX0V.js.map → icons-BjvraR-Y.js.map} +1 -1
- package/dist/cdn/chunks/{preRenderCustomBlocks-h4ZFBKbD.js → preRenderCustomBlocks-Bg3rIgGJ.js} +2 -2
- package/dist/cdn/chunks/{preRenderCustomBlocks-h4ZFBKbD.js.map → preRenderCustomBlocks-Bg3rIgGJ.js.map} +1 -1
- package/dist/cdn/chunks/{socialIcons-ZOCwCCyn.js → socialIcons-CnUJBZTO.js} +2 -2
- package/dist/cdn/chunks/socialIcons-CnUJBZTO.js.map +1 -0
- package/dist/cdn/chunks/{src-fZSLjhjy.js → src-B5-VKcRQ.js} +2 -2
- package/dist/cdn/chunks/{src-fZSLjhjy.js.map → src-B5-VKcRQ.js.map} +1 -1
- package/dist/cdn/chunks/{src-V9_ODH_1.js → src-BmKDV_BK.js} +3 -3
- package/dist/cdn/chunks/{src-V9_ODH_1.js.map → src-BmKDV_BK.js.map} +1 -1
- package/dist/cdn/chunks/{src-BR3I3gOW.js → src-QIGNPFkl.js} +6 -8
- package/dist/cdn/chunks/src-QIGNPFkl.js.map +1 -0
- package/dist/cdn/chunks/{useEditorCore-DWvAia8X.js → useEditorCore-DjD7fJpq.js} +10 -10
- package/dist/cdn/chunks/{useEditorCore-DWvAia8X.js.map → useEditorCore-DjD7fJpq.js.map} +1 -1
- package/dist/cdn/chunks/{useLogicTag-J_i_hvZg.js → useLogicTag-D6lWY0bD.js} +2 -2
- package/dist/cdn/chunks/{useLogicTag-J_i_hvZg.js.map → useLogicTag-D6lWY0bD.js.map} +1 -1
- package/dist/cdn/chunks/{useMergeTag-C5MyHYxJ.js → useMergeTag-2iW-BKWW.js} +2 -2
- package/dist/cdn/chunks/{useMergeTag-C5MyHYxJ.js.map → useMergeTag-2iW-BKWW.js.map} +1 -1
- package/dist/cdn/editor.js +239 -234
- package/dist/cdn/editor.js.map +1 -1
- package/dist/{check-DEjsanPt.js → check-DNyj-E0y.js} +1 -1
- package/dist/{chevron-down-Cv11TeKQ.js → chevron-down-BYnhkMsA.js} +1 -1
- package/dist/{chevron-right-R8dOpzBZ.js → chevron-right-D9HGBqJo.js} +1 -1
- package/dist/{chevron-up-DsDEytX1.js → chevron-up-BnIR1-ma.js} +1 -1
- package/dist/{circle-alert-B_NqWETg.js → circle-alert-B6xl1B_M.js} +1 -1
- package/dist/{clock-CDGKPx_X.js → clock-Cs5Wd3dW.js} +1 -1
- package/dist/{cloud-AO_X8T9g.js → cloud-BNEL7bxL.js} +1 -1
- package/dist/{copy-Dv2VltLv.js → copy-6uKc-WBk.js} +1 -1
- package/dist/{createCloudRuntime-D641nhri.js → createCloudRuntime-CaZapQZ6.js} +2 -2
- package/dist/{createLucideIcon-MrFrvtkF.js → createLucideIcon-BVcoovvP.js} +5 -5
- package/dist/{dist-iLUVPysa.js → dist-HjILVdTA.js} +5 -7
- package/dist/{editor-modal-DmgxKgII.js → editor-modal-Co-rZGaf.js} +16 -16
- package/dist/en-B-xoKkWi.js +2 -0
- package/dist/{extensions-CkwL1oWn.js → extensions-DXSI8Dyj.js} +3 -3
- package/dist/{eye-BVxcDaZZ.js → eye-Nbtw_q05.js} +1 -1
- package/dist/{image-up-CnC4n-8q.js → image-up-C1jC7NzQ.js} +1 -1
- package/dist/index.d.ts +2427 -373
- package/dist/{info-q7gVjMBC.js → info-ClH66pKN.js} +1 -1
- package/dist/{link-B1-UqOP6.js → link-y47GNW0o.js} +1 -1
- package/dist/{list-BvlNrd6M.js → list-DiLMlMaE.js} +1 -1
- package/dist/{loader-circle-CJ8klGfl.js → loader-circle-BRdCPW5h.js} +1 -1
- package/dist/{message-circle-Bgepipq_.js → message-circle-CNgIpVJv.js} +1 -1
- package/dist/{package-BYIdon2Q.js → package-B9OWk-Kp.js} +1 -1
- package/dist/{pencil-Bhs9MNTT.js → pencil-BDnjo24u.js} +1 -1
- package/dist/{plus-C0eGj8vT.js → plus-BMgjN7lI.js} +1 -1
- package/dist/{preRenderCustomBlocks-CTstI3Q-.js → preRenderCustomBlocks-C_PIxBp7.js} +1 -1
- package/dist/{refresh-cw-BQTOIZKD.js → refresh-cw-CR5lenxl.js} +1 -1
- package/dist/{search-CeT7yRBa.js → search-CxRUiOSF.js} +1 -1
- package/dist/{send-D7ck2xEq.js → send-Bu2RysGL.js} +1 -1
- package/dist/{shield-check-CF_VbIbH.js → shield-check-Cg8f4LB0.js} +1 -1
- package/dist/{smartphone-CkVOj7Qn.js → smartphone-CHf-8lHp.js} +1 -1
- package/dist/{socialIcons-QYtdurnO.js → socialIcons-D1gkHc_i.js} +2 -2
- package/dist/{sparkles-Cfb-Kkgv.js → sparkles-_DQGv4ub.js} +1 -1
- package/dist/templatical-editor.js +252 -247
- package/dist/{text-align-start-CkFs2Zig.js → text-align-start-PHo-Ep5i.js} +1 -1
- package/dist/{trash-C2LPw5pa.js → trash-BxIzHAri.js} +1 -1
- package/dist/{triangle-alert-gaUz4rum.js → triangle-alert-fcb2KoA-.js} +1 -1
- package/dist/{upload-C_DYZD_p.js → upload-BxBtMPMv.js} +1 -1
- package/dist/{useEditorCore-Cmv5ll-D.js → useEditorCore-iuKC8yr5.js} +14 -14
- package/dist/{useLogicTag-BaH8gey0.js → useLogicTag-wqfdwYYR.js} +1 -1
- package/dist/{useMergeTag-Cyad1yBE.js → useMergeTag-D3XDE_58.js} +1 -1
- package/dist/{useScrollToBlock-BsPYYJ8h.js → useScrollToBlock-DA_aIJXS.js} +1 -1
- package/dist/{x-JhKma5YO.js → x-DrZO5tt0.js} +1 -1
- package/package.json +13 -9
- package/dist/cdn/chunks/en-CoNe1psX.js +0 -2
- package/dist/cdn/chunks/socialIcons-ZOCwCCyn.js.map +0 -1
- package/dist/cdn/chunks/src-BR3I3gOW.js.map +0 -1
- package/dist/en-DXYNty6E.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { E as e, Q as t } from "./draggable-IB4x6w2O.js";
|
|
2
|
-
import { r as n } from "./src-
|
|
2
|
+
import { r as n } from "./src-QIGNPFkl.js";
|
|
3
3
|
import { D as r, E as i, I as a, P as o, T as s, w as c } from "./keys-DCWeHkSF.js";
|
|
4
4
|
//#region src/composables/useLogicTag.ts
|
|
5
5
|
function l() {
|
|
@@ -35,4 +35,4 @@ function l() {
|
|
|
35
35
|
//#endregion
|
|
36
36
|
export { l as t };
|
|
37
37
|
|
|
38
|
-
//# sourceMappingURL=useLogicTag-
|
|
38
|
+
//# sourceMappingURL=useLogicTag-D6lWY0bD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLogicTag-
|
|
1
|
+
{"version":3,"file":"useLogicTag-D6lWY0bD.js","names":["inject","ref","SYNTAX_PRESETS","LOGIC_TAG_REQUESTING_KEY","LOGIC_TAG_PICKER_KEY","ON_REQUEST_LOGIC_TAG_KEY","MERGE_TAG_SYNTAX_KEY","LOGIC_TAGS_KEY","LOGIC_PAIRS_KEY","useLogicTag","logicTags","logicPairs","syntax","onRequest","picker","isRequesting","canInsertLogicTag","hasStaticLogic","requestLogicTag"],"sources":["../../../src/composables/useLogicTag.ts"],"sourcesContent":["import type { LogicPair, LogicTag, SyntaxPreset } from \"@templatical/types\";\nimport { SYNTAX_PRESETS } from \"@templatical/types\";\nimport { inject, ref, type Ref } from \"vue\";\nimport {\n LOGIC_PAIRS_KEY,\n LOGIC_TAG_PICKER_KEY,\n LOGIC_TAG_REQUESTING_KEY,\n LOGIC_TAGS_KEY,\n MERGE_TAG_SYNTAX_KEY,\n ON_REQUEST_LOGIC_TAG_KEY,\n} from \"../keys\";\nimport type { LogicTagPickerResult } from \"./useLogicTagPicker\";\n\nexport interface UseLogicTagReturn {\n /** Configured standalone logic tags. */\n logicTags: LogicTag[];\n /** Configured open/close logic pairs. */\n logicPairs: LogicPair[];\n /** Resolved syntax preset — shared with merge tags; drives keyword badges. */\n syntax: SyntaxPreset;\n /**\n * Whether the \"Insert logic\" affordance should show. True when at least one\n * logic tag or pair is configured.\n */\n canInsertLogicTag: boolean;\n /** Whether a logic pick is in progress. */\n isRequesting: Ref<boolean>;\n /**\n * Open the built-in logic picker. Resolves with the chosen tag/pair, or null\n * when nothing is configured, the picker is unavailable (headless), or the\n * user cancels.\n */\n requestLogicTag: () => Promise<LogicTagPickerResult | null>;\n}\n\n/**\n * Composable for the standalone logic-tag feature — separate from merge tags.\n * Exposes configured logic tags/pairs and opens the built-in logic picker.\n */\nexport function useLogicTag(): UseLogicTagReturn {\n const logicTags = inject(LOGIC_TAGS_KEY, []);\n const logicPairs = inject(LOGIC_PAIRS_KEY, []);\n const syntax = inject(MERGE_TAG_SYNTAX_KEY, SYNTAX_PRESETS.liquid);\n const onRequest = inject(ON_REQUEST_LOGIC_TAG_KEY, null);\n // Picker may be null in headless contexts (tests, non-editor consumers).\n const picker = inject(LOGIC_TAG_PICKER_KEY, null);\n\n // Shared per editor — same reason as merge tags. See\n // LOGIC_TAG_REQUESTING_KEY.\n const isRequesting = inject(LOGIC_TAG_REQUESTING_KEY, null) ?? ref(false);\n\n // Show the affordance when a consumer callback is set OR static config\n // exists — mirrors useMergeTag's canRequestMergeTag.\n const canInsertLogicTag =\n !!onRequest || logicTags.length > 0 || logicPairs.length > 0;\n\n const hasStaticLogic = logicTags.length > 0 || logicPairs.length > 0;\n\n /**\n * Request a logic tag/pair from the user. Precedence:\n * 1. `logic.onRequest` callback (consumer-owned UX)\n * 2. Built-in picker over `logic.tags` / `logic.pairs`\n * 3. null (nothing configured / headless)\n */\n async function requestLogicTag(): Promise<LogicTagPickerResult | null> {\n if (onRequest) {\n isRequesting.value = true;\n try {\n return await onRequest();\n } finally {\n isRequesting.value = false;\n }\n }\n if (picker && hasStaticLogic) {\n isRequesting.value = true;\n try {\n return await picker.open(logicTags, logicPairs);\n } finally {\n isRequesting.value = false;\n }\n }\n return null;\n }\n\n return {\n logicTags,\n logicPairs,\n syntax,\n canInsertLogicTag,\n isRequesting,\n requestLogicTag,\n };\n}\n"],"mappings":";;;;AAuCA,SAAgBS,IAAiC;CAC/C,IAAMC,IAAYV,EAAOO,GAAgB,CAAC,CAAC,GACrCI,IAAaX,EAAOQ,GAAiB,CAAC,CAAC,GACvCI,IAASZ,EAAOM,GAAsBJ,EAAe,MAAM,GAC3DW,IAAYb,EAAOK,GAA0B,IAAI,GAEjDS,IAASd,EAAOI,GAAsB,IAAI,GAI1CW,IAAef,EAAOG,GAA0B,IAAI,KAAKF,EAAI,EAAK,GAIlEe,IACJ,CAAC,CAACH,KAAaH,EAAU,SAAS,KAAKC,EAAW,SAAS,GAEvDM,IAAiBP,EAAU,SAAS,KAAKC,EAAW,SAAS;CAQnE,eAAeO,IAAwD;EACrE,IAAIL,GAAW;GACb,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAMA,EAAU;GACzB,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,IAAIC,KAAUG,GAAgB;GAC5B,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAMH,EAAO,KAAKJ,GAAWC,CAAU;GAChD,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,OAAO;CACT;CAEA,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { E as e, Q as t, f as n } from "./draggable-IB4x6w2O.js";
|
|
2
|
-
import { f as r, o as i, r as a } from "./src-
|
|
2
|
+
import { f as r, o as i, r as a } from "./src-QIGNPFkl.js";
|
|
3
3
|
import { A as o, F as s, N as c, O as l, P as u, R as d, Y as f, j as p, k as m } from "./keys-DCWeHkSF.js";
|
|
4
4
|
//#region src/composables/useMergeTag.ts
|
|
5
5
|
function h() {
|
|
@@ -57,4 +57,4 @@ function h() {
|
|
|
57
57
|
//#endregion
|
|
58
58
|
export { h as t };
|
|
59
59
|
|
|
60
|
-
//# sourceMappingURL=useMergeTag-
|
|
60
|
+
//# sourceMappingURL=useMergeTag-2iW-BKWW.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMergeTag-C5MyHYxJ.js","names":["isMergeTagValue","checkIsMergeTagValue","getMergeTagLabel","resolveMergeTagLabel","inject","ref","computed","isMergeTagValue","getMergeTagLabel","SYNTAX_PRESETS","MERGE_TAG_PICKER_KEY","NO_MERGE_TAGS","MERGE_TAG_SHOW_RAW_VALUE_KEY","MERGE_TAGS_KEY","MERGE_TAG_SYNTAX_KEY","ON_REQUEST_MERGE_TAG_KEY","TRANSLATIONS_KEY","MERGE_TAG_REQUESTING_KEY","MERGE_TAG_AUTOCOMPLETE_KEY","useMergeTag","mergeTags","syntax","onRequestMergeTag","autocomplete","picker","showRawValue","unknownLabel","isRequesting","isMergeTagValue$1","value","getMergeTagLabel$1","findMergeTag","tag","canRepickMergeTag","getMergeTagDisplayLabel","declared","storedLabel","requestMergeTag","context"],"sources":["../../../src/composables/useMergeTag.ts"],"sourcesContent":["import type {\n MergeTag,\n MergeTagRequestContext,\n SyntaxPreset,\n} from \"@templatical/types\";\nimport {\n isMergeTagValue as checkIsMergeTagValue,\n getMergeTagLabel as resolveMergeTagLabel,\n SYNTAX_PRESETS,\n} from \"@templatical/types\";\nimport {\n computed,\n inject,\n ref,\n type ComputedRef,\n type Ref,\n type ShallowRef,\n} from \"vue\";\nimport {\n MERGE_TAGS_KEY,\n NO_MERGE_TAGS,\n MERGE_TAG_SYNTAX_KEY,\n MERGE_TAG_AUTOCOMPLETE_KEY,\n MERGE_TAG_PICKER_KEY,\n MERGE_TAG_SHOW_RAW_VALUE_KEY,\n MERGE_TAG_REQUESTING_KEY,\n ON_REQUEST_MERGE_TAG_KEY,\n TRANSLATIONS_KEY,\n} from \"../keys\";\n\nexport interface UseMergeTagReturn {\n /**\n * The configured merge tags. A ref, so `editor.setMergeTags()` reaches\n * everything reading it — never destructure the array out of it.\n */\n mergeTags: ShallowRef<MergeTag[]>;\n /** Whether a merge tag request is in progress */\n isRequesting: Ref<boolean>;\n /**\n * Whether the \"Insert merge tag\" button should be shown. True when\n * either `onRequestMergeTag` is provided or `mergeTags.tags` is\n * non-empty (the built-in picker then handles the click).\n */\n canRequestMergeTag: ComputedRef<boolean>;\n /** Whether typing-based autocomplete is enabled by configuration */\n autocomplete: boolean;\n /** The resolved syntax preset for merge tags */\n syntax: SyntaxPreset;\n /** Check if a value matches the configured merge tag syntax */\n isMergeTagValue: (value: string) => boolean;\n /** Get the human-readable label for a merge tag value */\n getMergeTagLabel: (value: string) => string;\n /**\n * The configured tag whose `value` is exactly `value`, or `undefined` when\n * the token matches nothing. Unlike `getMergeTagLabel`, absence is reported\n * rather than falling back to the raw token — callers deciding whether a\n * chip can be re-picked need to tell the two apart.\n */\n findMergeTag: (value: string) => MergeTag | undefined;\n /**\n * Whether activating a tag carrying `value` should open the chooser rather\n * than a raw text input.\n *\n * True when the consumer owns the chooser (`onRequest` decides for itself\n * what an unresolvable token means), or when the token resolves against\n * `tags` so the built-in picker has something to preselect. False otherwise,\n * which is the one case where editing the token as text is still the only\n * way to repair it.\n *\n * The single home for that rule: the canvas chip and a sidebar field chip\n * must not be able to answer it differently.\n */\n canRepickMergeTag: (value: string) => boolean;\n /**\n * What a tag renders as on screen.\n *\n * A declared tag shows its label. An undeclared token normally shows itself —\n * the editor makes a tag out of anything syntax-shaped, so the token is\n * usually the only thing identifying it. When the consumer hid raw tokens it\n * falls back to `storedLabel` (the label captured on the node when the tag\n * was inserted) and then to a neutral placeholder, so an opaque identifier\n * never reaches the screen.\n *\n * The single home for that chain: the canvas chip, its accessible name and a\n * sidebar field chip must all say the same thing.\n */\n getMergeTagDisplayLabel: (value: string, storedLabel?: string) => string;\n /**\n * Whether a tag's tooltip may reveal the raw token behind its label.\n * `false` when the consumer set `mergeTags.showRawValue: false`.\n */\n showRawValue: boolean;\n /**\n * Request a merge tag from the user. Precedence: when\n * `onRequestMergeTag` is set it owns the UX; otherwise the built-in\n * picker opens with the configured `mergeTags.tags`; otherwise null.\n *\n * `context` says whether this is an insertion or a replacement, and carries\n * the tag being replaced when one resolves.\n */\n requestMergeTag: (\n context?: MergeTagRequestContext,\n ) => Promise<MergeTag | null>;\n}\n\n/**\n * Composable for merge tag functionality.\n * Provides utilities for detecting, displaying, and requesting merge tags.\n */\nexport function useMergeTag(): UseMergeTagReturn {\n const mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\n const syntax = inject(MERGE_TAG_SYNTAX_KEY, SYNTAX_PRESETS.liquid);\n const onRequestMergeTag = inject(ON_REQUEST_MERGE_TAG_KEY, null);\n const autocomplete = inject(MERGE_TAG_AUTOCOMPLETE_KEY, true);\n // Picker may be null in headless contexts (tests, non-editor consumers).\n // requestMergeTag() returns null in that case rather than throwing.\n const picker = inject(MERGE_TAG_PICKER_KEY, null);\n const showRawValue = inject(MERGE_TAG_SHOW_RAW_VALUE_KEY, true);\n // Injected directly rather than through `useI18n()`, which throws without a\n // provider — this composable is used headlessly too. The binding name is one\n // `i18n-key-usage.test.ts` recognises as a translations holder; an unlisted\n // name makes every key read through it look dead to that guard.\n const injectedTranslations = inject(TRANSLATIONS_KEY, null);\n const unknownLabel =\n injectedTranslations?.mergeTag.unknownLabel ?? \"Merge tag\";\n\n // Shared per editor so every host that can open the picker is visible to\n // useRichTextEditor's click-outside guard. See MERGE_TAG_REQUESTING_KEY.\n const isRequesting = inject(MERGE_TAG_REQUESTING_KEY, null) ?? ref(false);\n\n function isMergeTagValue(value: string): boolean {\n return checkIsMergeTagValue(value, syntax);\n }\n\n function getMergeTagLabel(value: string): string {\n return resolveMergeTagLabel(value, mergeTags.value);\n }\n\n function findMergeTag(value: string): MergeTag | undefined {\n return mergeTags.value.find((tag) => tag.value === value);\n }\n\n function canRepickMergeTag(value: string): boolean {\n return !!onRequestMergeTag || findMergeTag(value) !== undefined;\n }\n\n function getMergeTagDisplayLabel(\n value: string,\n storedLabel?: string,\n ): string {\n const declared = findMergeTag(value);\n if (declared) return declared.label;\n // Before the token, not after it. A consumer whose picker mints a tag\n // returns one that is in no `tags` array, and its label is written onto\n // the node — reaching for the token first renders a raw identifier the\n // instant the author picks a field. This costs nothing for a tag the\n // editor made itself: the input rule, the paste rule, normalization and\n // `parseHTML` all derive an undeclared tag's stored label from\n // `getMergeTagLabel`, which returns the token, so the two agree already.\n if (storedLabel?.trim()) return storedLabel.trim();\n return showRawValue ? value : unknownLabel;\n }\n\n /**\n * Request a merge tag from the user. Precedence:\n * 1. `onRequestMergeTag` callback (consumer-owned UX)\n * 2. Built-in picker over `mergeTags.tags`\n * 3. null (nothing configured)\n */\n async function requestMergeTag(\n context?: MergeTagRequestContext,\n ): Promise<MergeTag | null> {\n if (onRequestMergeTag) {\n isRequesting.value = true;\n try {\n return await onRequestMergeTag(context);\n } finally {\n isRequesting.value = false;\n }\n }\n if (mergeTags.value.length > 0 && picker) {\n isRequesting.value = true;\n try {\n return await picker.open(mergeTags.value, {\n current: context?.current,\n });\n } finally {\n isRequesting.value = false;\n }\n }\n return null;\n }\n\n // Computed, not a snapshot: `setMergeTags` can take the list from empty to\n // populated, and a plain boolean captured here would leave the \"Insert merge\n // tag\" affordance hidden for the rest of the session.\n const canRequestMergeTag = computed(\n () => !!onRequestMergeTag || mergeTags.value.length > 0,\n );\n\n return {\n mergeTags,\n isRequesting,\n canRequestMergeTag,\n autocomplete,\n syntax,\n isMergeTagValue,\n getMergeTagLabel,\n findMergeTag,\n canRepickMergeTag,\n getMergeTagDisplayLabel,\n showRawValue,\n requestMergeTag,\n };\n}\n"],"mappings":";;;;AA6GA,SAAgBmB,IAAiC;CAC/C,IAAMC,IAAYhB,EAAOS,GAAgBF,CAAa,GAChDU,IAASjB,EAAOU,GAAsBL,EAAe,MAAM,GAC3Da,IAAoBlB,EAAOW,GAA0B,IAAI,GACzDQ,IAAenB,EAAOc,GAA4B,EAAI,GAGtDM,IAASpB,EAAOM,GAAsB,IAAI,GAC1Ce,IAAerB,EAAOQ,GAA8B,EAAI,GAMxDc,IADuBtB,EAAOY,GAAkB,IAEpD,CAAA,EAAsB,SAAS,gBAAgB,aAI3CW,IAAevB,EAAOa,GAA0B,IAAI,KAAKZ,EAAI,EAAK;CAExE,SAASL,EAAgB,GAAwB;EAC/C,OAAOC,EAAqB4B,GAAOR,CAAM;CAC3C;CAEA,SAASnB,EAAiB,GAAuB;EAC/C,OAAOC,EAAqB0B,GAAOT,EAAU,KAAK;CACpD;CAEA,SAASW,EAAa,GAAqC;EACzD,OAAOX,EAAU,MAAM,MAAM,MAAQY,EAAI,UAAUH,CAAK;CAC1D;CAEA,SAASI,EAAkB,GAAwB;EACjD,OAAO,CAAC,CAACX,KAAqBS,EAAaF,CAAK,MAAM,KAAA;CACxD;CAEA,SAASK,EACP,GACA,GACQ;EACR,IAAMC,IAAWJ,EAAaF,CAAK;EAUnC,OATIM,IAAiBA,EAAS,QAQ1BC,GAAa,KAAK,IAAUA,EAAY,KAAK,IAC1CX,IAAeI,IAAQH;CAChC;CAQA,eAAeW,EACb,GAC0B;EAC1B,IAAIf,GAAmB;GACrB,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAMA,EAAkBgB,CAAO;GACxC,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,IAAIlB,EAAU,MAAM,SAAS,KAAKI,GAAQ;GACxC,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAMA,EAAO,KAAKJ,EAAU,OAAO,EACxC,SAASkB,GAAS,QACpB,CAAC;GACH,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,OAAO;CACT;CASA,OAAO;EACL;EACA;EACA,oBAPyBhC,QACnB,CAAC,CAACgB,KAAqBF,EAAU,MAAM,SAAS,CAMtD;EACA;EACA;EACA,iBAAAQ;EACA,kBAAAE;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|
|
1
|
+
{"version":3,"file":"useMergeTag-2iW-BKWW.js","names":["isMergeTagValue","checkIsMergeTagValue","getMergeTagLabel","resolveMergeTagLabel","inject","ref","computed","isMergeTagValue","getMergeTagLabel","SYNTAX_PRESETS","MERGE_TAG_PICKER_KEY","NO_MERGE_TAGS","MERGE_TAG_SHOW_RAW_VALUE_KEY","MERGE_TAGS_KEY","MERGE_TAG_SYNTAX_KEY","ON_REQUEST_MERGE_TAG_KEY","TRANSLATIONS_KEY","MERGE_TAG_REQUESTING_KEY","MERGE_TAG_AUTOCOMPLETE_KEY","useMergeTag","mergeTags","syntax","onRequestMergeTag","autocomplete","picker","showRawValue","unknownLabel","isRequesting","isMergeTagValue$1","value","getMergeTagLabel$1","findMergeTag","tag","canRepickMergeTag","getMergeTagDisplayLabel","declared","storedLabel","requestMergeTag","context"],"sources":["../../../src/composables/useMergeTag.ts"],"sourcesContent":["import type {\n MergeTag,\n MergeTagRequestContext,\n SyntaxPreset,\n} from \"@templatical/types\";\nimport {\n isMergeTagValue as checkIsMergeTagValue,\n getMergeTagLabel as resolveMergeTagLabel,\n SYNTAX_PRESETS,\n} from \"@templatical/types\";\nimport {\n computed,\n inject,\n ref,\n type ComputedRef,\n type Ref,\n type ShallowRef,\n} from \"vue\";\nimport {\n MERGE_TAGS_KEY,\n NO_MERGE_TAGS,\n MERGE_TAG_SYNTAX_KEY,\n MERGE_TAG_AUTOCOMPLETE_KEY,\n MERGE_TAG_PICKER_KEY,\n MERGE_TAG_SHOW_RAW_VALUE_KEY,\n MERGE_TAG_REQUESTING_KEY,\n ON_REQUEST_MERGE_TAG_KEY,\n TRANSLATIONS_KEY,\n} from \"../keys\";\n\nexport interface UseMergeTagReturn {\n /**\n * The configured merge tags. A ref, so `editor.setMergeTags()` reaches\n * everything reading it — never destructure the array out of it.\n */\n mergeTags: ShallowRef<MergeTag[]>;\n /** Whether a merge tag request is in progress */\n isRequesting: Ref<boolean>;\n /**\n * Whether the \"Insert merge tag\" button should be shown. True when\n * either `onRequestMergeTag` is provided or `mergeTags.tags` is\n * non-empty (the built-in picker then handles the click).\n */\n canRequestMergeTag: ComputedRef<boolean>;\n /** Whether typing-based autocomplete is enabled by configuration */\n autocomplete: boolean;\n /** The resolved syntax preset for merge tags */\n syntax: SyntaxPreset;\n /** Check if a value matches the configured merge tag syntax */\n isMergeTagValue: (value: string) => boolean;\n /** Get the human-readable label for a merge tag value */\n getMergeTagLabel: (value: string) => string;\n /**\n * The configured tag whose `value` is exactly `value`, or `undefined` when\n * the token matches nothing. Unlike `getMergeTagLabel`, absence is reported\n * rather than falling back to the raw token — callers deciding whether a\n * chip can be re-picked need to tell the two apart.\n */\n findMergeTag: (value: string) => MergeTag | undefined;\n /**\n * Whether activating a tag carrying `value` should open the chooser rather\n * than a raw text input.\n *\n * True when the consumer owns the chooser (`onRequest` decides for itself\n * what an unresolvable token means), or when the token resolves against\n * `tags` so the built-in picker has something to preselect. False otherwise,\n * which is the one case where editing the token as text is still the only\n * way to repair it.\n *\n * The single home for that rule: the canvas chip and a sidebar field chip\n * must not be able to answer it differently.\n */\n canRepickMergeTag: (value: string) => boolean;\n /**\n * What a tag renders as on screen.\n *\n * A declared tag shows its label. An undeclared token normally shows itself —\n * the editor makes a tag out of anything syntax-shaped, so the token is\n * usually the only thing identifying it. When the consumer hid raw tokens it\n * falls back to `storedLabel` (the label captured on the node when the tag\n * was inserted) and then to a neutral placeholder, so an opaque identifier\n * never reaches the screen.\n *\n * The single home for that chain: the canvas chip, its accessible name and a\n * sidebar field chip must all say the same thing.\n */\n getMergeTagDisplayLabel: (value: string, storedLabel?: string) => string;\n /**\n * Whether a tag's tooltip may reveal the raw token behind its label.\n * `false` when the consumer set `mergeTags.showRawValue: false`.\n */\n showRawValue: boolean;\n /**\n * Request a merge tag from the user. Precedence: when\n * `onRequestMergeTag` is set it owns the UX; otherwise the built-in\n * picker opens with the configured `mergeTags.tags`; otherwise null.\n *\n * `context` says whether this is an insertion or a replacement, and carries\n * the tag being replaced when one resolves.\n */\n requestMergeTag: (\n context?: MergeTagRequestContext,\n ) => Promise<MergeTag | null>;\n}\n\n/**\n * Composable for merge tag functionality.\n * Provides utilities for detecting, displaying, and requesting merge tags.\n */\nexport function useMergeTag(): UseMergeTagReturn {\n const mergeTags = inject(MERGE_TAGS_KEY, NO_MERGE_TAGS);\n const syntax = inject(MERGE_TAG_SYNTAX_KEY, SYNTAX_PRESETS.liquid);\n const onRequestMergeTag = inject(ON_REQUEST_MERGE_TAG_KEY, null);\n const autocomplete = inject(MERGE_TAG_AUTOCOMPLETE_KEY, true);\n // Picker may be null in headless contexts (tests, non-editor consumers).\n // requestMergeTag() returns null in that case rather than throwing.\n const picker = inject(MERGE_TAG_PICKER_KEY, null);\n const showRawValue = inject(MERGE_TAG_SHOW_RAW_VALUE_KEY, true);\n // Injected directly rather than through `useI18n()`, which throws without a\n // provider — this composable is used headlessly too. The binding name is one\n // `i18n-key-usage.test.ts` recognises as a translations holder; an unlisted\n // name makes every key read through it look dead to that guard.\n const injectedTranslations = inject(TRANSLATIONS_KEY, null);\n const unknownLabel =\n injectedTranslations?.mergeTag.unknownLabel ?? \"Merge tag\";\n\n // Shared per editor so every host that can open the picker is visible to\n // useRichTextEditor's click-outside guard. See MERGE_TAG_REQUESTING_KEY.\n const isRequesting = inject(MERGE_TAG_REQUESTING_KEY, null) ?? ref(false);\n\n function isMergeTagValue(value: string): boolean {\n return checkIsMergeTagValue(value, syntax);\n }\n\n function getMergeTagLabel(value: string): string {\n return resolveMergeTagLabel(value, mergeTags.value);\n }\n\n function findMergeTag(value: string): MergeTag | undefined {\n return mergeTags.value.find((tag) => tag.value === value);\n }\n\n function canRepickMergeTag(value: string): boolean {\n return !!onRequestMergeTag || findMergeTag(value) !== undefined;\n }\n\n function getMergeTagDisplayLabel(\n value: string,\n storedLabel?: string,\n ): string {\n const declared = findMergeTag(value);\n if (declared) return declared.label;\n // Before the token, not after it. A consumer whose picker mints a tag\n // returns one that is in no `tags` array, and its label is written onto\n // the node — reaching for the token first renders a raw identifier the\n // instant the author picks a field. This costs nothing for a tag the\n // editor made itself: the input rule, the paste rule, normalization and\n // `parseHTML` all derive an undeclared tag's stored label from\n // `getMergeTagLabel`, which returns the token, so the two agree already.\n if (storedLabel?.trim()) return storedLabel.trim();\n return showRawValue ? value : unknownLabel;\n }\n\n /**\n * Request a merge tag from the user. Precedence:\n * 1. `onRequestMergeTag` callback (consumer-owned UX)\n * 2. Built-in picker over `mergeTags.tags`\n * 3. null (nothing configured)\n */\n async function requestMergeTag(\n context?: MergeTagRequestContext,\n ): Promise<MergeTag | null> {\n if (onRequestMergeTag) {\n isRequesting.value = true;\n try {\n return await onRequestMergeTag(context);\n } finally {\n isRequesting.value = false;\n }\n }\n if (mergeTags.value.length > 0 && picker) {\n isRequesting.value = true;\n try {\n return await picker.open(mergeTags.value, {\n current: context?.current,\n });\n } finally {\n isRequesting.value = false;\n }\n }\n return null;\n }\n\n // Computed, not a snapshot: `setMergeTags` can take the list from empty to\n // populated, and a plain boolean captured here would leave the \"Insert merge\n // tag\" affordance hidden for the rest of the session.\n const canRequestMergeTag = computed(\n () => !!onRequestMergeTag || mergeTags.value.length > 0,\n );\n\n return {\n mergeTags,\n isRequesting,\n canRequestMergeTag,\n autocomplete,\n syntax,\n isMergeTagValue,\n getMergeTagLabel,\n findMergeTag,\n canRepickMergeTag,\n getMergeTagDisplayLabel,\n showRawValue,\n requestMergeTag,\n };\n}\n"],"mappings":";;;;AA6GA,SAAgBmB,IAAiC;CAC/C,IAAMC,IAAYhB,EAAOS,GAAgBF,CAAa,GAChDU,IAASjB,EAAOU,GAAsBL,EAAe,MAAM,GAC3Da,IAAoBlB,EAAOW,GAA0B,IAAI,GACzDQ,IAAenB,EAAOc,GAA4B,EAAI,GAGtDM,IAASpB,EAAOM,GAAsB,IAAI,GAC1Ce,IAAerB,EAAOQ,GAA8B,EAAI,GAMxDc,IADuBtB,EAAOY,GAAkB,IAEpD,CAAA,EAAsB,SAAS,gBAAgB,aAI3CW,IAAevB,EAAOa,GAA0B,IAAI,KAAKZ,EAAI,EAAK;CAExE,SAASL,EAAgB,GAAwB;EAC/C,OAAOC,EAAqB4B,GAAOR,CAAM;CAC3C;CAEA,SAASnB,EAAiB,GAAuB;EAC/C,OAAOC,EAAqB0B,GAAOT,EAAU,KAAK;CACpD;CAEA,SAASW,EAAa,GAAqC;EACzD,OAAOX,EAAU,MAAM,MAAM,MAAQY,EAAI,UAAUH,CAAK;CAC1D;CAEA,SAASI,EAAkB,GAAwB;EACjD,OAAO,CAAC,CAACX,KAAqBS,EAAaF,CAAK,MAAM,KAAA;CACxD;CAEA,SAASK,EACP,GACA,GACQ;EACR,IAAMC,IAAWJ,EAAaF,CAAK;EAUnC,OATIM,IAAiBA,EAAS,QAQ1BC,GAAa,KAAK,IAAUA,EAAY,KAAK,IAC1CX,IAAeI,IAAQH;CAChC;CAQA,eAAeW,EACb,GAC0B;EAC1B,IAAIf,GAAmB;GACrB,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAMA,EAAkBgB,CAAO;GACxC,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,IAAIlB,EAAU,MAAM,SAAS,KAAKI,GAAQ;GACxC,EAAa,QAAQ;GACrB,IAAI;IACF,OAAO,MAAMA,EAAO,KAAKJ,EAAU,OAAO,EACxC,SAASkB,GAAS,QACpB,CAAC;GACH,UAAU;IACR,EAAa,QAAQ;GACvB;EACF;EACA,OAAO;CACT;CASA,OAAO;EACL;EACA;EACA,oBAPyBhC,QACnB,CAAC,CAACgB,KAAqBF,EAAU,MAAM,SAAS,CAMtD;EACA;EACA;EACA,iBAAAQ;EACA,kBAAAE;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
|