@templatical/editor 0.27.5 → 0.28.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.
Files changed (226) hide show
  1. package/dist/{AiChatSidebar-LstHjwBU.js → AiChatSidebar-mZyf81xG.js} +14 -14
  2. package/dist/{AiFeatureMenu-YE9qqElA.js → AiFeatureMenu-wpL2vbbd.js} +7 -7
  3. package/dist/{BlockIssueBadge-DKaFQNxW.js → BlockIssueBadge-CavnyR3o.js} +5 -5
  4. package/dist/{BlockPreviewCanvas-CF7r-mw4.js → BlockPreviewCanvas-CeNJqtJ6.js} +3 -3
  5. package/dist/{CloudHeaderExtras-msYo6uhq.js → CloudHeaderExtras-fH0cB-Ru.js} +5 -5
  6. package/dist/{CloudPanels-DCeNSwXy.js → CloudPanels-Davlnzfd.js} +8 -8
  7. package/dist/{CollaboratorBar-D1Tx8cds.js → CollaboratorBar-BvQZriPA.js} +4 -4
  8. package/dist/{ColorPicker-BNfy9BdG.js → ColorPicker-OLSFZBBZ.js} +7 -7
  9. package/dist/{CommentsPanel-c5LmzlNN.js → CommentsPanel-B4_63eIS.js} +2 -2
  10. package/dist/{CommentsSidebar-Bm1DxFb5.js → CommentsSidebar-BkBHMXez.js} +14 -14
  11. package/dist/{CountdownBlock-qKtJVRIV.js → CountdownBlock-Drr1WErd.js} +3 -3
  12. package/dist/{CountdownToolbar-D-o_hwsO.js → CountdownToolbar-D8FsDIfa.js} +4 -4
  13. package/dist/{DesignReferenceSidebar-C8WTApc5.js → DesignReferenceSidebar-Dp44REBY.js} +11 -11
  14. package/dist/{IssuesPanel-D49aJjLS.js → IssuesPanel-C1v3dmoB.js} +8 -8
  15. package/dist/{LoadingTrack-C2T8ixEL.js → LoadingTrack-Db9j_aBr.js} +1 -1
  16. package/dist/{MergeTagModeToggle-CVzJY9b2.js → MergeTagModeToggle-CZN0Pr1o.js} +5 -5
  17. package/dist/{MergeTagSuggestion-DflUPfkT.js → MergeTagSuggestion-a7Tk8tBB.js} +2 -2
  18. package/dist/{NumberWithSuffix-DZAktKby.js → NumberWithSuffix-C1D0WFrN.js} +1 -1
  19. package/dist/{ParagraphEditor-CoN76ofC.js → ParagraphEditor-CGxsm0Mx.js} +15 -15
  20. package/dist/{RestoreVersionDialog-DUXGp-Nw.js → RestoreVersionDialog-BLW8wC1J.js} +6 -6
  21. package/dist/{RichTextEditorContent-DxicfnPf.js → RichTextEditorContent-COBy_Q9j.js} +8 -8
  22. package/dist/{SaveBlockDialog-D0B9SKf9.js → SaveBlockDialog-DPDQTGTB.js} +12 -13
  23. package/dist/{SavedBlocksBrowserModal-vdci8i18.js → SavedBlocksBrowserModal-D8a-wIRe.js} +13 -14
  24. package/dist/{SavedBlocksPanels-CTmlYwIT.js → SavedBlocksPanels-CmnGyJHO.js} +2 -2
  25. package/dist/{SavedBlocksPickBar-DMtV1UKQ.js → SavedBlocksPickBar-Z-YRd488.js} +4 -4
  26. package/dist/{TemplateScoringPanel-BFsUqnXR.js → TemplateScoringPanel-5zp1qOSl.js} +15 -15
  27. package/dist/{TestEmailModal-4pHgNCmg.js → TestEmailModal-C69UbsNy.js} +11 -11
  28. package/dist/{TestEmailPanel-kp84Z0hs.js → TestEmailPanel-CH2dG-8A.js} +2 -2
  29. package/dist/{TitleEditor-BdRlIm67.js → TitleEditor-BfWPus_C.js} +10 -10
  30. package/dist/{TplModal-CUV1Sd-2.js → TplModal-DBlMd7h9.js} +10 -8
  31. package/dist/{VersionHistoryMenu-CrIVG_SN.js → VersionHistoryMenu-Cg4UKxKc.js} +14 -14
  32. package/dist/{VersionHistoryPanels-dyV9JP5G.js → VersionHistoryPanels-BKjbNEOM.js} +2 -2
  33. package/dist/{VersionPreviewBanner-Bb1cnMZ3.js → VersionPreviewBanner-B0thyJ8F.js} +3 -3
  34. package/dist/{blockTypeIcons-B13kXe55.js → blockTypeIcons-CQMkcHo9.js} +2 -2
  35. package/dist/bundle-stats.json +6 -6
  36. package/dist/{ca-CEuJ6IRr.js → ca-DY0AYOLG.js} +6 -0
  37. package/dist/cdn/chunks/{AiChatSidebar-tZqbhmuJ.js → AiChatSidebar-BQATQ3Tr.js} +8 -8
  38. package/dist/cdn/chunks/{AiChatSidebar-tZqbhmuJ.js.map → AiChatSidebar-BQATQ3Tr.js.map} +1 -1
  39. package/dist/cdn/chunks/{AiFeatureMenu-CS62uVuh.js → AiFeatureMenu-cNoZ0xl_.js} +6 -6
  40. package/dist/cdn/chunks/{AiFeatureMenu-CS62uVuh.js.map → AiFeatureMenu-cNoZ0xl_.js.map} +1 -1
  41. package/dist/cdn/chunks/{BlockIssueBadge-D9L8j7Db.js → BlockIssueBadge-CH_3vFw4.js} +5 -5
  42. package/dist/cdn/chunks/{BlockIssueBadge-D9L8j7Db.js.map → BlockIssueBadge-CH_3vFw4.js.map} +1 -1
  43. package/dist/cdn/chunks/{BlockPreviewCanvas-DcCqg909.js → BlockPreviewCanvas-9tFXPVgi.js} +4 -4
  44. package/dist/cdn/chunks/{BlockPreviewCanvas-DcCqg909.js.map → BlockPreviewCanvas-9tFXPVgi.js.map} +1 -1
  45. package/dist/cdn/chunks/{CloudHeaderExtras-d_8bZemh.js → CloudHeaderExtras-CUAM2ADe.js} +5 -5
  46. package/dist/cdn/chunks/{CloudHeaderExtras-d_8bZemh.js.map → CloudHeaderExtras-CUAM2ADe.js.map} +1 -1
  47. package/dist/cdn/chunks/{CloudPanels-DVtJkWsj.js → CloudPanels-DMnnSIkX.js} +8 -8
  48. package/dist/cdn/chunks/CloudPanels-DMnnSIkX.js.map +1 -0
  49. package/dist/cdn/chunks/{CollaboratorBar-CpHDWa9D.js → CollaboratorBar-C6sorNRi.js} +5 -5
  50. package/dist/cdn/chunks/{CollaboratorBar-CpHDWa9D.js.map → CollaboratorBar-C6sorNRi.js.map} +1 -1
  51. package/dist/cdn/chunks/{ColorPicker-QPBbkWAs.js → ColorPicker-q1V7ggWI.js} +7 -7
  52. package/dist/cdn/chunks/{ColorPicker-QPBbkWAs.js.map → ColorPicker-q1V7ggWI.js.map} +1 -1
  53. package/dist/cdn/chunks/{CommentsPanel-COhQMagD.js → CommentsPanel-ExfxJZM3.js} +3 -3
  54. package/dist/cdn/chunks/{CommentsPanel-COhQMagD.js.map → CommentsPanel-ExfxJZM3.js.map} +1 -1
  55. package/dist/cdn/chunks/{CommentsSidebar-vzLX-_h3.js → CommentsSidebar-CzALURMJ.js} +5 -5
  56. package/dist/cdn/chunks/{CommentsSidebar-vzLX-_h3.js.map → CommentsSidebar-CzALURMJ.js.map} +1 -1
  57. package/dist/cdn/chunks/{CountdownBlock-BKrYGRiT.js → CountdownBlock-_7TUBqJS.js} +4 -4
  58. package/dist/cdn/chunks/{CountdownBlock-BKrYGRiT.js.map → CountdownBlock-_7TUBqJS.js.map} +1 -1
  59. package/dist/cdn/chunks/{CountdownToolbar-CMJVzd97.js → CountdownToolbar-CkbWSrAH.js} +5 -5
  60. package/dist/cdn/chunks/{CountdownToolbar-CMJVzd97.js.map → CountdownToolbar-CkbWSrAH.js.map} +1 -1
  61. package/dist/cdn/chunks/{DesignReferenceSidebar-npLxDRJI.js → DesignReferenceSidebar-COh0Rx_A.js} +7 -7
  62. package/dist/cdn/chunks/{DesignReferenceSidebar-npLxDRJI.js.map → DesignReferenceSidebar-COh0Rx_A.js.map} +1 -1
  63. package/dist/cdn/chunks/{IssuesPanel-CTGlv7HF.js → IssuesPanel-C1NG0xRI.js} +6 -6
  64. package/dist/cdn/chunks/{IssuesPanel-CTGlv7HF.js.map → IssuesPanel-C1NG0xRI.js.map} +1 -1
  65. package/dist/cdn/chunks/{LoadingTrack-Dp_QZvAK.js → LoadingTrack-D_wweXVz.js} +2 -2
  66. package/dist/cdn/chunks/{LoadingTrack-Dp_QZvAK.js.map → LoadingTrack-D_wweXVz.js.map} +1 -1
  67. package/dist/cdn/chunks/{MergeTagModeToggle-CkpKFx9N.js → MergeTagModeToggle-B1yXCp3D.js} +5 -5
  68. package/dist/cdn/chunks/{MergeTagModeToggle-CkpKFx9N.js.map → MergeTagModeToggle-B1yXCp3D.js.map} +1 -1
  69. package/dist/cdn/chunks/{MergeTagSuggestion-Df7jcLpS.js → MergeTagSuggestion-DqYR3jPA.js} +3 -3
  70. package/dist/cdn/chunks/{MergeTagSuggestion-Df7jcLpS.js.map → MergeTagSuggestion-DqYR3jPA.js.map} +1 -1
  71. package/dist/cdn/chunks/{NumberWithSuffix-DNBrbl4H.js → NumberWithSuffix-CWvM_I3T.js} +2 -2
  72. package/dist/cdn/chunks/{NumberWithSuffix-DNBrbl4H.js.map → NumberWithSuffix-CWvM_I3T.js.map} +1 -1
  73. package/dist/cdn/chunks/{ParagraphEditor-CbP_rcqb.js → ParagraphEditor-DPM1hUKo.js} +22 -22
  74. package/dist/cdn/chunks/{ParagraphEditor-CbP_rcqb.js.map → ParagraphEditor-DPM1hUKo.js.map} +1 -1
  75. package/dist/cdn/chunks/{RestoreVersionDialog-DYI-M27i.js → RestoreVersionDialog-Dz0bX5ZZ.js} +6 -6
  76. package/dist/cdn/chunks/RestoreVersionDialog-Dz0bX5ZZ.js.map +1 -0
  77. package/dist/cdn/chunks/{RichTextEditorContent-C-kbbKaq.js → RichTextEditorContent-nkyIRAyN.js} +7 -7
  78. package/dist/cdn/chunks/{RichTextEditorContent-C-kbbKaq.js.map → RichTextEditorContent-nkyIRAyN.js.map} +1 -1
  79. package/dist/cdn/chunks/{SaveBlockDialog-BBwDyRpC.js → SaveBlockDialog-DVMxZbmf.js} +10 -11
  80. package/dist/cdn/chunks/SaveBlockDialog-DVMxZbmf.js.map +1 -0
  81. package/dist/cdn/chunks/{SavedBlocksBrowserModal-B_zqSoWl.js → SavedBlocksBrowserModal-C3nfKRQg.js} +11 -12
  82. package/dist/cdn/chunks/SavedBlocksBrowserModal-C3nfKRQg.js.map +1 -0
  83. package/dist/cdn/chunks/{SavedBlocksPanels-B_XNxwzs.js → SavedBlocksPanels-DVat5S7j.js} +3 -3
  84. package/dist/cdn/chunks/{SavedBlocksPanels-B_XNxwzs.js.map → SavedBlocksPanels-DVat5S7j.js.map} +1 -1
  85. package/dist/cdn/chunks/{SavedBlocksPickBar-C3BP5941.js → SavedBlocksPickBar-Brg8US_n.js} +5 -5
  86. package/dist/cdn/chunks/{SavedBlocksPickBar-C3BP5941.js.map → SavedBlocksPickBar-Brg8US_n.js.map} +1 -1
  87. package/dist/cdn/chunks/{TemplateScoringPanel-MvdrkgqL.js → TemplateScoringPanel-DO86BvdQ.js} +11 -11
  88. package/dist/cdn/chunks/{TemplateScoringPanel-MvdrkgqL.js.map → TemplateScoringPanel-DO86BvdQ.js.map} +1 -1
  89. package/dist/cdn/chunks/{TestEmailModal-CnoOTm5c.js → TestEmailModal-CDx1Pqtx.js} +10 -10
  90. package/dist/cdn/chunks/TestEmailModal-CDx1Pqtx.js.map +1 -0
  91. package/dist/cdn/chunks/{TestEmailPanel-BcvY4bL7.js → TestEmailPanel--PpajGV7.js} +3 -3
  92. package/dist/cdn/chunks/{TestEmailPanel-BcvY4bL7.js.map → TestEmailPanel--PpajGV7.js.map} +1 -1
  93. package/dist/cdn/chunks/{TitleEditor-5Ytpa9n2.js → TitleEditor-CLkXt5RZ.js} +12 -12
  94. package/dist/cdn/chunks/{TitleEditor-5Ytpa9n2.js.map → TitleEditor-CLkXt5RZ.js.map} +1 -1
  95. package/dist/cdn/chunks/{TplModal-pGADKFOL.js → TplModal-BhfPoZ_W.js} +10 -8
  96. package/dist/cdn/chunks/TplModal-BhfPoZ_W.js.map +1 -0
  97. package/dist/cdn/chunks/{VersionHistoryMenu-BNYSIjVj.js → VersionHistoryMenu-_DyRYBRP.js} +7 -7
  98. package/dist/cdn/chunks/{VersionHistoryMenu-BNYSIjVj.js.map → VersionHistoryMenu-_DyRYBRP.js.map} +1 -1
  99. package/dist/cdn/chunks/{VersionHistoryPanels-CSryv5rE.js → VersionHistoryPanels-DGfOOcKV.js} +3 -3
  100. package/dist/cdn/chunks/{VersionHistoryPanels-CSryv5rE.js.map → VersionHistoryPanels-DGfOOcKV.js.map} +1 -1
  101. package/dist/cdn/chunks/{VersionPreviewBanner-C4mr6y2u.js → VersionPreviewBanner-FbBmgknN.js} +4 -4
  102. package/dist/cdn/chunks/{VersionPreviewBanner-C4mr6y2u.js.map → VersionPreviewBanner-FbBmgknN.js.map} +1 -1
  103. package/dist/cdn/chunks/{blockTypeIcons-A9qFb1cR.js → blockTypeIcons-o4ammRlm.js} +2 -2
  104. package/dist/cdn/chunks/{blockTypeIcons-A9qFb1cR.js.map → blockTypeIcons-o4ammRlm.js.map} +1 -1
  105. package/dist/cdn/chunks/{ca-CEuJ6IRr.js → ca-DY0AYOLG.js} +7 -1
  106. package/dist/cdn/chunks/ca-DY0AYOLG.js.map +1 -0
  107. package/dist/cdn/chunks/{cloud-BA0OpRh-.js → cloud-CRCcXTc5.js} +2 -2
  108. package/dist/cdn/chunks/{cloud-BA0OpRh-.js.map → cloud-CRCcXTc5.js.map} +1 -1
  109. package/dist/cdn/chunks/{createCloudRuntime-DYDf_-rN.js → createCloudRuntime-C-u7oIGa.js} +7 -7
  110. package/dist/cdn/chunks/{createCloudRuntime-DYDf_-rN.js.map → createCloudRuntime-C-u7oIGa.js.map} +1 -1
  111. package/dist/{de-aRxhZF_K.js → cdn/chunks/de-CYLWugqb.js} +8 -0
  112. package/dist/cdn/chunks/de-CYLWugqb.js.map +1 -0
  113. package/dist/cdn/chunks/{dist-CM8TB0VD.js → dist-2fOlspdg.js} +3 -3
  114. package/dist/cdn/chunks/{dist-CM8TB0VD.js.map → dist-2fOlspdg.js.map} +1 -1
  115. package/dist/cdn/chunks/{dist-CYLJiSiH.js → dist-eKG4m5Wx.js} +2 -2
  116. package/dist/cdn/chunks/{dist-CYLJiSiH.js.map → dist-eKG4m5Wx.js.map} +1 -1
  117. package/dist/cdn/chunks/{draggable-BfpsXFg7.js → draggable-BLMjz0GK.js} +565 -579
  118. package/dist/cdn/chunks/{draggable-BfpsXFg7.js.map → draggable-BLMjz0GK.js.map} +1 -1
  119. package/dist/cdn/chunks/{en-BX4V_7YO.js → en-C3TM249M.js} +7 -1
  120. package/dist/cdn/chunks/en-C3TM249M.js.map +1 -0
  121. package/dist/cdn/chunks/en-C6FKrw69.js +2 -0
  122. package/dist/cdn/chunks/{es-CA9uQ-5x.js → es-D1SF4nCR.js} +7 -1
  123. package/dist/cdn/chunks/es-D1SF4nCR.js.map +1 -0
  124. package/dist/cdn/chunks/{extensions-P0lpi6k8.js → extensions-qSqWdFko.js} +6 -6
  125. package/dist/cdn/chunks/{extensions-P0lpi6k8.js.map → extensions-qSqWdFko.js.map} +1 -1
  126. package/dist/{fr-iBuE60Ap.js → cdn/chunks/fr-CdLhJ7kw.js} +8 -0
  127. package/dist/cdn/chunks/fr-CdLhJ7kw.js.map +1 -0
  128. package/dist/cdn/chunks/{icons-Dl5bcXmT.js → icons-MeYdeH4P.js} +19 -19
  129. package/dist/cdn/chunks/{icons-Dl5bcXmT.js.map → icons-MeYdeH4P.js.map} +1 -1
  130. package/dist/cdn/chunks/{keys-oJdkdtPn.js → keys-D7OpfE2s.js} +2 -2
  131. package/dist/cdn/chunks/{keys-oJdkdtPn.js.map → keys-D7OpfE2s.js.map} +1 -1
  132. package/dist/cdn/chunks/{nl-Btw4ojNo.js → nl-BvsLoyKp.js} +7 -1
  133. package/dist/cdn/chunks/nl-BvsLoyKp.js.map +1 -0
  134. package/dist/cdn/chunks/{pt-BR-GjVsCqbN.js → pt-BR-CAGS5YXp.js} +7 -1
  135. package/dist/cdn/chunks/pt-BR-CAGS5YXp.js.map +1 -0
  136. package/dist/cdn/chunks/{src-BDUi-9js.js → src-2QDLdUyx.js} +116 -34
  137. package/dist/cdn/chunks/src-2QDLdUyx.js.map +1 -0
  138. package/dist/cdn/chunks/src-B_QJduQD.js.map +1 -1
  139. package/dist/cdn/chunks/{src-DNhD7a2v.js → src-DgxiymKd.js} +62 -59
  140. package/dist/cdn/chunks/src-DgxiymKd.js.map +1 -0
  141. package/dist/cdn/chunks/{tiptap-DWeSx_P8.js → tiptap-DgH_wKK_.js} +2 -2
  142. package/dist/cdn/chunks/{tiptap-DWeSx_P8.js.map → tiptap-DgH_wKK_.js.map} +1 -1
  143. package/dist/cdn/chunks/{useAliveFlag-Dtm174fG.js → useAliveFlag-C1pwLtPO.js} +2 -2
  144. package/dist/cdn/chunks/{useAliveFlag-Dtm174fG.js.map → useAliveFlag-C1pwLtPO.js.map} +1 -1
  145. package/dist/cdn/chunks/{useCloudI18n-Ch-SiRjU.js → useCloudI18n-D4gzxtqF.js} +3 -3
  146. package/dist/cdn/chunks/{useCloudI18n-Ch-SiRjU.js.map → useCloudI18n-D4gzxtqF.js.map} +1 -1
  147. package/dist/cdn/chunks/{useEditorCore-DTpSiO4S.js → useEditorCore-2ZVOY0Rh.js} +43 -38
  148. package/dist/cdn/chunks/{useEditorCore-DTpSiO4S.js.map → useEditorCore-2ZVOY0Rh.js.map} +1 -1
  149. package/dist/cdn/chunks/useEditorRoot-BY-amddA.js +10 -0
  150. package/dist/cdn/chunks/{useEditorRoot-Cxnmf5hM.js.map → useEditorRoot-BY-amddA.js.map} +1 -1
  151. package/dist/cdn/chunks/{useI18n-4sUbTM3Y.js → useI18n-DYb1SgLB.js} +3 -3
  152. package/dist/cdn/chunks/{useI18n-4sUbTM3Y.js.map → useI18n-DYb1SgLB.js.map} +1 -1
  153. package/dist/cdn/chunks/{useMergeTag-DxjTEyin.js → useMergeTag-D-SE_XN8.js} +3 -3
  154. package/dist/cdn/chunks/{useMergeTag-DxjTEyin.js.map → useMergeTag-D-SE_XN8.js.map} +1 -1
  155. package/dist/cdn/chunks/{usePopoverPosition-C1N2kaiZ.js → usePopoverPosition-CJZ6EkS4.js} +3 -3
  156. package/dist/cdn/chunks/{usePopoverPosition-C1N2kaiZ.js.map → usePopoverPosition-CJZ6EkS4.js.map} +1 -1
  157. package/dist/cdn/chunks/{useScrollToBlock-BvWAfWd8.js → useScrollToBlock-D6gyIzT1.js} +3 -3
  158. package/dist/cdn/chunks/{useScrollToBlock-BvWAfWd8.js.map → useScrollToBlock-D6gyIzT1.js.map} +1 -1
  159. package/dist/cdn/editor.css +1 -1
  160. package/dist/cdn/editor.js +1012 -958
  161. package/dist/cdn/editor.js.map +1 -1
  162. package/dist/{check-GRcTaHlZ.js → check-CLfibuQc.js} +1 -1
  163. package/dist/{chevron-down-NUIAa2Qf.js → chevron-down-DamTR8ta.js} +1 -1
  164. package/dist/{chevron-up-Bjf2BQtL.js → chevron-up-CrV_Ksg-.js} +1 -1
  165. package/dist/{circle-alert-FpQ8ykQL.js → circle-alert-BLy-e34e.js} +1 -1
  166. package/dist/{clock-CaOM1DC-.js → clock-DQI6aaFT.js} +1 -1
  167. package/dist/{cloud-BAefVBb_.js → cloud-DXFUA8H_.js} +1 -1
  168. package/dist/{createCloudRuntime-FEZG-Gve.js → createCloudRuntime-BrgMP9gS.js} +5 -5
  169. package/dist/{createLucideIcon-CAmDKr5Z.js → createLucideIcon-Cbl3Ma_H.js} +3 -3
  170. package/dist/{cdn/chunks/de-aRxhZF_K.js → de-CYLWugqb.js} +6 -2
  171. package/dist/{dist-BLVvhIFj.js → dist-7Lr_A7Va.js} +2 -2
  172. package/dist/{dist-B5iReTtK.js → dist-CkSgS-K9.js} +2 -2
  173. package/dist/{dist-CqcGTIiX.js → dist-WE11SQGe.js} +1 -1
  174. package/dist/{en-BX4V_7YO.js → en-C3TM249M.js} +6 -0
  175. package/dist/{es-CA9uQ-5x.js → es-D1SF4nCR.js} +6 -0
  176. package/dist/{extensions-DWp4eXoE.js → extensions-PJK0gLCL.js} +6 -6
  177. package/dist/{cdn/chunks/fr-iBuE60Ap.js → fr-CdLhJ7kw.js} +6 -2
  178. package/dist/{image-up-CIGT4cSb.js → image-up-BVOMy_Fs.js} +1 -1
  179. package/dist/{info-9YwKinXj.js → info-BKMKasyT.js} +1 -1
  180. package/dist/{keys-CVpi8xCT.js → keys-CAor2T5q.js} +1 -1
  181. package/dist/{loader-circle-QyURl47g.js → loader-circle-CSGh8n8A.js} +1 -1
  182. package/dist/{message-circle-C9pycEzV.js → message-circle-C6q2Fm_W.js} +1 -1
  183. package/dist/{nl-Btw4ojNo.js → nl-BvsLoyKp.js} +6 -0
  184. package/dist/{pencil-BvW86jVn.js → pencil-DaTN0HKw.js} +1 -1
  185. package/dist/{pt-BR-GjVsCqbN.js → pt-BR-CAGS5YXp.js} +6 -0
  186. package/dist/{refresh-cw-BDAUomac.js → refresh-cw-Cu4wRQwT.js} +1 -1
  187. package/dist/{runtime-dom.esm-bundler-BgKXIPLV.js → runtime-dom.esm-bundler-CHEsXNQz.js} +1 -1
  188. package/dist/{scan-line-B5EvAPSG.js → scan-line-O_o657Gv.js} +1 -1
  189. package/dist/{send-BAUn7DLp.js → send-GS3soauT.js} +1 -1
  190. package/dist/{shield-check-CLGywlg0.js → shield-check-B2TzT3Wp.js} +1 -1
  191. package/dist/{sparkles-X6C0spo6.js → sparkles-CNENcXZl.js} +1 -1
  192. package/dist/style.css +1 -1
  193. package/dist/templatical-editor.js +466 -412
  194. package/dist/{text-align-start-C6FXOoEj.js → text-align-start-D0-k8RUf.js} +1 -1
  195. package/dist/{trash-2-balHkQP4.js → trash-2-BE-qGIpG.js} +1 -1
  196. package/dist/{triangle-alert-D2JBEr6k.js → triangle-alert-DNM2_dyh.js} +1 -1
  197. package/dist/{upload-D70OYprI.js → upload-Cv2Jx-yM.js} +1 -1
  198. package/dist/{useAliveFlag-BGIAZii_.js → useAliveFlag-1yBub211.js} +1 -1
  199. package/dist/{useCloudI18n-DmWo4nzs.js → useCloudI18n-Dwo7usTl.js} +2 -2
  200. package/dist/{useEditorCore--_kmTxxX.js → useEditorCore-DM8vzMZQ.js} +35 -30
  201. package/dist/{useEditorRoot-DKyG95pb.js → useEditorRoot-CUIzpMYc.js} +2 -2
  202. package/dist/{useI18n-CvYvat9_.js → useI18n-DT_DKupw.js} +2 -2
  203. package/dist/{useMergeTag-D6Z6cyDa.js → useMergeTag-CcHQCcPN.js} +2 -2
  204. package/dist/{usePopoverPosition-WslxM_PU.js → usePopoverPosition-DaHz1kqb.js} +2 -2
  205. package/dist/{useScrollToBlock-DcImB73T.js → useScrollToBlock-C2LYXENK.js} +3 -3
  206. package/dist/{vue.runtime.esm-bundler-DzEsDRtY.js → vue.runtime.esm-bundler-CdH_W9qX.js} +158 -172
  207. package/dist/{x-DTUPbuwx.js → x-DUPrT6Aa.js} +1 -1
  208. package/package.json +10 -10
  209. package/dist/cdn/chunks/CloudPanels-DVtJkWsj.js.map +0 -1
  210. package/dist/cdn/chunks/RestoreVersionDialog-DYI-M27i.js.map +0 -1
  211. package/dist/cdn/chunks/SaveBlockDialog-BBwDyRpC.js.map +0 -1
  212. package/dist/cdn/chunks/SavedBlocksBrowserModal-B_zqSoWl.js.map +0 -1
  213. package/dist/cdn/chunks/TestEmailModal-CnoOTm5c.js.map +0 -1
  214. package/dist/cdn/chunks/TplModal-pGADKFOL.js.map +0 -1
  215. package/dist/cdn/chunks/ca-CEuJ6IRr.js.map +0 -1
  216. package/dist/cdn/chunks/de-aRxhZF_K.js.map +0 -1
  217. package/dist/cdn/chunks/en-BCgVx9zM.js +0 -90
  218. package/dist/cdn/chunks/en-BCgVx9zM.js.map +0 -1
  219. package/dist/cdn/chunks/en-BX4V_7YO.js.map +0 -1
  220. package/dist/cdn/chunks/es-CA9uQ-5x.js.map +0 -1
  221. package/dist/cdn/chunks/fr-iBuE60Ap.js.map +0 -1
  222. package/dist/cdn/chunks/nl-Btw4ojNo.js.map +0 -1
  223. package/dist/cdn/chunks/pt-BR-GjVsCqbN.js.map +0 -1
  224. package/dist/cdn/chunks/src-BDUi-9js.js.map +0 -1
  225. package/dist/cdn/chunks/src-DNhD7a2v.js.map +0 -1
  226. package/dist/cdn/chunks/useEditorRoot-Cxnmf5hM.js +0 -10
@@ -1,4 +1,4 @@
1
- import { E as e } from "./draggable-BfpsXFg7.js";
1
+ import { E as e } from "./draggable-BLMjz0GK.js";
2
2
  //#region src/keys.ts
3
3
  var t = Symbol("translations"), n = Symbol("editor"), r = Symbol("history"), i = Symbol("blockActions"), a = Symbol("conditionPreview"), o = Symbol("appliesConditionFilter"), s = Symbol("fontsManager"), c = Symbol("themeStyles"), l = Symbol("tplUiTheme"), u = Symbol("blockDefaults"), d = Symbol("blockRegistry"), f = Symbol("customBlockDefinitions"), p = Symbol("paletteBlocks"), m = Symbol("htmlBlockPreview"), h = Symbol("colors"), g = Symbol("customBlockStylesheets"), _ = Symbol("mergeTags"), v = Symbol("mergeTagSyntax"), y = Symbol("onRequestMergeTag"), b = Symbol("mergeTagAutocomplete"), x = Symbol("mergeTagSampleMode"), S = Symbol("useMergeTagSamples"), C = Symbol("resolvePreview"), w = Symbol("previewResolution"), T = Symbol("mergeTagPicker"), E = Symbol("logicTags"), D = Symbol("logicPairs"), O = Symbol("logicPicker"), k = Symbol("onRequestLogic"), A = Symbol("onRequestMedia"), j = Symbol("imageUrlResolver"), M = Symbol("displayConditions"), N = Symbol("allowCustomConditions"), P = Symbol("capabilities"), F = Symbol("keyboardReorder"), I = Symbol("templateLint"), L = Symbol("editorRoot"), R = Symbol("popoverRoot"), z = Symbol("savedBlocks"), B = Symbol("authManager"), V = Symbol("aiConfig"), H = Symbol("scoring"), U = Symbol("cloudTranslations");
4
4
  function W(t, n) {
@@ -9,4 +9,4 @@ function W(t, n) {
9
9
  //#endregion
10
10
  export { k as A, c as B, E as C, T as D, b as E, w as F, l as H, C as I, z as L, y as M, p as N, x as O, R as P, H as R, D as S, _ as T, S as U, t as V, W, s as _, i as a, j as b, P as c, a as d, f, L as g, n as h, B as i, A as j, v as k, U as l, M as m, N as n, u as o, g as p, o as r, d as s, V as t, h as u, r as v, O as w, F as x, m as y, I as z };
11
11
 
12
- //# sourceMappingURL=keys-oJdkdtPn.js.map
12
+ //# sourceMappingURL=keys-D7OpfE2s.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys-oJdkdtPn.js","names":[],"sources":["../../../src/keys.ts"],"sourcesContent":["import { inject, type InjectionKey, type ComputedRef, type Ref } from \"vue\";\nimport type {\n UseHistoryReturn,\n UseBlockActionsReturn,\n UseConditionPreviewReturn,\n} from \"@templatical/core\";\nimport type {\n BlockDefaults,\n CustomBlockDefinition,\n DisplayCondition,\n LogicPair,\n LogicTag,\n MergeTag,\n ResolvePreview,\n SyntaxPreset,\n} from \"@templatical/types\";\nimport type { Translations, CloudTranslations } from \"./i18n\";\nimport type {\n AuthManager,\n UseAiConfigReturn,\n UseTemplateScoringReturn,\n} from \"@templatical/core/cloud\";\nimport type { UseSavedBlocksReturn } from \"@templatical/core\";\nimport type { BaseEditorReturn } from \"./composables/useEditorCore\";\nimport type { ImageUrlResolver } from \"./composables/useImageUrlResolver\";\nimport type { UseFontsReturn } from \"./composables/useFonts\";\nimport type { UseBlockRegistryReturn } from \"./composables/useBlockRegistry\";\nimport type { UseKeyboardReorderReturn } from \"./composables/useKeyboardReorder\";\nimport type { EditorCapabilities } from \"./types/editor-capabilities\";\nimport type { OnRequestMedia } from \"./index\";\n\n// ---------------------------------------------------------------------------\n// Shared keys (provided by useEditorCore, consumed by all components)\n// ---------------------------------------------------------------------------\n\nexport const TRANSLATIONS_KEY: InjectionKey<Translations> =\n Symbol(\"translations\");\n\nexport const EDITOR_KEY: InjectionKey<BaseEditorReturn> = Symbol(\"editor\");\n\nexport const HISTORY_KEY: InjectionKey<UseHistoryReturn> = Symbol(\"history\");\n\nexport const BLOCK_ACTIONS_KEY: InjectionKey<UseBlockActionsReturn> =\n Symbol(\"blockActions\");\n\nexport const CONDITION_PREVIEW_KEY: InjectionKey<UseConditionPreviewReturn> =\n Symbol(\"conditionPreview\");\n\n/**\n * Whether the hand-toggled display-condition filter applies on this surface —\n * provided per-surface, exactly like `USE_MERGE_TAG_SAMPLES_KEY`, and for the\n * same reason: the rule folds in both `previewMode` and whether a resolver owns\n * the preview, so a component that re-derived it from `CONDITION_PREVIEW_KEY`\n * plus the editor's `previewMode` could get one half wrong on its own.\n *\n * Absent means \"applies\" — a surface with no provider filters as it always has.\n */\nexport const APPLIES_CONDITION_FILTER_KEY: InjectionKey<ComputedRef<boolean>> =\n Symbol(\"appliesConditionFilter\");\n\nexport const FONTS_MANAGER_KEY: InjectionKey<UseFontsReturn> =\n Symbol(\"fontsManager\");\n\nexport const THEME_STYLES_KEY: InjectionKey<\n ComputedRef<Record<string, string>>\n> = Symbol(\"themeStyles\");\n\nexport const UI_THEME_KEY: InjectionKey<ComputedRef<string>> =\n Symbol(\"tplUiTheme\");\n\nexport const BLOCK_DEFAULTS_KEY: InjectionKey<BlockDefaults | undefined> =\n Symbol(\"blockDefaults\");\n\nexport const BLOCK_REGISTRY_KEY: InjectionKey<UseBlockRegistryReturn> =\n Symbol(\"blockRegistry\");\n\nexport const CUSTOM_BLOCK_DEFINITIONS_KEY: InjectionKey<\n CustomBlockDefinition[]\n> = Symbol(\"customBlockDefinitions\");\n\n/**\n * Consumer-supplied block-palette allowlist + order (`config.paletteBlocks`).\n * `undefined` means the default full palette. Consumed by `Sidebar.vue`.\n */\nexport const PALETTE_BLOCKS_KEY: InjectionKey<string[] | undefined> =\n Symbol(\"paletteBlocks\");\n\n/**\n * Whether HTML blocks render a live sandboxed-iframe preview in the canvas\n * (`config.htmlBlockPreview`), normalized to a boolean. `false` (the default)\n * keeps the static placeholder card. Consumed by `HtmlBlock.vue`.\n */\nexport const HTML_BLOCK_PREVIEW_KEY: InjectionKey<boolean> =\n Symbol(\"htmlBlockPreview\");\n\n/**\n * Consumer-supplied color-picker palette (`config.colors`), normalized to\n * `{ presets, allowCustom, allowCustomIgnored }` by `resolveColorsConfig`.\n * Provided by `useEditorCore`, consumed by every `ColorPicker`. The inject\n * default (`DEFAULT_RESOLVED_COLORS` = `{ presets: [], allowCustom: true,\n * allowCustomIgnored: false }`) makes an unconfigured picker render exactly\n * as before.\n */\nexport const COLORS_KEY: InjectionKey<\n import(\"./utils/resolveColorsConfig\").ResolvedColors\n> = Symbol(\"colors\");\n\nexport const CUSTOM_BLOCK_STYLESHEETS_KEY: InjectionKey<ComputedRef<string[]>> =\n Symbol(\"customBlockStylesheets\");\n\nexport const MERGE_TAGS_KEY: InjectionKey<MergeTag[]> = Symbol(\"mergeTags\");\n\nexport const MERGE_TAG_SYNTAX_KEY: InjectionKey<SyntaxPreset> =\n Symbol(\"mergeTagSyntax\");\n\nexport const ON_REQUEST_MERGE_TAG_KEY: InjectionKey<\n (() => Promise<MergeTag | null>) | null\n> = Symbol(\"onRequestMergeTag\");\n\nexport const MERGE_TAG_AUTOCOMPLETE_KEY: InjectionKey<boolean> = Symbol(\n \"mergeTagAutocomplete\",\n);\n\n/**\n * The user's choice between the previews' two merge-tag views: `true` for\n * Sample (tags replaced by their `MergeTag.sample`, rendered as ordinary text)\n * and `false` for Label (tags shown as their label with the usual cue).\n *\n * Session state owned by `useEditorCore` and driven by a toggle that exists\n * only on preview surfaces. Defaults to Sample.\n */\nexport const MERGE_TAG_SAMPLE_MODE_KEY: InjectionKey<Ref<boolean>> =\n Symbol(\"mergeTagSampleMode\");\n\n/**\n * Whether **the current render surface** substitutes samples.\n *\n * Provided per surface rather than globally, and that is the whole point:\n * substitution must never happen while editing, so `Canvas.vue` folds in its\n * `previewMode` flag and provides `false` whenever the canvas is editable, no\n * matter what the mode ref says. Preview surfaces provide the mode directly.\n *\n * Block components inject **this** key. They must never read\n * `MERGE_TAG_SAMPLE_MODE_KEY`, which would bypass the editing guard.\n */\nexport const USE_MERGE_TAG_SAMPLES_KEY: InjectionKey<ComputedRef<boolean>> =\n Symbol(\"useMergeTagSamples\");\n\n/**\n * The `resolvePreview` seam — resolved content plus its loading and failure\n * state. Provided by `useEditorCore` so every preview surface shares one\n * lifecycle; `null` when the consumer configured no hook.\n *\n * Surfaces read `content` from here instead of `editor.content`, and gate the\n * Sample/Label toggle on `supersedesSamples`.\n */\n/**\n * The raw `config.resolvePreview` hook.\n *\n * Provided alongside PREVIEW_RESOLUTION_KEY because the test-email dialog needs\n * its **own** resolution instance — it resolves for the selected recipient,\n * which the editor's canvas has no notion of — and so cannot reuse the shared\n * one. `undefined` when the consumer configured no hook.\n */\nexport const RESOLVE_PREVIEW_KEY: InjectionKey<ResolvePreview | undefined> =\n Symbol(\"resolvePreview\");\n\nexport const PREVIEW_RESOLUTION_KEY: InjectionKey<\n import(\"./composables/usePreviewResolution\").UsePreviewResolutionReturn | null\n> = Symbol(\"previewResolution\");\n\n/**\n * Singleton state for the built-in merge tag picker modal. Provided by\n * `useEditorCore`, consumed by `useMergeTag.requestMergeTag()` (to open\n * the modal as a fall-through when only `mergeTags.tags` is configured)\n * and by `MergeTagPickerModal.vue` (to render and resolve).\n */\nexport const MERGE_TAG_PICKER_KEY: InjectionKey<\n import(\"./composables/useMergeTagPicker\").UseMergeTagPickerReturn\n> = Symbol(\"mergeTagPicker\");\n\n// ---------------------------------------------------------------------------\n// Logic tags — a standalone feature, separate from merge tags. Native\n// highlighting (LogicMergeTagNode) is always on; these drive the dedicated\n// logic picker + insertion.\n// ---------------------------------------------------------------------------\n\nexport const LOGIC_TAGS_KEY: InjectionKey<LogicTag[]> = Symbol(\"logicTags\");\n\nexport const LOGIC_PAIRS_KEY: InjectionKey<LogicPair[]> = Symbol(\"logicPairs\");\n\n/**\n * Singleton state for the built-in logic picker modal. Provided by\n * `useEditorCore`, consumed by `useLogicTag.requestLogicTag()` (to open the modal)\n * and by `LogicTagPickerModal.vue` (to render and resolve).\n */\nexport const LOGIC_TAG_PICKER_KEY: InjectionKey<\n import(\"./composables/useLogicTagPicker\").UseLogicTagPickerReturn\n> = Symbol(\"logicPicker\");\n\nexport const ON_REQUEST_LOGIC_TAG_KEY: InjectionKey<\n (() => Promise<LogicTag | LogicPair | null>) | null\n> = Symbol(\"onRequestLogic\");\n\nexport const ON_REQUEST_MEDIA_KEY: InjectionKey<OnRequestMedia | null> =\n Symbol(\"onRequestMedia\");\n\n/**\n * Per-editor display-only image URL resolver (`config.resolveImageUrl`),\n * wrapped with a per-src cache by `createImageUrlResolver`. `null` when the\n * host doesn't resolve — the canvas then displays canonical src values\n * verbatim. Consumed via `useResolvedImageSrc` in image-displaying blocks.\n */\nexport const IMAGE_URL_RESOLVER_KEY: InjectionKey<ImageUrlResolver | null> =\n Symbol(\"imageUrlResolver\");\n\nexport const DISPLAY_CONDITIONS_KEY: InjectionKey<DisplayCondition[]> =\n Symbol(\"displayConditions\");\n\nexport const ALLOW_CUSTOM_CONDITIONS_KEY: InjectionKey<boolean> = Symbol(\n \"allowCustomConditions\",\n);\n\nexport const CAPABILITIES_KEY: InjectionKey<EditorCapabilities> =\n Symbol(\"capabilities\");\n\nexport const KEYBOARD_REORDER_KEY: InjectionKey<UseKeyboardReorderReturn> =\n Symbol(\"keyboardReorder\");\n\nexport const TEMPLATE_LINT_KEY: InjectionKey<\n import(\"./composables/useTemplateLint\").UseTemplateLintReturn | null\n> = Symbol(\"templateLint\");\n\n/**\n * The editor's effective DOM root — `Document` in light-DOM mode, `ShadowRoot`\n * when `shadowDom: true`. Composables that read `document.activeElement`,\n * popup mount targets, etc. should inject this and use the root-aware API\n * (both `Document` and `ShadowRoot` expose `activeElement` etc.).\n */\nexport const EDITOR_ROOT_KEY: InjectionKey<Document | ShadowRoot> =\n Symbol(\"editorRoot\");\n\n/**\n * Mount target for popovers, toolbars, and modal dialogs — never\n * `document.body`. Provided by `useEditorCore` as a ref bound\n * to a `<div class=\"tpl-popover-root\" />` rendered at the top level of the\n * editor template. Teleports use `:to=\"popoverRoot\"` so popups land inside\n * the editor's effective root — `document` in light-DOM mode, `ShadowRoot`\n * when `shadowDom: true` — instead of escaping the shadow boundary.\n *\n * Null until the editor's template mounts; consumers must guard with\n * `v-if=\"popoverRoot\"` before passing to `<Teleport>`.\n */\nexport const POPOVER_ROOT_KEY: InjectionKey<Ref<HTMLElement | null>> =\n Symbol(\"popoverRoot\");\n\n/**\n * Reactive saved-blocks state, provided by `useSavedBlocksFeature` when a\n * `SavedBlocksProvider` is configured. Shared by OSS and Cloud — the storage\n * transport lives behind the provider, so this key is not cloud-specific.\n */\nexport const SAVED_BLOCKS_KEY: InjectionKey<UseSavedBlocksReturn> =\n Symbol(\"savedBlocks\");\n\n// ---------------------------------------------------------------------------\n// Cloud-only keys (provided by createCloudRuntime, consumed by cloud components)\n// ---------------------------------------------------------------------------\n\nexport const AUTH_MANAGER_KEY: InjectionKey<AuthManager> =\n Symbol(\"authManager\");\n\nexport const AI_CONFIG_KEY: InjectionKey<UseAiConfigReturn> =\n Symbol(\"aiConfig\");\n\n// Comments are deliberately not injected: the panel takes `useCommentsFeature`'s\n// return as a **prop** the way `TestEmailPanel` and `SavedBlocksPanels` do, and the\n// per-block indicators read the comments entry on `CAPABILITIES_KEY`. Nothing\n// injects the composable itself.\n\nexport const SCORING_KEY: InjectionKey<UseTemplateScoringReturn> =\n Symbol(\"scoring\");\n\nexport const CLOUD_TRANSLATIONS_KEY: InjectionKey<CloudTranslations> =\n Symbol(\"cloudTranslations\");\n\n// ---------------------------------------------------------------------------\n// Helper for required injections with explicit null default + throw\n// ---------------------------------------------------------------------------\n\nexport function requireInject<T>(\n key: InjectionKey<T>,\n componentName: string,\n): T {\n const value = inject(key, null) as T | null;\n if (value === null || value === undefined) {\n throw new Error(\n `${componentName} requires a provider for ${key.description ?? \"unknown key\"}. Ensure it renders inside the editor, below Editor.vue.`,\n );\n }\n return value;\n}\n"],"mappings":";;AAmCA,IAAa,IACX,OAAO,cAAc,GAEV,IAA6C,OAAO,QAAQ,GAE5D,IAA8C,OAAO,SAAS,GAE9D,IACX,OAAO,cAAc,GAEV,IACX,OAAO,kBAAkB,GAWd,IACX,OAAO,wBAAwB,GAEpB,IACX,OAAO,cAAc,GAEV,IAET,OAAO,aAAa,GAEX,IACX,OAAO,YAAY,GAER,IACX,OAAO,eAAe,GAEX,IACX,OAAO,eAAe,GAEX,IAET,OAAO,wBAAwB,GAMtB,IACX,OAAO,eAAe,GAOX,IACX,OAAO,kBAAkB,GAUd,IAET,OAAO,QAAQ,GAEN,IACX,OAAO,wBAAwB,GAEpB,IAA2C,OAAO,WAAW,GAE7D,IACX,OAAO,gBAAgB,GAEZ,IAET,OAAO,mBAAmB,GAEjB,IAAoD,OAC/D,sBACF,GAUa,IACX,OAAO,oBAAoB,GAahB,IACX,OAAO,oBAAoB,GAkBhB,IACX,OAAO,gBAAgB,GAEZ,IAET,OAAO,mBAAmB,GAQjB,IAET,OAAO,gBAAgB,GAQd,IAA2C,OAAO,WAAW,GAE7D,IAA6C,OAAO,YAAY,GAOhE,IAET,OAAO,aAAa,GAEX,IAET,OAAO,gBAAgB,GAEd,IACX,OAAO,gBAAgB,GAQZ,IACX,OAAO,kBAAkB,GAEd,IACX,OAAO,mBAAmB,GAEf,IAAqD,OAChE,uBACF,GAEa,IACX,OAAO,cAAc,GAEV,IACX,OAAO,iBAAiB,GAEb,IAET,OAAO,cAAc,GAQZ,IACX,OAAO,YAAY,GAaR,IACX,OAAO,aAAa,GAOT,IACX,OAAO,aAAa,GAMT,IACX,OAAO,aAAa,GAET,IACX,OAAO,UAAU,GAON,IACX,OAAO,SAAS,GAEL,IACX,OAAO,mBAAmB;AAM5B,SAAgB,EACd,GACA,GACG;CACH,IAAM,IAAQ,EAAO,GAAK,IAAI;CAC9B,IAAI,KAAU,MACZ,MAAU,MACR,GAAG,EAAc,2BAA2B,EAAI,eAAe,cAAc,yDAC/E;CAEF,OAAO;AACT"}
1
+ {"version":3,"file":"keys-D7OpfE2s.js","names":[],"sources":["../../../src/keys.ts"],"sourcesContent":["import { inject, type InjectionKey, type ComputedRef, type Ref } from \"vue\";\nimport type {\n UseHistoryReturn,\n UseBlockActionsReturn,\n UseConditionPreviewReturn,\n} from \"@templatical/core\";\nimport type {\n BlockDefaults,\n CustomBlockDefinition,\n DisplayCondition,\n LogicPair,\n LogicTag,\n MergeTag,\n ResolvePreview,\n SyntaxPreset,\n} from \"@templatical/types\";\nimport type { Translations, CloudTranslations } from \"./i18n\";\nimport type {\n AuthManager,\n UseAiConfigReturn,\n UseTemplateScoringReturn,\n} from \"@templatical/core/cloud\";\nimport type { UseSavedBlocksReturn } from \"@templatical/core\";\nimport type { BaseEditorReturn } from \"./composables/useEditorCore\";\nimport type { ImageUrlResolver } from \"./composables/useImageUrlResolver\";\nimport type { UseFontsReturn } from \"./composables/useFonts\";\nimport type { UseBlockRegistryReturn } from \"./composables/useBlockRegistry\";\nimport type { UseKeyboardReorderReturn } from \"./composables/useKeyboardReorder\";\nimport type { EditorCapabilities } from \"./types/editor-capabilities\";\nimport type { OnRequestMedia } from \"./index\";\n\n// ---------------------------------------------------------------------------\n// Shared keys (provided by useEditorCore, consumed by all components)\n// ---------------------------------------------------------------------------\n\nexport const TRANSLATIONS_KEY: InjectionKey<Translations> =\n Symbol(\"translations\");\n\nexport const EDITOR_KEY: InjectionKey<BaseEditorReturn> = Symbol(\"editor\");\n\nexport const HISTORY_KEY: InjectionKey<UseHistoryReturn> = Symbol(\"history\");\n\nexport const BLOCK_ACTIONS_KEY: InjectionKey<UseBlockActionsReturn> =\n Symbol(\"blockActions\");\n\nexport const CONDITION_PREVIEW_KEY: InjectionKey<UseConditionPreviewReturn> =\n Symbol(\"conditionPreview\");\n\n/**\n * Whether the hand-toggled display-condition filter applies on this surface —\n * provided per-surface, exactly like `USE_MERGE_TAG_SAMPLES_KEY`, and for the\n * same reason: the rule folds in both `previewMode` and whether a resolver owns\n * the preview, so a component that re-derived it from `CONDITION_PREVIEW_KEY`\n * plus the editor's `previewMode` could get one half wrong on its own.\n *\n * Absent means \"applies\" — a surface with no provider filters as it always has.\n */\nexport const APPLIES_CONDITION_FILTER_KEY: InjectionKey<ComputedRef<boolean>> =\n Symbol(\"appliesConditionFilter\");\n\nexport const FONTS_MANAGER_KEY: InjectionKey<UseFontsReturn> =\n Symbol(\"fontsManager\");\n\nexport const THEME_STYLES_KEY: InjectionKey<\n ComputedRef<Record<string, string>>\n> = Symbol(\"themeStyles\");\n\nexport const UI_THEME_KEY: InjectionKey<ComputedRef<string>> =\n Symbol(\"tplUiTheme\");\n\nexport const BLOCK_DEFAULTS_KEY: InjectionKey<BlockDefaults | undefined> =\n Symbol(\"blockDefaults\");\n\nexport const BLOCK_REGISTRY_KEY: InjectionKey<UseBlockRegistryReturn> =\n Symbol(\"blockRegistry\");\n\nexport const CUSTOM_BLOCK_DEFINITIONS_KEY: InjectionKey<\n CustomBlockDefinition[]\n> = Symbol(\"customBlockDefinitions\");\n\n/**\n * Consumer-supplied block-palette allowlist + order (`config.paletteBlocks`).\n * `undefined` means the default full palette. Consumed by `Sidebar.vue`.\n */\nexport const PALETTE_BLOCKS_KEY: InjectionKey<string[] | undefined> =\n Symbol(\"paletteBlocks\");\n\n/**\n * Whether HTML blocks render a live sandboxed-iframe preview in the canvas\n * (`config.htmlBlockPreview`), normalized to a boolean. `false` (the default)\n * keeps the static placeholder card. Consumed by `HtmlBlock.vue`.\n */\nexport const HTML_BLOCK_PREVIEW_KEY: InjectionKey<boolean> =\n Symbol(\"htmlBlockPreview\");\n\n/**\n * Consumer-supplied color-picker palette (`config.colors`), normalized to\n * `{ presets, allowCustom, allowCustomIgnored }` by `resolveColorsConfig`.\n * Provided by `useEditorCore`, consumed by every `ColorPicker`. The inject\n * default (`DEFAULT_RESOLVED_COLORS` = `{ presets: [], allowCustom: true,\n * allowCustomIgnored: false }`) makes an unconfigured picker render exactly\n * as before.\n */\nexport const COLORS_KEY: InjectionKey<\n import(\"./utils/resolveColorsConfig\").ResolvedColors\n> = Symbol(\"colors\");\n\nexport const CUSTOM_BLOCK_STYLESHEETS_KEY: InjectionKey<ComputedRef<string[]>> =\n Symbol(\"customBlockStylesheets\");\n\nexport const MERGE_TAGS_KEY: InjectionKey<MergeTag[]> = Symbol(\"mergeTags\");\n\nexport const MERGE_TAG_SYNTAX_KEY: InjectionKey<SyntaxPreset> =\n Symbol(\"mergeTagSyntax\");\n\nexport const ON_REQUEST_MERGE_TAG_KEY: InjectionKey<\n (() => Promise<MergeTag | null>) | null\n> = Symbol(\"onRequestMergeTag\");\n\nexport const MERGE_TAG_AUTOCOMPLETE_KEY: InjectionKey<boolean> = Symbol(\n \"mergeTagAutocomplete\",\n);\n\n/**\n * The user's choice between the previews' two merge-tag views: `true` for\n * Sample (tags replaced by their `MergeTag.sample`, rendered as ordinary text)\n * and `false` for Label (tags shown as their label with the usual cue).\n *\n * Session state owned by `useEditorCore` and driven by a toggle that exists\n * only on preview surfaces. Defaults to Sample.\n */\nexport const MERGE_TAG_SAMPLE_MODE_KEY: InjectionKey<Ref<boolean>> =\n Symbol(\"mergeTagSampleMode\");\n\n/**\n * Whether **the current render surface** substitutes samples.\n *\n * Provided per surface rather than globally, and that is the whole point:\n * substitution must never happen while editing, so `Canvas.vue` folds in its\n * `previewMode` flag and provides `false` whenever the canvas is editable, no\n * matter what the mode ref says. Preview surfaces provide the mode directly.\n *\n * Block components inject **this** key. They must never read\n * `MERGE_TAG_SAMPLE_MODE_KEY`, which would bypass the editing guard.\n */\nexport const USE_MERGE_TAG_SAMPLES_KEY: InjectionKey<ComputedRef<boolean>> =\n Symbol(\"useMergeTagSamples\");\n\n/**\n * The `resolvePreview` seam — resolved content plus its loading and failure\n * state. Provided by `useEditorCore` so every preview surface shares one\n * lifecycle; `null` when the consumer configured no hook.\n *\n * Surfaces read `content` from here instead of `editor.content`, and gate the\n * Sample/Label toggle on `supersedesSamples`.\n */\n/**\n * The raw `config.resolvePreview` hook.\n *\n * Provided alongside PREVIEW_RESOLUTION_KEY because the test-email dialog needs\n * its **own** resolution instance — it resolves for the selected recipient,\n * which the editor's canvas has no notion of — and so cannot reuse the shared\n * one. `undefined` when the consumer configured no hook.\n */\nexport const RESOLVE_PREVIEW_KEY: InjectionKey<ResolvePreview | undefined> =\n Symbol(\"resolvePreview\");\n\nexport const PREVIEW_RESOLUTION_KEY: InjectionKey<\n import(\"./composables/usePreviewResolution\").UsePreviewResolutionReturn | null\n> = Symbol(\"previewResolution\");\n\n/**\n * Singleton state for the built-in merge tag picker modal. Provided by\n * `useEditorCore`, consumed by `useMergeTag.requestMergeTag()` (to open\n * the modal as a fall-through when only `mergeTags.tags` is configured)\n * and by `MergeTagPickerModal.vue` (to render and resolve).\n */\nexport const MERGE_TAG_PICKER_KEY: InjectionKey<\n import(\"./composables/useMergeTagPicker\").UseMergeTagPickerReturn\n> = Symbol(\"mergeTagPicker\");\n\n// ---------------------------------------------------------------------------\n// Logic tags — a standalone feature, separate from merge tags. Native\n// highlighting (LogicMergeTagNode) is always on; these drive the dedicated\n// logic picker + insertion.\n// ---------------------------------------------------------------------------\n\nexport const LOGIC_TAGS_KEY: InjectionKey<LogicTag[]> = Symbol(\"logicTags\");\n\nexport const LOGIC_PAIRS_KEY: InjectionKey<LogicPair[]> = Symbol(\"logicPairs\");\n\n/**\n * Singleton state for the built-in logic picker modal. Provided by\n * `useEditorCore`, consumed by `useLogicTag.requestLogicTag()` (to open the modal)\n * and by `LogicTagPickerModal.vue` (to render and resolve).\n */\nexport const LOGIC_TAG_PICKER_KEY: InjectionKey<\n import(\"./composables/useLogicTagPicker\").UseLogicTagPickerReturn\n> = Symbol(\"logicPicker\");\n\nexport const ON_REQUEST_LOGIC_TAG_KEY: InjectionKey<\n (() => Promise<LogicTag | LogicPair | null>) | null\n> = Symbol(\"onRequestLogic\");\n\nexport const ON_REQUEST_MEDIA_KEY: InjectionKey<OnRequestMedia | null> =\n Symbol(\"onRequestMedia\");\n\n/**\n * Per-editor display-only image URL resolver (`config.resolveImageUrl`),\n * wrapped with a per-src cache by `createImageUrlResolver`. `null` when the\n * host doesn't resolve — the canvas then displays canonical src values\n * verbatim. Consumed via `useResolvedImageSrc` in image-displaying blocks.\n */\nexport const IMAGE_URL_RESOLVER_KEY: InjectionKey<ImageUrlResolver | null> =\n Symbol(\"imageUrlResolver\");\n\nexport const DISPLAY_CONDITIONS_KEY: InjectionKey<DisplayCondition[]> =\n Symbol(\"displayConditions\");\n\nexport const ALLOW_CUSTOM_CONDITIONS_KEY: InjectionKey<boolean> = Symbol(\n \"allowCustomConditions\",\n);\n\nexport const CAPABILITIES_KEY: InjectionKey<EditorCapabilities> =\n Symbol(\"capabilities\");\n\nexport const KEYBOARD_REORDER_KEY: InjectionKey<UseKeyboardReorderReturn> =\n Symbol(\"keyboardReorder\");\n\nexport const TEMPLATE_LINT_KEY: InjectionKey<\n import(\"./composables/useTemplateLint\").UseTemplateLintReturn | null\n> = Symbol(\"templateLint\");\n\n/**\n * The editor's effective DOM root — `Document` in light-DOM mode, `ShadowRoot`\n * when `shadowDom: true`. Composables that read `document.activeElement`,\n * popup mount targets, etc. should inject this and use the root-aware API\n * (both `Document` and `ShadowRoot` expose `activeElement` etc.).\n */\nexport const EDITOR_ROOT_KEY: InjectionKey<Document | ShadowRoot> =\n Symbol(\"editorRoot\");\n\n/**\n * Mount target for popovers, toolbars, and modal dialogs — never\n * `document.body`. Provided by `useEditorCore` as a ref bound\n * to a `<div class=\"tpl-popover-root\" />` rendered at the top level of the\n * editor template. Teleports use `:to=\"popoverRoot\"` so popups land inside\n * the editor's effective root — `document` in light-DOM mode, `ShadowRoot`\n * when `shadowDom: true` — instead of escaping the shadow boundary.\n *\n * Null until the editor's template mounts; consumers must guard with\n * `v-if=\"popoverRoot\"` before passing to `<Teleport>`.\n */\nexport const POPOVER_ROOT_KEY: InjectionKey<Ref<HTMLElement | null>> =\n Symbol(\"popoverRoot\");\n\n/**\n * Reactive saved-blocks state, provided by `useSavedBlocksFeature` when a\n * `SavedBlocksProvider` is configured. Shared by OSS and Cloud — the storage\n * transport lives behind the provider, so this key is not cloud-specific.\n */\nexport const SAVED_BLOCKS_KEY: InjectionKey<UseSavedBlocksReturn> =\n Symbol(\"savedBlocks\");\n\n// ---------------------------------------------------------------------------\n// Cloud-only keys (provided by createCloudRuntime, consumed by cloud components)\n// ---------------------------------------------------------------------------\n\nexport const AUTH_MANAGER_KEY: InjectionKey<AuthManager> =\n Symbol(\"authManager\");\n\nexport const AI_CONFIG_KEY: InjectionKey<UseAiConfigReturn> =\n Symbol(\"aiConfig\");\n\n// Comments are deliberately not injected: the panel takes `useCommentsFeature`'s\n// return as a **prop** the way `TestEmailPanel` and `SavedBlocksPanels` do, and the\n// per-block indicators read the comments entry on `CAPABILITIES_KEY`. Nothing\n// injects the composable itself.\n\nexport const SCORING_KEY: InjectionKey<UseTemplateScoringReturn> =\n Symbol(\"scoring\");\n\nexport const CLOUD_TRANSLATIONS_KEY: InjectionKey<CloudTranslations> =\n Symbol(\"cloudTranslations\");\n\n// ---------------------------------------------------------------------------\n// Helper for required injections with explicit null default + throw\n// ---------------------------------------------------------------------------\n\nexport function requireInject<T>(\n key: InjectionKey<T>,\n componentName: string,\n): T {\n const value = inject(key, null) as T | null;\n if (value === null || value === undefined) {\n throw new Error(\n `${componentName} requires a provider for ${key.description ?? \"unknown key\"}. Ensure it renders inside the editor, below Editor.vue.`,\n );\n }\n return value;\n}\n"],"mappings":";;AAmCA,IAAa,IACX,OAAO,cAAc,GAEV,IAA6C,OAAO,QAAQ,GAE5D,IAA8C,OAAO,SAAS,GAE9D,IACX,OAAO,cAAc,GAEV,IACX,OAAO,kBAAkB,GAWd,IACX,OAAO,wBAAwB,GAEpB,IACX,OAAO,cAAc,GAEV,IAET,OAAO,aAAa,GAEX,IACX,OAAO,YAAY,GAER,IACX,OAAO,eAAe,GAEX,IACX,OAAO,eAAe,GAEX,IAET,OAAO,wBAAwB,GAMtB,IACX,OAAO,eAAe,GAOX,IACX,OAAO,kBAAkB,GAUd,IAET,OAAO,QAAQ,GAEN,IACX,OAAO,wBAAwB,GAEpB,IAA2C,OAAO,WAAW,GAE7D,IACX,OAAO,gBAAgB,GAEZ,IAET,OAAO,mBAAmB,GAEjB,IAAoD,OAC/D,sBACF,GAUa,IACX,OAAO,oBAAoB,GAahB,IACX,OAAO,oBAAoB,GAkBhB,IACX,OAAO,gBAAgB,GAEZ,IAET,OAAO,mBAAmB,GAQjB,IAET,OAAO,gBAAgB,GAQd,IAA2C,OAAO,WAAW,GAE7D,IAA6C,OAAO,YAAY,GAOhE,IAET,OAAO,aAAa,GAEX,IAET,OAAO,gBAAgB,GAEd,IACX,OAAO,gBAAgB,GAQZ,IACX,OAAO,kBAAkB,GAEd,IACX,OAAO,mBAAmB,GAEf,IAAqD,OAChE,uBACF,GAEa,IACX,OAAO,cAAc,GAEV,IACX,OAAO,iBAAiB,GAEb,IAET,OAAO,cAAc,GAQZ,IACX,OAAO,YAAY,GAaR,IACX,OAAO,aAAa,GAOT,IACX,OAAO,aAAa,GAMT,IACX,OAAO,aAAa,GAET,IACX,OAAO,UAAU,GAON,IACX,OAAO,SAAS,GAEL,IACX,OAAO,mBAAmB;AAM5B,SAAgB,EACd,GACA,GACG;CACH,IAAM,IAAQ,EAAO,GAAK,IAAI;CAC9B,IAAI,KAAU,MACZ,MAAU,MACR,GAAG,EAAc,2BAA2B,EAAI,eAAe,cAAc,yDAC/E;CAEF,OAAO;AACT"}
@@ -164,6 +164,9 @@ var e = {
164
164
  width: "Breedte",
165
165
  fullWidth: "Volledige breedte",
166
166
  widthCustom: "Aangepast",
167
+ height: "Hoogte",
168
+ heightAuto: "Automatisch",
169
+ heightCustom: "Aangepast",
167
170
  linkUrl: "Link-URL",
168
171
  openInNewTab: "Openen in nieuw tabblad",
169
172
  placeholderUrl: "Tijdelijke afbeelding",
@@ -188,6 +191,9 @@ var e = {
188
191
  altTextPlaceholder: "Beschrijving van de video",
189
192
  width: "Breedte",
190
193
  fullWidth: "Volledige breedte",
194
+ height: "Hoogte",
195
+ heightAuto: "Automatisch",
196
+ heightCustom: "Aangepast",
191
197
  placeholderUrl: "Tijdelijke miniatuur",
192
198
  placeholderUrlPlaceholder: "https://... (alleen tijdens ontwerp)",
193
199
  placeholderUrlTooltip: "Omdat de video-URL een samenvoegveld gebruikt, kunt u hier een echte miniatuur opgeven om de lay-out tijdens het ontwerpen te bekijken. Deze wordt niet opgenomen in het eindresultaat.",
@@ -601,4 +607,4 @@ var e = {
601
607
  //#endregion
602
608
  export { e as default };
603
609
 
604
- //# sourceMappingURL=nl-Btw4ojNo.js.map
610
+ //# sourceMappingURL=nl-BvsLoyKp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nl-BvsLoyKp.js","names":[],"sources":["../../../src/i18n/locales/nl.ts"],"sourcesContent":["import type en from \"./en\";\n\nconst nl: typeof en = {\n footer: {\n poweredBy: \"Mogelijk gemaakt door\",\n openSource: \"Open Source\",\n },\n\n header: {\n save: \"Opslaan\",\n saving: \"Opslaan...\",\n saved: \"Opgeslagen\",\n unsaved: \"Niet opgeslagen\",\n saveFailed: \"Opslaan mislukt\",\n saveNoTemplate: \"Laad of maak eerst een template\",\n templateName: \"Templatenaam\",\n rename: \"Template hernoemen\",\n untitled: \"Naamloos\",\n updatedAt: \"Bijgewerkt {time}\",\n createdAt: \"Gemaakt {time}\",\n updatedJustNow: \"Zojuist bijgewerkt\",\n createdJustNow: \"Zojuist gemaakt\",\n },\n\n // Relative timestamps, shared by every surface that shows one: the header's\n // updated line, saved blocks, comments and version history.\n time: {\n justNow: \"Zojuist\",\n minutesAgo: \"{minutes} min geleden\",\n hoursAgo: \"{hours} u geleden\",\n daysAgo: \"{days} d geleden\",\n },\n\n history: {\n collabWarning:\n \"Ongedaan maken kan recente wijzigingen van medewerkers beïnvloeden\",\n undo: \"Ongedaan maken\",\n redo: \"Opnieuw\",\n },\n viewport: {\n label: \"Weergave\",\n desktop: \"Desktop\",\n mobile: \"Mobiel\",\n },\n darkMode: {\n enable: \"Voorbeeld in donkere modus\",\n disable: \"Voorbeeld in lichte modus\",\n },\n previewMode: {\n enable: \"Voorbeeldmodus\",\n disable: \"Voorbeeld sluiten\",\n },\n blocks: {\n section: \"Sectie\",\n image: \"Afbeelding\",\n title: \"Titel\",\n paragraph: \"Alinea\",\n button: \"Knop\",\n divider: \"Scheidingslijn\",\n video: \"Video\",\n social: \"Sociale media\",\n spacer: \"Tussenruimte\",\n html: \"HTML\",\n menu: \"Menu\",\n table: \"Tabel\",\n countdown: \"Aftelklok\",\n },\n sidebar: {\n content: \"Inhoud\",\n settings: \"Instellingen\",\n noSelection: \"Geen element geselecteerd\",\n noSelectionHint: \"Selecteer een blok op het canvas om het te bewerken\",\n },\n toolbar: {\n duplicate: \"Dupliceren\",\n delete: \"Verwijderen\",\n },\n titleEditor: {\n toolbar: \"Titelopmaak\",\n bold: \"Vet (Ctrl+B)\",\n italic: \"Cursief (Ctrl+I)\",\n addLink: \"Link toevoegen\",\n },\n paragraphEditor: {\n toolbar: \"Tekstopmaak\",\n bold: \"Vet (Ctrl+B)\",\n italic: \"Cursief (Ctrl+I)\",\n underline: \"Onderstreept (Ctrl+U)\",\n strikethrough: \"Doorgehaald\",\n subscript: \"Subscript\",\n superscript: \"Superscript\",\n addLink: \"Link toevoegen\",\n bulletList: \"Opsommingslijst\",\n numberedList: \"Genummerde lijst\",\n alignLeft: \"Links uitlijnen\",\n alignCenter: \"Centreren\",\n alignRight: \"Rechts uitlijnen\",\n alignJustify: \"Uitvullen\",\n clearFormatting: \"Opmaak wissen\",\n insertEmoji: \"Emoji invoegen\",\n fontFamily: \"Lettertype\",\n defaultFont: \"Standaard\",\n fontSize: \"Tekengrootte\",\n defaultSize: \"Standaard\",\n textColor: \"Tekstkleur\",\n highlightColor: \"Markeerkleur\",\n lineHeight: \"Regelafstand\",\n letterSpacing: \"Letterafstand\",\n emojiItemLabel: \"Emoji {emoji} invoegen\",\n },\n blockActions: {\n drag: \"Sleep om te herschikken, of druk op de spatiebalk om met het toetsenbord te verplaatsen\",\n dragLifted:\n \"{block} wordt verplaatst. Gebruik de pijltjestoetsen omhoog en omlaag om te herpositioneren, spatiebalk of Enter om neer te zetten, Escape om te annuleren.\",\n duplicate: \"Blok dupliceren\",\n delete: \"Blok verwijderen\",\n hiddenOnViewport: \"Verborgen op {viewport}\",\n saveAsBlock: \"Opslaan als blok\",\n conditionToggle: \"Weergavevoorwaarde in- of uitschakelen\",\n comments: \"Opmerkingen ({count})\",\n lifted: \"{block} opgetild. Positie {position} van {total}.\",\n moved: \"{block} verplaatst naar positie {position} van {total}.\",\n dropped: \"{block} neergezet op positie {position} van {total}.\",\n cancelled:\n \"Verplaatsing geannuleerd. {block} is terug op positie {position}.\",\n },\n section: {\n dropHere: \"Sleep blokken hierheen\",\n columns: \"Kolommen\",\n column1: \"1 kolom\",\n column2: \"2 kolommen\",\n column3: \"3 kolommen\",\n ratio12: \"Verhouding 1:2\",\n ratio21: \"Verhouding 2:1\",\n borderRadius: \"Hoekafronding\",\n wrapperEnable: \"Omhulsel toevoegen\",\n stackOnMobile: \"Stapelen op mobiel\",\n },\n linkDialog: {\n editLink: \"Link bewerken\",\n insertLink: \"Link invoegen\",\n updateLink: \"Link bijwerken\",\n removeLink: \"Link verwijderen\",\n cancel: \"Annuleren\",\n urlPlaceholder: \"https://example.com\",\n urlLabel: \"URL\",\n colorLabel: \"Linkkleur\",\n },\n title: {\n level: \"Titelniveau\",\n heading1: \"Titel 1 (36px)\",\n heading2: \"Titel 2 (28px)\",\n heading3: \"Titel 3 (22px)\",\n heading4: \"Titel 4 (18px)\",\n fontFamily: \"Lettertype\",\n inheritFont: \"Lettertype van het sjabloon gebruiken\",\n color: \"Kleur\",\n align: \"Uitlijnen\",\n alignLeft: \"Links\",\n alignCenter: \"Midden\",\n alignRight: \"Rechts\",\n },\n emoji: {\n smileys: \"Smileys\",\n gestures: \"Gebaren\",\n objects: \"Objecten\",\n },\n image: {\n imageUrl: \"URL van de afbeelding\",\n imageUrlPlaceholder: \"https://...\",\n altText: \"Alt-tekst\",\n altTextPlaceholder: \"Beschrijving van de afbeelding\",\n width: \"Breedte\",\n fullWidth: \"Volledige breedte\",\n widthCustom: \"Aangepast\",\n height: \"Hoogte\",\n heightAuto: \"Automatisch\",\n heightCustom: \"Aangepast\",\n linkUrl: \"Link-URL\",\n openInNewTab: \"Openen in nieuw tabblad\",\n placeholderUrl: \"Tijdelijke afbeelding\",\n optional: \"(optioneel)\",\n placeholderUrlPlaceholder: \"https://... (alleen tijdens ontwerp)\",\n placeholderUrlTooltip:\n \"Omdat de afbeeldings-URL een samenvoegveld gebruikt, kunt u hier een echte afbeelding opgeven om de lay-out tijdens het ontwerpen te bekijken. Deze wordt niet opgenomen in het eindresultaat.\",\n clickToAdd: \"Klik om een afbeeldings-URL toe te voegen\",\n browseMedia: \"Mediabibliotheek openen\",\n dropToUpload: \"Sleep een afbeelding hierheen om te uploaden\",\n uploading: \"Uploaden…\",\n decorative: \"Decoratieve afbeelding\",\n decorativeHint:\n \"Verborgen voor schermlezers. Alleen gebruiken voor tussenruimtes en visuele versieringen.\",\n },\n video: {\n videoUrl: \"URL van de video\",\n videoUrlPlaceholder: \"https://youtube.com/...\",\n openInNewTab: \"Openen in nieuw tabblad\",\n customThumbnail: \"Aangepaste miniatuur\",\n optional: \"(optioneel)\",\n thumbnailPlaceholder: \"Automatisch gegenereerd uit de video-URL\",\n altText: \"Alt-tekst\",\n altTextPlaceholder: \"Beschrijving van de video\",\n width: \"Breedte\",\n fullWidth: \"Volledige breedte\",\n height: \"Hoogte\",\n heightAuto: \"Automatisch\",\n heightCustom: \"Aangepast\",\n placeholderUrl: \"Tijdelijke miniatuur\",\n placeholderUrlPlaceholder: \"https://... (alleen tijdens ontwerp)\",\n placeholderUrlTooltip:\n \"Omdat de video-URL een samenvoegveld gebruikt, kunt u hier een echte miniatuur opgeven om de lay-out tijdens het ontwerpen te bekijken. Deze wordt niet opgenomen in het eindresultaat.\",\n addVideo: \"Voeg een video-URL toe\",\n },\n button: {\n fontFamily: \"Lettertype\",\n inheritFont: \"Lettertype van het sjabloon gebruiken\",\n text: \"Tekst\",\n url: \"URL\",\n urlPlaceholder: \"https://...\",\n openInNewTab: \"Openen in nieuw tabblad\",\n background: \"Achtergrond\",\n textColor: \"Tekstkleur\",\n borderRadius: \"Hoekafronding\",\n fontSize: \"Tekengrootte\",\n width: \"Breedte\",\n widthAuto: \"Aanpassen aan inhoud\",\n fullWidth: \"Volledige breedte\",\n widthCustom: \"Aangepast\",\n },\n divider: {\n style: \"Stijl\",\n solid: \"Doorlopend\",\n dashed: \"Streepjes\",\n dotted: \"Stippellijn\",\n color: \"Kleur\",\n thickness: \"Dikte\",\n },\n social: {\n icons: \"Iconen\",\n addIcon: \"Icoon toevoegen\",\n addIcons: \"Voeg sociale-media-iconen toe\",\n removeIcon: \"Verwijderen\",\n urlPlaceholder: \"https://...\",\n style: \"Stijl\",\n styleSolid: \"Gevuld\",\n styleOutlined: \"Omlijnd\",\n styleRounded: \"Afgerond\",\n styleSquare: \"Vierkant\",\n styleCircle: \"Cirkel\",\n size: \"Grootte\",\n sizeSmall: \"S\",\n sizeMedium: \"M\",\n sizeLarge: \"L\",\n spacing: \"Afstand\",\n align: \"Uitlijning\",\n platforms: {\n facebook: \"Facebook\",\n twitter: \"X (Twitter)\",\n instagram: \"Instagram\",\n linkedin: \"LinkedIn\",\n youtube: \"YouTube\",\n tiktok: \"TikTok\",\n pinterest: \"Pinterest\",\n email: \"E-mail\",\n website: \"Website\",\n whatsapp: \"WhatsApp\",\n telegram: \"Telegram\",\n discord: \"Discord\",\n snapchat: \"Snapchat\",\n reddit: \"Reddit\",\n github: \"GitHub\",\n dribbble: \"Dribbble\",\n behance: \"Behance\",\n },\n },\n menu: {\n items: \"Menu-items\",\n addItem: \"Item toevoegen\",\n removeItem: \"Verwijderen\",\n text: \"Tekst\",\n urlPlaceholder: \"https://example.com\",\n openInNewTab: \"Openen in nieuw tabblad\",\n bold: \"Vet\",\n underline: \"Onderstreept\",\n color: \"Kleur\",\n linkColor: \"Linkkleur\",\n fontSize: \"Tekengrootte\",\n fontFamily: \"Lettertype\",\n separator: \"Scheidingsteken\",\n separatorColor: \"Kleur van het scheidingsteken\",\n spacing: \"Afstand\",\n textAlign: \"Uitlijning\",\n addLinks: \"Voeg menulinks toe\",\n },\n table: {\n dimensions: \"Afmetingen\",\n rows: \"Rijen\",\n columns: \"Kolommen\",\n hasHeaderRow: \"Koprij\",\n headerBackgroundColor: \"Achtergrond van de koprij\",\n noHeaderBg: \"Geen achtergrond\",\n borderColor: \"Randkleur\",\n borderWidth: \"Randdikte\",\n cellPadding: \"Binnenmarge van cellen\",\n fontFamily: \"Lettertype\",\n fontSize: \"Tekengrootte\",\n color: \"Tekstkleur\",\n textAlign: \"Uitlijning\",\n cellPlaceholder: \"Voer tekst in...\",\n empty: \"Voeg een tabel toe\",\n },\n spacer: {\n height: \"Hoogte\",\n },\n countdown: {\n targetDate: \"Doeldatum\",\n timezone: \"Tijdzone\",\n display: \"Weergave\",\n days: \"Dagen\",\n hours: \"Uren\",\n minutes: \"Minuten\",\n seconds: \"Seconden\",\n separator: \"Scheidingsteken\",\n fontFamily: \"Lettertype\",\n inheritFont: \"Standaard\",\n digitFontSize: \"Cijfergrootte\",\n digitColor: \"Cijferkleur\",\n labelColor: \"Labelkleur\",\n labelFontSize: \"Labelgrootte\",\n background: \"Achtergrond\",\n labels: \"Labels\",\n expiry: \"Bericht na afloop\",\n expiredMessagePlaceholder: \"Deze aanbieding is verlopen\",\n expiredImageUrl: \"URL van de afbeelding na afloop\",\n hideOnExpiry: \"Verbergen na afloop\",\n setDate: \"Stel een doeldatum in via het instellingenpaneel\",\n hidden: \"Verborgen (verlopen)\",\n },\n customBlocks: {\n definitionNotFound: \"Onbekend bloktype — dit blok is niet geregistreerd\",\n renderError:\n \"Dit blok kon niet worden weergegeven. Controleer het bloksjabloon op fouten.\",\n fields: {\n required: \"Verplicht\",\n addItem: \"Item toevoegen\",\n removeItem: \"Verwijderen\",\n maxItemsReached: \"Maximaal aantal items bereikt\",\n minItemsRequired: \"Minimaal {count} items vereist\",\n },\n toolbar: {\n noDefinition:\n \"Registreer dit bloktype in uw SDK-configuratie om de eigenschappen te bewerken\",\n },\n dataSource: {\n fetchButton: \"Inhoud laden\",\n changeButton: \"Wijzigen\",\n fetching: \"Laden...\",\n readOnlyTooltip: \"Deze waarde wordt geladen uit uw gegevensbron\",\n fetchError: \"Inhoud laden mislukt\",\n },\n },\n html: {\n content: \"HTML-inhoud\",\n preview: \"Aangepast HTML-blok\",\n empty: \"Voeg HTML-inhoud toe in het paneel\",\n sanitizationHint:\n \"HTML wordt ongewijzigd geëxporteerd en niet opgeschoond — zorg dat de inhoud veilig is.\",\n },\n blockSettings: {\n spacing: \"Afstand\",\n padding: \"Binnenmarge\",\n background: \"Achtergrond\",\n color: \"Kleur\",\n display: \"Weergave\",\n showOnDesktop: \"Tonen op desktop\",\n showOnMobile: \"Tonen op mobiel\",\n hiddenOnDevice: \"Verborgen op {device}\",\n displayCondition: \"Weergavevoorwaarde\",\n selectCondition: \"Voorwaarde selecteren\",\n removeCondition: \"Voorwaarde verwijderen\",\n noCondition: \"Altijd zichtbaar\",\n conditionApplied: \"Voorwaarde toegepast\",\n customCondition: \"Aangepaste voorwaarde\",\n customConditionLabel: \"Naam van de voorwaarde\",\n customConditionBefore: \"Voor (openingslogica)\",\n customConditionAfter: \"Na (sluitingslogica)\",\n applyCondition: \"Toepassen\",\n cancelCondition: \"Annuleren\",\n customBadge: \"Aangepast\",\n restoreHiddenBlocks: \"Alle verborgen blokken tonen\",\n },\n templateSettings: {\n layout: \"Lay-out\",\n widthPreset: \"Vooraf ingestelde breedte\",\n customWidth: \"Aangepaste breedte\",\n appearance: \"Uiterlijk\",\n backgroundColor: \"Achtergrondkleur\",\n textColor: \"Tekstkleur\",\n linkColor: \"Linkkleur\",\n linkUnderline: \"Links onderstrepen\",\n fontFamily: \"Lettertype\",\n preheaderText: \"Voorbeeldtekst (preheader)\",\n preheaderTextPlaceholder:\n \"Voorbeeldtekst die na de onderwerpregel in de inbox wordt getoond...\",\n preheaderTextHint:\n \"Deze tekst verschijnt na de onderwerpregel in de voorbeelden van e-mailprogramma's. Samenvoegvelden worden ondersteund.\",\n language: \"Taal\",\n contentLocale: \"Taal van de inhoud\",\n contentLocaleHint:\n \"BCP 47-code (bv. nl, de, pt-BR). Bepaalt het lang-attribuut van de gerenderde e-mail zodat schermlezers de inhoud correct uitspreken.\",\n tips: \"Tips\",\n tip1: \"600px is de standaardbreedte voor e-mailsjablonen\",\n tip2: \"Gebruik webveilige lettertypen voor de beste compatibiliteit\",\n tip3: \"Lichte achtergronden lezen het prettigst\",\n },\n spacingControl: {\n lockAll: \"Alle zijden vergrendelen\",\n unlock: \"Zijden ontgrendelen\",\n top: \"Boven\",\n right: \"Rechts\",\n bottom: \"Onder\",\n left: \"Links\",\n decreaseTop: \"Boven verkleinen\",\n increaseTop: \"Boven vergroten\",\n decreaseLeft: \"Links verkleinen\",\n increaseLeft: \"Links vergroten\",\n decreaseRight: \"Rechts verkleinen\",\n increaseRight: \"Rechts vergroten\",\n decreaseBottom: \"Onder verkleinen\",\n increaseBottom: \"Onder vergroten\",\n },\n colorPicker: {\n pickColor: \"Kies een kleur\",\n hexValue: \"Hexadecimale kleurwaarde\",\n notSet: \"Niet ingesteld\",\n clear: \"Kleur wissen\",\n presetColors: \"Vooraf ingestelde kleuren\",\n },\n mergeTag: {\n clickToEdit: \"Klik om te bewerken\",\n remove: \"Samenvoegveld verwijderen\",\n insert: \"Samenvoegveld invoegen\",\n insertShort: \"Samenvoegveld\",\n editValue: \"Waarde van het samenvoegveld bewerken\",\n deleteMergeTag: \"Samenvoegveld verwijderen\",\n suggestionEmpty: \"Geen overeenkomende samenvoegvelden\",\n picker: {\n title: \"Samenvoegveld invoegen\",\n searchPlaceholder: \"Samenvoegvelden zoeken\",\n searchAriaLabel: \"Samenvoegvelden zoeken\",\n noResults: \"Geen overeenkomende samenvoegvelden\",\n empty: \"Geen samenvoegvelden geconfigureerd\",\n otherGroup: \"Overige\",\n close: \"Sluiten\",\n groupCount: \"{count}\",\n sample: \"Voorbeeld: {sample}\",\n },\n },\n logicTag: {\n insert: \"Logica invoegen\",\n insertShort: \"Logica\",\n picker: {\n title: \"Logica invoegen\",\n searchPlaceholder: \"Logicatags zoeken\",\n searchAriaLabel: \"Logicatags zoeken\",\n noResults: \"Geen overeenkomende logicatags\",\n empty: \"Geen logicatags geconfigureerd\",\n otherGroup: \"Overige\",\n close: \"Sluiten\",\n },\n },\n canvas: {\n noBlocks: \"Nog geen blokken\",\n dragHint: \"Begin vanaf nul door blokken vanuit de zijbalk te slepen\",\n dropHere: \"Hier neerzetten\",\n aiHintChat: \"of laat\",\n aiHintChatSuffix:\n \"in enkele seconden een volledig sjabloon voor u genereren\",\n aiHintDesign:\n \"Heeft u al een ontwerp? Upload een schermafbeelding, afbeelding of PDF en\",\n aiHintDesignSuffix: \"maakt het direct na\",\n },\n savedBlocks: {\n title: \"Opgeslagen blokken\",\n saveAsBlock: \"Opslaan als blok\",\n name: \"Naam\",\n namePlaceholder: \"bv. Koptekst, Voettekst, CTA...\",\n save: \"Blok opslaan\",\n saving: \"Opslaan...\",\n cancel: \"Annuleren\",\n empty: \"Nog geen opgeslagen blokken\",\n emptyHint:\n \"Sla blokken uit uw sjablonen op om ze later opnieuw te gebruiken.\",\n noResults: \"Geen opgeslagen blokken gevonden voor uw zoekopdracht\",\n search: \"Opgeslagen blokken zoeken...\",\n loading: \"Opgeslagen blokken laden…\",\n category: \"Categorie\",\n categoryPlaceholder: \"bv. Kopteksten, Promoties... (optioneel)\",\n allCategories: \"Alle categorieën\",\n filterByCategory: \"Filteren op categorie\",\n insert: \"Invoegen\",\n rename: \"Hernoemen\",\n delete: \"Verwijderen\",\n deleteConfirm: \"Dit opgeslagen blok verwijderen?\",\n blockCount: \"{count} blok(ken)\",\n browse: \"Opgeslagen blokken bekijken\",\n selectToPreview: \"Selecteer een opgeslagen blok voor een voorbeeld\",\n insertAtBeginning: \"Aan het begin\",\n insertAfterBlock: \"Na {block}\",\n insertAtEnd: \"Aan het einde\",\n insertPosition: \"Invoegpositie\",\n close: \"Sluiten\",\n pickToolbar: \"Selectie van opgeslagen blokken\",\n pickCount: \"{count} blok(ken) geselecteerd\",\n pickHint: \"Klik op blokken om ze toe te voegen of te verwijderen\",\n savingCount: \"{count} blok(ken) opslaan:\",\n reorderHint:\n \"Sleep om te herschikken — blokken worden in deze volgorde opgeslagen\",\n reorderHandle: \"{block} herschikken, positie {position} van {total}\",\n reorderAnnouncement:\n \"{block} verplaatst naar positie {position} van {total}\",\n expand: \"Uitklappen\",\n collapse: \"Inklappen\",\n expandPreview: \"Voorbeeld van {block} uitklappen\",\n collapsePreview: \"Voorbeeld van {block} inklappen\",\n },\n comments: {\n button: \"Opmerkingen\",\n title: \"Opmerkingen\",\n placeholder: \"Schrijf een opmerking...\",\n replyPlaceholder: \"Schrijf een antwoord...\",\n reply: \"Antwoorden\",\n resolve: \"Oplossen\",\n unresolve: \"Heropenen\",\n delete: \"Verwijderen\",\n edit: \"Bewerken\",\n cancel: \"Annuleren\",\n save: \"Opslaan\",\n noComments: \"Nog geen opmerkingen\",\n noCommentsHint:\n \"Start een gesprek door een opmerking toe te voegen aan de template of aan een specifiek blok.\",\n deleteConfirm: \"Deze opmerking verwijderen?\",\n filterAll: \"Alle\",\n filterUnresolved: \"Niet opgelost\",\n filterBlock: \"Dit blok\",\n jumpToBlock: \"Blok\",\n ownedByYou: \"Jij\",\n edited: \"bewerkt\",\n resolvedBy: \"Opgelost door {name}\",\n replyOne: \"{count} antwoord\",\n replyMany: \"{count} antwoorden\",\n missingBlock: \"Blok ontbreekt\",\n saveTemplateFirst:\n \"Sla de template op voordat je een opmerking bij dit blok plaatst.\",\n },\n versionHistory: {\n tooltip: \"Versiegeschiedenis\",\n dropdownTitle: \"Versiegeschiedenis\",\n empty: \"Nog geen versies\",\n auto: \"auto\",\n olderVersion: \"Oudere versie\",\n newerVersion: \"Nieuwere versie\",\n },\n versionPreview: {\n message: \"U bekijkt een eerdere versie van dit sjabloon.\",\n cancel: \"Annuleren\",\n restore: \"Deze versie herstellen\",\n restoreConfirm: {\n title: \"Deze versie herstellen?\",\n unsavedWithSave:\n \"U hebt niet-opgeslagen wijzigingen. Sla ze eerst op en ze blijven in uw geschiedenis — herstelt u zonder op te slaan, dan gaan ze verloren.\",\n unsavedNoSave:\n \"U hebt niet-opgeslagen wijzigingen en nergens om ze op te slaan. Bij het herstellen van deze versie gaan ze verloren.\",\n saveAndRestore: \"Opslaan en herstellen\",\n restoreAnyway: \"Toch herstellen\",\n cancel: \"Annuleren\",\n },\n },\n previewResolution: {\n resolving: \"Voorbeeld wordt opgelost…\",\n failed:\n \"Het voorbeeld kon niet worden opgelost — het niet-opgeloste sjabloon wordt weergegeven.\",\n hint: \"Het voorbeeld gebruikt opgeloste gegevens uit uw backend.\",\n },\n mergeTagPreview: {\n label: \"Weergave van samenvoegvelden\",\n sample: \"Voorbeeldwaarde\",\n labelView: \"Naam\",\n },\n testEmail: {\n title: \"Test-e-mail verzenden\",\n recipientLabel: \"Ontvanger\",\n recipientPlaceholder: \"u@voorbeeld.nl\",\n invalidAddress: \"Voer een geldig e-mailadres in.\",\n preview: \"Voorbeeld\",\n previewHint:\n \"Samenvoegvelden worden onopgelost weergegeven — uw backend vult ze in.\",\n previewHintSample:\n \"Samenvoegvelden tonen voorbeeldwaarden — uw backend vult de echte gegevens in.\",\n recipientNotAllowed:\n \"Dit adres staat niet in de lijst met toegestane ontvangers.\",\n send: \"Verzenden\",\n sending: \"Wordt verzonden...\",\n cancel: \"Annuleren\",\n success: \"Test-e-mail succesvol verzonden\",\n button: \"Test\",\n },\n sidebarNav: {\n browseSavedBlocks: \"Opgeslagen blokken bekijken\",\n palette: \"Blokkenpalet\",\n insertBlock: \"Blok {block} invoegen\",\n },\n landmarks: {\n canvas: \"E-mailcanvas\",\n blockToolbar: \"Blokeigenschappen\",\n rightSidebar: \"Blokeigenschappen en sjablooninstellingen\",\n reorderAnnouncements: \"Aankondigingen van blokherschikking\",\n },\n errors: {\n editorLoading: \"Editor laden...\",\n editorLoadFailed: \"Editor laden mislukt.\",\n retry: \"Opnieuw proberen\",\n },\n issues: {\n panelTitle: \"Problemen\",\n panelTabLabel: \"Problemen\",\n groupErrors: \"Fouten\",\n groupWarnings: \"Waarschuwingen\",\n groupInfo: \"Info\",\n jump: \"Naar het blok springen\",\n fix: \"Herstellen\",\n emptyState: \"Geen problemen — ziet er goed uit.\",\n badgeError: \"Bevat fouten\",\n badgeWarning: \"Bevat waarschuwingen\",\n issueCountTooltip: \"{count} probleem(en)\",\n },\n smallScreen: {\n title: \"Groter scherm vereist\",\n message:\n \"De editor heeft meer ruimte nodig dan dit scherm biedt. Open hem op een tablet of desktop om te beginnen met bewerken.\",\n },\n};\n\nexport default nl;\n"],"mappings":"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"}
@@ -164,6 +164,9 @@ var e = {
164
164
  width: "Largura",
165
165
  fullWidth: "Largura Total",
166
166
  widthCustom: "Personalizada",
167
+ height: "Altura",
168
+ heightAuto: "Automática",
169
+ heightCustom: "Personalizada",
167
170
  linkUrl: "URL do Link",
168
171
  openInNewTab: "Abrir em nova aba",
169
172
  placeholderUrl: "Imagem de Espaço Reservado",
@@ -188,6 +191,9 @@ var e = {
188
191
  altTextPlaceholder: "Descrição do vídeo",
189
192
  width: "Largura",
190
193
  fullWidth: "Largura Total",
194
+ height: "Altura",
195
+ heightAuto: "Automática",
196
+ heightCustom: "Personalizada",
191
197
  placeholderUrl: "Miniatura de Espaço Reservado",
192
198
  placeholderUrlPlaceholder: "https://... (somente em design)",
193
199
  placeholderUrlTooltip: "Como a URL do vídeo usa uma merge tag, você pode fornecer uma miniatura real aqui para visualizar o layout durante o design. Isso não é incluído na saída final.",
@@ -601,4 +607,4 @@ var e = {
601
607
  //#endregion
602
608
  export { e as default };
603
609
 
604
- //# sourceMappingURL=pt-BR-GjVsCqbN.js.map
610
+ //# sourceMappingURL=pt-BR-CAGS5YXp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-BR-CAGS5YXp.js","names":[],"sources":["../../../src/i18n/locales/pt-BR.ts"],"sourcesContent":["import type en from \"./en\";\n\nconst ptBR: typeof en = {\n // Footer (OSS only)\n footer: {\n poweredBy: \"Desenvolvido por\",\n openSource: \"Código Aberto\",\n },\n\n // Header — nome do template + estado de salvamento. Exibido apenas quando um\n // provedor de templates está configurado.\n header: {\n save: \"Salvar\",\n saving: \"Salvando...\",\n saved: \"Salvo\",\n unsaved: \"Não salvo\",\n saveFailed: \"Falha ao salvar\",\n saveNoTemplate: \"Carregue ou crie um template primeiro\",\n templateName: \"Nome do template\",\n rename: \"Renomear template\",\n untitled: \"Sem título\",\n updatedAt: \"Atualizado {time}\",\n createdAt: \"Criado {time}\",\n updatedJustNow: \"Atualizado agora mesmo\",\n createdJustNow: \"Criado agora mesmo\",\n },\n\n // Relative timestamps, shared by every surface that shows one: the header's\n // updated line, saved blocks, comments and version history.\n time: {\n justNow: \"Agora mesmo\",\n minutesAgo: \"há {minutes}min\",\n hoursAgo: \"há {hours}h\",\n daysAgo: \"há {days}d\",\n },\n\n // History (undo/redo)\n history: {\n collabWarning: \"Desfazer pode afetar alterações recentes de colaboradores\",\n undo: \"Desfazer\",\n redo: \"Refazer\",\n },\n\n // Viewport toggle\n viewport: {\n label: \"Viewport\",\n desktop: \"Desktop\",\n mobile: \"Mobile\",\n },\n\n // Dark mode preview\n darkMode: {\n enable: \"Visualizar Modo Escuro\",\n disable: \"Visualizar Modo Claro\",\n },\n\n // Preview mode\n previewMode: {\n enable: \"Modo de Visualização\",\n disable: \"Sair da Visualização\",\n },\n\n // Sidebar - Block types\n blocks: {\n section: \"Seção\",\n image: \"Imagem\",\n title: \"Título\",\n paragraph: \"Parágrafo\",\n button: \"Botão\",\n divider: \"Divisor\",\n video: \"Vídeo\",\n social: \"Redes Sociais\",\n spacer: \"Espaçador\",\n html: \"HTML\",\n menu: \"Menu\",\n table: \"Tabela\",\n countdown: \"Contagem Regressiva\",\n },\n\n // Right sidebar\n sidebar: {\n content: \"Conteúdo\",\n settings: \"Configurações\",\n noSelection: \"Nenhum elemento selecionado\",\n noSelectionHint: \"Selecione um bloco na tela para editá-lo\",\n },\n\n // Toolbar - Common\n toolbar: {\n duplicate: \"Duplicar\",\n delete: \"Excluir\",\n },\n\n // Title editor toolbar\n titleEditor: {\n toolbar: \"Formatação de título\",\n bold: \"Negrito (Ctrl+B)\",\n italic: \"Itálico (Ctrl+I)\",\n addLink: \"Adicionar Link\",\n },\n\n // Paragraph editor toolbar\n paragraphEditor: {\n toolbar: \"Formatação de texto\",\n bold: \"Negrito (Ctrl+B)\",\n italic: \"Itálico (Ctrl+I)\",\n underline: \"Sublinhado (Ctrl+U)\",\n strikethrough: \"Tachado\",\n subscript: \"Subscrito\",\n superscript: \"Sobrescrito\",\n addLink: \"Adicionar Link\",\n bulletList: \"Lista com Marcadores\",\n numberedList: \"Lista Numerada\",\n alignLeft: \"Alinhar à Esquerda\",\n alignCenter: \"Centralizar\",\n alignRight: \"Alinhar à Direita\",\n alignJustify: \"Justificar\",\n clearFormatting: \"Limpar Formatação\",\n insertEmoji: \"Inserir Emoji\",\n fontFamily: \"Família da Fonte\",\n defaultFont: \"Padrão\",\n fontSize: \"Tamanho da Fonte\",\n defaultSize: \"Padrão\",\n textColor: \"Cor do Texto\",\n highlightColor: \"Cor de Destaque\",\n lineHeight: \"Altura da Linha\",\n letterSpacing: \"Espaçamento entre Letras\",\n emojiItemLabel: \"Inserir emoji {emoji}\",\n },\n\n // Block actions (BlockWrapper)\n blockActions: {\n drag: \"Arraste para reordenar, ou pressione Espaço para mover com o teclado\",\n dragLifted:\n \"Movendo {block}. Use as setas para cima e para baixo para reposicionar, Espaço ou Enter para soltar, Escape para cancelar.\",\n duplicate: \"Duplicar bloco\",\n delete: \"Excluir bloco\",\n hiddenOnViewport: \"Oculto em {viewport}\",\n saveAsBlock: \"Salvar como Bloco\",\n conditionToggle: \"Alternar condição de exibição\",\n comments: \"Comentários ({count})\",\n lifted: \"{block} levantado. Posição {position} de {total}.\",\n moved: \"{block} movido para a posição {position} de {total}.\",\n dropped: \"{block} solto na posição {position} de {total}.\",\n cancelled: \"Movimento cancelado. {block} retornou à posição {position}.\",\n },\n\n // Toolbar - Section\n section: {\n dropHere: \"Solte blocos aqui\",\n columns: \"Colunas\",\n column1: \"1 Coluna\",\n column2: \"2 Colunas\",\n column3: \"3 Colunas\",\n ratio12: \"Proporção 1:2\",\n ratio21: \"Proporção 2:1\",\n borderRadius: \"Arredondamento das Bordas\",\n wrapperEnable: \"Adicionar wrapper\",\n stackOnMobile: \"Empilhar no celular\",\n },\n\n // Text editor link dialog\n linkDialog: {\n editLink: \"Editar Link\",\n insertLink: \"Inserir Link\",\n updateLink: \"Atualizar Link\",\n removeLink: \"Remover Link\",\n cancel: \"Cancelar\",\n urlPlaceholder: \"https://exemplo.com\",\n urlLabel: \"URL\",\n colorLabel: \"Cor do Link\",\n },\n\n // Toolbar - Title\n title: {\n level: \"Nível do Cabeçalho\",\n heading1: \"Cabeçalho 1 (36px)\",\n heading2: \"Cabeçalho 2 (28px)\",\n heading3: \"Cabeçalho 3 (22px)\",\n heading4: \"Cabeçalho 4 (18px)\",\n fontFamily: \"Família da Fonte\",\n inheritFont: \"Usar fonte do template\",\n color: \"Cor\",\n align: \"Alinhamento\",\n alignLeft: \"Esquerda\",\n alignCenter: \"Centro\",\n alignRight: \"Direita\",\n },\n\n // Emoji picker\n emoji: {\n smileys: \"Sorrisos\",\n gestures: \"Gestos\",\n objects: \"Objetos\",\n },\n\n // Toolbar - Image\n image: {\n imageUrl: \"URL da Imagem\",\n imageUrlPlaceholder: \"https://...\",\n altText: \"Texto Alternativo\",\n altTextPlaceholder: \"Descrição da imagem\",\n width: \"Largura\",\n fullWidth: \"Largura Total\",\n widthCustom: \"Personalizada\",\n height: \"Altura\",\n heightAuto: \"Automática\",\n heightCustom: \"Personalizada\",\n linkUrl: \"URL do Link\",\n openInNewTab: \"Abrir em nova aba\",\n placeholderUrl: \"Imagem de Espaço Reservado\",\n optional: \"(opcional)\",\n placeholderUrlPlaceholder: \"https://... (somente em design)\",\n placeholderUrlTooltip:\n \"Como a URL da imagem usa uma merge tag, você pode fornecer uma imagem real aqui para visualizar o layout durante o design. Isso não é incluído na saída final.\",\n clickToAdd: \"Clique para adicionar a URL da imagem\",\n browseMedia: \"Explorar Mídia\",\n dropToUpload: \"Solte a imagem para enviar\",\n uploading: \"Enviando…\",\n decorative: \"Imagem decorativa\",\n decorativeHint:\n \"Oculta para leitores de tela. Use apenas para espaçadores e elementos visuais.\",\n },\n\n // Toolbar - Video\n video: {\n videoUrl: \"URL do Vídeo\",\n videoUrlPlaceholder: \"https://youtube.com/...\",\n openInNewTab: \"Abrir em nova aba\",\n customThumbnail: \"Miniatura Personalizada\",\n optional: \"(opcional)\",\n thumbnailPlaceholder: \"Gerada automaticamente a partir da URL do vídeo\",\n altText: \"Texto Alternativo\",\n altTextPlaceholder: \"Descrição do vídeo\",\n width: \"Largura\",\n fullWidth: \"Largura Total\",\n height: \"Altura\",\n heightAuto: \"Automática\",\n heightCustom: \"Personalizada\",\n placeholderUrl: \"Miniatura de Espaço Reservado\",\n placeholderUrlPlaceholder: \"https://... (somente em design)\",\n placeholderUrlTooltip:\n \"Como a URL do vídeo usa uma merge tag, você pode fornecer uma miniatura real aqui para visualizar o layout durante o design. Isso não é incluído na saída final.\",\n addVideo: \"Adicionar URL de vídeo\",\n },\n\n // Toolbar - Button\n button: {\n fontFamily: \"Família da Fonte\",\n inheritFont: \"Usar fonte do template\",\n text: \"Texto\",\n url: \"URL\",\n urlPlaceholder: \"https://...\",\n openInNewTab: \"Abrir em nova aba\",\n background: \"Plano de Fundo\",\n textColor: \"Cor do Texto\",\n borderRadius: \"Arredondamento das Bordas\",\n fontSize: \"Tamanho da Fonte\",\n width: \"Largura\",\n widthAuto: \"Ajustar ao conteúdo\",\n fullWidth: \"Largura Total\",\n widthCustom: \"Personalizada\",\n },\n\n // Toolbar - Divider\n divider: {\n style: \"Estilo\",\n solid: \"Sólido\",\n dashed: \"Tracejado\",\n dotted: \"Pontilhado\",\n color: \"Cor\",\n thickness: \"Espessura\",\n },\n\n // Toolbar - Social Icons\n social: {\n icons: \"Ícones\",\n addIcon: \"Adicionar Ícone\",\n addIcons: \"Adicionar ícones de redes sociais\",\n removeIcon: \"Remover\",\n urlPlaceholder: \"https://...\",\n style: \"Estilo\",\n styleSolid: \"Sólido\",\n styleOutlined: \"Contornado\",\n styleRounded: \"Arredondado\",\n styleSquare: \"Quadrado\",\n styleCircle: \"Circular\",\n size: \"Tamanho\",\n sizeSmall: \"P\",\n sizeMedium: \"M\",\n sizeLarge: \"G\",\n spacing: \"Espaçamento\",\n align: \"Alinhamento\",\n platforms: {\n facebook: \"Facebook\",\n twitter: \"X (Twitter)\",\n instagram: \"Instagram\",\n linkedin: \"LinkedIn\",\n youtube: \"YouTube\",\n tiktok: \"TikTok\",\n pinterest: \"Pinterest\",\n email: \"E-mail\",\n website: \"Site\",\n whatsapp: \"WhatsApp\",\n telegram: \"Telegram\",\n discord: \"Discord\",\n snapchat: \"Snapchat\",\n reddit: \"Reddit\",\n github: \"GitHub\",\n dribbble: \"Dribbble\",\n behance: \"Behance\",\n },\n },\n\n // Toolbar - Menu\n menu: {\n items: \"Itens do Menu\",\n addItem: \"Adicionar Item\",\n removeItem: \"Remover\",\n text: \"Texto\",\n urlPlaceholder: \"https://exemplo.com\",\n openInNewTab: \"Abrir em nova aba\",\n bold: \"Negrito\",\n underline: \"Sublinhado\",\n color: \"Cor\",\n linkColor: \"Cor do Link\",\n fontSize: \"Tamanho da Fonte\",\n fontFamily: \"Família da Fonte\",\n separator: \"Separador\",\n separatorColor: \"Cor do Separador\",\n spacing: \"Espaçamento\",\n textAlign: \"Alinhamento\",\n addLinks: \"Adicionar links ao menu\",\n },\n\n // Toolbar - Table\n table: {\n dimensions: \"Dimensões\",\n rows: \"Linhas\",\n columns: \"Colunas\",\n hasHeaderRow: \"Linha de cabeçalho\",\n headerBackgroundColor: \"Plano de Fundo do Cabeçalho\",\n noHeaderBg: \"Sem plano de fundo\",\n borderColor: \"Cor da Borda\",\n borderWidth: \"Espessura da Borda\",\n cellPadding: \"Preenchimento da Célula\",\n fontFamily: \"Família da Fonte\",\n fontSize: \"Tamanho da Fonte\",\n color: \"Cor do Texto\",\n textAlign: \"Alinhamento\",\n cellPlaceholder: \"Digite o texto...\",\n empty: \"Adicionar uma tabela\",\n },\n\n // Toolbar - Spacer\n spacer: {\n height: \"Altura\",\n },\n\n // Toolbar - Countdown\n countdown: {\n targetDate: \"Data Alvo\",\n timezone: \"Fuso Horário\",\n display: \"Exibição\",\n days: \"Dias\",\n hours: \"Horas\",\n minutes: \"Minutos\",\n seconds: \"Segundos\",\n separator: \"Separador\",\n fontFamily: \"Família da Fonte\",\n inheritFont: \"Padrão\",\n digitFontSize: \"Tamanho dos Dígitos\",\n digitColor: \"Cor dos Dígitos\",\n labelColor: \"Cor dos Rótulos\",\n labelFontSize: \"Tamanho dos Rótulos\",\n background: \"Plano de Fundo\",\n labels: \"Rótulos\",\n expiry: \"Mensagem de Expiração\",\n expiredMessagePlaceholder: \"Esta oferta expirou\",\n expiredImageUrl: \"URL da Imagem de Expiração\",\n hideOnExpiry: \"Ocultar ao expirar\",\n setDate: \"Defina uma data alvo no painel de configurações\",\n hidden: \"Oculto (expirado)\",\n },\n\n // Custom Blocks\n customBlocks: {\n definitionNotFound:\n \"Tipo de bloco desconhecido — este bloco não está registrado\",\n renderError:\n \"Este bloco não pôde ser renderizado. Verifique se há erros no template do bloco.\",\n fields: {\n required: \"Obrigatório\",\n addItem: \"Adicionar item\",\n removeItem: \"Remover\",\n maxItemsReached: \"Número máximo de itens atingido\",\n minItemsRequired: \"Mínimo de {count} itens obrigatório\",\n },\n toolbar: {\n noDefinition:\n \"Registre este tipo de bloco na sua configuração do SDK para editar suas propriedades\",\n },\n dataSource: {\n fetchButton: \"Carregar conteúdo\",\n changeButton: \"Alterar\",\n fetching: \"Carregando...\",\n readOnlyTooltip: \"Este valor é carregado da sua fonte de dados\",\n fetchError: \"Falha ao carregar conteúdo\",\n },\n },\n\n // Toolbar - HTML\n html: {\n content: \"Conteúdo HTML\",\n preview: \"Bloco HTML personalizado\",\n empty: \"Adicione conteúdo HTML no painel\",\n sanitizationHint:\n \"O HTML é exportado como está e não é sanitizado — garanta que o conteúdo seja seguro.\",\n },\n\n // Toolbar - Common block settings\n blockSettings: {\n spacing: \"Espaçamento\",\n padding: \"Preenchimento\",\n background: \"Plano de Fundo\",\n color: \"Cor\",\n display: \"Exibição\",\n showOnDesktop: \"Mostrar no desktop\",\n showOnMobile: \"Mostrar no mobile\",\n hiddenOnDevice: \"Oculto em {device}\",\n displayCondition: \"Condição de Exibição\",\n selectCondition: \"Selecionar condição\",\n removeCondition: \"Remover condição\",\n noCondition: \"Sempre visível\",\n conditionApplied: \"Condição aplicada\",\n customCondition: \"Condição personalizada\",\n customConditionLabel: \"Nome da condição\",\n customConditionBefore: \"Antes (lógica de abertura)\",\n customConditionAfter: \"Depois (lógica de fechamento)\",\n applyCondition: \"Aplicar\",\n cancelCondition: \"Cancelar\",\n customBadge: \"Personalizado\",\n restoreHiddenBlocks: \"Mostrar todos os blocos ocultos\",\n },\n\n // Template settings\n templateSettings: {\n layout: \"Layout\",\n widthPreset: \"Largura Predefinida\",\n customWidth: \"Largura Personalizada\",\n appearance: \"Aparência\",\n backgroundColor: \"Cor de Fundo\",\n textColor: \"Cor do Texto\",\n linkColor: \"Cor do Link\",\n linkUnderline: \"Sublinhar Links\",\n fontFamily: \"Família da Fonte\",\n preheaderText: \"Texto de Pré-cabeçalho\",\n preheaderTextPlaceholder:\n \"Texto de prévia exibido após o assunto na caixa de entrada...\",\n preheaderTextHint:\n \"Este texto aparece após o assunto nas pré-visualizações dos clientes de e-mail. Suporta merge tags.\",\n language: \"Idioma\",\n contentLocale: \"Idioma do conteúdo\",\n contentLocaleHint:\n \"Código BCP 47 (ex.: en, de, pt-BR). Define o atributo lang do e-mail renderizado para que leitores de tela pronunciem o conteúdo corretamente.\",\n tips: \"Dicas\",\n tip1: \"600px é a largura padrão para templates de e-mail\",\n tip2: \"Use fontes seguras para web para melhor compatibilidade\",\n tip3: \"Fundos claros funcionam melhor para legibilidade\",\n },\n\n // Spacing control\n spacingControl: {\n lockAll: \"Travar todos os lados\",\n unlock: \"Destravar lados\",\n top: \"Superior\",\n right: \"Direito\",\n bottom: \"Inferior\",\n left: \"Esquerdo\",\n decreaseTop: \"Diminuir superior\",\n increaseTop: \"Aumentar superior\",\n decreaseLeft: \"Diminuir esquerdo\",\n increaseLeft: \"Aumentar esquerdo\",\n decreaseRight: \"Diminuir direito\",\n increaseRight: \"Aumentar direito\",\n decreaseBottom: \"Diminuir inferior\",\n increaseBottom: \"Aumentar inferior\",\n },\n\n // Color Picker\n colorPicker: {\n pickColor: \"Escolher uma cor\",\n hexValue: \"Valor hexadecimal da cor\",\n notSet: \"Não definido\",\n clear: \"Limpar cor\",\n presetColors: \"Cores predefinidas\",\n },\n\n // Merge Tag\n mergeTag: {\n clickToEdit: \"Clique para editar\",\n remove: \"Remover merge tag\",\n insert: \"Inserir merge tag\",\n insertShort: \"Merge tag\",\n editValue: \"Editar valor da merge tag\",\n deleteMergeTag: \"Excluir merge tag\",\n suggestionEmpty: \"Nenhuma merge tag correspondente\",\n picker: {\n title: \"Inserir merge tag\",\n searchPlaceholder: \"Pesquisar merge tags\",\n searchAriaLabel: \"Pesquisar merge tags\",\n noResults: \"Nenhuma merge tag correspondente\",\n empty: \"Nenhuma merge tag configurada\",\n otherGroup: \"Outros\",\n close: \"Fechar\",\n groupCount: \"{count}\",\n sample: \"Pré-visualização: {sample}\",\n },\n },\n\n // Logic tags (standalone, separate from merge tags)\n logicTag: {\n insert: \"Inserir lógica\",\n insertShort: \"Lógica\",\n picker: {\n title: \"Inserir lógica\",\n searchPlaceholder: \"Buscar tags de lógica\",\n searchAriaLabel: \"Buscar tags de lógica\",\n noResults: \"Nenhuma tag de lógica correspondente\",\n empty: \"Nenhuma tag de lógica configurada\",\n otherGroup: \"Outros\",\n close: \"Fechar\",\n },\n },\n\n // Canvas\n canvas: {\n noBlocks: \"Nenhum bloco ainda\",\n dragHint: \"Comece do zero arrastando blocos da barra lateral\",\n dropHere: \"Solte aqui\",\n aiHintChat: \"ou deixe a\",\n aiHintChatSuffix: \"gerar um template completo para você em segundos\",\n aiHintDesign:\n \"Tem um design existente? Envie uma captura de tela, imagem ou PDF e a\",\n aiHintDesignSuffix: \"recriará instantaneamente\",\n },\n\n // Sidebar\n savedBlocks: {\n title: \"Blocos Salvos\",\n saveAsBlock: \"Salvar como Bloco\",\n name: \"Nome\",\n namePlaceholder: \"ex.: Cabeçalho, Rodapé, CTA...\",\n save: \"Salvar Bloco\",\n saving: \"Salvando...\",\n cancel: \"Cancelar\",\n empty: \"Nenhum bloco salvo ainda\",\n emptyHint: \"Salve blocos dos seus templates para reutilizá-los depois.\",\n noResults: \"Nenhum bloco salvo corresponde à sua busca\",\n search: \"Buscar blocos salvos...\",\n loading: \"Carregando blocos salvos…\",\n category: \"Categoria\",\n categoryPlaceholder: \"ex.: Cabeçalhos, Promoções... (opcional)\",\n allCategories: \"Todas as categorias\",\n filterByCategory: \"Filtrar por categoria\",\n insert: \"Inserir\",\n rename: \"Renomear\",\n delete: \"Excluir\",\n deleteConfirm: \"Excluir este bloco salvo?\",\n blockCount: \"{count} bloco(s)\",\n browse: \"Explorar Blocos Salvos\",\n selectToPreview: \"Selecione um bloco salvo para visualizar\",\n insertAtBeginning: \"No início\",\n insertAfterBlock: \"Após {block}\",\n insertAtEnd: \"No final\",\n insertPosition: \"Posição de inserção\",\n close: \"Fechar\",\n pickToolbar: \"Seleção de bloco salvo\",\n pickCount: \"{count} bloco(s) selecionado(s)\",\n pickHint: \"Clique nos blocos para adicionar ou remover\",\n savingCount: \"Salvando {count} bloco(s):\",\n reorderHint: \"Arraste para reordenar — os blocos são salvos nesta ordem\",\n reorderHandle: \"Reordenar {block}, posição {position} de {total}\",\n reorderAnnouncement: \"{block} movido para a posição {position} de {total}\",\n expand: \"Expandir\",\n collapse: \"Recolher\",\n expandPreview: \"Expandir a prévia de {block}\",\n collapsePreview: \"Recolher a prévia de {block}\",\n },\n comments: {\n button: \"Comentários\",\n title: \"Comentários\",\n placeholder: \"Escreva um comentário...\",\n replyPlaceholder: \"Escreva uma resposta...\",\n reply: \"Responder\",\n resolve: \"Resolver\",\n unresolve: \"Reabrir\",\n delete: \"Excluir\",\n edit: \"Editar\",\n cancel: \"Cancelar\",\n save: \"Salvar\",\n noComments: \"Nenhum comentário ainda\",\n noCommentsHint:\n \"Inicie uma conversa adicionando um comentário ao template ou a um bloco específico.\",\n deleteConfirm: \"Excluir este comentário?\",\n filterAll: \"Todos\",\n filterUnresolved: \"Não resolvidos\",\n filterBlock: \"Este bloco\",\n jumpToBlock: \"Bloco\",\n ownedByYou: \"Você\",\n edited: \"editado\",\n resolvedBy: \"Resolvido por {name}\",\n replyOne: \"{count} Resposta\",\n replyMany: \"{count} Respostas\",\n missingBlock: \"Bloco ausente\",\n saveTemplateFirst: \"Salve o template antes de comentar neste bloco.\",\n },\n versionHistory: {\n tooltip: \"Histórico de versões\",\n dropdownTitle: \"Histórico de versões\",\n empty: \"Nenhuma versão ainda\",\n auto: \"auto\",\n olderVersion: \"Versão anterior\",\n newerVersion: \"Versão mais recente\",\n },\n versionPreview: {\n message: \"Você está visualizando uma versão anterior deste modelo.\",\n cancel: \"Cancelar\",\n restore: \"Restaurar esta versão\",\n restoreConfirm: {\n title: \"Restaurar esta versão?\",\n unsavedWithSave:\n \"Você tem alterações não salvas. Salve-as primeiro e elas ficarão no seu histórico — restaure sem salvar e elas serão perdidas.\",\n unsavedNoSave:\n \"Você tem alterações não salvas e nenhum lugar para salvá-las. Restaurar esta versão vai descartá-las.\",\n saveAndRestore: \"Salvar e restaurar\",\n restoreAnyway: \"Restaurar mesmo assim\",\n cancel: \"Cancelar\",\n },\n },\n previewResolution: {\n resolving: \"Resolvendo a pré-visualização…\",\n failed:\n \"Não foi possível resolver a pré-visualização — exibindo o modelo não resolvido.\",\n hint: \"A pré-visualização usa dados resolvidos pelo seu backend.\",\n },\n mergeTagPreview: {\n label: \"Exibição de merge tags\",\n sample: \"Exemplo\",\n labelView: \"Rótulo\",\n },\n testEmail: {\n title: \"Enviar E-mail de Teste\",\n recipientLabel: \"Destinatário\",\n recipientPlaceholder: \"voce@exemplo.com\",\n invalidAddress: \"Informe um endereço de e-mail válido.\",\n preview: \"Pré-visualização\",\n previewHint:\n \"As merge tags aparecem sem resolução — seu backend as preenche.\",\n previewHintSample:\n \"As merge tags mostram valores de exemplo — seu backend insere os dados reais.\",\n recipientNotAllowed:\n \"Esse endereço não está na lista de destinatários permitidos.\",\n send: \"Enviar\",\n sending: \"Enviando...\",\n cancel: \"Cancelar\",\n success: \"E-mail de teste enviado com sucesso\",\n button: \"Testar\",\n },\n sidebarNav: {\n browseSavedBlocks: \"Explorar blocos salvos\",\n palette: \"Paleta de blocos\",\n insertBlock: \"Inserir bloco {block}\",\n },\n\n // Landmark region labels for assistive technology\n landmarks: {\n canvas: \"Tela do e-mail\",\n blockToolbar: \"Propriedades do bloco\",\n rightSidebar: \"Propriedades do bloco e configurações do template\",\n reorderAnnouncements: \"Anúncios de reordenação de blocos\",\n },\n\n // Design Reference (cloud)\n errors: {\n editorLoading: \"Carregando editor...\",\n editorLoadFailed: \"Falha ao carregar o editor.\",\n retry: \"Tentar novamente\",\n },\n\n issues: {\n panelTitle: \"Problemas\",\n panelTabLabel: \"Problemas\",\n groupErrors: \"Erros\",\n groupWarnings: \"Avisos\",\n groupInfo: \"Informações\",\n jump: \"Ir para o bloco\",\n fix: \"Corrigir\",\n emptyState: \"Nenhum problema — tudo certo.\",\n badgeError: \"Possui erros\",\n badgeWarning: \"Possui avisos\",\n issueCountTooltip: \"{count} problema(s)\",\n },\n\n smallScreen: {\n title: \"Tela maior necessária\",\n message:\n \"O editor precisa de mais espaço do que esta tela oferece. Abra-o em um tablet ou desktop para começar a editar.\",\n },\n};\n\nexport default ptBR;\n"],"mappings":"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"}
@@ -1,12 +1,94 @@
1
- import { B as e, E as t, F as n, H as r, I as i, L as a, N as o, O as s, P as c, Q as l, R as u, S as d, U as f, at as p, b as m, c as h, ct as g, d as _, f as v, g as y, h as b, j as x, l as S, lt as C, m as w, n as T, nt as E, o as D, p as O, q as k, r as A, s as j, u as M, ut as N, w as P, y as F } from "./draggable-BfpsXFg7.js";
2
- import { h as ee } from "./dist-CYLJiSiH.js";
3
- import { a as te, n as ne, o as re, r as ie, s as I, t as ae } from "./dist-CM8TB0VD.js";
4
- import { C as oe, Et as se, Ft as ce, J as le, K as ue, Lt as de, N as fe, U as pe, at as me, bt as he, ct as ge, d as _e, gt as ve, it as ye, n as be, s as xe, yt as Se, z as Ce } from "./icons-Dl5bcXmT.js";
1
+ import { B as e, E as t, F as n, H as r, I as i, L as a, N as o, O as s, P as c, Q as l, R as u, S as d, U as f, at as p, b as m, c as h, ct as g, d as _, f as v, g as y, h as b, j as x, l as S, lt as C, m as w, n as T, nt as E, o as D, p as O, q as k, r as A, s as j, u as M, ut as N, w as P, y as F } from "./draggable-BLMjz0GK.js";
2
+ import { h as ee } from "./dist-eKG4m5Wx.js";
3
+ import { a as te, n as ne, o as re, r as ie, s as I, t as ae } from "./dist-2fOlspdg.js";
4
+ import { C as oe, Et as se, J as ce, K as le, Lt as ue, N as de, Nt as fe, U as pe, at as me, bt as he, ct as ge, d as _e, gt as ve, it as ye, n as be, s as xe, yt as Se, z as Ce } from "./icons-MeYdeH4P.js";
5
5
  import { t as we } from "./_plugin-vue_export-helper-B3ysoDQm.js";
6
- import { C as L, S as R, T as Te, x as Ee } from "./cloud-BA0OpRh-.js";
7
- import { t as De } from "./en-BCgVx9zM.js";
8
- //#region ../media-library/src/api-client.ts
9
- var Oe = class {
6
+ import { C as L, S as R, T as Te, x as Ee } from "./cloud-CRCcXTc5.js";
7
+ //#region ../media-library/src/i18n/locales/en.ts
8
+ var De = { mediaLibrary: {
9
+ title: "Media Library",
10
+ searchPlaceholder: "Search files...",
11
+ allFiles: "All Files",
12
+ filterAll: "All Types",
13
+ filterImages: "Images",
14
+ filterDocuments: "Documents",
15
+ filterVideos: "Videos",
16
+ filterAudio: "Audio",
17
+ newFolder: "New Folder",
18
+ folderName: "Folder name",
19
+ noFiles: "No files found",
20
+ dropOrClick: "Drop files here or click to upload",
21
+ acceptedFormats: "Images, PDF, Video, Audio, Documents (max 10MB)",
22
+ uploading: "Uploading...",
23
+ uploadingProgress: "Uploading {current} of {total}...",
24
+ selectImage: "Select Image",
25
+ selectFile: "Select File",
26
+ deleteSelected: "Delete",
27
+ copyUrl: "Copy URL",
28
+ copied: "Copied!",
29
+ browseMedia: "Browse Media Library",
30
+ renameFolder: "Rename folder",
31
+ addSubfolder: "Add subfolder",
32
+ subfolderName: "Subfolder name",
33
+ sortNewest: "Newest First",
34
+ sortOldest: "Oldest First",
35
+ sortNameAsc: "Name A-Z",
36
+ sortNameDesc: "Name Z-A",
37
+ sortSizeAsc: "Smallest First",
38
+ sortSizeDesc: "Largest First",
39
+ moveSelected: "Move",
40
+ moveToRoot: "All Files",
41
+ currentFolder: "(current)",
42
+ confirmDelete: "Confirm?",
43
+ renameFile: "Rename",
44
+ editFile: "Edit File",
45
+ fileName: "Filename",
46
+ altText: "Alt Text",
47
+ altTextPlaceholder: "Describe this image for accessibility",
48
+ saveChanges: "Save",
49
+ cancel: "Cancel",
50
+ frequentlyUsed: "Frequently Used",
51
+ deleteWarningTitle: "Delete File",
52
+ deleteWarningMessage: "Are you sure? This action is irreversible.",
53
+ deleteWarningUsageNote: "The following files are used in templates. Deleting them may break those templates.",
54
+ deleteAnyway: "Delete",
55
+ usedInTemplates: "Used in {count} template(s)",
56
+ viewGrid: "Grid view",
57
+ viewList: "List view",
58
+ showFolders: "Show folders",
59
+ hideFolders: "Hide folders",
60
+ importFromUrl: "Import from URL",
61
+ importUrlPlaceholder: "https://example.com/image.jpg",
62
+ import: "Import",
63
+ importing: "Importing...",
64
+ importError: "Failed to import from URL",
65
+ conversionLabel: "Size",
66
+ conversionOriginal: "Original",
67
+ conversionSmall: "Small (150px)",
68
+ conversionMedium: "Medium (600px)",
69
+ conversionLarge: "Large (1200px)",
70
+ replaceFile: "Replace File",
71
+ replaceWarningTitle: "Replace File",
72
+ replaceWarningMessage: "You are about to replace this file. The replacement must have the same file extension ({extension}).",
73
+ replaceWarningUsageNote: "This file is used in {count} template(s). Replacing it will update all references.",
74
+ replaceSelectFile: "Select replacement file",
75
+ replace: "Replace",
76
+ replacing: "Replacing...",
77
+ replaceError: "Failed to replace file",
78
+ saving: "Saving...",
79
+ cropAspectRatio: "Aspect Ratio",
80
+ cropFree: "Free",
81
+ cropSquare: "1:1",
82
+ cropLandscape43: "4:3",
83
+ cropLandscape169: "16:9",
84
+ cropOriginal: "Original",
85
+ cropMaxWidth: "Max Width",
86
+ cropMaxHeight: "Max Height",
87
+ cropOutputSize: "Output Size",
88
+ cropPixels: "px",
89
+ cropOptional: "(optional)",
90
+ storageTooltip: "{used} of {total} used ({remaining} remaining)"
91
+ } }, Oe = class {
10
92
  authManager;
11
93
  constructor(e) {
12
94
  this.authManager = e;
@@ -506,7 +588,7 @@ var Pe = {
506
588
  class: "tpl:transition-colors tpl:duration-150 tpl:hover:underline",
507
589
  style: { color: "var(--tpl-primary)" },
508
590
  onClick: t[0] ||= (e) => i("navigate", null)
509
- }, N(p(a).mediaLibrary.allFiles), 1), (o(!0), y(M, null, n(s.value, (e, t) => (o(), y(M, { key: e.id }, [m(p(ce), {
591
+ }, N(p(a).mediaLibrary.allFiles), 1), (o(!0), y(M, null, n(s.value, (e, t) => (o(), y(M, { key: e.id }, [m(p(fe), {
510
592
  size: 12,
511
593
  "stroke-width": 2
512
594
  }), t < s.value.length - 1 ? (o(), y("button", {
@@ -3943,12 +4025,12 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
3943
4025
  default: r(() => [i.visible && i.item ? (o(), y("div", {
3944
4026
  key: 0,
3945
4027
  "data-tpl-theme": p(d),
3946
- class: "tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center",
4028
+ class: "tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center tpl:p-4",
3947
4029
  style: { "background-color": "var(--tpl-overlay)" },
3948
4030
  onClick: t[3] ||= S((e) => c("close"), ["self"]),
3949
4031
  onKeydown: ge
3950
4032
  }, [O("div", {
3951
- class: g(["tpl:mx-4 tpl:flex tpl:max-h-[90vh] tpl:w-full tpl:flex-col tpl:overflow-hidden tpl:rounded-lg tpl:shadow-xl", ce.value ? "tpl:max-w-2xl" : "tpl:max-w-sm"]),
4033
+ class: g(["tpl:flex tpl:max-h-[90%] tpl:w-full tpl:flex-col tpl:overflow-hidden tpl:rounded-lg tpl:shadow-xl", ce.value ? "tpl:max-w-2xl" : "tpl:max-w-sm"]),
3952
4034
  style: { "background-color": "var(--tpl-bg-elevated)" }
3953
4035
  }, [
3954
4036
  O("div", Nn, [O("h3", Pn, N(p(u).mediaLibrary.editFile), 1)]),
@@ -4048,7 +4130,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4048
4130
  _: 1
4049
4131
  })], 8, ["to"]));
4050
4132
  }
4051
- }), [["__scopeId", "data-v-267faa45"]]), fr = {
4133
+ }), [["__scopeId", "data-v-2013fa0f"]]), fr = {
4052
4134
  key: 1,
4053
4135
  class: "tpl:size-4 tpl:shrink-0"
4054
4136
  }, pr = {
@@ -4112,7 +4194,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4112
4194
  key: 0,
4113
4195
  class: "tpl:flex tpl:size-4 tpl:shrink-0 tpl:items-center tpl:justify-center tpl:rounded tpl:transition-colors",
4114
4196
  onClick: S(F, ["stop"])
4115
- }, [m(p(ce), {
4197
+ }, [m(p(fe), {
4116
4198
  class: g(["tpl:transition-transform tpl:duration-150", { "tpl:rotate-90": j.value }]),
4117
4199
  size: 10,
4118
4200
  "stroke-width": 2
@@ -4154,7 +4236,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4154
4236
  class: "tpl:flex tpl:size-6 tpl:items-center tpl:justify-center tpl:rounded tpl:transition-colors",
4155
4237
  title: p(s).mediaLibrary.renameFolder,
4156
4238
  onClick: S(ee, ["stop"])
4157
- }, [m(p(ue), {
4239
+ }, [m(p(le), {
4158
4240
  size: 12,
4159
4241
  "stroke-width": 2
4160
4242
  })], 8, gr),
@@ -4572,7 +4654,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4572
4654
  style: { color: "var(--tpl-text-muted)" },
4573
4655
  title: p(d).mediaLibrary.editFile,
4574
4656
  onClick: S((e) => i("edit", t), ["stop"])
4575
- }, [m(p(ue), {
4657
+ }, [m(p(le), {
4576
4658
  size: 12,
4577
4659
  "stroke-width": 2
4578
4660
  })], 8, Xr), O("button", {
@@ -4584,7 +4666,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4584
4666
  size: 12,
4585
4667
  "stroke-width": 2
4586
4668
  })], 8, Zr)]),
4587
- e.selectedIds.has(t.id) ? (o(), y("div", Qr, [m(p(de), {
4669
+ e.selectedIds.has(t.id) ? (o(), y("div", Qr, [m(p(ue), {
4588
4670
  size: 12,
4589
4671
  "stroke-width": 3
4590
4672
  })])) : b("", !0)
@@ -4617,7 +4699,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4617
4699
  style: { "background-color": "rgba(0, 0, 0, 0.6)" },
4618
4700
  title: p(d).mediaLibrary.editFile,
4619
4701
  onClick: S((e) => i("edit", t), ["stop"])
4620
- }, [m(p(ue), {
4702
+ }, [m(p(le), {
4621
4703
  size: 11,
4622
4704
  "stroke-width": 2
4623
4705
  })], 8, Rr), O("button", {
@@ -4629,7 +4711,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4629
4711
  size: 11,
4630
4712
  "stroke-width": 2
4631
4713
  })], 8, zr)]),
4632
- e.selectedIds.has(t.id) ? (o(), y("div", Br, [m(p(de), {
4714
+ e.selectedIds.has(t.id) ? (o(), y("div", Br, [m(p(ue), {
4633
4715
  size: 12,
4634
4716
  "stroke-width": 3
4635
4717
  })])) : b("", !0)
@@ -4648,7 +4730,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4648
4730
  ]));
4649
4731
  }
4650
4732
  }), [["__scopeId", "data-v-78d7ed75"]]), ti = ["data-tpl-theme"], ni = {
4651
- class: "tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-lg tpl:p-5 tpl:shadow-xl",
4733
+ class: "tpl:max-h-[90%] tpl:w-full tpl:max-w-sm tpl:overflow-y-auto tpl:rounded-lg tpl:p-5 tpl:shadow-xl",
4652
4734
  style: { "background-color": "var(--tpl-bg-elevated)" }
4653
4735
  }, ri = {
4654
4736
  class: "tpl:mb-4 tpl:text-sm tpl:font-semibold",
@@ -4694,7 +4776,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4694
4776
  default: r(() => [n.visible ? (o(), y("div", {
4695
4777
  key: 0,
4696
4778
  "data-tpl-theme": p(u),
4697
- class: "tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center",
4779
+ class: "tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center tpl:p-4",
4698
4780
  style: { "background-color": "var(--tpl-overlay)" },
4699
4781
  onClick: S(x, ["self"]),
4700
4782
  onKeydown: C
@@ -4930,7 +5012,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4930
5012
  ]));
4931
5013
  }
4932
5014
  }), [["__scopeId", "data-v-56be5670"]]), ki = ["data-tpl-theme"], Ai = {
4933
- class: "tpl:mx-4 tpl:w-full tpl:max-w-sm tpl:rounded-lg tpl:p-5 tpl:shadow-xl",
5015
+ class: "tpl:max-h-[90%] tpl:w-full tpl:max-w-sm tpl:overflow-y-auto tpl:rounded-lg tpl:p-5 tpl:shadow-xl",
4934
5016
  style: { "background-color": "var(--tpl-bg-elevated)" }
4935
5017
  }, ji = {
4936
5018
  class: "tpl:mb-2 tpl:text-sm tpl:font-semibold",
@@ -4995,7 +5077,7 @@ var Mn = ["data-tpl-theme"], Nn = { class: "tpl:shrink-0 tpl:p-5 tpl:pb-4" }, Pn
4995
5077
  default: r(() => [n.visible && n.item ? (o(), y("div", {
4996
5078
  key: 0,
4997
5079
  "data-tpl-theme": p(u),
4998
- class: "tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center",
5080
+ class: "tpl tpl:fixed tpl:inset-0 tpl:z-[10000] tpl:flex tpl:items-center tpl:justify-center tpl:p-4",
4999
5081
  style: { "background-color": "var(--tpl-overlay)" },
5000
5082
  onClick: t[1] ||= S((e) => s("close"), ["self"]),
5001
5083
  onKeydown: k
@@ -5309,7 +5391,7 @@ function ea(t) {
5309
5391
  var ta = /* #__PURE__ */ Object.assign({
5310
5392
  "./locales/ca.ts": () => import("./ca-CNRWAMHI.js"),
5311
5393
  "./locales/de.ts": () => import("./de-DFYCT4QU.js"),
5312
- "./locales/en.ts": () => import("./en-BCgVx9zM.js").then((e) => e.n),
5394
+ "./locales/en.ts": () => import("./en-C6FKrw69.js"),
5313
5395
  "./locales/es.ts": () => import("./es-OgkdMZGX.js"),
5314
5396
  "./locales/fr.ts": () => import("./fr-Dswns199.js"),
5315
5397
  "./locales/nl.ts": () => import("./nl-CbcPJlrL.js"),
@@ -5343,8 +5425,8 @@ var la = ["data-tpl-theme"], ua = {
5343
5425
  style: {
5344
5426
  width: "900px",
5345
5427
  height: "650px",
5346
- "max-width": "95vw",
5347
- "max-height": "90vh",
5428
+ "max-width": "100%",
5429
+ "max-height": "90%",
5348
5430
  "background-color": "var(--tpl-bg-elevated)",
5349
5431
  border: "1px solid var(--tpl-border)",
5350
5432
  "box-shadow": "var(--tpl-shadow-xl)"
@@ -5460,7 +5542,7 @@ var la = ["data-tpl-theme"], ua = {
5460
5542
  default: r(() => [t.visible && u.value ? (o(), y("div", {
5461
5543
  key: 0,
5462
5544
  "data-tpl-theme": f.value,
5463
- class: "tpl tpl-media-overlay tpl:fixed tpl:inset-0 tpl:z-[9999]",
5545
+ class: "tpl tpl-media-overlay tpl:fixed tpl:inset-0 tpl:z-[9999] tpl:flex tpl:items-center tpl:justify-center tpl:p-4",
5464
5546
  onClick: i[18] ||= S((e) => s("close"), ["self"])
5465
5547
  }, [O("div", ua, [
5466
5548
  O("div", da, [O("h2", fa, N(d.value.mediaLibrary.title), 1), O("div", pa, [
@@ -5480,7 +5562,7 @@ var la = ["data-tpl-theme"], ua = {
5480
5562
  },
5481
5563
  placeholder: d.value.mediaLibrary.searchPlaceholder,
5482
5564
  onInput: i[0] ||= (e) => p(P).handleSearchInput(e.target.value)
5483
- }, null, 40, ha), m(p(fe), {
5565
+ }, null, 40, ha), m(p(de), {
5484
5566
  class: "tpl:absolute tpl:top-1/2 tpl:left-2.5 tpl:-translate-y-1/2",
5485
5567
  size: 13,
5486
5568
  "stroke-width": 2,
@@ -5535,7 +5617,7 @@ var la = ["data-tpl-theme"], ua = {
5535
5617
  }),
5536
5618
  title: p(P).showSidebar.value ? d.value.mediaLibrary.hideFolders : d.value.mediaLibrary.showFolders,
5537
5619
  onClick: i[2] ||= (e) => p(P).showSidebar.value = !p(P).showSidebar.value
5538
- }, [m(p(le), {
5620
+ }, [m(p(ce), {
5539
5621
  size: 16,
5540
5622
  "stroke-width": 2
5541
5623
  })], 12, xa),
@@ -5752,7 +5834,7 @@ var la = ["data-tpl-theme"], ua = {
5752
5834
  backgroundColor: "var(--tpl-bg)"
5753
5835
  }),
5754
5836
  onClick: i[14] ||= (e) => p(P).copy(p(P).selectedUrl.value)
5755
- }, [p(P).copied.value ? (o(), w(p(de), {
5837
+ }, [p(P).copied.value ? (o(), w(p(ue), {
5756
5838
  key: 1,
5757
5839
  size: 12,
5758
5840
  "stroke-width": 2
@@ -5916,7 +5998,7 @@ var la = ["data-tpl-theme"], ua = {
5916
5998
  },
5917
5999
  placeholder: s.value.mediaLibrary.searchPlaceholder,
5918
6000
  onInput: i[0] ||= (e) => p(E).handleSearchInput(e.target.value)
5919
- }, null, 40, ao), m(p(fe), {
6001
+ }, null, 40, ao), m(p(de), {
5920
6002
  class: "tpl:absolute tpl:top-1/2 tpl:left-2.5 tpl:-translate-y-1/2",
5921
6003
  size: 13,
5922
6004
  "stroke-width": 2,
@@ -5962,7 +6044,7 @@ var la = ["data-tpl-theme"], ua = {
5962
6044
  }),
5963
6045
  title: p(E).showSidebar.value ? s.value.mediaLibrary.hideFolders : s.value.mediaLibrary.showFolders,
5964
6046
  onClick: i[1] ||= (e) => p(E).showSidebar.value = !p(E).showSidebar.value
5965
- }, [m(p(le), {
6047
+ }, [m(p(ce), {
5966
6048
  size: 16,
5967
6049
  "stroke-width": 2
5968
6050
  })], 12, fo),
@@ -6177,7 +6259,7 @@ var la = ["data-tpl-theme"], ua = {
6177
6259
  backgroundColor: "var(--tpl-bg)"
6178
6260
  }),
6179
6261
  onClick: i[13] ||= (e) => p(E).copy(p(E).selectedUrl.value)
6180
- }, [p(E).copied.value ? (o(), w(p(de), {
6262
+ }, [p(E).copied.value ? (o(), w(p(ue), {
6181
6263
  key: 1,
6182
6264
  size: 12,
6183
6265
  "stroke-width": 2
@@ -6267,6 +6349,6 @@ typeof window < "u" && (window.TemplaticalMedia = {
6267
6349
  unmount: Jo
6268
6350
  });
6269
6351
  //#endregion
6270
- export { Oe as MediaApiClient, $a as MediaLibraryModal };
6352
+ export { Oe as MediaApiClient, $a as MediaLibraryModal, De as t };
6271
6353
 
6272
- //# sourceMappingURL=src-BDUi-9js.js.map
6354
+ //# sourceMappingURL=src-2QDLdUyx.js.map